summaryrefslogtreecommitdiffstats
path: root/contrib/ntp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ntp')
-rw-r--r--contrib/ntp/COPYRIGHT20
-rw-r--r--contrib/ntp/ChangeLog24394
-rw-r--r--contrib/ntp/CommitLog23578
-rw-r--r--contrib/ntp/CommitLog-4.1.0 (renamed from contrib/ntp/ChangeLog-4.1.0)28
-rw-r--r--contrib/ntp/INSTALL2
-rw-r--r--contrib/ntp/Makefile.am166
-rw-r--r--contrib/ntp/Makefile.in464
-rw-r--r--contrib/ntp/NEWS223
-rw-r--r--contrib/ntp/README8
-rw-r--r--contrib/ntp/README.bk62
-rw-r--r--contrib/ntp/README.patches12
-rw-r--r--contrib/ntp/README.refclocks4
-rw-r--r--contrib/ntp/README.versions28
-rw-r--r--contrib/ntp/TODO2
-rw-r--r--contrib/ntp/WHERE-TO-START10
-rw-r--r--contrib/ntp/aclocal.m47275
-rw-r--r--contrib/ntp/adjtimed/Makefile.am18
-rw-r--r--contrib/ntp/adjtimed/Makefile.in290
-rw-r--r--contrib/ntp/arlib/Makefile.in272
-rw-r--r--contrib/ntp/arlib/aclocal.m41055
-rwxr-xr-xcontrib/ntp/arlib/configure840
-rwxr-xr-xcontrib/ntp/arlib/depcomp132
-rwxr-xr-xcontrib/ntp/arlib/install-sh477
-rwxr-xr-xcontrib/ntp/arlib/missing146
-rwxr-xr-xcontrib/ntp/arlib/mkinstalldirs111
-rw-r--r--contrib/ntp/bincheck.mf15
-rwxr-xr-xcontrib/ntp/bootstrap120
-rwxr-xr-xcontrib/ntp/build18
-rw-r--r--contrib/ntp/clockstuff/Makefile.am4
-rw-r--r--contrib/ntp/clockstuff/Makefile.in268
-rw-r--r--contrib/ntp/clockstuff/clktest.c179
-rw-r--r--contrib/ntp/clockstuff/propdelay.c12
-rwxr-xr-xcontrib/ntp/compile147
-rwxr-xr-xcontrib/ntp/config.guess600
-rw-r--r--contrib/ntp/config.h.in291
-rwxr-xr-xcontrib/ntp/config.sub175
-rwxr-xr-xcontrib/ntp/configure35717
-rw-r--r--contrib/ntp/configure.ac (renamed from contrib/ntp/configure.in)1151
-rwxr-xr-xcontrib/ntp/depcomp132
-rwxr-xr-xcontrib/ntp/flock-build51
-rw-r--r--contrib/ntp/html/accopt.html129
-rw-r--r--contrib/ntp/html/assoc.html103
-rw-r--r--contrib/ntp/html/audio.html189
-rw-r--r--contrib/ntp/html/authopt.html285
-rw-r--r--contrib/ntp/html/build/build.html (renamed from contrib/ntp/html/build.html)24
-rw-r--r--contrib/ntp/html/build/config.html (renamed from contrib/ntp/html/config.html)4
-rw-r--r--contrib/ntp/html/build/hints.html (renamed from contrib/ntp/html/hints.html)4
-rw-r--r--contrib/ntp/html/build/hints/a-ux (renamed from contrib/ntp/html/hints/a-ux)0
-rw-r--r--contrib/ntp/html/build/hints/aix (renamed from contrib/ntp/html/hints/aix)0
-rw-r--r--contrib/ntp/html/build/hints/bsdi (renamed from contrib/ntp/html/hints/bsdi)0
-rw-r--r--contrib/ntp/html/build/hints/changes (renamed from contrib/ntp/html/hints/changes)0
-rw-r--r--contrib/ntp/html/build/hints/decosf1 (renamed from contrib/ntp/html/hints/decosf1)0
-rw-r--r--contrib/ntp/html/build/hints/decosf2 (renamed from contrib/ntp/html/hints/decosf2)0
-rw-r--r--contrib/ntp/html/build/hints/freebsd (renamed from contrib/ntp/html/hints/freebsd)0
-rw-r--r--contrib/ntp/html/build/hints/hpux (renamed from contrib/ntp/html/hints/hpux)0
-rw-r--r--contrib/ntp/html/build/hints/linux (renamed from contrib/ntp/html/hints/linux)0
-rw-r--r--contrib/ntp/html/build/hints/mpeix (renamed from contrib/ntp/html/hints/mpeix)0
-rw-r--r--contrib/ntp/html/build/hints/netbsd (renamed from contrib/ntp/html/hints/netbsd)0
-rw-r--r--contrib/ntp/html/build/hints/notes-xntp-v3 (renamed from contrib/ntp/html/hints/notes-xntp-v3)0
-rw-r--r--contrib/ntp/html/build/hints/parse (renamed from contrib/ntp/html/hints/parse)2
-rw-r--r--contrib/ntp/html/build/hints/refclocks (renamed from contrib/ntp/html/hints/refclocks)0
-rw-r--r--contrib/ntp/html/build/hints/rs6000 (renamed from contrib/ntp/html/hints/rs6000)0
-rw-r--r--contrib/ntp/html/build/hints/sco.html (renamed from contrib/ntp/html/hints/sco.html)0
-rw-r--r--contrib/ntp/html/build/hints/sgi (renamed from contrib/ntp/html/hints/sgi)0
-rw-r--r--contrib/ntp/html/build/hints/solaris-dosynctodr.html (renamed from contrib/ntp/html/hints/solaris-dosynctodr.html)22
-rw-r--r--contrib/ntp/html/build/hints/solaris.html (renamed from contrib/ntp/html/hints/solaris.html)2
-rw-r--r--contrib/ntp/html/build/hints/solaris.xtra.4023118 (renamed from contrib/ntp/html/hints/solaris.xtra.4023118)0
-rw-r--r--contrib/ntp/html/build/hints/solaris.xtra.S99ntpd (renamed from contrib/ntp/html/hints/solaris.xtra.S99ntpd)0
-rw-r--r--contrib/ntp/html/build/hints/solaris.xtra.patchfreq (renamed from contrib/ntp/html/hints/solaris.xtra.patchfreq)0
-rw-r--r--contrib/ntp/html/build/hints/sun4 (renamed from contrib/ntp/html/hints/sun4)0
-rw-r--r--contrib/ntp/html/build/hints/svr4-dell (renamed from contrib/ntp/html/hints/svr4-dell)0
-rw-r--r--contrib/ntp/html/build/hints/svr4_package (renamed from contrib/ntp/html/hints/svr4_package)0
-rw-r--r--contrib/ntp/html/build/hints/todo (renamed from contrib/ntp/html/hints/todo)0
-rw-r--r--contrib/ntp/html/build/hints/vxworks.html (renamed from contrib/ntp/html/hints/vxworks.html)10
-rw-r--r--contrib/ntp/html/build/hints/winnt.html (renamed from contrib/ntp/html/hints/winnt.html)70
-rw-r--r--contrib/ntp/html/build/patches.html (renamed from contrib/ntp/html/patches.html)6
-rw-r--r--contrib/ntp/html/build/porting.html (renamed from contrib/ntp/html/porting.html)4
-rw-r--r--contrib/ntp/html/build/quick.html (renamed from contrib/ntp/html/quick.html)12
-rw-r--r--contrib/ntp/html/build/scripts/footer.txt7
-rw-r--r--contrib/ntp/html/build/scripts/links10.txt5
-rw-r--r--contrib/ntp/html/build/scripts/links11.txt5
-rw-r--r--contrib/ntp/html/build/scripts/links12.txt5
-rw-r--r--contrib/ntp/html/build/scripts/links7.txt5
-rw-r--r--contrib/ntp/html/build/scripts/links8.txt6
-rw-r--r--contrib/ntp/html/build/scripts/links9.txt7
-rw-r--r--contrib/ntp/html/build/scripts/style.css64
-rw-r--r--contrib/ntp/html/clockopt.html123
-rw-r--r--contrib/ntp/html/confopt.html80
-rw-r--r--contrib/ntp/html/copyright.html145
-rw-r--r--contrib/ntp/html/debug.html237
-rw-r--r--contrib/ntp/html/drivers/driver1.html117
-rw-r--r--contrib/ntp/html/drivers/driver10.html4
-rw-r--r--contrib/ntp/html/drivers/driver11.html4
-rw-r--r--contrib/ntp/html/drivers/driver12.html4
-rw-r--r--contrib/ntp/html/drivers/driver16.html4
-rw-r--r--contrib/ntp/html/drivers/driver18.html155
-rw-r--r--contrib/ntp/html/drivers/driver19.html4
-rw-r--r--contrib/ntp/html/drivers/driver2.html4
-rw-r--r--contrib/ntp/html/drivers/driver20.html123
-rw-r--r--contrib/ntp/html/drivers/driver22.html102
-rw-r--r--contrib/ntp/html/drivers/driver23.html104
-rw-r--r--contrib/ntp/html/drivers/driver24.html46
-rw-r--r--contrib/ntp/html/drivers/driver26.html25
-rw-r--r--contrib/ntp/html/drivers/driver27.html396
-rw-r--r--contrib/ntp/html/drivers/driver28.html4
-rw-r--r--contrib/ntp/html/drivers/driver29.html1559
-rw-r--r--contrib/ntp/html/drivers/driver3.html94
-rw-r--r--contrib/ntp/html/drivers/driver30.html153
-rw-r--r--contrib/ntp/html/drivers/driver31.html58
-rw-r--r--contrib/ntp/html/drivers/driver32.html46
-rw-r--r--contrib/ntp/html/drivers/driver33.html46
-rw-r--r--contrib/ntp/html/drivers/driver34.html105
-rw-r--r--contrib/ntp/html/drivers/driver35.html81
-rw-r--r--contrib/ntp/html/drivers/driver36.html396
-rw-r--r--contrib/ntp/html/drivers/driver37.html87
-rw-r--r--contrib/ntp/html/drivers/driver38.html255
-rw-r--r--contrib/ntp/html/drivers/driver39.html215
-rw-r--r--contrib/ntp/html/drivers/driver4.html117
-rw-r--r--contrib/ntp/html/drivers/driver40.html221
-rw-r--r--contrib/ntp/html/drivers/driver42.html45
-rw-r--r--contrib/ntp/html/drivers/driver43.html69
-rwxr-xr-xcontrib/ntp/html/drivers/driver44.html166
-rw-r--r--contrib/ntp/html/drivers/driver5.html6
-rw-r--r--contrib/ntp/html/drivers/driver6.html155
-rw-r--r--contrib/ntp/html/drivers/driver7.html415
-rw-r--r--contrib/ntp/html/drivers/driver8.html403
-rw-r--r--contrib/ntp/html/drivers/driver9.html4
-rw-r--r--contrib/ntp/html/drivers/oncore-shmem.html111
-rw-r--r--contrib/ntp/html/drivers/scripts/footer.txt7
-rw-r--r--contrib/ntp/html/drivers/scripts/style.css64
-rw-r--r--contrib/ntp/html/drivers/tf582_4.html71
-rw-r--r--contrib/ntp/html/extern.html51
-rw-r--r--contrib/ntp/html/gadget.html33
-rw-r--r--contrib/ntp/html/groups.html47
-rw-r--r--contrib/ntp/html/hints/solaris.xtra.409584974
-rw-r--r--contrib/ntp/html/howto.html177
-rw-r--r--contrib/ntp/html/index.html188
-rw-r--r--contrib/ntp/html/kern.html53
-rw-r--r--contrib/ntp/html/keygen.html214
-rw-r--r--contrib/ntp/html/ldisc.html69
-rw-r--r--contrib/ntp/html/manyopt.html138
-rw-r--r--contrib/ntp/html/measure.html31
-rw-r--r--contrib/ntp/html/miscopt.html204
-rw-r--r--contrib/ntp/html/monopt.html243
-rw-r--r--contrib/ntp/html/msyslog.html239
-rw-r--r--contrib/ntp/html/mx4200data.html2137
-rw-r--r--contrib/ntp/html/notes.html303
-rw-r--r--contrib/ntp/html/ntp_conf.html173
-rw-r--r--contrib/ntp/html/ntpd.html357
-rw-r--r--contrib/ntp/html/ntpdate.html129
-rw-r--r--contrib/ntp/html/ntpdc.html359
-rw-r--r--contrib/ntp/html/ntpdsim.html115
-rw-r--r--contrib/ntp/html/ntpdsim_new.html102
-rw-r--r--contrib/ntp/html/ntpq.html514
-rw-r--r--contrib/ntp/html/ntptime.html81
-rw-r--r--contrib/ntp/html/ntptrace.html73
-rw-r--r--contrib/ntp/html/parsedata.html293
-rw-r--r--contrib/ntp/html/parsenew.html101
-rw-r--r--contrib/ntp/html/pps.html67
-rw-r--r--contrib/ntp/html/prefer.html129
-rw-r--r--contrib/ntp/html/rdebug.html51
-rw-r--r--contrib/ntp/html/refclock.html192
-rw-r--r--contrib/ntp/html/release.html113
-rw-r--r--contrib/ntp/html/scripts/links11.txt2
-rw-r--r--contrib/ntp/html/scripts/links7.txt1
-rw-r--r--contrib/ntp/html/scripts/links8.txt6
-rw-r--r--contrib/ntp/html/scripts/links9.txt1
-rw-r--r--contrib/ntp/html/sntp.html99
-rw-r--r--contrib/ntp/html/tickadj.html71
-rw-r--r--contrib/ntp/include/Makefile.am7
-rw-r--r--contrib/ntp/include/Makefile.in236
-rw-r--r--contrib/ntp/include/adjtime.h6
-rw-r--r--contrib/ntp/include/ascii.h39
-rw-r--r--contrib/ntp/include/autogen-version.def2
-rw-r--r--contrib/ntp/include/binio.h39
-rw-r--r--contrib/ntp/include/copyright.def18
-rw-r--r--contrib/ntp/include/debug-opt.def34
-rw-r--r--contrib/ntp/include/homerc.def9
-rw-r--r--contrib/ntp/include/ieee754io.h39
-rw-r--r--contrib/ntp/include/isc/Makefile.am3
-rw-r--r--contrib/ntp/include/isc/Makefile.in172
-rw-r--r--contrib/ntp/include/isc/buffer.h800
-rw-r--r--contrib/ntp/include/isc/interfaceiter.h2
-rw-r--r--contrib/ntp/include/isc/ipv6.h32
-rw-r--r--contrib/ntp/include/isc/msgs.h22
-rw-r--r--contrib/ntp/include/isc/net.h71
-rw-r--r--contrib/ntp/include/isc/netaddr.h34
-rw-r--r--contrib/ntp/include/isc/netscope.h40
-rw-r--r--contrib/ntp/include/isc/region.h95
-rw-r--r--contrib/ntp/include/isc/result.h25
-rw-r--r--contrib/ntp/include/isc/sockaddr.h6
-rw-r--r--contrib/ntp/include/l_stdlib.h13
-rw-r--r--contrib/ntp/include/mbg_gps166.h54
-rw-r--r--contrib/ntp/include/ntp.h243
-rw-r--r--contrib/ntp/include/ntp_config.h37
-rw-r--r--contrib/ntp/include/ntp_control.h44
-rw-r--r--contrib/ntp/include/ntp_crypto.h22
-rw-r--r--contrib/ntp/include/ntp_debug.h26
-rw-r--r--contrib/ntp/include/ntp_filegen.h2
-rw-r--r--contrib/ntp/include/ntp_fp.h7
-rw-r--r--contrib/ntp/include/ntp_machine.h16
-rw-r--r--contrib/ntp/include/ntp_random.h14
-rw-r--r--contrib/ntp/include/ntp_refclock.h26
-rw-r--r--contrib/ntp/include/ntp_request.h44
-rw-r--r--contrib/ntp/include/ntp_rfc2553.h188
-rw-r--r--contrib/ntp/include/ntp_stdlib.h10
-rw-r--r--contrib/ntp/include/ntp_tty.h13
-rw-r--r--contrib/ntp/include/ntp_types.h7
-rw-r--r--contrib/ntp/include/ntpd.h103
-rw-r--r--contrib/ntp/include/parse.h54
-rw-r--r--contrib/ntp/include/parse_conf.h47
-rw-r--r--contrib/ntp/include/recvbuff.h24
-rw-r--r--contrib/ntp/include/timepps-SCO.h503
-rw-r--r--contrib/ntp/include/timepps-Solaris.h501
-rw-r--r--contrib/ntp/include/timepps-SunOS.h504
-rw-r--r--contrib/ntp/include/trimble.h39
-rw-r--r--contrib/ntp/include/version.def1
-rwxr-xr-xcontrib/ntp/install-sh477
-rw-r--r--contrib/ntp/kernel/Makefile.in223
-rw-r--r--contrib/ntp/kernel/chuinit.c2
-rw-r--r--contrib/ntp/kernel/clkinit.c2
-rw-r--r--contrib/ntp/kernel/sys/Makefile.in169
-rw-r--r--contrib/ntp/kernel/sys/parsestreams.h42
-rw-r--r--contrib/ntp/libisc/ifiter_getifaddrs.c191
-rw-r--r--contrib/ntp/libisc/ifiter_ioctl.c596
-rw-r--r--contrib/ntp/libisc/ifiter_sysctl.c38
-rw-r--r--contrib/ntp/libisc/inet_aton.c195
-rw-r--r--contrib/ntp/libisc/inet_pton.c211
-rw-r--r--contrib/ntp/libisc/interfaceiter.c105
-rw-r--r--contrib/ntp/libisc/net.c214
-rw-r--r--contrib/ntp/libisc/netaddr.c363
-rw-r--r--contrib/ntp/libisc/netscope.c74
-rw-r--r--contrib/ntp/libisc/sockaddr.c480
-rw-r--r--contrib/ntp/libntp/Makefile.am21
-rw-r--r--contrib/ntp/libntp/Makefile.in970
-rw-r--r--contrib/ntp/libntp/a_md5encrypt.c2
-rw-r--r--contrib/ntp/libntp/adjtime.c97
-rw-r--r--contrib/ntp/libntp/audio.c33
-rw-r--r--contrib/ntp/libntp/buftvtots.c93
-rw-r--r--contrib/ntp/libntp/caljulian.c31
-rw-r--r--contrib/ntp/libntp/calleapwhen.c59
-rw-r--r--contrib/ntp/libntp/clocktypes.c20
-rw-r--r--contrib/ntp/libntp/decodenetnum.c1
-rw-r--r--contrib/ntp/libntp/dolfptoa.c11
-rw-r--r--contrib/ntp/libntp/gpstolfp.c41
-rw-r--r--contrib/ntp/libntp/humandate.c7
-rw-r--r--contrib/ntp/libntp/icom.c1
-rw-r--r--contrib/ntp/libntp/iosignal.c37
-rw-r--r--contrib/ntp/libntp/lib_strbuf.h3
-rw-r--r--contrib/ntp/libntp/log.c161
-rw-r--r--contrib/ntp/libntp/log.h21
-rw-r--r--contrib/ntp/libntp/machines.c6
-rw-r--r--contrib/ntp/libntp/mfp_mul.c140
-rw-r--r--contrib/ntp/libntp/mktime.c9
-rw-r--r--contrib/ntp/libntp/msyslog.c1
-rw-r--r--contrib/ntp/libntp/ntp_random.c (renamed from contrib/ntp/libntp/random.c)25
-rw-r--r--contrib/ntp/libntp/ntp_rfc2553.c372
-rw-r--r--contrib/ntp/libntp/numtohost.c1
-rw-r--r--contrib/ntp/libntp/prettydate.c82
-rw-r--r--contrib/ntp/libntp/ranny.c82
-rw-r--r--contrib/ntp/libntp/recvbuff.c301
-rw-r--r--contrib/ntp/libntp/socktoa.c14
-rw-r--r--contrib/ntp/libntp/socktohost.c1
-rw-r--r--contrib/ntp/libntp/statestr.c10
-rw-r--r--contrib/ntp/libntp/systime.c57
-rw-r--r--contrib/ntp/libopts/COPYING.lgpl502
-rw-r--r--contrib/ntp/libopts/COPYING.mbsd26
-rw-r--r--contrib/ntp/libopts/MakeDefs.inc (renamed from contrib/ntp/scripts/support/conf/hp300.hp300)0
-rw-r--r--contrib/ntp/libopts/Makefile.am24
-rw-r--r--contrib/ntp/libopts/Makefile.in528
-rw-r--r--contrib/ntp/libopts/README93
-rw-r--r--contrib/ntp/libopts/autoopts.c1120
-rw-r--r--contrib/ntp/libopts/autoopts.h387
-rw-r--r--contrib/ntp/libopts/autoopts/options.h977
-rw-r--r--contrib/ntp/libopts/autoopts/usage-txt.h355
-rw-r--r--contrib/ntp/libopts/boolean.c106
-rw-r--r--contrib/ntp/libopts/compat/compat.h319
-rw-r--r--contrib/ntp/libopts/compat/pathfind.c339
-rw-r--r--contrib/ntp/libopts/compat/snprintf.c60
-rw-r--r--contrib/ntp/libopts/compat/strchr.c60
-rw-r--r--contrib/ntp/libopts/compat/strdup.c19
-rw-r--r--contrib/ntp/libopts/compat/windows-config.h130
-rw-r--r--contrib/ntp/libopts/configfile.c1290
-rw-r--r--contrib/ntp/libopts/cook.c354
-rw-r--r--contrib/ntp/libopts/enumeration.c498
-rw-r--r--contrib/ntp/libopts/environment.c279
-rw-r--r--contrib/ntp/libopts/genshell.c354
-rw-r--r--contrib/ntp/libopts/genshell.h149
-rw-r--r--contrib/ntp/libopts/libopts.c30
-rw-r--r--contrib/ntp/libopts/load.c563
-rw-r--r--contrib/ntp/libopts/m4/libopts.m4509
-rw-r--r--contrib/ntp/libopts/m4/liboptschk.m442
-rw-r--r--contrib/ntp/libopts/makeshell.c1122
-rw-r--r--contrib/ntp/libopts/nested.c733
-rw-r--r--contrib/ntp/libopts/numeric.c93
-rw-r--r--contrib/ntp/libopts/pgusage.c157
-rw-r--r--contrib/ntp/libopts/proto.h91
-rw-r--r--contrib/ntp/libopts/putshell.c335
-rw-r--r--contrib/ntp/libopts/restore.c250
-rw-r--r--contrib/ntp/libopts/save.c521
-rw-r--r--contrib/ntp/libopts/sort.c359
-rw-r--r--contrib/ntp/libopts/stack.c269
-rw-r--r--contrib/ntp/libopts/streqvcmp.c289
-rw-r--r--contrib/ntp/libopts/text_mmap.c363
-rw-r--r--contrib/ntp/libopts/tokenize.c321
-rw-r--r--contrib/ntp/libopts/usage.c740
-rw-r--r--contrib/ntp/libopts/version.c178
-rw-r--r--contrib/ntp/libparse/Makefile.am25
-rw-r--r--contrib/ntp/libparse/Makefile.in379
-rw-r--r--contrib/ntp/libparse/README4
-rw-r--r--contrib/ntp/libparse/binio.c (renamed from contrib/ntp/libntp/binio.c)31
-rw-r--r--contrib/ntp/libparse/clk_computime.c44
-rw-r--r--contrib/ntp/libparse/clk_dcf7000.c42
-rw-r--r--contrib/ntp/libparse/clk_hopf6021.c7
-rw-r--r--contrib/ntp/libparse/clk_meinberg.c49
-rw-r--r--contrib/ntp/libparse/clk_rawdcf.c131
-rw-r--r--contrib/ntp/libparse/clk_rcc8000.c7
-rw-r--r--contrib/ntp/libparse/clk_schmid.c43
-rw-r--r--contrib/ntp/libparse/clk_trimtaip.c38
-rw-r--r--contrib/ntp/libparse/clk_trimtsip.c41
-rw-r--r--contrib/ntp/libparse/clk_varitext.c51
-rw-r--r--contrib/ntp/libparse/clk_wharton.c4
-rw-r--r--contrib/ntp/libparse/data_mbg.c154
-rw-r--r--contrib/ntp/libparse/gpstolfp.c76
-rw-r--r--contrib/ntp/libparse/ieee754io.c (renamed from contrib/ntp/libntp/ieee754io.c)39
-rw-r--r--contrib/ntp/libparse/info_trimble.c8
-rw-r--r--contrib/ntp/libparse/mfp_mul.c206
-rw-r--r--contrib/ntp/libparse/parse.c54
-rw-r--r--contrib/ntp/libparse/parse_conf.c42
-rw-r--r--contrib/ntp/libparse/parsesolaris.c51
-rw-r--r--contrib/ntp/libparse/parsestreams.c51
-rw-r--r--contrib/ntp/libparse/trim_info.c38
-rw-r--r--contrib/ntp/ltmain.sh6863
-rw-r--r--contrib/ntp/m4/define_dir.m4 (renamed from contrib/ntp/acinclude.m4)13
-rw-r--r--contrib/ntp/m4/hs_ulong_const.m411
-rw-r--r--contrib/ntp/m4/os_cflags.m487
-rwxr-xr-xcontrib/ntp/missing146
-rwxr-xr-xcontrib/ntp/mkinstalldirs111
-rw-r--r--contrib/ntp/ntpd/Makefile.am88
-rw-r--r--contrib/ntp/ntpd/Makefile.in827
-rw-r--r--contrib/ntp/ntpd/cmd_args.c504
-rw-r--r--contrib/ntp/ntpd/map_vme.c135
-rw-r--r--contrib/ntp/ntpd/ntp_config.c334
-rw-r--r--contrib/ntp/ntpd/ntp_control.c221
-rw-r--r--contrib/ntp/ntpd/ntp_crypto.c1009
-rw-r--r--contrib/ntp/ntpd/ntp_filegen.c33
-rw-r--r--contrib/ntp/ntpd/ntp_intres.c288
-rw-r--r--contrib/ntp/ntpd/ntp_io.c4110
-rw-r--r--contrib/ntp/ntpd/ntp_loopfilter.c708
-rw-r--r--contrib/ntp/ntpd/ntp_monitor.c35
-rw-r--r--contrib/ntp/ntpd/ntp_peer.c421
-rw-r--r--contrib/ntp/ntpd/ntp_proto.c2672
-rw-r--r--contrib/ntp/ntpd/ntp_refclock.c606
-rw-r--r--contrib/ntp/ntpd/ntp_request.c268
-rw-r--r--contrib/ntp/ntpd/ntp_restrict.c85
-rw-r--r--contrib/ntp/ntpd/ntp_timer.c48
-rw-r--r--contrib/ntp/ntpd/ntp_util.c186
-rw-r--r--contrib/ntp/ntpd/ntpd-opts.c1021
-rw-r--r--contrib/ntp/ntpd/ntpd-opts.def13
-rw-r--r--contrib/ntp/ntpd/ntpd-opts.h351
-rw-r--r--contrib/ntp/ntpd/ntpd-opts.menu1
-rw-r--r--contrib/ntp/ntpd/ntpd-opts.texi489
-rw-r--r--contrib/ntp/ntpd/ntpd.1296
-rw-r--r--contrib/ntp/ntpd/ntpd.c881
-rw-r--r--contrib/ntp/ntpd/ntpdbase-opts.def459
-rw-r--r--contrib/ntp/ntpd/ntpdsim-opts.c1262
-rw-r--r--contrib/ntp/ntpd/ntpdsim-opts.def15
-rw-r--r--contrib/ntp/ntpd/ntpdsim-opts.h422
-rw-r--r--contrib/ntp/ntpd/ntpdsim-opts.menu1
-rw-r--r--contrib/ntp/ntpd/ntpdsim-opts.texi509
-rw-r--r--contrib/ntp/ntpd/ntpdsim.1357
-rw-r--r--contrib/ntp/ntpd/ntpsim.c27
-rw-r--r--contrib/ntp/ntpd/ppsapi_timepps.h26
-rw-r--r--contrib/ntp/ntpd/refclock_acts.c1349
-rw-r--r--contrib/ntp/ntpd/refclock_arbiter.c142
-rw-r--r--contrib/ntp/ntpd/refclock_arc.c52
-rw-r--r--contrib/ntp/ntpd/refclock_atom.c313
-rw-r--r--contrib/ntp/ntpd/refclock_bancomm.c224
-rw-r--r--contrib/ntp/ntpd/refclock_chu.c20
-rw-r--r--contrib/ntp/ntpd/refclock_conf.c32
-rw-r--r--contrib/ntp/ntpd/refclock_datum.c18
-rw-r--r--contrib/ntp/ntpd/refclock_fg.c3
-rw-r--r--contrib/ntp/ntpd/refclock_gpsvme.c828
-rw-r--r--contrib/ntp/ntpd/refclock_heath.c56
-rw-r--r--contrib/ntp/ntpd/refclock_hopfpci.c8
-rw-r--r--contrib/ntp/ntpd/refclock_hopfser.c8
-rw-r--r--contrib/ntp/ntpd/refclock_hpgps.c21
-rw-r--r--contrib/ntp/ntpd/refclock_irig.c47
-rw-r--r--contrib/ntp/ntpd/refclock_jjy.c363
-rw-r--r--contrib/ntp/ntpd/refclock_jupiter.c47
-rw-r--r--contrib/ntp/ntpd/refclock_leitch.c18
-rw-r--r--contrib/ntp/ntpd/refclock_local.c10
-rw-r--r--contrib/ntp/ntpd/refclock_msfees.c63
-rw-r--r--contrib/ntp/ntpd/refclock_mx4200.c24
-rw-r--r--contrib/ntp/ntpd/refclock_neoclock4x.c119
-rw-r--r--contrib/ntp/ntpd/refclock_nmea.c63
-rw-r--r--contrib/ntp/ntpd/refclock_oncore.c827
-rw-r--r--contrib/ntp/ntpd/refclock_palisade.c2
-rw-r--r--contrib/ntp/ntpd/refclock_palisade.h2
-rw-r--r--contrib/ntp/ntpd/refclock_parse.c1521
-rw-r--r--contrib/ntp/ntpd/refclock_pst.c3
-rw-r--r--contrib/ntp/ntpd/refclock_ptbacts.c16
-rw-r--r--contrib/ntp/ntpd/refclock_ripencc.c10
-rw-r--r--contrib/ntp/ntpd/refclock_shm.c9
-rw-r--r--contrib/ntp/ntpd/refclock_ulink.c230
-rw-r--r--contrib/ntp/ntpd/refclock_usno.c674
-rw-r--r--contrib/ntp/ntpd/refclock_wwv.c1874
-rw-r--r--contrib/ntp/ntpd/refclock_wwvb.c96
-rw-r--r--contrib/ntp/ntpdate/Makefile.am30
-rw-r--r--contrib/ntp/ntpdate/Makefile.in332
-rw-r--r--contrib/ntp/ntpdate/ntpdate.c625
-rw-r--r--contrib/ntp/ntpdate/ntptimeset.c21
-rw-r--r--contrib/ntp/ntpdc/Makefile.am47
-rw-r--r--contrib/ntp/ntpdc/Makefile.in410
-rw-r--r--contrib/ntp/ntpdc/layout.std22
-rwxr-xr-xcontrib/ntp/ntpdc/nl.pl4
-rw-r--r--contrib/ntp/ntpdc/nl.pl.in4
-rw-r--r--contrib/ntp/ntpdc/ntpdc-opts.c667
-rw-r--r--contrib/ntp/ntpdc/ntpdc-opts.def127
-rw-r--r--contrib/ntp/ntpdc/ntpdc-opts.h222
-rw-r--r--contrib/ntp/ntpdc/ntpdc-opts.menu1
-rw-r--r--contrib/ntp/ntpdc/ntpdc-opts.texi275
-rw-r--r--contrib/ntp/ntpdc/ntpdc.1158
-rw-r--r--contrib/ntp/ntpdc/ntpdc.c253
-rw-r--r--contrib/ntp/ntpdc/ntpdc.h23
-rw-r--r--contrib/ntp/ntpdc/ntpdc_ops.c476
-rw-r--r--contrib/ntp/ntpq/Makefile.am41
-rw-r--r--contrib/ntp/ntpq/Makefile.in381
-rw-r--r--contrib/ntp/ntpq/ntpq-opts.c607
-rw-r--r--contrib/ntp/ntpq/ntpq-opts.def345
-rw-r--r--contrib/ntp/ntpq/ntpq-opts.h208
-rw-r--r--contrib/ntp/ntpq/ntpq-opts.menu1
-rw-r--r--contrib/ntp/ntpq/ntpq-opts.texi215
-rw-r--r--contrib/ntp/ntpq/ntpq-subs.c (renamed from contrib/ntp/ntpq/ntpq_ops.c)110
-rw-r--r--contrib/ntp/ntpq/ntpq.1385
-rw-r--r--contrib/ntp/ntpq/ntpq.c249
-rw-r--r--contrib/ntp/ntpq/ntpq.h19
-rw-r--r--contrib/ntp/packageinfo.sh31
-rw-r--r--contrib/ntp/parseutil/Makefile.in247
-rw-r--r--contrib/ntp/parseutil/dcfd.c111
-rw-r--r--contrib/ntp/parseutil/testdcf.c79
-rw-r--r--contrib/ntp/scripts/Makefile.am9
-rw-r--r--contrib/ntp/scripts/Makefile.in200
-rwxr-xr-xcontrib/ntp/scripts/VersionName41
-rwxr-xr-xcontrib/ntp/scripts/genCommitLog7
-rwxr-xr-xcontrib/ntp/scripts/genver67
-rwxr-xr-xcontrib/ntp/scripts/html2man.in172
-rw-r--r--contrib/ntp/scripts/mkver.in15
-rw-r--r--contrib/ntp/scripts/monitoring/lr.pl24
-rw-r--r--contrib/ntp/scripts/monitoring/ntploopwatch62
-rw-r--r--contrib/ntp/scripts/ntpsweep.in3
-rwxr-xr-xcontrib/ntp/scripts/ntptrace.in20
-rw-r--r--contrib/ntp/scripts/support/README73
-rw-r--r--contrib/ntp/scripts/support/bin/monl213
-rw-r--r--contrib/ntp/scripts/support/bin/mvstats23
-rw-r--r--contrib/ntp/scripts/support/conf/hp700.hp700.faui470
-rw-r--r--contrib/ntp/scripts/support/conf/hp800.hp8000
-rw-r--r--contrib/ntp/scripts/support/conf/ntp.conf3
-rw-r--r--contrib/ntp/scripts/support/conf/sun3.sun30
-rw-r--r--contrib/ntp/scripts/support/conf/sun4.sun4.faui010
-rw-r--r--contrib/ntp/scripts/support/conf/sun4.sun4.faui100
-rw-r--r--contrib/ntp/scripts/support/conf/sun4.sun4.faui450
-rw-r--r--contrib/ntp/scripts/support/conf/sun4.sun4c0
-rw-r--r--contrib/ntp/scripts/support/conf/sun4.sun4c.Lucifer0
-rw-r--r--contrib/ntp/scripts/support/conf/sun4.sun4m0
-rw-r--r--contrib/ntp/scripts/support/conf/sun4.sun4m.faui420
-rw-r--r--contrib/ntp/scripts/support/conf/sun4.sun4m.faui45m0
-rw-r--r--contrib/ntp/scripts/support/conf/tickconf19
-rw-r--r--contrib/ntp/scripts/support/etc/cron18
-rw-r--r--contrib/ntp/scripts/support/etc/crontab8
-rw-r--r--contrib/ntp/scripts/support/etc/install67
-rw-r--r--contrib/ntp/scripts/support/etc/rc198
-rw-r--r--contrib/ntp/scripts/support/etc/setup72
-rw-r--r--contrib/ntp/sntp/COPYRIGHT80
-rw-r--r--contrib/ntp/sntp/Makefile.am85
-rw-r--r--contrib/ntp/sntp/Makefile.in673
-rw-r--r--contrib/ntp/sntp/README55
-rw-r--r--contrib/ntp/sntp/aclocal.m47114
-rw-r--r--contrib/ntp/sntp/autogen-version.def2
-rw-r--r--contrib/ntp/sntp/bincheck.mf15
-rwxr-xr-xcontrib/ntp/sntp/compile142
-rwxr-xr-xcontrib/ntp/sntp/config.guess600
-rw-r--r--contrib/ntp/sntp/config.h.in312
-rwxr-xr-xcontrib/ntp/sntp/config.sub175
-rwxr-xr-xcontrib/ntp/sntp/configure26710
-rw-r--r--contrib/ntp/sntp/configure.ac81
-rwxr-xr-xcontrib/ntp/sntp/depcomp132
-rw-r--r--contrib/ntp/sntp/header.h8
-rwxr-xr-xcontrib/ntp/sntp/install-sh477
-rw-r--r--contrib/ntp/sntp/internet.c34
-rw-r--r--contrib/ntp/sntp/internet.h4
-rw-r--r--contrib/ntp/sntp/libopts/COPYING.lgpl502
-rw-r--r--contrib/ntp/sntp/libopts/COPYING.mbsd26
-rw-r--r--contrib/ntp/sntp/libopts/MakeDefs.inc (renamed from contrib/ntp/scripts/support/conf/hp700.hp700)0
-rw-r--r--contrib/ntp/sntp/libopts/Makefile.am24
-rw-r--r--contrib/ntp/sntp/libopts/Makefile.in496
-rw-r--r--contrib/ntp/sntp/libopts/README93
-rw-r--r--contrib/ntp/sntp/libopts/autoopts.c1120
-rw-r--r--contrib/ntp/sntp/libopts/autoopts.h387
-rw-r--r--contrib/ntp/sntp/libopts/autoopts/options.h977
-rw-r--r--contrib/ntp/sntp/libopts/autoopts/usage-txt.h355
-rw-r--r--contrib/ntp/sntp/libopts/boolean.c106
-rw-r--r--contrib/ntp/sntp/libopts/compat/compat.h319
-rw-r--r--contrib/ntp/sntp/libopts/compat/pathfind.c339
-rw-r--r--contrib/ntp/sntp/libopts/compat/snprintf.c60
-rw-r--r--contrib/ntp/sntp/libopts/compat/strchr.c60
-rw-r--r--contrib/ntp/sntp/libopts/compat/strdup.c19
-rw-r--r--contrib/ntp/sntp/libopts/compat/windows-config.h130
-rw-r--r--contrib/ntp/sntp/libopts/configfile.c1290
-rw-r--r--contrib/ntp/sntp/libopts/cook.c354
-rw-r--r--contrib/ntp/sntp/libopts/enumeration.c498
-rw-r--r--contrib/ntp/sntp/libopts/environment.c279
-rw-r--r--contrib/ntp/sntp/libopts/genshell.c354
-rw-r--r--contrib/ntp/sntp/libopts/genshell.h149
-rw-r--r--contrib/ntp/sntp/libopts/libopts.c30
-rw-r--r--contrib/ntp/sntp/libopts/load.c563
-rw-r--r--contrib/ntp/sntp/libopts/m4/libopts.m4509
-rw-r--r--contrib/ntp/sntp/libopts/m4/liboptschk.m442
-rw-r--r--contrib/ntp/sntp/libopts/makeshell.c1122
-rw-r--r--contrib/ntp/sntp/libopts/nested.c733
-rw-r--r--contrib/ntp/sntp/libopts/numeric.c93
-rw-r--r--contrib/ntp/sntp/libopts/pgusage.c157
-rw-r--r--contrib/ntp/sntp/libopts/proto.h91
-rw-r--r--contrib/ntp/sntp/libopts/putshell.c335
-rw-r--r--contrib/ntp/sntp/libopts/restore.c250
-rw-r--r--contrib/ntp/sntp/libopts/save.c521
-rw-r--r--contrib/ntp/sntp/libopts/sort.c359
-rw-r--r--contrib/ntp/sntp/libopts/stack.c269
-rw-r--r--contrib/ntp/sntp/libopts/streqvcmp.c289
-rw-r--r--contrib/ntp/sntp/libopts/text_mmap.c363
-rw-r--r--contrib/ntp/sntp/libopts/tokenize.c321
-rw-r--r--contrib/ntp/sntp/libopts/usage.c740
-rw-r--r--contrib/ntp/sntp/libopts/version.c178
-rw-r--r--contrib/ntp/sntp/ltmain.sh6863
-rw-r--r--contrib/ntp/sntp/main.c232
-rwxr-xr-xcontrib/ntp/sntp/missing146
-rwxr-xr-xcontrib/ntp/sntp/mkinstalldirs111
-rw-r--r--contrib/ntp/sntp/sntp-opts.c691
-rw-r--r--contrib/ntp/sntp/sntp-opts.def327
-rw-r--r--contrib/ntp/sntp/sntp-opts.h283
-rw-r--r--contrib/ntp/sntp/sntp-opts.menu1
-rw-r--r--contrib/ntp/sntp/sntp-opts.texi173
-rw-r--r--contrib/ntp/sntp/sntp.1400
-rw-r--r--contrib/ntp/sntp/socket.c52
-rw-r--r--contrib/ntp/sntp/timing.c10
-rw-r--r--contrib/ntp/sntp/version.def1
-rw-r--r--contrib/ntp/util/Makefile.am39
-rw-r--r--contrib/ntp/util/Makefile.in538
-rw-r--r--contrib/ntp/util/ansi2knr.c2
-rw-r--r--contrib/ntp/util/hist.c29
-rw-r--r--contrib/ntp/util/jitter.c108
-rw-r--r--contrib/ntp/util/jitter.h412
-rw-r--r--contrib/ntp/util/ntp-keygen-opts.c1044
-rw-r--r--contrib/ntp/util/ntp-keygen-opts.def209
-rw-r--r--contrib/ntp/util/ntp-keygen-opts.h318
-rw-r--r--contrib/ntp/util/ntp-keygen-opts.menu1
-rw-r--r--contrib/ntp/util/ntp-keygen-opts.texi364
-rw-r--r--contrib/ntp/util/ntp-keygen.1176
-rw-r--r--contrib/ntp/util/ntp-keygen.c246
-rw-r--r--contrib/ntp/util/ntptime.c4
-rw-r--r--contrib/ntp/util/tg.c652
-rw-r--r--contrib/ntp/version2
-rw-r--r--contrib/ntp/version.m41
563 files changed, 193226 insertions, 55122 deletions
diff --git a/contrib/ntp/COPYRIGHT b/contrib/ntp/COPYRIGHT
index 1b5dc7f..f9184d7 100644
--- a/contrib/ntp/COPYRIGHT
+++ b/contrib/ntp/COPYRIGHT
@@ -1,22 +1,22 @@
This file is automatically generated from html/copyright.html
Copyright Notice
-
+
jpg "Clone me," says Dolly sheepishly
-
- Last update: 15:44 UTC Tuesday, July 15, 2003
+
+ Last update: 20:31 UTC Saturday, January 06, 2007
_________________________________________________________________
-
+
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.
***********************************************************************
* *
-* Copyright (c) David L. Mills 1992-2003 *
+* Copyright (c) David L. Mills 1992-2008 *
* *
* Permission to use, copy, modify, and distribute this software and *
-* its documentation for any purpose and without fee is hereby *
+* its documentation for any purpose with or without fee is hereby *
* granted, provided that the above copyright notice appears in all *
* copies and that both the copyright notice and this permission *
* notice appear in supporting documentation, and that the name *
@@ -68,9 +68,9 @@ This file is automatically generated from html/copyright.html
[24]<H.Lambermont@chello.nl> ntpsweep
23. [25]Poul-Henning Kamp <phk@FreeBSD.ORG> Oncore driver (Original
author)
- 24. [26]Frank Kardel [27]<Frank.Kardel@informatik.uni-erlangen.de>
- PARSE <GENERIC> driver (14 reference clocks), STREAMS modules for
- PARSE, support scripts, syslog cleanup
+ 24. [26]Frank Kardel [27]<kardel (at) ntp (dot) org> PARSE <GENERIC>
+ driver (>14 reference clocks), STREAMS modules for PARSE, support
+ scripts, syslog cleanup, dynamic interface handling
25. [28]William L. Jones <jones@hermes.chpc.utexas.edu> RS/6000 AIX
modifications, HPUX modifications
26. [29]Dave Katz <dkatz@cisco.com> RS/6000 AIX port
@@ -145,7 +145,7 @@ References
24. mailto:H.Lambermont@chello.nl
25. mailto:%20phk@FreeBSD.ORG
26. http://www4.informatik.uni-erlangen.de/%7ekardel
- 27. mailto:%20Frank.Kardel@informatik.uni-erlangen.de
+ 27. mailto:%20kardel(at)ntp(dot)org
28. mailto:%20jones@hermes.chpc.utexas.edu
29. mailto:%20dkatz@cisco.com
30. mailto:%20leres@ee.lbl.gov
diff --git a/contrib/ntp/ChangeLog b/contrib/ntp/ChangeLog
index 5b96fad..3d193e2 100644
--- a/contrib/ntp/ChangeLog
+++ b/contrib/ntp/ChangeLog
@@ -1,23989 +1,405 @@
-ChangeSet
- 1.1161 03/10/15 05:51:42 stenn@whimsy.udel.edu +2 -0
- 4.2.0
-
- configure.in
- 1.333 03/10/15 05:50:45 stenn@whimsy.udel.edu +1 -1
- 4.2.0
-
- NEWS
- 1.45 03/10/15 05:50:45 stenn@whimsy.udel.edu +3 -1
- 4.2.0
-
-ChangeSet
- 1.1160 03/10/15 05:48:17 stenn@whimsy.udel.edu +1 -0
- cleanup
-
- ntpdc/Makefile.am
- 1.21 03/10/15 05:48:03 stenn@whimsy.udel.edu +1 -1
- cleanup
-
-ChangeSet
- 1.1159 03/10/15 04:43:35 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_parse.c
- 1.23 03/10/15 04:43:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.52 03/10/15 04:41:28 stenn@whimsy.udel.edu +1 -0
- Fix for bug 213
-
- ntpd/refclock_parse.c
- 1.18.2.2 03/10/15 04:41:10 stenn@whimsy.udel.edu +1 -1
- Fix for bug 213
-
-ChangeSet
- 1.1158 03/10/13 04:21:30 stenn@whimsy.udel.edu +16 -0
- Cleanup from Dave Mills
-
- html/ntpdsim.html
- 1.3 03/10/13 04:21:16 stenn@whimsy.udel.edu +5 -5
- Cleanup from Dave Mills
-
- html/refclock.html
- 1.28 03/10/13 04:21:15 stenn@whimsy.udel.edu +5 -5
- Cleanup from Dave Mills
-
- html/prefer.html
- 1.14 03/10/13 04:21:15 stenn@whimsy.udel.edu +6 -6
- Cleanup from Dave Mills
-
- html/manyopt.html
- 1.9 03/10/13 04:21:12 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills
-
- html/index.html
- 1.28 03/10/13 04:21:12 stenn@whimsy.udel.edu +9 -9
- Cleanup from Dave Mills
-
- html/keygen.html
- 1.4 03/10/13 04:21:11 stenn@whimsy.udel.edu +12 -12
- Cleanup from Dave Mills
-
- html/howto.html
- 1.15 03/10/13 04:21:11 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills
-
- html/ntpd.html
- 1.31 03/10/13 04:21:10 stenn@whimsy.udel.edu +13 -13
- Cleanup from Dave Mills
-
- html/confopt.html
- 1.27 03/10/13 04:21:09 stenn@whimsy.udel.edu +5 -5
- Cleanup from Dave Mills
-
- html/config.html
- 1.16 03/10/13 04:21:09 stenn@whimsy.udel.edu +9 -9
- Cleanup from Dave Mills
-
- html/clockopt.html
- 1.17 03/10/13 04:21:08 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills
-
- html/build.html
- 1.18 03/10/13 04:21:08 stenn@whimsy.udel.edu +8 -8
- Cleanup from Dave Mills
-
- html/authopt.html
- 1.30 03/10/13 04:21:08 stenn@whimsy.udel.edu +9 -9
- Cleanup from Dave Mills
-
- html/audio.html
- 1.15 03/10/13 04:21:07 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills
-
- html/assoc.html
- 1.20 03/10/13 04:21:07 stenn@whimsy.udel.edu +8 -8
- Cleanup from Dave Mills
-
- html/accopt.html
- 1.22 03/10/13 04:21:07 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills
-
-ChangeSet
- 1.1157 03/10/11 04:01:59 stenn@whimsy.udel.edu +1 -0
- Cleanup from Dave Mills
-
- html/hints/sco.html
- 1.6 03/10/11 04:01:43 stenn@whimsy.udel.edu +19 -37
- Cleanup from Dave Mills
-
-ChangeSet
- 1.1156 03/10/11 03:55:07 stenn@whimsy.udel.edu +1 -0
- [Bug 207] ntpdc crashes in monlinst with pre-IPv6 ntpd
-
- ntpdc/ntpdc.c
- 1.31 03/10/11 03:54:51 stenn@whimsy.udel.edu +1 -1
- [Bug 207] ntpdc crashes in monlinst with pre-IPv6 ntpd
-
-ChangeSet
- 1.1153.2.1 03/10/09 00:24:40 stenn@whimsy.udel.edu +4 -0
- Updates from Dave Mills (first pass)
-
- html/index.html
- 1.27 03/10/09 00:24:12 stenn@whimsy.udel.edu +2 -2
- Updates from Dave Mills (first pass)
-
- html/ntpd.html
- 1.30 03/10/09 00:24:10 stenn@whimsy.udel.edu +10 -10
- Updates from Dave Mills (first pass)
-
- html/confopt.html
- 1.26 03/10/09 00:24:09 stenn@whimsy.udel.edu +81 -77
- Updates from Dave Mills (first pass)
-
- html/accopt.html
- 1.21 03/10/09 00:24:08 stenn@whimsy.udel.edu +3 -3
- Updates from Dave Mills (first pass)
-
-ChangeSet
- 1.1153.1.7 03/10/08 09:42:13 peda@sectra.se +1 -0
- Check return value of localtime call to prevent NULL dereference.
-
- libntp/humandate.c
- 1.4 03/10/08 09:41:54 peda@sectra.se +8 -2
- Check return value of localtime call to prevent NULL dereference.
-
-ChangeSet
- 1.1153.1.6 03/10/07 17:10:34 stenn@whimsy.udel.edu +2 -0
- Merge pogo:/usa/bruckman/ntp-dev into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpq/ntpq.c
- 1.43 03/10/07 17:10:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpdc/ntpdc_ops.c
- 1.27 03/10/07 17:10:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.1153.1.5 03/10/07 06:44:19 stenn@whimsy.udel.edu +1 -0
- Automerge
-
- ntpd/ntp_request.c
- 1.53 03/10/07 06:44:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.1153.1.4 03/10/07 06:36:38 stenn@whimsy.udel.edu +1 -0
- [Bug 205] Prevent a NULL dereference
-
- ntpd/ntp_proto.c
- 1.161 03/10/07 06:36:22 stenn@whimsy.udel.edu +4 -2
- [Bug 205] Prevent a NULL dereference
-
-ChangeSet
- 1.1153.1.2 03/10/07 05:51:38 stenn@whimsy.udel.edu +1 -0
- [Bug 197] Only check-kayout if we have PATH_PERL
-
- ntpdc/Makefile.am
- 1.20 03/10/07 05:51:05 stenn@whimsy.udel.edu +15 -9
- Only check-kayout if we have PATH_PERL
-
-ChangeSet
- 1.1152.4.2 03/10/07 04:44:07 stenn@whimsy.udel.edu +7 -0
- Changes from Dave Mills - "monitor" stuff, mostly.
-
- ntpdc/ntpdc_ops.c
- 1.25.1.1 03/10/07 04:43:11 stenn@whimsy.udel.edu +2 -2
- Changes from Dave Mills - "monitor" stuff, mostly.
-
- ntpd/ntp_request.c
- 1.51.1.1 03/10/07 04:42:53 stenn@whimsy.udel.edu +3 -7
- Changes from Dave Mills - "monitor" stuff, mostly.
-
- ntpd/ntp_monitor.c
- 1.12 03/10/07 04:42:52 stenn@whimsy.udel.edu +8 -3
- Changes from Dave Mills - "monitor" stuff, mostly.
-
- ntpd/ntp_config.c
- 1.98 03/10/07 04:42:51 stenn@whimsy.udel.edu +17 -13
- Changes from Dave Mills - "monitor" stuff, mostly.
-
- include/ntpd.h
- 1.59 03/10/07 04:42:40 stenn@whimsy.udel.edu +1 -0
- Changes from Dave Mills - "monitor" stuff, mostly.
-
- include/ntp_config.h
- 1.28 03/10/07 04:42:37 stenn@whimsy.udel.edu +1 -0
- Changes from Dave Mills - "monitor" stuff, mostly.
-
- include/ntp.h
- 1.92 03/10/07 04:42:36 stenn@whimsy.udel.edu +1 -2
- Changes from Dave Mills - "monitor" stuff, mostly.
-
-ChangeSet
- 1.1152.1.9 03/10/06 12:33:50 fredb@seduction.immanent.net +2 -0
- Fix a couple more gcc warnings that are only seen on non-typical platforms.
-
- ntpd/refclock_parse.c
- 1.22 03/10/06 12:33:50 fredb@seduction.immanent.net +11 -11
- Fix another gcc warning about "de-referencing type-punned pointer"
- that is only seen on hosts with signed "char" type.
-
- ntpd/refclock_jupiter.c
- 1.14 03/10/06 12:33:49 fredb@seduction.immanent.net +4 -4
- Fix cryptic gcc warning about "implicit truncation of unsigned type"
- that is only seen on big endian hosts.
-
-ChangeSet
- 1.1152.1.8 03/10/06 10:38:09 bruckman@pogo.udel.edu +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into pogo.udel.edu:/pogo/users/bruckman/ntp-dev
-
- BitKeeper/etc/logging_ok
- 1.40 03/10/06 10:37:56 bruckman@pogo.udel.edu +1 -0
- Logging to logging@openlogging.org accepted
-
-ChangeSet
- 1.1152.4.1 03/10/06 03:12:59 stenn@whimsy.udel.edu +1 -0
- Distribution directory cleanup
-
- Makefile.am
- 1.44 03/10/06 03:12:35 stenn@whimsy.udel.edu +18 -1
- Distribution directory cleanup
-
-ChangeSet
- 1.1152.1.7 03/10/05 17:49:11 fredb@seduction.immanent.net +7 -0
- Fixes for various and sundry compiler warnings, from NetBSD.
-
- ntpq/ntpq_ops.c
- 1.18 03/10/05 17:49:10 fredb@seduction.immanent.net +1 -1
- Fix for gcc-3.3.1 warnings:
-
- dereferencing type-punned pointer will break strict-aliasing rules
-
- From NetBSD CVS, by Jason Thorpe.
-
- ntpq/ntpq.c
- 1.41.1.1 03/10/05 17:49:09 fredb@seduction.immanent.net +2 -2
- Fix for gcc-3.3.1 warnings:
-
- dereferencing type-punned pointer will break strict-aliasing rules
-
- From NetBSD CVS, by Jason Thorpe.
-
- ntpdc/ntpdc_ops.c
- 1.26 03/10/05 17:49:09 fredb@seduction.immanent.net +17 -17
- Fix for gcc-3.3.1 warnings:
-
- dereferencing type-punned pointer will break strict-aliasing rules
-
- From NetBSD CVS, by Jason Thorpe.
-
- ntpd/refclock_shm.c
- 1.15 03/10/05 17:49:09 fredb@seduction.immanent.net +3 -0
- Supply missing prototype, by Matthias Drochner.
-
- ntpd/ntp_io.c
- 1.94 03/10/05 17:49:09 fredb@seduction.immanent.net +4 -0
- Avoid a compiler warning when no refclocks are configured at all.
- From NetBSD CVS, by Manuel Bouyer. (No, NetBSD doesn't explicitly
- support building ntpd that way.)
-
- ntpd/ntp_crypto.c
- 1.89 03/10/05 17:49:09 fredb@seduction.immanent.net +6 -6
- Fixes for gcc "incompatible pointer type" warnings, by Matthias Drochner.
-
- ntpd/ntp_control.c
- 1.63 03/10/05 17:49:09 fredb@seduction.immanent.net +4 -0
- Avoid a compiler warning when no refclocks are configured at all.
- From NetBSD CVS, by Manuel Bouyer. (No, NetBSD doesn't explicitly
- support building ntpd that way.)
-
-ChangeSet
- 1.1152.1.6 03/10/03 14:26:15 fredb@rapture.immanent.net +1 -0
- Initialize the value of "v6_flag" in all cases in sys_info(), so that "ntpdc -c sysinfo"
- won't display the random, uninitialized value of peer6 for the system peer in the
- no syspeer case on IPv6-capable hosts. Problem noted and solution provided by Matthias
- Drochner, with a minor optimization by myself.
-
-
-
- ntpd/ntp_request.c
- 1.52 03/10/03 14:26:13 fredb@rapture.immanent.net +6 -2
- Initialize "v6_flag" in all cases.
-
-ChangeSet
- 1.1152.1.5 03/10/03 09:12:23 fredb@rapture.immanent.net +1 -0
- Resolve conflicts.
-
- ntpd/ntp_io.c
- 1.93 03/10/03 09:12:22 fredb@rapture.immanent.net +1 -7
- Resolve conflicts.
-
-ChangeSet
- 1.1152.1.4 03/09/30 11:35:30 fredb@rapture.immanent.net +2 -0
- Some timers tweaks, including one build fix.
-
- ntpd/ntp_timer.c
- 1.26 03/09/30 11:35:29 fredb@rapture.immanent.net +2 -2
- Fix paste-o in version 1.25, fixing build on NetBSD 1.6.1 and other platforms
- without POSIX timers.
-
- configure.in
- 1.332 03/09/30 11:35:29 fredb@rapture.immanent.net +4 -1
- NetBSD has a working timer_create() and timer_settime() since 1.6M, so
- the first released version with them will be 2.0.
-
- Folks running NetBSD-current (pre 2.0) can force the greater precision,
- POSIX timers via
-
- configure --build=$(uname -p)--netbsd2
-
-
-ChangeSet
- 1.1152.1.3 03/09/30 10:11:28 fredb@seduction.immanent.net +1 -0
- Merge
-
- BitKeeper/etc/logging_ok
- 1.39 03/09/30 10:11:28 fredb@seduction.immanent.net +1 -0
- Logging to logging@openlogging.org accepted
-
- BitKeeper/etc/logging_ok
- 1.38 03/09/30 10:09:52 fredb@seduction.immanent.net +1 -1
- 'Auto converge'
-
-ChangeSet
- 1.1152.3.2 03/09/29 23:37:34 blu@corwin. +2 -0
- ntp_timer.c:
- Double check that value isn't zero and thus disarm the timer.
-
- BitKeeper/etc/logging_ok
- 1.37 03/09/29 23:37:34 blu@corwin. +1 -0
- Logging to logging@openlogging.org accepted
-
- ntpd/ntp_timer.c
- 1.25 03/09/29 23:36:09 blu@corwin. +14 -0
- Double check that value isn't zero and thus disarm the timer.
-
-ChangeSet
- 1.1152.2.2 03/08/26 22:19:32 mayer@tecotoo.myibg.com +2 -0
- Add HAVE_VSNPRINTF macro to prevent extra declarations if already defined by the OS.
-
- ports/winnt/include/config.h
- 1.24 03/08/26 22:19:08 mayer@tecotoo.myibg.com +1 -0
- Windows already declares vsnprintf. Disallow additional declarations.
-
- include/l_stdlib.h
- 1.14 03/08/26 22:19:05 mayer@tecotoo.myibg.com +2 -0
- Added code to only declare vsnprintf if not declared elsewhere.
-
-ChangeSet
- 1.1152.3.1 03/08/26 04:55:19 stenn@whimsy.udel.edu +1 -0
- Also call findbcastinter() for MDF_ACAST | MDF_MCAST | MDF_BCAST. From Dave Mills.
-
- ntpd/ntp_peer.c
- 1.57 03/08/26 04:54:56 stenn@whimsy.udel.edu +1 -1
- Also call findbcastinter() for MDF_ACAST | MDF_MCAST | MDF_BCAST. From Dave Mills.
-
-ChangeSet
- 1.1148.1.5 03/08/22 21:24:57 mayer@tecotoo.myibg.com +1 -0
- Changed vaddr to remaddr to avoid namespace collisions during build with NetBSD
-
- ntpd/ntp_io.c
- 1.91.1.1 03/08/22 21:23:16 mayer@tecotoo.myibg.com +9 -9
- Changed vaddr to remaddr to avoid namespace collisions during build with NetBSD
-
-ChangeSet
- 1.1152.1.1 03/08/20 21:31:45 fredb@tautology.immanent.net +1 -0
- Fix for NetBSD 1.6.1.
-
- ntpd/ntp_io.c
- 1.92 03/08/20 21:31:43 fredb@tautology.immanent.net +7 -9
- NetBSD 1.6.1 already has a conflicting typedef for vaddr_t in <machine/types.h>,
- with a comment that says "This should probably be if defined(_KERNEL)", no less,
- so just replace all mention of "vaddr_t" with "struct vaddr", rather than try to
- think of a better name.
-
-ChangeSet
- 1.1154 03/08/20 11:06:04 blu@jedi.east.sun.com +1 -0
- ntpq.html:
- Fix typos
-
- html/ntpq.html
- 1.23 03/08/20 11:03:21 blu@jedi.east.sun.com +2 -2
- Fix typos
-
-ChangeSet
- 1.1153 03/08/20 10:37:37 blu@jedi.east.sun.com +1 -0
- ntpq.c:
- If assoc_cache is loaded, clamp association ids using & notation to allow
- specifying all associations without knowing how many there are.
-
- ntpq/ntpq.c
- 1.42 03/08/20 10:00:56 blu@jedi.east.sun.com +8 -4
- If assoc_cache is loaded, clamp association ids using & notation to allow
- specifying all associations without knowing how many there are.
-
-ChangeSet
- 1.1148.1.4 03/08/19 15:07:53 mayer@tecotoo.myibg.com +1 -0
- Comment out check for Up flag in Address_Okay
-
- ntpd/ntp_io.c
- 1.91 03/08/19 15:06:40 mayer@tecotoo.myibg.com +3 -2
- Comment out check for Up flag in Address_Okay
-
-ChangeSet
- 1.1148.1.3 03/08/19 14:55:51 mayer@tecotoo.myibg.com +1 -0
- Add debug to address_okay
-
- ntpd/ntp_io.c
- 1.90 03/08/19 14:54:15 mayer@tecotoo.myibg.com +20 -0
- Add debug to address_okay
-
-ChangeSet
- 1.1150 03/08/17 04:05:20 stenn@whimsy.udel.edu +1 -0
- Lint - reported by Danny Mayer
-
- ntpq/ntpq.c
- 1.41 03/08/17 04:05:03 stenn@whimsy.udel.edu +6 -6
- Lint - reported by Danny Mayer
-
-ChangeSet
- 1.1148.1.2 03/08/16 21:29:02 mayer@tecotoo.myibg.com +1 -0
- Fix add_addr_to_list call
-
- ntpd/ntp_io.c
- 1.89 03/08/16 21:27:29 mayer@tecotoo.myibg.com +1 -1
- 'Fix
-
-ChangeSet
- 1.1148.1.1 03/08/16 20:59:26 mayer@tecotoo.myibg.com +1 -0
- Add linked list to track remote addresses.
-
- ntpd/ntp_io.c
- 1.88 03/08/16 20:58:51 mayer@tecotoo.myibg.com +83 -0
- Add linked list to track remote addresses.
-
-ChangeSet
- 1.1149 03/08/15 14:18:53 blu@jedi.east.sun.com +3 -0
- ntp_timer.c, ntp_loopfilter.c, ntpd.h:
- Reinitialize the interval timer after stepping the clock. The behavior of
- the timer after a clock step is not addressed by POSIX and is undefined,
- so the safest course is to reintitialize it when we step the clock. Solaris,
- for one, is known to stop triggering the timer after a step backward until
- the system clock "catches up".
-
- ntpd/ntp_timer.c
- 1.24 03/08/15 14:15:47 blu@jedi.east.sun.com +38 -11
- Reinitialize the interval timer after stepping the clock. The behavior of
- the timer after a clock step is not addressed by POSIX and is undefined,
- so the safest course is to reintitialize it when we step the clock. Solaris,
- for one, is known to stop triggering the timer after a step backward until
- the system clock "catches up".
-
- ntpd/ntp_loopfilter.c
- 1.85 03/08/15 14:15:34 blu@jedi.east.sun.com +2 -0
- Reinitialize the interval timer after stepping the clock. The behavior of
- the timer after a clock step is not addressed by POSIX and is undefined,
- so the safest course is to reintitialize it when we step the clock. Solaris,
- for one, is known to stop triggering the timer after a step backward until
- the system clock "catches up".
-
- include/ntpd.h
- 1.58 03/08/15 14:15:19 blu@jedi.east.sun.com +1 -0
- Reinitialize the interval timer after stepping the clock. The behavior of
- the timer after a clock step is not addressed by POSIX and is undefined,
- so the safest course is to reintitialize it when we step the clock. Solaris,
- for one, is known to stop triggering the timer after a step backward until
- the system clock "catches up".
-
-ChangeSet
- 1.1146.1.1 03/08/14 03:02:42 stenn@whimsy.udel.edu +2 -0
- some little changes
-
- ntpdc/Makefile.am
- 1.19 03/08/14 03:01:55 stenn@whimsy.udel.edu +1 -0
- Fix the cleanup rules.
-
- ntpd/ntp_io.c
- 1.87 03/08/13 18:56:00 stenn@whimsy.udel.edu +2 -2
- Changes from Danny Mayer
-
-ChangeSet
- 1.1140.1.11 03/08/13 09:46:24 blu@jedi.east.sun.com +7 -0
- ignore:
- Added firefly.sh include/ntp.patch include/ntp_control.patch include/ntp_request.patch jedi.sh ntpd/ntp_control.patch ntpd/ntp_peer.patch ntpd/ntp_proto.patch ntpd/ntp_request.patch ntpq/ntpq.patch to the ignore list
- ntp_proto.c, ntp_peer.c, ntp_control.c, ntp_control.h, ntp.h:
- Add rank counter for each peer. This is incremented each time a peer reaches
- candidate status, or is actually selected as the system peer. By this method,
- peers that are contribute most often to the system time will have a higher
- count.
-
- BitKeeper/etc/logging_ok
- 1.36 03/08/13 09:45:36 blu@jedi.east.sun.com +1 -0
- Logging to logging@openlogging.org accepted
-
- BitKeeper/etc/ignore
- 1.34 03/08/13 09:24:49 blu@jedi.east.sun.com +10 -0
- Added firefly.sh include/ntp.patch include/ntp_control.patch include/ntp_request.patch jedi.sh ntpd/ntp_control.patch ntpd/ntp_peer.patch ntpd/ntp_proto.patch ntpd/ntp_request.patch ntpq/ntpq.patch to the ignore list
-
- ntpd/ntp_proto.c
- 1.160 03/08/13 09:24:36 blu@jedi.east.sun.com +2 -0
- Add rank counter for each peer. This is incremented each time a peer reaches
- candidate status, or is actually selected as the system peer. By this method,
- peers that are contribute most often to the system time will have a higher
- count.
-
- ntpd/ntp_peer.c
- 1.56 03/08/13 09:24:26 blu@jedi.east.sun.com +1 -0
- Add rank counter for each peer. This is incremented each time a peer reaches
- candidate status, or is actually selected as the system peer. By this method,
- peers that are contribute most often to the system time will have a higher
- count.
-
- ntpd/ntp_control.c
- 1.62 03/08/13 09:24:15 blu@jedi.east.sun.com +14 -9
- Add rank counter for each peer. This is incremented each time a peer reaches
- candidate status, or is actually selected as the system peer. By this method,
- peers that are contribute most often to the system time will have a higher
- count.
-
- include/ntp_control.h
- 1.23 03/08/13 09:24:06 blu@jedi.east.sun.com +9 -8
- Add rank counter for each peer. This is incremented each time a peer reaches
- candidate status, or is actually selected as the system peer. By this method,
- peers that are contribute most often to the system time will have a higher
- count.
-
- include/ntp.h
- 1.91 03/08/13 09:23:56 blu@jedi.east.sun.com +1 -0
- Add rank counter for each peer. This is incremented each time a peer reaches
- candidate status, or is actually selected as the system peer. By this method,
- peers that are contribute most often to the system time will have a higher
- count.
-
-ChangeSet
- 1.1146 03/08/11 11:30:34 fredb@tautology.immanent.net +2 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into tautology.immanent.net:/s/bitkeeper/ntp-dev
-
- ntpq/ntpq.c
- 1.40 03/08/11 11:30:31 fredb@tautology.immanent.net +0 -0
- Auto merged
-
- configure.in
- 1.331 03/08/11 11:30:31 fredb@tautology.immanent.net +0 -0
- Auto merged
-
-ChangeSet
- 1.1140.1.10 03/08/11 00:15:46 stenn@whimsy.udel.edu +1 -0
- Bug 182: Clean up Solaris version checks
-
- configure.in
- 1.327.1.3 03/08/11 00:15:33 stenn@whimsy.udel.edu +11 -2
- Bug 182: Clean up Solaris version checks
-
-ChangeSet
- 1.1140.1.8 03/08/10 22:26:03 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_control.c
- 1.61 03/08/10 22:25:59 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.1140.1.7 03/08/10 21:52:49 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpq/ntpq.c
- 1.38.1.1 03/08/10 21:52:45 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.1140.1.6 03/08/10 21:26:08 stenn@whimsy.udel.edu +1 -0
- Remove the old ntptrace/Makefile from configure.in
-
- configure.in
- 1.327.1.2 03/08/10 21:25:58 stenn@whimsy.udel.edu +0 -1
- Remove the old ntptrace/Makefile from configure.in
-
-ChangeSet
- 1.1140.1.5 03/08/10 18:41:23 stenn@whimsy.udel.edu +3 -0
- Updates from Dave Mills
-
- html/release.html
- 1.28 03/08/10 18:40:54 stenn@whimsy.udel.edu +2 -2
- Updates from Dave Mills
-
- html/debug.html
- 1.22 03/08/10 18:40:54 stenn@whimsy.udel.edu +2 -2
- Updates from Dave Mills
-
- html/accopt.html
- 1.20 03/08/10 18:40:54 stenn@whimsy.udel.edu +4 -6
- Updates from Dave Mills
-
-ChangeSet
- 1.1140.1.4 03/08/10 18:35:30 stenn@whimsy.udel.edu +1 -0
- typo
-
- html/ntpdc.html
- 1.19 03/08/10 18:35:17 stenn@whimsy.udel.edu +1 -1
- typo
-
-ChangeSet
- 1.1140.1.3 03/08/10 18:12:34 stenn@whimsy.udel.edu +1 -0
- peer_unfit() needs to test for FLAG_NOSELECT. From Dave Mills.
-
- ntpd/ntp_proto.c
- 1.159 03/08/10 18:12:22 stenn@whimsy.udel.edu +3 -1
- peer_unfit() needs to test for FLAG_NOSELECT. From Dave Mills.
-
-ChangeSet
- 1.1145 03/08/10 10:27:44 fredb@tautology.immanent.net +1 -0
- Don't try to create "ntptrace/Makefile", now that "ntptrace" is gone.
-
- configure.in
- 1.330 03/08/10 10:27:42 fredb@tautology.immanent.net +0 -1
- Don't try to create "ntptrace/Makefile", now that "ntptrace" is gone.
-
-ChangeSet
- 1.1144 03/08/10 08:50:40 fredb@tautology.immanent.net +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into tautology.immanent.net:/s/bitkeeper/ntp-dev
-
- configure.in
- 1.329 03/08/10 08:50:37 fredb@tautology.immanent.net +0 -0
- Auto merged
-
-ChangeSet
- 1.1140.1.2 03/08/10 07:56:27 stenn@whimsy.udel.edu +5 -0
- Remove the old ntptrace/ code.
-
- Makefile.am
- 1.43 03/08/10 07:56:15 stenn@whimsy.udel.edu +1 -1
- Remove the old ntptrace/ code.
-
- BitKeeper/deleted/.del-ntptrace.h~3e480692
- 1.4 03/08/10 07:55:03 stenn@whimsy.udel.edu +0 -0
- Delete: ntptrace/ntptrace.h
-
- BitKeeper/deleted/.del-ntptrace.c~3aed0663
- 1.17 03/08/10 07:55:03 stenn@whimsy.udel.edu +0 -0
- Delete: ntptrace/ntptrace.c
-
- BitKeeper/deleted/.del-README~3aed0663
- 1.4 03/08/10 07:55:02 stenn@whimsy.udel.edu +0 -0
- Delete: ntptrace/README
-
- BitKeeper/deleted/.del-Makefile.am~3aed0663
- 1.6 03/08/10 07:55:02 stenn@whimsy.udel.edu +0 -0
- Delete: ntptrace/Makefile.am
-
-ChangeSet
- 1.1140.1.1 03/08/10 06:31:13 stenn@whimsy.udel.edu +1 -0
- configure.in:
- Some HP-UX 11.11 systems don't have sockaddr_storage
- so we can't allow the native IPv6 headers to be used.
-
- configure.in
- 1.327.1.1 03/08/10 06:30:13 stenn@whimsy.udel.edu +6 -0
- Some HP-UX 11.11 systems don't have sockaddr_storage
- so we can't allow the native IPv6 headers to be used.
-
-ChangeSet
- 1.1143 03/08/09 09:44:36 fredb@rapture.immanent.net +2 -0
- automake subtlety, to permit the bootstrapped sources to build and install with BSD make.
-
- ntpq/Makefile.am
- 1.11 03/08/09 09:44:35 fredb@rapture.immanent.net +1 -1
- automake subtlety, to permit the bootstrapped sources to build and install with BSD make.
-
- ntpdc/Makefile.am
- 1.18 03/08/09 09:44:35 fredb@rapture.immanent.net +1 -1
- automake subtlety, to permit the bootstrapped sources to build and install with BSD make.
-
-ChangeSet
- 1.1142 03/08/09 06:15:08 fredb@tautology.immanent.net +1 -0
- Another fix for "." not in $PATH.
-
- ntpdc/Makefile.am
- 1.17 03/08/09 06:15:06 fredb@tautology.immanent.net +1 -1
- Another fix for "." not in $PATH.
-
-ChangeSet
- 1.1141 03/08/09 06:13:01 fredb@tautology.immanent.net +3 -0
- Do "readline" on NetBSD.
-
- ntpq/ntpq.c
- 1.39 03/08/09 06:12:59 fredb@tautology.immanent.net +5 -5
- Do "readline" on NetBSD.
-
- ntpdc/ntpdc.c
- 1.30 03/08/09 06:12:59 fredb@tautology.immanent.net +5 -5
- Do "readline" on NetBSD.
-
- configure.in
- 1.328 03/08/09 06:12:58 fredb@tautology.immanent.net +7 -2
- Do "readline" on NetBSD.
-
-ChangeSet
- 1.1140 03/08/09 04:23:40 stenn@whimsy.udel.edu +1 -0
- Also use CPPFLAGS for nl.c.
-
- ntpdc/Makefile.am
- 1.16 03/08/09 04:23:29 stenn@whimsy.udel.edu +1 -1
- Also use CPPFLAGS for nl.c.
-
-ChangeSet
- 1.1139 03/08/09 02:06:09 stenn@whimsy.udel.edu +1 -0
- Merge
-
- ntpdc/Makefile.am
- 1.15 03/08/09 02:05:53 stenn@whimsy.udel.edu +0 -1
- Looks the same to me...
-
-ChangeSet
- 1.1138 03/08/08 15:31:43 stenn@whimsy.udel.edu +1 -0
- Invoke the layout generation script using ./nl.pl
-
- ntpdc/Makefile.am
- 1.14 03/08/08 15:31:31 stenn@whimsy.udel.edu +1 -1
- Invoke the layout generation script using ./nl.pl
-
-ChangeSet
- 1.1135.2.1 03/08/08 17:18:59 ro@xayide.techfak.uni-bielefeld.de +1 -0
- [Bug 185] Fix compilation error on Tru64 UNIX V4.0F with cc.
-
- include/l_stdlib.h
- 1.13 03/08/08 17:18:29 ro@xayide.techfak.uni-bielefeld.de +2 -0
- Include <varargs.h> on pre-ANSI C systems.
-
-ChangeSet
- 1.1135.1.1 03/08/08 17:12:56 ro@xayide.techfak.uni-bielefeld.de +4 -0
- Fix some problems in layout.std verification.
-
- ntpdc/nl_in.c
- 1.2 03/08/08 17:12:31 ro@xayide.techfak.uni-bielefeld.de +1 -0
- Include config.h first to avoid compilation warnings.
-
- ntpdc/nl.pl.in
- 1.6 03/08/08 17:12:31 ro@xayide.techfak.uni-bielefeld.de +7 -2
- Allow more whitespace in preprocessor output.
- Add debug code.
- Abort if some line isn't matched instead of failing silently
-
- ntpdc/layout.std
- 1.2 03/08/08 17:12:31 ro@xayide.techfak.uni-bielefeld.de +296 -3
- Update after nl.pl has been fixed to handle the output of different
- preprocessors.
-
- ntpdc/Makefile.am
- 1.12.1.1 03/08/08 17:12:30 ro@xayide.techfak.uni-bielefeld.de +1 -1
- ntpdc-layout must be built before layout.here is created.
-
-ChangeSet
- 1.1137 03/08/08 05:56:16 stenn@whimsy.udel.edu +1 -0
- Typo
-
- parseutil/Makefile.am
- 1.6 03/08/08 05:56:05 stenn@whimsy.udel.edu +1 -1
- Typo
-
-ChangeSet
- 1.683.14.51 03/08/08 11:43:34 peda@sectra.se +1 -0
- Correctly remove trailing space from arguments of incoming
- request variables.
-
- ntpd/ntp_control.c
- 1.37.3.8 03/08/08 11:43:33 peda@sectra.se +2 -2
- Correctly remove trailing space from arguments of incoming
- request variables.
-
-ChangeSet
- 1.1136 03/08/08 05:36:14 stenn@whimsy.udel.edu +4 -0
- Move -lcrypto to its own variable and out of LIBS.
-
- util/Makefile.am
- 1.21 03/08/08 05:36:01 stenn@whimsy.udel.edu +10 -9
- Move -lcrypto to its own variable and out of LIBS.
-
- ntpdc/Makefile.am
- 1.13 03/08/08 05:36:01 stenn@whimsy.udel.edu +2 -2
- Move -lcrypto to its own variable and out of LIBS.
-
- ntpd/Makefile.am
- 1.36 03/08/08 05:36:01 stenn@whimsy.udel.edu +2 -2
- Move -lcrypto to its own variable and out of LIBS.
-
- configure.in
- 1.327 03/08/08 05:36:01 stenn@whimsy.udel.edu +1 -1
- Move -lcrypto to its own variable and out of LIBS.
-
-ChangeSet
- 1.683.14.50 03/08/08 10:48:40 peda@sectra.se +1 -0
- clean up keyid mess in ntpq.
-
- ntpq/ntpq.c
- 1.16.2.1 03/08/08 10:48:38 peda@sectra.se +16 -10
- clean up keyid mess.
-
-ChangeSet
- 1.1135 03/08/08 04:36:17 stenn@whimsy.udel.edu +2 -0
- Bug 180: Verify mode 7 packet layout at build time.
-
- ntpdc/Makefile.am
- 1.12 03/08/08 04:34:51 stenn@whimsy.udel.edu +9 -2
- Check the structure layout to insure compatibility.
-
- ntpdc/layout.std
- 1.1 03/08/08 04:32:43 stenn@whimsy.udel.edu +124 -0
-
- ntpdc/layout.std
- 1.0 03/08/08 04:32:43 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/ntpdc/layout.std
-
-ChangeSet
- 1.1134 03/08/08 04:00:14 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- libntp/authkeys.c
- 1.13 03/08/08 04:00:10 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.1130.1.5 03/08/07 08:05:53 mayer@tecotoo.myibg.com +6 -0
- Clean up includes
-
- ports/winnt/ntpq/ntpq.dsp
- 1.12 03/08/07 08:05:09 mayer@tecotoo.myibg.com +2 -2
- Clean up includes
-
- ports/winnt/ntpdc/ntpdc.dsp
- 1.12 03/08/07 08:05:06 mayer@tecotoo.myibg.com +2 -2
- Clean up includes
-
- ports/winnt/ntpdate/ntpdate.dsp
- 1.11 03/08/07 08:05:04 mayer@tecotoo.myibg.com +2 -2
- Clean up includes
-
- ports/winnt/ntpd/ntpd.dsp
- 1.18 03/08/07 08:05:02 mayer@tecotoo.myibg.com +1 -1
- Clean up includes
-
- ports/winnt/ntp-keygen/ntpkeygen.dsp
- 1.3 03/08/07 08:05:00 mayer@tecotoo.myibg.com +1 -1
- Clean up includes
-
- ports/winnt/libntp/libntp.dsp
- 1.16 03/08/07 08:04:57 mayer@tecotoo.myibg.com +1 -1
- Clean up includes
-
-ChangeSet
- 1.1130.3.1 03/08/07 04:12:19 stenn@whimsy.udel.edu +1 -0
- Use our md5.h header under RedHat. Reported by Reg Clemens.
-
- configure.in
- 1.326 03/08/07 04:12:07 stenn@whimsy.udel.edu +7 -1
- Use our md5.h header under RedHat. Reported by Reg Clemens.
-
-ChangeSet
- 1.1130.1.4 03/08/06 22:15:52 mayer@tecotoo.myibg.com +5 -0
- Use the Win32InitSockets code now in port/winnt/libisc/net.c so we use common code.
- Need to force the isc headers to not include the isc/ipv6.h code.
-
- ports/winnt/libisc/net.c
- 1.4 03/08/06 22:15:17 mayer@tecotoo.myibg.com +18 -0
- Use the Win32InitSockets code now in port/winnt/libisc/net.c so we use common code.
-
- ports/winnt/include/isc/net.h
- 1.3 03/08/06 22:15:15 mayer@tecotoo.myibg.com +5 -0
- Use the Win32InitSockets code now in port/winnt/libisc/net.c so we use common code.
-
- ntpq/ntpq.c
- 1.38 03/08/06 22:15:12 mayer@tecotoo.myibg.com +11 -10
- Use the Win32InitSockets code now in port/winnt/libisc/net.c so we use common code.
- Need to force the isc headers to not include the isc/ipv6.h code.
-
- ntpdc/ntpdc.c
- 1.29 03/08/06 22:15:10 mayer@tecotoo.myibg.com +11 -10
- Use the Win32InitSockets code now in port/winnt/libisc/net.c so we use common code.
- Need to force the isc headers to not include the isc/ipv6.h code.
-
- ntpd/ntp_io.c
- 1.86 03/08/06 22:15:05 mayer@tecotoo.myibg.com +1 -4
- Use the Win32InitSockets code now in port/winnt/libisc/net.c so we use common code.
-
-ChangeSet
- 1.1130.1.3 03/08/05 07:04:07 stenn@whimsy.udel.edu +3 -0
- auto* magic for ntpdc-layout
-
- ntpdc/nl.pl.in
- 1.5 03/08/05 07:03:32 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ntpdc/nl.pl.in
- 1.4 03/08/05 07:03:14 stenn@whimsy.udel.edu +1 -1
- auto* magic for ntpdc-layout
-
- ntpdc/Makefile.am
- 1.11 03/08/05 07:03:14 stenn@whimsy.udel.edu +9 -2
- auto* magic for ntpdc-layout
-
- configure.in
- 1.325 03/08/05 07:03:14 stenn@whimsy.udel.edu +1 -0
- auto* magic for ntpdc-layout
-
- ntpdc/nl.pl.in
- 1.3 03/08/05 06:30:01 stenn@whimsy.udel.edu +0 -0
- Rename: ntpdc/nl.pl -> ntpdc/nl.pl.in
-
- ntpdc/nl.pl
- 1.2 03/08/05 06:24:09 stenn@whimsy.udel.edu +0 -0
- Change mode to -rwxrwxr-x
-
-ChangeSet
- 1.1130.2.1 03/08/05 02:49:37 stenn@whimsy.udel.edu +1 -0
- [Bug 174] Use Dave's fix.
-
- ntpd/ntp_refclock.c
- 1.51 03/08/05 02:49:27 stenn@whimsy.udel.edu +4 -3
- [Bug 174] Use Dave's fix.
-
- ntpdc/ntpdc-layout.c
- 1.1 03/08/04 20:28:10 ro@xayide.techfak.uni-bielefeld.de[ro] +21 -0
- BitKeeper file /amnt/figaro/volumes/adm-src/adm/src/ntp/ntp-dev-local/ntpdc/ntpdc-layout.c
-
- ntpdc/nl_in.c
- 1.1 03/08/04 20:28:10 ro@xayide.techfak.uni-bielefeld.de[ro] +2 -0
- BitKeeper file /amnt/figaro/volumes/adm-src/adm/src/ntp/ntp-dev-local/ntpdc/nl_in.c
-
- ntpdc/nl.pl
- 1.1 03/08/04 20:28:10 ro@xayide.techfak.uni-bielefeld.de[ro] +32 -0
- BitKeeper file /amnt/figaro/volumes/adm-src/adm/src/ntp/ntp-dev-local/ntpdc/nl.pl
-
- ntpdc/ntpdc_ops.c
- 1.25 03/08/04 20:28:10 ro@xayide.techfak.uni-bielefeld.de[ro] +17 -19
- Include <stddef.h> for offsetof.
- Use v4sizeof to avoid manual calculations of IPv4 structure sizes.
-
- ntpdc/ntpdc-layout.c
- 1.0 03/08/04 20:28:10 ro@xayide.techfak.uni-bielefeld.de[ro] +0 -0
- BitKeeper file /amnt/figaro/volumes/adm-src/adm/src/ntp/ntp-dev-clone/ntpdc/ntpdc-layout.c
-
- ntpdc/nl_in.c
- 1.0 03/08/04 20:28:10 ro@xayide.techfak.uni-bielefeld.de[ro] +0 -0
- BitKeeper file /amnt/figaro/volumes/adm-src/adm/src/ntp/ntp-dev-clone/ntpdc/nl_in.c
-
- ntpdc/nl.pl
- 1.0 03/08/04 20:28:10 ro@xayide.techfak.uni-bielefeld.de[ro] +0 -0
- BitKeeper file /amnt/figaro/volumes/adm-src/adm/src/ntp/ntp-dev-clone/ntpdc/nl.pl
-
- ntpdc/Makefile.am
- 1.10 03/08/04 20:28:10 ro@xayide.techfak.uni-bielefeld.de[ro] +3 -0
- Add ntpdc-layout.
-
- ntpd/ntp_request.c
- 1.51 03/08/04 20:28:10 ro@xayide.techfak.uni-bielefeld.de[ro] +22 -64
- Include <stddef.h> for offsetof.
- Define and use v6sizeof to replace manual determination of IPv4 vs. IPv6
- structure sizes.
- Use v4sizeof to directly calculate IPv4 structure sizes.
-
- include/ntp_request.h
- 1.22 03/08/04 20:28:10 ro@xayide.techfak.uni-bielefeld.de[ro] +24 -18
- Remove ALT_* macros, define v4sizeof instead.
- Carefully pad all structs varying between IPv4 and IPv6 so their layout
- is identical irrespective of alignment requirements of struct in6_addr
- (may require 4-byte or 8-byte alignment).
- Fix a few typos.
-
-ChangeSet
- 1.1130.1.1 03/08/04 18:33:47 ro@xayide.techfak.uni-bielefeld.de[ro] +8 -0
- [Bug 164, 165] Make sure NTP mode 7 request and response packets are layed
- out identically irrespective of 32 vs. 64-bit systems or struct in6_addr
- alignment requirements.
-
- BitKeeper/etc/logging_ok
- 1.35 03/08/04 18:33:26 ro@xayide.techfak.uni-bielefeld.de[ro] +1 -0
- Logging to logging@openlogging.org accepted
-
-ChangeSet
- 1.683.14.49 03/08/04 14:42:21 peda@sectra.se +1 -0
- Remember all trusted keys in a hash bucket when deleting keys.
-
- libntp/authkeys.c
- 1.6.1.3 03/08/04 14:42:18 peda@sectra.se +1 -0
- Remember all trusted keys in a hash bucket when deleting keys.
-
-ChangeSet
- 1.1131 03/08/04 14:02:44 peda@sectra.se +1 -0
- Problem deleting keys when rereading them from file.
- - Don't crash on odd number of keys in one hash.
- - Delete all keys, not just every other key.
-
- libntp/authkeys.c
- 1.12 03/08/04 14:02:41 peda@sectra.se +0 -1
- Don't crash on odd number of keys in one hash.
- Delete all keys, not just every other key.
-
-ChangeSet
- 1.1130 03/08/01 04:24:02 stenn@pogo.udel.edu +2 -0
- Default to -4 if isc_net_probeipv6() fails.
-
- ntpq/ntpq.c
- 1.37 03/08/01 04:23:23 stenn@pogo.udel.edu +9 -1
- Default to -4 if isc_net_probeipv6() fails.
-
- ntpdc/ntpdc.c
- 1.28 03/08/01 04:23:23 stenn@pogo.udel.edu +9 -1
- Default to -4 if isc_net_probeipv6() fails.
-
-ChangeSet
- 1.1129 03/08/01 01:54:04 stenn@whimsy.udel.edu +3 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_jupiter.c
- 1.13 03/08/01 01:54:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/logging_ok
- 1.34 03/08/01 01:54:00 stenn@whimsy.udel.edu +1 -0
- 'Auto converge'
-
- BitKeeper/etc/logging_ok
- 1.33 03/08/01 01:53:59 stenn@whimsy.udel.edu +0 -0
- Rename: BitKeeper/deleted/.del-logging_ok~bebb84d857254496 -> BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.26 03/08/01 01:53:59 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.32 03/08/01 01:53:58 stenn@whimsy.udel.edu +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.25 03/08/01 01:53:56 stenn@whimsy.udel.edu +0 -0
- auto-union
-
-ChangeSet
- 1.683.18.1 03/07/31 15:29:27 peda@sectra.se +2 -0
- Make the jupiter refclock aware of the year. I.e. don't trust the
- system clock to have the correct year.
-
- BitKeeper/etc/logging_ok
- 1.1.1.12 03/07/31 15:29:26 peda@sectra.se +1 -0
- Logging to logging@openlogging.org accepted
-
- ntpd/refclock_jupiter.c
- 1.8.1.3 03/07/31 15:28:09 peda@sectra.se +4 -4
- Get the correct year.
-
-ChangeSet
- 1.1128 03/07/30 22:47:39 stenn@whimsy.udel.edu +1 -0
- Merge pogo:/usa/mayer/ntp-dev-io into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_config.c
- 1.97 03/07/30 22:47:35 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.1111.2.7 03/07/30 22:31:25 mayer@tecotoo.myibg.com +1 -0
- Put back the SOCK_DGRAM hints and the "ntp" service into getaddrinfo.
- Remove the freeaddrinfo() when getaddrinfo fails.
-
- ntpd/ntp_config.c
- 1.95.1.2 03/07/30 22:30:54 mayer@tecotoo.myibg.com +2 -2
- Put back the SOCK_DGRAM hints and the "ntp" service into getaddrinfo.
- Remove the freeaddrinfo() when getaddrinfo fails.
-
-ChangeSet
- 1.1111.2.6 03/07/29 15:25:52 mayer@tecotoo.myibg.com +1 -0
- Minor updates
-
- ntpd/ntp_config.c
- 1.95.1.1 03/07/29 15:25:25 mayer@tecotoo.myibg.com +1 -3
- Minor updates
-
-ChangeSet
- 1.1111.3.1 03/07/29 15:10:37 mayer@tecotoo.myibg.com +1 -0
- 'Minor
-
- ntpd/ntp_config.c
- 1.94.1.1 03/07/29 15:09:22 mayer@tecotoo.myibg.com +3 -2
- 'Minor
-
-ChangeSet
- 1.1127 03/07/28 20:32:47 stenn@whimsy.udel.edu +2 -0
- Merge pogo:/usa/mayer/ntp-dev-io into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_io.c
- 1.85 03/07/28 20:32:43 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.96 03/07/28 20:32:43 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.1111.2.5 03/07/28 20:26:50 mayer@pogo.udel.edu +1 -0
- Update config to check for IP version
-
- ntpd/ntp_config.c
- 1.95 03/07/28 20:26:08 mayer@pogo.udel.edu +4 -2
- Update config to check for IP version
-
-ChangeSet
- 1.1111.2.4 03/07/28 20:11:37 mayer@pogo.udel.edu +1 -0
- Undo findinterface changes
-
- ntpd/ntp_io.c
- 1.83.1.1 03/07/28 20:09:49 mayer@pogo.udel.edu +0 -14
- Undo findinterface changes
-
-ChangeSet
- 1.1126 03/07/27 21:45:48 stenn@whimsy.udel.edu +1 -0
- lint
-
- sntp/unix.c
- 1.3 03/07/27 21:45:38 stenn@whimsy.udel.edu +3 -4
- lint
-
-ChangeSet
- 1.1125 03/07/27 21:34:08 stenn@whimsy.udel.edu +2 -0
- lint
-
- sntp/header.h
- 1.3 03/07/27 21:33:57 stenn@whimsy.udel.edu +1 -1
- typo fix
-
- ntpd/ntp_proto.c
- 1.158 03/07/27 21:33:39 stenn@whimsy.udel.edu +1 -1
- peer_unfit() is static.
-
-ChangeSet
- 1.1124 03/07/27 21:07:08 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_shm.c
- 1.14 03/07/27 21:07:04 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.47 03/07/27 21:04:14 stenn@whimsy.udel.edu +1 -0
- lint
-
- ntpd/refclock_shm.c
- 1.10.1.2 03/07/27 21:04:04 stenn@whimsy.udel.edu +2 -2
- lint
-
-ChangeSet
- 1.1123 03/07/27 19:58:21 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_neoclock4x.c
- 1.9 03/07/27 19:58:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.46 03/07/27 19:56:58 stenn@whimsy.udel.edu +1 -0
- neol_atoi_len() is static. Clean up some fn definitions.
-
- ntpd/refclock_neoclock4x.c
- 1.1.1.6 03/07/27 19:56:46 stenn@whimsy.udel.edu +26 -21
- neol_atoi_len() is static. Clean up some fn definitions.
-
-ChangeSet
- 1.1122 03/07/27 18:16:44 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_neoclock4x.c
- 1.8 03/07/27 18:16:41 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.45 03/07/27 18:14:41 stenn@whimsy.udel.edu +1 -0
- Clean up some type mismatches.
-
- ntpd/refclock_neoclock4x.c
- 1.1.1.5 03/07/27 18:14:32 stenn@whimsy.udel.edu +2 -2
- Clean up some type mismatches.
-
-ChangeSet
- 1.1121 03/07/27 17:52:35 stenn@whimsy.udel.edu +1 -0
- chu_newchan() is static...
-
- ntpd/refclock_chu.c
- 1.34 03/07/27 17:52:24 stenn@whimsy.udel.edu +1 -1
- chu_newchan() is static...
-
-ChangeSet
- 1.683.14.44 03/07/27 06:11:23 stenn@whimsy.udel.edu +1 -0
- syslog does %m, not printf.
-
- util/tickadj.c
- 1.6 03/07/27 06:11:11 stenn@whimsy.udel.edu +2 -2
- syslog does %m, not printf.
-
-ChangeSet
- 1.1119 03/07/27 02:44:00 stenn@whimsy.udel.edu +6 -0
- Bug 162: Quiet some warnings. From Rainer Orth, with some wiggles by Harlan.
-
- ntpd/ntp_loopfilter.c
- 1.84 03/07/27 02:42:39 stenn@whimsy.udel.edu +1 -1
- Bug 162: Quiet some warnings. From Rainer Orth, with some wiggles by Harlan.
-
- ntpd/ntp_io.c
- 1.84 03/07/27 02:42:38 stenn@whimsy.udel.edu +0 -4
- Bug 162: Quiet some warnings. From Rainer Orth, with some wiggles by Harlan.
-
- ntpd/ntp_config.c
- 1.93.1.1 03/07/27 02:42:38 stenn@whimsy.udel.edu +2 -0
- Bug 162: Quiet some warnings. From Rainer Orth, with some wiggles by Harlan.
-
- libntp/snprintf.c
- 1.8 03/07/27 02:42:38 stenn@whimsy.udel.edu +6 -5
- Bug 162: Quiet some warnings. From Rainer Orth, with some wiggles by Harlan.
-
- libisc/isc_strerror.c
- 1.3 03/07/27 02:42:38 stenn@whimsy.udel.edu +2 -0
- Bug 162: Quiet some warnings. From Rainer Orth, with some wiggles by Harlan.
-
- include/l_stdlib.h
- 1.12 03/07/27 02:42:38 stenn@whimsy.udel.edu +7 -0
- Bug 162: Quiet some warnings. From Rainer Orth, with some wiggles by Harlan.
-
-ChangeSet
- 1.1114.1.1 03/07/27 00:58:17 stenn@whimsy.udel.edu +3 -0
- Bug 162: Only link programs with libreadline that use it (ntpdc and ntpq), From Rainer Orth.
-
- ntpq/Makefile.am
- 1.10 03/07/27 00:57:31 stenn@whimsy.udel.edu +1 -1
- Bug 162: Only link programs with libreadline that use it (ntpdc and ntpq), From Rainer Orth.
-
- ntpdc/Makefile.am
- 1.9 03/07/27 00:57:31 stenn@whimsy.udel.edu +1 -1
- Bug 162: Only link programs with libreadline that use it (ntpdc and ntpq), From Rainer Orth.
-
- configure.in
- 1.324 03/07/27 00:57:30 stenn@whimsy.udel.edu +6 -1
- Bug 162: Only link programs with libreadline that use it (ntpdc and ntpq), From Rainer Orth.
-
-ChangeSet
- 1.1117 03/07/26 15:38:23 stenn@whimsy.udel.edu +62 -0
- Bug 168: Rainer Orth: Fix world-writable files
-
- libisc/strerror.c
- 1.2 03/07/26 15:36:25 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libisc/net.c
- 1.3 03/07/26 15:36:24 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libisc/msgcat.c
- 1.3 03/07/26 15:36:24 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libisc/mem.c
- 1.2 03/07/26 15:36:24 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libisc/lib.c
- 1.2 03/07/26 15:36:23 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libisc/isc_strerror.c
- 1.2 03/07/26 15:36:23 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libisc/interfaceiter.c
- 1.3 03/07/26 15:36:23 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libisc/inet_ntop.c
- 1.4 03/07/26 15:36:22 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libisc/ifiter_sysctl.c
- 1.6 03/07/26 15:36:22 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libisc/ifiter_ioctl.c
- 1.11 03/07/26 15:36:22 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libisc/error.c
- 1.2 03/07/26 15:36:22 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/ntp-keygen/ntpkeygen.dsp
- 1.2 03/07/26 15:36:21 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/libisc/win32os.c
- 1.2 03/07/26 15:36:21 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libisc/assertions.c
- 1.2 03/07/26 15:36:21 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/libisc/once.c
- 1.2 03/07/26 15:36:20 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/libisc/net.c
- 1.3 03/07/26 15:36:20 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/libisc/isc_strerror.c
- 1.3 03/07/26 15:36:20 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/libisc/interfaceiter.c
- 1.3 03/07/26 15:36:20 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/include/isc/win32os.h
- 1.2 03/07/26 15:36:19 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/include/isc/strerror.h
- 1.2 03/07/26 15:36:19 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/include/isc/platform.h
- 1.2 03/07/26 15:36:19 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/include/isc/once.h
- 1.2 03/07/26 15:36:18 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/include/isc/offset.h
- 1.2 03/07/26 15:36:18 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/include/isc/net.h
- 1.2 03/07/26 15:36:18 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/include/isc/mutex.h
- 1.2 03/07/26 15:36:18 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/libntp/syslog.c
- 1.2 03/07/26 15:36:17 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/include/isc/ipv6.h
- 1.2 03/07/26 15:36:17 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/include/isc/int.h
- 1.2 03/07/26 15:36:17 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/libntp/strerror.c
- 1.2 03/07/26 15:36:16 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/libntp/randfile.c
- 1.2 03/07/26 15:36:16 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/libntp/log.c
- 1.2 03/07/26 15:36:16 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- ports/winnt/libntp/interfaceiter.c
- 1.2 03/07/26 15:36:16 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- libntp/net.c.bak
- 1.2 03/07/26 15:36:15 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/util.h
- 1.2 03/07/26 15:36:15 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/string.h
- 1.2 03/07/26 15:36:15 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/types.h
- 1.2 03/07/26 15:36:14 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/strerror.h
- 1.2 03/07/26 15:36:14 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/sockaddr.h
- 1.2 03/07/26 15:36:14 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/result.h
- 1.2 03/07/26 15:36:14 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/print.h
- 1.2 03/07/26 15:36:13 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/platform.h
- 1.2 03/07/26 15:36:13 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/once.h
- 1.2 03/07/26 15:36:13 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/offset.h
- 1.2 03/07/26 15:36:13 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/netaddr.h
- 1.3 03/07/26 15:36:12 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/net.h
- 1.4 03/07/26 15:36:12 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/mutex.h
- 1.2 03/07/26 15:36:12 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/msgs.h
- 1.2 03/07/26 15:36:11 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/msgcat.h
- 1.2 03/07/26 15:36:11 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/mem.h
- 1.2 03/07/26 15:36:11 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/magic.h
- 1.2 03/07/26 15:36:11 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/list.h
- 1.2 03/07/26 15:36:10 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/lib.h
- 1.2 03/07/26 15:36:10 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/lang.h
- 1.2 03/07/26 15:36:10 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/ipv6.h
- 1.3 03/07/26 15:36:09 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/interfaceiter.h
- 1.2 03/07/26 15:36:09 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/int.h
- 1.2 03/07/26 15:36:09 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/formatcheck.h
- 1.2 03/07/26 15:36:09 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/error.h
- 1.2 03/07/26 15:36:08 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/boolean.h
- 1.2 03/07/26 15:36:08 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/assertions.h
- 1.2 03/07/26 15:36:08 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/isc/app.h
- 1.2 03/07/26 15:36:07 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
- include/interfaceiter.h
- 1.2 03/07/26 15:36:07 stenn@whimsy.udel.edu +0 -0
- Change mode to -rw-rw-r--
-
-ChangeSet
- 1.1116 03/07/26 03:47:40 stenn@whimsy.udel.edu +1 -0
- Add ss_family support
-
- sntp/configure.ac
- 1.6 03/07/26 03:47:29 stenn@whimsy.udel.edu +39 -0
- Add ss_family support
-
-ChangeSet
- 1.1115 03/07/26 02:36:07 stenn@whimsy.udel.edu +2 -0
- Clean up some Makefile.am fun.
-
- parseutil/Makefile.am
- 1.5 03/07/26 02:34:03 stenn@whimsy.udel.edu +4 -2
- Better handling of the dcfd program.
-
- Makefile.am
- 1.42 03/07/26 02:31:15 stenn@whimsy.udel.edu +1 -1
- Add sntp as a DIST_SUBDIRS
-
-ChangeSet
- 1.1114 03/07/26 00:18:17 stenn@whimsy.udel.edu +1 -0
- ntp_crypto.c:
- In crypto_update() in the loop when an expired certificate has been freed,
- its cp->link is still used in the next itteration of the loop. This is
- bad. :-) FreeBSD-current does not like that at all. This patch is my
- attempt to fix the problem.
-
- ntpd/ntp_crypto.c
- 1.88 03/07/26 00:17:24 stenn@whimsy.udel.edu +5 -4
- In crypto_update() in the loop when an expired certificate has been freed,
- its cp->link is still used in the next itteration of the loop. This is
- bad. :-) FreeBSD-current does not like that at all. This patch is my
- attempt to fix the problem.
-
-ChangeSet
- 1.1111.1.8 03/07/25 04:45:53 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.323 03/07/25 04:45:49 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.43 03/07/25 04:44:37 stenn@whimsy.udel.edu +1 -0
- [Bug 161] Lose -pipe for gcc
-
- configure.in
- 1.219.3.50 03/07/25 04:44:13 stenn@whimsy.udel.edu +0 -15
- [Bug 161] Lose -pipe for gcc
-
-ChangeSet
- 1.1111.2.3 03/07/24 19:59:58 mayer@pogo.udel.edu +1 -0
- Call to getaddrinfo in getnetnum was wrong
-
- ntpd/ntp_config.c
- 1.94 03/07/24 19:59:06 mayer@pogo.udel.edu +5 -3
- Call to getaddrinfo in getnetnum was wrong
-
-ChangeSet
- 1.1111.1.7 03/07/24 04:24:29 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.322 03/07/24 04:24:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.42 03/07/24 04:11:04 stenn@whimsy.udel.edu +1 -0
- While I don't know the original reason for using -std1 for OSF, -std1 is now a lose on 4.0d with a c99 compiler, and AC_PROG_CC_STDC can check for this.
-
- configure.in
- 1.219.3.49 03/07/24 04:10:52 stenn@whimsy.udel.edu +0 -7
- While I don't know the original reason for using -std1 for OSF, -std1 is now a lose on 4.0d with a c99 compiler, and AC_PROG_CC_STDC can check for this.
-
-ChangeSet
- 1.1111.1.5 03/07/22 18:53:07 stenn@whimsy.udel.edu +1 -0
- Dave Mills: Fix an old bug, according to spec.
-
- ntpd/ntp_proto.c
- 1.157 03/07/22 18:52:58 stenn@whimsy.udel.edu +4 -5
- Dave Mills: Fix an old bug, according to spec.
-
-ChangeSet
- 1.1111.2.2 03/07/22 17:55:31 mayer@pogo.udel.edu +1 -0
- Fix missing conditional code around check for socket error
-
- ntpd/ntp_io.c
- 1.83 03/07/22 17:54:27 mayer@pogo.udel.edu +8 -0
- Fix missing conditional code around check for socket error
-
-ChangeSet
- 1.1111.2.1 03/07/22 08:44:54 mayer@tecotoo.myibg.com +1 -0
- Back out the last change but test the local addresses first.
-
- ntpd/ntp_io.c
- 1.82 03/07/22 08:44:26 mayer@tecotoo.myibg.com +46 -3
- Back out the last change but test the local addresses first.
-
-ChangeSet
- 1.1111.1.4 03/07/22 00:26:15 stenn@whimsy.udel.edu +1 -0
- Typo fixes from Martin Burnicki
-
- html/drivers/driver8.html
- 1.12 03/07/22 00:26:00 stenn@whimsy.udel.edu +8 -8
- Typo fixes from Martin Burnicki
-
-ChangeSet
- 1.1111.1.3 03/07/21 06:53:27 stenn@whimsy.udel.edu +1 -0
- Merge
-
- configure.in
- 1.321 03/07/21 06:53:08 stenn@whimsy.udel.edu +1 -2
- ntp-dev uses its own version numbers.
-
-ChangeSet
- 1.683.17.1 03/07/21 06:47:46 stenn@whimsy.udel.edu +1 -0
- 4.1.2a
-
- configure.in
- 1.219.3.48 03/07/21 06:47:34 stenn@whimsy.udel.edu +1 -1
- 4.1.2a
-
-ChangeSet
- 1.1111.1.2 03/07/21 06:33:29 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable-157
- into whimsy.udel.edu:/backroom/ntp-dev-157
-
- ntpd/refclock_jupiter.c
- 1.12 03/07/21 06:33:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.40 03/07/21 06:30:16 stenn@whimsy.udel.edu +1 -0
- assert edge typo fix from Peter Ekberg
-
- ntpd/refclock_jupiter.c
- 1.8.1.2 03/07/21 06:30:04 stenn@whimsy.udel.edu +1 -1
- assert edge typo fix from Peter Ekberg
-
-ChangeSet
- 1.1111.1.1 03/07/20 21:17:19 stenn@whimsy.udel.edu +1 -0
- Autodetect refclock_shm prerequisites. Fix the defaults for the non-parse refclocks.
-
- configure.in
- 1.320 03/07/20 21:17:08 stenn@whimsy.udel.edu +32 -16
- Autodetect refclock_shm prerequisites. Fix the defaults for the non-parse refclocks.
-
-ChangeSet
- 1.1112 03/07/18 13:38:09 claas@nixfix.(none) +1 -0
- driver44.html:
- Update the URL for the NeoClock4X website
-
- html/drivers/driver44.html
- 1.9 03/07/18 13:36:47 claas@nixfix.(none) +1 -1
- Update the URL for the NeoClock4X website
-
-ChangeSet
- 1.1111 03/07/17 06:31:45 stenn@whimsy.udel.edu +2 -0
- Merge
-
- configure.in
- 1.319 03/07/17 06:31:28 stenn@whimsy.udel.edu +0 -1
- ntp-dev uses ntp-dev version numbers.
-
- NEWS
- 1.44 03/07/17 06:30:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.39 03/07/17 05:57:46 stenn@whimsy.udel.edu +2 -0
- ntp-4.1.2
-
- configure.in
- 1.219.3.47 03/07/17 05:56:36 stenn@whimsy.udel.edu +1 -1
- ntp-4.1.2
-
- NEWS
- 1.31.1.11 03/07/17 05:56:04 stenn@whimsy.udel.edu +16 -0
- Update the NEWS file
-
-ChangeSet
- 1.1099.2.3 03/07/15 23:16:27 mayer@tecotoo.myibg.com +1 -0
- Add Danny Mayer to the contributor's list and fix Mark Andrew's address.
-
- html/copyright.html
- 1.27 03/07/15 23:15:55 mayer@tecotoo.myibg.com +4 -3
- Add Danny Mayer to the contributor's list and fix Mark Andrew's address.
-
-ChangeSet
- 1.1109 03/07/15 03:52:14 stenn@whimsy.udel.edu +2 -0
- Avoid gcc warning, "cast discards qualifiers from pointer target type". (Frederick Bruckman)
-
- ntpq/ntpq.c
- 1.36 03/07/15 03:52:01 stenn@whimsy.udel.edu +3 -3
- Avoid gcc warning, "cast discards qualifiers from pointer target type". (Frederick Bruckman)
-
- ntpdc/ntpdc.c
- 1.27 03/07/15 03:52:01 stenn@whimsy.udel.edu +3 -3
- Avoid gcc warning, "cast discards qualifiers from pointer target type". (Frederick Bruckman)
-
-ChangeSet
- 1.1106.1.2 03/07/14 05:53:34 stenn@whimsy.udel.edu +3 -0
- Get approval from Dave Mills before changing these files.
-
- libntp/systime.c
- 1.27 03/07/14 05:53:20 stenn@whimsy.udel.edu +3 -0
- Get approval from Dave Mills before changing these files.
-
- ntpd/ntp_proto.c
- 1.156 03/07/14 05:53:19 stenn@whimsy.udel.edu +3 -0
- Get approval from Dave Mills before changing these files.
-
- ntpd/ntp_loopfilter.c
- 1.83 03/07/14 05:53:19 stenn@whimsy.udel.edu +2 -0
- Get approval from Dave Mills before changing these files.
-
-ChangeSet
- 1.1099.2.2 03/07/13 08:35:51 mayer@tecotoo.myibg.com +1 -0
- The order of the arguments were wrong.
-
- ntpd/ntp_config.c
- 1.93 03/07/13 08:34:57 mayer@tecotoo.myibg.com +2 -3
- The order of the arguments were wrong.
-
-ChangeSet
- 1.1107 03/07/13 03:27:25 stenn@pogo.udel.edu +3 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-stable-150
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev-150
-
- ntpd/refclock_arc.c
- 1.14 03/07/13 03:27:10 stenn@pogo.udel.edu +0 -0
- SCCS merged
-
- BitKeeper/etc/logging_ok
- 1.31 03/07/13 03:17:51 stenn@pogo.udel.edu +0 -0
- Rename: BitKeeper/deleted/.del-logging_ok~bebb84d857254496 -> BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.24 03/07/13 03:17:51 stenn@pogo.udel.edu +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.30 03/07/13 03:17:47 stenn@pogo.udel.edu +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.23 03/07/13 03:17:33 stenn@pogo.udel.edu +1 -1
- auto-union
-
-ChangeSet
- 1.1106 03/07/11 22:31:00 stenn@whimsy.udel.edu +1 -0
- Cleanup from Dave Mills.
-
- util/ntptime.c
- 1.17 03/07/11 22:30:51 stenn@whimsy.udel.edu +1 -5
- Cleanup from Dave Mills.
-
-ChangeSet
- 1.1099.2.1 03/07/11 14:27:56 mayer@tecotoo.myibg.com +1 -0
- Fix Multicast to not set the flag until used.
- Remove the unnecessary socket-querying code in findinterface and just
- look up the interface.
-
- ntpd/ntp_io.c
- 1.81 03/07/11 14:27:19 mayer@tecotoo.myibg.com +3 -44
- Fix Multicast to not set the flag until used.
- Remove the unnecessary socket-querying code in findinterface and just
- look up the interface.
-
-ChangeSet
- 1.683.14.38 03/07/11 11:01:59 fredb@rapture.immanent.net +2 -0
- Fix a warning compiling "refclock_arc.c".
-
- BitKeeper/etc/logging_ok
- 1.1.1.11 03/07/11 11:01:59 fredb@rapture.immanent.net +1 -0
- Logging to logging@openlogging.org accepted
-
- ntpd/refclock_arc.c
- 1.8.1.3 03/07/11 11:01:52 fredb@rapture.immanent.net +2 -2
- Fix a warning, "passing arg 1 of `get_systime' from incompatible pointer type",
- by gcc-2.95.3.
-
-ChangeSet
- 1.1105 03/07/10 06:10:50 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable-ca
- into whimsy.udel.edu:/backroom/ntp-dev-ca
-
- ntpd/refclock_neoclock4x.c
- 1.7 03/07/10 06:10:46 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.16.1 03/07/10 10:03:01 claas@nixfix.(none) +1 -0
- refclock_neoclock4x.c:
- fix status reporting, update driver to v1.13
-
- ntpd/refclock_neoclock4x.c
- 1.1.1.4 03/07/10 09:58:32 claas@nixfix.(none) +10 -1
- fix status reporting, update driver to v1.13
-
-ChangeSet
- 1.1104 03/07/08 21:47:12 fredb@tautology.immanent.net +3 -0
- Corect a couple more misspelings of "occurred".
-
- html/rdebug.html
- 1.14 03/07/08 21:47:08 fredb@tautology.immanent.net +2 -2
- occured -> occurred
-
- html/drivers/driver36.html
- 1.20 03/07/08 21:47:08 fredb@tautology.immanent.net +2 -2
- occured -> occurred
-
- html/debug.html
- 1.21 03/07/08 21:47:08 fredb@tautology.immanent.net +3 -3
- occured -> occurred
-
-ChangeSet
- 1.1103 03/07/08 16:00:17 fredb@tautology.immanent.net +18 -0
- Try again to merge spelling fixes from ntp-stable.
-
- parseutil/dcfd.c
- 1.13 03/07/08 16:00:15 fredb@tautology.immanent.net +0 -0
- Try again to merge spelling fixes from ntp-stable.
-
- ntpd/refclock_wwv.c
- 1.44 03/07/08 16:00:15 fredb@tautology.immanent.net +1 -2
- Try again to merge spelling fixes from ntp-stable.
-
- ntpd/refclock_parse.c
- 1.21 03/07/08 16:00:15 fredb@tautology.immanent.net +0 -0
- Try again to merge spelling fixes from ntp-stable.
-
- ntpd/refclock_oncore.c
- 1.46 03/07/08 16:00:15 fredb@tautology.immanent.net +0 -0
- Try again to merge spelling fixes from ntp-stable.
-
- ntpd/refclock_msfees.c
- 1.10 03/07/08 16:00:15 fredb@tautology.immanent.net +0 -0
- Try again to merge spelling fixes from ntp-stable.
-
- ntpd/refclock_fg.c
- 1.9 03/07/08 16:00:15 fredb@tautology.immanent.net +0 -0
- Try again to merge spelling fixes from ntp-stable.
-
- ntpd/refclock_chu.c
- 1.33 03/07/08 16:00:15 fredb@tautology.immanent.net +0 -4
- Try again to merge spelling fixes from ntp-stable.
-
- ntpd/ntp_filegen.c
- 1.8 03/07/08 16:00:15 fredb@tautology.immanent.net +0 -0
- Try again to merge spelling fixes from ntp-stable.
-
- libntp/authkeys.c
- 1.11 03/07/08 16:00:15 fredb@tautology.immanent.net +0 -0
- Try again to merge spelling fixes from ntp-stable.
-
- html/patches.html
- 1.15 03/07/08 16:00:14 fredb@tautology.immanent.net +2 -3
- Try again to merge spelling fixes from ntp-stable.
-
- html/parsenew.html
- 1.8 03/07/08 16:00:14 fredb@tautology.immanent.net +1 -1
- Try again to merge spelling fixes from ntp-stable.
-
- html/ntpq.html
- 1.22 03/07/08 16:00:14 fredb@tautology.immanent.net +2 -5
- Try again to merge spelling fixes from ntp-stable.
-
- html/ntpdc.html
- 1.18 03/07/08 16:00:14 fredb@tautology.immanent.net +3 -7
- Try again to merge spelling fixes from ntp-stable.
-
- html/ntpdate.html
- 1.16 03/07/08 16:00:14 fredb@tautology.immanent.net +0 -1
- Try again to merge spelling fixes from ntp-stable.
-
- html/ntpd.html
- 1.29 03/07/08 16:00:14 fredb@tautology.immanent.net +0 -1
- Try again to merge spelling fixes from ntp-stable.
-
- html/drivers/driver6.html
- 1.16 03/07/08 16:00:14 fredb@tautology.immanent.net +0 -3
- Try again to merge spelling fixes from ntp-stable.
-
- html/patches.html
- 1.4.1.3 03/07/08 15:47:04 fredb@tautology.immanent.net +0 -0
- Merge rename: html/patches.htm -> html/patches.html
-
- html/parsenew.html
- 1.1.1.3 03/07/08 15:47:04 fredb@tautology.immanent.net +0 -0
- Merge rename: html/parsenew.htm -> html/parsenew.html
-
- html/ntpq.html
- 1.6.1.3 03/07/08 15:47:04 fredb@tautology.immanent.net +0 -0
- Merge rename: html/ntpq.htm -> html/ntpq.html
-
- html/ntpdc.html
- 1.5.1.3 03/07/08 15:47:04 fredb@tautology.immanent.net +0 -0
- Merge rename: html/ntpdc.htm -> html/ntpdc.html
-
- html/ntpdate.html
- 1.5.1.3 03/07/08 15:47:04 fredb@tautology.immanent.net +0 -0
- Merge rename: html/ntpdate.htm -> html/ntpdate.html
-
- html/ntpd.html
- 1.13.1.3 03/07/08 15:47:03 fredb@tautology.immanent.net +0 -0
- Merge rename: html/ntpd.htm -> html/ntpd.html
-
- html/drivers/driver6.html
- 1.4.1.3 03/07/08 15:47:03 fredb@tautology.immanent.net +0 -0
- Merge rename: html/driver6.htm -> html/drivers/driver6.html
-
- BitKeeper/etc/logging_ok
- 1.29 03/07/08 15:46:46 fredb@tautology.immanent.net +0 -0
- Rename: BitKeeper/deleted/.del-logging_ok~bebb84d857254496 -> BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.22 03/07/08 15:46:46 fredb@tautology.immanent.net +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.28 03/07/08 15:46:45 fredb@tautology.immanent.net +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.21 03/07/08 15:46:44 fredb@tautology.immanent.net +1 -1
- auto-union
-
-ChangeSet
- 1.1099.1.2 03/07/08 03:13:53 stenn@whimsy.udel.edu +1 -0
- Typo, reported by Michael Rios
-
- html/drivers/driver1.html
- 1.13 03/07/08 03:13:21 stenn@whimsy.udel.edu +2 -2
- Typo, reported by Michael Rios
-
-ChangeSet
- 1.683.14.36 03/07/06 21:31:24 fredb@tautology.immanent.net +8 -0
- Correct usage, spelling of "lose", "loses", and "losing" where appropriate.
-
- parseutil/dcfd.c
- 1.11.1.1 03/07/06 21:31:23 fredb@tautology.immanent.net +1 -1
- Let's see now... "loose" is the opposite of "tight", while "lose"
- is something you do, at say, poker, or a spelling bee.
-
- ntpd/refclock_parse.c
- 1.18.2.1 03/07/06 21:31:23 fredb@tautology.immanent.net +2 -2
- "lose", "loses", losing": verbs. "loose" is a noun.
-
- ntpd/refclock_oncore.c
- 1.38.1.2 03/07/06 21:31:22 fredb@tautology.immanent.net +3 -3
- Let's see now... "loose" is the opposite of "tight", while "lose"
- is something you do, at say, poker, or a spelling bee.
-
- ntpd/refclock_msfees.c
- 1.8.1.1 03/07/06 21:31:22 fredb@tautology.immanent.net +1 -1
- Correct usage: "lose" vs. "loose".
-
- ntpd/ntp_filegen.c
- 1.6.1.1 03/07/06 21:31:22 fredb@tautology.immanent.net +1 -1
- "losing", not "loosing".
-
- libntp/authkeys.c
- 1.6.1.2 03/07/06 21:31:22 fredb@tautology.immanent.net +1 -1
- "loose" and "lose" are two different words, plus make this parse.
-
- html/parsenew.htm
- 1.1.1.2 03/07/06 21:31:22 fredb@tautology.immanent.net +2 -2
- "loosing" isn't a word. Surely the author meant to say "losing".
-
- ChangeLog-4.1.0
- 1.590 03/07/06 21:31:22 fredb@tautology.immanent.net +1 -1
- "loose" and "lose" are two different words!
-
-ChangeSet
- 1.1092.1.2 03/07/06 21:53:39 mayer@tecotoo.myibg.com +1 -0
- Miscellaneous changes for Winnt support
-
- html/hints/winnt.html
- 1.13 03/07/06 21:53:02 mayer@tecotoo.myibg.com +59 -17
- Miscellaneous changes for Winnt support
-
-ChangeSet
- 1.683.14.35 03/07/06 18:22:37 fredb@tautology.immanent.net +11 -0
- Fix spelling, typos, usage. Mined from NetBSD CVS.
-
- BitKeeper/etc/logging_ok
- 1.1.1.10 03/07/06 18:22:37 fredb@tautology.immanent.net +1 -0
- Logging to logging@openlogging.org accepted
-
- util/README
- 1.4 03/07/06 18:22:23 fredb@tautology.immanent.net +2 -2
- Fix spelling, typos. From Thomas Klausner <wiz@netbsd.org>.
-
- ntpd/refclock_wwv.c
- 1.26.1.1 03/07/06 18:22:23 fredb@tautology.immanent.net +2 -2
- Fix spelling, typos. From Thomas Klausner <wiz@netbsd.org>.
-
- ntpd/refclock_fg.c
- 1.7.1.1 03/07/06 18:22:23 fredb@tautology.immanent.net +1 -1
- Fix spelling, typos. From Thomas Klausner <wiz@netbsd.org>.
-
- ntpd/refclock_chu.c
- 1.21.1.2 03/07/06 18:22:23 fredb@tautology.immanent.net +4 -4
- Fix spelling, typos. From Thomas Klausner <wiz@netbsd.org>.
-
- html/patches.htm
- 1.4.1.2 03/07/06 18:22:23 fredb@tautology.immanent.net +1 -1
- Fix spelling, typos. From Thomas Klausner <wiz@netbsd.org>.
-
- html/ntpq.htm
- 1.6.1.2 03/07/06 18:22:22 fredb@tautology.immanent.net +3 -3
- Fix spelling, typos. Mined from NetBSD CVS. Originally
- submitted by Adrian Mrva.
-
- html/ntpdc.htm
- 1.5.1.2 03/07/06 18:22:22 fredb@tautology.immanent.net +4 -4
- Fix spelling, typos. Mined from NetBSD CVS. Originally
- submitted by Adrian Mrva.
-
- html/ntpdate.htm
- 1.5.1.2 03/07/06 18:22:22 fredb@tautology.immanent.net +1 -1
- Fix spelling, typos. Mined from NetBSD CVS. Originally
- submitted by Adrian Mrva.
-
- html/ntpd.htm
- 1.13.1.2 03/07/06 18:22:22 fredb@tautology.immanent.net +1 -1
- Fix spelling, typos. From Thomas Klausner <wiz@netbsd.org>.
-
- html/driver6.htm
- 1.4.1.2 03/07/06 18:22:22 fredb@tautology.immanent.net +3 -3
- Fix spelling, typos. From Thomas Klausner <wiz@netbsd.org>.
-
-ChangeSet
- 1.1101 03/07/05 05:33:14 fredb@tautology.immanent.net +1 -0
- Make this build with pre-C99 compilers, too (which is, most of them!).
-
- ntpd/ntpd.c
- 1.52 03/07/05 05:33:12 fredb@tautology.immanent.net +11 -9
- Define variables only at the beginning of a block.
-
-ChangeSet
- 1.1100 03/07/04 17:48:26 fredb@tautology.immanent.net +2 -0
- For BSD's, use setrlimit() to limit the stacksize to something considerably
- smaller than the default, similarly to what's done on AIX. This was culled
- from the NetBSD sources. Christos Zoulas gave credit for the patch, in the
- commit log, to Witold J. Wnuk (against ntp-4.0.99i, 2002-04-18). I've added
- a configure-time check for setrlimit(), and I had to up the pages from "8"
- to "20" to keep from dumping core in the resolver. (Apparently, the resolver
- now uses "a lot" of stack space to initialize, relatively speaking: the
- default is something like "512", but p_vm_ssize is only about "5" with the
- running program at any moment I look at it on both of the hosts I tested.)
-
- The bottom line is that it reduces the resident set size by about 2 Mb, from
- 4.5 Mb, or by about 44%.
-
- ntpd/ntpd.c
- 1.51 03/07/04 17:48:24 fredb@tautology.immanent.net +17 -0
- Limit the stack size with setrlimit(), on systems that have it, before locking
- down all those pages with mlockall().
-
- configure.in
- 1.318 03/07/04 17:48:24 fredb@tautology.immanent.net +1 -0
- Add check for setrlimit().
-
-ChangeSet
- 1.1099 03/07/04 05:06:17 stenn@whimsy.udel.edu +1 -0
- Replace debug notice - if we squeal when we lose kernel sync, we should also note when it is recovered.
-
- ntpd/ntp_loopfilter.c
- 1.82 03/07/04 05:06:05 stenn@whimsy.udel.edu +6 -0
- Replace debug notice - if we squeal when we lose kernel sync, we should also note when it is recovered.
-
-ChangeSet
- 1.1097 03/07/03 03:23:06 stenn@whimsy.udel.edu +3 -0
- Fixes from Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.81 03/07/03 03:21:16 stenn@whimsy.udel.edu +41 -48
- 1. At the longest poll intervals the FLL didn't kick in. While the typo
- was easilyl fixed, the simulator suggested some fine tuning. FLL is now
- disabled below the intercept and the averaging time constant reduced
- above the intercept.
- 2. If the initial time error is large and a frequency file is present
- and the frequency is not specified in the configuration file, the clock
- state machine started in the wrong state. The state machine eventually
- came on track, but the transitions were hideous. This might be the root
- cause of a couple of strange reports on the news wire.
-
- 3. was the change to include/ntp.h
-
- 4. Found a couple of misleading debug trace comments and fixed them.
-
- libntp/systime.c
- 1.26 03/07/03 03:19:03 stenn@whimsy.udel.edu +2 -2
- (This could be the typo fixes)
-
- include/ntp.h
- 1.90 03/07/03 02:22:00 stenn@whimsy.udel.edu +2 -2
- The maximum number of mitigated servers was only 10; that was
- determined in the bad old Fuzzball days and is needlessly small for
- current silicon. Upped it to 50. Put all twenty pool servers in the
- configuration file and wind up ntpd. Awesome.
-
-ChangeSet
- 1.1092.1.1 03/07/03 00:31:37 mayer@tecotoo.myibg.com +2 -0
- Remove references to IPv6 broadcast
-
- ntpd/ntp_io.c
- 1.80 03/07/03 00:30:58 mayer@tecotoo.myibg.com +0 -10
- Remove references to IPv6 broadcast
-
- libisc/ifiter_ioctl.c
- 1.10 03/07/03 00:30:53 mayer@tecotoo.myibg.com +16 -38
- Remove references to IPv6 broadcast
-
-ChangeSet
- 1.1095 03/06/30 07:14:08 stenn@whimsy.udel.edu +1 -0
- More cleanup to the refclock_jupiter clock.
-
- ntpd/refclock_jupiter.c
- 1.11 03/06/30 07:13:53 stenn@whimsy.udel.edu +1 -1
- More cleanup to the refclock_jupiter clock.
-
-ChangeSet
- 1.1094 03/06/30 06:51:05 stenn@whimsy.udel.edu +5 -0
- Merge
-
- ntpd/refclock_jupiter.c
- 1.10 03/06/30 06:47:16 stenn@whimsy.udel.edu +1 -2
- Try Real Hard to apply the original stable -> dev
- patches to the new stable -> new dev code.
-
- ports/winnt/ntpd/ntpd.dsp
- 1.17 03/06/30 05:52:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ports/winnt/include/config.h
- 1.23 03/06/30 05:52:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/refclock_conf.c
- 1.22 03/06/30 05:52:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.317 03/06/30 05:52:15 stenn@whimsy.udel.edu +4 -15
- Auto merged
-
-ChangeSet
- 1.1092 03/06/29 10:11:07 mayer@tecotoo.myibg.com +2 -0
- kill_asyncio was changed for Unix but not Windows
- Initialize .rnd file if it doesn't exist.
-
- ntpd/ntpd.c
- 1.50 03/06/29 10:10:26 mayer@tecotoo.myibg.com +6 -0
- Add initialization of .rnd file in case OpenSSL needs it.
-
- ntpd/ntp_io.c
- 1.79 03/06/29 10:10:18 mayer@tecotoo.myibg.com +1 -1
- Fix argument to match Unix version
-
-ChangeSet
- 1.1090.1.1 03/06/29 06:26:57 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_request.c
- 1.50 03/06/29 06:26:52 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.15.1 03/06/29 06:19:50 stenn@whimsy.udel.edu +1 -0
- [Bug 129] msyslog() more debug output.
-
- ntpd/ntp_request.c
- 1.23.3.4 03/06/29 06:19:38 stenn@whimsy.udel.edu +11 -3
- [Bug 129] msyslog() more debug output.
-
-ChangeSet
- 1.683.14.33 03/06/28 04:14:43 stenn@whimsy.udel.edu +5 -0
- [Bug 136] PPS fixes for refclock_jupiter, from peda@sectra.se (Peter Ekberg)
-
- ports/winnt/ntpd/ntpd.dsp
- 1.11.1.1 03/06/28 04:14:20 stenn@whimsy.udel.edu +0 -1
- [Bug 136] PPS fixes for refclock_jupiter, from peda@sectra.se (Peter Ekberg)
-
- ports/winnt/include/config.h
- 1.9.2.2 03/06/28 04:14:20 stenn@whimsy.udel.edu +1 -0
- [Bug 136] PPS fixes for refclock_jupiter, from peda@sectra.se (Peter Ekberg)
-
- ntpd/refclock_jupiter.c
- 1.8.1.1 03/06/28 04:14:20 stenn@whimsy.udel.edu +529 -650
- [Bug 136] PPS fixes for refclock_jupiter, from peda@sectra.se (Peter Ekberg)
-
- ntpd/refclock_conf.c
- 1.13.1.7 03/06/28 04:14:20 stenn@whimsy.udel.edu +1 -1
- [Bug 136] PPS fixes for refclock_jupiter, from peda@sectra.se (Peter Ekberg)
-
- configure.in
- 1.219.3.46 03/06/28 04:14:20 stenn@whimsy.udel.edu +6 -11
- [Bug 136] PPS fixes for refclock_jupiter, from peda@sectra.se (Peter Ekberg)
-
-ChangeSet
- 1.1062.1.4 03/06/27 22:19:49 mayer@tecotoo.myibg.com +7 -0
- Add Win32 support for ntp-keygen and upgrade OpenSSL to 0.9.7b.
-
- ports/winnt/ntp-keygen/ntpkeygen.dsp
- 1.1 03/06/27 22:19:13 mayer@tecotoo.myibg.com +150 -0
-
- ports/winnt/ntp-keygen/ntpkeygen.dsp
- 1.0 03/06/27 22:19:13 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/ntp-keygen/ntpkeygen.dsp
-
- ports/winnt/libntp/randfile.c
- 1.1 03/06/27 22:19:10 mayer@tecotoo.myibg.com +114 -0
-
- ports/winnt/libntp/randfile.c
- 1.0 03/06/27 22:19:10 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/libntp/randfile.c
-
- util/ntp-keygen.c
- 1.24 03/06/27 22:19:08 mayer@tecotoo.myibg.com +56 -7
- Fix code to support Win32.
-
- ports/winnt/ntpd/ntpd.dsp
- 1.16 03/06/27 22:19:05 mayer@tecotoo.myibg.com +4 -4
- Change OpenSSL to 0.9.7b
-
- ports/winnt/ntp.dsw
- 1.7 03/06/27 22:19:02 mayer@tecotoo.myibg.com +12 -0
- Add ntp-keygen to the list of projects to build
-
- ports/winnt/libntp/libntp.dsp
- 1.15 03/06/27 22:19:00 mayer@tecotoo.myibg.com +6 -2
- Add the randfile.c file.
-
- ports/winnt/include/config.h
- 1.22 03/06/27 22:18:56 mayer@tecotoo.myibg.com +1 -0
- WIn32 has snprintf so we need to declare it.
-
-ChangeSet
- 1.1090 03/06/27 06:17:58 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_request.c
- 1.49 03/06/27 06:17:54 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.32 03/06/27 05:44:00 stenn@whimsy.udel.edu +1 -0
- [Bug 129] Add more debug output.
-
- ntpd/ntp_request.c
- 1.23.3.3 03/06/27 05:43:50 stenn@whimsy.udel.edu +8 -0
- [Bug 129] Add more debug output.
-
-ChangeSet
- 1.683.14.31 03/06/27 04:49:29 stenn@whimsy.udel.edu +2 -0
- Have README.hackers and README.patches refer to each other.
-
- README.patches
- 1.2 03/06/27 04:49:19 stenn@whimsy.udel.edu +2 -0
- Have README.hackers and README.patches refer to each other.
-
- README.hackers
- 1.10 03/06/27 04:49:19 stenn@whimsy.udel.edu +2 -0
- Have README.hackers and README.patches refer to each other.
-
-ChangeSet
- 1.1088 03/06/27 04:40:18 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- Makefile.am
- 1.41 03/06/27 04:40:14 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.30 03/06/27 04:36:08 stenn@whimsy.udel.edu +3 -0
- Move the "patching" info from README.hackers to README.patches.
-
- README.hackers
- 1.9 03/06/27 04:35:39 stenn@whimsy.udel.edu +0 -38
- Move the "patching" info from README.hackers to README.patches.
-
- Makefile.am
- 1.12.1.22 03/06/27 04:35:37 stenn@whimsy.udel.edu +1 -0
- Move the "patching" info from README.hackers to README.patches.
-
- README.patches
- 1.1 03/06/27 04:34:04 stenn@whimsy.udel.edu +37 -0
-
- README.patches
- 1.0 03/06/27 04:34:04 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable-129/README.patches
-
-ChangeSet
- 1.1087 03/06/25 18:18:11 fredb@tautology.immanent.net +1 -0
- Simplify (re-enbaled -> enabled).
-
- ntpd/ntp_loopfilter.c
- 1.80 03/06/25 18:18:09 fredb@tautology.immanent.net +1 -1
- Simplify (re-enbaled -> enabled).
-
-ChangeSet
- 1.1086 03/06/25 17:33:22 fredb@tautology.immanent.net +1 -0
- Fix merge botch.
-
- libntp/a_md5encrypt.c
- 1.17 03/06/25 15:23:54 fredb@tautology.immanent.net +3 -1
- Fix merge botch.
-
-ChangeSet
- 1.1085 03/06/25 14:20:33 fredb@rapture.immanent.net +1 -0
- We log the initial state of the kernel discipline, and we log when we
- lose sync. So to restore parallelism, log when we reacquire sync, too.
-
- ntpd/ntp_loopfilter.c
- 1.79 03/06/25 14:20:30 fredb@rapture.immanent.net +6 -0
- We log the initial state of the kernel discipline, and we log when we
- lose sync. So to restore parallelism, log when we reacquire sync, too.
-
-ChangeSet
- 1.1084 03/06/25 08:40:15 fredb@rapture.immanent.net +3 -0
- Merge tautology:/s/bitkeeper/ntp-dev
- into rapture.immanent.net:/home/fredb/source/ntp-dev
-
- BitKeeper/etc/logging_ok
- 1.27 03/06/25 08:40:09 fredb@rapture.immanent.net +1 -0
- Logging to logging@openlogging.org accepted
-
- ntpq/ntpq.c
- 1.35 03/06/25 08:39:32 fredb@rapture.immanent.net +0 -1
- Auto merged
-
- ntpdc/ntpdc.c
- 1.26 03/06/25 08:39:32 fredb@rapture.immanent.net +0 -1
- Auto merged
-
-ChangeSet
- 1.1076.1.9 03/06/24 04:07:32 stenn@whimsy.udel.edu +2 -0
- [Bug 133] From fredb@tautology.immanent.net: Handle nonstandard EIA_NODATA return from getaddrinfo()
-
- ntpq/ntpq.c
- 1.33.1.1 03/06/24 04:07:09 stenn@whimsy.udel.edu +1 -1
- [Bug 133] From fredb@tautology.immanent.net: Handle nonstandard EIA_NODATA return from getaddrinfo()
-
- ntpdc/ntpdc.c
- 1.24.1.1 03/06/24 04:07:09 stenn@whimsy.udel.edu +1 -1
- [Bug 133] From fredb@tautology.immanent.net: Handle nonstandard EIA_NODATA return from getaddrinfo()
-
-ChangeSet
- 1.1076.1.8 03/06/24 03:42:09 stenn@whimsy.udel.edu +1 -0
- Merge
-
- ntpd/ntp_config.c
- 1.92 03/06/24 03:41:36 stenn@whimsy.udel.edu +0 -2
-
-ChangeSet
- 1.683.14.29 03/06/24 03:38:13 stenn@whimsy.udel.edu +1 -0
- Typo.
-
- ntpd/ntp_config.c
- 1.50.4.5 03/06/24 03:37:59 stenn@whimsy.udel.edu +2 -2
- Typo.
-
-ChangeSet
- 1.1076.1.7 03/06/24 03:35:02 stenn@whimsy.udel.edu +1 -0
- Merge
-
- ntpd/ntp_config.c
- 1.91 03/06/24 03:34:33 stenn@whimsy.udel.edu +2 -3
- ntp-dev uses getaddrinfo()...
-
-ChangeSet
- 1.683.14.28 03/06/24 03:30:08 stenn@whimsy.udel.edu +1 -0
- [Bug 129] Clean up a diagnostic message.
-
- ntpd/ntp_config.c
- 1.50.4.4 03/06/24 03:29:58 stenn@whimsy.udel.edu +4 -1
- [Bug 129] Clean up a diagnostic message.
-
-ChangeSet
- 1.1076.1.6 03/06/23 04:08:37 stenn@whimsy.udel.edu +1 -0
- [Bug 134] Log when we sync to a new source.
-
- ntpd/ntp_proto.c
- 1.155 03/06/23 04:08:23 stenn@whimsy.udel.edu +27 -15
- [Bug 134] Log when we sync to a new source.
-
-ChangeSet
- 1.1076.1.5 03/06/22 05:52:57 stenn@whimsy.udel.edu +4 -0
- Merge
-
- BitKeeper/deleted/.del-ntp-genkeys.c~5de683d0
- 1.77 03/06/22 05:52:38 stenn@whimsy.udel.edu +0 -3
- Old file - we don't care.
-
- ntpd/ntp_io.c
- 1.78 03/06/22 05:26:59 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.90 03/06/22 05:26:59 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntpd.h
- 1.57 03/06/22 05:26:58 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-ntp-genkeys.c~5de683d0
- 1.56.1.6 03/06/22 05:26:58 stenn@whimsy.udel.edu +0 -0
- Merge rename: util/ntp-genkeys.c -> BitKeeper/deleted/.del-ntp-genkeys.c~5de683d0
-
-ChangeSet
- 1.683.14.27 03/06/22 05:13:57 stenn@whimsy.udel.edu +4 -0
- [Bug 47] kill_asyncio() now takes 1 parameter - the lowest fd to close.
-
- util/ntp-genkeys.c
- 1.56.1.5 03/06/22 05:13:40 stenn@whimsy.udel.edu +3 -1
- [Bug 47] kill_asyncio() now takes 1 parameter - the lowest fd to close.
-
- ntpd/ntp_io.c
- 1.20.3.4 03/06/22 05:13:40 stenn@whimsy.udel.edu +4 -2
- [Bug 47] kill_asyncio() now takes 1 parameter - the lowest fd to close.
-
- ntpd/ntp_config.c
- 1.50.4.3 03/06/22 05:13:40 stenn@whimsy.udel.edu +1 -1
- [Bug 47] kill_asyncio() now takes 1 parameter - the lowest fd to close.
-
- include/ntpd.h
- 1.27.3.1 03/06/22 05:13:40 stenn@whimsy.udel.edu +1 -1
- [Bug 47] kill_asyncio() now takes 1 parameter - the lowest fd to close.
-
-ChangeSet
- 1.1076.1.4 03/06/21 06:09:07 stenn@whimsy.udel.edu +3 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntpd.c
- 1.49 03/06/21 06:09:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_resolver.c
- 1.16 03/06/21 06:09:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_intres.c
- 1.31 03/06/21 06:09:02 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.26 03/06/21 06:03:07 stenn@whimsy.udel.edu +1 -0
- [Bug 129] Improve and normalize some error messages.
-
- ntpd/ntp_intres.c
- 1.17.2.2 03/06/21 06:02:57 stenn@whimsy.udel.edu +6 -6
- [Bug 129] Improve and normalize some error messages.
-
-ChangeSet
- 1.683.14.25 03/06/21 05:56:12 stenn@whimsy.udel.edu +1 -0
- Cuddle a comment.
-
- ntpd/ntpd.c
- 1.33.2.3 03/06/21 05:56:02 stenn@whimsy.udel.edu +1 -1
- Cuddle a comment.
-
-ChangeSet
- 1.1082 03/06/20 14:53:46 fredb@tautology.immanent.net +2 -0
- Broader support for IPv6 hostnames by "ntpdc" and "ntpq". On NetBSD
- from NetBSD 1.5 to NetBSD 1.6.1, getaddrinfo() returned EAI_NODATA
- in some cases where RFC's 2553 (and now 3493) required EAI_NONAME.
- Allow for that. The (mis-)interpretation was from the Kame project,
- so other platforms may be affected as well.
-
- ntpq/ntpq.c
- 1.34 03/06/20 14:20:28 fredb@tautology.immanent.net +1 -1
- getaddrinfo() can return EAI_NODATA on NetBSD-1.5 to NetBSD-1.6.1
- in the AI_NUMERICHOST case (from kame, so other platforms may be
- affected as well).
-
- ntpdc/ntpdc.c
- 1.25 03/06/20 14:17:22 fredb@tautology.immanent.net +1 -1
- getaddrinfo() can return EAI_NODATA on NetBSD-1.5 to NetBSD-1.6.1
- in the AI_NUMERICHOST case (from kame, so other platforms may be
- affected as well).
-
-ChangeSet
- 1.1081 03/06/20 05:45:27 fredb@tautology.immanent.net +1 -0
- Resolve bug #123: fix build on NetBSD.
-
- libntp/a_md5encrypt.c
- 1.16 03/06/20 05:45:26 fredb@tautology.immanent.net +0 -7
- Accept Harlen Stenn's solution for bug #123.
-
-ChangeSet
- 1.683.14.24 03/06/20 04:32:07 stenn@whimsy.udel.edu +1 -0
- Note that ntp_resolver.c is currently unused in the file.
-
- ntpd/ntp_resolver.c
- 1.11.1.3 03/06/20 04:31:47 stenn@whimsy.udel.edu +3 -0
- Note that ntp_resolver.c is currently unused in the file.
-
-ChangeSet
- 1.1076.1.3 03/06/20 00:45:40 stenn@whimsy.udel.edu +1 -0
- [Bug 123] More portable MD5 conditionalization
-
- libntp/a_md5encrypt.c
- 1.13.1.1 03/06/20 00:45:28 stenn@whimsy.udel.edu +5 -10
- [Bug 123] More portable MD5 conditionalization
-
-ChangeSet
- 1.1080 03/06/19 20:01:31 fredb@tautology.immanent.net +1 -0
- Clean up the includes in a_md5encrypt.c. Proposed fix for bug #123.
-
- libntp/a_md5encrypt.c
- 1.15 03/06/19 20:01:29 fredb@tautology.immanent.net +6 -8
- Trim the fat. We were including "ntpd.h" just to get "ntp_fp.h",
- and <stdio.h> and "ntp_machine.h" aren't used for anything here.
- Proposed fix for bug #123.
-
-ChangeSet
- 1.1076.1.2 03/06/19 03:58:31 stenn@whimsy.udel.edu +1 -0
- [Bug 128] ntpq coredump with IPv6
-
- ntpq/ntpq.c
- 1.33 03/06/19 03:57:56 stenn@whimsy.udel.edu +1 -1
- [Bug 128] ntpq coredump with IPv6
-
-ChangeSet
- 1.1076.1.1 03/06/18 00:23:05 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/cmd_args.c
- 1.22 03/06/18 00:23:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.23 03/06/18 00:20:55 stenn@whimsy.udel.edu +1 -0
- [Bug 125] Add a missing newline from an fprintf
-
- ntpd/cmd_args.c
- 1.7.2.2 03/06/18 00:20:43 stenn@whimsy.udel.edu +1 -1
- [Bug 125] Add a missing newline from an fprintf
-
-ChangeSet
- 1.1077 03/06/16 12:09:12 fredb@tautology.immanent.net +2 -0
- Make this build on NetBSD.
-
- BitKeeper/etc/logging_ok
- 1.26 03/06/16 12:09:12 fredb@tautology.immanent.net +1 -0
- Logging to logging@openlogging.org accepted
-
- libntp/a_md5encrypt.c
- 1.14 03/06/16 12:09:01 fredb@tautology.immanent.net +3 -4
- Really disable the OpenSSL MD5 includes.
-
-ChangeSet
- 1.1076 03/06/13 02:44:04 stenn@whimsy.udel.edu +2 -0
- 4.1.80-rc1
-
- configure.in
- 1.316 03/06/13 02:41:55 stenn@whimsy.udel.edu +1 -1
- 4.1.80-rc1
-
- NEWS
- 1.43 03/06/13 02:41:55 stenn@whimsy.udel.edu +1 -0
- 4.1.80-rc1
-
-ChangeSet
- 1.1075 03/06/13 02:28:46 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_intres.c
- 1.30 03/06/13 02:28:43 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.22 03/06/13 02:27:26 stenn@whimsy.udel.edu +1 -0
- [Bug 110] Don't syslog EINTR returns from select().
-
- ntpd/ntp_intres.c
- 1.17.2.1 03/06/13 02:27:07 stenn@whimsy.udel.edu +2 -1
- [Bug 110] Don't syslog EINTR returns from select().
-
-ChangeSet
- 1.1062.1.3 03/06/12 23:19:43 mayer@tecotoo.myibg.com +2 -0
- Remove support for building ntptrace on Win32.
- Improvement for generating the version number on Win32.
-
- ports/winnt/scripts/mkver.bat
- 1.5 03/06/12 23:19:11 mayer@tecotoo.myibg.com +26 -3
- Improvement for generating the version number for Win32.
-
- ports/winnt/ntp.dsw
- 1.6 03/06/12 23:19:08 mayer@tecotoo.myibg.com +0 -47
- Remove support for building ntptrace on Win32.
- The perl script should be used instead.
-
-ChangeSet
- 1.1073 03/06/12 21:28:30 stenn@whimsy.udel.edu +1 -0
- Merge pogo:/usa/mayer/ntp-dev-io into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_io.c
- 1.77 03/06/12 21:28:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.1072 03/06/12 02:49:43 stenn@whimsy.udel.edu +1 -0
- Merge
-
- ntpd/ntp_io.c
- 1.75.1.1 03/06/12 02:49:24 stenn@whimsy.udel.edu +4 -4
- Conflict resolution
-
-ChangeSet
- 1.683.14.21 03/06/12 02:43:58 stenn@whimsy.udel.edu +1 -0
- [Bug 110] Don't log EINTR return from select()
-
- ntpd/ntp_io.c
- 1.20.3.3 03/06/12 02:43:48 stenn@whimsy.udel.edu +5 -2
- [Bug 110] Don't log EINTR return from select()
-
-ChangeSet
- 1.1071 03/06/12 01:49:22 stenn@whimsy.udel.edu +1 -0
- [bug 44] patch from Simon Burge
-
- ntpd/ntp_crypto.c
- 1.87 03/06/12 01:49:11 stenn@whimsy.udel.edu +3 -3
- [bug 44] patch from Simon Burge
-
-ChangeSet
- 1.1062.1.2 03/06/11 22:52:29 mayer@tecotoo.myibg.com +1 -0
- Use -n for nt running as a servce instead of borrowing -d for Win32.
-
- ntpd/cmd_args.c
- 1.21 03/06/11 22:52:02 mayer@tecotoo.myibg.com +3 -16
- Use -n for nt running as a servce instead of borrowing -d for Win32.
-
-ChangeSet
- 1.1062.1.1 03/06/11 18:44:49 mayer@tecotoo.myibg.com +4 -0
- Add workaround for Win32 to fix MS bug with UDP sockets.
- See KB Q263823.
-
- ports/winnt/libisc/win32os.c
- 1.1 03/06/11 18:44:13 mayer@tecotoo.myibg.com +101 -0
-
- ports/winnt/libisc/win32os.c
- 1.0 03/06/11 18:44:13 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/libisc/win32os.c
-
- ports/winnt/include/isc/win32os.h
- 1.1 03/06/11 18:44:05 mayer@tecotoo.myibg.com +71 -0
-
- ports/winnt/include/isc/win32os.h
- 1.0 03/06/11 18:44:05 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/include/isc/win32os.h
-
- ports/winnt/libntp/libntp.dsp
- 1.14 03/06/11 18:44:02 mayer@tecotoo.myibg.com +8 -0
- Added libisc/win32os.c .h files
-
- ntpd/ntp_io.c
- 1.76 03/06/11 18:43:58 mayer@tecotoo.myibg.com +47 -0
- Add workaround for Win32 to fix MS bug with UDP sockets.
- See KB Q263823
-
-ChangeSet
- 1.1070 03/06/10 04:51:47 stenn@whimsy.udel.edu +1 -0
- Merge
-
- configure.in
- 1.315 03/06/10 04:51:31 stenn@whimsy.udel.edu +0 -1
- ntp-dev uses its own version numbers.
-
-ChangeSet
- 1.683.14.20 03/06/10 04:09:53 stenn@whimsy.udel.edu +1 -0
- 4.1.1c-rc3
-
- configure.in
- 1.219.3.45 03/06/10 04:08:47 stenn@whimsy.udel.edu +1 -1
- 4.1.1c-rc3
-
-ChangeSet
- 1.1069 03/06/10 03:07:07 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- README
- 1.20 03/06/10 03:07:04 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.19 03/06/10 03:04:28 stenn@whimsy.udel.edu +2 -0
- Update the bug submission process.
-
- README
- 1.14.1.6 03/06/10 03:04:14 stenn@whimsy.udel.edu +4 -2
- Update the bug submission process.
-
- README.hackers
- 1.8 03/06/10 03:04:14 stenn@whimsy.udel.edu +6 -9
- Update the bug submission process.
-
-ChangeSet
- 1.1068 03/06/09 04:35:19 stenn@whimsy.udel.edu +7 -0
- [Bug 87] Use md5 from the OS if available.
-
- libntp/md5c.c
- 1.7 03/06/09 04:33:40 stenn@whimsy.udel.edu +8 -4
- [Bug 87] Use md5 from the OS if available.
-
- libntp/a_md5encrypt.c
- 1.13 03/06/09 04:33:37 stenn@whimsy.udel.edu +4 -4
- [Bug 87] Use md5 from the OS if available.
-
- libntp/Makefile.am
- 1.29 03/06/09 04:33:37 stenn@whimsy.udel.edu +0 -1
- [Bug 87] Use md5 from the OS if available.
-
- include/rsa_md5.h
- 1.5 03/06/09 04:33:33 stenn@whimsy.udel.edu +4 -4
- [Bug 87] Use md5 from the OS if available.
-
- include/Makefile.am
- 1.18 03/06/09 04:33:29 stenn@whimsy.udel.edu +1 -0
- [Bug 87] Use md5 from the OS if available.
-
- configure.in
- 1.314 03/06/09 04:33:11 stenn@whimsy.udel.edu +6 -2
- [Bug 87] Use md5 from the OS if available.
-
- include/ntp_md5.h
- 1.1 03/06/09 04:29:07 stenn@whimsy.udel.edu +9 -0
-
- include/ntp_md5.h
- 1.0 03/06/09 04:29:07 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev-md5/include/ntp_md5.h
-
-ChangeSet
- 1.1067 03/06/07 04:37:44 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- Makefile.am
- 1.40 03/06/07 04:37:41 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
-ChangeSet
- 1.683.14.18 03/06/07 04:34:10 stenn@whimsy.udel.edu +1 -0
- Tell automake we expect at least 1.5
-
- Makefile.am
- 1.12.1.21 03/06/07 04:33:53 stenn@whimsy.udel.edu +1 -1
- Tell automake we expect at least 1.5
-
-ChangeSet
- 1.1066 03/06/06 03:53:06 stenn@whimsy.udel.edu +1 -0
- Tell automake we expect at least 1.5
-
- Makefile.am
- 1.39 03/06/06 03:52:57 stenn@whimsy.udel.edu +1 -1
- Tell automake we expect at least 1.5
-
-ChangeSet
- 1.1065 03/06/06 03:45:01 stenn@whimsy.udel.edu +1 -0
- [bug 87] Add /usr/lib/openssl as a place to look for openssl libs.
-
- configure.in
- 1.313 03/06/06 03:44:49 stenn@whimsy.udel.edu +1 -1
- [bug 87] Add /usr/lib/openssl as a place to look for openssl libs.
-
-ChangeSet
- 1.1064 03/06/06 01:49:57 stenn@whimsy.udel.edu +4 -0
- [bug 86] Rename md5.h to rsa_md5.h to avoid a conflict.
-
- libntp/md5c.c
- 1.6 03/06/06 01:49:44 stenn@whimsy.udel.edu +1 -1
- [bug 86] Rename md5.h to rsa_md5.h to avoid a conflict.
-
- libntp/a_md5encrypt.c
- 1.12 03/06/06 01:49:20 stenn@whimsy.udel.edu +1 -1
- [bug 86] Rename md5.h to rsa_md5.h to avoid a conflict.
-
- include/Makefile.am
- 1.17 03/06/06 01:49:20 stenn@whimsy.udel.edu +1 -1
- [bug 86] Rename md5.h to rsa_md5.h to avoid a conflict.
-
- include/rsa_md5.h
- 1.4 03/06/06 01:42:50 stenn@whimsy.udel.edu +0 -0
- Rename: include/md5.h -> include/rsa_md5.h
-
-ChangeSet
- 1.1063 03/06/06 01:35:09 stenn@whimsy.udel.edu +1 -0
- typo cleanup
-
-ChangeSet
- 1.1062 03/06/02 08:54:15 mayer@tecotoo.myibg.com +3 -0
- Changes in support for I/O Completion Ports. Added additional argument to call.
- Added support for broadcast socket through I/O Completion Ports, which was
- not previously being added.
-
- ports/winnt/ntpd/ntp_iocompletionport.c
- 1.9 03/06/02 08:53:43 mayer@tecotoo.myibg.com +8 -5
- Added SOCKET argument to function call to make more general. Associated changes
- to use the argument in the code.
-
- ports/winnt/include/ntp_iocompletionport.h
- 1.7 03/06/02 08:53:40 mayer@tecotoo.myibg.com +1 -1
- Added SOCKET argument to make more general.
-
- ntpd/ntp_io.c
- 1.75 03/06/02 08:53:35 mayer@tecotoo.myibg.com +21 -12
- Changes in support for I/O Completion Ports. Added additional argument to call.
- Added support for broadcast socket through I/O Completion Ports, which was
- not previously being added.
-
- libntp/iosignal.c
- 1.11 03/06/01 03:55:22 stenn@whimsy.udel.edu +3 -3
- typo cleanup
-
-ChangeSet
- 1.1061 03/05/31 21:59:48 mayer@tecotoo.myibg.com +1 -0
- Fixes to eliminate warning messages on Unix O/S's.
-
- libntp/msyslog.c
- 1.18 03/05/31 21:59:18 mayer@tecotoo.myibg.com +6 -5
- Fixes to eliminate warning messages on Unix O/S's.
-
-ChangeSet
- 1.1049.1.3 03/05/31 20:05:01 mayer@tecotoo.myibg.com +2 -0
- Win32 Fixes for Bugs #67 and #70
-
- ports/winnt/ntpd/win32_io.c
- 1.7 03/05/31 20:04:29 mayer@tecotoo.myibg.com +3 -3
- Fix baud rate declarations.
-
- ntpd/ntpd.c
- 1.48 03/05/31 20:04:24 mayer@tecotoo.myibg.com +8 -22
- Fix Win32 WaitForMultipleObjectsEx to take correct argument
- Fix checks on output. Log any WAIT_FAILED messages.
-
-ChangeSet
- 1.1059 03/05/30 05:24:53 stenn@whimsy.udel.edu +1 -0
- [Bug 72] Use an explicit $(srcdir) to avoid a VPATH difference with Solaris make.
-
- libntp/Makefile.am
- 1.28 03/05/30 05:23:48 stenn@whimsy.udel.edu +5 -3
- [Bug 72] Use an explicit $(srcdir) to avoid a VPATH difference with Solaris make.
-
-ChangeSet
- 1.1058 03/05/30 05:10:15 stenn@whimsy.udel.edu +1 -0
- Merge
-
- Makefile.am
- 1.38 03/05/30 05:09:38 stenn@whimsy.udel.edu +1 -2
- copyright.htm was renamed to copyright.html in ntp-dev.
-
-ChangeSet
- 1.683.14.17 03/05/30 05:04:38 stenn@whimsy.udel.edu +1 -0
- [Bug 71] Use an explicit $(srcdir) to avoid a VPATH difference with Solaris make.
-
- Makefile.am
- 1.12.1.20 03/05/30 05:04:25 stenn@whimsy.udel.edu +1 -1
- [Bug 71] Use an explicit $(srcdir) to avoid a VPATH difference with Solaris make.
-
-ChangeSet
- 1.1057 03/05/27 22:38:21 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_request.c
- 1.48 03/05/27 22:38:17 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
-ChangeSet
- 1.683.14.16 03/05/27 22:36:50 stenn@whimsy.udel.edu +1 -0
- Bug 65: ntpdc clockstat reports fudgetime1 twice
-
- ntpd/ntp_request.c
- 1.23.3.2 03/05/27 22:36:32 stenn@whimsy.udel.edu +1 -1
- Bug 65: ntpdc clockstat reports fudgetime1 twice
-
-ChangeSet
- 1.1056 03/05/27 04:43:39 stenn@whimsy.udel.edu +1 -0
- Handle the CLOCKCTL command-line options like the others.
-
- ntpd/cmd_args.c
- 1.20 03/05/27 04:43:22 stenn@whimsy.udel.edu +7 -7
- Handle the CLOCKCTL command-line options like the others.
-
-ChangeSet
- 1.1049.1.2 03/05/21 22:43:30 mayer@tecotoo.myibg.com +6 -0
- Miscellaneous updates and cosmetic changes.
- Updates to ntptrace to get it to build properly.
-
- ports/winnt/ntpdate/ntpdate.dsp
- 1.10 03/05/21 22:42:59 mayer@tecotoo.myibg.com +1 -1
- Fix for browse support in debug
-
- ntptrace/ntptrace.h
- 1.3 03/05/21 22:42:58 mayer@tecotoo.myibg.com +1 -1
- Fix address structure for IPv6
-
- ntptrace/ntptrace.c
- 1.16 03/05/21 22:42:56 mayer@tecotoo.myibg.com +16 -15
- Fix for sockaddr_storage to deal with IPv6.
- Note this implementation only supports IPv4.
-
- ntpdate/ntpdate.c
- 1.43 03/05/21 22:42:55 mayer@tecotoo.myibg.com +17 -17
- Use the right definitions to allow support for Windows
-
- ntpd/ntp_io.c
- 1.74 03/05/21 22:42:50 mayer@tecotoo.myibg.com +10 -9
- Fix to put the reporting of the list of listening sockets in the right place.
-
- html/hints/winnt.html
- 1.12 03/05/21 22:42:42 mayer@tecotoo.myibg.com +33 -11
- Update the Windows Build/Release notes to reflect the latest state.
-
-ChangeSet
- 1.1053 03/05/19 04:28:59 stenn@whimsy.udel.edu +1 -0
- Handle ss_len the same way we handle ss_family. From Lars-Owe.Ivarsson@its.uu.se
-
- configure.in
- 1.312 03/05/19 04:28:46 stenn@whimsy.udel.edu +1 -0
- Handle ss_len the same way we handle ss_family. From Lars-Owe.Ivarsson@its.uu.se
-
-ChangeSet
- 1.1052 03/05/18 04:23:04 stenn@whimsy.udel.edu +1 -0
- ss_family tests (stolen from openssh)
-
- configure.in
- 1.311 03/05/18 04:22:48 stenn@whimsy.udel.edu +38 -0
- ss_family tests (stolen from openssh)
-
-ChangeSet
- 1.1049.1.1 03/05/17 21:18:16 mayer@tecotoo.myibg.com +2 -0
- Update for Listening Interfaces and not put out duplicate info to stdout.
-
- ntpd/ntp_io.c
- 1.73 03/05/17 21:17:52 mayer@tecotoo.myibg.com +14 -1
- Print Listening Interfaces and any listening broadcast interfaces.
-
- libntp/msyslog.c
- 1.17 03/05/17 21:17:48 mayer@tecotoo.myibg.com +5 -9
- Changes to not put out data twice if already going to stdout or stderr.
-
-ChangeSet
- 1.1051 03/05/13 20:21:21 stenn@whimsy.udel.edu +3 -0
- Documentation updates from Dave Mills
-
- html/scripts/footer.txt
- 1.2 03/05/13 20:19:37 stenn@whimsy.udel.edu +1 -2
- Documentation updates from Dave Mills
-
- html/drivers/driver36.html
- 1.19 03/05/13 20:19:33 stenn@whimsy.udel.edu +16 -25
- Documentation updates from Dave Mills
-
- html/miscopt.html
- 1.28 03/05/13 20:19:31 stenn@whimsy.udel.edu +6 -4
- Documentation updates from Dave Mills
-
-ChangeSet
- 1.1050 03/05/12 03:59:17 stenn@whimsy.udel.edu +1 -0
- Merge
-
- ntpd/refclock_neoclock4x.c
- 1.6 03/05/12 03:58:58 stenn@whimsy.udel.edu +1 -1
- Danny and Harlan fixed the same thing differently.
-
-ChangeSet
- 1.1046.1.2 03/05/12 02:45:13 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_neoclock4x.c
- 1.4.1.1 03/05/12 02:45:08 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.310 03/05/12 02:45:08 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.1046.1.1 03/05/12 02:43:20 stenn@whimsy.udel.edu +4 -0
- Allow the intial frequency to be set. Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.78 03/05/12 02:42:56 stenn@whimsy.udel.edu +5 -0
- Allow the intial frequency to be set. Dave Mills.
-
- ntpd/ntp_config.c
- 1.89 03/05/12 02:42:56 stenn@whimsy.udel.edu +5 -0
- Allow the intial frequency to be set. Dave Mills.
-
- include/ntp_config.h
- 1.27 03/05/12 02:42:56 stenn@whimsy.udel.edu +1 -0
- Allow the intial frequency to be set. Dave Mills.
-
- include/ntp.h
- 1.89 03/05/12 02:42:55 stenn@whimsy.udel.edu +1 -0
- Allow the intial frequency to be set. Dave Mills.
-
-ChangeSet
- 1.683.14.15 03/05/12 01:30:41 stenn@whimsy.udel.edu +1 -0
- Under AIX, if we have utmpx.h don't look for utmp.h . From Lars-Owe Ivarsson
-
- configure.in
- 1.219.3.44 03/05/12 01:30:08 stenn@whimsy.udel.edu +11 -1
- Under AIX, if we have utmpx.h don't look for utmp.h . From Lars-Owe Ivarsson
-
-ChangeSet
- 1.683.14.14 03/05/12 00:23:21 stenn@whimsy.udel.edu +1 -0
- Lose a C++ comment. From: Lars-Owe Ivarsson
-
- ntpd/refclock_neoclock4x.c
- 1.1.1.3 03/05/12 00:23:00 stenn@whimsy.udel.edu +59 -57
- Lose a C++ comment. From: Lars-Owe Ivarsson
-
-ChangeSet
- 1.1049 03/05/09 22:08:39 mayer@tecotoo.myibg.com +1 -0
- Declare the functions even if they don't get used. Move the macro #ifdef below
- the declaration.
-
- include/isc/net.h
- 1.3 03/05/09 22:08:12 mayer@tecotoo.myibg.com +3 -3
- Declare the functions even if they don't get used. Move the macro #ifdef below
- the declaration.
-
-ChangeSet
- 1.1048 03/05/09 21:46:35 mayer@tecotoo.myibg.com +5 -0
- Change C++ comment to C comment. Fix sprintf call to use SPRINTF macro in inet_ntop.c.
-
- util/sht.c
- 1.3 03/05/09 21:46:00 mayer@tecotoo.myibg.com +1 -1
- Change C++ comment to C comment
-
- util/pps-api.c
- 1.2 03/05/09 21:45:59 mayer@tecotoo.myibg.com +1 -1
- Change C++ comment to C comment
-
- ntpd/refclock_neoclock4x.c
- 1.5 03/05/09 21:45:55 mayer@tecotoo.myibg.com +1 -1
- Change C++ comment to C comment
-
- ntpd/refclock_hopfpci.c
- 1.9 03/05/09 21:45:52 mayer@tecotoo.myibg.com +1 -1
- Change C++ comment to C comment
-
- libisc/inet_ntop.c
- 1.3 03/05/09 21:45:49 mayer@tecotoo.myibg.com +1 -1
- Change other call to sprintf to use the SPRINTF macro.
-
-ChangeSet
- 1.1043.1.2 03/05/05 09:40:44 mayer@tecotoo.myibg.com +3 -0
- Add support for running the nodebug version no as a service
-
- ports/winnt/libntp/libntp.dsp
- 1.13 03/05/05 09:40:12 mayer@tecotoo.myibg.com +4 -4
- Location of log.c has changed. It is Win32 specific.
-
- ntpd/ntpd.c
- 1.47 03/05/05 09:40:09 mayer@tecotoo.myibg.com +28 -18
- Add support for running the nodebug version no as a service
-
- ntpd/cmd_args.c
- 1.19 03/05/05 09:40:01 mayer@tecotoo.myibg.com +19 -0
- Add support for running the nodebug version no as a service
-
-ChangeSet
- 1.1043.1.1 03/05/04 10:51:16 mayer@tecotoo.myibg.com +4 -0
- Changes to support netsyslog in addition to msyslog.
- the libntp/log.c was in the wrong place. It should have been under winnt/libntp.
-
- ports/winnt/libntp/log.c
- 1.1 03/05/04 10:50:36 mayer@tecotoo.myibg.com +161 -0
-
- ports/winnt/libntp/log.c
- 1.0 03/05/04 10:50:36 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/libntp/log.c
-
- ntpd/ntp_io.c
- 1.72 03/05/04 10:50:33 mayer@tecotoo.myibg.com +1 -4
- Make the netsyslog call real. Make sure that the address_okay function's return
- value gets used properly.
-
- libntp/msyslog.c
- 1.16 03/05/04 10:50:29 mayer@tecotoo.myibg.com +126 -49
- Add netsyslog to syslog functions. Reorganize code to make it more modular
- and allow both msyslog and netsyslog to share the same logic. Fix the \n so
- that we don't lose message information.
-
- include/ntp_stdlib.h
- 1.20 03/05/04 10:50:25 mayer@tecotoo.myibg.com +3 -0
- Add netsyslog declaration.
-
-ChangeSet
- 1.1046 03/04/30 02:03:30 stenn@whimsy.udel.edu +5 -0
- sprintf portability fixes (thanks Paul!)
-
- libisc/inet_ntop.c
- 1.2 03/04/30 01:39:55 stenn@whimsy.udel.edu +3 -1
- Use ntp_sprintf.h .
-
- configure.in
- 1.309 03/04/30 01:33:22 stenn@whimsy.udel.edu +6 -0
- Define SPRINTF_CHAR where needed (sunos4).
-
- ntpd/refclock_mx4200.c
- 1.18 03/04/30 01:32:48 stenn@whimsy.udel.edu +4 -16
- Use ntp_sprintf.h and clean up the code accordingly.
-
- include/Makefile.am
- 1.16 03/04/30 01:31:52 stenn@whimsy.udel.edu +1 -0
- Added ntp_sprintf.h
-
- include/ntp_sprintf.h
- 1.1 03/04/30 01:30:21 stenn@whimsy.udel.edu +13 -0
-
- include/ntp_sprintf.h
- 1.0 03/04/30 01:30:21 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/include/ntp_sprintf.h
-
-ChangeSet
- 1.1045 03/04/29 16:56:14 stenn@whimsy.udel.edu +1 -0
- [Bug 48]: SOCKNUL test backwords, causes spurious error.
-
- ntpd/ntp_intres.c
- 1.29 03/04/29 16:56:03 stenn@whimsy.udel.edu +1 -1
- [Bug 48]: SOCKNUL test backwords, causes spurious error.
-
-ChangeSet
- 1.1043 03/04/26 23:04:38 mayer@tecotoo.myibg.com +1 -0
- Change to put address in result rather than 5.
-
- ntpd/ntp_request.c
- 1.47 03/04/26 23:04:08 mayer@tecotoo.myibg.com +6 -8
- Change to put address in result rather than 5.
-
-ChangeSet
- 1.1042 03/04/26 19:25:21 mayer@tecotoo.myibg.com +2 -0
- Fixes to deal with compiler warnings.
-
- ntpq/ntpq_ops.c
- 1.17 03/04/26 19:24:50 mayer@tecotoo.myibg.com +12 -6
- Fix to take care of the implicit cast.
- Initialize some variables to stop the compiler warning about possible uninitialized variables.
-
- ntpd/ntp_crypto.c
- 1.86 03/04/26 19:24:46 mayer@tecotoo.myibg.com +1 -1
- Refix the cast to shut up the compiler warnings.
-
-ChangeSet
- 1.1040.1.2 03/04/26 05:02:11 stenn@whimsy.udel.edu +1 -0
- Merge
-
- configure.in
- 1.308 03/04/26 05:01:50 stenn@whimsy.udel.edu +0 -1
- ntp-dev uses its own release numbers.
-
-ChangeSet
- 1.683.14.13 03/04/26 04:36:51 stenn@whimsy.udel.edu +1 -0
- 4.1.1c-rc2
-
- configure.in
- 1.219.3.43 03/04/26 04:36:35 stenn@whimsy.udel.edu +1 -1
- 4.1.1c-rc2
-
-ChangeSet
- 1.1040.1.1 03/04/26 03:36:06 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_shm.c
- 1.13 03/04/26 03:36:02 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.12 03/04/26 03:34:12 stenn@whimsy.udel.edu +1 -0
- Lose a syslog message per Jonathan Buzzard
-
- ntpd/refclock_shm.c
- 1.10.1.1 03/04/26 03:34:02 stenn@whimsy.udel.edu +2 -0
- Lose a syslog message per Jonathan Buzzard
-
-ChangeSet
- 1.1041 03/04/26 00:14:02 mayer@pogo.udel.edu +1 -0
- Merge
-
- ntpd/ntp_crypto.c
- 1.85 03/04/26 00:13:53 mayer@pogo.udel.edu +1 -2
-
-ChangeSet
- 1.1032.1.2 03/04/26 00:07:53 mayer@tecotoo.myibg.com +3 -0
- Fixes to deal with bug #37 and fix for non-IPv6 stack machines to deal with IPv6 addresses.
-
- ports/winnt/include/config.h
- 1.21 03/04/26 00:07:06 mayer@tecotoo.myibg.com +1 -0
- Add Platform requirement to use the isc_inet_ntop() routine.
-
- ntpd/ntp_request.c
- 1.46 03/04/26 00:07:03 mayer@tecotoo.myibg.com +6 -0
- Temporary fix for bug #37. Needs additioonal work
-
- libntp/socktoa.c
- 1.5 03/04/26 00:06:55 mayer@tecotoo.myibg.com +3 -8
- Replace Windows specific includes with config.h and use Platform define for
- isc/net.h include
-
-ChangeSet
- 1.1040 03/04/25 22:52:14 stenn@whimsy.udel.edu +1 -0
- Cleanup
-
- configure.in
- 1.307 03/04/25 22:52:06 stenn@whimsy.udel.edu +0 -7
- Cleanup
-
-ChangeSet
- 1.1039 03/04/25 22:05:05 stenn@whimsy.udel.edu +1 -0
- Clean up the configure warnings for net/if.h and netinet/ip.h
-
- configure.in
- 1.306 03/04/25 22:04:52 stenn@whimsy.udel.edu +17 -3
- Clean up the configure warnings for net/if.h and netinet/ip.h
-
-ChangeSet
- 1.1038 03/04/25 03:28:22 stenn@whimsy.udel.edu +1 -0
- Define ISC_PLATFORM_NEEDNTOP if inet_ntop() is not available.
-
- configure.in
- 1.305 03/04/25 03:28:09 stenn@whimsy.udel.edu +3 -1
- Define ISC_PLATFORM_NEEDNTOP if inet_ntop() is not available.
-
-ChangeSet
- 1.1032.1.1 03/04/24 11:50:33 mayer@tecotoo.myibg.com +6 -0
- Updates to handle IPv6 addresses for non-IPv6 capable systems.
-
- libisc/inet_ntop.c
- 1.1 03/04/24 11:49:48 mayer@tecotoo.myibg.com +196 -0
-
- libisc/inet_ntop.c
- 1.0 03/04/24 11:49:47 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/inet_ntop.c
-
- ports/winnt/libntp/libntp.dsp
- 1.12 03/04/24 11:49:45 mayer@tecotoo.myibg.com +8 -0
- At the inet_ntop.c file to build list
-
- ntpd/ntp_crypto.c
- 1.83.1.1 03/04/24 11:49:42 mayer@tecotoo.myibg.com +2 -3
- Fix cast problem.
-
- libntp/socktoa.c
- 1.4 03/04/24 11:49:37 mayer@tecotoo.myibg.com +12 -5
- Fix to allow non-IPv6 systems to handle IPv6 addresses.
-
- libntp/log.c
- 1.4 03/04/24 11:49:33 mayer@tecotoo.myibg.com +5 -0
- Fix RPC ASYNCH problem
-
- libntp/Makefile.am
- 1.27 03/04/24 11:49:27 mayer@tecotoo.myibg.com +1 -1
- Add new file to list
-
-ChangeSet
- 1.1037 03/04/23 22:40:09 stenn@whimsy.udel.edu +2 -0
- Quiet some warnings
-
- ntpd/ntp_io.c
- 1.71 03/04/23 22:39:56 stenn@whimsy.udel.edu +2 -2
- Quiet some warnings
-
- libntp/mktime.c
- 1.6 03/04/23 22:39:56 stenn@whimsy.udel.edu +1 -1
- Quiet some warnings
-
-ChangeSet
- 1.1036 03/04/23 01:34:08 stenn@whimsy.udel.edu +1 -0
- John Hay: revert incorrect cleanup
-
- ntpd/ntp_crypto.c
- 1.84 03/04/23 01:33:04 stenn@whimsy.udel.edu +1 -2
- John Hay: revert incorrect cleanup
-
-ChangeSet
- 1.1035 03/04/22 05:10:39 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.304 03/04/22 05:10:35 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- README.bk
- 1.16 03/04/22 05:10:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.11 03/04/22 04:53:32 stenn@whimsy.udel.edu +2 -0
- Require autoconf-2.53 for cross-compile endian support
-
- configure.in
- 1.219.3.42 03/04/22 04:53:19 stenn@whimsy.udel.edu +2 -17
- Require autoconf-2.53 for cross-compile endian support
-
- README.bk
- 1.1.1.17 03/04/22 04:53:19 stenn@whimsy.udel.edu +1 -1
- Require autoconf-2.53 for cross-compile endian support
-
-ChangeSet
- 1.1034 03/04/22 04:05:18 stenn@whimsy.udel.edu +1 -0
- More improvements from Dave Mills.
-
- ntpd/refclock_wwv.c
- 1.43 03/04/22 04:05:06 stenn@whimsy.udel.edu +115 -150
- More improvements from Dave Mills.
-
-ChangeSet
- 1.1029.1.4 03/04/20 01:39:04 mayer@tecotoo.myibg.com +5 -0
- Fix casting issues and other warnings.
-
- ports/winnt/ntpd/hopf_PCI_io.c
- 1.5 03/04/20 01:38:21 mayer@tecotoo.myibg.com +6 -0
- Disable warning about nonstandard declarations in Windows-omly code.
-
- ports/winnt/include/config.h
- 1.20 03/04/20 01:38:19 mayer@tecotoo.myibg.com +5 -0
- Readd the RPCASYNC_H macro to get rid of warnings.
-
- ntpd/refclock_palisade.c
- 1.16 03/04/20 01:38:16 mayer@tecotoo.myibg.com +4 -1
- Fix casting issues.
-
- ntpd/ntp_monitor.c
- 1.11 03/04/20 01:38:13 mayer@tecotoo.myibg.com +2 -2
- Fix casting issues.
-
- ntpd/ntp_loopfilter.c
- 1.77 03/04/20 01:38:09 mayer@tecotoo.myibg.com +2 -2
- Fix casting issues.
-
-ChangeSet
- 1.1029.1.3 03/04/19 09:10:42 mayer@tecotoo.myibg.com +3 -0
- Fix casting issues.
-
- ntpd/ntp_restrict.c
- 1.17 03/04/19 09:10:01 mayer@tecotoo.myibg.com +3 -1
- Fix casting issues.
-
- ntpd/ntp_request.c
- 1.45 03/04/19 09:09:57 mayer@tecotoo.myibg.com +4 -4
- Fix casting issues.
-
- ntpd/ntp_proto.c
- 1.154 03/04/19 09:09:51 mayer@tecotoo.myibg.com +4 -4
- Fix casting issues.
-
-ChangeSet
- 1.1030.1.2 03/04/17 06:36:35 stenn@whimsy.udel.edu +6 -0
- Merge
-
- ntpq/Makefile.am
- 1.9 03/04/17 06:36:06 stenn@whimsy.udel.edu +1 -2
- -dev doesn't use RSAREF libs.
-
- ntpdc/Makefile.am
- 1.8 03/04/17 06:35:25 stenn@whimsy.udel.edu +1 -2
- -dev doesn't use RSAREF libs.
-
- ntpdate/Makefile.am
- 1.11 03/04/17 06:34:54 stenn@whimsy.udel.edu +1 -2
- -dev doesn't use RSAREF libs.
-
- ntpd/Makefile.am
- 1.35 03/04/17 06:34:02 stenn@whimsy.udel.edu +1 -2
- -dev doesn't use RSAREF libs
-
- NEWS
- 1.42 03/04/17 06:32:44 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.37 03/04/17 06:32:44 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.10 03/04/17 06:31:00 stenn@whimsy.udel.edu +7 -0
- version -> version.c improvements
-
- ntptrace/Makefile.am
- 1.5 03/04/17 06:30:46 stenn@whimsy.udel.edu +1 -1
- version -> version.c improvements
-
- ntpq/Makefile.am
- 1.4.1.3 03/04/17 06:30:46 stenn@whimsy.udel.edu +1 -1
- version -> version.c improvements
-
- ntpdc/Makefile.am
- 1.3.1.3 03/04/17 06:30:46 stenn@whimsy.udel.edu +1 -1
- version -> version.c improvements
-
- ntpdate/Makefile.am
- 1.5.1.3 03/04/17 06:30:45 stenn@whimsy.udel.edu +1 -1
- version -> version.c improvements
-
- ntpd/Makefile.am
- 1.18.2.9 03/04/17 06:30:45 stenn@whimsy.udel.edu +1 -1
- version -> version.c improvements
-
- NEWS
- 1.31.1.10 03/04/17 06:30:45 stenn@whimsy.udel.edu +1 -0
- version -> version.c improvements
-
- Makefile.am
- 1.12.1.19 03/04/17 06:30:45 stenn@whimsy.udel.edu +3 -2
- version -> version.c improvements
-
-ChangeSet
- 1.1030.1.1 03/04/17 06:25:19 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntpd.c
- 1.46 03/04/17 06:25:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.9 03/04/17 06:20:30 stenn@whimsy.udel.edu +1 -0
- If we're debugging, emit Version first.
-
- ntpd/ntpd.c
- 1.33.2.2 03/04/17 06:20:16 stenn@whimsy.udel.edu +3 -0
- If we're debugging, emit Version first.
-
-ChangeSet
- 1.1029.1.2 03/04/16 22:09:32 mayer@tecotoo.myibg.com +1 -0
- Enabled checking of the UP flag.
-
- ntpd/ntp_io.c
- 1.70 03/04/16 22:09:01 mayer@tecotoo.myibg.com +2 -2
- Enabled checking of the UP flag.
-
-ChangeSet
- 1.1029.1.1 03/04/16 09:18:44 mayer@tecotoo.myibg.com +1 -0
- Remove unnecessary time adjustment call.
-
- ports/winnt/ntpd/nt_clockstuff.c
- 1.13 03/04/16 09:18:16 mayer@tecotoo.myibg.com +0 -3
- Remove unnecessary time adjustment call.
-
-ChangeSet
- 1.1030 03/04/16 03:07:41 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.303 03/04/16 03:07:37 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.8 03/04/16 03:06:14 stenn@whimsy.udel.edu +1 -0
- AIX 5 changes from Petter Reinholdtsen <pere@hungry.com>
-
- configure.in
- 1.219.3.41 03/04/16 03:05:00 stenn@whimsy.udel.edu +9 -9
- AIX 5 changes from Petter Reinholdtsen <pere@hungry.com>
-
-ChangeSet
- 1.1021.1.3 03/04/15 01:32:13 mayer@tecotoo.myibg.com +5 -0
- Miscellaneous cleanup for clean Windows build.
-
- ports/winnt/include/config.h
- 1.19 03/04/15 01:31:48 mayer@tecotoo.myibg.com +0 -5
- Remove RPCASYNC Macro as no longer necessary.
-
- ntpd/ntp_crypto.c
- 1.83 03/04/15 01:31:46 mayer@tecotoo.myibg.com +10 -10
- Fix initalization warning.
-
- ntpd/ntp_config.c
- 1.88 03/04/15 01:31:42 mayer@tecotoo.myibg.com +2 -2
- Fix initialization warning.
-
- libntp/dolfptoa.c
- 1.5 03/04/15 01:31:38 mayer@tecotoo.myibg.com +1 -1
- Fix casting issues.
-
- libntp/dofptoa.c
- 1.6 03/04/15 01:31:34 mayer@tecotoo.myibg.com +1 -1
- Fix casting issues.
-
-ChangeSet
- 1.1028 03/04/14 22:06:47 stenn@whimsy.udel.edu +2 -0
- Improvements from Dave Mills
-
- ntpd/refclock_wwv.c
- 1.42 03/04/14 22:06:28 stenn@whimsy.udel.edu +195 -147
- WWV improvements
-
- ntpd/ntp_peer.c
- 1.55 03/04/14 22:05:17 stenn@whimsy.udel.edu +3 -1
- If emulating ntpdate, force iburst
-
-ChangeSet
- 1.1021.1.2 03/04/12 00:38:17 mayer@tecotoo.myibg.com +5 -0
- MIscellaneous fixes for warnings and include problems for NT.
-
- ports/winnt/include/config.h
- 1.18 03/04/12 00:37:51 mayer@tecotoo.myibg.com +3 -0
- Add windows.h header.
-
- ntpd/ntpd.c
- 1.45 03/04/12 00:37:49 mayer@tecotoo.myibg.com +4 -1
- Don't include unusable code on WINNT.
-
- libntp/machines.c
- 1.17 03/04/12 00:37:47 mayer@tecotoo.myibg.com +1 -1
- Include just the one required function definition.
-
- libntp/ieee754io.c
- 1.5 03/04/12 00:37:44 mayer@tecotoo.myibg.com +1 -1
- Comparison between different int types was causing type match warnings.
-
- libntp/dofptoa.c
- 1.5 03/04/12 00:37:41 mayer@tecotoo.myibg.com +1 -1
- Fix for cast issue.
-
-ChangeSet
- 1.683.14.7 03/04/10 02:56:17 stenn@whimsy.udel.edu +1 -0
- Fix the VERB
-
- BitKeeper/triggers/commitlogs
- 1.3 03/04/10 02:55:55 stenn@whimsy.udel.edu +9 -9
- Fix the VERB
-
-ChangeSet
- 1.683.14.6 03/04/10 02:48:11 stenn@whimsy.udel.edu +1 -0
- Provide a default VERB for now
-
- BitKeeper/triggers/commitlogs
- 1.2 03/04/10 02:47:43 stenn@whimsy.udel.edu +1 -0
- Provide a default VERB for now
-
-ChangeSet
- 1.1024 03/04/09 18:30:52 stenn@whimsy.udel.edu +2 -0
- Initial refid patch from Dave Mills
-
- ntpd/refclock_atom.c
- 1.42 03/04/09 18:30:32 stenn@whimsy.udel.edu +2 -1
- Initial refid patch from Dave Mills
-
- ntpd/ntp_refclock.c
- 1.50 03/04/09 18:30:30 stenn@whimsy.udel.edu +4 -3
- Initial refid patch from Dave Mills
-
-ChangeSet
- 1.1015.1.3 03/04/05 19:14:20 mayer@tecotoo.myibg.com +1 -0
- Fixes for broadcast sockets. IPv6 broadcast sockets are invalid.
-
- ntpd/ntp_io.c
- 1.69 03/04/05 18:59:51 mayer@tecotoo.myibg.com +18 -6
- Have the Convert_if code ignore IPv6 broadcast data since it can't exist.
- Skip non-IPv4 broadcast addresses in setting the broadcast client.
- Check to make sure that the broadcast socket was opened before setting
- the broadcast open flag. Use the isc_net_probeipv6() code to check that it can
- open an IPv6 socket.
-
-ChangeSet
- 1.1015.1.2 03/04/05 16:08:13 mayer@tecotoo.myibg.com +1 -0
- The wrong flag macros were being used for check.
-
- libisc/ifiter_sysctl.c
- 1.5 03/04/05 16:07:52 mayer@tecotoo.myibg.com +2 -2
- The wrong flag macros were being used for check.
-
-ChangeSet
- 1.1020.1.1 03/04/03 20:53:35 stenn@whimsy.udel.edu +1 -0
- Improvements from Dave Mills.
-
- ntpd/refclock_wwv.c
- 1.41 03/04/03 20:53:22 stenn@whimsy.udel.edu +7 -2
- Improvements from Dave Mills.
-
-ChangeSet
- 1.1015.1.1 03/03/31 00:24:37 mayer@tecotoo.myibg.com +1 -0
- Fixes to specify the IPv4 wildcard and IPv6 wildcard separately.
- Added debug code for the broadcast client.
- Socket definition cleanup.
-
- ntpd/ntp_io.c
- 1.68 03/03/31 00:24:11 mayer@tecotoo.myibg.com +17 -10
- Fixes to specify the IPv4 wildcard and IPv6 wildcard separately.
- Added debug code for the broadcast client.
- Socket definition cleanup.
-
-ChangeSet
- 1.1020 03/03/30 22:49:43 stenn@whimsy.udel.edu +3 -0
- Cleanup and fixes from Dave Mills
-
- ntpd/refclock_wwv.c
- 1.40 03/03/30 22:49:26 stenn@whimsy.udel.edu +35 -32
- Fixes to WWV and CHU drivers
-
- html/drivers/driver22.html
- 1.14 03/03/30 22:47:37 stenn@whimsy.udel.edu +6 -7
- Cleanup
-
- html/index.html
- 1.26 03/03/30 22:46:41 stenn@whimsy.udel.edu +2 -2
- Typo fix
-
-ChangeSet
- 1.1019 03/03/30 16:51:05 stenn@whimsy.udel.edu +6 -0
- Typo fixes from Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
-
- parseutil/testdcf.c
- 1.4 03/03/30 16:50:49 stenn@whimsy.udel.edu +1 -1
- Typo fixes from Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
-
- parseutil/dcfd.c
- 1.12 03/03/30 16:50:49 stenn@whimsy.udel.edu +1 -1
- Typo fixes from Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
-
- ntpd/refclock_ripencc.c
- 1.4 03/03/30 16:50:48 stenn@whimsy.udel.edu +1 -1
- Typo fixes from Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
-
- ntpd/refclock_mx4200.c
- 1.17 03/03/30 16:50:48 stenn@whimsy.udel.edu +1 -1
- Typo fixes from Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
-
- ntpd/refclock_chu.c
- 1.32 03/03/30 16:50:48 stenn@whimsy.udel.edu +43 -34
- Typo fixes from Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
-
- html/mx4200data.html
- 1.10 03/03/30 16:50:48 stenn@whimsy.udel.edu +1 -1
- Typo fixes from Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
-
-ChangeSet
- 1.1018 03/03/25 04:34:17 stenn@pogo.udel.edu +3 -0
- Merge
-
- ntpd/refclock_oncore.c
- 1.45 03/03/25 04:33:20 stenn@pogo.udel.edu +10 -229
- Brute-force resolution.
-
- BitKeeper/etc/logging_ok
- 1.25 03/03/25 04:25:41 stenn@pogo.udel.edu +0 -0
- Rename: BitKeeper/deleted/.del-logging_ok~bebb84d857254496 -> BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.20 03/03/25 04:25:41 stenn@pogo.udel.edu +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.24 03/03/25 04:25:39 stenn@pogo.udel.edu +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.19 03/03/25 04:25:32 stenn@pogo.udel.edu +0 -0
- auto-union
-
-ChangeSet
- 1.683.14.5 03/03/25 04:23:12 stenn@pogo.udel.edu +2 -0
- refclock_oncore.c:
- Driver restructured to make it easier to follow.
- The driver no longer uses the Oncore model number to
- determine what features are available, but rather tests
- for them. The driver now supports the M12+T.
- From Reg Clemens.
-
- BitKeeper/etc/logging_ok
- 1.1.1.9 03/03/25 04:23:11 stenn@pogo.udel.edu +1 -0
- Logging to logging@openlogging.org accepted
-
- ntpd/refclock_oncore.c
- 1.38.1.1 03/03/25 04:20:34 stenn@pogo.udel.edu +2338 -1423
- Driver restructured to make it easier to follow.
- The driver no longer uses the Oncore model number to
- determine what features are available, but rather tests
- for them. The driver now supports the M12+T.
- From Reg Clemens.
-
-ChangeSet
- 1.1017 03/03/21 20:27:39 stenn@whimsy.udel.edu +1 -0
- chu cleanup from Dave Mills
-
- ntpd/refclock_chu.c
- 1.31 03/03/21 20:27:26 stenn@whimsy.udel.edu +116 -82
- chu cleanup from Dave Mills
-
-ChangeSet
- 1.1016 03/03/17 22:36:39 stenn@whimsy.udel.edu +2 -0
- Improvements from Dave Mills and a typo fix.
-
- ntpd/refclock_chu.c
- 1.30 03/03/17 22:35:19 stenn@whimsy.udel.edu +149 -53
- Improvements from Dave Mills
-
- html/ntpq.html
- 1.21 03/03/17 22:32:31 stenn@whimsy.udel.edu +1 -1
- typo
-
-ChangeSet
- 1.1015 03/03/16 22:40:46 mayer@pogo.udel.edu +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into pogo.udel.edu:/pogo/users/mayer/ntp-dev-io
-
- include/ntp.h
- 1.88 03/03/16 22:40:39 mayer@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.1014 03/03/16 14:39:22 stenn@whimsy.udel.edu +5 -0
- More fixes and cleanup from Dave Mills
-
- ntpd/refclock_wwv.c
- 1.39 03/03/16 14:38:51 stenn@whimsy.udel.edu +16 -7
- The rest of Dave's wwv improvements
-
- html/scripts/style.css
- 1.2 03/03/16 14:37:16 stenn@whimsy.udel.edu +1 -1
- Documentation updates from Dave Mills
-
- html/drivers/driver6.html
- 1.15 03/03/16 14:37:16 stenn@whimsy.udel.edu +6 -6
- Documentation updates from Dave Mills
-
- html/drivers/driver36.html
- 1.18 03/03/16 14:37:16 stenn@whimsy.udel.edu +40 -38
- Documentation updates from Dave Mills
-
- html/authopt.html
- 1.29 03/03/16 14:37:16 stenn@whimsy.udel.edu +6 -2
- Documentation updates from Dave Mills
-
-ChangeSet
- 1.1001.1.32 03/03/16 05:24:05 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/triggers/trigger.cfg
- 1.12 03/03/16 05:24:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.4 03/03/16 05:19:20 stenn@whimsy.udel.edu +2 -0
- Use new commitlogs trigger instead of the delta-changelog and lg-changeset triggers.
-
- BitKeeper/triggers/trigger.cfg
- 1.9.1.2 03/03/16 05:18:52 stenn@whimsy.udel.edu +7 -2
- Use new commitlogs trigger instead of the delta-changelog and lg-changeset triggers.
-
- BitKeeper/triggers/commitlogs
- 1.1 03/03/16 05:17:41 stenn@whimsy.udel.edu +81 -0
-
- BitKeeper/triggers/commitlogs
- 1.0 03/03/16 05:17:41 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/commitlogs
-
-ChangeSet
- 1.1001.1.31 03/03/16 04:17:01 stenn@whimsy.udel.edu +2 -0
- More cleanup and fixes from Dave Mills
-
- ntpd/refclock_wwv.c
- 1.38 03/03/16 04:16:23 stenn@whimsy.udel.edu +98 -20
- More cleanup and fixes from Dave Mills
-
- ntpd/refclock_irig.c
- 1.20 03/03/16 04:16:23 stenn@whimsy.udel.edu +8 -17
- More cleanup and fixes from Dave Mills
-
-ChangeSet
- 1.1001.1.30 03/03/16 04:06:25 stenn@whimsy.udel.edu +2 -0
- Improve the name length stuff for crypto host/node names (DLM from ???)
-
- ntpd/ntp_crypto.c
- 1.82 03/03/16 04:05:47 stenn@whimsy.udel.edu +2 -4
- Improve the name length stuff for crypto host/node names
-
- include/ntp.h
- 1.86.1.1 03/03/16 04:05:47 stenn@whimsy.udel.edu +1 -2
- Improve the name length stuff for crypto host/node names
-
-ChangeSet
- 1.1001.1.29 03/03/16 03:51:09 stenn@whimsy.udel.edu +2 -0
- cleanup
-
- flock-build
- 1.27 03/03/16 03:50:53 stenn@whimsy.udel.edu +9 -2
- cleanup
-
- configure.in
- 1.302 03/03/16 03:40:56 stenn@whimsy.udel.edu +12 -2
- cleanup
-
-ChangeSet
- 1.1001.4.4 03/03/16 01:52:29 mayer@tecotoo.myibg.com +2 -0
- Track the number of multicast addresses on a socket.
- Check to see if to listen on all interfaces.
-
- ntpd/ntp_io.c
- 1.67 03/03/16 01:52:03 mayer@tecotoo.myibg.com +19 -12
- Track the number of multicast addresses on a socket.
- Check to see if to listen on all interfaces.
-
- include/ntp.h
- 1.87 03/03/16 01:51:59 mayer@tecotoo.myibg.com +1 -0
- Keep a count of the number of multicast addresses on the socket.
-
-ChangeSet
- 1.1011 03/03/14 20:08:24 gnu@ring.wraith.sf.ca.us +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into ring.wraith.sf.ca.us:/home/gnu/src/ntp/ntp-dev
-
- libntp/audio.c
- 1.21 03/03/14 20:08:24 gnu@ring.wraith.sf.ca.us +0 -0
- Auto merged
-
-ChangeSet
- 1.1010 03/03/14 20:08:13 gnu@ring.wraith.sf.ca.us +1 -0
- audio.c:
- quick linux/freebsd audio fixup.
-
-ChangeSet
- 1.1001.1.28 03/03/14 04:25:10 stenn@whimsy.udel.edu +1 -0
- Dave rolled an interim tarball
-
- configure.in
- 1.301 03/03/14 04:24:54 stenn@whimsy.udel.edu +1 -1
- Dave rolled an interim tarball
-
-ChangeSet
- 1.1001.1.27 03/03/14 04:21:57 stenn@whimsy.udel.edu +1 -0
- Use correct variable types. From: Jason L. Wright <jason@thought.net>
-
- ntpd/refclock_neoclock4x.c
- 1.4 03/03/14 04:21:33 stenn@whimsy.udel.edu +4 -3
- Use correct variable types. From: Jason L. Wright <jason@thought.net>
-
-ChangeSet
- 1.1001.1.26 03/03/11 15:39:21 stenn@whimsy.udel.edu +2 -0
- Improvements from Dave Mills
-
- ntpd/refclock_irig.c
- 1.19 03/03/11 15:38:39 stenn@whimsy.udel.edu +54 -33
- Improvements from Dave Mills
-
- libntp/audio.c
- 1.17.1.2 03/03/11 15:24:35 stenn@whimsy.udel.edu +2 -3
- Show info.record.balance debug info
-
-ChangeSet
- 1.1001.1.25 03/03/11 05:42:25 stenn@whimsy.udel.edu +2 -0
- Improvements from Dave Mills.
-
- ntpd/refclock_wwv.c
- 1.37 03/03/11 05:42:12 stenn@whimsy.udel.edu +410 -342
- Improvements from Dave Mills.
-
- libntp/audio.c
- 1.17.1.1 03/03/11 05:31:10 stenn@whimsy.udel.edu +4 -2
- Improvements from Dave Mills.
-
-ChangeSet
- 1.1009 03/03/10 15:46:27 gnu@ring.wraith.sf.ca.us +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into ring.wraith.sf.ca.us:/home/gnu/src/ntp/ntp-dev
-
- BitKeeper/etc/logging_ok
- 1.23 03/03/10 15:46:26 gnu@ring.wraith.sf.ca.us +0 -0
- auto-union
-
- libntp/audio.c
- 1.20 03/03/10 15:30:56 gnu@ring.wraith.sf.ca.us +9 -2
- quick linux/freebsd audio fixup.
-
-ChangeSet
- 1.1001.4.3 03/03/09 23:12:12 mayer@tecotoo.myibg.com +1 -0
- address_okay note. Fixes to take account of wildcard addresses. Fix SOCKET usage.
- Cleanup conditional ioctl for nonblocking.
-
- ntpd/ntp_io.c
- 1.66 03/03/09 23:11:35 mayer@tecotoo.myibg.com +16 -13
- address_okay note. Fixes to take account of wildcard addresses. Fix SOCKET usage.
- Cleanup conditional ioctl for nonblocking.
-
-ChangeSet
- 1.1001.1.23 03/03/07 23:44:26 stenn@whimsy.udel.edu +1 -0
- Darwin patch for openssl
-
- configure.in
- 1.300 03/03/07 23:44:19 stenn@whimsy.udel.edu +2 -0
- Darwin patch for openssl
-
-ChangeSet
- 1.1001.1.22 03/03/07 23:29:56 stenn@whimsy.udel.edu +1 -0
- Darwin patch for openssl
-
- configure.in
- 1.299 03/03/07 23:29:43 stenn@whimsy.udel.edu +6 -1
- Darwin patch for openssl
-
-ChangeSet
- 1.1001.4.2 03/03/07 21:48:43 mayer@tecotoo.myibg.com +1 -0
- Start the check after the wildcards.
-
- ntpd/ntp_io.c
- 1.65 03/03/07 21:48:07 mayer@tecotoo.myibg.com +4 -4
- Start the check after the wildcards.
-
-ChangeSet
- 1.1001.1.21 03/03/05 22:45:40 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_arc.c
- 1.13 03/03/05 22:45:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.3 03/03/05 22:43:10 stenn@whimsy.udel.edu +1 -0
- We use u_long, not ulong.
-
- ntpd/refclock_arc.c
- 1.8.1.2 03/03/05 22:42:54 stenn@whimsy.udel.edu +1 -1
- We use u_long, not ulong.
-
-ChangeSet
- 1.1001.1.19 03/03/05 21:04:21 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntpd.c
- 1.44 03/03/05 21:04:18 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.14.2 03/03/05 21:02:52 stenn@whimsy.udel.edu +1 -0
- Add missing #ifdef DEBUG stuff. From Greg Dowd <GDowd@symmetricom.com>
-
- ntpd/ntpd.c
- 1.33.2.1 03/03/05 21:02:42 stenn@whimsy.udel.edu +3 -2
- Add missing #ifdef DEBUG stuff. From Greg Dowd <GDowd@symmetricom.com>
-
-ChangeSet
- 1.1001.4.1 03/03/05 01:02:14 mayer@tecotoo.myibg.com +2 -0
- Ignore ENXIO errors for IPv6 flags and add address info for bad data packets.
-
- ntpd/ntp_proto.c
- 1.153 03/03/05 01:01:39 mayer@tecotoo.myibg.com +2 -2
- Report the source address when receiving bad data packets.
-
- libisc/ifiter_ioctl.c
- 1.9 03/03/05 01:01:33 mayer@tecotoo.myibg.com +11 -3
- Ignore ENXIO errors when getting the IPv6 flags.
-
-ChangeSet
- 1.1001.1.17 03/02/28 11:00:25 cprice@cs-home.com +4 -0
- Arcron clock - enhanced driver and documentation, removed possible
- leapyear bug, additional features included
-
- ntpd/refclock_arc.c
- 1.12 03/02/28 11:00:24 cprice@cs-home.com +51 -156
- Arcron clock - removed possible leapyear bug, added new mode
- selectable msf, dcf and wwvb code, added a utc/localtime flag,
- added average signal quality poll, several badformat errors
- fixed, removal of unused code and general code cleanup including
- standardizing debug routines and syslog messages
-
- html/drivers/driver27.html
- 1.12 03/02/28 11:00:24 cprice@cs-home.com +46 -155
- Arcron clock - update html reference driver documentation to
- correspond with most recent driver updates
-
- BitKeeper/etc/logging_ok
- 1.20.1.4 03/02/28 10:38:12 cprice@cs-home.com +1 -0
- 'Auto converge'
-
- html/drivers/driver27.html
- 1.2.1.3 03/02/28 10:38:13 cprice@cs-home.com +0 -0
- Merge rename: html/driver27.htm -> html/drivers/driver27.html
-
- BitKeeper/etc/logging_ok
- 1.20.1.3 03/02/28 10:38:12 cprice@cs-home.com +0 -0
- Rename: BitKeeper/deleted/.del-logging_ok~bebb84d857254496 -> BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.18 03/02/28 10:38:12 cprice@cs-home.com +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.20.1.2 03/02/28 10:38:12 cprice@cs-home.com +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.17 03/02/28 10:38:11 cprice@cs-home.com +1 -1
- auto-union
-
-ChangeSet
- 1.683.13.2 03/02/28 04:52:34 stenn@whimsy.udel.edu +1 -0
- How to patch ntp-stable and ntp-dev.
-
- README.hackers
- 1.7 03/02/28 04:52:22 stenn@whimsy.udel.edu +25 -0
- How to patch ntp-stable and ntp-dev.
-
-ChangeSet
- 1.1001.1.15 03/02/28 04:15:42 stenn@whimsy.udel.edu +2 -0
- Merge
-
- ntpd/cmd_args.c
- 1.18 03/02/28 04:15:24 stenn@whimsy.udel.edu +2 -3
- merge cleanup.
-
- README.bk
- 1.15 03/02/28 04:11:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.13.1 03/02/28 04:09:07 stenn@whimsy.udel.edu +1 -0
- long option support from: Hugh Daniel <hugh@road.toad.com>
-
- ntpd/cmd_args.c
- 1.7.2.1 03/02/28 04:08:47 stenn@whimsy.udel.edu +20 -1
- long option support from: Hugh Daniel <hugh@road.toad.com>
-
-ChangeSet
- 1.1001.1.14 03/02/26 01:04:03 mayer@tecotoo.myibg.com +1 -0
- Merge mayer@pogo.udel.edu:ntp-dev-io/
- into tecotoo.myibg.com:H:/ntpbk/ntp-dev
-
- libisc/ifiter_ioctl.c
- 1.8 03/02/26 01:03:41 mayer@tecotoo.myibg.com +0 -2
- Auto merged
-
-ChangeSet
- 1.1001.3.7 03/02/26 00:58:00 mayer@tecotoo.myibg.com +2 -0
- Check to see that Multicast Flag is defined before using it.
-
- libisc/ifiter_sysctl.c
- 1.4 03/02/26 00:57:33 mayer@tecotoo.myibg.com +3 -1
- Check to see that Multicast Flag is defined before using it.
-
- libisc/ifiter_ioctl.c
- 1.5.1.2 03/02/26 00:57:30 mayer@tecotoo.myibg.com +4 -0
- Check to see that Multicast Flag is defined before using it.
-
-ChangeSet
- 1.1001.1.13 03/02/26 00:42:59 mayer@pogo.udel.edu +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into pogo.udel.edu:/pogo/users/mayer/ntp-dev-io
-
- libisc/ifiter_ioctl.c
- 1.7 03/02/26 00:42:54 mayer@pogo.udel.edu +0 -1
- Auto merged
-
-ChangeSet
- 1.1001.3.6 03/02/25 23:34:27 mayer@tecotoo.myibg.com +3 -0
- Macro changes.
-
- ntpd/ntp_io.c
- 1.64 03/02/25 23:34:00 mayer@tecotoo.myibg.com +5 -3
- Restore previous changes to for loops and conditional code for findbcast.
-
- libisc/ifiter_ioctl.c
- 1.5.1.1 03/02/25 23:33:57 mayer@tecotoo.myibg.com +1 -1
- Fix ioctl macro usage.
-
- include/ntp_rfc2553.h
- 1.9 03/02/25 23:33:54 mayer@tecotoo.myibg.com +4 -1
- Make IPv6 Macros conditional.
-
-ChangeSet
- 1.1001.1.12 03/02/24 23:37:01 stenn@whimsy.udel.edu +1 -0
- IFF_MULTICAST #ifdef and typo fix from John Hay.
-
- libisc/ifiter_ioctl.c
- 1.6 03/02/24 23:36:57 stenn@whimsy.udel.edu +3 -1
- IFF_MULTICAST #ifdef and typo fix from John Hay.
-
-ChangeSet
- 1.1001.3.5 03/02/24 01:19:19 mayer@tecotoo.myibg.com +1 -0
- Fix typos
-
- libisc/ifiter_ioctl.c
- 1.5 03/02/24 01:18:52 mayer@tecotoo.myibg.com +4 -4
- Fix typos
-
-ChangeSet
- 1.1001.3.4 03/02/24 00:50:34 mayer@tecotoo.myibg.com +1 -0
- Fix variable names and add macro definition.
-
- libisc/ifiter_ioctl.c
- 1.4 03/02/24 00:50:11 mayer@tecotoo.myibg.com +5 -4
- Fix variable names and add macro definition.
-
-ChangeSet
- 1.1001.3.3 03/02/23 23:25:50 mayer@tecotoo.myibg.com +6 -0
- Fixes for multicast and broadcast and IPv6 interfaces.
-
- ports/winnt/libisc/net.c
- 1.2 03/02/23 23:25:21 mayer@tecotoo.myibg.com +0 -4
- Remove unneccesary macro and allow the IPV6 probe to answer.
-
- ports/winnt/libisc/interfaceiter.c
- 1.2 03/02/23 23:25:19 mayer@tecotoo.myibg.com +0 -6
- Remove commented out code.
-
- ntpd/ntp_io.c
- 1.63 03/02/23 23:25:16 mayer@tecotoo.myibg.com +1 -2
- Make sure for I/O Completion Ports the correct error info is used.
- Remove unnecessary macro
-
- libisc/net.c
- 1.2 03/02/23 23:25:13 mayer@tecotoo.myibg.com +0 -4
- Remove unnecessary WANT_IPV6 macro and allow IPV6 probes to return real answers.
-
- libisc/ifiter_sysctl.c
- 1.3 03/02/23 23:25:11 mayer@tecotoo.myibg.com +10 -0
- Add flags for broadcast and multicast interfaces and fetch the broadcast address.
-
- libisc/ifiter_ioctl.c
- 1.3 03/02/23 23:25:09 mayer@tecotoo.myibg.com +59 -0
- Add flags for broadcast and multicast interfaces and fetch the broadcast address.
-
-ChangeSet
- 1.683.4.144 03/02/22 04:47:19 cprice@cs-home.com +3 -0
- Arcron clock - enchanged driver and documentation, additional
- features included
-
- BitKeeper/etc/logging_ok
- 1.1.1.8 03/02/22 04:47:19 cprice@cs-home.com +1 -0
- Logging to logging@openlogging.org accepted
-
- html/driver27.htm
- 1.2.1.2 03/02/22 04:42:22 cprice@cs-home.com +117 -102
- Arcron clock - update html reference driver documentation to correspond
- with most recent driver updates
-
-ChangeSet
- 1.683.4.143 03/02/22 05:04:54 stenn@whimsy.udel.edu +2 -0
- Instructions on submitting patches
-
- README.hackers
- 1.6 03/02/22 05:04:36 stenn@whimsy.udel.edu +17 -0
- Instructions on submitting patches
-
- README.bk
- 1.1.1.16 03/02/22 05:04:36 stenn@whimsy.udel.edu +2 -0
- Instructions on submitting patches
-
- ntpd/refclock_arc.c
- 1.8.1.1 03/02/22 04:01:54 cprice@cs-home.com +287 -81
- Arcron clock - added new mode selectable msf, dcf and wwvb code, added a
- utc/locatime flag, added average singal quality poll, several badformat
- errors fixed, removal of unused code and general code cleanup including
- standardizing debug routines and syslog messages
-
-ChangeSet
- 1.1001.1.10 03/02/22 04:43:12 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- README.bk
- 1.14 03/02/22 04:43:09 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.142 03/02/22 04:39:59 stenn@whimsy.udel.edu +1 -0
- Updated.
-
- README.bk
- 1.1.1.15 03/02/22 04:39:47 stenn@whimsy.udel.edu +0 -11
- Updated.
-
-ChangeSet
- 1.1001.3.2 03/02/22 00:54:36 mayer@tecotoo.myibg.com +1 -0
- Check the wildcards as well when looking for the broadcast client.
-
- ntpd/ntp_io.c
- 1.62 03/02/22 00:53:50 mayer@tecotoo.myibg.com +1 -1
- Check the wildcards as well when looking for the broadcast client.
-
-ChangeSet
- 1.1001.3.1 03/02/21 01:13:32 mayer@tecotoo.myibg.com +1 -0
- Put the executable in the relevant bin subdirectory.
-
- ports/winnt/ntpd/ntpd.dsp
- 1.15 03/02/21 01:12:57 mayer@tecotoo.myibg.com +2 -2
- Put the executable in the relevant bin subdirectory.
-
-ChangeSet
- 1.1001.1.8 03/02/21 00:19:05 stenn@whimsy.udel.edu +1 -0
- Cleanup from the recent patches
-
- ntpd/refclock_arc.c
- 1.11 03/02/21 00:18:52 stenn@whimsy.udel.edu +3 -4
- Cleanup from the recent patches
-
-ChangeSet
- 1.1005 03/02/20 21:03:53 gnu@ring.wraith.sf.ca.us +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into ring.wraith.sf.ca.us:/home/gnu/src/ntp/ntp-dev
-
- BitKeeper/etc/logging_ok
- 1.22 03/02/20 21:03:51 gnu@ring.wraith.sf.ca.us +0 -0
- auto-union
-
-ChangeSet
- 1.1001.1.7 03/02/20 20:18:20 paul@k2.alfille +3 -0
- Arcron radio clock update -- support WWVB version. Transparently backwards
- compatible with MSF version, but requires flag1=1 to signal WWVB region.
-
- BitKeeper/etc/logging_ok
- 1.20.1.1 03/02/20 20:18:20 paul@k2.alfille +1 -0
- Logging to logging@openlogging.org accepted
-
- ntpd/refclock_arc.c
- 1.10 03/02/20 20:18:06 paul@k2.alfille +157 -54
- Now support Arcron WWVB radio clock. Timezone not detected, to preemptively
- set to UTC prior to each read. Use flag1 to distinguish from MSF version.
- Update to version 1.2
-
- html/drivers/driver27.html
- 1.11 03/02/20 20:18:06 paul@k2.alfille +14 -8
- Change docs to cover the WWVB version of the Arcron radio clock.
- Added explanation of new parameter, and URLs to the manufacturer.
-
-ChangeSet
- 1.1001.1.6 03/02/20 04:10:16 stenn@whimsy.udel.edu +1 -0
- HAVE_IFLIST_SYSCTL cleanup.
-
- configure.in
- 1.298 03/02/20 04:09:57 stenn@whimsy.udel.edu +1 -7
- HAVE_IFLIST_SYSCTL cleanup.
-
-ChangeSet
- 1.1001.1.5 03/02/20 02:19:57 stenn@whimsy.udel.edu +1 -0
- Added HAVE_IFLIST_SYSCTL for ISC code.
-
- configure.in
- 1.297 03/02/20 02:19:29 stenn@whimsy.udel.edu +16 -0
- Added HAVE_IFLIST_SYSCTL for ISC code.
-
-ChangeSet
- 1.1001.1.4 03/02/19 23:23:59 stenn@whimsy.udel.edu +1 -0
- Distribute libisc/ in the tarball
-
- Makefile.am
- 1.36 03/02/19 23:23:48 stenn@whimsy.udel.edu +1 -0
- Distribute libisc/ in the tarball
-
-ChangeSet
- 1.1001.1.2 03/02/18 22:10:09 mayer@tecotoo.myibg.com +6 -0
- Use the name of the service and not the port number as a string.
-
- ntpq/ntpq.c
- 1.32 03/02/18 22:09:39 mayer@tecotoo.myibg.com +1 -1
- Use the name of the service and not the port number as a string.
-
- ntpdc/ntpdc.c
- 1.24 03/02/18 22:09:38 mayer@tecotoo.myibg.com +1 -1
- Use the name of the service and not the port number as a string.
-
- ntpdate/ntpdate.c
- 1.42 03/02/18 22:09:36 mayer@tecotoo.myibg.com +2 -2
- Use the name of the service and not the port number as a string.
-
- ntpd/ntp_intres.c
- 1.28 03/02/18 22:09:33 mayer@tecotoo.myibg.com +1 -1
- Use the name of the service and not the port number as a string.
-
- ntpd/ntp_config.c
- 1.87 03/02/18 22:09:29 mayer@tecotoo.myibg.com +1 -1
- Use the name of the service and not the port number as a string.
-
- libntp/ntp_rfc2553.c
- 1.14 03/02/18 22:09:24 mayer@tecotoo.myibg.com +1 -1
- Use the name of the service and not the port number as a string.
-
-ChangeSet
- 1.1004 03/02/18 12:35:26 gnu@ring.wraith.sf.ca.us +1 -0
- linux,freebsd audio quick fix
-
-ChangeSet
- 1.1001.2.3 03/02/17 02:51:28 stenn@whimsy.udel.edu +1 -0
- Cleanup from Dave Mills
-
- libntp/systime.c
- 1.25 03/02/17 02:51:17 stenn@whimsy.udel.edu +2 -3
- Cleanup from Dave Mills
-
-ChangeSet
- 1.1001.2.2 03/02/17 02:48:13 stenn@whimsy.udel.edu +1 -0
- Intersection algorithm fixes from Dave Mills
-
- ntpd/ntp_proto.c
- 1.152 03/02/17 02:47:55 stenn@whimsy.udel.edu +8 -2
- Intersection algorithm fixes from Dave Mills
-
-ChangeSet
- 1.1001.2.1 03/02/17 02:43:12 stenn@whimsy.udel.edu +1 -0
- ICOM fixes from Dave Mills
-
- ntpd/refclock_wwv.c
- 1.36 03/02/17 02:42:58 stenn@whimsy.udel.edu +49 -32
- ICOM fixes from Dave Mills
-
-ChangeSet
- 1.1001.1.1 03/02/15 22:40:34 mayer@tecotoo.myibg.com +2 -0
- Scan all interfaces.
-
- ntpdc/ntpdc.c
- 1.23 03/02/15 22:40:09 mayer@tecotoo.myibg.com +1 -1
- x.
-
- ntpd/ntp_io.c
- 1.61 03/02/15 22:40:00 mayer@tecotoo.myibg.com +2 -2
- Scan all interfaces.
-
- libntp/audio.c
- 1.19 03/02/14 15:15:41 gnu@ring.wraith.sf.ca.us +2 -9
- quick fix just to get audio going on freebsd, linux
-
-ChangeSet
- 1.1002 03/02/14 14:51:03 gnu@ring.wraith.sf.ca.us +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into ring.wraith.sf.ca.us:/home/gnu/src/ntp/ntp-dev
-
- BitKeeper/etc/logging_ok
- 1.21 03/02/14 14:51:00 gnu@ring.wraith.sf.ca.us +0 -0
- auto-union
-
-ChangeSet
- 1.1001 03/02/13 02:22:14 stenn@pogo.udel.edu +1 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
-
- configure.in
- 1.296 03/02/13 02:22:07 stenn@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.957.3.9 03/02/13 02:19:12 stenn@whimsy.udel.edu +1 -0
- 4.1.74a
-
- configure.in
- 1.285.1.6 03/02/13 02:18:59 stenn@whimsy.udel.edu +1 -1
- 4.1.74a
-
-ChangeSet
- 1.957.3.8 03/02/13 01:51:32 stenn@whimsy.udel.edu +2 -0
- ntp-4.1.74
-
- configure.in
- 1.285.1.5 03/02/13 01:51:16 stenn@whimsy.udel.edu +1 -1
- ntp-4.1.74
-
- NEWS
- 1.41 03/02/13 01:51:16 stenn@whimsy.udel.edu +1 -0
- ntp-4.1.74
-
-ChangeSet
- 1.957.3.7 03/02/13 01:11:35 stenn@whimsy.udel.edu +1 -0
- Cleanup from Dave Mills
-
- ntpd/ntp_util.c
- 1.31 03/02/13 01:11:22 stenn@whimsy.udel.edu +18 -4
- Cleanup from Dave Mills
-
-ChangeSet
- 1.957.3.6 03/02/12 22:07:55 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- flock-build
- 1.26 03/02/12 22:07:52 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.141 03/02/12 22:03:31 stenn@whimsy.udel.edu +1 -0
- Added albert to the flock-build
-
- flock-build
- 1.23.1.1 03/02/12 22:03:18 stenn@whimsy.udel.edu +16 -14
- Added albert to the flock-build
-
-ChangeSet
- 1.957.3.5 03/02/12 02:14:37 stenn@whimsy.udel.edu +2 -0
- Cleanup from Dave Mills
-
- html/sntp.html
- 1.3 03/02/12 02:14:26 stenn@whimsy.udel.edu +4 -1
- Cleanup from Dave Mills
-
- html/pic/dogsnake.gif
- 1.1 03/02/12 02:12:02 stenn@whimsy.udel.edu +122 -0
-
- html/pic/dogsnake.gif
- 1.0 03/02/12 02:12:02 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/pic/dogsnake.gif
-
-ChangeSet
- 1.957.3.4 03/02/12 01:13:08 stenn@whimsy.udel.edu +1 -0
- gap tweaks
-
- ntpd/ntp_proto.c
- 1.151 03/02/12 01:12:49 stenn@whimsy.udel.edu +31 -19
- gap tweaks
-
-ChangeSet
- 1.957.3.3 03/02/10 00:09:57 stenn@whimsy.udel.edu +2 -0
- gap tweaks from Dave Mills
-
- ntpd/ntp_util.c
- 1.30 03/02/10 00:09:44 stenn@whimsy.udel.edu +0 -4
- gap tweaks from Dave Mills
-
- ntpd/ntp_proto.c
- 1.150 03/02/10 00:09:44 stenn@whimsy.udel.edu +37 -30
- gap tweaks from Dave Mills
-
-ChangeSet
- 1.998 03/02/09 20:13:44 stenn@pogo.udel.edu +1 -0
- Add WANT_IPV6 for ISC if we have ipv6
-
- configure.in
- 1.295 03/02/09 20:13:30 stenn@pogo.udel.edu +8 -7
- Add WANT_IPV6 for ISC if we have ipv6
-
-ChangeSet
- 1.957.3.2 03/02/09 03:09:36 stenn@whimsy.udel.edu +2 -0
- Updates from Dave Mills
-
- html/miscopt.html
- 1.27 03/02/09 03:09:16 stenn@whimsy.udel.edu +2 -3
- Updaets from Dave Mills
-
- html/authopt.html
- 1.28 03/02/09 03:09:16 stenn@whimsy.udel.edu +3 -4
- Updaets from Dave Mills
-
-ChangeSet
- 1.996 03/02/08 02:09:33 stenn@pogo.udel.edu +1 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
-
- configure.in
- 1.294 03/02/08 02:09:24 stenn@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.957.3.1 03/02/08 01:49:26 stenn@whimsy.udel.edu +11 -0
- NIST lockclock stuff form Dave Mills.
-
- ntpd/refclock_local.c
- 1.13 03/02/08 01:49:09 stenn@whimsy.udel.edu +18 -4
- NIST lockclock stuff form Dave Mills.
-
- ntpd/ntp_util.c
- 1.29 03/02/08 01:49:09 stenn@whimsy.udel.edu +5 -6
- NIST lockclock stuff form Dave Mills.
-
- ntpd/ntp_proto.c
- 1.149 03/02/08 01:49:09 stenn@whimsy.udel.edu +25 -6
- NIST lockclock stuff form Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.76 03/02/08 01:49:09 stenn@whimsy.udel.edu +21 -1
- NIST lockclock stuff form Dave Mills.
-
- ntpd/ntp_control.c
- 1.60 03/02/08 01:49:08 stenn@whimsy.udel.edu +2 -1
- NIST lockclock stuff form Dave Mills.
-
- ntpd/ntp_config.c
- 1.86 03/02/08 01:49:08 stenn@whimsy.udel.edu +0 -39
- NIST lockclock stuff form Dave Mills.
-
- html/monopt.html
- 1.17 03/02/08 01:49:08 stenn@whimsy.udel.edu +26 -4
- NIST lockclock stuff form Dave Mills.
-
- html/miscopt.html
- 1.26 03/02/08 01:49:08 stenn@whimsy.udel.edu +8 -4
- NIST lockclock stuff form Dave Mills.
-
- html/drivers/driver1.html
- 1.12 03/02/08 01:49:08 stenn@whimsy.udel.edu +12 -1
- NIST lockclock stuff form Dave Mills.
-
- html/accopt.html
- 1.19 03/02/08 01:49:08 stenn@whimsy.udel.edu +24 -18
- NIST lockclock stuff form Dave Mills.
-
- configure.in
- 1.285.1.4 03/02/08 01:49:07 stenn@whimsy.udel.edu +10 -1
- NIST lockclock stuff form Dave Mills.
-
-ChangeSet
- 1.995 03/02/07 21:50:32 stenn@pogo.udel.edu +1 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
-
- include/ntp.h
- 1.86 03/02/07 21:50:25 stenn@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.992.1.1 03/02/07 00:18:29 mayer@tecotoo.myibg.com +3 -0
- Build/Run fixes for Unix boxes
-
- libisc/msgcat.c
- 1.2 03/02/07 00:18:07 mayer@tecotoo.myibg.com +1 -0
- Add header so that NULL gets defined on SunOS 4.1.3 system.
-
- libisc/ifiter_sysctl.c
- 1.2 03/02/07 00:18:06 mayer@tecotoo.myibg.com +0 -1
- Remove unnecessary require (no locking)
-
- libisc/ifiter_ioctl.c
- 1.2 03/02/07 00:18:04 mayer@tecotoo.myibg.com +0 -1
- Remove unnecessary require (no locking)
-
-ChangeSet
- 1.957.1.34 03/02/06 19:14:43 gnu@ring.wraith.sf.ca.us +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into ring.wraith.sf.ca.us:/home/gnu/src/ntp/ntp-dev
-
- BitKeeper/etc/logging_ok
- 1.19.1.2 03/02/06 19:14:41 gnu@ring.wraith.sf.ca.us +1 -1
- 'Auto converge'
-
-ChangeSet
- 1.957.2.1 03/02/06 18:01:13 gnu@ring.wraith.sf.ca.us +2 -0
- fix up line/mic select, agc setting, monitor level.
-
- BitKeeper/etc/logging_ok
- 1.19.1.1 03/02/06 18:01:12 gnu@ring.wraith.sf.ca.us +1 -0
- Logging to logging@openlogging.org accepted
-
- libntp/audio.c
- 1.18 03/02/06 17:45:32 gnu@ring.wraith.sf.ca.us +9 -2
-
-ChangeSet
- 1.957.1.33 03/02/06 17:37:07 stenn@whimsy.udel.edu +8 -0
- More call-gap stuff from Dave Mills.
-
- ntpdc/ntpdc_ops.c
- 1.24 03/02/06 17:36:40 stenn@whimsy.udel.edu +11 -11
- More call-gap stuff from Dave Mills.
-
- ntpd/ntp_util.c
- 1.28 03/02/06 17:36:40 stenn@whimsy.udel.edu +5 -3
- More call-gap stuff from Dave Mills.
-
- ntpd/ntp_restrict.c
- 1.16 03/02/06 17:36:40 stenn@whimsy.udel.edu +10 -3
- More call-gap stuff from Dave Mills.
-
- ntpd/ntp_request.c
- 1.44 03/02/06 17:36:40 stenn@whimsy.udel.edu +1 -1
- More call-gap stuff from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.148 03/02/06 17:36:40 stenn@whimsy.udel.edu +11 -11
- More call-gap stuff from Dave Mills.
-
- ntpd/ntp_monitor.c
- 1.10 03/02/06 17:36:39 stenn@whimsy.udel.edu +3 -11
- More call-gap stuff from Dave Mills.
-
- include/ntp_request.h
- 1.21 03/02/06 17:36:39 stenn@whimsy.udel.edu +18 -18
- More call-gap stuff from Dave Mills.
-
- include/ntp.h
- 1.79.1.6 03/02/06 17:36:39 stenn@whimsy.udel.edu +0 -2
- More call-gap stuff from Dave Mills.
-
-ChangeSet
- 1.993 03/02/06 03:10:42 stenn@pogo.udel.edu +2 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
-
- include/ntpd.h
- 1.56 03/02/06 03:10:34 stenn@pogo.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.85 03/02/06 03:10:34 stenn@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.957.1.32 03/02/06 02:41:35 stenn@whimsy.udel.edu +10 -0
- Call gap stuff from Dave Mills
-
- ntpdc/ntpdc_ops.c
- 1.23 03/02/06 02:41:12 stenn@whimsy.udel.edu +26 -25
- Call gap stuff from Dave Mills
-
- ntpd/ntp_restrict.c
- 1.15 03/02/06 02:41:12 stenn@whimsy.udel.edu +28 -145
- Call gap stuff from Dave Mills
-
- ntpd/ntp_request.c
- 1.43 03/02/06 02:41:12 stenn@whimsy.udel.edu +6 -23
- Call gap stuff from Dave Mills
-
- ntpd/ntp_proto.c
- 1.147 03/02/06 02:41:11 stenn@whimsy.udel.edu +16 -8
- Call gap stuff from Dave Mills
-
- ntpd/ntp_monitor.c
- 1.9 03/02/06 02:41:11 stenn@whimsy.udel.edu +26 -48
- Call gap stuff from Dave Mills
-
- ntpd/ntp_config.c
- 1.85 03/02/06 02:41:11 stenn@whimsy.udel.edu +63 -60
- Call gap stuff from Dave Mills
-
- include/ntpd.h
- 1.53.1.2 03/02/06 02:41:11 stenn@whimsy.udel.edu +3 -2
- Call gap stuff from Dave Mills
-
- include/ntp_request.h
- 1.20 03/02/06 02:41:11 stenn@whimsy.udel.edu +4 -4
- Call gap stuff from Dave Mills
-
- include/ntp_config.h
- 1.26 03/02/06 02:41:11 stenn@whimsy.udel.edu +9 -4
- Call gap stuff from Dave Mills
-
- include/ntp.h
- 1.79.1.5 03/02/06 02:41:11 stenn@whimsy.udel.edu +5 -4
- Call gap stuff from Dave Mills
-
-ChangeSet
- 1.992 03/02/05 23:00:56 mayer@pogo.udel.edu +1 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
- into pogo.udel.edu:/pogo/users/mayer/ntp-dev-io
-
- libntp/ntp_rfc2553.c
- 1.13 03/02/05 23:00:48 mayer@pogo.udel.edu +0 -1
- Auto merged
-
-ChangeSet
- 1.988.1.1 03/02/05 22:58:52 mayer@tecotoo.myibg.com +4 -0
- IPv6 fixes to handle both NTP and ISC definitions.
-
- BitKeeper/etc/ignore
- 1.33 03/02/05 22:58:28 mayer@tecotoo.myibg.com +1 -0
- Added {include/isc/netaddr.h.$$$} to the ignore list
-
- libntp/ntp_rfc2553.c
- 1.11.1.1 03/02/05 22:58:25 mayer@tecotoo.myibg.com +1 -1
- Fix lengt
-
- include/ntp_rfc2553.h
- 1.8 03/02/05 22:58:23 mayer@tecotoo.myibg.com +6 -0
- Don't allow isc/ipv6.h include as all of the structures and macros are defined here.
-
- include/isc/netaddr.h
- 1.2 03/02/05 22:58:21 mayer@tecotoo.myibg.com +3 -0
- Include IPv6 definitions.
-
-ChangeSet
- 1.957.1.31 03/02/05 20:08:26 stenn@whimsy.udel.edu +1 -0
- Terje found a short malloc.
-
- libntp/ntp_rfc2553.c
- 1.12 03/02/05 20:08:15 stenn@whimsy.udel.edu +1 -1
- Terje found a short malloc.
-
-ChangeSet
- 1.990 03/02/05 17:40:14 stenn@pogo.udel.edu +1 -0
- isc/platform.h is no longer auto-generated
-
- BitKeeper/deleted/.del-platform.h.in~9c157531
- 1.2 03/02/05 17:37:23 stenn@pogo.udel.edu +0 -0
- Delete: include/isc/platform.h.in
-
-ChangeSet
- 1.989 03/02/05 03:52:48 stenn@pogo.udel.edu +1 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
-
- include/ntpd.h
- 1.55 03/02/05 03:52:41 stenn@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.988 03/02/05 00:52:02 mayer@tecotoo.myibg.com +2 -0
- Define needs a value.
-
- BitKeeper/etc/ignore
- 1.32 03/02/05 00:51:43 mayer@tecotoo.myibg.com +1 -0
- Added {configure.in.$$$} to the ignore list
-
- configure.in
- 1.293 03/02/05 00:51:40 mayer@tecotoo.myibg.com +1 -1
- Define needs a value.
-
-ChangeSet
- 1.683.4.140 03/02/04 05:49:13 stenn@whimsy.udel.edu +1 -0
- Added -d and -q to the send trigger
-
- BitKeeper/triggers/send
- 1.3 03/02/04 05:48:31 stenn@whimsy.udel.edu +1 -1
- Added -d and -q to the send trigger
-
-ChangeSet
- 1.683.4.139 03/02/04 05:38:05 stenn@whimsy.udel.edu +1 -0
- Fix a typo.
-
- BitKeeper/triggers/send
- 1.2 03/02/04 05:37:33 stenn@whimsy.udel.edu +1 -1
- Fix a typo.
-
-ChangeSet
- 1.957.1.28 03/02/04 05:28:46 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/triggers/trigger.cfg
- 1.11 03/02/04 05:28:43 stenn@whimsy.udel.edu +0 -2
- Auto merged
-
- BitKeeper/deleted/.del-send
- 1.2 03/02/04 05:28:43 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/send
-
-ChangeSet
- 1.683.4.138 03/02/04 05:23:18 stenn@whimsy.udel.edu +2 -0
- New send trigger
-
- BitKeeper/triggers/trigger.cfg
- 1.9.1.1 03/02/04 05:22:53 stenn@whimsy.udel.edu +2 -2
- New send trigger
-
- BitKeeper/triggers/send
- 1.1 03/02/04 05:21:55 stenn@whimsy.udel.edu +39 -0
-
- BitKeeper/triggers/send
- 1.0 03/02/04 05:21:55 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/send
-
-ChangeSet
- 1.957.1.27 03/02/04 05:16:33 stenn@whimsy.udel.edu +2 -0
- New send trigger
-
- BitKeeper/triggers/trigger.cfg
- 1.10 03/02/04 05:15:33 stenn@whimsy.udel.edu +2 -2
- New send trigger
-
- BitKeeper/triggers/send
- 1.1 03/02/04 05:14:08 stenn@whimsy.udel.edu +39 -0
-
- BitKeeper/triggers/send
- 1.0 03/02/04 05:14:08 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/BitKeeper/triggers/send
-
-ChangeSet
- 1.957.1.26 03/02/04 03:16:45 stenn@whimsy.udel.edu +5 -0
- Cleanup; added system statistics logfile. From Dave Mills.
-
- ntpd/refclock_local.c
- 1.12 03/02/04 03:15:52 stenn@whimsy.udel.edu +54 -66
- Cleanup; added system statistics logfile. From Dave Mills.
-
- ntpd/ntp_util.c
- 1.27 03/02/04 03:15:51 stenn@whimsy.udel.edu +55 -1
- Cleanup; added system statistics logfile. From Dave Mills.
-
- ntpd/ntp_restrict.c
- 1.14 03/02/04 03:15:51 stenn@whimsy.udel.edu +97 -95
- Cleanup; added system statistics logfile. From Dave Mills.
-
- ntpd/ntp_monitor.c
- 1.8 03/02/04 03:15:51 stenn@whimsy.udel.edu +45 -39
- Cleanup; added system statistics logfile. From Dave Mills.
-
- include/ntpd.h
- 1.53.1.1 03/02/04 03:15:51 stenn@whimsy.udel.edu +1 -0
- Cleanup; added system statistics logfile. From Dave Mills.
-
-ChangeSet
- 1.987 03/02/03 22:59:24 mayer@tecotoo.myibg.com +1 -0
- Put platform.h.in back and remove platform.h.
-
- include/isc/platform.h.in
- 1.1 03/02/03 22:59:02 mayer@tecotoo.myibg.com +230 -0
-
- include/isc/platform.h.in
- 1.0 03/02/03 22:59:02 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/platform.h.in
-
-ChangeSet
- 1.986 03/02/03 22:41:28 mayer@tecotoo.myibg.com +1 -0
- Removed erroneous const for pointer.
-
- ntpd/ntp_crypto.c
- 1.81 03/02/03 22:41:05 mayer@tecotoo.myibg.com +3 -3
- Removed erroneous const for pointer.
-
-ChangeSet
- 1.985 03/02/03 01:40:19 stenn@pogo.udel.edu +2 -0
- More ISC macro cleanup
-
- configure.in
- 1.292 03/02/03 01:39:54 stenn@pogo.udel.edu +25 -48
- More ISC macro cleanup
-
-ChangeSet
- 1.984 03/02/03 01:34:22 stenn@pogo.udel.edu +1 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
-
- ntpd/ntp_crypto.c
- 1.80 03/02/03 01:34:16 stenn@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.957.1.25 03/02/03 01:28:25 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_config.c
- 1.84 03/02/03 01:28:22 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.957.1.24 03/02/03 00:32:41 stenn@whimsy.udel.edu +6 -0
- Cleanup from Dave Mills.
-
- util/ntp-keygen.c
- 1.23 03/02/03 00:32:24 stenn@whimsy.udel.edu +2 -0
- Cleanup from Dave Mills.
-
- ntpd/ntp_crypto.c
- 1.76.1.2 03/02/03 00:32:24 stenn@whimsy.udel.edu +84 -55
- Cleanup from Dave Mills.
-
- html/extern.html
- 1.13 03/02/03 00:32:23 stenn@whimsy.udel.edu +10 -6
- Cleanup from Dave Mills.
-
- html/debug.html
- 1.20 03/02/03 00:32:23 stenn@whimsy.udel.edu +15 -14
- Cleanup from Dave Mills.
-
- html/copyright.html
- 1.26 03/02/03 00:32:23 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/clockopt.html
- 1.16 03/02/03 00:32:23 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- BitKeeper/deleted/.del-platform.h.in~cfcbc83b
- 1.2 03/02/03 00:01:07 stenn@pogo.udel.edu +0 -0
- Delete: include/isc/platform.h.in
-
-ChangeSet
- 1.983 03/02/02 01:36:31 stenn@pogo.udel.edu +1 -0
- Merge
-
- ntpd/ntp_crypto.c
- 1.79 03/02/02 01:36:25 stenn@pogo.udel.edu +0 -0
- SCCS merged
-
-ChangeSet
- 1.957.1.23 03/02/02 01:26:15 stenn@whimsy.udel.edu +4 -0
- Cleanup and fixes from Dave Mills.
-
- ntpd/ntp_crypto.c
- 1.76.1.1 03/02/02 01:26:00 stenn@whimsy.udel.edu +9 -14
- Cleanup and fixes from Dave Mills.
-
- html/msyslog.html
- 1.3 03/02/02 01:26:00 stenn@whimsy.udel.edu +2 -1
- Cleanup and fixes from Dave Mills.
-
- html/keygen.html
- 1.3 03/02/02 01:25:59 stenn@whimsy.udel.edu +34 -115
- Cleanup and fixes from Dave Mills.
-
- html/authopt.html
- 1.27 03/02/02 01:25:59 stenn@whimsy.udel.edu +17 -30
- Cleanup and fixes from Dave Mills.
-
-ChangeSet
- 1.982 03/02/01 21:35:16 mayer@tecotoo.myibg.com +1 -0
- readlink function is for Win32 only.
-
- ntpd/ntp_crypto.c
- 1.78 03/02/01 21:34:42 mayer@tecotoo.myibg.com +2 -1
- readlink function is for Win32 only.
-
-ChangeSet
- 1.981 03/02/01 20:41:01 mayer@pogo.udel.edu +2 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
- into pogo.udel.edu:/pogo/users/mayer/ntp-dev-io
-
- BitKeeper/etc/logging_ok
- 1.20 03/02/01 20:40:40 mayer@pogo.udel.edu +1 -0
- Logging to logging@openlogging.org accepted
-
- include/ntp.h
- 1.84 03/02/01 20:40:13 mayer@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.977.1.3 03/02/01 19:55:51 mayer@tecotoo.myibg.com +1 -0
- Replaced include/isc/platform.h.in with include/isc/platform.h. We no longer need
- to generate the platform.h file. All Macros are now defined in config.h.
-
- include/isc/platform.h
- 1.1 03/02/01 19:55:14 mayer@tecotoo.myibg.com +40 -0
-
- include/isc/platform.h
- 1.0 03/02/01 19:55:13 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/platform.h
-
-ChangeSet
- 1.977.1.2 03/02/01 19:06:14 mayer@tecotoo.myibg.com +2 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into tecotoo.myibg.com:H:/ntpbk/ntp-dev
-
- ntpd/ntp_crypto.c
- 1.77 03/02/01 19:05:37 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- include/ntp.h
- 1.81.1.2 03/02/01 19:05:29 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
-ChangeSet
- 1.977.1.1 03/02/01 18:58:49 mayer@tecotoo.myibg.com +17 -0
- Add support for OpenSSL, fixing type bugs and asn2ntp unsigned error and add
- Win32 support for readlink.
-
- ports/winnt/ntptrace/ntptrace.dsp
- 1.9 03/02/01 18:58:09 mayer@tecotoo.myibg.com +2 -2
- Fix include to add support for OpenSSL.
-
- ports/winnt/ntpq/ntpq.dsp
- 1.11 03/02/01 18:58:07 mayer@tecotoo.myibg.com +2 -2
- Fix include to add support for OpenSSL
-
- ports/winnt/ntpdc/ntpdc.dsp
- 1.11 03/02/01 18:58:06 mayer@tecotoo.myibg.com +2 -2
- Fix include to add support for OpenSSL
-
- ports/winnt/ntpdate/ntpdate.dsp
- 1.9 03/02/01 18:58:04 mayer@tecotoo.myibg.com +2 -2
- Fix include to add support for OpenSSL
-
- ports/winnt/ntpd/ntpd.dsp
- 1.14 03/02/01 18:58:03 mayer@tecotoo.myibg.com +4 -4
- Fix include to add support for OpenSSL.
-
- ports/winnt/ntpd/nt_clockstuff.c
- 1.12 03/02/01 18:58:01 mayer@tecotoo.myibg.com +8 -0
- Force update for CMOS (from Terje Mathisen).
-
- ports/winnt/libntp/libntp.dsp
- 1.11 03/02/01 18:58:00 mayer@tecotoo.myibg.com +6 -6
- Fixes for include order and add openssl include path.
-
- ports/winnt/libisc/isc_strerror.c
- 1.2 03/02/01 18:57:58 mayer@tecotoo.myibg.com +1 -1
- Change include to windows.h (for now) rather than winsock2.h.
-
- ports/winnt/include/config.h
- 1.17 03/02/01 18:57:57 mayer@tecotoo.myibg.com +5 -2
- Enable OpenSSL support for Win32.
-
- ntpdate/ntpdate.c
- 1.41 03/02/01 18:57:55 mayer@tecotoo.myibg.com +4 -1
- Macros needed to be redefined for Windows sockets.
-
- ntpd/ntp_timer.c
- 1.23 03/02/01 18:57:53 mayer@tecotoo.myibg.com +1 -1
- String need to be char and not u_char.
-
- ntpd/ntp_peer.c
- 1.54 03/02/01 18:57:49 mayer@tecotoo.myibg.com +2 -2
- String need to be char and not u_char.
-
- ntpd/ntp_crypto.c
- 1.74.1.1 03/02/01 18:57:45 mayer@tecotoo.myibg.com +32 -24
- Define a function for Win32 for readlink which does not exist on Windows.
- character string needs to be defined as char and not u_char.
- asn2ntp() is defined as returning u_long, so returning -1 is invalid. Return (~0) instead.
-
- include/ntpd.h
- 1.54 03/02/01 18:57:41 mayer@tecotoo.myibg.com +1 -1
- Specify arg as char and not u_char.
-
- include/ntp_machine.h
- 1.17 03/02/01 18:57:39 mayer@tecotoo.myibg.com +1 -0
- For Win32 need to specify snprintf in order for link to work correctly.
-
- include/ntp_crypto.h
- 1.32 03/02/01 18:57:37 mayer@tecotoo.myibg.com +2 -2
- Wrong type was specified.
-
- include/ntp.h
- 1.81.1.1 03/02/01 18:57:32 mayer@tecotoo.myibg.com +2 -2
- Wrong type was specified.
-
-ChangeSet
- 1.980 03/02/01 03:40:01 stenn@pogo.udel.edu +1 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
-
- include/ntp.h
- 1.83 03/02/01 03:39:52 stenn@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.979 03/02/01 03:05:20 stenn@pogo.udel.edu +1 -0
- ISC_PLATFORM sniffing
-
- configure.in
- 1.291 03/02/01 03:04:54 stenn@pogo.udel.edu +72 -5
- ISC_PLATFORM sniffing
-
-ChangeSet
- 1.957.1.22 03/01/31 22:27:13 stenn@whimsy.udel.edu +8 -0
- Support for the new "tick" adjustment config variable.
- Crypto random seed file cleanup.
- Various cleanup and fixes.
- From Dave Mills.
-
- ntpd/ntp_proto.c
- 1.146 03/01/31 22:27:08 stenn@whimsy.udel.edu +23 -30
- Cleanup and tick adjustment changes from Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.75 03/01/31 22:27:08 stenn@whimsy.udel.edu +5 -0
- Log out-of-range frequency error. From Dave Mills.
-
- ntpd/ntp_crypto.c
- 1.76 03/01/31 22:27:08 stenn@whimsy.udel.edu +11 -9
- random seed file cleanup from Dave Mills.
-
- ntpd/ntp_config.c
- 1.83 03/01/31 22:27:07 stenn@whimsy.udel.edu +9 -1
- Support for the new "tick" adjustment config variable.
- From Dave Mills.
-
- libntp/systime.c
- 1.24 03/01/31 22:27:07 stenn@whimsy.udel.edu +113 -113
- New tick adjustment stuff from Dave Mills.
-
- include/ntp_stdlib.h
- 1.19 03/01/31 22:27:07 stenn@whimsy.udel.edu +1 -1
- New tick adjustment stuff from Dave Mills.
-
- include/ntp_config.h
- 1.25 03/01/31 22:27:07 stenn@whimsy.udel.edu +2 -1
- Support for the new "tick" adjustment config variable.
- From Dave Mills.
-
- include/ntp.h
- 1.79.1.4 03/01/31 22:27:07 stenn@whimsy.udel.edu +1 -0
- Support for the new "tick" adjustment config variable.
- From Dave Mills.
-
-ChangeSet
- 1.978 03/01/31 03:29:28 stenn@pogo.udel.edu +1 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
-
- include/ntp.h
- 1.82 03/01/31 03:29:19 stenn@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.957.1.21 03/01/30 22:18:28 stenn@whimsy.udel.edu +9 -0
- Upgrade from msec/usec to nsec. From: EGauselmann@beit.de
-
- Also, some documentation updates from Dave Mills.
-
- ntpd/refclock_shm.c
- 1.12 03/01/30 22:18:25 stenn@whimsy.udel.edu +1 -2
- Upgrade from msec/usec to nsec. From: EGauselmann@beit.de
-
- html/scripts/links9.txt
- 1.2 03/01/30 22:18:24 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/msyslog.html
- 1.2 03/01/30 22:18:24 stenn@whimsy.udel.edu +3 -2
- Documentation cleanup from Dave Mills.
-
- BitKeeper/deleted/.del-sunrise1.jpg~63c5b2a2d671408e
- 1.2 03/01/29 22:10:15 stenn@whimsy.udel.edu +0 -0
- Delete: html/pic/sunrise1.jpg
-
- BitKeeper/deleted/.del-butterfly.gif~401fa5d28ff83389
- 1.2 03/01/29 22:10:15 stenn@whimsy.udel.edu +0 -0
- Delete: html/pic/butterfly.gif
-
- BitKeeper/deleted/.del-boom4.gif~33271372
- 1.2 03/01/29 22:10:15 stenn@whimsy.udel.edu +0 -0
- Delete: html/pic/boom4.gif
-
- BitKeeper/deleted/.del-alautun4b.gif~3b35421b5b1f44b7
- 1.2 03/01/29 22:10:15 stenn@whimsy.udel.edu +0 -0
- Delete: html/pic/alautun4b.gif
-
- BitKeeper/deleted/.del-header.txt~60e60bf9df0ed7cf
- 1.2 03/01/29 22:09:46 stenn@whimsy.udel.edu +0 -0
- Delete: html/scripts/header.txt
-
- BitKeeper/deleted/.del-genkeys.html~b4f10b19
- 1.18 03/01/29 22:09:45 stenn@whimsy.udel.edu +0 -0
- Delete: html/genkeys.html
-
-ChangeSet
- 1.683.4.137 03/01/29 00:27:41 stenn@whimsy.udel.edu +1 -0
- Off by one error. From: Chad Loder <cloder@loder.us>
-
- ntpd/ntp_config.c
- 1.50.4.2 03/01/29 00:27:19 stenn@whimsy.udel.edu +1 -1
- Off by one error. From: Chad Loder <cloder@loder.us>
-
-ChangeSet
- 1.957.1.20 03/01/27 16:24:14 stenn@whimsy.udel.edu +8 -0
- Cleanup from Dave Mills.
-
- html/scripts/links10.txt
- 1.2 03/01/27 16:24:08 stenn@whimsy.udel.edu +0 -1
- Cleanup from Dave Mills.
-
- html/rdebug.html
- 1.13 03/01/27 16:24:08 stenn@whimsy.udel.edu +5 -3
- Cleanup from Dave Mills.
-
- html/ntpq.html
- 1.20 03/01/27 16:24:08 stenn@whimsy.udel.edu +3 -1
- Cleanup from Dave Mills.
-
- html/ntpdc.html
- 1.17 03/01/27 16:24:08 stenn@whimsy.udel.edu +3 -1
- Cleanup from Dave Mills.
-
- html/ntpd.html
- 1.28 03/01/27 16:24:08 stenn@whimsy.udel.edu +37 -19
- Cleanup from Dave Mills.
-
- html/keygen.html
- 1.2 03/01/27 16:24:07 stenn@whimsy.udel.edu +57 -67
- Cleanup from Dave Mills.
-
- html/index.html
- 1.25 03/01/27 16:24:07 stenn@whimsy.udel.edu +4 -2
- Cleanup from Dave Mills.
-
- html/debug.html
- 1.19 03/01/27 16:24:07 stenn@whimsy.udel.edu +3 -1
- Cleanup from Dave Mills.
-
-ChangeSet
- 1.957.1.19 03/01/27 16:10:47 stenn@whimsy.udel.edu +8 -0
- Cleanup from Dave Mills.
-
- html/scripts/links12.txt
- 1.1 03/01/27 16:10:42 stenn@whimsy.udel.edu +5 -0
-
- html/msyslog.html
- 1.1 03/01/27 16:10:42 stenn@whimsy.udel.edu +123 -0
-
- html/scripts/links12.txt
- 1.0 03/01/27 16:10:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/scripts/links12.txt
-
- html/msyslog.html
- 1.0 03/01/27 16:10:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/msyslog.html
-
- util/ntp-keygen.c
- 1.22 03/01/27 16:10:41 stenn@whimsy.udel.edu +203 -159
- Cleanup from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.145 03/01/27 16:10:41 stenn@whimsy.udel.edu +21 -28
- Cleanup from Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.74 03/01/27 16:10:41 stenn@whimsy.udel.edu +12 -12
- Cleanup from Dave Mills.
-
- ntpd/ntp_crypto.c
- 1.75 03/01/27 16:10:40 stenn@whimsy.udel.edu +83 -56
- Cleanup from Dave Mills.
-
- include/ntp.h
- 1.79.1.3 03/01/27 16:10:40 stenn@whimsy.udel.edu +1 -0
- Cleanup from Dave Mills.
-
- html/accopt.html
- 1.18 03/01/27 16:10:40 stenn@whimsy.udel.edu +12 -20
- Cleanup from Dave Mills.
-
-ChangeSet
- 1.957.1.18 03/01/23 22:43:48 stenn@whimsy.udel.edu +3 -0
- MJD and flags cleanup from Dave Mills.
-
- ntpd/ntp_util.c
- 1.26 03/01/23 22:43:45 stenn@whimsy.udel.edu +5 -5
- MJD and flags cleanup from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.144 03/01/23 22:43:45 stenn@whimsy.udel.edu +20 -13
- MJD and flags cleanup from Dave Mills.
-
- include/ntp.h
- 1.79.1.2 03/01/23 22:43:44 stenn@whimsy.udel.edu +22 -16
- MJD and flags cleanup from Dave Mills.
-
-ChangeSet
- 1.977 03/01/23 22:11:56 mayer@tecotoo.myibg.com +3 -0
- strerror.c was renamed to isc_strerror.c to prevent conflicts with the standard strerror.c.
-
- ports/winnt/libisc/isc_strerror.c
- 1.1 03/01/23 22:11:33 mayer@tecotoo.myibg.com +440 -0
-
- ports/winnt/libisc/isc_strerror.c
- 1.0 03/01/23 22:11:33 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/libisc/isc_strerror.c
-
- libisc/isc_strerror.c
- 1.1 03/01/23 22:11:31 mayer@tecotoo.myibg.com +72 -0
-
- libisc/isc_strerror.c
- 1.0 03/01/23 22:11:31 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/isc_strerror.c
-
- libntp/Makefile.am
- 1.26 03/01/23 22:11:28 mayer@tecotoo.myibg.com +1 -1
- strerror.c was renamed to isc_strerror.c to prevent conflicts with the standard strerror.c.
-
-ChangeSet
- 1.976 03/01/23 00:12:48 mayer@tecotoo.myibg.com +3 -0
- Fixes to make file
-
- BitKeeper/etc/ignore
- 1.31 03/01/23 00:12:29 mayer@tecotoo.myibg.com +1 -0
- Added {include/isc/Makefile.am.$$$} to the ignore list
-
- libntp/Makefile.am
- 1.25 03/01/23 00:12:26 mayer@tecotoo.myibg.com +0 -4
- Removed commented out lines which were causing problems.
-
- include/isc/Makefile.am
- 1.2 03/01/23 00:12:23 mayer@tecotoo.myibg.com +1 -2
- Removed $(NULL) entry
-
-ChangeSet
- 1.971.1.1 03/01/22 23:33:11 mayer@tecotoo.myibg.com +2 -0
- Fix the thread retrieving the time to the same processor for consistency.
-
- BitKeeper/etc/ignore
- 1.30 03/01/22 23:32:53 mayer@tecotoo.myibg.com +1 -0
- Added ports/winnt/ntpd/nt_clockstuff.c.bak to the ignore list
-
- ports/winnt/ntpd/nt_clockstuff.c
- 1.11 03/01/22 23:32:50 mayer@tecotoo.myibg.com +13 -0
- Make sure that the time is only retrieved from the same processor by tying the thread retrieving
- the code to the first processor. This only affects multiprocessors
-
-ChangeSet
- 1.974 03/01/22 04:28:16 stenn@pogo.udel.edu +1 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
-
- configure.in
- 1.290 03/01/22 04:28:11 stenn@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.973 03/01/22 04:26:18 stenn@pogo.udel.edu +4 -0
- ISC_PLATFORM progress
-
- libntp/Makefile.am
- 1.24 03/01/22 04:25:31 stenn@pogo.udel.edu +1 -1
- libntp now needs include/isc
-
- include/Makefile.am
- 1.15 03/01/22 04:24:40 stenn@pogo.udel.edu +2 -1
- Handle include/isc/
-
- configure.in
- 1.289 03/01/22 04:24:18 stenn@pogo.udel.edu +37 -0
- First pass at ISC_PLATFORM* variables
-
- include/isc/Makefile.am
- 1.1 03/01/22 04:23:04 stenn@pogo.udel.edu +35 -0
-
- include/isc/Makefile.am
- 1.0 03/01/22 04:23:04 stenn@pogo.udel.edu +0 -0
- BitKeeper file /pogo/users/stenn/ntp-dev-io/include/isc/Makefile.am
-
-ChangeSet
- 1.957.1.17 03/01/22 02:04:17 stenn@whimsy.udel.edu +1 -0
- ntp-4.1.73
-
- configure.in
- 1.285.1.3 03/01/22 02:03:58 stenn@whimsy.udel.edu +1 -1
- ntp-4.1.73
-
-ChangeSet
- 1.972 03/01/21 21:34:52 stenn@pogo.udel.edu +2 -0
- Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev-io
-
- ntpd/refclock_palisade.c
- 1.15 03/01/21 21:34:43 stenn@pogo.udel.edu +0 -1
- Auto merged
-
- configure.in
- 1.288 03/01/21 21:34:43 stenn@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.957.1.16 03/01/21 17:23:27 stenn@whimsy.udel.edu +57 -0
- Cleanup from Dave Mills.
-
- html/keygen.html
- 1.1 03/01/21 17:23:20 stenn@whimsy.udel.edu +203 -0
-
- html/icons/mail2.gif
- 1.1 03/01/21 17:23:20 stenn@whimsy.udel.edu +8 -0
-
- html/icons/home.gif
- 1.1 03/01/21 17:23:20 stenn@whimsy.udel.edu +23 -0
-
- html/drivers/icons/mail2.gif
- 1.1 03/01/21 17:23:20 stenn@whimsy.udel.edu +8 -0
-
- html/drivers/icons/home.gif
- 1.1 03/01/21 17:23:20 stenn@whimsy.udel.edu +23 -0
-
- html/keygen.html
- 1.0 03/01/21 17:23:20 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/keygen.html
-
- html/icons/mail2.gif
- 1.0 03/01/21 17:23:20 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/icons/mail2.gif
-
- html/icons/home.gif
- 1.0 03/01/21 17:23:20 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/icons/home.gif
-
- html/drivers/icons/mail2.gif
- 1.0 03/01/21 17:23:20 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/drivers/icons/mail2.gif
-
- html/drivers/icons/home.gif
- 1.0 03/01/21 17:23:20 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/drivers/icons/home.gif
-
- html/drivers/oncore-shmem.html
- 1.10 03/01/21 17:23:19 stenn@whimsy.udel.edu +12 -8
- Cleanup from Dave Mills.
-
- html/drivers/driver9.html
- 1.12 03/01/21 17:23:19 stenn@whimsy.udel.edu +6 -6
- Cleanup from Dave Mills.
-
- html/drivers/driver8.html
- 1.11 03/01/21 17:23:19 stenn@whimsy.udel.edu +12 -12
- Cleanup from Dave Mills.
-
- html/drivers/driver7.html
- 1.19 03/01/21 17:23:19 stenn@whimsy.udel.edu +5 -5
- Cleanup from Dave Mills.
-
- html/drivers/driver6.html
- 1.14 03/01/21 17:23:19 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills.
-
- html/drivers/driver5.html
- 1.10 03/01/21 17:23:19 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver44.html
- 1.8 03/01/21 17:23:19 stenn@whimsy.udel.edu +9 -9
- Cleanup from Dave Mills.
-
- html/drivers/driver43.html
- 1.7 03/01/21 17:23:19 stenn@whimsy.udel.edu +5 -5
- Cleanup from Dave Mills.
-
- html/drivers/driver42.html
- 1.10 03/01/21 17:23:19 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver40.html
- 1.9 03/01/21 17:23:18 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/drivers/driver4.html
- 1.10 03/01/21 17:23:18 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/drivers/driver39.html
- 1.10 03/01/21 17:23:18 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver38.html
- 1.10 03/01/21 17:23:18 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver37.html
- 1.10 03/01/21 17:23:18 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/drivers/driver36.html
- 1.17 03/01/21 17:23:18 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills.
-
- html/drivers/driver35.html
- 1.12 03/01/21 17:23:18 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/drivers/driver34.html
- 1.9 03/01/21 17:23:18 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/drivers/driver33.html
- 1.10 03/01/21 17:23:18 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/drivers/driver32.html
- 1.10 03/01/21 17:23:18 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/drivers/driver30.html
- 1.15 03/01/21 17:23:17 stenn@whimsy.udel.edu +32 -32
- Cleanup from Dave Mills.
-
- html/drivers/driver3.html
- 1.9 03/01/21 17:23:17 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver29.html
- 1.11 03/01/21 17:23:17 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver28.html
- 1.9 03/01/21 17:23:17 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver27.html
- 1.10 03/01/21 17:23:17 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver26.html
- 1.8 03/01/21 17:23:17 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/drivers/driver24.html
- 1.8 03/01/21 17:23:17 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/drivers/driver23.html
- 1.11 03/01/21 17:23:17 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver22.html
- 1.13 03/01/21 17:23:17 stenn@whimsy.udel.edu +5 -5
- Cleanup from Dave Mills.
-
- html/drivers/driver20.html
- 1.11 03/01/21 17:23:17 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/release.html
- 1.27 03/01/21 17:23:16 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver2.html
- 1.10 03/01/21 17:23:16 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver19.html
- 1.9 03/01/21 17:23:16 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver18.html
- 1.10 03/01/21 17:23:16 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver16.html
- 1.9 03/01/21 17:23:16 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver12.html
- 1.10 03/01/21 17:23:16 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills.
-
- html/drivers/driver11.html
- 1.10 03/01/21 17:23:16 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/drivers/driver10.html
- 1.10 03/01/21 17:23:16 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills.
-
- html/drivers/driver1.html
- 1.11 03/01/21 17:23:16 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills.
-
- html/refclock.html
- 1.27 03/01/21 17:23:15 stenn@whimsy.udel.edu +41 -41
- Cleanup from Dave Mills.
-
- html/quick.html
- 1.14 03/01/21 17:23:15 stenn@whimsy.udel.edu +4 -5
- Cleanup from Dave Mills.
-
- html/prefer.html
- 1.13 03/01/21 17:23:15 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/pps.html
- 1.17 03/01/21 17:23:15 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills.
-
- html/ntpd.html
- 1.27 03/01/21 17:23:15 stenn@whimsy.udel.edu +69 -39
- Cleanup from Dave Mills.
-
- html/miscopt.html
- 1.25 03/01/21 17:23:15 stenn@whimsy.udel.edu +5 -8
- Cleanup from Dave Mills.
-
- html/ldisc.html
- 1.11 03/01/21 17:23:14 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/index.html
- 1.24 03/01/21 17:23:14 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills.
-
- html/extern.html
- 1.12 03/01/21 17:23:14 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/debug.html
- 1.18 03/01/21 17:23:14 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/build.html
- 1.17 03/01/21 17:23:14 stenn@whimsy.udel.edu +17 -17
- Cleanup from Dave Mills.
-
- html/authopt.html
- 1.26 03/01/21 17:23:14 stenn@whimsy.udel.edu +7 -9
- Cleanup from Dave Mills.
-
- html/assoc.html
- 1.19 03/01/21 17:23:13 stenn@whimsy.udel.edu +7 -7
- Cleanup from Dave Mills.
-
- html/accopt.html
- 1.17 03/01/21 17:23:13 stenn@whimsy.udel.edu +5 -5
- Cleanup from Dave Mills.
-
- html/drivers/oncore-shmem.html
- 1.9 03/01/21 01:25:31 stenn@whimsy.udel.edu +0 -0
- Rename: html/oncore-shmem.html -> html/drivers/oncore-shmem.html
-
- html/drivers/driver9.html
- 1.11 03/01/21 01:21:20 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver9.html -> html/drivers/driver9.html
-
- html/drivers/driver8.html
- 1.10 03/01/21 01:21:19 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver8.html -> html/drivers/driver8.html
-
- html/drivers/driver7.html
- 1.18 03/01/21 01:21:19 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver7.html -> html/drivers/driver7.html
-
- html/drivers/driver6.html
- 1.13 03/01/21 01:21:19 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver6.html -> html/drivers/driver6.html
-
- html/drivers/driver5.html
- 1.9 03/01/21 01:21:19 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver5.html -> html/drivers/driver5.html
-
- html/drivers/driver44.html
- 1.7 03/01/21 01:21:19 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver44.html -> html/drivers/driver44.html
-
- html/drivers/driver43.html
- 1.6 03/01/21 01:21:19 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver43.html -> html/drivers/driver43.html
-
- html/drivers/driver42.html
- 1.9 03/01/21 01:21:18 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver42.html -> html/drivers/driver42.html
-
- html/drivers/driver40.html
- 1.8 03/01/21 01:21:18 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver40.html -> html/drivers/driver40.html
-
- html/drivers/driver4.html
- 1.9 03/01/21 01:21:18 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver4.html -> html/drivers/driver4.html
-
- html/drivers/driver39.html
- 1.9 03/01/21 01:21:18 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver39.html -> html/drivers/driver39.html
-
- html/drivers/driver38.html
- 1.9 03/01/21 01:21:18 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver38.html -> html/drivers/driver38.html
-
- html/drivers/driver37.html
- 1.9 03/01/21 01:21:18 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver37.html -> html/drivers/driver37.html
-
- html/drivers/driver36.html
- 1.16 03/01/21 01:21:17 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver36.html -> html/drivers/driver36.html
-
- html/drivers/driver35.html
- 1.11 03/01/21 01:21:17 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver35.html -> html/drivers/driver35.html
-
- html/drivers/driver34.html
- 1.8 03/01/21 01:21:17 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver34.html -> html/drivers/driver34.html
-
- html/drivers/driver33.html
- 1.9 03/01/21 01:21:17 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver33.html -> html/drivers/driver33.html
-
- html/drivers/driver32.html
- 1.9 03/01/21 01:21:17 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver32.html -> html/drivers/driver32.html
-
- html/drivers/driver30.html
- 1.14 03/01/21 01:21:17 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver30.html -> html/drivers/driver30.html
-
- html/drivers/driver3.html
- 1.8 03/01/21 01:21:16 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver3.html -> html/drivers/driver3.html
-
- html/drivers/driver29.html
- 1.10 03/01/21 01:21:16 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver29.html -> html/drivers/driver29.html
-
- html/drivers/driver28.html
- 1.8 03/01/21 01:21:16 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver28.html -> html/drivers/driver28.html
-
- html/drivers/driver27.html
- 1.9 03/01/21 01:21:16 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver27.html -> html/drivers/driver27.html
-
- html/drivers/driver26.html
- 1.7 03/01/21 01:21:16 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver26.html -> html/drivers/driver26.html
-
- html/drivers/driver24.html
- 1.7 03/01/21 01:21:16 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver24.html -> html/drivers/driver24.html
-
- html/drivers/driver23.html
- 1.10 03/01/21 01:21:15 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver23.html -> html/drivers/driver23.html
-
- html/drivers/driver22.html
- 1.12 03/01/21 01:21:15 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver22.html -> html/drivers/driver22.html
-
- html/drivers/driver20.html
- 1.10 03/01/21 01:21:15 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver20.html -> html/drivers/driver20.html
-
- html/drivers/driver2.html
- 1.9 03/01/21 01:21:15 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver2.html -> html/drivers/driver2.html
-
- html/drivers/driver19.html
- 1.8 03/01/21 01:21:15 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver19.html -> html/drivers/driver19.html
-
- html/drivers/driver18.html
- 1.9 03/01/21 01:21:15 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver18.html -> html/drivers/driver18.html
-
- html/drivers/driver16.html
- 1.8 03/01/21 01:21:14 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver16.html -> html/drivers/driver16.html
-
- html/drivers/driver12.html
- 1.9 03/01/21 01:21:14 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver12.html -> html/drivers/driver12.html
-
- html/drivers/driver11.html
- 1.9 03/01/21 01:21:14 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver11.html -> html/drivers/driver11.html
-
- html/drivers/driver10.html
- 1.9 03/01/21 01:21:14 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver10.html -> html/drivers/driver10.html
-
- html/drivers/driver1.html
- 1.10 03/01/21 01:21:14 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver1.html -> html/drivers/driver1.html
-
-ChangeSet
- 1.957.1.15 03/01/20 22:26:15 stenn@whimsy.udel.edu +1 -0
- cryptostats cleanup from Dave Mills.
-
- ntpd/ntp_util.c
- 1.25 03/01/20 22:26:12 stenn@whimsy.udel.edu +8 -0
- cryptostats cleanup from Dave Mills.
-
-ChangeSet
- 1.957.1.14 03/01/20 02:19:34 stenn@whimsy.udel.edu +7 -0
- Merge
-
- util/ntptime.c
- 1.16 03/01/20 02:18:57 stenn@whimsy.udel.edu +0 -1
- Merge cleanup.
-
- ntpd/refclock_hopfser.c
- 1.8 03/01/20 02:17:53 stenn@whimsy.udel.edu +0 -7
- Use the same sync fix in -stable and -dev.
-
- ntpd/ntp_config.c
- 1.82 03/01/20 02:15:59 stenn@whimsy.udel.edu +0 -1
- Use the same fix for '*' in -stable and -dev.
- C
-
- libntp/md5c.c
- 1.5 03/01/20 02:14:42 stenn@whimsy.udel.edu +0 -9
- Use the same fix for rename of "index" in -stable and -dev.
-
- ntpd/refclock_palisade.c
- 1.13.1.1 03/01/20 02:06:08 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/refclock_hopfpci.c
- 1.8 03/01/20 02:06:08 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.285.1.2 03/01/20 02:06:07 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.957.1.13 03/01/20 01:58:19 stenn@whimsy.udel.edu +2 -0
- Fixes from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.143 03/01/20 01:56:17 stenn@whimsy.udel.edu +39 -37
- Fixes from Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.73 03/01/20 01:56:17 stenn@whimsy.udel.edu +11 -5
- Fixes from Dave Mills.
-
-ChangeSet
- 1.971 03/01/19 00:32:43 mayer@tecotoo.myibg.com +1 -0
- Add missing include file.
-
- include/isc/print.h
- 1.1 03/01/19 00:32:18 mayer@tecotoo.myibg.com +69 -0
-
- include/isc/print.h
- 1.0 03/01/19 00:32:17 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/print.h
-
-ChangeSet
- 1.970 03/01/18 23:34:25 mayer@tecotoo.myibg.com +2 -0
- Added strerror.c file to list.
-
- libisc/strerror.c
- 1.1 03/01/18 23:33:54 mayer@tecotoo.myibg.com +72 -0
-
- libisc/strerror.c
- 1.0 03/01/18 23:33:54 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/strerror.c
-
- libntp/Makefile.am
- 1.23 03/01/18 23:33:51 mayer@tecotoo.myibg.com +2 -1
- Add strerror.c to isc list.
-
-ChangeSet
- 1.969 03/01/18 23:13:32 mayer@tecotoo.myibg.com +1 -0
- Make this file a stub. We probably don't need IPv6 definitions on Unix.
-
- include/isc/ipv6.h
- 1.2 03/01/18 23:13:10 mayer@tecotoo.myibg.com +5 -0
- Make this file a stub. We probably don't need IPv6 definitions on Unix.
-
-ChangeSet
- 1.968 03/01/18 11:41:12 mayer@tecotoo.myibg.com +1 -0
- Remove unnecessary include file.
-
- libisc/interfaceiter.c
- 1.2 03/01/18 11:40:44 mayer@tecotoo.myibg.com +0 -1
- Remove unnecessary include file.
-
-ChangeSet
- 1.967 03/01/18 11:10:18 mayer@tecotoo.myibg.com +2 -0
- Added libisc routines into build of libntp library
-
- BitKeeper/etc/ignore
- 1.29 03/01/18 11:09:55 mayer@tecotoo.myibg.com +1 -0
- Added {libntp/Makefile.am.$$$} to the ignore list
-
- libntp/Makefile.am
- 1.22 03/01/18 11:09:52 mayer@tecotoo.myibg.com +3 -1
- Added libisc routines into build of libntp library.
-
-ChangeSet
- 1.966 03/01/17 23:14:19 mayer@tecotoo.myibg.com +1 -0
- reset for set_useaddr().
-
- ntpd/ntp_io.c
- 1.60 03/01/17 23:13:50 mayer@tecotoo.myibg.com +37 -16
- Recheckin to fix all the things that BitKeeper unfixed.
-
-ChangeSet
- 1.965 03/01/17 22:39:28 mayer@tecotoo.myibg.com +2 -0
- Bitkeeper is stupid
-
- ntpd/ntp_io.c
- 1.59 03/01/17 22:39:05 mayer@tecotoo.myibg.com +16 -38
- Ignore. Bitkeeper is stupid
-
- configure.in
- 1.287 03/01/17 22:39:03 mayer@tecotoo.myibg.com +0 -0
- No change
-
-ChangeSet
- 1.964 03/01/17 20:56:06 mayer@tecotoo.myibg.com +1 -0
- Fix for prototype functions and change BOOL to isc_boolean_t
-
- ntpd/ntp_io.c
- 1.58 03/01/17 20:55:35 mayer@tecotoo.myibg.com +9 -9
- Fix the prototype functions (do we really need this style?) and change BOOL which
- SunOS apparently doesn't understand. Use ISC's isc_boolean_t instead.
-
-ChangeSet
- 1.683.4.136 03/01/18 02:48:55 matthias.andree@gmx.de +1 -0
- Merge bk://ntp.bkbits.net/ntp-stable
- into gmx.de:/home/emma/bk-3rdparty/ntp-stable
-
- configure.in
- 1.219.3.40 03/01/18 02:48:54 matthias.andree@gmx.de +0 -0
- Auto merged
-
-ChangeSet
- 1.957.1.12 03/01/17 18:16:25 stenn@whimsy.udel.edu +6 -0
- Apply the linux broadcast fix to both IP stacks.
-
- ntpd/ntp_io.c
- 1.53.1.2 03/01/17 18:16:22 stenn@whimsy.udel.edu +4 -2
- The linux broadcast fix needs to be used for both IPv4 and IPv6.
- Probably.
-
- ntpd/refclock_neoclock4x.c
- 1.3 03/01/17 18:07:41 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.285.1.1 03/01/17 18:07:40 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- acinclude.m4
- 1.11 03/01/17 18:07:39 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/logging_ok
- 1.19 03/01/17 18:07:38 stenn@whimsy.udel.edu +1 -0
- 'Auto converge'
-
- BitKeeper/etc/logging_ok
- 1.18 03/01/17 18:07:38 stenn@whimsy.udel.edu +0 -0
- Rename: BitKeeper/deleted/.del-logging_ok~bebb84d857254496 -> BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.16 03/01/17 18:07:37 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.17 03/01/17 18:07:36 stenn@whimsy.udel.edu +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.15 03/01/17 18:07:31 stenn@whimsy.udel.edu +1 -2
- auto-union
-
-ChangeSet
- 1.683.4.135 03/01/17 17:42:19 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-stable-linux
-
- configure.in
- 1.219.3.39 03/01/17 17:42:17 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.963 03/01/17 01:38:23 mayer@tecotoo.myibg.com +2 -0
- Merge bk://www.ntp.org/home/bk/ntp-dev
- into tecotoo.myibg.com:H:/ntpbk/ntp-dev
-
- include/ntp.h
- 1.81 03/01/17 01:38:02 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- configure.in
- 1.286 03/01/17 01:37:59 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
-ChangeSet
- 1.962 03/01/17 01:34:09 mayer@tecotoo.myibg.com +2 -0
- Miscellaneous bug fixes for ntp_io.c support
-
- ntpd/ntp_io.c
- 1.57 03/01/17 01:33:48 mayer@tecotoo.myibg.com +7 -5
- Define functions, add parentheses, fix missing semi-colon.
-
- include/isc/net.h
- 1.2 03/01/17 01:33:45 mayer@tecotoo.myibg.com +2 -0
- Don't define structure for now
-
-ChangeSet
- 1.961 03/01/15 00:09:39 stenn@pogo.udel.edu +2 -0
- Handle generated file include/isc/platform.h
-
- configure.in
- 1.284.1.1 03/01/15 00:08:43 stenn@pogo.udel.edu +1 -0
-
- ntpd/Makefile.am
- 1.34 03/01/15 00:07:36 stenn@pogo.udel.edu +1 -1
-
-ChangeSet
- 1.957.1.11 03/01/14 16:24:42 stenn@whimsy.udel.edu +2 -0
- Cleanup from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.142 03/01/14 16:24:38 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.72 03/01/14 16:24:38 stenn@whimsy.udel.edu +9 -10
- Cleanup from Dave Mills.
-
-ChangeSet
- 1.683.12.10 03/01/11 02:46:28 matthias.andree@gmx.de +1 -0
- Get types in printf format really right this time.
-
- parseutil/dcfd.c
- 1.11 03/01/11 02:46:27 matthias.andree@gmx.de +2 -2
- Get types in printf format really right this time.
-
-ChangeSet
- 1.683.12.9 03/01/11 02:45:54 matthias.andree@gmx.de +1 -0
- Fix NULL -> '\0'.
-
- ntpd/refclock_palisade.c
- 1.9.2.2 03/01/11 02:45:53 matthias.andree@gmx.de +1 -1
- Fix NULL -> '\0'.
-
-ChangeSet
- 1.683.12.8 03/01/11 02:40:53 matthias.andree@gmx.de +1 -0
- Use %ld to print "long" variables rather than %d.
-
- parseutil/dcfd.c
- 1.10 03/01/11 02:40:51 matthias.andree@gmx.de +2 -2
- Use %ld to print "long" variables rather than %d.
-
-ChangeSet
- 1.683.12.7 03/01/11 02:39:21 matthias.andree@gmx.de +1 -0
- Fix compiler warnings that were possible bugs.
-
- util/ntptime.c
- 1.14.1.2 03/01/11 02:39:08 matthias.andree@gmx.de +4 -4
- Add some volatile keywords to avoid variable clobbering by
- siglongjmp().
-
- Cast ntv.tai to long and use %ld when printing TAI offset.
-
-ChangeSet
- 1.683.12.6 03/01/11 01:47:11 matthias.andree@gmx.de +1 -0
- Fix SUNWspro compiler warning about signedness in assigning a
- string constant.
-
- ntpd/ntp_config.c
- 1.50.4.1 03/01/11 01:47:10 matthias.andree@gmx.de +1 -1
- Fix SUNWspro compiler warning about signedness in assigning a
- string constant.
-
-ChangeSet
- 1.683.12.5 03/01/11 01:42:41 matthias.andree@gmx.de +1 -0
- Fix compiler warnings about sync(2) getting shadowed.
-
- ntpd/refclock_hopfser.c
- 1.3.2.1 03/01/11 01:42:40 matthias.andree@gmx.de +7 -7
- Rename sync to synch to avoid shadowing the global sync(2) function.
- Fixes compiler warnings.
-
-ChangeSet
- 1.683.12.4 03/01/11 01:41:55 matthias.andree@gmx.de +1 -0
- Fix "implicit declaration" warning for ioctl on non-WINNT systems.
-
- ntpd/refclock_hopfpci.c
- 1.3.1.1 03/01/11 01:41:54 matthias.andree@gmx.de +2 -1
- Add #include <sys/ioctl.h> unless SYS_WINNT is defined.
-
-ChangeSet
- 1.683.12.3 03/01/11 01:40:52 matthias.andree@gmx.de +1 -0
- Rename "index" to "idx" to avoid compiler warnings about shadowed
- definitions.
-
- libntp/md5c.c
- 1.2.1.1 03/01/11 01:40:51 matthias.andree@gmx.de +9 -9
- Rename "index" to "idx" to avoid compiler warnings about a global
- getting shadowed. (index(3) is the BSD variant of strchr(3)).
-
-ChangeSet
- 1.683.12.2 03/01/11 01:38:19 matthias.andree@gmx.de +2 -0
- Fix compiler warning about rawtime getting clobbered by longjmp()
- or vfork().
-
- util/ntptime.c
- 1.14.1.1 03/01/11 01:38:18 matthias.andree@gmx.de +1 -1
- Make rawtime a volatile int, to fix a compiler warning about
- longjmp()/vfork() clobbering this variable.
-
- configure.in
- 1.219.6.2 03/01/11 01:38:18 matthias.andree@gmx.de +1 -0
- Add AC_C_VOLATILE for volatile.
-
-ChangeSet
- 1.683.12.1 03/01/11 01:09:48 matthias.andree@gmx.de +1 -0
- Fix autoconf warnings about AC_AIX/AC_MINIX.
-
- configure.in
- 1.219.6.1 03/01/11 01:09:43 matthias.andree@gmx.de +4 -2
- Move AC_AIX and AC_MINIX way up to avoid autoconf warnings and
- AIX astonishment, just in case.
-
-ChangeSet
- 1.683.10.2 03/01/10 17:16:47 claas@nixfix.(none) +1 -0
- refclock_neoclock4x.c:
- Driver update to version 1.12
-
- ntpd/refclock_neoclock4x.c
- 1.1.1.2 03/01/10 17:16:26 claas@nixfix.(none) +72 -36
- Driver update to version 1.12
-
-ChangeSet
- 1.683.4.134 03/01/09 18:05:24 stenn@whimsy.udel.edu +2 -0
- Move the AH_TEMPLATE for ULONG_CONST to its macro definition.
-
- configure.in
- 1.219.3.38 03/01/09 18:05:12 stenn@whimsy.udel.edu +0 -1
- Move the AH_TEMPLATE for ULONG_CONST to the ULONG_CONST macro definition.
-
- acinclude.m4
- 1.3.1.7 03/01/09 18:05:12 stenn@whimsy.udel.edu +2 -1
- Move the AH_TEMPLATE for ULONG_CONST here, where it belongs.
-
-ChangeSet
- 1.957.1.10 03/01/08 20:38:12 stenn@whimsy.udel.edu +3 -0
- Cleanup and improvements from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.141 03/01/08 20:38:08 stenn@whimsy.udel.edu +7 -6
- Cleanup and improvements from Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.71 03/01/08 20:38:07 stenn@whimsy.udel.edu +16 -23
- Cleanup and improvements from Dave Mills.
-
- include/ntp.h
- 1.79.1.1 03/01/08 20:38:07 stenn@whimsy.udel.edu +1 -1
- Cleanup and improvements from Dave Mills.
-
-ChangeSet
- 1.957.1.9 03/01/08 20:30:34 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- include/ntp_machine.h
- 1.16 03/01/08 20:30:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.11.1 03/01/08 20:27:30 stenn@whimsy.udel.edu +1 -0
- WINNT vsnprintf fix from Terje Mathisen <terje.mathisen@hda.hydro.com>
-
- include/ntp_machine.h
- 1.7.2.1 03/01/08 20:27:26 stenn@whimsy.udel.edu +1 -0
- WINNT vsnprintf fix from Terje Mathisen <terje.mathisen@hda.hydro.com>
-
-ChangeSet
- 1.683.10.1 03/01/08 14:02:34 claas@nixfix.(none) +3 -0
- refclock_neoclock4x.c:
- driver update to version 1.11. See source for more
- information ChangeLog.
- configure.in:
- enable NeoClock4X receiver by default
-
- BitKeeper/etc/logging_ok
- 1.1.1.7 03/01/08 14:02:34 claas@nixfix.(none) +4 -3
- Logging to logging@openlogging.org accepted
-
- ntpd/refclock_neoclock4x.c
- 1.1.1.1 03/01/08 13:57:36 claas@nixfix.(none) +237 -87
- driver update to version 1.11. See source for more
- information ChangeLog.
-
- configure.in
- 1.219.5.1 03/01/08 13:56:57 claas@nixfix.(none) +1 -1
- enable NeoClock4X receiver by default
-
-ChangeSet
- 1.683.4.132 03/01/06 22:55:24 matthias.andree@gmx.de +1 -0
- Fix Linux multicast client mode.
-
- ntpd/ntp_io.c
- 1.20.3.2 03/01/06 22:55:22 matthias.andree@gmx.de +2 -0
- Set reuseaddr on all sockets before opening the multicast listening socket,
- and reset reuseaddr to 0 after opening the socket.
- Fixes Linux multicast client mode.
-
-ChangeSet
- 1.957.1.8 03/01/05 00:48:50 stenn@whimsy.udel.edu +6 -0
- Merge
-
- configure.in
- 1.285 03/01/05 00:48:13 stenn@whimsy.udel.edu +0 -1
- Handle VERSION differences between -stable and -dev.
-
- BitKeeper/deleted/.del-acconfig.h~3aed0663
- 1.31 03/01/05 00:46:52 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- README
- 1.19 03/01/05 00:46:51 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.35 03/01/05 00:46:51 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/logging_ok
- 1.16 03/01/05 00:46:49 stenn@whimsy.udel.edu +1 -0
- 'Auto converge'
-
- BitKeeper/deleted/.del-acconfig.h~3aed0663
- 1.30 03/01/05 00:46:50 stenn@whimsy.udel.edu +0 -0
- Merge rename: acconfig.h -> BitKeeper/deleted/.del-acconfig.h~3aed0663
-
- BitKeeper/etc/logging_ok
- 1.15 03/01/05 00:46:49 stenn@whimsy.udel.edu +0 -0
- Rename: BitKeeper/deleted/.del-logging_ok~bebb84d857254496 -> BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.14 03/01/05 00:46:49 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.14 03/01/05 00:46:48 stenn@whimsy.udel.edu +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.13 03/01/05 00:46:44 stenn@whimsy.udel.edu +1 -1
- auto-union
-
-ChangeSet
- 1.683.4.131 03/01/05 06:10:42 matthias.andree@gmx.de +2 -0
- Fix Linux' broadcastclient mode.
- Patch by Allen Mcintosh.
-
- ntpd/ntp_io.c
- 1.20.3.1 03/01/05 06:10:40 matthias.andree@gmx.de +34 -15
- Move code to change sockets' SO_REUSEADDR into set_reuseaddr, and use
- that to fix Linux' broadcastclient mode.
- Patch by Allen Mcintosh
-
- configure.in
- 1.219.3.37 03/01/05 06:10:40 matthias.andree@gmx.de +0 -3
- Change: Linux also needs broadcast sockets.
- Patch by Allen Mcintosh
-
-ChangeSet
- 1.960 03/01/04 22:27:45 mayer@tecotoo.myibg.com +2 -0
- Merge fixes
-
- ntpd/ntp_io.c
- 1.56 03/01/04 22:27:32 mayer@tecotoo.myibg.com +4 -3
- merge fixes
-
- include/ntp.h
- 1.80 03/01/04 22:27:31 mayer@tecotoo.myibg.com +0 -0
- Merge fixes
-
-ChangeSet
- 1.959 03/01/04 21:02:02 mayer@tecotoo.myibg.com +58 -0
- Added Interface Iteration support for the ntp_io.c code. This includes adding a lot of
- header files and some c files. Bug fixes to support IPv6 properly. Fixes to include order
- to dsp files.
-
- BitKeeper/etc/ignore
- 1.28 03/01/04 21:01:18 mayer@tecotoo.myibg.com +2 -0
- Added libntp/net.c.bak {ntpd/Copy of ntp_io.csave} to the ignore list
-
- ports/winnt/libisc/once.c
- 1.1 03/01/04 21:01:15 mayer@tecotoo.myibg.com +51 -0
-
- ports/winnt/libisc/once.c
- 1.0 03/01/04 21:01:15 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/libisc/once.c
-
- ports/winnt/libisc/net.c
- 1.1 03/01/04 21:01:14 mayer@tecotoo.myibg.com +123 -0
-
- ports/winnt/libisc/net.c
- 1.0 03/01/04 21:01:13 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/libisc/net.c
-
- ports/winnt/libisc/interfaceiter.c
- 1.1 03/01/04 21:01:12 mayer@tecotoo.myibg.com +400 -0
-
- ports/winnt/libisc/interfaceiter.c
- 1.0 03/01/04 21:01:12 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/libisc/interfaceiter.c
-
- ports/winnt/include/isc/strerror.h
- 1.1 03/01/04 21:01:11 mayer@tecotoo.myibg.com +42 -0
-
- ports/winnt/include/isc/strerror.h
- 1.0 03/01/04 21:01:11 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/include/isc/strerror.h
-
- ports/winnt/include/isc/platform.h
- 1.1 03/01/04 21:01:09 mayer@tecotoo.myibg.com +92 -0
-
- ports/winnt/include/isc/platform.h
- 1.0 03/01/04 21:01:09 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/include/isc/platform.h
-
- ports/winnt/include/isc/once.h
- 1.1 03/01/04 21:01:08 mayer@tecotoo.myibg.com +43 -0
-
- ports/winnt/include/isc/once.h
- 1.0 03/01/04 21:01:08 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/include/isc/once.h
-
- ports/winnt/include/isc/offset.h
- 1.1 03/01/04 21:01:06 mayer@tecotoo.myibg.com +45 -0
-
- ports/winnt/include/isc/offset.h
- 1.0 03/01/04 21:01:06 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/include/isc/offset.h
-
- ports/winnt/include/isc/net.h
- 1.1 03/01/04 21:01:05 mayer@tecotoo.myibg.com +270 -0
-
- ports/winnt/include/isc/net.h
- 1.0 03/01/04 21:01:05 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/include/isc/net.h
-
- ports/winnt/include/isc/mutex.h
- 1.1 03/01/04 21:01:03 mayer@tecotoo.myibg.com +51 -0
-
- ports/winnt/include/isc/mutex.h
- 1.0 03/01/04 21:01:03 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/include/isc/mutex.h
-
- ports/winnt/include/isc/ipv6.h
- 1.1 03/01/04 21:01:02 mayer@tecotoo.myibg.com +111 -0
-
- ports/winnt/include/isc/ipv6.h
- 1.0 03/01/04 21:01:02 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/include/isc/ipv6.h
-
- ports/winnt/include/isc/int.h
- 1.1 03/01/04 21:01:01 mayer@tecotoo.myibg.com +56 -0
-
- ports/winnt/include/isc/int.h
- 1.0 03/01/04 21:01:00 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/include/isc/int.h
-
- libntp/net.c.bak
- 1.1 03/01/04 21:00:59 mayer@tecotoo.myibg.com +153 -0
-
- libntp/net.c.bak
- 1.0 03/01/04 21:00:59 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libntp/net.c.bak
-
- libisc/net.c
- 1.1 03/01/04 21:00:57 mayer@tecotoo.myibg.com +127 -0
-
- libisc/net.c
- 1.0 03/01/04 21:00:57 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/net.c
-
- libisc/msgcat.c
- 1.1 03/01/04 21:00:55 mayer@tecotoo.myibg.com +129 -0
-
- libisc/msgcat.c
- 1.0 03/01/04 21:00:55 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/msgcat.c
-
- libisc/mem.c
- 1.1 03/01/04 21:00:53 mayer@tecotoo.myibg.com +42 -0
-
- libisc/mem.c
- 1.0 03/01/04 21:00:53 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/mem.c
-
- libisc/lib.c
- 1.1 03/01/04 21:00:52 mayer@tecotoo.myibg.com +77 -0
-
- libisc/lib.c
- 1.0 03/01/04 21:00:52 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/lib.c
-
- libisc/interfaceiter.c
- 1.1 03/01/04 21:00:50 mayer@tecotoo.myibg.com +160 -0
-
- libisc/interfaceiter.c
- 1.0 03/01/04 21:00:50 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/interfaceiter.c
-
- libisc/ifiter_sysctl.c
- 1.1 03/01/04 21:00:49 mayer@tecotoo.myibg.com +294 -0
-
- libisc/ifiter_sysctl.c
- 1.0 03/01/04 21:00:48 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/ifiter_sysctl.c
-
- libisc/ifiter_ioctl.c
- 1.1 03/01/04 21:00:47 mayer@tecotoo.myibg.com +771 -0
-
- libisc/ifiter_ioctl.c
- 1.0 03/01/04 21:00:47 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/ifiter_ioctl.c
-
- libisc/error.c
- 1.1 03/01/04 21:00:45 mayer@tecotoo.myibg.com +101 -0
-
- libisc/error.c
- 1.0 03/01/04 21:00:45 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/error.c
-
- libisc/assertions.c
- 1.1 03/01/04 21:00:44 mayer@tecotoo.myibg.com +93 -0
-
- libisc/assertions.c
- 1.0 03/01/04 21:00:44 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/libisc/assertions.c
-
- include/isc/util.h
- 1.1 03/01/04 21:00:42 mayer@tecotoo.myibg.com +225 -0
-
- include/isc/util.h
- 1.0 03/01/04 21:00:42 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/util.h
-
- include/isc/types.h
- 1.1 03/01/04 21:00:40 mayer@tecotoo.myibg.com +102 -0
-
- include/isc/types.h
- 1.0 03/01/04 21:00:40 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/types.h
-
- include/isc/string.h
- 1.1 03/01/04 21:00:38 mayer@tecotoo.myibg.com +56 -0
-
- include/isc/string.h
- 1.0 03/01/04 21:00:38 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/string.h
-
- include/isc/strerror.h
- 1.1 03/01/04 21:00:37 mayer@tecotoo.myibg.com +42 -0
-
- include/isc/strerror.h
- 1.0 03/01/04 21:00:37 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/strerror.h
-
- include/isc/sockaddr.h
- 1.1 03/01/04 21:00:35 mayer@tecotoo.myibg.com +196 -0
-
- include/isc/sockaddr.h
- 1.0 03/01/04 21:00:35 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/sockaddr.h
-
- include/isc/result.h
- 1.1 03/01/04 21:00:33 mayer@tecotoo.myibg.com +103 -0
-
- include/isc/result.h
- 1.0 03/01/04 21:00:33 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/result.h
-
- include/isc/platform.h.in
- 1.1 03/01/04 21:00:31 mayer@tecotoo.myibg.com +220 -0
-
- include/isc/platform.h.in
- 1.0 03/01/04 21:00:31 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/platform.h.in
-
- include/isc/once.h
- 1.1 03/01/04 21:00:29 mayer@tecotoo.myibg.com +32 -0
-
- include/isc/once.h
- 1.0 03/01/04 21:00:29 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/once.h
-
- include/isc/offset.h
- 1.1 03/01/04 21:00:28 mayer@tecotoo.myibg.com +44 -0
-
- include/isc/offset.h
- 1.0 03/01/04 21:00:28 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/offset.h
-
- include/isc/netaddr.h
- 1.1 03/01/04 21:00:26 mayer@tecotoo.myibg.com +136 -0
-
- include/isc/netaddr.h
- 1.0 03/01/04 21:00:26 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/netaddr.h
-
- include/isc/net.h
- 1.1 03/01/04 21:00:24 mayer@tecotoo.myibg.com +282 -0
-
- include/isc/net.h
- 1.0 03/01/04 21:00:24 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/net.h
-
- include/isc/mutex.h
- 1.1 03/01/04 21:00:23 mayer@tecotoo.myibg.com +39 -0
-
- include/isc/mutex.h
- 1.0 03/01/04 21:00:22 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/mutex.h
-
- include/isc/msgs.h
- 1.1 03/01/04 21:00:21 mayer@tecotoo.myibg.com +181 -0
-
- include/isc/msgs.h
- 1.0 03/01/04 21:00:21 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/msgs.h
-
- include/isc/msgcat.h
- 1.1 03/01/04 21:00:19 mayer@tecotoo.myibg.com +132 -0
-
- include/isc/msgcat.h
- 1.0 03/01/04 21:00:19 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/msgcat.h
-
- include/isc/mem.h
- 1.1 03/01/04 21:00:18 mayer@tecotoo.myibg.com +31 -0
-
- include/isc/mem.h
- 1.0 03/01/04 21:00:18 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/mem.h
-
- include/isc/magic.h
- 1.1 03/01/04 21:00:16 mayer@tecotoo.myibg.com +40 -0
-
- include/isc/magic.h
- 1.0 03/01/04 21:00:16 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/magic.h
-
- include/isc/list.h
- 1.1 03/01/04 21:00:14 mayer@tecotoo.myibg.com +180 -0
-
- include/isc/list.h
- 1.0 03/01/04 21:00:14 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/list.h
-
- include/isc/lib.h
- 1.1 03/01/04 21:00:13 mayer@tecotoo.myibg.com +39 -0
-
- include/isc/lib.h
- 1.0 03/01/04 21:00:13 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/lib.h
-
- include/isc/lang.h
- 1.1 03/01/04 21:00:11 mayer@tecotoo.myibg.com +31 -0
-
- include/isc/lang.h
- 1.0 03/01/04 21:00:11 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/lang.h
-
- include/isc/ipv6.h
- 1.1 03/01/04 21:00:09 mayer@tecotoo.myibg.com +148 -0
-
- include/isc/ipv6.h
- 1.0 03/01/04 21:00:09 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/ipv6.h
-
- include/isc/interfaceiter.h
- 1.1 03/01/04 21:00:08 mayer@tecotoo.myibg.com +137 -0
-
- include/isc/interfaceiter.h
- 1.0 03/01/04 21:00:08 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/interfaceiter.h
-
- include/isc/int.h
- 1.1 03/01/04 21:00:06 mayer@tecotoo.myibg.com +53 -0
-
- include/isc/int.h
- 1.0 03/01/04 21:00:06 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/int.h
-
- include/isc/formatcheck.h
- 1.1 03/01/04 21:00:05 mayer@tecotoo.myibg.com +34 -0
-
- include/isc/formatcheck.h
- 1.0 03/01/04 21:00:04 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/formatcheck.h
-
- include/isc/error.h
- 1.1 03/01/04 21:00:03 mayer@tecotoo.myibg.com +55 -0
-
- include/isc/error.h
- 1.0 03/01/04 21:00:03 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/error.h
-
- include/isc/boolean.h
- 1.1 03/01/04 21:00:01 mayer@tecotoo.myibg.com +29 -0
-
- include/isc/boolean.h
- 1.0 03/01/04 21:00:01 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/boolean.h
-
- include/isc/assertions.h
- 1.1 03/01/04 21:00:00 mayer@tecotoo.myibg.com +120 -0
-
- include/isc/assertions.h
- 1.0 03/01/04 21:00:00 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/assertions.h
-
- include/isc/app.h
- 1.1 03/01/04 20:59:58 mayer@tecotoo.myibg.com +212 -0
-
- include/isc/app.h
- 1.0 03/01/04 20:59:57 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/isc/app.h
-
- ports/winnt/ntptrace/ntptrace.dsp
- 1.8 03/01/04 20:59:56 mayer@tecotoo.myibg.com +2 -2
- Fix the include order
-
- ports/winnt/ntpq/ntpq.dsp
- 1.10 03/01/04 20:59:55 mayer@tecotoo.myibg.com +2 -2
- Fix the include order
-
- ports/winnt/ntpdc/ntpdc.dsp
- 1.10 03/01/04 20:59:54 mayer@tecotoo.myibg.com +2 -2
- Fix the include order
-
- ports/winnt/ntpdate/ntpdate.dsp
- 1.8 03/01/04 20:59:52 mayer@tecotoo.myibg.com +2 -2
- Fix the include order
-
- ports/winnt/ntpd/ntpd.dsp
- 1.13 03/01/04 20:59:51 mayer@tecotoo.myibg.com +2 -11
- Updated to support the ISC files
-
- ports/winnt/libntp/libntp.dsp
- 1.10 03/01/04 20:59:49 mayer@tecotoo.myibg.com +34 -2
- Updated to support the ISC files and fix the include file order
-
- ntpd/refclock_palisade.c
- 1.14 03/01/04 20:59:48 mayer@tecotoo.myibg.com +1 -1
- Reference should be to \0 and not NULL which is a pointer type.
-
- ntpd/ntp_io.c
- 1.55 03/01/04 20:59:45 mayer@tecotoo.myibg.com +410 -633
- Rewrite to properly support interfaces. Numerous bug fixes to properly deal with IPv6.
-
- include/ntp.h
- 1.78.1.1 03/01/04 20:59:42 mayer@tecotoo.myibg.com +7 -5
- Increase the name size of the interface and update the interface flags
-
-ChangeSet
- 1.683.4.130 03/01/05 02:30:47 matthias.andree@gmx.de +1 -0
- Fix "make distcheck" for newer automake installations.
-
- Newer automakes create the distdirs read-only,
- so Makefile.am's "dist-hook" target was unable to run unix2dos
- in $(distdir)/ports/winnt and choked "make distcheck".
-
- Makefile.am
- 1.12.1.18 03/01/05 02:30:47 matthias.andree@gmx.de +1 -0
- Fix "make distcheck" for newer automake installations.
-
- Newer automakes create the distdirs read-only,
- so Makefile.am's "dist-hook" target was unable to run unix2dos
- in $(distdir)/ports/winnt and choked "make distcheck".
-
-ChangeSet
- 1.683.4.129 03/01/05 02:28:26 matthias.andree@gmx.de +5 -0
- Fix autoheader warnings by removing acconfig.h and placing an
- AH_TEMPLATE line into configure.in instead.
-
- BitKeeper/etc/logging_ok
- 1.1.1.6 03/01/05 02:28:25 matthias.andree@gmx.de +1 -0
- Logging to logging@openlogging.org accepted
-
- configure.in
- 1.219.3.36 03/01/05 02:28:24 matthias.andree@gmx.de +1 -0
- Add AH_TEMPLATE that supersedes acconfig.h.
-
- README
- 1.14.1.5 03/01/05 02:28:24 matthias.andree@gmx.de +0 -3
- Remove information for acconfig.h.
-
- Makefile.am
- 1.12.1.17 03/01/05 02:28:24 matthias.andree@gmx.de +1 -2
- Remove acconfig.h.
-
- BitKeeper/deleted/.del-acconfig.h~3aed0663
- 1.23.3.7 03/01/05 02:25:43 matthias.andree@gmx.de +0 -0
- Delete: acconfig.h
-
-ChangeSet
- 1.957.1.7 03/01/04 18:36:58 stenn@whimsy.udel.edu +3 -0
- Cleanup from Dave
-
- ntpd/ntpsim.c
- 1.8 03/01/04 18:34:54 stenn@whimsy.udel.edu +11 -4
-
- ntpd/ntp_loopfilter.c
- 1.70 03/01/04 18:34:53 stenn@whimsy.udel.edu +22 -12
-
- libntp/systime.c
- 1.23 03/01/04 18:34:53 stenn@whimsy.udel.edu +7 -3
-
-ChangeSet
- 1.683.4.128 03/01/02 23:01:23 stenn@whimsy.udel.edu +1 -0
- 4.1.1c-rc1
-
- configure.in
- 1.219.3.35 03/01/02 23:01:20 stenn@whimsy.udel.edu +1 -1
- 4.1.1c-rc1
-
-ChangeSet
- 1.957.1.6 03/01/02 15:42:27 stenn@whimsy.udel.edu +9 -0
- Cleanup from Dave Mills.
-
- ntpd/ntpsim.c
- 1.7 03/01/02 15:42:23 stenn@whimsy.udel.edu +27 -10
- Cleanup from Dave Mills.
-
- ntpd/ntp_util.c
- 1.24 03/01/02 15:42:23 stenn@whimsy.udel.edu +41 -53
- Cleanup from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.140 03/01/02 15:42:22 stenn@whimsy.udel.edu +0 -2
- Cleanup from Dave Mills.
-
- libntp/systime.c
- 1.22 03/01/02 15:42:22 stenn@whimsy.udel.edu +49 -39
- Cleanup from Dave Mills.
-
- html/release.html
- 1.26 03/01/02 15:42:22 stenn@whimsy.udel.edu +28 -52
- Cleanup from Dave Mills.
-
- html/patches.html
- 1.14 03/01/02 15:42:22 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/ntpdsim.html
- 1.2 03/01/02 15:42:22 stenn@whimsy.udel.edu +16 -11
- Cleanup from Dave Mills.
-
- html/index.html
- 1.23 03/01/02 15:42:22 stenn@whimsy.udel.edu +10 -10
- Cleanup from Dave Mills.
-
- html/debug.html
- 1.17 03/01/02 15:42:21 stenn@whimsy.udel.edu +14 -10
- Cleanup from Dave Mills.
-
-ChangeSet
- 1.957.1.5 02/12/30 20:56:45 stenn@whimsy.udel.edu +18 -0
- Simulator and slew cleanup from Dave Mills.
-
- html/ntpdsim.html
- 1.1 02/12/30 20:56:40 stenn@whimsy.udel.edu +67 -0
-
- ntpd/ntpsim.c
- 1.6 02/12/30 20:56:40 stenn@whimsy.udel.edu +251 -198
- Cleanup from Dave Mills.
-
- ntpd/ntp_util.c
- 1.23 02/12/30 20:56:40 stenn@whimsy.udel.edu +1 -0
- Cleanup from Dave Mills.
-
- html/ntpdsim.html
- 1.0 02/12/30 20:56:40 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/ntpdsim.html
-
- ntpd/ntp_proto.c
- 1.139 02/12/30 20:56:39 stenn@whimsy.udel.edu +9 -7
- Cleanup from Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.69 02/12/30 20:56:39 stenn@whimsy.udel.edu +44 -62
- Cleanup from Dave Mills.
-
- ntpd/ntp_config.c
- 1.81 02/12/30 20:56:39 stenn@whimsy.udel.edu +0 -5
- Cleanup from Dave Mills.
-
- ntpd/cmd_args.c
- 1.17 02/12/30 20:56:39 stenn@whimsy.udel.edu +21 -28
- Cleanup from Dave Mills.
-
- libntp/systime.c
- 1.21 02/12/30 20:56:38 stenn@whimsy.udel.edu +125 -188
- Cleanup from Dave Mills.
-
- include/ntpsim.h
- 1.5 02/12/30 20:56:38 stenn@whimsy.udel.edu +46 -52
- Cleanup from Dave Mills.
-
- include/ntpd.h
- 1.53 02/12/30 20:56:38 stenn@whimsy.udel.edu +1 -3
- Cleanup from Dave Mills.
-
- include/ntp_config.h
- 1.24 02/12/30 20:56:38 stenn@whimsy.udel.edu +2 -3
- Cleanup from Dave Mills.
-
- html/ntpq.html
- 1.19 02/12/30 20:56:38 stenn@whimsy.udel.edu +3 -4
- Cleanup from Dave Mills.
-
- html/ntpdc.html
- 1.16 02/12/30 20:56:38 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills.
-
- html/ntpdate.html
- 1.15 02/12/30 20:56:38 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/ntpd.html
- 1.26 02/12/30 20:56:38 stenn@whimsy.udel.edu +3 -4
- Cleanup from Dave Mills.
-
- html/miscopt.html
- 1.24 02/12/30 20:56:37 stenn@whimsy.udel.edu +4 -8
- Cleanup from Dave Mills.
-
- html/index.html
- 1.22 02/12/30 20:56:37 stenn@whimsy.udel.edu +2 -1
- Cleanup from Dave Mills.
-
- BitKeeper/deleted/.del-ipv6.html~39bb7fae3b663414
- 1.2 02/12/30 20:51:24 stenn@whimsy.udel.edu +0 -0
- Delete: html/ipv6.html
-
-ChangeSet
- 1.957.1.4 02/12/27 22:52:00 stenn@whimsy.udel.edu +2 -0
- Cleanup from Dave Mills.
-
- ntpd/ntp_util.c
- 1.22 02/12/27 22:51:57 stenn@whimsy.udel.edu +55 -110
- record_*() cleanup from Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.68 02/12/27 22:51:57 stenn@whimsy.udel.edu +24 -48
- PLL/FLL parameter/adjustment cleanup from Dave Mills.
-
-ChangeSet
- 1.957.1.3 02/12/27 09:27:16 jhay@angel.cids.org.za +1 -0
- Prefer an IPv4 loopback address, if one is available. It is only used
- for the peer->dstadr of local reference clocks, so only affects the
- bilboards.
-
- Get rid of some #ifdefs and make it more clear where the magic value 2
- come from. Fix one place that was missed previously when the IPv6 stuff
- was #ifdefed.
-
- ntpd/ntp_io.c
- 1.53.1.1 02/12/27 09:27:15 jhay@angel.cids.org.za +15 -18
- Prefer an IPv4 loopback address, if one is available. It is only used
- for the peer->dstadr of local reference clocks, so only affects the
- bilboards.
-
- Get rid of some #ifdefs and make it more clear where the magic value 2
- come from. Fix one place that was missed previously when the IPv6 stuff
- was #ifdefed.
-
-ChangeSet
- 1.957.1.2 02/12/23 22:42:49 stenn@whimsy.udel.edu +1 -0
- 4.1.72c
-
- configure.in
- 1.284 02/12/23 22:42:46 stenn@whimsy.udel.edu +1 -1
- 4.1.72c
-
-ChangeSet
- 1.957.1.1 02/12/23 22:22:12 stenn@whimsy.udel.edu +7 -0
- Lose the original SNTP manpage.
-
- Cleanup from Dave Mills.
-
- ntpd/ntp_refclock.c
- 1.49 02/12/23 22:22:08 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.138 02/12/23 22:22:07 stenn@whimsy.udel.edu +15 -11
- Cleanup from Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.67 02/12/23 22:22:07 stenn@whimsy.udel.edu +6 -4
- Cleanup from Dave Mills.
-
- libntp/msyslog.c
- 1.15 02/12/23 22:22:07 stenn@whimsy.udel.edu +4 -0
- Cleanup from Dave Mills.
-
- include/ntp.h
- 1.79 02/12/23 22:22:07 stenn@whimsy.udel.edu +0 -1
- Cleanup from Dave Mills.
-
- sntp/Makefile.am
- 1.3 02/12/23 22:06:21 stenn@whimsy.udel.edu +0 -2
- Lose the original man page; Dave wrote an HTML page for sntp.
-
- BitKeeper/deleted/.del-sntp.1~da4d5277190b3155
- 1.2 02/12/23 21:25:53 stenn@whimsy.udel.edu +0 -0
- Delete: sntp/sntp.1
-
-ChangeSet
- 1.958 02/12/22 21:17:51 mayer@tecotoo.myibg.com +1 -0
- Merge
-
- ntpd/ntp_io.c
- 1.54 02/12/22 21:17:26 mayer@tecotoo.myibg.com +0 -5
- Merge
-
-ChangeSet
- 1.953.1.1 02/12/22 20:58:26 mayer@tecotoo.myibg.com +2 -0
- IPV6 fixes and close_socket
-
- BitKeeper/etc/ignore
- 1.27 02/12/22 20:58:01 mayer@tecotoo.myibg.com +3 -0
- Added cmd_args.diff ntp_io.diff ntpd/ntp_io.csave to the ignore list
-
- ntpd/ntp_io.c
- 1.51.1.1 02/12/22 20:57:55 mayer@tecotoo.myibg.com +18 -12
- IPv6 interface fixes and close_socket changed to closesocket
-
-ChangeSet
- 1.957 02/12/21 20:44:43 jhay@angel.cids.org.za +3 -0
- Cleanup some warnings that crept in.
-
- ntpq/ntpq.c
- 1.31 02/12/21 20:44:42 jhay@angel.cids.org.za +1 -2
- Align a comment and remove an extra "int ai_fam_templ" that slipped in
- somewhere during a merge.
-
- ntpd/ntp_request.c
- 1.42 02/12/21 20:44:42 jhay@angel.cids.org.za +1 -1
- srcadr is already a pointer, so don't add a '&' in front of it when using it
- as an argument for stoa().
-
- ntpd/ntp_io.c
- 1.53 02/12/21 20:44:42 jhay@angel.cids.org.za +1 -1
- Danny Mayer <mayer@gis.net> found another close_socket() that should be a
- closesocket().
-
-ChangeSet
- 1.956 02/12/21 17:53:49 jhay@angel.cids.org.za +1 -0
- Invert the meaning of -L. The default is now to listen on all addresses on all
- interfaces. When using -L on the commandline, virtual interfaces are ignored.
-
- ntpd/cmd_args.c
- 1.16 02/12/21 17:53:48 jhay@angel.cids.org.za +2 -2
- Invert the meaning of -L. The default is now to listen on all addresses on all
- interfaces. When using -L on the commandline, virtual interfaces are ignored.
-
-ChangeSet
- 1.955 02/12/19 13:20:53 stenn@whimsy.udel.edu +1 -0
- Fixes from John Hay.
-
- ntpd/ntp_io.c
- 1.52 02/12/19 13:20:47 stenn@whimsy.udel.edu +5 -5
- Fixes from John Hay.
-
-ChangeSet
- 1.954 02/12/14 17:06:36 stenn@pogo.udel.edu +4 -0
- Merge pogo.udel.edu:/pogo/users/mayer/ntp-dev
- into pogo.udel.edu:/pogo/users/stenn/ntp-dev
-
- BitKeeper/etc/logging_ok
- 1.13 02/12/14 17:06:27 stenn@pogo.udel.edu +1 -0
- Logging to logging@openlogging.org accepted
-
- ntpd/ntp_proto.c
- 1.137 02/12/14 17:05:59 stenn@pogo.udel.edu +0 -0
- Auto merged
-
- include/ntpd.h
- 1.52 02/12/14 17:05:58 stenn@pogo.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.78 02/12/14 17:05:58 stenn@pogo.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.945.1.32 02/12/14 15:24:21 stenn@whimsy.udel.edu +5 -0
- Cleanup and new stuff from Dave Mills.
-
- util/ntp-keygen.c
- 1.21 02/12/14 15:22:07 stenn@whimsy.udel.edu +137 -122
- Changes from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.134.1.2 02/12/14 15:22:07 stenn@whimsy.udel.edu +42 -56
- Dave Mills added peer_unfit().
-
- ntpd/ntp_crypto.c
- 1.74 02/12/14 15:22:06 stenn@whimsy.udel.edu +116 -111
- Added crypto_ident(). From Dave Mills.
-
- include/ntpd.h
- 1.48.1.2 02/12/14 15:22:06 stenn@whimsy.udel.edu +1 -0
- Added crypto_ident(). From Dave Mills.
-
- include/ntp.h
- 1.75.1.1 02/12/14 15:22:06 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
-ChangeSet
- 1.945.1.31 02/12/14 12:37:57 stenn@whimsy.udel.edu +56 -0
- Documentation cleanup from Dave Mills.
-
- html/scripts/style.css
- 1.1 02/12/14 12:37:47 stenn@whimsy.udel.edu +64 -0
-
- html/scripts/links9.txt
- 1.1 02/12/14 12:37:47 stenn@whimsy.udel.edu +7 -0
-
- html/scripts/style.css
- 1.0 02/12/14 12:37:47 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/scripts/style.css
-
- html/scripts/links9.txt
- 1.0 02/12/14 12:37:47 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/scripts/links9.txt
-
- html/scripts/links8.txt
- 1.1 02/12/14 12:37:46 stenn@whimsy.udel.edu +6 -0
-
- html/scripts/links7.txt
- 1.1 02/12/14 12:37:46 stenn@whimsy.udel.edu +5 -0
-
- html/scripts/links11.txt
- 1.1 02/12/14 12:37:46 stenn@whimsy.udel.edu +5 -0
-
- html/scripts/links10.txt
- 1.1 02/12/14 12:37:46 stenn@whimsy.udel.edu +6 -0
-
- html/scripts/header.txt
- 1.1 02/12/14 12:37:46 stenn@whimsy.udel.edu +1 -0
-
- html/scripts/footer.txt
- 1.1 02/12/14 12:37:46 stenn@whimsy.udel.edu +8 -0
-
- html/tickadj.html
- 1.13 02/12/14 12:37:46 stenn@whimsy.udel.edu +1 -0
- Documentation cleanup from Dave Mills.
-
- html/scripts/links8.txt
- 1.0 02/12/14 12:37:46 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/scripts/links8.txt
-
- html/scripts/links7.txt
- 1.0 02/12/14 12:37:46 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/scripts/links7.txt
-
- html/scripts/links11.txt
- 1.0 02/12/14 12:37:46 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/scripts/links11.txt
-
- html/scripts/links10.txt
- 1.0 02/12/14 12:37:46 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/scripts/links10.txt
-
- html/scripts/header.txt
- 1.0 02/12/14 12:37:46 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/scripts/header.txt
-
- html/scripts/footer.txt
- 1.0 02/12/14 12:37:46 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/scripts/footer.txt
-
- html/sntp.html
- 1.2 02/12/14 12:37:45 stenn@whimsy.udel.edu +1 -0
- Documentation cleanup from Dave Mills.
-
- html/release.html
- 1.25 02/12/14 12:37:45 stenn@whimsy.udel.edu +4 -4
- Documentation cleanup from Dave Mills.
-
- html/refclock.html
- 1.26 02/12/14 12:37:45 stenn@whimsy.udel.edu +4 -5
- Documentation cleanup from Dave Mills.
-
- html/rdebug.html
- 1.12 02/12/14 12:37:45 stenn@whimsy.udel.edu +5 -8
- Documentation cleanup from Dave Mills.
-
- html/quick.html
- 1.13 02/12/14 12:37:45 stenn@whimsy.udel.edu +3 -2
- Documentation cleanup from Dave Mills.
-
- html/prefer.html
- 1.12 02/12/14 12:37:45 stenn@whimsy.udel.edu +7 -9
- Documentation cleanup from Dave Mills.
-
- html/pps.html
- 1.16 02/12/14 12:37:45 stenn@whimsy.udel.edu +4 -5
- Documentation cleanup from Dave Mills.
-
- html/porting.html
- 1.11 02/12/14 12:37:45 stenn@whimsy.udel.edu +4 -2
- Documentation cleanup from Dave Mills.
-
- html/patches.html
- 1.13 02/12/14 12:37:44 stenn@whimsy.udel.edu +4 -3
- Documentation cleanup from Dave Mills.
-
- html/ntptrace.html
- 1.12 02/12/14 12:37:44 stenn@whimsy.udel.edu +4 -3
- Documentation cleanup from Dave Mills.
-
- html/ntptime.html
- 1.14 02/12/14 12:37:44 stenn@whimsy.udel.edu +4 -3
- Documentation cleanup from Dave Mills.
-
- html/ntpq.html
- 1.18 02/12/14 12:37:44 stenn@whimsy.udel.edu +4 -3
- Documentation cleanup from Dave Mills.
-
- html/ntpdc.html
- 1.15 02/12/14 12:37:44 stenn@whimsy.udel.edu +4 -3
- Documentation cleanup from Dave Mills.
-
- html/ntpdate.html
- 1.14 02/12/14 12:37:44 stenn@whimsy.udel.edu +4 -3
- Documentation cleanup from Dave Mills.
-
- html/ntpd.html
- 1.25 02/12/14 12:37:44 stenn@whimsy.udel.edu +19 -17
- Documentation cleanup from Dave Mills.
-
- html/notes.html
- 1.15 02/12/14 12:37:43 stenn@whimsy.udel.edu +4 -1
- Documentation cleanup from Dave Mills.
-
- html/monopt.html
- 1.16 02/12/14 12:37:43 stenn@whimsy.udel.edu +4 -5
- Documentation cleanup from Dave Mills.
-
- html/miscopt.html
- 1.23 02/12/14 12:37:43 stenn@whimsy.udel.edu +4 -5
- Documentation cleanup from Dave Mills.
-
- html/measure.html
- 1.10 02/12/14 12:37:43 stenn@whimsy.udel.edu +1 -0
- Documentation cleanup from Dave Mills.
-
- html/manyopt.html
- 1.8 02/12/14 12:37:43 stenn@whimsy.udel.edu +2 -1
- Documentation cleanup from Dave Mills.
-
- html/ldisc.html
- 1.10 02/12/14 12:37:43 stenn@whimsy.udel.edu +2 -5
- Documentation cleanup from Dave Mills.
-
- html/kern.html
- 1.13 02/12/14 12:37:43 stenn@whimsy.udel.edu +5 -6
- Documentation cleanup from Dave Mills.
-
- html/index.html
- 1.21 02/12/14 12:37:42 stenn@whimsy.udel.edu +4 -5
- Documentation cleanup from Dave Mills.
-
- html/howto.html
- 1.14 02/12/14 12:37:42 stenn@whimsy.udel.edu +6 -8
- Documentation cleanup from Dave Mills.
-
- html/hints.html
- 1.12 02/12/14 12:37:42 stenn@whimsy.udel.edu +3 -2
- Documentation cleanup from Dave Mills.
-
- html/genkeys.html
- 1.17 02/12/14 12:37:42 stenn@whimsy.udel.edu +102 -28
- Documentation cleanup from Dave Mills.
-
- html/extern.html
- 1.11 02/12/14 12:37:42 stenn@whimsy.udel.edu +1 -0
- Documentation cleanup from Dave Mills.
-
- html/driver7.html
- 1.17 02/12/14 12:37:42 stenn@whimsy.udel.edu +2 -5
- Documentation cleanup from Dave Mills.
-
- html/driver6.html
- 1.12 02/12/14 12:37:42 stenn@whimsy.udel.edu +3 -5
- Documentation cleanup from Dave Mills.
-
- html/driver36.html
- 1.15 02/12/14 12:37:41 stenn@whimsy.udel.edu +0 -3
- Documentation cleanup from Dave Mills.
-
- html/debug.html
- 1.16 02/12/14 12:37:41 stenn@whimsy.udel.edu +4 -3
- Documentation cleanup from Dave Mills.
-
- html/copyright.html
- 1.25 02/12/14 12:37:41 stenn@whimsy.udel.edu +3 -1
- Documentation cleanup from Dave Mills.
-
- html/confopt.html
- 1.25 02/12/14 12:37:41 stenn@whimsy.udel.edu +3 -2
- Documentation cleanup from Dave Mills.
-
- html/config.html
- 1.15 02/12/14 12:37:41 stenn@whimsy.udel.edu +24 -24
- Documentation cleanup from Dave Mills.
-
- html/clockopt.html
- 1.15 02/12/14 12:37:41 stenn@whimsy.udel.edu +4 -5
- Documentation cleanup from Dave Mills.
-
- html/build.html
- 1.16 02/12/14 12:37:41 stenn@whimsy.udel.edu +4 -5
- Documentation cleanup from Dave Mills.
-
- html/authopt.html
- 1.25 02/12/14 12:37:40 stenn@whimsy.udel.edu +5 -4
- Documentation cleanup from Dave Mills.
-
- html/audio.html
- 1.14 02/12/14 12:37:40 stenn@whimsy.udel.edu +7 -8
- Documentation cleanup from Dave Mills.
-
- html/assoc.html
- 1.18 02/12/14 12:37:40 stenn@whimsy.udel.edu +7 -8
- Documentation cleanup from Dave Mills.
-
- html/accopt.html
- 1.16 02/12/14 12:37:40 stenn@whimsy.udel.edu +4 -5
- Documentation cleanup from Dave Mills.
-
- BitKeeper/deleted/.del-qth.html~2c795ab6
- 1.7 02/12/14 12:14:38 stenn@whimsy.udel.edu +0 -0
- Delete: html/qth.html
-
- BitKeeper/deleted/.del-sunrise1.psd~bb69d707b7e88
- 1.2 02/12/14 12:14:18 stenn@whimsy.udel.edu +0 -0
- Delete: html/pic/sunrise1.psd
-
- BitKeeper/deleted/.del-leap.html~c77c42fd
- 1.5 02/12/14 12:13:12 stenn@whimsy.udel.edu +0 -0
- Delete: html/leap.html
-
- BitKeeper/deleted/.del-kernpps.html~3aed0663
- 1.10 02/12/14 12:12:54 stenn@whimsy.udel.edu +0 -0
- Delete: html/kernpps.html
-
- BitKeeper/deleted/.del-gadget.html~3aed0663
- 1.10 02/12/14 12:12:01 stenn@whimsy.udel.edu +0 -0
- Delete: html/gadget.html
-
- BitKeeper/deleted/.del-exec.html~3aed0663
- 1.11 02/12/14 12:11:38 stenn@whimsy.udel.edu +0 -0
- Delete: html/exec.html
-
- BitKeeper/deleted/.del-biblio.html~3aed0663
- 1.8 02/12/14 12:09:37 stenn@whimsy.udel.edu +0 -0
- Delete: html/biblio.html
-
-ChangeSet
- 1.952 02/12/06 21:36:18 mayer@tecotoo.myibg.com +2 -0
- Fix Typos
-
- BitKeeper/etc/ignore
- 1.26 02/12/06 21:35:47 mayer@tecotoo.myibg.com +1 -0
- Added ntpd/ntp_io.cold to the ignore list
-
- ntpd/ntp_io.c
- 1.51 02/12/06 21:35:42 mayer@tecotoo.myibg.com +3 -3
- Fix typos
-
-ChangeSet
- 1.945.1.30 02/12/04 21:51:28 stenn@whimsy.udel.edu +2 -0
- Lose ntp-genkeys.
-
- util/Makefile.am
- 1.20 02/12/04 21:51:25 stenn@whimsy.udel.edu +1 -4
- Lose ntp-genkeys.
-
- BitKeeper/deleted/.del-ntp-genkeys.c~5de683d0
- 1.76 02/12/04 21:48:12 stenn@whimsy.udel.edu +0 -0
- Delete: util/ntp-genkeys.c
-
-ChangeSet
- 1.951 02/12/03 01:08:26 mayer@tecotoo.myibg.com +1 -0
- Remove win32 debugging code
-
- ntpd/ntp_io.c
- 1.50 02/12/03 01:08:04 mayer@tecotoo.myibg.com +1 -2
- Remove win32 debugging code
-
-ChangeSet
- 1.950 02/12/03 00:28:00 mayer@tecotoo.myibg.com +8 -0
- Merge
-
- ntpd/refclock_palisade.c
- 1.13 02/12/03 00:27:38 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpd/ntp_request.c
- 1.41 02/12/03 00:27:37 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpd/ntp_proto.c
- 1.136 02/12/03 00:27:36 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpd/ntp_control.c
- 1.59 02/12/03 00:27:35 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpd/ntp_config.c
- 1.80 02/12/03 00:27:34 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- include/ntp_config.h
- 1.23 02/12/03 00:27:32 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.12 02/12/03 00:23:14 mayer@tecotoo.myibg.com +0 -0
- auto-union
-
- BitKeeper/etc/logging_ok
- 1.12 02/12/03 00:23:10 mayer@tecotoo.myibg.com +0 -0
- auto-union
-
-ChangeSet
- 1.949 02/12/03 00:20:22 mayer@tecotoo.myibg.com +1 -0
- Fixes to ntp_io.c for missing semicolons.
-
- ntpd/ntp_io.c
- 1.49 02/12/03 00:19:58 mayer@tecotoo.myibg.com +3 -3
- Fix missing semicolons. Change -1 to INVALID_SOCKET.
-
-ChangeSet
- 1.945.1.29 02/11/29 18:54:14 stenn@whimsy.udel.edu +1 -0
- CLK_TYPE() fix for the Praecis CDMA patch from Mark Santcroos.
-
- ntpd/refclock_palisade.c
- 1.11.1.3 02/11/29 18:54:10 stenn@whimsy.udel.edu +1 -2
- CLK_TYPE() fix for the Praecis CDMA patch from Mark Santcroos.
-
-ChangeSet
- 1.945.1.28 02/11/27 23:47:53 stenn@whimsy.udel.edu +1 -0
- howland is working again.
-
- br-flock
- 1.4 02/11/27 23:47:50 stenn@whimsy.udel.edu +1 -2
- howland is working again.
-
-ChangeSet
- 1.945.1.27 02/11/27 23:41:56 stenn@whimsy.udel.edu +2 -0
- ntp-dev Praecis updates. Needs a fix for CLK_TYPE().
-
- ntpd/refclock_palisade.c
- 1.11.1.2 02/11/27 23:41:53 stenn@whimsy.udel.edu +2 -1
- CLK_TYPE() had a bug - disable it for now.
-
- html/driver29.html
- 1.9 02/11/27 23:41:52 stenn@whimsy.udel.edu +5 -0
- Doc updates for Praecis CDMA in the Trimble Palisade driver.
-
-ChangeSet
- 1.945.1.26 02/11/27 23:27:40 stenn@whimsy.udel.edu +2 -0
- Praecis merge.
-
- html/driver29.html
- 1.8 02/11/27 23:27:38 stenn@whimsy.udel.edu +0 -13
- Don't use ntp-stable's doc patch.
-
- ntpd/refclock_palisade.c
- 1.11.1.1 02/11/27 23:21:13 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver29.html
- 1.2.1.3 02/11/27 23:21:13 stenn@whimsy.udel.edu +0 -0
- Merge rename: html/driver29.htm -> html/driver29.html
-
-ChangeSet
- 1.683.4.127 02/11/27 23:09:43 stenn@whimsy.udel.edu +3 -0
- Praecis CDMA mods for the Trimble Palisade driver.
- From: Mark Santcroos <marks@ripe.net>
-
- ntpd/refclock_palisade.h
- 1.7 02/11/27 23:09:39 stenn@whimsy.udel.edu +1 -0
- Praecis CDMA mods for the Trimble Palisade driver.
- From: Mark Santcroos <marks@ripe.net>
-
- ntpd/refclock_palisade.c
- 1.9.2.1 02/11/27 23:09:39 stenn@whimsy.udel.edu +63 -0
- Praecis CDMA mods for the Trimble Palisade driver.
- From: Mark Santcroos <marks@ripe.net>
-
- html/driver29.htm
- 1.2.1.2 02/11/27 23:09:39 stenn@whimsy.udel.edu +13 -0
- Praecis CDMA mods for the Trimble Palisade driver.
- From: Mark Santcroos <marks@ripe.net>
-
-ChangeSet
- 1.945.1.25 02/11/27 00:10:51 stenn@whimsy.udel.edu +2 -0
- Clean up from recent merges from ntp-stable.
-
- ntpd/ntp_request.c
- 1.38.1.2 02/11/27 00:10:46 stenn@whimsy.udel.edu +1 -1
- ntp-dev's srcadr's can be IPv6.
-
- configure.in
- 1.283 02/11/27 00:10:46 stenn@whimsy.udel.edu +1 -0
- Missed scripts/ntptrace in that merge...
-
-ChangeSet
- 1.945.1.24 02/11/26 23:51:00 stenn@whimsy.udel.edu +1 -0
- I hope I didn't mess this up... resolve the comflicting lines between
- configure.in in ntp-stable and ntp-dev regarding the scripts/ stuff.
-
- configure.in
- 1.282 02/11/26 23:50:57 stenn@whimsy.udel.edu +14 -1
- I hope I didn't mess this up... resolve the comflicting lines between
- configure.in in ntp-stable and ntp-dev regarding the scripts/ stuff.
-
-ChangeSet
- 1.683.4.126 02/11/26 23:32:44 stenn@whimsy.udel.edu +1 -0
- Try a better way to get the stuff in scripts/ to be executable.
-
- configure.in
- 1.219.3.34 02/11/26 23:32:40 stenn@whimsy.udel.edu +9 -11
- Try a better way to get the stuff in scripts/ to be executable.
-
-ChangeSet
- 1.945.1.23 02/11/26 23:06:09 stenn@whimsy.udel.edu +5 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_request.c
- 1.38.1.1 02/11/26 23:06:07 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.281 02/11/26 23:06:06 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- NEWS
- 1.40 02/11/26 23:06:05 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/logging_ok
- 1.10.1.3 02/11/26 23:06:04 stenn@whimsy.udel.edu +1 -0
- 'Auto converge'
-
- BitKeeper/etc/logging_ok
- 1.10.1.2 02/11/26 23:06:04 stenn@whimsy.udel.edu +0 -0
- Rename: BitKeeper/deleted/.del-logging_ok~bebb84d857254496 -> BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.8.1.4 02/11/26 23:06:04 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.10.1.1 02/11/26 23:06:03 stenn@whimsy.udel.edu +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.8.1.3 02/11/26 23:05:57 stenn@whimsy.udel.edu +1 -1
- auto-union
-
-ChangeSet
- 1.683.4.125 02/11/26 23:00:30 stenn@whimsy.udel.edu +1 -0
- Added the note about the unicos port.
-
- NEWS
- 1.31.1.9 02/11/26 23:00:28 stenn@whimsy.udel.edu +1 -0
- Added the note about the unicos port.
-
-ChangeSet
- 1.683.9.4 02/11/26 22:43:12 stenn@whimsy.udel.edu +1 -0
- Log the IP of bad mode 7 packets.
- From: Scott Hazen Mueller <scott@zorch.sf-bay.org>
-
- ntpd/ntp_request.c
- 1.23.3.1 02/11/26 22:43:09 stenn@whimsy.udel.edu +1 -1
- Log the IP of bad mode 7 packets.
- From: Scott Hazen Mueller <scott@zorch.sf-bay.org>
-
-ChangeSet
- 1.945.1.22 02/11/25 23:01:11 stenn@whimsy.udel.edu +12 -0
- MV crypto updates from Dave Mills.
-
- html/pic/radio2.jpg
- 1.1 02/11/25 23:01:06 stenn@whimsy.udel.edu +379 -0
-
- util/ntp-keygen.c
- 1.20 02/11/25 23:01:06 stenn@whimsy.udel.edu +518 -364
- MV crypto updates from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.134.1.1 02/11/25 23:01:06 stenn@whimsy.udel.edu +19 -9
- MV crypto updates from Dave Mills.
-
- ntpd/ntp_crypto.c
- 1.73 02/11/25 23:01:06 stenn@whimsy.udel.edu +474 -113
- MV crypto updates from Dave Mills.
-
- html/pic/radio2.jpg
- 1.0 02/11/25 23:01:06 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/pic/radio2.jpg
-
- ntpd/ntp_control.c
- 1.55.1.2 02/11/25 23:01:05 stenn@whimsy.udel.edu +8 -0
- MV crypto updates from Dave Mills.
-
- ntpd/ntp_config.c
- 1.77.1.1 02/11/25 23:01:05 stenn@whimsy.udel.edu +6 -6
- MV crypto updates from Dave Mills.
-
- include/ntp_crypto.h
- 1.31 02/11/25 23:01:05 stenn@whimsy.udel.edu +5 -3
- MV crypto updates from Dave Mills.
-
- include/ntp_control.h
- 1.22 02/11/25 23:01:05 stenn@whimsy.udel.edu +2 -1
- MV crypto updates from Dave Mills.
-
- include/ntp_config.h
- 1.21.1.1 02/11/25 23:01:05 stenn@whimsy.udel.edu +2 -2
- MV crypto updates from Dave Mills.
-
- html/genkeys.html
- 1.16 02/11/25 23:01:04 stenn@whimsy.udel.edu +16 -10
- Updates from Dave Mills.
-
- html/authopt.html
- 1.24 02/11/25 23:01:04 stenn@whimsy.udel.edu +19 -20
- A new MV identity scheme has been added to Autokey. This one allows
- operators to sell broadcast authentication keys that can be activated
- and deactivated by the broadcaster without changing client keys.
-
- From: Dave Mills.
-
- html/audio.html
- 1.13 02/11/25 23:01:04 stenn@whimsy.udel.edu +1 -1
- Updates froem Dave Mills.
-
-ChangeSet
- 1.948 02/11/24 23:31:33 mayer@tecotoo.myibg.com +13 -0
- Merge
-
- ntpq/ntpq_ops.c
- 1.16 02/11/24 23:31:13 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpq/ntpq.c
- 1.30 02/11/24 23:31:13 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpdc/ntpdc.c
- 1.22 02/11/24 23:31:12 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpdate/ntpdate.c
- 1.40 02/11/24 23:31:11 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpd/ntpd.c
- 1.43 02/11/24 23:31:10 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpd/ntp_util.c
- 1.21 02/11/24 23:31:10 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpd/ntp_peer.c
- 1.53 02/11/24 23:31:09 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpd/ntp_io.c
- 1.48 02/11/24 23:31:08 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpd/ntp_control.c
- 1.58 02/11/24 23:31:07 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ntpd/cmd_args.c
- 1.15 02/11/24 23:31:06 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- libntp/ntp_rfc2553.c
- 1.11 02/11/24 23:31:06 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- libntp/a_md5encrypt.c
- 1.11 02/11/24 23:31:05 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- include/ntpd.h
- 1.51 02/11/24 23:31:05 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
-ChangeSet
- 1.947 02/11/24 23:20:38 mayer@tecotoo.myibg.com +45 -0
- Add support for SOCKET type to support Win32. Fix casting issues. Update
- Macros. Fix if statements to not also assign. Miscellaneous fixes.
-
- BitKeeper/etc/ignore
- 1.25 02/11/24 23:19:38 mayer@tecotoo.myibg.com +3 -0
- Added builderrors.txt ports/winnt/libntp/messages.aps ports/winnt/ntpd/stderr to the ignore list
-
- ports/winnt/libntp/syslog.c
- 1.1 02/11/24 23:19:34 mayer@tecotoo.myibg.com +193 -0
-
- ports/winnt/libntp/syslog.c
- 1.0 02/11/24 23:19:34 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/libntp/syslog.c
-
- ports/winnt/libntp/strerror.c
- 1.1 02/11/24 23:19:33 mayer@tecotoo.myibg.com +440 -0
-
- ports/winnt/libntp/strerror.c
- 1.0 02/11/24 23:19:33 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/libntp/strerror.c
-
- ports/winnt/libntp/interfaceiter.c
- 1.1 02/11/24 23:19:31 mayer@tecotoo.myibg.com +380 -0
-
- ports/winnt/libntp/interfaceiter.c
- 1.0 02/11/24 23:19:31 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/libntp/interfaceiter.c
-
- include/interfaceiter.h
- 1.1 02/11/24 23:19:29 mayer@tecotoo.myibg.com +134 -0
-
- include/interfaceiter.h
- 1.0 02/11/24 23:19:29 mayer@tecotoo.myibg.com +0 -0
- BitKeeper file H:/ntpbk/ntp-dev/include/interfaceiter.h
-
- ports/winnt/ntpq/ntpq.dsp
- 1.9 02/11/24 23:19:27 mayer@tecotoo.myibg.com +2 -2
- Update build file.
-
- ports/winnt/ntpdc/ntpdc.dsp
- 1.9 02/11/24 23:19:26 mayer@tecotoo.myibg.com +2 -2
- Update build file.
-
- ports/winnt/ntpd/ntpd.dsp
- 1.12 02/11/24 23:19:24 mayer@tecotoo.myibg.com +9 -0
- Update build file.
-
- ports/winnt/ntpd/ntp_iocompletionport.c
- 1.8 02/11/24 23:19:23 mayer@tecotoo.myibg.com +1 -1
- Fix for sockaddr_storage structure.
-
- ports/winnt/libntp/libntp.dsp
- 1.9 02/11/24 23:19:21 mayer@tecotoo.myibg.com +17 -1
- Updates for different includes and links.
-
- ports/winnt/include/syslog.h
- 1.4 02/11/24 23:19:19 mayer@tecotoo.myibg.com +81 -17
- Replace old Win32 syslog.h with one from Win32 BIND 9.
-
- ports/winnt/include/ntp_iocompletionport.h
- 1.6 02/11/24 23:19:18 mayer@tecotoo.myibg.com +1 -1
- Fix function call for sockaddr_storage
-
- ports/winnt/include/config.h
- 1.16 02/11/24 23:19:16 mayer@tecotoo.myibg.com +1 -0
- Add HAVE_SOCKADDR_IN6 macro.
-
- ntpq/ntpq_ops.c
- 1.14.1.1 02/11/24 23:19:15 mayer@tecotoo.myibg.com +2 -2
- Fix casting issues.
-
- ntpq/ntpq.c
- 1.29 02/11/24 23:19:13 mayer@tecotoo.myibg.com +29 -37
- Use SOCKET for Win32 support. Code cleanup. Fix casting issues.
-
- ntpdc/ntpdc_ops.c
- 1.22 02/11/24 23:19:10 mayer@tecotoo.myibg.com +9 -2
- Fix casting issues. Properly initialize cres structure.
-
- ntpdc/ntpdc.c
- 1.21 02/11/24 23:19:09 mayer@tecotoo.myibg.com +6 -5
- showhostnames was already declared extern so cannot also declare static..
- Use SOCKET to support Win32. Fix casting issues.
-
- ntpdate/ntpdate.c
- 1.39 02/11/24 23:19:07 mayer@tecotoo.myibg.com +7 -4
- Use SOCKET to support Win32. Fix casting issues.
-
- ntpd/refclock_nmea.c
- 1.20 02/11/24 23:19:04 mayer@tecotoo.myibg.com +5 -4
- Fix assignment issues within if statement. Fix casting issues.
-
- ntpd/refclock_hopfser.c
- 1.7 02/11/24 23:19:01 mayer@tecotoo.myibg.com +1 -1
- Fix casting issues.
-
- ntpd/refclock_hopfpci.c
- 1.7 02/11/24 23:18:58 mayer@tecotoo.myibg.com +2 -2
- Use SOCKET to support Win32. Fix casting issues.
-
- ntpd/refclock_dumbclock.c
- 1.8 02/11/24 23:18:55 mayer@tecotoo.myibg.com +6 -5
- Fix to not make assignments with if statements. Fix casting issues.
-
- ntpd/ntpd.c
- 1.42 02/11/24 23:18:51 mayer@tecotoo.myibg.com +16 -4
- Remove unused moredebug/lessdebug functions for Win32. Remove assignments
- from if statements. Use SOCKET for Win32 support.
-
- ntpd/ntp_request.c
- 1.40 02/11/24 23:18:47 mayer@tecotoo.myibg.com +2 -2
- Fix casting issues.
-
- ntpd/ntp_refclock.c
- 1.48 02/11/24 23:18:44 mayer@tecotoo.myibg.com +12 -8
- Don't do assignments within if statements. Fix casting issues
-
- ntpd/ntp_proto.c
- 1.135 02/11/24 23:18:40 mayer@tecotoo.myibg.com +10 -10
- Fix casting issues. leap_consensus order wrong. peer needed to be assigned
- before orring with peer->leap.
-
- ntpd/ntp_peer.c
- 1.52 02/11/24 23:18:36 mayer@tecotoo.myibg.com +5 -5
- Fix casting issues
-
- ntpd/ntp_io.c
- 1.47 02/11/24 23:18:33 mayer@tecotoo.myibg.com +152 -40
- Fix to use SOCKET for Win32 support. Fix casting issues. Fixes to properly implement
- IPv6 and to support platforms that don't have IPv6 stacks. Make sure the close_socket
- function gets used. General code cleanup to reduce Macro mess. Fix setsockopt
- problem with setting IP_MULTICAST_TTL on Win32.
-
- ntpd/ntp_intres.c
- 1.27 02/11/24 23:18:29 mayer@tecotoo.myibg.com +0 -4
- Use SOCKET for Win32 support.
-
- ntpd/ntp_filegen.c
- 1.7 02/11/24 23:18:26 mayer@tecotoo.myibg.com +3 -3
- Fix casting issues
-
- ntpd/ntp_control.c
- 1.57 02/11/24 23:18:23 mayer@tecotoo.myibg.com +3 -2
- Fix casting issues and don't assign within if statement.
-
- ntpd/ntp_config.c
- 1.79 02/11/24 23:18:19 mayer@tecotoo.myibg.com +12 -12
- Fixes to not define or compile unused function catchchild. Fix casting issues.
- Don't use if statement at same time as an assignment for the Win32 specific
- CreateThread calls.
-
- ntpd/cmd_args.c
- 1.13.1.1 02/11/24 23:18:15 mayer@tecotoo.myibg.com +7 -2
- Add support for directing log output to stderr or stdout so that all output can go to
- the same place. Fix of casting issue.
-
- libntp/systime.c
- 1.20 02/11/24 23:18:12 mayer@tecotoo.myibg.com +1 -1
- Function call needed a NULL instead of a structure cast of 0.
-
- libntp/socktohost.c
- 1.4 02/11/24 23:18:09 mayer@tecotoo.myibg.com +1 -1
- Replace NULL with 0. Argument was supposed to be an unsigned int.
-
- libntp/ntp_rfc2553.c
- 1.9.1.1 02/11/24 23:18:06 mayer@tecotoo.myibg.com +2 -3
- Fixes to support Win32. Remove old-style gai_strerror call definition.
-
- libntp/msyslog.c
- 1.14 02/11/24 23:18:03 mayer@tecotoo.myibg.com +14 -46
- Replace Win32 specific code with calls to Win32 syslog and strerror developed for BIND 9.
- path separator defined to be different on Unix and Win32.
-
- include/recvbuff.h
- 1.7 02/11/24 23:18:00 mayer@tecotoo.myibg.com +0 -4
- Use SOCKET instead of int for Win32 support
-
- include/ntpd.h
- 1.50 02/11/24 23:17:58 mayer@tecotoo.myibg.com +3 -6
- SOCKET defined instead of int to support Win32
-
- include/ntp_rfc2553.h
- 1.7 02/11/24 23:17:56 mayer@tecotoo.myibg.com +11 -0
- Add Win32 support for IPv6
-
- include/ntp_request.h
- 1.19 02/11/24 23:17:54 mayer@tecotoo.myibg.com +1 -1
- Fix casting issue
-
- include/ntp_refclock.h
- 1.15 02/11/24 23:17:51 mayer@tecotoo.myibg.com +0 -4
- Replace int with SOCKET
-
- include/ntp_machine.h
- 1.15 02/11/24 23:17:49 mayer@tecotoo.myibg.com +15 -1
- Add SOCKET type to support Win32
- Fixes for some Win32 defines
-
- include/ntp_config.h
- 1.22 02/11/24 23:17:47 mayer@tecotoo.myibg.com +1 -0
- Add directory location for Win32 for NTP_KEYSDIR
-
- include/ntp.h
- 1.77 02/11/24 23:17:44 mayer@tecotoo.myibg.com +4 -6
- Add SOCKET type to support Win32
-
-ChangeSet
- 1.945.1.21 02/11/22 23:13:59 stenn@whimsy.udel.edu +1 -0
- Reorder some lines to be compatible with autoconf-2.56.
-
- configure.in
- 1.280 02/11/22 23:13:01 stenn@whimsy.udel.edu +27 -8
- Reorder some lines to be compatible with autoconf-2.56.
-
-ChangeSet
- 1.945.1.20 02/11/21 05:15:31 stenn@whimsy.udel.edu +1 -0
- ntp-dev uses stoa(), not ntoa().
-
- ntpd/ntp_peer.c
- 1.50.1.1 02/11/21 05:15:29 stenn@whimsy.udel.edu +2 -3
- ntp-dev uses stoa(), not ntoa().
-
-ChangeSet
- 1.683.9.3 02/11/21 05:02:34 stenn@whimsy.udel.edu +1 -0
- Fix a NULL pointer dereference in ntp_peer.c::newpeer()
- From: Poul-Henning Kamp <phk@freebsd.org>
-
- ntpd/ntp_peer.c
- 1.29.3.1 02/11/21 05:02:30 stenn@whimsy.udel.edu +2 -1
- Fix a NULL pointer dereference in ntp_peer.c::newpeer()
- From: Poul-Henning Kamp <phk@freebsd.org>
-
-ChangeSet
- 1.945.1.19 02/11/16 17:31:55 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_control.c
- 1.55.1.1 02/11/16 17:31:52 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.9.2 02/11/16 17:28:53 stenn@whimsy.udel.edu +1 -0
- PEER_EVENT bugfix.
- From: Luis Batanero <luisba@roa.es>
-
- ntpd/ntp_control.c
- 1.37.3.7 02/11/16 17:28:50 stenn@whimsy.udel.edu +2 -1
- PEER_EVENT bugfix.
- From: Luis Batanero <luisba@roa.es>
-
-ChangeSet
- 1.945.1.18 02/11/16 01:12:46 stenn@whimsy.udel.edu +2 -0
- Cleanup from Dave.
-
- ntpd/refclock_irig.c
- 1.18 02/11/16 01:12:43 stenn@whimsy.udel.edu +5 -3
- fudgetime2 is a frequency vernier for broken codec sample frequency.
- Fix MAXFREQ.
-
- From Dave Mills.
-
- html/ntpd.html
- 1.24 02/11/16 01:12:43 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
-ChangeSet
- 1.945.1.17 02/11/14 18:20:48 jhay@angel.cids.org.za +3 -0
- First try getaddrinfo() with the AI_NUMERICHOST hint and try again as
- before if it fails. This works around the "problem" on Solaris that
- return the "IPv4-mapped IPv6 address" if you give it an IPv4 address.
-
- ntpq/ntpq.c
- 1.27.1.3 02/11/14 18:20:47 jhay@angel.cids.org.za +20 -9
- First try getaddrinfo() with the AI_NUMERICHOST hint and try again as
- before if it fails. This works around the "problem" on Solaris that
- return the "IPv4-mapped IPv6 address" if you give it an IPv4 address.
-
- ntpdc/ntpdc.c
- 1.19.1.2 02/11/14 18:20:47 jhay@angel.cids.org.za +21 -10
- First try getaddrinfo() with the AI_NUMERICHOST hint and try again as
- before if it fails. This works around the "problem" on Solaris that
- return the "IPv4-mapped IPv6 address" if you give it an IPv4 address.
-
- libntp/ntp_rfc2553.c
- 1.10 02/11/14 18:20:47 jhay@angel.cids.org.za +66 -36
- Teach our getaddrinfo() about the AI_NUMERICHOST hint.
- Reshufle the code a bit to handle the different cases better.
- Fix some memory leaks in error cases.
-
-ChangeSet
- 1.945.1.16 02/11/12 19:01:24 jhay@angel.cids.org.za +2 -0
- Don't exit on a failed lookup. Send the error message to stderr and
- not stdout.
-
- ntpq/ntpq.c
- 1.27.1.2 02/11/12 19:01:23 jhay@angel.cids.org.za +2 -2
- Don't exit on a failed lookup. Send the error message to stderr and
- not stdout.
-
- ntpdc/ntpdc.c
- 1.19.1.1 02/11/12 19:01:23 jhay@angel.cids.org.za +2 -2
- Don't exit on a failed lookup. Send the error message to stderr and
- not stdout.
-
-ChangeSet
- 1.945.1.15 02/11/06 01:04:08 stenn@whimsy.udel.edu +1 -0
- Don't install the snmp man page - we have Dave's html page now.
-
- sntp/Makefile.am
- 1.2 02/11/06 01:04:02 stenn@whimsy.udel.edu +2 -2
- Don't install the snmp man page - we have Dave's html page now.
-
-ChangeSet
- 1.945.1.14 02/11/05 18:35:51 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev-clockctl
- into whimsy.udel.edu:/backroom/ntp-dev
-
- html/config.html
- 1.14 02/11/05 18:35:49 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.945.2.1 02/11/05 18:24:15 stenn@whimsy.udel.edu +9 -0
- clockctl changes from Emmanuel Dreyfus <manu@netbsd.org>.
-
- html/hints/netbsd
- 1.1 02/11/05 18:23:50 stenn@whimsy.udel.edu +37 -0
-
- ntpd/ntpd.c
- 1.38.1.3 02/11/05 18:23:50 stenn@whimsy.udel.edu +75 -0
- clockctl changes from Emmanuel Dreyfus <manu@netbsd.org>.
-
- ntpd/cmd_args.c
- 1.14 02/11/05 18:23:50 stenn@whimsy.udel.edu +29 -0
- clockctl changes from Emmanuel Dreyfus <manu@netbsd.org>.
-
- html/hints/netbsd
- 1.0 02/11/05 18:23:50 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev-clockctl/html/hints/netbsd
-
- libntp/md5c.c
- 1.4 02/11/05 18:23:49 stenn@whimsy.udel.edu +3 -3
- clockctl changes from Emmanuel Dreyfus <manu@netbsd.org>.
-
- libntp/a_md5encrypt.c
- 1.8.1.4 02/11/05 18:23:49 stenn@whimsy.udel.edu +3 -3
- clockctl changes from Emmanuel Dreyfus <manu@netbsd.org>.
-
- include/ntpd.h
- 1.48.1.1 02/11/05 18:23:49 stenn@whimsy.udel.edu +5 -0
- clockctl changes from Emmanuel Dreyfus <manu@netbsd.org>.
-
- include/md5.h
- 1.3 02/11/05 18:23:49 stenn@whimsy.udel.edu +4 -4
- clockctl changes from Emmanuel Dreyfus <manu@netbsd.org>.
-
- html/config.html
- 1.12.1.1 02/11/05 18:23:49 stenn@whimsy.udel.edu +2 -1
- clockctl changes from Emmanuel Dreyfus <manu@netbsd.org>.
-
- configure.in
- 1.279 02/11/05 18:23:49 stenn@whimsy.udel.edu +20 -0
- clockctl changes from Emmanuel Dreyfus <manu@netbsd.org>.
-
-ChangeSet
- 1.945.1.13 02/11/05 17:21:27 stenn@whimsy.udel.edu +44 -0
- Documentation cleanup from Dave Mills.
-
- html/sntp.html
- 1.1 02/11/05 17:21:14 stenn@whimsy.udel.edu +52 -0
-
- html/tickadj.html
- 1.12 02/11/05 17:21:14 stenn@whimsy.udel.edu +1 -2
- Documentation cleanup from Dave Mills.
-
- html/sntp.html
- 1.0 02/11/05 17:21:14 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/sntp.html
-
- html/release.html
- 1.24 02/11/05 17:21:13 stenn@whimsy.udel.edu +2 -2
- Documentation cleanup from Dave Mills.
-
- html/refclock.html
- 1.25 02/11/05 17:21:13 stenn@whimsy.udel.edu +2 -2
- Documentation cleanup from Dave Mills.
-
- html/rdebug.html
- 1.11 02/11/05 17:21:13 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/quick.html
- 1.12 02/11/05 17:21:13 stenn@whimsy.udel.edu +2 -2
- Documentation cleanup from Dave Mills.
-
- html/prefer.html
- 1.11 02/11/05 17:21:13 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/pps.html
- 1.15 02/11/05 17:21:13 stenn@whimsy.udel.edu +14 -6
- Documentation cleanup from Dave Mills.
-
- html/porting.html
- 1.10 02/11/05 17:21:12 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/patches.html
- 1.12 02/11/05 17:21:12 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/ntptrace.html
- 1.11 02/11/05 17:21:12 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/ntptime.html
- 1.13 02/11/05 17:21:12 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/ntpq.html
- 1.17 02/11/05 17:21:12 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/ntpdc.html
- 1.14 02/11/05 17:21:12 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/ntpdate.html
- 1.13 02/11/05 17:21:12 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/ntpd.html
- 1.23 02/11/05 17:21:11 stenn@whimsy.udel.edu +2 -2
- Documentation cleanup from Dave Mills.
-
- html/notes.html
- 1.14 02/11/05 17:21:11 stenn@whimsy.udel.edu +3 -4
- Documentation cleanup from Dave Mills.
-
- html/monopt.html
- 1.15 02/11/05 17:21:11 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/miscopt.html
- 1.22 02/11/05 17:21:11 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/manyopt.html
- 1.7 02/11/05 17:21:11 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/ldisc.html
- 1.9 02/11/05 17:21:11 stenn@whimsy.udel.edu +4 -25
- Documentation cleanup from Dave Mills.
-
- html/kern.html
- 1.12 02/11/05 17:21:10 stenn@whimsy.udel.edu +8 -12
- Documentation cleanup from Dave Mills.
-
- html/index.html
- 1.20 02/11/05 17:21:10 stenn@whimsy.udel.edu +50 -54
- Documentation cleanup from Dave Mills.
-
- html/howto.html
- 1.13 02/11/05 17:21:10 stenn@whimsy.udel.edu +2 -2
- Documentation cleanup from Dave Mills.
-
- html/hints/winnt.html
- 1.11 02/11/05 17:21:10 stenn@whimsy.udel.edu +192 -332
- Documentation cleanup from Dave Mills.
-
- html/hints/sco.html
- 1.5 02/11/05 17:21:10 stenn@whimsy.udel.edu +2 -0
- Documentation cleanup from Dave Mills.
-
- html/hints.html
- 1.11 02/11/05 17:21:10 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/genkeys.html
- 1.15 02/11/05 17:21:10 stenn@whimsy.udel.edu +29 -24
- Documentation cleanup from Dave Mills.
-
- html/driver9.html
- 1.10 02/11/05 17:21:09 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/driver8.html
- 1.9 02/11/05 17:21:09 stenn@whimsy.udel.edu +15 -15
- Documentation cleanup from Dave Mills.
-
- html/driver7.html
- 1.16 02/11/05 17:21:09 stenn@whimsy.udel.edu +4 -4
- Documentation cleanup from Dave Mills.
-
- html/driver40.html
- 1.7 02/11/05 17:21:09 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/driver37.html
- 1.8 02/11/05 17:21:09 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/driver36.html
- 1.14 02/11/05 17:21:09 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/driver27.html
- 1.8 02/11/05 17:21:09 stenn@whimsy.udel.edu +2 -2
- Documentation cleanup from Dave Mills.
-
- html/driver23.html
- 1.9 02/11/05 17:21:08 stenn@whimsy.udel.edu +3 -3
- Documentation cleanup from Dave Mills.
-
- html/debug.html
- 1.15 02/11/05 17:21:08 stenn@whimsy.udel.edu +2 -2
- Documentation cleanup from Dave Mills.
-
- html/confopt.html
- 1.24 02/11/05 17:21:08 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/config.html
- 1.13 02/11/05 17:21:08 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/clockopt.html
- 1.14 02/11/05 17:21:08 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/build.html
- 1.15 02/11/05 17:21:08 stenn@whimsy.udel.edu +2 -2
- Documentation cleanup from Dave Mills.
-
- html/authopt.html
- 1.23 02/11/05 17:21:07 stenn@whimsy.udel.edu +29 -22
- Documentation cleanup from Dave Mills.
-
- html/assoc.html
- 1.17 02/11/05 17:21:07 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
- html/accopt.html
- 1.15 02/11/05 17:21:07 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup from Dave Mills.
-
-ChangeSet
- 1.945.1.12 02/11/05 16:55:16 stenn@whimsy.udel.edu +1 -0
- NONBLOCK_BROKEN is for sunos, not solaris. From John Hay.
-
- sntp/configure.ac
- 1.5 02/11/05 16:55:10 stenn@whimsy.udel.edu +1 -1
- NONBLOCK_BROKEN is for sunos, not solaris. From John Hay.
-
-ChangeSet
- 1.945.1.11 02/11/05 12:22:05 jhay@angel.cids.org.za +2 -0
- Do not dns lookup the refid. It is not meaningful anymore.
-
- ntpq/ntpq_ops.c
- 1.15 02/11/05 12:22:04 jhay@angel.cids.org.za +5 -1
- Do not dns lookup the refid. It is not meaningful anymore.
-
- ntpq/ntpq.c
- 1.27.1.1 02/11/05 12:22:04 jhay@angel.cids.org.za +8 -3
- Do not dns lookup the refid. It is not meaningful anymore.
-
-ChangeSet
- 1.945.1.10 02/11/05 12:07:46 jhay@angel.cids.org.za +1 -0
- Only use known parts of sockaddr_storage for sock_hash().
- Do a whitespace cleanup of sock_hash() while I'm here.
-
- ntpd/ntp_util.c
- 1.19.1.1 02/11/05 12:07:44 jhay@angel.cids.org.za +38 -13
- Only use known parts of sockaddr_storage for sock_hash().
- Do a whitespace cleanup of sock_hash() while I'm here.
-
-ChangeSet
- 1.945.1.9 02/11/04 19:35:10 jhay@angel.cids.org.za +1 -0
- Check the error code if socket fails. Don't die if it is one of EPROTONOSUPPORT,
- EAFNOSUPPORT or EPFNOSUPPORT. This makes it work on Linux without IPv6 in the
- kernel.
-
- ntpdate/ntpdate.c
- 1.37.1.1 02/11/04 19:35:09 jhay@angel.cids.org.za +3 -0
- Check the error code if socket fails. Don't die if it is one of EPROTONOSUPPORT,
- EAFNOSUPPORT or EPFNOSUPPORT. This makes it work on Linux without IPv6 in the
- kernel.
-
-ChangeSet
- 1.945.1.8 02/11/03 14:56:11 stenn@whimsy.udel.edu +1 -0
- mu goes from double to long. From Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.66 02/11/03 14:56:08 stenn@whimsy.udel.edu +11 -6
- mu goes from double to long. From Dave Mills.
-
-ChangeSet
- 1.945.1.7 02/11/01 04:45:36 stenn@whimsy.udel.edu +1 -0
- ONCORE Bugfix from Reg Clemens, from a report by John Hay.
-
- ntpd/refclock_oncore.c
- 1.44 02/11/01 04:45:34 stenn@whimsy.udel.edu +4 -7
- Bugfix from Reg Clemens, from a report by John Hay.
-
-ChangeSet
- 1.945.1.6 02/10/31 03:07:35 stenn@whimsy.udel.edu +1 -0
- ONCORE improvements from Reg Clemens.
-
- ntpd/refclock_oncore.c
- 1.43 02/10/31 03:07:32 stenn@whimsy.udel.edu +116 -35
- Reg Clemens says...
- the changes here are:
- (a) reformat some message calls (messages stay the same).
- (b) add code to allow SETTING mask angle (angle in sky below
- which satellites will be ignored).
- (c) add code to print more information about possible antenna
- problems.
-
-ChangeSet
- 1.945.1.5 02/10/31 01:58:34 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- html/pic/driver43_2.jpg
- 1.3 02/10/31 01:58:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/pic/driver43_1.gif
- 1.3 02/10/31 01:58:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.9.1 02/10/31 01:56:09 stenn@whimsy.udel.edu +2 -0
- Some of the picture files were in the wrong web subdir.
- Reported by John Hay.
-
- html/pic/driver43_2.jpg
- 1.1.1.1 02/10/31 01:51:53 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver43_2.jpg -> html/pic/driver43_2.jpg
-
- html/pic/driver43_1.gif
- 1.1.1.1 02/10/31 01:51:52 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver43_1.gif -> html/pic/driver43_1.gif
-
-ChangeSet
- 1.683.4.122 02/10/29 14:23:52 ginsbach@clunk.us.cray.com +3 -0
- Changes to support Cray's new operating system UNICOS/mp. Configure fixes
- for IRIX.
-
- BitKeeper/etc/logging_ok
- 1.1.1.5 02/10/29 14:23:49 ginsbach@clunk.us.cray.com +1 -0
- Logging to logging@openlogging.org accepted
-
- util/timetrim.c
- 1.4 02/10/29 14:08:15 ginsbach@clunk.us.cray.com +20 -1
- Add UNICOS/mp support
-
- configure.in
- 1.219.3.33 02/10/29 14:07:11 ginsbach@clunk.us.cray.com +42 -4
- Fix for IRIX64 (LP64 IRIX)
- Fix IRIX defaults that don't apply to IRIX 6.5
- Add UNICOS/mp support
-
-ChangeSet
- 1.945.1.4 02/10/29 08:01:39 jhay@angel.cids.org.za +1 -0
- Fix a debug printf to also show usefull data in the IPv6 case.
-
- ntpd/ntp_io.c
- 1.45.1.1 02/10/29 08:01:38 jhay@angel.cids.org.za +1 -1
- Fix a debug printf to also show usefull data in the IPv6 case.
-
-ChangeSet
- 1.945.1.3 02/10/29 07:50:42 jhay@angel.cids.org.za +1 -0
- Add #define OPENSSL_NO_MD5 to make openssl-0.9.7-beta3 compile.
-
- libntp/a_md5encrypt.c
- 1.8.1.3 02/10/29 07:50:40 jhay@angel.cids.org.za +1 -0
- Add #define OPENSSL_NO_MD5 to make openssl-0.9.7-beta3 compile.
-
-ChangeSet
- 1.945.1.2 02/10/28 23:52:45 stenn@whimsy.udel.edu +1 -0
- Enable the IRIG sawtooth code for Solaris-2.8 and 2.9 for now.
-
- configure.in
- 1.278 02/10/28 23:52:42 stenn@whimsy.udel.edu +17 -0
- Enable the IRIG sawtooth code for Solaris-2.8 and 2.9 for now.
-
-ChangeSet
- 1.945.1.1 02/10/28 22:18:19 stenn@whimsy.udel.edu +2 -0
- Sawtooth and ntp-keygen changes from Dave Mills.
-
- util/ntp-keygen.c
- 1.19 02/10/28 22:18:15 stenn@whimsy.udel.edu +53 -29
- Broadcast crypto changes/cleanup. Dave says the stuff needs serious
- work before it can be used, but we don't use it yet and his current
- code should still be useful once the spec is useful.
-
- ntpd/refclock_irig.c
- 1.17 02/10/28 22:18:15 stenn@whimsy.udel.edu +15 -20
- Sawtooth filter cleanup for Solaris 5.8 and beyond, from Dave Mills.
-
-ChangeSet
- 1.946 02/10/26 15:09:20 mayer@tecotoo.myibg.com +26 -0
- Merge Conflicts
-
- ports/winnt/include/config.h
- 1.15 02/10/26 15:08:45 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- ntpq/ntpq.c
- 1.28 02/10/26 15:08:43 mayer@tecotoo.myibg.com +0 -1
- Merge Conflicts
-
- ntpdc/ntpdc.c
- 1.20 02/10/26 15:08:41 mayer@tecotoo.myibg.com +0 -5
- Merge Conflicts
-
- ntpdate/ntpdate.c
- 1.38 02/10/26 15:08:40 mayer@tecotoo.myibg.com +0 -7
- Merge Conflicts
-
- ntpd/refclock_hopfser.c
- 1.6 02/10/26 15:08:38 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- ntpd/ntpd.c
- 1.41 02/10/26 15:08:36 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- ntpd/ntp_util.c
- 1.20 02/10/26 15:08:34 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- ntpd/ntp_request.c
- 1.39 02/10/26 15:08:33 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- ntpd/ntp_refclock.c
- 1.47 02/10/26 15:08:31 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- ntpd/ntp_peer.c
- 1.51 02/10/26 15:08:29 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- ntpd/ntp_io.c
- 1.46 02/10/26 15:08:27 mayer@tecotoo.myibg.com +0 -74
- Merge Conflicts
-
- ntpd/ntp_intres.c
- 1.26 02/10/26 15:08:25 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- ntpd/ntp_control.c
- 1.56 02/10/26 15:08:23 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- ntpd/ntp_config.c
- 1.78 02/10/26 15:08:21 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- libntp/msyslog.c
- 1.13 02/10/26 15:08:19 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- libntp/a_md5encrypt.c
- 1.10 02/10/26 15:08:16 mayer@tecotoo.myibg.com +2 -0
- Merge Conflicts
-
- include/recvbuff.h
- 1.6 02/10/26 15:08:15 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- include/ntpd.h
- 1.49 02/10/26 15:08:14 mayer@tecotoo.myibg.com +0 -1
- Merge Conflicts
-
- include/ntp_stdlib.h
- 1.18 02/10/26 15:08:12 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- include/ntp_refclock.h
- 1.14 02/10/26 15:08:11 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- include/ntp_machine.h
- 1.14 02/10/26 15:08:09 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- include/ntp_fp.h
- 1.7 02/10/26 15:08:08 mayer@tecotoo.myibg.com +0 -0
- Merge Conflicts
-
- include/ntp.h
- 1.76 02/10/26 15:08:06 mayer@tecotoo.myibg.com +0 -3
- Merge Conflicts
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.11 02/10/26 14:37:32 mayer@tecotoo.myibg.com +0 -0
- auto-union
-
- BitKeeper/etc/logging_ok
- 1.11 02/10/26 14:37:30 mayer@tecotoo.myibg.com +1 -1
- auto-union
-
- BitKeeper/etc/ignore
- 1.24 02/10/26 14:37:27 mayer@tecotoo.myibg.com +11 -11
- auto-union
-
-ChangeSet
- 1.945 02/10/25 22:06:11 stenn@whimsy.udel.edu +3 -0
- version number merge cleanup
-
- configure.in
- 1.277 02/10/25 22:06:08 stenn@whimsy.udel.edu +0 -1
- ntp-dev uses ntp-dev version numbers...
-
- NEWS
- 1.39 02/10/25 22:03:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.34 02/10/25 22:03:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.121 02/10/25 21:58:47 stenn@whimsy.udel.edu +3 -0
- Nits for 4.1.1b
-
- configure.in
- 1.219.3.32 02/10/25 21:58:43 stenn@whimsy.udel.edu +1 -1
- 4.1.1b
-
- NEWS
- 1.31.1.8 02/10/25 21:58:43 stenn@whimsy.udel.edu +1 -0
- Updated.
-
- Makefile.am
- 1.12.1.16 02/10/25 21:58:43 stenn@whimsy.udel.edu +1 -1
- Make sure the .ds? files are writable before we convert them from
- Unix to DOS EOLs.
-
-ChangeSet
- 1.944 02/10/25 20:16:47 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_loopfilter.c
- 1.65 02/10/25 20:16:45 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.120 02/10/25 20:12:59 stenn@whimsy.udel.edu +1 -0
- Clock state machine bugfix from Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.53.1.5 02/10/25 20:12:56 stenn@whimsy.udel.edu +1 -1
- Guys,
-
- I stumbled over a bug in the clock state machine that has been there
- for the longest time. The bug is exposed in certain cases when first
- starting up with a very poor initial frequency in ntp.drift together
- with a moderate time offset greater than 128 ms. The state machine
- oscillates between S_FREQ and S_TSET without ever setting the offset
- to zero and allowing an accurate frequency determination.
-
- This bug probably explains a number of reports on the newsgroup about
- failure to converge with very broken clock oscillators. I tested the
- most broken configuration I can, initial ntp.drift 500 PPM and minpoll
- at 1024 s. It all works like a pinball machine, but it does take a
- couple of hours for the bumps and grinds to settle down. However,
- without the state machine the discipline could take a week to converge
- at 9 cents a call every 15 minutes.
-
-ChangeSet
- 1.943 02/10/24 00:37:50 stenn@whimsy.udel.edu +1 -0
- Fixes for Solaris le interface from John Hay.
-
- ntpd/ntp_io.c
- 1.45 02/10/24 00:37:47 stenn@whimsy.udel.edu +4 -1
- Fixes for Solaris le interface from John Hay.
-
-ChangeSet
- 1.942 02/10/23 23:30:41 stenn@whimsy.udel.edu +3 -0
- Changes from Dave Mills. Sawtooth filter for audio IRIG, mainly.
-
- ntpd/refclock_irig.c
- 1.16 02/10/23 23:30:38 stenn@whimsy.udel.edu +72 -8
- Sawtooth filter for audio IRIG.
- Work around a problem in recent Sun kernels.
-
- ntpd/ntp_request.c
- 1.38 02/10/23 23:30:38 stenn@whimsy.udel.edu +1 -1
- Typo fix.
-
- ntpd/ntp_proto.c
- 1.134 02/10/23 23:30:38 stenn@whimsy.udel.edu +1 -1
- a < b/2 ==> 2*a < b
-
-ChangeSet
- 1.941 02/10/22 01:08:49 stenn@whimsy.udel.edu +1 -0
- BACKWARD INCOMPATIBLE CHANGE!
-
- Make the code agree with the docs.
-
- To have ntpd run at high priority, use '-N'.
-
- It used to require '-N high'.
-
- ntpd/cmd_args.c
- 1.13 02/10/22 01:08:46 stenn@whimsy.udel.edu +2 -2
- BACKWARD INCOMPATIBLE CHANGE!
-
- Make the code agree with the docs.
-
- To have ntpd run at high priority, use '-N'.
-
- It used to require '-N high'.
-
-ChangeSet
- 1.706.2.79 02/10/21 22:51:03 mayer@tecotoo.myibg.com +19 -0
- Changes required to support Windows Sockets and include files
-
- ports/winnt/ntpq/ntpq.dsp
- 1.8 02/10/21 22:05:41 mayer@tecotoo.myibg.com +2 -2
- Required project changes
-
- ports/winnt/ntpdc/ntpdc.dsp
- 1.8 02/10/21 22:05:39 mayer@tecotoo.myibg.com +2 -2
- Required porject changes
-
- ports/winnt/ntpd/win32_io.c
- 1.6 02/10/21 22:05:38 mayer@tecotoo.myibg.com +2 -2
- functions require a return value
-
- ports/winnt/ntpd/hopf_PCI_io.c
- 1.4 02/10/21 22:05:36 mayer@tecotoo.myibg.com +1 -0
- Windows specific inclusion
-
- ports/winnt/libntp/libntp.dsp
- 1.8 02/10/21 22:05:34 mayer@tecotoo.myibg.com +0 -8
- Project file changes
-
- ports/winnt/include/sys/time.h
- 1.4 02/10/21 22:05:33 mayer@tecotoo.myibg.com +2 -0
- Windows specific include
-
- ports/winnt/include/config.h
- 1.14 02/10/21 22:05:29 mayer@tecotoo.myibg.com +7 -4
- NT specific code to prevent inclusion of winsock.h
-
- ntpq/ntpq.c
- 1.19.1.3 02/10/21 22:05:06 mayer@tecotoo.myibg.com +4 -0
- Change int to SOCKET
-
- ntpdc/ntpdc.c
- 1.11.1.3 02/10/21 22:05:04 mayer@tecotoo.myibg.com +4 -0
- Change int to SOCKET
-
- ntpdate/ntpdate.c
- 1.23.1.6 02/10/21 22:05:02 mayer@tecotoo.myibg.com +5 -0
- Change int to SOCKET
-
- ntpd/ntpd.c
- 1.40 02/10/21 22:04:59 mayer@tecotoo.myibg.com +1 -1
- Change int to SOCKET
-
- ntpd/ntp_io.c
- 1.21.1.6 02/10/21 22:04:56 mayer@tecotoo.myibg.com +18 -16
- Change int to SOCKET
-
- ntpd/ntp_intres.c
- 1.17.1.4 02/10/21 22:04:53 mayer@tecotoo.myibg.com +4 -1
- Change int to SOCKET
-
- include/recvbuff.h
- 1.1.2.1 02/10/21 22:04:50 mayer@tecotoo.myibg.com +5 -1
- Change int to SOCKET
-
- include/ntpd.h
- 1.31.1.7 02/10/21 22:04:49 mayer@tecotoo.myibg.com +3 -1
- Change int to SOCKET for NT
- Add INVALID_SOCKET macro
-
- include/ntp_refclock.h
- 1.9.1.4 02/10/21 22:04:47 mayer@tecotoo.myibg.com +4 -0
- Change int to SOCKET for NT
-
- include/ntp_machine.h
- 1.13 02/10/21 22:04:45 mayer@tecotoo.myibg.com +1 -1
- Remove unnecessary comment
-
- include/ntp.h
- 1.50.3.1 02/10/21 22:04:43 mayer@tecotoo.myibg.com +5 -0
- Change int to SOCKET
-
- BitKeeper/etc/ignore
- 1.14.2.1 02/10/21 22:04:39 mayer@tecotoo.myibg.com +11 -0
- Added NT specific files to ignore
-
-ChangeSet
- 1.940 02/10/20 00:19:35 stenn@whimsy.udel.edu +1 -0
- Another giant whack of changes from Dave Mills.
-
- util/ntp-keygen.c
- 1.18 02/10/20 00:19:32 stenn@whimsy.udel.edu +108 -263
- Another giant whack of changes from Dave Mills.
-
-ChangeSet
- 1.939 02/10/19 23:14:36 stenn@whimsy.udel.edu +1 -0
- Correctness assertion fix in the clock selection algorithm.
-
- ntpd/ntp_proto.c
- 1.133 02/10/19 23:14:31 stenn@whimsy.udel.edu +53 -19
- Fix, as I understand it, a 14-year-old bug in the clock selection
- algorithm code in the correctness assertions. Dave Mills sez:
-
- The only thing folks might notice is that, as originally intended,
- if a clique containing more than half of the candidates does not
- exist, the Byzantines lose the war and formally correct
- synchronization is not possible. This only happens if the correctness
- intervals do not overlap and no clique claims a majority. In
- principle, it would be possible to mitigate using other information,
- such as distance, but that would seriously complicate the routine.
-
-ChangeSet
- 1.938 02/10/19 21:51:37 stenn@whimsy.udel.edu +5 -0
- IPv6 patches from John Hay.
-
- sntp/socket.c
- 1.2 02/10/19 21:51:33 stenn@whimsy.udel.edu +152 -11
- IPv6 patches from John Hay.
-
- sntp/main.c
- 1.2 02/10/19 21:51:33 stenn@whimsy.udel.edu +9 -3
- IPv6 patches from John Hay.
-
- sntp/internet.h
- 1.2 02/10/19 21:51:33 stenn@whimsy.udel.edu +9 -1
- IPv6 patches from John Hay.
-
- sntp/internet.c
- 1.2 02/10/19 21:51:33 stenn@whimsy.udel.edu +97 -0
- IPv6 patches from John Hay.
-
- sntp/header.h
- 1.2 02/10/19 21:51:33 stenn@whimsy.udel.edu +3 -0
- IPv6 patches from John Hay.
-
-ChangeSet
- 1.937 02/10/19 21:44:04 stenn@whimsy.udel.edu +1 -0
- Provide recommended -D stuff for linux and solaris.
-
- sntp/configure.ac
- 1.4 02/10/19 21:43:59 stenn@whimsy.udel.edu +10 -0
- Provide recommended -D stuff for linux and solaris.
-
-ChangeSet
- 1.936 02/10/16 03:27:04 stenn@whimsy.udel.edu +1 -0
- Build sntp on the flock.
-
- flock-build
- 1.25 02/10/16 03:27:00 stenn@whimsy.udel.edu +5 -4
- Build sntp on the flock.
-
-ChangeSet
- 1.935 02/10/13 21:47:47 stenn@whimsy.udel.edu +9 -0
- More crypto stuff from Dave Mills.
-
- Add some doc files that got lost in the recent upgrade.
-
- html/pic/sunrise1.psd
- 1.1 02/10/13 21:47:43 stenn@whimsy.udel.edu +8917 -0
-
- html/pic/sunrise1.jpg
- 1.1 02/10/13 21:47:43 stenn@whimsy.udel.edu +522 -0
-
- html/pic/sunrise1.psd
- 1.0 02/10/13 21:47:43 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/pic/sunrise1.psd
-
- html/pic/sunrise1.jpg
- 1.0 02/10/13 21:47:43 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/pic/sunrise1.jpg
-
- html/pic/butterfly.gif
- 1.1 02/10/13 21:47:42 stenn@whimsy.udel.edu +46 -0
-
- html/pic/alautun4b.gif
- 1.1 02/10/13 21:47:42 stenn@whimsy.udel.edu +14 -0
-
- html/ipv6.html
- 1.1 02/10/13 21:47:42 stenn@whimsy.udel.edu +9 -0
-
- util/ntp-keygen.c
- 1.17 02/10/13 21:47:42 stenn@whimsy.udel.edu +225 -157
- More crypto stuff from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.132 02/10/13 21:47:42 stenn@whimsy.udel.edu +3 -4
- More crypto stuff from Dave Mills.
-
- html/pic/butterfly.gif
- 1.0 02/10/13 21:47:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/pic/butterfly.gif
-
- html/pic/alautun4b.gif
- 1.0 02/10/13 21:47:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/pic/alautun4b.gif
-
- html/ipv6.html
- 1.0 02/10/13 21:47:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/ipv6.html
-
- ntpd/ntp_crypto.c
- 1.72 02/10/13 21:47:41 stenn@whimsy.udel.edu +76 -27
- More crypto stuff from Dave Mills.
-
- include/ntp.h
- 1.75 02/10/13 21:47:41 stenn@whimsy.udel.edu +2 -1
- More crypto stuff from Dave Mills.
-
-ChangeSet
- 1.934 02/10/13 21:34:13 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- Makefile.am
- 1.33 02/10/13 21:34:10 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.119 02/10/13 21:30:22 stenn@whimsy.udel.edu +1 -0
- Make sure the winnt .ds[wp] files in the tarball have DOS EOLs.
-
- Makefile.am
- 1.12.1.15 02/10/13 21:30:19 stenn@whimsy.udel.edu +2 -0
- Make sure the winnt .ds[wp] files in the tarball have DOS EOLs.
-
-ChangeSet
- 1.933 02/10/12 00:16:04 stenn@whimsy.udel.edu +1 -0
- Fix a typo that caused us to miss building util/ .
-
- Makefile.am
- 1.32 02/10/12 00:15:58 stenn@whimsy.udel.edu +1 -1
- Typo.
-
-ChangeSet
- 1.932 02/10/11 03:27:35 stenn@whimsy.udel.edu +1 -0
- Portability fixes.
-
- sntp/unix.c
- 1.2 02/10/11 03:27:32 stenn@whimsy.udel.edu +12 -4
- Improve portability to ancient machines.
-
- Begin to make function definitions match the format required
- by ansi2knr.
-
-ChangeSet
- 1.683.4.118 02/10/10 02:49:18 stenn@whimsy.udel.edu +1 -0
- Stop a buffer overflow.
- From: Kris Kennaway <kris@obsecurity.org>
-
- libntp/msyslog.c
- 1.11.1.1 02/10/10 02:49:15 stenn@whimsy.udel.edu +1 -1
- Stop a buffer overflow.
- From: Kris Kennaway <kris@obsecurity.org>
-
-ChangeSet
- 1.930 02/10/08 22:33:32 stenn@whimsy.udel.edu +1 -0
- If we say --with-sntp then compile it.
-
- Makefile.am
- 1.31 02/10/08 22:33:29 stenn@whimsy.udel.edu +1 -0
- If we say --with-sntp then compile it.
-
-ChangeSet
- 1.929 02/10/08 20:27:10 stenn@whimsy.udel.edu +1 -0
- sntp autoconf improvements.
-
- sntp/configure.ac
- 1.3 02/10/08 20:27:06 stenn@whimsy.udel.edu +6 -1
- Feature test for libraries for sqrt and the network routines.
-
-ChangeSet
- 1.928 02/10/08 02:58:53 stenn@whimsy.udel.edu +3 -0
- COPYRIGHT rule fixes, sntp configure cleanup.
-
- sntp/configure.ac
- 1.2 02/10/08 02:58:50 stenn@whimsy.udel.edu +2 -2
- Be backward-compatible with AC_INIT and AM_INIT_AUTOMAKE.
-
- configure.in
- 1.276 02/10/08 02:58:49 stenn@whimsy.udel.edu +23 -1
- ElectricFence was not using AC_HELP_STRING().
-
- Added --with-sntp flag (defaults to "no" for now).
-
- If we want SNTP, run configure there.
-
- Makefile.am
- 1.30 02/10/08 02:58:49 stenn@whimsy.udel.edu +2 -2
- The COPYRIGHT file rules needed htm -> html changes.
-
-ChangeSet
- 1.927 02/10/08 01:16:57 stenn@whimsy.udel.edu +83 -0
- Reconcile with Dave's new html stuff.
-
- html/release.html
- 1.23 02/10/08 01:16:51 stenn@whimsy.udel.edu +11 -11
- Cleanup from Dave Mills.
-
- html/refclock.html
- 1.24 02/10/08 01:16:51 stenn@whimsy.udel.edu +81 -66
- Cleanup from Dave Mills.
-
- html/rdebug.html
- 1.10 02/10/08 01:16:51 stenn@whimsy.udel.edu +9 -3
- Cleanup from Dave Mills.
-
- html/quick.html
- 1.11 02/10/08 01:16:51 stenn@whimsy.udel.edu +5 -5
- Cleanup from Dave Mills.
-
- html/prefer.html
- 1.10 02/10/08 01:16:50 stenn@whimsy.udel.edu +36 -33
- Cleanup from Dave Mills.
-
- html/pps.html
- 1.14 02/10/08 01:16:50 stenn@whimsy.udel.edu +11 -6
- Cleanup from Dave Mills.
-
- html/porting.html
- 1.9 02/10/08 01:16:50 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/patches.html
- 1.11 02/10/08 01:16:50 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/parsenew.html
- 1.7 02/10/08 01:16:50 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/parsedata.html
- 1.10 02/10/08 01:16:50 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/ntptrace.html
- 1.10 02/10/08 01:16:50 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/ntptime.html
- 1.12 02/10/08 01:16:50 stenn@whimsy.udel.edu +3 -3
- Cleanup from Dave Mills.
-
- html/ntpq.html
- 1.16 02/10/08 01:16:50 stenn@whimsy.udel.edu +8 -8
- Cleanup from Dave Mills.
-
- html/ntpdc.html
- 1.13 02/10/08 01:16:49 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/ntpdate.html
- 1.12 02/10/08 01:16:49 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/ntpd.html
- 1.22 02/10/08 01:16:49 stenn@whimsy.udel.edu +41 -24
- Cleanup from Dave Mills.
-
- html/notes.html
- 1.13 02/10/08 01:16:49 stenn@whimsy.udel.edu +14 -14
- Cleanup from Dave Mills.
-
- html/monopt.html
- 1.14 02/10/08 01:16:49 stenn@whimsy.udel.edu +7 -12
- Cleanup from Dave Mills.
-
- html/miscopt.html
- 1.21 02/10/08 01:16:48 stenn@whimsy.udel.edu +9 -5
- Cleanup from Dave Mills.
-
- html/measure.html
- 1.9 02/10/08 01:16:48 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/manyopt.html
- 1.6 02/10/08 01:16:48 stenn@whimsy.udel.edu +14 -7
- Cleanup from Dave Mills.
-
- html/ldisc.html
- 1.8 02/10/08 01:16:48 stenn@whimsy.udel.edu +7 -2
- Cleanup from Dave Mills.
-
- html/kernpps.html
- 1.9 02/10/08 01:16:48 stenn@whimsy.udel.edu +9 -4
- Cleanup from Dave Mills.
-
- html/kern.html
- 1.11 02/10/08 01:16:48 stenn@whimsy.udel.edu +14 -12
- Cleanup from Dave Mills.
-
- html/index.html
- 1.19 02/10/08 01:16:48 stenn@whimsy.udel.edu +69 -51
- Cleanup from Dave Mills.
-
- html/howto.html
- 1.12 02/10/08 01:16:48 stenn@whimsy.udel.edu +22 -12
- Cleanup from Dave Mills.
-
- html/hints/vxworks.html
- 1.5 02/10/08 01:16:47 stenn@whimsy.udel.edu +79 -151
- Cleanup from Dave Mills.
-
- html/hints/solaris.html
- 1.6 02/10/08 01:16:47 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/hints.html
- 1.10 02/10/08 01:16:47 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/genkeys.html
- 1.14 02/10/08 01:16:47 stenn@whimsy.udel.edu +36 -19
- Cleanup from Dave Mills.
-
- html/gadget.html
- 1.9 02/10/08 01:16:47 stenn@whimsy.udel.edu +17 -9
- Cleanup from Dave Mills.
-
- html/extern.html
- 1.10 02/10/08 01:16:47 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/driver9.html
- 1.9 02/10/08 01:16:47 stenn@whimsy.udel.edu +55 -127
- Cleanup from Dave Mills.
-
- html/driver8.html
- 1.8 02/10/08 01:16:46 stenn@whimsy.udel.edu +9 -7
- Cleanup from Dave Mills.
-
- html/driver7.html
- 1.15 02/10/08 01:16:46 stenn@whimsy.udel.edu +6 -4
- Cleanup from Dave Mills.
-
- html/driver6.html
- 1.11 02/10/08 01:16:46 stenn@whimsy.udel.edu +9 -7
- Cleanup from Dave Mills.
-
- html/driver5.html
- 1.8 02/10/08 01:16:46 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/driver44.html
- 1.6 02/10/08 01:16:46 stenn@whimsy.udel.edu +89 -124
- Cleanup from Dave Mills.
-
- html/driver43.html
- 1.5 02/10/08 01:16:46 stenn@whimsy.udel.edu +7 -4
- Cleanup from Dave Mills.
-
- html/driver42.html
- 1.8 02/10/08 01:16:46 stenn@whimsy.udel.edu +26 -29
- Cleanup from Dave Mills.
-
- html/driver40.html
- 1.6 02/10/08 01:16:46 stenn@whimsy.udel.edu +3 -7
- Cleanup from Dave Mills.
-
- html/driver4.html
- 1.8 02/10/08 01:16:45 stenn@whimsy.udel.edu +62 -124
- Cleanup from Dave Mills.
-
- html/driver39.html
- 1.8 02/10/08 01:16:45 stenn@whimsy.udel.edu +113 -160
- Cleanup from Dave Mills.
-
- html/driver38.html
- 1.8 02/10/08 01:16:45 stenn@whimsy.udel.edu +135 -189
- Cleanup from Dave Mills.
-
- html/driver37.html
- 1.7 02/10/08 01:16:45 stenn@whimsy.udel.edu +47 -73
- Cleanup from Dave Mills.
-
- html/driver36.html
- 1.13 02/10/08 01:16:45 stenn@whimsy.udel.edu +7 -5
- Cleanup from Dave Mills.
-
- html/driver35.html
- 1.10 02/10/08 01:16:45 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/driver34.html
- 1.7 02/10/08 01:16:45 stenn@whimsy.udel.edu +44 -53
- Cleanup from Dave Mills.
-
- html/driver33.html
- 1.8 02/10/08 01:16:45 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/driver32.html
- 1.8 02/10/08 01:16:45 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/driver30.html
- 1.13 02/10/08 01:16:44 stenn@whimsy.udel.edu +38 -39
- Cleanup from Dave Mills.
-
- html/driver3.html
- 1.7 02/10/08 01:16:44 stenn@whimsy.udel.edu +3 -1
- Cleanup from Dave Mills.
-
- html/driver29.html
- 1.7 02/10/08 01:16:44 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/driver28.html
- 1.7 02/10/08 01:16:44 stenn@whimsy.udel.edu +3 -1
- Cleanup from Dave Mills.
-
- html/driver27.html
- 1.7 02/10/08 01:16:44 stenn@whimsy.udel.edu +3 -1
- Cleanup from Dave Mills.
-
- html/driver26.html
- 1.6 02/10/08 01:16:44 stenn@whimsy.udel.edu +2 -0
- Cleanup from Dave Mills.
-
- html/driver24.html
- 1.6 02/10/08 01:16:44 stenn@whimsy.udel.edu +2 -0
- Cleanup from Dave Mills.
-
- html/driver23.html
- 1.8 02/10/08 01:16:44 stenn@whimsy.udel.edu +3 -1
- Cleanup from Dave Mills.
-
- html/driver22.html
- 1.11 02/10/08 01:16:43 stenn@whimsy.udel.edu +4 -4
- Cleanup from Dave Mills.
-
- html/driver20.html
- 1.9 02/10/08 01:16:43 stenn@whimsy.udel.edu +2 -3
- Cleanup from Dave Mills.
-
- html/driver2.html
- 1.8 02/10/08 01:16:43 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/driver19.html
- 1.7 02/10/08 01:16:43 stenn@whimsy.udel.edu +3 -1
- Cleanup from Dave Mills.
-
- html/driver18.html
- 1.8 02/10/08 01:16:43 stenn@whimsy.udel.edu +3 -1
- Cleanup from Dave Mills.
-
- html/driver16.html
- 1.7 02/10/08 01:16:43 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/driver12.html
- 1.8 02/10/08 01:16:43 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/driver11.html
- 1.8 02/10/08 01:16:43 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave Mills.
-
- html/driver10.html
- 1.8 02/10/08 01:16:43 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/driver1.html
- 1.9 02/10/08 01:16:43 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave Mills.
-
- html/debug.html
- 1.14 02/10/08 01:16:42 stenn@whimsy.udel.edu +14 -14
- Cleanup from Dave Mills.
-
- html/copyright.html
- 1.24 02/10/08 01:16:42 stenn@whimsy.udel.edu +51 -51
- Cleanup from Dave Mills.
-
- html/confopt.html
- 1.23 02/10/08 01:16:42 stenn@whimsy.udel.edu +30 -22
- Cleanup from Dave Mills.
-
- html/config.html
- 1.12 02/10/08 01:16:42 stenn@whimsy.udel.edu +24 -9
- Cleanup from Dave Mills.
-
- html/clockopt.html
- 1.13 02/10/08 01:16:42 stenn@whimsy.udel.edu +21 -14
- Cleanup from Dave Mills.
-
- html/build.html
- 1.14 02/10/08 01:16:42 stenn@whimsy.udel.edu +35 -23
- Cleanup from Dave Mills.
-
- html/authopt.html
- 1.22 02/10/08 01:16:41 stenn@whimsy.udel.edu +40 -25
- Cleanup from Dave Mills.
-
- html/audio.html
- 1.12 02/10/08 01:16:41 stenn@whimsy.udel.edu +13 -10
- Cleanup from Dave Mills.
-
- html/assoc.html
- 1.16 02/10/08 01:16:41 stenn@whimsy.udel.edu +26 -12
- Cleanup from Dave Mills.
-
- html/accopt.html
- 1.14 02/10/08 01:16:41 stenn@whimsy.udel.edu +18 -8
- Cleanup from Dave Mills.
-
- BitKeeper/deleted/.del-radio2.jpg~b1ba4335
- 1.2 02/10/08 01:11:14 stenn@whimsy.udel.edu +0 -0
- Delete: html/pic/radio2.jpg
-
- BitKeeper/deleted/.del-home.gif~33271372
- 1.2 02/10/08 01:11:13 stenn@whimsy.udel.edu +0 -0
- Delete: html/pic/home.gif
-
- BitKeeper/deleted/.del-flatheads.gif~33271372
- 1.2 02/10/08 01:11:13 stenn@whimsy.udel.edu +0 -0
- Delete: html/pic/flatheads.gif
-
- BitKeeper/deleted/.del-alice15.gif~33271372
- 1.2 02/10/08 01:11:13 stenn@whimsy.udel.edu +0 -0
- Delete: html/pic/alice15.gif
-
- BitKeeper/deleted/.del-alice12.gif~33271372
- 1.2 02/10/08 01:11:13 stenn@whimsy.udel.edu +0 -0
- Delete: html/pic/alice12.gif
-
-ChangeSet
- 1.926 02/10/08 00:58:20 stenn@whimsy.udel.edu +87 -0
- Documentation rename, from Dave Mills.
-
- html/hints/vxworks.html
- 1.4 02/10/08 00:54:53 stenn@whimsy.udel.edu +0 -0
- Rename: html/hints/vxworks.htm -> html/hints/vxworks.html
-
- BitKeeper/deleted/.del-vxworks.html~3e480692
- 1.4 02/10/08 00:54:44 stenn@whimsy.udel.edu +0 -0
- Delete: html/hints/vxworks.html
-
- html/hints/winnt.html
- 1.10 02/10/08 00:53:57 stenn@whimsy.udel.edu +0 -0
- Rename: html/hints/winnt.htm -> html/hints/winnt.html
-
- html/hints/sco.html
- 1.4 02/10/08 00:53:57 stenn@whimsy.udel.edu +0 -0
- Rename: html/hints/sco.htm -> html/hints/sco.html
-
- html/tickadj.html
- 1.11 02/10/08 00:53:39 stenn@whimsy.udel.edu +0 -0
- Rename: html/tickadj.htm -> html/tickadj.html
-
- html/release.html
- 1.22 02/10/08 00:53:39 stenn@whimsy.udel.edu +0 -0
- Rename: html/release.htm -> html/release.html
-
- html/refclock.html
- 1.23 02/10/08 00:53:39 stenn@whimsy.udel.edu +0 -0
- Rename: html/refclock.htm -> html/refclock.html
-
- html/rdebug.html
- 1.9 02/10/08 00:53:39 stenn@whimsy.udel.edu +0 -0
- Rename: html/rdebug.htm -> html/rdebug.html
-
- html/quick.html
- 1.10 02/10/08 00:53:38 stenn@whimsy.udel.edu +0 -0
- Rename: html/quick.htm -> html/quick.html
-
- html/qth.html
- 1.6 02/10/08 00:53:38 stenn@whimsy.udel.edu +0 -0
- Rename: html/qth.htm -> html/qth.html
-
- html/prefer.html
- 1.9 02/10/08 00:53:38 stenn@whimsy.udel.edu +0 -0
- Rename: html/prefer.htm -> html/prefer.html
-
- html/pps.html
- 1.13 02/10/08 00:53:38 stenn@whimsy.udel.edu +0 -0
- Rename: html/pps.htm -> html/pps.html
-
- html/porting.html
- 1.8 02/10/08 00:53:37 stenn@whimsy.udel.edu +0 -0
- Rename: html/porting.htm -> html/porting.html
-
- html/patches.html
- 1.10 02/10/08 00:53:37 stenn@whimsy.udel.edu +0 -0
- Rename: html/patches.htm -> html/patches.html
-
- html/parsenew.html
- 1.6 02/10/08 00:53:37 stenn@whimsy.udel.edu +0 -0
- Rename: html/parsenew.htm -> html/parsenew.html
-
- html/parsedata.html
- 1.9 02/10/08 00:53:37 stenn@whimsy.udel.edu +0 -0
- Rename: html/parsedata.htm -> html/parsedata.html
-
- html/oncore-shmem.html
- 1.8 02/10/08 00:53:37 stenn@whimsy.udel.edu +0 -0
- Rename: html/oncore-shmem.htm -> html/oncore-shmem.html
-
- html/ntptrace.html
- 1.9 02/10/08 00:53:36 stenn@whimsy.udel.edu +0 -0
- Rename: html/ntptrace.htm -> html/ntptrace.html
-
- html/ntptime.html
- 1.11 02/10/08 00:53:36 stenn@whimsy.udel.edu +0 -0
- Rename: html/ntptime.htm -> html/ntptime.html
-
- html/ntpq.html
- 1.15 02/10/08 00:53:36 stenn@whimsy.udel.edu +0 -0
- Rename: html/ntpq.htm -> html/ntpq.html
-
- html/ntpdc.html
- 1.12 02/10/08 00:53:36 stenn@whimsy.udel.edu +0 -0
- Rename: html/ntpdc.htm -> html/ntpdc.html
-
- html/ntpdate.html
- 1.11 02/10/08 00:53:35 stenn@whimsy.udel.edu +0 -0
- Rename: html/ntpdate.htm -> html/ntpdate.html
-
- html/ntpd.html
- 1.21 02/10/08 00:53:35 stenn@whimsy.udel.edu +0 -0
- Rename: html/ntpd.htm -> html/ntpd.html
-
- html/notes.html
- 1.12 02/10/08 00:53:35 stenn@whimsy.udel.edu +0 -0
- Rename: html/notes.htm -> html/notes.html
-
- html/mx4200data.html
- 1.9 02/10/08 00:53:35 stenn@whimsy.udel.edu +0 -0
- Rename: html/mx4200data.htm -> html/mx4200data.html
-
- html/monopt.html
- 1.13 02/10/08 00:53:34 stenn@whimsy.udel.edu +0 -0
- Rename: html/monopt.htm -> html/monopt.html
-
- html/miscopt.html
- 1.20 02/10/08 00:53:34 stenn@whimsy.udel.edu +0 -0
- Rename: html/miscopt.htm -> html/miscopt.html
-
- html/measure.html
- 1.8 02/10/08 00:53:34 stenn@whimsy.udel.edu +0 -0
- Rename: html/measure.htm -> html/measure.html
-
- html/manyopt.html
- 1.5 02/10/08 00:53:34 stenn@whimsy.udel.edu +0 -0
- Rename: html/manyopt.htm -> html/manyopt.html
-
- html/leap.html
- 1.4 02/10/08 00:53:33 stenn@whimsy.udel.edu +0 -0
- Rename: html/leap.htm -> html/leap.html
-
- html/ldisc.html
- 1.7 02/10/08 00:53:33 stenn@whimsy.udel.edu +0 -0
- Rename: html/ldisc.htm -> html/ldisc.html
-
- html/kernpps.html
- 1.8 02/10/08 00:53:33 stenn@whimsy.udel.edu +0 -0
- Rename: html/kernpps.htm -> html/kernpps.html
-
- html/kern.html
- 1.10 02/10/08 00:53:33 stenn@whimsy.udel.edu +0 -0
- Rename: html/kern.htm -> html/kern.html
-
- html/index.html
- 1.18 02/10/08 00:53:33 stenn@whimsy.udel.edu +0 -0
- Rename: html/index.htm -> html/index.html
-
- html/howto.html
- 1.11 02/10/08 00:53:32 stenn@whimsy.udel.edu +0 -0
- Rename: html/howto.htm -> html/howto.html
-
- html/hints.html
- 1.9 02/10/08 00:53:32 stenn@whimsy.udel.edu +0 -0
- Rename: html/hints.htm -> html/hints.html
-
- html/genkeys.html
- 1.13 02/10/08 00:53:32 stenn@whimsy.udel.edu +0 -0
- Rename: html/genkeys.htm -> html/genkeys.html
-
- html/gadget.html
- 1.8 02/10/08 00:53:32 stenn@whimsy.udel.edu +0 -0
- Rename: html/gadget.htm -> html/gadget.html
-
- html/extern.html
- 1.9 02/10/08 00:53:31 stenn@whimsy.udel.edu +0 -0
- Rename: html/extern.htm -> html/extern.html
-
- html/exec.html
- 1.10 02/10/08 00:53:31 stenn@whimsy.udel.edu +0 -0
- Rename: html/exec.htm -> html/exec.html
-
- html/driver9.html
- 1.8 02/10/08 00:53:31 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver9.htm -> html/driver9.html
-
- html/driver8.html
- 1.7 02/10/08 00:53:31 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver8.htm -> html/driver8.html
-
- html/driver7.html
- 1.14 02/10/08 00:53:30 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver7.htm -> html/driver7.html
-
- html/driver6.html
- 1.10 02/10/08 00:53:30 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver6.htm -> html/driver6.html
-
- html/driver5.html
- 1.7 02/10/08 00:53:30 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver5.htm -> html/driver5.html
-
- html/driver44.html
- 1.5 02/10/08 00:53:30 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver44.htm -> html/driver44.html
-
- html/driver43.html
- 1.4 02/10/08 00:53:29 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver43.htm -> html/driver43.html
-
- html/driver42.html
- 1.7 02/10/08 00:53:29 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver42.htm -> html/driver42.html
-
- html/driver40.html
- 1.5 02/10/08 00:53:29 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver40.htm -> html/driver40.html
-
- html/driver4.html
- 1.7 02/10/08 00:53:29 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver4.htm -> html/driver4.html
-
- html/driver39.html
- 1.7 02/10/08 00:53:29 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver39.htm -> html/driver39.html
-
- html/driver38.html
- 1.7 02/10/08 00:53:28 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver38.htm -> html/driver38.html
-
- html/driver37.html
- 1.6 02/10/08 00:53:28 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver37.htm -> html/driver37.html
-
- html/driver36.html
- 1.12 02/10/08 00:53:28 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver36.htm -> html/driver36.html
-
- html/driver35.html
- 1.9 02/10/08 00:53:28 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver35.htm -> html/driver35.html
-
- html/driver34.html
- 1.6 02/10/08 00:53:28 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver34.htm -> html/driver34.html
-
- html/driver33.html
- 1.7 02/10/08 00:53:27 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver33.htm -> html/driver33.html
-
- html/driver32.html
- 1.7 02/10/08 00:53:27 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver32.htm -> html/driver32.html
-
- html/driver30.html
- 1.12 02/10/08 00:53:27 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver30.htm -> html/driver30.html
-
- html/driver3.html
- 1.6 02/10/08 00:53:27 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver3.htm -> html/driver3.html
-
- html/driver29.html
- 1.6 02/10/08 00:53:27 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver29.htm -> html/driver29.html
-
- html/driver28.html
- 1.6 02/10/08 00:53:26 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver28.htm -> html/driver28.html
-
- html/driver27.html
- 1.6 02/10/08 00:53:26 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver27.htm -> html/driver27.html
-
- html/driver26.html
- 1.5 02/10/08 00:53:26 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver26.htm -> html/driver26.html
-
- html/driver24.html
- 1.5 02/10/08 00:53:26 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver24.htm -> html/driver24.html
-
- html/driver23.html
- 1.7 02/10/08 00:53:26 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver23.htm -> html/driver23.html
-
- html/driver22.html
- 1.10 02/10/08 00:53:25 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver22.htm -> html/driver22.html
-
- html/driver20.html
- 1.8 02/10/08 00:53:25 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver20.htm -> html/driver20.html
-
- html/driver2.html
- 1.7 02/10/08 00:53:25 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver2.htm -> html/driver2.html
-
- html/driver19.html
- 1.6 02/10/08 00:53:25 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver19.htm -> html/driver19.html
-
- html/driver18.html
- 1.7 02/10/08 00:53:25 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver18.htm -> html/driver18.html
-
- html/driver16.html
- 1.6 02/10/08 00:53:24 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver16.htm -> html/driver16.html
-
- html/driver12.html
- 1.7 02/10/08 00:53:24 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver12.htm -> html/driver12.html
-
- html/driver11.html
- 1.7 02/10/08 00:53:24 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver11.htm -> html/driver11.html
-
- html/driver10.html
- 1.7 02/10/08 00:53:24 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver10.htm -> html/driver10.html
-
- html/driver1.html
- 1.8 02/10/08 00:53:24 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver1.htm -> html/driver1.html
-
- html/debug.html
- 1.13 02/10/08 00:53:23 stenn@whimsy.udel.edu +0 -0
- Rename: html/debug.htm -> html/debug.html
-
- html/copyright.html
- 1.23 02/10/08 00:53:23 stenn@whimsy.udel.edu +0 -0
- Rename: html/copyright.htm -> html/copyright.html
-
- html/confopt.html
- 1.22 02/10/08 00:53:23 stenn@whimsy.udel.edu +0 -0
- Rename: html/confopt.htm -> html/confopt.html
-
- html/config.html
- 1.11 02/10/08 00:53:23 stenn@whimsy.udel.edu +0 -0
- Rename: html/config.htm -> html/config.html
-
- html/clockopt.html
- 1.12 02/10/08 00:53:23 stenn@whimsy.udel.edu +0 -0
- Rename: html/clockopt.htm -> html/clockopt.html
-
- html/build.html
- 1.13 02/10/08 00:53:22 stenn@whimsy.udel.edu +0 -0
- Rename: html/build.htm -> html/build.html
-
- html/biblio.html
- 1.7 02/10/08 00:53:22 stenn@whimsy.udel.edu +0 -0
- Rename: html/biblio.htm -> html/biblio.html
-
- html/authopt.html
- 1.21 02/10/08 00:53:22 stenn@whimsy.udel.edu +0 -0
- Rename: html/authopt.htm -> html/authopt.html
-
- html/audio.html
- 1.11 02/10/08 00:53:22 stenn@whimsy.udel.edu +0 -0
- Rename: html/audio.htm -> html/audio.html
-
- html/assoc.html
- 1.15 02/10/08 00:53:21 stenn@whimsy.udel.edu +0 -0
- Rename: html/assoc.htm -> html/assoc.html
-
- html/accopt.html
- 1.13 02/10/08 00:53:21 stenn@whimsy.udel.edu +0 -0
- Rename: html/accopt.htm -> html/accopt.html
-
-ChangeSet
- 1.925 02/10/08 00:46:43 stenn@whimsy.udel.edu +2 -0
- More stuff from Dave Mills.
-
- util/ntp-keygen.c
- 1.16 02/10/08 00:46:39 stenn@whimsy.udel.edu +120 -71
- More new stuff from Dave Mills.
-
- ntpd/ntp_peer.c
- 1.50 02/10/08 00:46:39 stenn@whimsy.udel.edu +1 -1
- Account for removed associations a bit better.
- From Dave Mills.
-
-ChangeSet
- 1.924 02/10/05 10:33:45 jhay@angel.cids.org.za +1 -0
- Merge angel.cids.org.za:/home/ntp/ntp-dev-clean
- into angel.cids.org.za:/home/ntp/ntp-dev
-
- ntpd/ntp_io.c
- 1.44 02/10/05 10:33:44 jhay@angel.cids.org.za +0 -0
- Auto merged
-
-ChangeSet
- 1.922.1.2 02/10/05 03:40:05 stenn@whimsy.udel.edu +17 -0
- SNTP import from Nick Maclaren.
-
- ntp-keygen stuff from Dave Mills.
-
- sntp/unix.c
- 1.1 02/10/05 03:40:01 stenn@whimsy.udel.edu +85 -0
-
- sntp/timing.c
- 1.1 02/10/05 03:40:01 stenn@whimsy.udel.edu +110 -0
-
- sntp/unix.c
- 1.0 02/10/05 03:40:01 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/unix.c
-
- sntp/timing.c
- 1.0 02/10/05 03:40:01 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/timing.c
-
- sntp/socket.c
- 1.1 02/10/05 03:40:00 stenn@whimsy.udel.edu +254 -0
-
- sntp/sntp.1
- 1.1 02/10/05 03:40:00 stenn@whimsy.udel.edu +325 -0
-
- sntp/main.c
- 1.1 02/10/05 03:40:00 stenn@whimsy.udel.edu +1783 -0
-
- sntp/kludges.h
- 1.1 02/10/05 03:40:00 stenn@whimsy.udel.edu +62 -0
-
- sntp/socket.c
- 1.0 02/10/05 03:40:00 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/socket.c
-
- sntp/sntp.1
- 1.0 02/10/05 03:40:00 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/sntp.1
-
- sntp/main.c
- 1.0 02/10/05 03:40:00 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/main.c
-
- sntp/kludges.h
- 1.0 02/10/05 03:40:00 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/kludges.h
-
- sntp/internet.h
- 1.1 02/10/05 03:39:59 stenn@whimsy.udel.edu +39 -0
-
- sntp/internet.c
- 1.1 02/10/05 03:39:59 stenn@whimsy.udel.edu +124 -0
-
- sntp/header.h
- 1.1 02/10/05 03:39:59 stenn@whimsy.udel.edu +86 -0
-
- sntp/configure.ac
- 1.1 02/10/05 03:39:59 stenn@whimsy.udel.edu +28 -0
-
- sntp/RFC2030.TXT
- 1.1 02/10/05 03:39:59 stenn@whimsy.udel.edu +1011 -0
-
- sntp/README
- 1.1 02/10/05 03:39:59 stenn@whimsy.udel.edu +535 -0
-
- sntp/internet.h
- 1.0 02/10/05 03:39:59 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/internet.h
-
- sntp/internet.c
- 1.0 02/10/05 03:39:59 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/internet.c
-
- sntp/header.h
- 1.0 02/10/05 03:39:59 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/header.h
-
- sntp/configure.ac
- 1.0 02/10/05 03:39:59 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/configure.ac
-
- sntp/RFC2030.TXT
- 1.0 02/10/05 03:39:59 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/RFC2030.TXT
-
- sntp/README
- 1.0 02/10/05 03:39:59 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/README
-
- sntp/Mf
- 1.1 02/10/05 03:39:58 stenn@whimsy.udel.edu +141 -0
-
- sntp/Makefile.am
- 1.1 02/10/05 03:39:58 stenn@whimsy.udel.edu +40 -0
-
- sntp/Copyright
- 1.1 02/10/05 03:39:58 stenn@whimsy.udel.edu +80 -0
-
- util/ntp-keygen.c
- 1.15 02/10/05 03:39:58 stenn@whimsy.udel.edu +459 -24
- New stuff from Dave Mills.
-
- sntp/Mf
- 1.0 02/10/05 03:39:58 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/Mf
-
- sntp/Makefile.am
- 1.0 02/10/05 03:39:58 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/Makefile.am
-
- sntp/Copyright
- 1.0 02/10/05 03:39:58 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/sntp/Copyright
-
- ntpd/ntp_io.c
- 1.42.1.1 02/10/05 03:39:58 stenn@whimsy.udel.edu +44 -21
- Stupid comment cleanup. This code really needs to be rewritten.
-
-ChangeSet
- 1.922.1.1 02/10/03 22:16:12 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.275 02/10/03 22:15:36 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
-ChangeSet
- 1.683.4.117 02/10/03 22:06:53 stenn@whimsy.udel.edu +1 -0
- Don't build RIPENCC refclock by default.
-
- configure.in
- 1.219.3.31 02/10/03 22:06:29 stenn@whimsy.udel.edu +1 -1
- Don't build RIPENCC refclock by default.
-
-ChangeSet
- 1.923 02/10/03 16:13:02 jhay@angel.cids.org.za +1 -0
- If the socket() call inside open_socket() fails, don't exit if errno is either
- of EPROTONOSUPPORT, EAFNOSUPPORT or EPFNOSUPPORT.
-
- ntpd/ntp_io.c
- 1.43 02/10/03 16:13:01 jhay@angel.cids.org.za +3 -0
- If the socket() call inside open_socket() fails, don't exit if errno is either
- of EPROTONOSUPPORT, EAFNOSUPPORT or EPFNOSUPPORT.
-
-ChangeSet
- 1.922 02/10/03 03:51:43 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- include/l_stdlib.h
- 1.11 02/10/03 03:51:41 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.116 02/10/03 03:40:37 stenn@whimsy.udel.edu +3 -0
- Quiet GCC warnings. From Peter Breitenlohner <peb@mppmu.mpg.de>
-
- parseutil/dcfd.c
- 1.9 02/10/03 03:40:33 stenn@whimsy.udel.edu +5 -3
- Prevent warnings.
-
- include/ntp_syscall.h
- 1.6 02/10/03 03:40:33 stenn@whimsy.udel.edu +2 -0
- Prevent warnings.
-
- include/l_stdlib.h
- 1.8.1.1 02/10/03 03:40:33 stenn@whimsy.udel.edu +1 -1
- Prevent warnings.
-
-ChangeSet
- 1.921 02/09/22 08:35:14 jhay@angel.cids.org.za +4 -0
- Remove unused USE_STREAMS_DEVICE_FOR_IFCONFIG and SUN_3_3_STINKS and a piece
- of code in a #if 0.
-
- include/ntp_machine.h still have some docs about USE_STREAMS_DEVICE_FOR_IFCONFIG.
-
- ntpd/ntp_io.c
- 1.42 02/09/22 08:35:13 jhay@angel.cids.org.za +0 -62
- Remove unused USE_STREAMS_DEVICE_FOR_IFCONFIG and SUN_3_3_STINKS and a piece
- of code in a #if 0.
-
- include/ntp_if.h
- 1.4 02/09/22 08:35:13 jhay@angel.cids.org.za +0 -21
- Remove unused USE_STREAMS_DEVICE_FOR_IFCONFIG.
-
- configure.in
- 1.274 02/09/22 08:35:13 jhay@angel.cids.org.za +0 -4
- Remove unused USE_STREAMS_DEVICE_FOR_IFCONFIG.
-
- TODO
- 1.7 02/09/22 08:35:13 jhay@angel.cids.org.za +0 -4
- Remove SUN_3_3_STINKS.
-
-ChangeSet
- 1.920 02/09/22 07:58:55 jhay@angel.cids.org.za +1 -0
- Add support for SIOCGLIFCONF which is used on Solaris 8+. On Solaris 8+ the
- SIOCGIFCONF ioctl does not return IPv6 info.
-
- ntpd/ntp_io.c
- 1.41 02/09/22 07:52:22 jhay@angel.cids.org.za +123 -81
- Add support for SIOCGLIFCONF which is used on Solaris 8+. On Solaris 8+ the
- SIOCGIFCONF ioctl does not return IPv6 info.
-
-ChangeSet
- 1.919 02/09/21 13:22:00 jhay@angel.cids.org.za +1 -0
- Put pps_enable = 1 back, so that ntpd knows that there is a hardpps() capable
- driver. Otherwise it will never enable the kernel hardpps() stuff.
-
- ntpd/refclock_oncore.c
- 1.42 02/09/21 13:21:59 jhay@angel.cids.org.za +1 -0
- Put pps_enable = 1 back, so that ntpd knows that there is a hardpps() capable
- driver. Otherwise it will never enable the kernel hardpps() stuff.
-
-ChangeSet
- 1.918 02/09/18 02:45:42 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpdate/ntpdate.c
- 1.37 02/09/18 02:45:39 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.115 02/09/18 02:43:10 stenn@whimsy.udel.edu +1 -0
- Improved patch from Matthias.
-
- ntpdate/ntpdate.c
- 1.23.2.2 02/09/18 02:43:07 stenn@whimsy.udel.edu +1 -2
- Improved patch from Matthias.
-
-ChangeSet
- 1.917 02/09/18 02:33:17 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpdate/ntpdate.c
- 1.36 02/09/18 02:33:14 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.114 02/09/18 02:30:06 stenn@whimsy.udel.edu +1 -0
- absoffset can be "too negative". Reported by Brian Utterback,
- with fix from Mattias Lang.
-
- ntpdate/ntpdate.c
- 1.23.2.1 02/09/18 02:30:03 stenn@whimsy.udel.edu +2 -1
- absoffset can be "too negative". Reported by Brian Utterback,
- with fix from Mattias Lang.
-
-ChangeSet
- 1.916 02/09/18 02:08:36 stenn@whimsy.udel.edu +85 -0
- More doc cleanup from Dave Mills.
-
- html/tickadj.htm
- 1.10 02/09/18 02:08:31 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/release.htm
- 1.21 02/09/18 02:08:31 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/refclock.htm
- 1.22 02/09/18 02:08:30 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/rdebug.htm
- 1.8 02/09/18 02:08:30 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/quick.htm
- 1.9 02/09/18 02:08:30 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/prefer.htm
- 1.8 02/09/18 02:08:30 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/pps.htm
- 1.12 02/09/18 02:08:30 stenn@whimsy.udel.edu +2 -3
- More doc cleanup from Dave Mills.
-
- html/porting.htm
- 1.7 02/09/18 02:08:30 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/patches.htm
- 1.9 02/09/18 02:08:30 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/parsenew.htm
- 1.5 02/09/18 02:08:30 stenn@whimsy.udel.edu +46 -38
- More doc cleanup from Dave Mills.
-
- html/parsedata.htm
- 1.8 02/09/18 02:08:30 stenn@whimsy.udel.edu +71 -72
- More doc cleanup from Dave Mills.
-
- html/oncore-shmem.htm
- 1.7 02/09/18 02:08:29 stenn@whimsy.udel.edu +1 -0
- More doc cleanup from Dave Mills.
-
- html/ntptrace.htm
- 1.8 02/09/18 02:08:29 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/ntptime.htm
- 1.10 02/09/18 02:08:29 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/ntpq.htm
- 1.14 02/09/18 02:08:29 stenn@whimsy.udel.edu +2 -4
- More doc cleanup from Dave Mills.
-
- html/ntpdc.htm
- 1.11 02/09/18 02:08:29 stenn@whimsy.udel.edu +2 -4
- More doc cleanup from Dave Mills.
-
- html/ntpdate.htm
- 1.10 02/09/18 02:08:29 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/ntpd.htm
- 1.20 02/09/18 02:08:28 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/notes.htm
- 1.11 02/09/18 02:08:28 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/mx4200data.htm
- 1.8 02/09/18 02:08:28 stenn@whimsy.udel.edu +2 -0
- More doc cleanup from Dave Mills.
-
- html/monopt.htm
- 1.12 02/09/18 02:08:28 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/miscopt.htm
- 1.19 02/09/18 02:08:28 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/measure.htm
- 1.7 02/09/18 02:08:28 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/manyopt.htm
- 1.4 02/09/18 02:08:28 stenn@whimsy.udel.edu +2 -3
- More doc cleanup from Dave Mills.
-
- html/ldisc.htm
- 1.6 02/09/18 02:08:27 stenn@whimsy.udel.edu +37 -41
- More doc cleanup from Dave Mills.
-
- html/kernpps.htm
- 1.7 02/09/18 02:08:27 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/kern.htm
- 1.9 02/09/18 02:08:27 stenn@whimsy.udel.edu +2 -5
- More doc cleanup from Dave Mills.
-
- html/index.htm
- 1.17 02/09/18 02:08:27 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/howto.htm
- 1.10 02/09/18 02:08:27 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/hints/winnt.htm
- 1.9 02/09/18 02:08:27 stenn@whimsy.udel.edu +19 -18
- More doc cleanup from Dave Mills.
-
- html/hints/vxworks.htm
- 1.3 02/09/18 02:08:27 stenn@whimsy.udel.edu +10 -9
- More doc cleanup from Dave Mills.
-
- html/hints/vxworks.html
- 1.3 02/09/18 02:08:27 stenn@whimsy.udel.edu +2 -1
- More doc cleanup from Dave Mills.
-
- html/hints/solaris.html
- 1.5 02/09/18 02:08:26 stenn@whimsy.udel.edu +2 -1
- More doc cleanup from Dave Mills.
-
- html/hints/solaris-dosynctodr.html
- 1.3 02/09/18 02:08:26 stenn@whimsy.udel.edu +2 -1
- More doc cleanup from Dave Mills.
-
- html/hints/sco.htm
- 1.3 02/09/18 02:08:26 stenn@whimsy.udel.edu +2 -1
- More doc cleanup from Dave Mills.
-
- html/hints.htm
- 1.8 02/09/18 02:08:26 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/genkeys.htm
- 1.12 02/09/18 02:08:26 stenn@whimsy.udel.edu +4 -4
- More doc cleanup from Dave Mills.
-
- html/gadget.htm
- 1.7 02/09/18 02:08:26 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/extern.htm
- 1.8 02/09/18 02:08:25 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/driver9.htm
- 1.7 02/09/18 02:08:25 stenn@whimsy.udel.edu +18 -17
- More doc cleanup from Dave Mills.
-
- html/driver8.htm
- 1.6 02/09/18 02:08:25 stenn@whimsy.udel.edu +132 -351
- More doc cleanup from Dave Mills.
-
- html/driver7.htm
- 1.13 02/09/18 02:08:25 stenn@whimsy.udel.edu +4 -4
- More doc cleanup from Dave Mills.
-
- html/driver6.htm
- 1.9 02/09/18 02:08:25 stenn@whimsy.udel.edu +3 -3
- More doc cleanup from Dave Mills.
-
- html/driver5.htm
- 1.6 02/09/18 02:08:25 stenn@whimsy.udel.edu +4 -3
- More doc cleanup from Dave Mills.
-
- html/driver44.htm
- 1.4 02/09/18 02:08:25 stenn@whimsy.udel.edu +21 -20
- More doc cleanup from Dave Mills.
-
- html/driver43.htm
- 1.3 02/09/18 02:08:25 stenn@whimsy.udel.edu +36 -84
- More doc cleanup from Dave Mills.
-
- html/driver42.htm
- 1.6 02/09/18 02:08:24 stenn@whimsy.udel.edu +2 -1
- More doc cleanup from Dave Mills.
-
- html/driver40.htm
- 1.4 02/09/18 02:08:24 stenn@whimsy.udel.edu +99 -172
- More doc cleanup from Dave Mills.
-
- html/driver4.htm
- 1.6 02/09/18 02:08:24 stenn@whimsy.udel.edu +18 -17
- More doc cleanup from Dave Mills.
-
- html/driver39.htm
- 1.6 02/09/18 02:08:24 stenn@whimsy.udel.edu +6 -5
- More doc cleanup from Dave Mills.
-
- html/driver38.htm
- 1.6 02/09/18 02:08:24 stenn@whimsy.udel.edu +8 -7
- More doc cleanup from Dave Mills.
-
- html/driver37.htm
- 1.5 02/09/18 02:08:24 stenn@whimsy.udel.edu +18 -17
- More doc cleanup from Dave Mills.
-
- html/driver36.htm
- 1.11 02/09/18 02:08:24 stenn@whimsy.udel.edu +246 -882
- More doc cleanup from Dave Mills.
-
- html/driver35.htm
- 1.8 02/09/18 02:08:24 stenn@whimsy.udel.edu +43 -76
- More doc cleanup from Dave Mills.
-
- html/driver34.htm
- 1.5 02/09/18 02:08:24 stenn@whimsy.udel.edu +2 -1
- More doc cleanup from Dave Mills.
-
- html/driver33.htm
- 1.6 02/09/18 02:08:24 stenn@whimsy.udel.edu +26 -29
- More doc cleanup from Dave Mills.
-
- html/driver32.htm
- 1.6 02/09/18 02:08:24 stenn@whimsy.udel.edu +26 -30
- More doc cleanup from Dave Mills.
-
- html/driver30.htm
- 1.11 02/09/18 02:08:23 stenn@whimsy.udel.edu +81 -186
- More doc cleanup from Dave Mills.
-
- html/driver3.htm
- 1.5 02/09/18 02:08:23 stenn@whimsy.udel.edu +54 -111
- More doc cleanup from Dave Mills.
-
- html/driver29.htm
- 1.5 02/09/18 02:08:23 stenn@whimsy.udel.edu +788 -1250
- More doc cleanup from Dave Mills.
-
- html/driver28.htm
- 1.5 02/09/18 02:08:23 stenn@whimsy.udel.edu +53 -112
- More doc cleanup from Dave Mills.
-
- html/driver27.htm
- 1.5 02/09/18 02:08:23 stenn@whimsy.udel.edu +193 -594
- More doc cleanup from Dave Mills.
-
- html/driver26.htm
- 1.4 02/09/18 02:08:23 stenn@whimsy.udel.edu +46 -107
- More doc cleanup from Dave Mills.
-
- html/driver24.htm
- 1.4 02/09/18 02:08:23 stenn@whimsy.udel.edu +42 -83
- More doc cleanup from Dave Mills.
-
- html/driver23.htm
- 1.6 02/09/18 02:08:23 stenn@whimsy.udel.edu +100 -176
- More doc cleanup from Dave Mills.
-
- html/driver22.htm
- 1.9 02/09/18 02:08:23 stenn@whimsy.udel.edu +53 -155
- More doc cleanup from Dave Mills.
-
- html/driver20.htm
- 1.7 02/09/18 02:08:22 stenn@whimsy.udel.edu +72 -136
- More doc cleanup from Dave Mills.
-
- html/driver2.htm
- 1.6 02/09/18 02:08:22 stenn@whimsy.udel.edu +10 -10
- More doc cleanup from Dave Mills.
-
- html/driver19.htm
- 1.5 02/09/18 02:08:22 stenn@whimsy.udel.edu +52 -119
- More doc cleanup from Dave Mills.
-
- html/driver18.htm
- 1.6 02/09/18 02:08:22 stenn@whimsy.udel.edu +11 -11
- More doc cleanup from Dave Mills.
-
- html/driver16.htm
- 1.5 02/09/18 02:08:22 stenn@whimsy.udel.edu +7 -7
- More doc cleanup from Dave Mills.
-
- html/driver12.htm
- 1.6 02/09/18 02:08:22 stenn@whimsy.udel.edu +8 -8
- More doc cleanup from Dave Mills.
-
- html/driver11.htm
- 1.6 02/09/18 02:08:22 stenn@whimsy.udel.edu +8 -8
- More doc cleanup from Dave Mills.
-
- html/driver10.htm
- 1.6 02/09/18 02:08:22 stenn@whimsy.udel.edu +8 -8
- More doc cleanup from Dave Mills.
-
- html/driver1.htm
- 1.7 02/09/18 02:08:22 stenn@whimsy.udel.edu +7 -9
- More doc cleanup from Dave Mills.
-
- html/debug.htm
- 1.12 02/09/18 02:08:21 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/copyright.htm
- 1.22 02/09/18 02:08:21 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/confopt.htm
- 1.21 02/09/18 02:08:21 stenn@whimsy.udel.edu +2 -3
- More doc cleanup from Dave Mills.
-
- html/config.htm
- 1.10 02/09/18 02:08:21 stenn@whimsy.udel.edu +3 -3
- More doc cleanup from Dave Mills.
-
- html/clockopt.htm
- 1.11 02/09/18 02:08:21 stenn@whimsy.udel.edu +2 -4
- More doc cleanup from Dave Mills.
-
- html/build.htm
- 1.12 02/09/18 02:08:21 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
- html/authopt.htm
- 1.20 02/09/18 02:08:21 stenn@whimsy.udel.edu +2 -3
- More doc cleanup from Dave Mills.
-
- html/audio.htm
- 1.10 02/09/18 02:08:20 stenn@whimsy.udel.edu +3 -3
- More doc cleanup from Dave Mills.
-
- html/assoc.htm
- 1.14 02/09/18 02:08:20 stenn@whimsy.udel.edu +3 -3
- More doc cleanup from Dave Mills.
-
- html/accopt.htm
- 1.12 02/09/18 02:08:20 stenn@whimsy.udel.edu +2 -2
- More doc cleanup from Dave Mills.
-
-ChangeSet
- 1.915 02/09/16 00:16:09 stenn@whimsy.udel.edu +21 -0
- Documentation cleanup form Dave Mills.
-
- html/oncore-shmem.htm
- 1.6 02/09/16 00:16:06 stenn@whimsy.udel.edu +79 -183
- Documentation cleanup form Dave Mills.
-
- html/tickadj.htm
- 1.9 02/09/16 00:16:05 stenn@whimsy.udel.edu +39 -95
- Documentation cleanup form Dave Mills.
-
- html/refclock.htm
- 1.21 02/09/16 00:16:05 stenn@whimsy.udel.edu +85 -253
- Documentation cleanup form Dave Mills.
-
- html/rdebug.htm
- 1.7 02/09/16 00:16:05 stenn@whimsy.udel.edu +23 -22
- Documentation cleanup form Dave Mills.
-
- html/quick.htm
- 1.8 02/09/16 00:16:05 stenn@whimsy.udel.edu +27 -97
- Documentation cleanup form Dave Mills.
-
- html/prefer.htm
- 1.7 02/09/16 00:16:05 stenn@whimsy.udel.edu +67 -90
- Documentation cleanup form Dave Mills.
-
- html/porting.htm
- 1.6 02/09/16 00:16:05 stenn@whimsy.udel.edu +35 -81
- Documentation cleanup form Dave Mills.
-
- html/patches.htm
- 1.8 02/09/16 00:16:05 stenn@whimsy.udel.edu +32 -39
- Documentation cleanup form Dave Mills.
-
- html/parsenew.htm
- 1.4 02/09/16 00:16:05 stenn@whimsy.udel.edu +51 -101
- Documentation cleanup form Dave Mills.
-
- html/parsedata.htm
- 1.7 02/09/16 00:16:05 stenn@whimsy.udel.edu +99 -169
- Documentation cleanup form Dave Mills.
-
- html/ntptrace.htm
- 1.7 02/09/16 00:16:05 stenn@whimsy.udel.edu +40 -84
- Documentation cleanup form Dave Mills.
-
- html/ntptime.htm
- 1.9 02/09/16 00:16:04 stenn@whimsy.udel.edu +43 -77
- Documentation cleanup form Dave Mills.
-
- html/ntpq.htm
- 1.13 02/09/16 00:16:04 stenn@whimsy.udel.edu +259 -763
- Documentation cleanup form Dave Mills.
-
- html/ntpdc.htm
- 1.10 02/09/16 00:16:04 stenn@whimsy.udel.edu +154 -524
- Documentation cleanup form Dave Mills.
-
- html/ntpdate.htm
- 1.9 02/09/16 00:16:04 stenn@whimsy.udel.edu +65 -198
- Documentation cleanup form Dave Mills.
-
- html/ntpd.htm
- 1.19 02/09/16 00:16:04 stenn@whimsy.udel.edu +115 -470
- Documentation cleanup form Dave Mills.
-
- html/notes.htm
- 1.10 02/09/16 00:16:04 stenn@whimsy.udel.edu +149 -1185
- Documentation cleanup form Dave Mills.
-
- html/mx4200data.htm
- 1.7 02/09/16 00:16:03 stenn@whimsy.udel.edu +1069 -441
- Documentation cleanup form Dave Mills.
-
- html/driver7.htm
- 1.12 02/09/16 00:16:03 stenn@whimsy.udel.edu +213 -634
- Documentation cleanup form Dave Mills.
-
- html/driver6.htm
- 1.8 02/09/16 00:16:03 stenn@whimsy.udel.edu +79 -274
- Documentation cleanup form Dave Mills.
-
- html/driver5.htm
- 1.5 02/09/16 00:16:03 stenn@whimsy.udel.edu +68 -156
- Documentation cleanup form Dave Mills.
-
- html/oncore-shmem.htm
- 1.5 02/09/15 21:16:08 stenn@whimsy.udel.edu +0 -0
- Rename: html/Oncore-SHMEM.htm -> html/oncore-shmem.htm
-
-ChangeSet
- 1.914 02/09/12 01:30:07 stenn@whimsy.udel.edu +6 -0
- HTML updates from Dave.
-
- html/monopt.htm
- 1.11 02/09/12 01:30:03 stenn@whimsy.udel.edu +104 -305
- HTML updates from Dave.
-
- html/miscopt.htm
- 1.18 02/09/12 01:30:03 stenn@whimsy.udel.edu +89 -298
- HTML updates from Dave.
-
- html/measure.htm
- 1.6 02/09/12 01:30:02 stenn@whimsy.udel.edu +17 -13
- HTML updates from Dave.
-
- html/manyopt.htm
- 1.3 02/09/12 01:30:02 stenn@whimsy.udel.edu +59 -291
- HTML updates from Dave.
-
- html/debug.htm
- 1.11 02/09/12 01:30:02 stenn@whimsy.udel.edu +7 -7
- HTML updates from Dave.
-
- html/assoc.htm
- 1.13 02/09/12 01:30:02 stenn@whimsy.udel.edu +10 -10
- HTML updates from Dave.
-
-ChangeSet
- 1.913 02/09/09 19:07:03 stenn@whimsy.udel.edu +42 -0
- Crypto changes and documentation cleanup from Dave Mills.
-
- util/ntp-keygen.c
- 1.14 02/09/09 19:06:57 stenn@whimsy.udel.edu +35 -17
- Crypto changes from Dave Mills.
-
- ntpd/ntp_crypto.c
- 1.71 02/09/09 19:06:57 stenn@whimsy.udel.edu +18 -9
- Crypto changes from Dave Mills.
-
- ntpd/ntp_config.c
- 1.77 02/09/09 19:06:56 stenn@whimsy.udel.edu +5 -0
- Crypto changes from Dave Mills.
-
- include/ntp_crypto.h
- 1.30 02/09/09 19:06:56 stenn@whimsy.udel.edu +2 -0
- Crypto changes from Dave Mills.
-
- include/ntp_config.h
- 1.21 02/09/09 19:06:56 stenn@whimsy.udel.edu +1 -0
- Crypto changes from Dave Mills.
-
- html/tickadj.htm
- 1.8 02/09/09 19:06:56 stenn@whimsy.udel.edu +1 -2
- Documentation cleanup from Dave Mills
-
- html/release.htm
- 1.20 02/09/09 19:06:56 stenn@whimsy.udel.edu +78 -361
- Documentation cleanup from Dave Mills
-
- html/refclock.htm
- 1.20 02/09/09 19:06:56 stenn@whimsy.udel.edu +4 -2
- Documentation cleanup from Dave Mills
-
- html/pps.htm
- 1.11 02/09/09 19:06:56 stenn@whimsy.udel.edu +26 -103
- Documentation cleanup from Dave Mills
-
- html/patches.htm
- 1.7 02/09/09 19:06:56 stenn@whimsy.udel.edu +2 -2
- Documentation cleanup from Dave Mills
-
- html/notes.htm
- 1.9 02/09/09 19:06:55 stenn@whimsy.udel.edu +10 -60
- Documentation cleanup from Dave Mills
-
- html/ldisc.htm
- 1.5 02/09/09 19:06:55 stenn@whimsy.udel.edu +61 -81
- Documentation cleanup from Dave Mills
-
- html/kernpps.htm
- 1.6 02/09/09 19:06:55 stenn@whimsy.udel.edu +22 -21
- Documentation cleanup from Dave Mills
-
- html/kern.htm
- 1.8 02/09/09 19:06:55 stenn@whimsy.udel.edu +35 -118
- Documentation cleanup from Dave Mills
-
- html/index.htm
- 1.16 02/09/09 19:06:55 stenn@whimsy.udel.edu +82 -305
- Documentation cleanup from Dave Mills
-
- html/howto.htm
- 1.9 02/09/09 19:06:55 stenn@whimsy.udel.edu +85 -383
- Documentation cleanup from Dave Mills
-
- html/hints.htm
- 1.7 02/09/09 19:06:55 stenn@whimsy.udel.edu +18 -28
- Documentation cleanup from Dave Mills
-
- html/genkeys.htm
- 1.11 02/09/09 19:06:54 stenn@whimsy.udel.edu +98 -506
- Documentation cleanup from Dave Mills
-
- html/gadget.htm
- 1.6 02/09/09 19:06:54 stenn@whimsy.udel.edu +40 -45
- Documentation cleanup from Dave Mills
-
- html/extern.htm
- 1.7 02/09/09 19:06:54 stenn@whimsy.udel.edu +24 -105
- Documentation cleanup from Dave Mills
-
- html/driver44.htm
- 1.3 02/09/09 19:06:54 stenn@whimsy.udel.edu +9 -14
- Documentation cleanup from Dave Mills
-
- html/driver30.htm
- 1.10 02/09/09 19:06:54 stenn@whimsy.udel.edu +12 -10
- Documentation cleanup from Dave Mills
-
- html/driver2.htm
- 1.5 02/09/09 19:06:54 stenn@whimsy.udel.edu +59 -129
- Documentation cleanup from Dave Mills
-
- html/driver18.htm
- 1.5 02/09/09 19:06:54 stenn@whimsy.udel.edu +72 -222
- Documentation cleanup from Dave Mills
-
- html/driver16.htm
- 1.4 02/09/09 19:06:54 stenn@whimsy.udel.edu +26 -38
- Documentation cleanup from Dave Mills
-
- html/driver12.htm
- 1.5 02/09/09 19:06:54 stenn@whimsy.udel.edu +46 -95
- Documentation cleanup from Dave Mills
-
- html/driver11.htm
- 1.5 02/09/09 19:06:54 stenn@whimsy.udel.edu +66 -129
- Documentation cleanup from Dave Mills
-
- html/driver10.htm
- 1.5 02/09/09 19:06:54 stenn@whimsy.udel.edu +50 -111
- Documentation cleanup from Dave Mills
-
- html/driver1.htm
- 1.6 02/09/09 19:06:53 stenn@whimsy.udel.edu +52 -154
- Documentation cleanup from Dave Mills
-
- html/debug.htm
- 1.10 02/09/09 19:06:53 stenn@whimsy.udel.edu +119 -593
- Documentation cleanup from Dave Mills
-
- html/copyright.htm
- 1.21 02/09/09 19:06:53 stenn@whimsy.udel.edu +72 -126
- Documentation cleanup from Dave Mills
-
- html/confopt.htm
- 1.20 02/09/09 19:06:53 stenn@whimsy.udel.edu +73 -270
- Documentation cleanup from Dave Mills
-
- html/config.htm
- 1.9 02/09/09 19:06:53 stenn@whimsy.udel.edu +53 -100
- Documentation cleanup from Dave Mills
-
- html/clockopt.htm
- 1.10 02/09/09 19:06:53 stenn@whimsy.udel.edu +60 -216
- Documentation cleanup from Dave Mills
-
- html/build.htm
- 1.11 02/09/09 19:06:52 stenn@whimsy.udel.edu +69 -239
- Documentation cleanup from Dave Mills
-
- html/authopt.htm
- 1.19 02/09/09 19:06:52 stenn@whimsy.udel.edu +132 -567
- Documentation cleanup from Dave Mills
-
- html/audio.htm
- 1.9 02/09/09 19:06:52 stenn@whimsy.udel.edu +50 -224
- Documentation cleanup from Dave Mills
-
- html/assoc.htm
- 1.12 02/09/09 19:06:52 stenn@whimsy.udel.edu +42 -244
- Documentation cleanup from Dave Mills
-
- html/accopt.htm
- 1.11 02/09/09 19:06:52 stenn@whimsy.udel.edu +62 -224
- Documentation cleanup from Dave Mills
-
- BitKeeper/deleted/.del-htmlprimer.htm~3e480692
- 1.4 02/09/09 18:49:17 stenn@whimsy.udel.edu +0 -0
- Delete: html/htmlprimer.htm
-
- html/pic/driver43_2.jpg
- 1.2 02/09/09 00:07:50 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver43_2.jpg -> html/pic/driver43_2.jpg
-
- html/pic/driver43_1.gif
- 1.2 02/09/09 00:07:50 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver43_1.gif -> html/pic/driver43_1.gif
-
-ChangeSet
- 1.912 02/09/07 15:38:04 jhay@angel.cids.org.za +1 -0
- Do not do ioctl(SIOCGNETMASK) on IPv6 addresses, based on the patch sent by
- Hideaki Imaizumi <hiddy@ISI.EDU>.
-
- Also change a continue back to an exit, like it was before the IPv6 days.
-
- ntpd/ntp_io.c
- 1.40 02/09/07 15:38:03 jhay@angel.cids.org.za +15 -16
- Do not do ioctl(SIOCGNETMASK) on IPv6 addresses, based on the patch sent by
- Hideaki Imaizumi <hiddy@ISI.EDU>.
-
- Also change a continue back to an exit, like it was before the IPv6 days.
-
-ChangeSet
- 1.911 02/09/07 15:24:13 jhay@angel.cids.org.za +1 -0
- Do this in a more obvious way. The result is that the bytes are now swapped
- compared to the previous way.
-
- libntp/a_md5encrypt.c
- 1.8.1.2 02/09/07 15:24:12 jhay@angel.cids.org.za +1 -7
- Do this in a more obvious way. The result is that the bytes are now swapped
- compared to the previous way.
-
-ChangeSet
- 1.910 02/09/02 19:02:53 stenn@whimsy.udel.edu +1 -0
- Typo fix from Reg Clemens, reported by John Hay.
-
- ntpd/refclock_oncore.c
- 1.41 02/09/02 19:02:50 stenn@whimsy.udel.edu +1 -1
- Typo fix from Reg Clemens, reported by John Hay.
-
-ChangeSet
- 1.909 02/08/28 23:38:39 stenn@whimsy.udel.edu +1 -0
- ntp_rfc2553.h is a noinst_HEADER.
- Reported by Dave Mills.
-
- include/Makefile.am
- 1.14 02/08/28 23:38:35 stenn@whimsy.udel.edu +1 -0
- ntp_rfc2553.h is a noinst_HEADER.
- Reported by Dave Mills.
-
-ChangeSet
- 1.908 02/08/28 06:32:58 stenn@whimsy.udel.edu +1 -0
- Improve the instructions for adding a new clock, as far as
- configure.in is concerned.
-
- html/howto.htm
- 1.8 02/08/28 06:32:55 stenn@whimsy.udel.edu +4 -26
- Improve the instructions for adding a new clock, as far as
- configure.in is concerned.
-
-ChangeSet
- 1.907 02/08/28 04:06:17 stenn@whimsy.udel.edu +5 -0
- Documentation updates from Dave Mills.
-
- html/ntpq.htm
- 1.12 02/08/28 04:06:13 stenn@whimsy.udel.edu +19 -1
- Documentation updates from Dave Mills.
-
- html/ntpdc.htm
- 1.9 02/08/28 04:06:13 stenn@whimsy.udel.edu +15 -0
- Documentation updates from Dave Mills.
-
- html/ntpdate.htm
- 1.8 02/08/28 04:06:13 stenn@whimsy.udel.edu +15 -0
- Documentation updates from Dave Mills.
-
- html/ntpd.htm
- 1.18 02/08/28 04:06:13 stenn@whimsy.udel.edu +15 -2
- Documentation updates from Dave Mills.
-
- html/confopt.htm
- 1.19 02/08/28 04:06:13 stenn@whimsy.udel.edu +8 -5
- Documentation updates from Dave Mills.
-
-ChangeSet
- 1.906 02/08/28 03:50:09 stenn@whimsy.udel.edu +1 -0
- Update the backroom flock build list.
-
- br-flock
- 1.3 02/08/28 03:50:06 stenn@whimsy.udel.edu +2 -1
- Update the backroom flock build list.
-
-ChangeSet
- 1.905 02/08/28 03:39:33 stenn@whimsy.udel.edu +5 -0
- Cleanup and fixes from Reg Clemens.
-
- ntpd/refclock_ripencc.c
- 1.3 02/08/28 03:39:29 stenn@whimsy.udel.edu +1 -3
- Lose pps_assert and pps_hardpps.
-
- ntpd/refclock_oncore.c
- 1.40 02/08/28 03:39:29 stenn@whimsy.udel.edu +154 -96
- Lose pps_assert and pps_hardpps.
- Fix the size of a memset().
- Support for M12+.
-
- ntpd/refclock_atom.c
- 1.41 02/08/28 03:39:29 stenn@whimsy.udel.edu +2 -4
- Remove pps_assert and pps_hardpps.
-
- ntpd/ntp_config.c
- 1.76 02/08/28 03:39:29 stenn@whimsy.udel.edu +0 -45
- Lose PPS stuff and pps_assert/pps_hardpps.
- From Reg Clemens.
-
- html/driver30.htm
- 1.9 02/08/28 03:39:29 stenn@whimsy.udel.edu +9 -11
- Cleanup from Reg Clemens.
-
-ChangeSet
- 1.904 02/08/25 02:47:21 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- acinclude.m4
- 1.10 02/08/25 02:47:19 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- acinclude.m4
- 1.9 02/08/25 02:47:18 stenn@whimsy.udel.edu +0 -0
- Merge rename: BitKeeper/deleted/.del-acinclude.m4~457f12ef -> acinclude.m4
-
- BitKeeper/etc/ignore
- 1.23 02/08/25 02:47:12 stenn@whimsy.udel.edu +0 -0
- auto-union
-
-ChangeSet
- 1.683.4.113 02/08/25 02:45:14 stenn@whimsy.udel.edu +2 -0
- Wrong toast...
-
- BitKeeper/etc/ignore
- 1.1.2.17 02/08/25 02:45:11 stenn@whimsy.udel.edu +0 -1
- Wrong toast...
-
- acinclude.m4
- 1.3.1.6 02/08/25 02:41:22 stenn@whimsy.udel.edu +0 -0
- Rename: BitKeeper/deleted/.del-acinclude.m4~457f12ef -> acinclude.m4
-
-ChangeSet
- 1.903 02/08/25 02:34:21 stenn@whimsy.udel.edu +10 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/deleted/.del-mkinstalldirs~3aed0663
- 1.9 02/08/25 02:34:18 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-missing~3aed0663
- 1.9 02/08/25 02:34:18 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-install-sh~3e480692
- 1.7 02/08/25 02:34:18 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-depcomp~4c5f0744
- 1.8 02/08/25 02:34:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-config.sub~3aed0663
- 1.13 02/08/25 02:34:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-config.guess~3aed0663
- 1.13 02/08/25 02:34:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-acinclude.m4~457f12ef
- 1.8 02/08/25 02:34:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-acinclude.m4~457f12ef
- 1.7 02/08/25 02:34:14 stenn@whimsy.udel.edu +0 -0
- Merge rename: acinclude.m4 -> BitKeeper/deleted/.del-acinclude.m4~457f12ef
-
- BitKeeper/etc/gone
- 1.4 02/08/25 02:34:10 stenn@whimsy.udel.edu +6 -0
- 'Auto converge'
-
- BitKeeper/etc/gone
- 1.3 02/08/25 02:34:10 stenn@whimsy.udel.edu +0 -0
- Rename: BitKeeper/deleted/.del-gone~2d146fa833ebf630 -> BitKeeper/etc/gone
-
- BitKeeper/deleted/.del-gone~49d73223570d08a2
- 1.2 02/08/25 02:34:09 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/etc/gone
-
- BitKeeper/deleted/.del-gone~2d146fa833ebf630
- 1.2 02/08/25 02:34:09 stenn@whimsy.udel.edu +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/ignore
- 1.22 02/08/25 02:34:07 stenn@whimsy.udel.edu +4 -10
- auto-union
-
-ChangeSet
- 1.683.4.112 02/08/25 02:15:43 stenn@whimsy.udel.edu +2 -0
- Lose more auto* generated files.
-
- BitKeeper/etc/ignore
- 1.1.2.16 02/08/25 02:13:45 stenn@whimsy.udel.edu +1 -0
- added acinclude.m4
-
- BitKeeper/deleted/.del-acinclude.m4~457f12ef
- 1.3.1.5 02/08/25 02:13:41 stenn@whimsy.udel.edu +0 -0
- Delete: acinclude.m4
-
-ChangeSet
- 1.683.4.111 02/08/25 02:06:54 stenn@whimsy.udel.edu +1 -0
- Lose some auto* generated files.
-
- BitKeeper/etc/gone
- 1.1 02/08/25 02:04:22 stenn@whimsy.udel.edu +6 -0
-
- BitKeeper/etc/gone
- 1.0 02/08/25 02:04:22 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/etc/gone
-
-ChangeSet
- 1.683.4.110 02/08/25 01:52:06 stenn@whimsy.udel.edu +9 -0
- Lose (and ignore) auto* generated files.
-
- BitKeeper/etc/ignore
- 1.1.2.15 02/08/25 01:42:42 stenn@whimsy.udel.edu +1 -0
- added mkinstalldirs
-
- BitKeeper/etc/ignore
- 1.1.2.14 02/08/25 01:42:41 stenn@whimsy.udel.edu +1 -0
- added missing
-
- BitKeeper/etc/ignore
- 1.1.2.13 02/08/25 01:42:41 stenn@whimsy.udel.edu +1 -0
- added install-sh
-
- BitKeeper/etc/ignore
- 1.1.2.12 02/08/25 01:42:41 stenn@whimsy.udel.edu +1 -0
- added depcomp
-
- BitKeeper/deleted/.del-mkinstalldirs~3aed0663
- 1.7.1.1 02/08/25 01:42:42 stenn@whimsy.udel.edu +0 -0
- Delete: mkinstalldirs
-
- BitKeeper/etc/ignore
- 1.1.2.11 02/08/25 01:42:40 stenn@whimsy.udel.edu +1 -0
- added config.sub
-
- BitKeeper/deleted/.del-missing~3aed0663
- 1.7.1.1 02/08/25 01:42:41 stenn@whimsy.udel.edu +0 -0
- Delete: missing
-
- BitKeeper/deleted/.del-install-sh~3e480692
- 1.5.1.1 02/08/25 01:42:41 stenn@whimsy.udel.edu +0 -0
- Delete: install-sh
-
- BitKeeper/etc/ignore
- 1.1.2.10 02/08/25 01:42:40 stenn@whimsy.udel.edu +1 -0
- added config.guess
-
- BitKeeper/deleted/.del-depcomp~4c5f0744
- 1.6.1.1 02/08/25 01:42:40 stenn@whimsy.udel.edu +0 -0
- Delete: depcomp
-
- BitKeeper/deleted/.del-config.sub~3aed0663
- 1.10.1.1 02/08/25 01:42:40 stenn@whimsy.udel.edu +0 -0
- Delete: config.sub
-
- BitKeeper/deleted/.del-config.guess~3aed0663
- 1.10.1.1 02/08/25 01:42:40 stenn@whimsy.udel.edu +0 -0
- Delete: config.guess
-
- BitKeeper/etc/ignore
- 1.1.2.9 02/08/25 01:28:26 stenn@whimsy.udel.edu +2 -0
- added ansi2knr.1 ansi2knr.c
-
- BitKeeper/deleted/.del-ansi2knr.c~3aed0663
- 1.4 02/08/25 01:27:22 stenn@whimsy.udel.edu +0 -0
- Delete: util/ansi2knr.c
-
- BitKeeper/deleted/.del-ansi2knr.1~3e480692
- 1.3 02/08/25 01:27:22 stenn@whimsy.udel.edu +0 -0
- Delete: util/ansi2knr.1
-
-ChangeSet
- 1.902 02/08/22 19:53:45 jhay@angel.cids.org.za +1 -0
- Add the files just removed to the ignore list, so that bk isn't surprised when
- they appear after a autoreconf run.
-
- BitKeeper/etc/ignore
- 1.21 02/08/22 19:53:45 jhay@angel.cids.org.za +6 -0
- Add the files just removed to the ignore list, so that bk isn't surprised when
- they appear after a autoreconf run.
-
-ChangeSet
- 1.901 02/08/22 19:43:01 jhay@angel.cids.org.za +6 -0
- Remove files created by autoreconf.
-
- BitKeeper/deleted/.del-mkinstalldirs~3aed0663
- 1.8 02/08/22 19:41:14 jhay@angel.cids.org.za +0 -0
- Delete: mkinstalldirs
-
- BitKeeper/deleted/.del-missing~3aed0663
- 1.8 02/08/22 19:41:14 jhay@angel.cids.org.za +0 -0
- Delete: missing
-
- BitKeeper/deleted/.del-install-sh~3e480692
- 1.6 02/08/22 19:41:14 jhay@angel.cids.org.za +0 -0
- Delete: install-sh
-
- BitKeeper/deleted/.del-depcomp~4c5f0744
- 1.7 02/08/22 19:41:14 jhay@angel.cids.org.za +0 -0
- Delete: depcomp
-
- BitKeeper/deleted/.del-config.sub~3aed0663
- 1.12 02/08/22 19:41:14 jhay@angel.cids.org.za +0 -0
- Delete: config.sub
-
- BitKeeper/deleted/.del-config.guess~3aed0663
- 1.12 02/08/22 19:41:14 jhay@angel.cids.org.za +0 -0
- Delete: config.guess
-
-ChangeSet
- 1.900 02/08/18 23:33:44 stenn@whimsy.udel.edu +2 -0
- Patch from Rainer Orth:
-
- Provide u_int64_t if missing (IRIX 6.5.12 defines u_int8_t,
- but lacks u_int64_t).
-
- include/ntp_rfc2553.h
- 1.6 02/08/18 23:33:41 stenn@whimsy.udel.edu +4 -1
- Use the new u_unt64_t test.
-
- configure.in
- 1.273 02/08/18 23:33:41 stenn@whimsy.udel.edu +10 -0
- Separate the u_int64_t test.
-
-ChangeSet
- 1.899 02/08/18 23:22:31 stenn@whimsy.udel.edu +1 -0
- Dave hacked some changes to the keyID code dealing with the MAC,
- apparently dealing with #ifdef OPENSSL.
-
- ntpd/ntp_proto.c
- 1.131 02/08/18 23:22:27 stenn@whimsy.udel.edu +9 -9
- Dave hacked some changes to the keyID code dealing with the MAC,
- apparently dealing with #ifdef OPENSSL.
-
-ChangeSet
- 1.898 02/08/15 03:10:36 stenn@whimsy.udel.edu +1 -0
- More documentation updates.
-
- html/driver42.htm
- 1.5 02/08/15 03:10:33 stenn@whimsy.udel.edu +30 -40
- Somebody reformatted this...
-
-ChangeSet
- 1.897 02/08/15 02:33:39 stenn@whimsy.udel.edu +14 -0
- HTML updates from Dave Mills.
-
- html/release.htm
- 1.19 02/08/15 02:33:35 stenn@whimsy.udel.edu +119 -84
- Upates from Dave Mills
-
- html/refclock.htm
- 1.19 02/08/15 02:33:35 stenn@whimsy.udel.edu +242 -189
- Upates from Dave Mills
-
- html/ntpq.htm
- 1.11 02/08/15 02:33:35 stenn@whimsy.udel.edu +181 -164
- Upates from Dave Mills
-
- html/ntpd.htm
- 1.17 02/08/15 02:33:35 stenn@whimsy.udel.edu +7 -5
- Upates from Dave Mills
-
- html/miscopt.htm
- 1.17 02/08/15 02:33:34 stenn@whimsy.udel.edu +6 -0
- Upates from Dave Mills
-
- html/index.htm
- 1.15 02/08/15 02:33:34 stenn@whimsy.udel.edu +12 -3
- Upates from Dave Mills
-
- html/genkeys.htm
- 1.10 02/08/15 02:33:34 stenn@whimsy.udel.edu +384 -152
- Upates from Dave Mills
-
- html/driver44.htm
- 1.2 02/08/15 02:33:34 stenn@whimsy.udel.edu +2 -2
- Upates from Dave Mills
-
- html/debug.htm
- 1.9 02/08/15 02:33:34 stenn@whimsy.udel.edu +159 -51
- Upates from Dave Mills
-
- html/copyright.htm
- 1.20 02/08/15 02:33:34 stenn@whimsy.udel.edu +5 -1
- Upates from Dave Mills
-
- html/confopt.htm
- 1.18 02/08/15 02:33:34 stenn@whimsy.udel.edu +32 -15
- Upates from Dave Mills
-
- html/config.htm
- 1.8 02/08/15 02:33:34 stenn@whimsy.udel.edu +63 -52
- Upates from Dave Mills
-
- html/authopt.htm
- 1.18 02/08/15 02:33:33 stenn@whimsy.udel.edu +253 -201
- Upates from Dave Mills
-
- html/accopt.htm
- 1.10 02/08/15 02:33:33 stenn@whimsy.udel.edu +53 -36
- Upates from Dave Mills
-
-ChangeSet
- 1.896 02/08/13 20:03:41 jhay@angel.cids.org.za +3 -0
- Fix compilation on Slackware 8.1 with the help of Andrew Hood
- <mithrandir@alwaysonline.net.au>
-
- ntpq/ntpq.c
- 1.27 02/08/13 20:03:40 jhay@angel.cids.org.za +8 -2
- Fix compilation on Slackware 8.1 with the help of Andrew Hood
- <mithrandir@alwaysonline.net.au>
-
- ntpdc/ntpdc.c
- 1.19 02/08/13 20:03:40 jhay@angel.cids.org.za +8 -2
- Fix compilation on Slackware 8.1 with the help of Andrew Hood
- <mithrandir@alwaysonline.net.au>
-
- include/ntp_rfc2553.h
- 1.5 02/08/13 20:03:40 jhay@angel.cids.org.za +1 -1
- Fix compilation on Slackware 8.1 with the help of Andrew Hood
- <mithrandir@alwaysonline.net.au>
-
-ChangeSet
- 1.895 02/08/07 10:08:32 jhay@angel.cids.org.za +2 -0
- Fix the breakage caused by my warning reduction.
-
- ntpd/ntp_io.c
- 1.39 02/08/07 10:08:31 jhay@angel.cids.org.za +0 -2
- Remove haddr6 totally in io_multicast_add(). It does not seem to be needed. This
- will unbreak the build on solaris 8.
-
- include/l_stdlib.h
- 1.10 02/08/07 10:08:31 jhay@angel.cids.org.za +0 -2
- Remove #include <stdio.h> again. It breaks libparse. I'll fix the missing prototypes
- for printf and friends another way.
-
-ChangeSet
- 1.894 02/08/06 21:03:46 jhay@angel.cids.org.za +21 -0
- Reduce compiler warnings.
-
- util/ntptime.c
- 1.15 02/08/06 21:03:45 jhay@angel.cids.org.za +1 -1
- Reduce compiler warnings.
-
- util/ntp-keygen.c
- 1.13 02/08/06 21:03:45 jhay@angel.cids.org.za +2 -1
- Reduce compiler warnings.
-
- ntpq/ntpq.c
- 1.26 02/08/06 21:03:45 jhay@angel.cids.org.za +2 -2
- Reduce compiler warnings.
-
- ntpdc/ntpdc.c
- 1.18 02/08/06 21:03:45 jhay@angel.cids.org.za +2 -2
- Reduce compiler warnings.
-
- ntpd/refclock_msfees.c
- 1.9 02/08/06 21:03:44 jhay@angel.cids.org.za +1 -1
- Reduce compiler warnings.
-
- ntpd/refclock_hopfser.c
- 1.4.1.1 02/08/06 21:03:44 jhay@angel.cids.org.za +7 -7
- Reduce compiler warnings.
-
- ntpd/refclock_hopfpci.c
- 1.6 02/08/06 21:03:44 jhay@angel.cids.org.za +1 -1
- Reduce compiler warnings.
-
- ntpd/ntp_proto.c
- 1.130 02/08/06 21:03:44 jhay@angel.cids.org.za +2 -0
- Reduce compiler warnings.
-
- ntpd/ntp_io.c
- 1.38 02/08/06 21:03:44 jhay@angel.cids.org.za +1 -1
- Reduce compiler warnings.
-
- ntpd/ntp_crypto.c
- 1.70 02/08/06 21:03:44 jhay@angel.cids.org.za +0 -2
- Reduce compiler warnings.
-
- ntpd/ntp_config.c
- 1.75 02/08/06 21:03:44 jhay@angel.cids.org.za +1 -1
- Reduce compiler warnings.
-
- libntp/strerror.c
- 1.4 02/08/06 21:03:44 jhay@angel.cids.org.za +2 -0
- Reduce compiler warnings.
-
- libntp/snprintf.c
- 1.7 02/08/06 21:03:44 jhay@angel.cids.org.za +2 -0
- Reduce compiler warnings.
-
- libntp/ntp_rfc2553.c
- 1.9 02/08/06 21:03:44 jhay@angel.cids.org.za +2 -1
- Reduce compiler warnings.
-
- libntp/memmove.c
- 1.3 02/08/06 21:03:44 jhay@angel.cids.org.za +6 -2
- Reduce compiler warnings.
-
- libntp/md5c.c
- 1.3 02/08/06 21:03:44 jhay@angel.cids.org.za +9 -9
- Reduce compiler warnings.
-
- libntp/icom.c
- 1.8 02/08/06 21:03:44 jhay@angel.cids.org.za +1 -0
- Reduce compiler warnings.
-
- libntp/audio.c
- 1.17 02/08/06 21:03:44 jhay@angel.cids.org.za +6 -6
- Reduce compiler warnings.
-
- kernel/sys/parsestreams.h
- 1.4 02/08/06 21:03:44 jhay@angel.cids.org.za +2 -0
- Reduce compiler warnings.
-
- include/ntp_rfc2553.h
- 1.4 02/08/06 21:03:44 jhay@angel.cids.org.za +0 -1
- Reduce compiler warnings.
-
- include/l_stdlib.h
- 1.9 02/08/06 21:03:44 jhay@angel.cids.org.za +2 -0
- Reduce compiler warnings.
-
-ChangeSet
- 1.893 02/08/06 04:15:38 stenn@whimsy.udel.edu +4 -0
- Calldelay, from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.129 02/08/06 04:15:33 stenn@whimsy.udel.edu +27 -10
- calldelay, from Dave Mills.
-
- ntpd/ntp_config.c
- 1.74 02/08/06 04:15:32 stenn@whimsy.udel.edu +13 -0
- Implement calldelay, from Dave Mills.
-
- include/ntp_config.h
- 1.20 02/08/06 04:15:32 stenn@whimsy.udel.edu +2 -1
- CONFIG_CDELAY from Dave Mills.
-
- include/ntp.h
- 1.74 02/08/06 04:15:32 stenn@whimsy.udel.edu +2 -3
- PROTO_CALLDELAY from Dave Mills.
-
-ChangeSet
- 1.892 02/08/04 23:05:58 stenn@whimsy.udel.edu +1 -0
- Attempt to compensate for Microsoft's protocol violations.
- From: Dave Mills.
-
- ntpd/ntp_proto.c
- 1.128 02/08/04 23:05:55 stenn@whimsy.udel.edu +4 -3
- Attempt to compensate for Microsoft's protocol violations.
- From: Dave Mills.
-
-ChangeSet
- 1.891 02/08/04 06:55:16 jhay@angel.cids.org.za +2 -0
- Get rid of some warnings.
-
- ntpq/ntpq.c
- 1.25 02/08/04 06:55:13 jhay@angel.cids.org.za +1 -1
- Comment out the rest of the #endif line to make the compiler a little happier.
-
- ntpdc/ntpdc.c
- 1.17 02/08/04 06:55:12 jhay@angel.cids.org.za +3 -3
- Get rid of a warning I caused in my previous commit.
-
-ChangeSet
- 1.890 02/08/03 19:50:25 jhay@angel.cids.org.za +4 -0
- Add address family selection to ntpdc and ntpq. The -4|-6 overrides can be used
- on the commandline, the host command and all the places in ntpdc that use dns
- names or addresses in their arguments.
-
- ntpq/ntpq_ops.c
- 1.14 02/08/03 19:50:25 jhay@angel.cids.org.za +6 -6
- Add address family selection to ntpdc and ntpq. The -4|-6 overrides can be used
- on the commandline, the host command and all the places in ntpdc that use dns
- names or addresses in their arguments.
-
- ntpq/ntpq.c
- 1.24 02/08/03 19:50:24 jhay@angel.cids.org.za +43 -14
- Add address family selection to ntpdc and ntpq. The -4|-6 overrides can be used
- on the commandline, the host command and all the places in ntpdc that use dns
- names or addresses in their arguments.
-
- ntpdc/ntpdc_ops.c
- 1.21 02/08/03 19:50:24 jhay@angel.cids.org.za +4 -4
- Add address family selection to ntpdc and ntpq. The -4|-6 overrides can be used
- on the commandline, the host command and all the places in ntpdc that use dns
- names or addresses in their arguments.
-
- ntpdc/ntpdc.c
- 1.16 02/08/03 19:50:24 jhay@angel.cids.org.za +81 -26
- Add address family selection to ntpdc and ntpq. The -4|-6 overrides can be used
- on the commandline, the host command and all the places in ntpdc that use dns
- names or addresses in their arguments.
-
-ChangeSet
- 1.889 02/08/01 06:11:17 jhay@angel.cids.org.za +1 -0
- Add address family override on the commandline. Use -4/-6 like most other
- programs that do it. Note that it overrides it for all the servers on the
- commandline.
-
- ntpdate/ntpdate.c
- 1.35 02/08/01 06:11:16 jhay@angel.cids.org.za +12 -5
- Add address family override on the commandline. Use -4/-6 like most other
- programs that do it. Note that it overrides it for all the servers on the
- commandline.
-
-ChangeSet
- 1.888 02/07/31 21:33:33 jhay@angel.cids.org.za +1 -0
- Remove stop_timer() and so make multiple servers work again. I really don't
- know why this piece of code came with the original IPv6 port. Ntpdate did not
- need it before and is broken with it.
-
- ntpdate/ntpdate.c
- 1.34 02/07/31 21:33:32 jhay@angel.cids.org.za +1 -20
- Remove stop_timer() and so make multiple servers work again. I really don't
- know why this piece of code came with the original IPv6 port. Ntpdate did not
- need it before and is broken with it.
-
-ChangeSet
- 1.887 02/07/30 17:08:59 stenn@whimsy.udel.edu +1 -0
- Disable the RIPE NCC clock by default until the sprintf() problem
- is fixed.
-
- configure.in
- 1.272 02/07/30 17:08:55 stenn@whimsy.udel.edu +1 -1
- Disable the RIPE NCC clock by default until the sprintf() problem
- is fixed.
-
-ChangeSet
- 1.886 02/07/30 12:44:12 jhay@angel.cids.org.za +1 -0
- Add an extra argument, complain, to matchkey() so that the caller can tell it
- if it should be quiet or verbose about missing keywords. This should quiet
- down syslog after the addition of the -4 / -6 address specifier.
-
- ntpd/ntp_config.c
- 1.73 02/07/30 12:44:02 jhay@angel.cids.org.za +27 -24
- Add an extra argument, complain, to matchkey() so that the caller can tell it
- if it should be quiet or verbose about missing keywords. This should quiet
- down syslog after the addition of the -4 / -6 address specifier.
-
-ChangeSet
- 1.885 02/07/30 02:40:03 stenn@whimsy.udel.edu +2 -0
- Lose the ntp-dev-ipv6 info, IPv6 is now part of ntp-dev.
-
- README.bk
- 1.13 02/07/30 02:39:57 stenn@whimsy.udel.edu +0 -11
- Lose the ntp-dev-ipv6 info, IPv6 is now part of ntp-dev.
-
- BitKeeper/deleted/.del-INSTALLv6.txt~afab5ba5572d4686
- 1.2 02/07/30 02:37:19 stenn@whimsy.udel.edu +0 -0
- Delete: INSTALLv6.txt
-
-ChangeSet
- 1.884 02/07/29 11:20:21 jhay@angel.cids.org.za +7 -0
- Second try at getting the refid stuff right for ipv6. Add an addr_refid field
- to the interface structure and hash each interface address on startup. This is
- then used to compare the incoming refid's against. The hash function,
- addr2refid() use md5 on the ipv6 addresses and use the ipv4 addresses just as
- it is. Add sys_peer_refid which is the hash value of the ip address of sys_peer
- and gets recalculated in clock_select() when sys_peer change. This way the
- behaviour for the ipv4 case stay the same as previous implementations.
-
- ntpd/refclock_atom.c
- 1.40 02/07/29 11:20:19 jhay@angel.cids.org.za +1 -1
- Second try at getting the refid stuff right for ipv6. Add an addr_refid field
- to the interface structure and hash each interface address on startup. This is
- then used to compare the incoming refid's against. The hash function,
- addr2refid() use md5 on the ipv6 addresses and use the ipv4 addresses just as
- it is. Add sys_peer_refid which is the hash value of the ip address of sys_peer
- and gets recalculated in clock_select() when sys_peer change. This way the
- behaviour for the ipv4 case stay the same as previous implementations.
-
- ntpd/ntp_proto.c
- 1.127 02/07/29 11:20:19 jhay@angel.cids.org.za +11 -13
- Second try at getting the refid stuff right for ipv6. Add an addr_refid field
- to the interface structure and hash each interface address on startup. This is
- then used to compare the incoming refid's against. The hash function,
- addr2refid() use md5 on the ipv6 addresses and use the ipv4 addresses just as
- it is. Add sys_peer_refid which is the hash value of the ip address of sys_peer
- and gets recalculated in clock_select() when sys_peer change. This way the
- behaviour for the ipv4 case stay the same as previous implementations.
-
- ntpd/ntp_io.c
- 1.37 02/07/29 11:20:19 jhay@angel.cids.org.za +7 -43
- Second try at getting the refid stuff right for ipv6. Add an addr_refid field
- to the interface structure and hash each interface address on startup. This is
- then used to compare the incoming refid's against. The hash function,
- addr2refid() use md5 on the ipv6 addresses and use the ipv4 addresses just as
- it is. Add sys_peer_refid which is the hash value of the ip address of sys_peer
- and gets recalculated in clock_select() when sys_peer change. This way the
- behaviour for the ipv4 case stay the same as previous implementations.
-
- libntp/a_md5encrypt.c
- 1.8.1.1 02/07/29 11:20:19 jhay@angel.cids.org.za +34 -0
- Second try at getting the refid stuff right for ipv6. Add an addr_refid field
- to the interface structure and hash each interface address on startup. This is
- then used to compare the incoming refid's against. The hash function,
- addr2refid() use md5 on the ipv6 addresses and use the ipv4 addresses just as
- it is. Add sys_peer_refid which is the hash value of the ip address of sys_peer
- and gets recalculated in clock_select() when sys_peer change. This way the
- behaviour for the ipv4 case stay the same as previous implementations.
-
- include/ntpd.h
- 1.48 02/07/29 11:20:19 jhay@angel.cids.org.za +0 -1
- Second try at getting the refid stuff right for ipv6. Add an addr_refid field
- to the interface structure and hash each interface address on startup. This is
- then used to compare the incoming refid's against. The hash function,
- addr2refid() use md5 on the ipv6 addresses and use the ipv4 addresses just as
- it is. Add sys_peer_refid which is the hash value of the ip address of sys_peer
- and gets recalculated in clock_select() when sys_peer change. This way the
- behaviour for the ipv4 case stay the same as previous implementations.
-
- include/ntp_stdlib.h
- 1.17 02/07/29 11:20:19 jhay@angel.cids.org.za +1 -0
- Second try at getting the refid stuff right for ipv6. Add an addr_refid field
- to the interface structure and hash each interface address on startup. This is
- then used to compare the incoming refid's against. The hash function,
- addr2refid() use md5 on the ipv6 addresses and use the ipv4 addresses just as
- it is. Add sys_peer_refid which is the hash value of the ip address of sys_peer
- and gets recalculated in clock_select() when sys_peer change. This way the
- behaviour for the ipv4 case stay the same as previous implementations.
-
- include/ntp.h
- 1.73 02/07/29 11:20:19 jhay@angel.cids.org.za +1 -0
- Second try at getting the refid stuff right for ipv6. Add an addr_refid field
- to the interface structure and hash each interface address on startup. This is
- then used to compare the incoming refid's against. The hash function,
- addr2refid() use md5 on the ipv6 addresses and use the ipv4 addresses just as
- it is. Add sys_peer_refid which is the hash value of the ip address of sys_peer
- and gets recalculated in clock_select() when sys_peer change. This way the
- behaviour for the ipv4 case stay the same as previous implementations.
-
-ChangeSet
- 1.883 02/07/29 08:11:14 jhay@angel.cids.org.za +2 -0
- Make it possible to force the dns to resolve names to IPv4 or IPv6. This is done
- by adding an optional -4 or -6 keyword before all the places where a dns name can
- be used, for example, these are valid:
-
- server -4 some.domain ...
- server -6 some.domain ...
- server some.domain ...
-
- ntpd/ntp_config.c
- 1.72 02/07/29 08:11:13 jhay@angel.cids.org.za +103 -20
- Make it possible to force the dns to resolve names to IPv4 or IPv6. This is done
- by adding an optional -4 or -6 keyword before all the places where a dns name can
- be used, for example, these are valid:
-
- server -4 some.domain ...
- server -6 some.domain ...
- server some.domain ...
-
- include/ntp_config.h
- 1.19 02/07/29 08:11:13 jhay@angel.cids.org.za +6 -0
- Make it possible to force the dns to resolve names to IPv4 or IPv6. This is done
- by adding an optional -4 or -6 keyword before all the places where a dns name can
- be used, for example, these are valid:
-
- server -4 some.domain ...
- server -6 some.domain ...
- server some.domain ...
-
-ChangeSet
- 1.882 02/07/29 07:58:13 jhay@angel.cids.org.za +1 -0
- Older implementations of IPv6 used IPV6_BINDV6ONLY instead of IPV6_V6ONLY. Support
- them too.
-
- ntpd/ntp_io.c
- 1.36 02/07/29 07:58:12 jhay@angel.cids.org.za +10 -0
- Older implementations of IPv6 used IPV6_BINDV6ONLY instead of IPV6_V6ONLY. Support
- them too.
-
-ChangeSet
- 1.881 02/07/27 01:12:41 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.271 02/07/27 01:12:38 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.62 02/07/27 00:59:05 stenn@whimsy.udel.edu +1 -0
- Merge cleanup.
-
- configure.in
- 1.226.1.55 02/07/27 00:59:03 stenn@whimsy.udel.edu +1 -2
- Merge cleanup.
-
-ChangeSet
- 1.683.4.109 02/07/27 00:52:48 stenn@whimsy.udel.edu +1 -0
- Typo, reported by BOUWSMA Beery.
-
- configure.in
- 1.219.3.30 02/07/27 00:52:44 stenn@whimsy.udel.edu +2 -2
- Typo, reported by BOUWSMA Beery.
-
-ChangeSet
- 1.878.1.1 02/07/26 20:57:23 stenn@whimsy.udel.edu +2 -0
- Changes from Dave Mills (near as I can tell).
-
- ntpd/ntp_proto.c
- 1.126 02/07/26 20:57:20 stenn@whimsy.udel.edu +1 -1
- Lose a burst check.
-
- ntpd/ntp_control.c
- 1.55 02/07/26 20:57:19 stenn@whimsy.udel.edu +1 -1
- recval.tstamp needs to be "put" in network order.
-
-ChangeSet
- 1.879 02/07/26 19:57:44 jhay@angel.cids.org.za +1 -0
- Catch a srcadr that should be a dstadr, thanks to BOUWSMA Beery.
-
- ntpq/ntpq_ops.c
- 1.13 02/07/26 19:57:43 jhay@angel.cids.org.za +1 -1
- Catch a srcadr that should be a dstadr, thanks to BOUWSMA Beery.
-
-ChangeSet
- 1.878 02/07/24 00:59:37 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.270 02/07/24 00:59:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.61 02/07/24 00:44:47 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.226.1.54 02/07/24 00:44:45 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
-ChangeSet
- 1.683.4.108 02/07/24 00:38:12 stenn@whimsy.udel.edu +1 -0
- Make sure the readline headers exist before checking for the library.
-
- configure.in
- 1.219.3.29 02/07/24 00:38:07 stenn@whimsy.udel.edu +14 -9
- Make sure the readline headers exist before checking for the library.
-
-ChangeSet
- 1.877 02/07/22 21:11:44 jhay@angel.cids.org.za +1 -0
- Cleanup debug printf.
-
- libntp/ntp_rfc2553.c
- 1.8 02/07/22 21:11:43 jhay@angel.cids.org.za +1 -2
- Cleanup debug printf.
-
-ChangeSet
- 1.876 02/07/22 18:45:54 jhay@angel.cids.org.za +2 -0
- Some fixes to make ntpdate work on SunOS4.
-
- ntpdate/ntpdate.c
- 1.33 02/07/22 18:45:53 jhay@angel.cids.org.za +1 -1
- Use SOCKLEN() rather than ai_addrlen, it is safer on older machines.
-
- libntp/ntp_rfc2553.c
- 1.7 02/07/22 18:45:53 jhay@angel.cids.org.za +3 -4
- Found a little bug, use INADDR_ANY and not LOCALHOST. Also fill in a few more fields
- that SunOS4 needs to make ntpdate work.
-
-ChangeSet
- 1.875 02/07/21 16:14:22 jhay@angel.cids.org.za +1 -0
- Fill in a few more needed fields in the ipv4_aton() case. This makes getnetnum()
- happy, says SunOS4.
-
- libntp/ntp_rfc2553.c
- 1.6 02/07/21 16:14:21 jhay@angel.cids.org.za +3 -0
- Fill in a few more needed fields in the ipv4_aton() case. This makes getnetnum()
- happy, says SunOS4.
-
-ChangeSet
- 1.874 02/07/19 22:42:28 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.269 02/07/19 22:42:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.60 02/07/19 22:39:20 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.226.1.53 02/07/19 22:39:18 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.107 02/07/19 22:35:24 stenn@whimsy.udel.edu +1 -0
- Disable the NeoCLock by default for now - the driver assumes sprintf()
- returns an int...
-
- configure.in
- 1.219.3.28 02/07/19 22:35:18 stenn@whimsy.udel.edu +2 -2
- Disable the NeoCLock by default for now - the driver assumes sprintf()
- returns an int...
-
-ChangeSet
- 1.873 02/07/19 16:49:39 stenn@whimsy.udel.edu +1 -0
- Tabify, and replace the REFCLOC_MAX that got lost.
-
- include/ntp.h
- 1.72 02/07/19 16:49:34 stenn@whimsy.udel.edu +15 -14
- Tabify, and replace the REFCLOC_MAX that got lost.
-
-ChangeSet
- 1.872 02/07/19 16:25:46 stenn@whimsy.udel.edu +4 -0
- Merge cleanup.
-
- include/ntp.h
- 1.71 02/07/19 16:25:41 stenn@whimsy.udel.edu +0 -1
- Merge cleanup
-
- ntpd/ntp_control.c
- 1.54 02/07/19 16:15:43 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.268 02/07/19 16:15:42 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/logging_ok
- 1.10 02/07/19 16:15:35 stenn@whimsy.udel.edu +0 -0
- auto-union
-
-ChangeSet
- 1.706.10.59 02/07/19 16:02:19 stenn@whimsy.udel.edu +1 -0
- Merge cleanup (neoclock)
-
- configure.in
- 1.226.1.52 02/07/19 16:02:15 stenn@whimsy.udel.edu +0 -10
- Merge cleanup.
-
-ChangeSet
- 1.683.4.106 02/07/19 14:06:56 stenn@whimsy.udel.edu +1 -0
- Alphabetize the neoclock test.
-
- configure.in
- 1.219.3.27 02/07/19 14:06:51 stenn@whimsy.udel.edu +10 -10
- Alphabetize the neoclock test.
-
-ChangeSet
- 1.706.10.58 02/07/19 13:44:43 stenn@whimsy.udel.edu +1 -0
- neoclock msec/nsec conversion attempt.
-
- ntpd/refclock_neoclock4x.c
- 1.2 02/07/19 13:44:37 stenn@whimsy.udel.edu +4 -4
- msec -> nsec conversion attempt.
-
-ChangeSet
- 1.706.10.57 02/07/19 13:16:01 stenn@whimsy.udel.edu +9 -0
- Merge cleanup.
-
- libntp/clocktypes.c
- 1.15 02/07/19 13:15:54 stenn@whimsy.udel.edu +2 -2
- Merge cleanup (I hope).
-
- configure.in
- 1.226.1.51 02/07/19 13:15:54 stenn@whimsy.udel.edu +10 -10
- Put the NeoCLock4X check in alphabetic sequence.
-
- ntpd/refclock_conf.c
- 1.21 02/07/19 12:34:40 stenn@whimsy.udel.edu +8 -9
- Auto merged
-
- ntpd/ntp_control.c
- 1.39.2.6 02/07/19 12:34:39 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/Makefile.am
- 1.33 02/07/19 12:34:39 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.50.1.19 02/07/19 12:34:38 stenn@whimsy.udel.edu +2 -3
- Auto merged
-
- html/refclock.htm
- 1.18 02/07/19 12:34:38 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/logging_ok
- 1.3.3.3 02/07/19 12:34:33 stenn@whimsy.udel.edu +1 -0
- 'Auto converge'
-
- BitKeeper/etc/logging_ok
- 1.3.3.2 02/07/19 12:34:33 stenn@whimsy.udel.edu +0 -0
- Rename: BitKeeper/deleted/.del-logging_ok~bebb84d857254496 -> BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.8.1.2 02/07/19 12:34:33 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.3.3.1 02/07/19 12:34:32 stenn@whimsy.udel.edu +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.8.1.1 02/07/19 12:34:30 stenn@whimsy.udel.edu +1 -1
- auto-union
-
-ChangeSet
- 1.871 02/07/19 16:05:58 jhay@angel.cids.org.za +1 -0
- If gethostbyname() fails, try to decode the string as a ipv4 number. This should
- make SunOS 4 happy.
-
- libntp/ntp_rfc2553.c
- 1.5 02/07/19 16:05:57 jhay@angel.cids.org.za +84 -5
- If gethostbyname() fails, try to decode the string as a ipv4 number. This should
- make SunOS 4 happy.
-
-ChangeSet
- 1.683.4.105 02/07/18 17:44:35 claas@webfix.linum.ein +11 -0
- Many files:
- support for new refclock driver NeoClock4X
- neoclock4x.gif, driver44.htm, refclock_neoclock4x.c:
- support for new refclock driver NeoClock4X
-
- BitKeeper/etc/logging_ok
- 1.1.1.4 02/07/18 17:44:35 claas@webfix.linum.ein +1 -0
- Logging to logging@openlogging.org accepted
-
- ntpd/refclock_conf.c
- 1.13.1.6 02/07/18 17:42:39 claas@webfix.linum.ein +8 -1
- new reflock driver NeoClock4X
-
- ntpd/ntp_control.c
- 1.37.3.6 02/07/18 17:42:29 claas@webfix.linum.ein +1 -0
- new reflock driver NeoClock4X
-
- ntpd/Makefile.am
- 1.18.2.8 02/07/18 17:42:17 claas@webfix.linum.ein +1 -1
- new reflock driver NeoClock4X
-
- libntp/clocktypes.c
- 1.7.1.6 02/07/18 17:42:04 claas@webfix.linum.ein +2 -0
- new reflock driver NeoClock4X
-
- include/ntp.h
- 1.47.3.6 02/07/18 17:41:48 claas@webfix.linum.ein +2 -1
- new reflock driver NeoClock4X
-
- configure.in
- 1.219.3.26 02/07/18 17:41:32 claas@webfix.linum.ein +9 -0
- new reflock driver NeoClock4X
-
- html/refclock.htm
- 1.13.1.3 02/07/18 17:40:50 claas@webfix.linum.ein +189 -241
- new reflock driver NeoClock4X
-
- html/pic/neoclock4x.gif
- 1.1 02/07/18 17:39:43 claas@webfix.linum.ein +334 -0
-
- html/pic/neoclock4x.gif
- 1.0 02/07/18 17:39:43 claas@webfix.linum.ein +0 -0
- BitKeeper file /usr/src/ntp-stable/html/pic/neoclock4x.gif
-
- html/driver44.htm
- 1.1 02/07/18 17:39:24 claas@webfix.linum.ein +131 -0
-
- html/driver44.htm
- 1.0 02/07/18 17:39:24 claas@webfix.linum.ein +0 -0
- BitKeeper file /usr/src/ntp-stable/html/driver44.htm
-
- ntpd/refclock_neoclock4x.c
- 1.1 02/07/18 17:38:39 claas@webfix.linum.ein +864 -0
-
- ntpd/refclock_neoclock4x.c
- 1.0 02/07/18 17:38:39 claas@webfix.linum.ein +0 -0
- BitKeeper file /usr/src/ntp-stable/ntpd/refclock_neoclock4x.c
-
-ChangeSet
- 1.870 02/07/17 13:56:51 jhay@angel.cids.org.za +2 -0
- Some (older) implementations do not like the AI_ADDRCONFIG flag. If getaddrinfo()
- fails because of EAI_BADFLAGS, retry it without that flag.
-
- ntpq/ntpq.c
- 1.23 02/07/17 13:56:51 jhay@angel.cids.org.za +5 -0
- Some (older) implementations do not like the AI_ADDRCONFIG flag. If getaddrinfo()
- fails because of EAI_BADFLAGS, retry it without that flag.
-
- ntpdc/ntpdc.c
- 1.15 02/07/17 13:56:50 jhay@angel.cids.org.za +5 -0
- Some (older) implementations do not like the AI_ADDRCONFIG flag. If getaddrinfo()
- fails because of EAI_BADFLAGS, retry it without that flag.
-
-ChangeSet
- 1.869 02/07/16 17:28:11 jhay@angel.cids.org.za +4 -0
- IPv6 code cleanup.
-
- ntpdc/ntpdc_ops.c
- 1.20 02/07/16 17:28:08 jhay@angel.cids.org.za +2 -0
- Clear the address and mask structures before use in reslist.
-
- ntpd/ntp_restrict.c
- 1.13 02/07/16 17:28:08 jhay@angel.cids.org.za +2 -2
- Add a ntohs() to the IPv6 port.
-
- libntp/socktohost.c
- 1.3 02/07/16 17:28:08 jhay@angel.cids.org.za +1 -1
- Use the real buffer length.
-
- libntp/socktoa.c
- 1.3 02/07/16 17:28:08 jhay@angel.cids.org.za +5 -3
- Wrap long lines.
-
-ChangeSet
- 1.868 02/07/16 02:32:20 stenn@whimsy.udel.edu +1 -0
- Fixes from John Hay.
-
- ntpdc/ntpdc_ops.c
- 1.19 02/07/16 02:32:15 stenn@whimsy.udel.edu +8 -1
- Fixes from John Hay.
-
-ChangeSet
- 1.867 02/07/16 01:48:32 stenn@whimsy.udel.edu +3 -0
- Reconcile the merge.
-
- ntpd/ntp_proto.c
- 1.125 02/07/16 01:48:27 stenn@whimsy.udel.edu +1 -2
- Reconcile the merge.
-
- ntpd/ntp_crypto.c
- 1.69 02/07/16 01:40:14 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/ignore
- 1.20 02/07/16 01:40:07 stenn@whimsy.udel.edu +0 -6
- auto-union
-
-ChangeSet
- 1.706.10.56 02/07/16 01:36:45 stenn@whimsy.udel.edu +2 -0
- Changes from Dave.
-
- ntpd/ntp_proto.c
- 1.99.1.22 02/07/16 01:36:39 stenn@whimsy.udel.edu +13 -4
- Changes from Dave.
-
- ntpd/ntp_crypto.c
- 1.48.1.18 02/07/16 01:36:39 stenn@whimsy.udel.edu +15 -3
- Changes from Dave.
-
-ChangeSet
- 1.706.10.55 02/07/16 01:27:19 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/etc/ignore
- 1.14.1.5 02/07/16 01:27:11 stenn@whimsy.udel.edu +6 -6
- auto-union
-
-ChangeSet
- 1.683.4.104 02/07/16 01:23:45 stenn@whimsy.udel.edu +1 -0
- Ignore autom4te.cache .
-
- BitKeeper/etc/ignore
- 1.1.2.8 02/07/16 01:23:39 stenn@whimsy.udel.edu +1 -0
- Ignore autom4te.cache .
-
-ChangeSet
- 1.866 02/07/16 01:03:36 stenn@whimsy.udel.edu +1 -0
- My bad - it wasn't a 2po. Sigh.
-
- ntpd/ntp_restrict.c
- 1.12 02/07/16 01:03:30 stenn@whimsy.udel.edu +5 -4
- My bad - it wasn't a 2po. Sigh.
-
-ChangeSet
- 1.865 02/07/15 22:26:23 stenn@whimsy.udel.edu +2 -0
- Cleanup from John Hay (ntpsim).
-
- ntpd/ntpsim.c
- 1.5 02/07/15 22:26:17 stenn@whimsy.udel.edu +4 -4
- Cleanup from John Hay (ntpsim).
-
- include/ntpsim.h
- 1.4 02/07/15 22:26:17 stenn@whimsy.udel.edu +2 -1
- Cleanup from John Hay (ntpsim).
-
-ChangeSet
- 1.864 02/07/15 22:12:38 stenn@whimsy.udel.edu +1 -0
- Fix a 2po.
-
- ntpd/ntp_restrict.c
- 1.11 02/07/15 22:12:32 stenn@whimsy.udel.edu +0 -1
- Fix a 2po.
-
-ChangeSet
- 1.863 02/07/15 22:01:29 stenn@whimsy.udel.edu +5 -0
- Cleanup from John Hay.
-
- ntpd/ntp_restrict.c
- 1.10 02/07/15 22:01:23 stenn@whimsy.udel.edu +341 -324
- Cleanup from John Hay.
-
- ntpd/ntp_request.c
- 1.37 02/07/15 22:01:23 stenn@whimsy.udel.edu +2 -2
- Cleanup from John Hay.
-
- ntpd/ntp_io.c
- 1.35 02/07/15 22:01:23 stenn@whimsy.udel.edu +3 -3
- Cleanup from John Hay.
-
- ntpd/ntp_config.c
- 1.71 02/07/15 22:01:22 stenn@whimsy.udel.edu +5 -3
- Cleanup from John Hay.
-
- include/ntp.h
- 1.70 02/07/15 22:01:22 stenn@whimsy.udel.edu +33 -22
- Cleanup from John Hay.
-
-ChangeSet
- 1.862 02/07/15 02:55:21 stenn@whimsy.udel.edu +1 -0
- Cleanup from John Hay.
-
- libntp/decodenetnum.c
- 1.5 02/07/15 02:55:15 stenn@whimsy.udel.edu +1 -1
- Cleanup from John Hay.
-
-ChangeSet
- 1.861 02/07/15 02:46:25 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- include/ntpd.h
- 1.47 02/07/15 02:46:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.54 02/07/15 02:42:55 stenn@whimsy.udel.edu +2 -0
- Cleanup from John Hay.
-
- include/ntpd.h
- 1.31.2.6 02/07/15 02:42:49 stenn@whimsy.udel.edu +0 -1
- Cleanup from John Hay.
-
- include/ntp_machine.h
- 1.11.1.1 02/07/15 02:42:49 stenn@whimsy.udel.edu +4 -0
- Cleanup from John Hay.
-
-ChangeSet
- 1.860 02/07/15 02:05:11 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.267 02/07/15 02:05:08 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.53 02/07/15 01:38:07 stenn@whimsy.udel.edu +1 -0
- I messed up the previous merge - it's now ntp-keygen.
-
- configure.in
- 1.226.1.50 02/07/15 01:38:00 stenn@whimsy.udel.edu +2 -2
- I messed up the previous merge - it's now ntp-keygen.
-
-ChangeSet
- 1.706.10.52 02/07/15 01:04:18 stenn@whimsy.udel.edu +3 -0
- Merge
-
- configure.in
- 1.226.1.49 02/07/15 01:04:07 stenn@whimsy.udel.edu +7 -13
- Merge clenup.
-
- acconfig.h
- 1.29 02/07/15 00:49:48 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
- ports/winnt/include/config.h
- 1.12.1.1 02/07/15 00:48:55 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.103 02/07/15 00:14:51 harlan@dog.pfcs.com +3 -0
- Autoheader template conversion.
-
- ports/winnt/include/config.h
- 1.9.2.1 02/07/15 00:14:47 harlan@dog.pfcs.com +0 -1
- Lose an obsolete variable.
-
- configure.in
- 1.219.3.25 02/07/15 00:14:46 harlan@dog.pfcs.com +200 -200
- Convert to autoheader templates.
-
- acconfig.h
- 1.23.3.6 02/07/15 00:14:46 harlan@dog.pfcs.com +0 -484
- Convert to autoheader templates.
-
-ChangeSet
- 1.859 02/07/13 15:13:42 stenn@whimsy.udel.edu +2 -0
- Merge cleanup from John Hay.
-
- ntpd/ntp_proto.c
- 1.124 02/07/13 15:13:31 stenn@whimsy.udel.edu +6 -14
- Merge cleanup from John Hay.
-
- include/ntp.h
- 1.69 02/07/13 15:13:31 stenn@whimsy.udel.edu +11 -0
- Merge cleanup from John Hay.
-
-ChangeSet
- 1.858 02/07/12 21:37:25 stenn@whimsy.udel.edu +4 -0
- Merge Dave's changes into ipV6.
-
- ntpd/ntp_proto.c
- 1.123 02/07/12 21:37:20 stenn@whimsy.udel.edu +5 -5
- I hope I merged this right...
-
- ntpd/ntp_peer.c
- 1.49 02/07/12 21:19:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_crypto.c
- 1.68 02/07/12 21:19:24 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.68 02/07/12 21:19:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.51 02/07/12 21:15:10 stenn@whimsy.udel.edu +6 -0
- Cleanup and changes from Dave.
-
- ntpd/ntp_proto.c
- 1.99.1.21 02/07/12 21:15:00 stenn@whimsy.udel.edu +180 -206
- Cleanup and changes from Dave.
-
- ntpd/ntp_peer.c
- 1.32.2.7 02/07/12 21:15:00 stenn@whimsy.udel.edu +13 -10
- Cleanup and changes from Dave.
-
- ntpd/ntp_crypto.c
- 1.48.1.17 02/07/12 21:14:59 stenn@whimsy.udel.edu +39 -46
- Cleanup from Dave.
-
- libntp/statestr.c
- 1.8 02/07/12 21:14:59 stenn@whimsy.udel.edu +2 -2
- Crypto flag cleanup.
-
- include/ntp_crypto.h
- 1.29 02/07/12 21:14:59 stenn@whimsy.udel.edu +4 -3
- Added CRYPTO_FLAG_MASK.
-
- include/ntp.h
- 1.50.1.18 02/07/12 21:14:59 stenn@whimsy.udel.edu +1 -1
- Moved unreachable count and changed it from a u_char to a u_int.
-
-ChangeSet
- 1.683.4.102 02/07/11 20:46:19 stenn@whimsy.udel.edu +1 -0
- Reserve refclock 44 for Claas Hilbrecht.
-
- README.refclocks
- 1.2 02/07/11 20:46:09 stenn@whimsy.udel.edu +1 -0
- Reserve refclock 44 for Claas Hilbrecht.
-
-ChangeSet
- 1.856 02/07/11 20:09:17 stenn@whimsy.udel.edu +5 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_refclock.c
- 1.46 02/07/11 20:09:14 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_proto.c
- 1.122 02/07/11 20:09:14 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.48 02/07/11 20:09:13 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_crypto.c
- 1.67 02/07/11 20:09:13 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntpd.h
- 1.46 02/07/11 20:09:12 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.49 02/07/11 20:04:02 stenn@whimsy.udel.edu +5 -0
- peer_clear() changes from Dave Mills.
-
- ntpd/ntp_refclock.c
- 1.40.2.1 02/07/11 20:03:50 stenn@whimsy.udel.edu +1 -1
- peer_clear() changes.
-
- ntpd/ntp_proto.c
- 1.99.1.20 02/07/11 20:03:50 stenn@whimsy.udel.edu +12 -28
- peer_clear() changes.
-
- ntpd/ntp_peer.c
- 1.32.2.6 02/07/11 20:03:50 stenn@whimsy.udel.edu +12 -5
- peer_clear() now uses a 2nd arg ("why").
-
- ntpd/ntp_crypto.c
- 1.48.1.16 02/07/11 20:03:49 stenn@whimsy.udel.edu +3 -4
- Comment cleanup.
- Lose keysdir again.
-
- include/ntpd.h
- 1.31.2.5 02/07/11 20:03:49 stenn@whimsy.udel.edu +1 -1
- peer-clear() now takes 2 args.
-
-ChangeSet
- 1.855 02/07/11 19:44:20 stenn@whimsy.udel.edu +4 -0
- John Hay's refid changes.
-
- ntpd/refclock_atom.c
- 1.39 02/07/11 19:44:09 stenn@whimsy.udel.edu +1 -1
- John Hay's refid changes.
-
- ntpd/ntp_proto.c
- 1.121 02/07/11 19:44:09 stenn@whimsy.udel.edu +14 -12
- John Hay's refid changes.
-
- ntpd/ntp_io.c
- 1.34 02/07/11 19:44:08 stenn@whimsy.udel.edu +43 -0
- John Hay's refid changes.
-
- include/ntpd.h
- 1.45 02/07/11 19:44:08 stenn@whimsy.udel.edu +1 -1
- John Hay's refid changes.
-
-ChangeSet
- 1.854 02/07/11 15:04:44 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- Makefile.am
- 1.29 02/07/11 15:04:42 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.48 02/07/11 15:01:19 stenn@whimsy.udel.edu +1 -0
- Merge
-
- Makefile.am
- 1.16.1.12 02/07/11 15:01:18 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
-ChangeSet
- 1.683.4.101 02/07/11 14:56:18 stenn@whimsy.udel.edu +2 -0
- README.refclocks.
-
- README.refclocks
- 1.1 02/07/11 14:56:08 stenn@whimsy.udel.edu +49 -0
-
- README.refclocks
- 1.0 02/07/11 14:56:08 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/README.refclocks
-
- Makefile.am
- 1.12.1.14 02/07/11 14:56:08 stenn@whimsy.udel.edu +1 -0
- Added README.refclocks.
-
-ChangeSet
- 1.853 02/07/11 12:51:53 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_proto.c
- 1.120 02/07/11 12:51:51 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.47 02/07/11 12:51:50 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.47 02/07/11 12:47:13 stenn@whimsy.udel.edu +2 -0
- Cleanup and fixes from Dave.
-
- ntpd/ntp_proto.c
- 1.99.1.19 02/07/11 12:47:01 stenn@whimsy.udel.edu +6 -3
- Bugfixes from Dave.
-
- ntpd/ntp_peer.c
- 1.32.2.5 02/07/11 12:47:01 stenn@whimsy.udel.edu +4 -1
- Peer cleanup from Dave.
-
-ChangeSet
- 1.706.10.46 02/07/10 15:39:51 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_jjy.c
- 1.10 02/07/10 15:39:50 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.100 02/07/10 15:36:34 stenn@whimsy.udel.edu +1 -0
- Bug report and initial patch from Norikatsu Shigemura <nork@freebsd.org>.
- Actual (more portable) patch from Akinori MUSHA <knu@idaemons.org>.
-
-
- ntpd/refclock_jjy.c
- 1.2.2.2 02/07/10 15:36:24 stenn@whimsy.udel.edu +1 -1
- Bug report and initial patch from Norikatsu Shigemura <nork@freebsd.org>.
- Actual (more portable) patch from Akinori MUSHA <knu@idaemons.org>.
-
-
-ChangeSet
- 1.851 02/07/10 13:16:35 stenn@whimsy.udel.edu +2 -0
- Fixes from John Hay.
-
- ntpd/ntp_refclock.c
- 1.45 02/07/10 13:16:24 stenn@whimsy.udel.edu +1 -8
- Fixes from John Hay.
-
- libntp/decodenetnum.c
- 1.4 02/07/10 13:16:24 stenn@whimsy.udel.edu +1 -1
- Fixes from John Hay.
-
-ChangeSet
- 1.850 02/07/10 00:48:28 stenn@whimsy.udel.edu +1 -0
- Cleanup from John Hay.
-
- ntpd/ntp_crypto.c
- 1.66 02/07/10 00:48:21 stenn@whimsy.udel.edu +15 -8
- Cleanup from John Hay.
-
-ChangeSet
- 1.849 02/07/09 22:20:32 stenn@whimsy.udel.edu +1 -0
- Merge
-
- ntpd/ntp_config.c
- 1.70 02/07/09 22:20:31 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
-ChangeSet
- 1.706.10.45 02/07/09 22:06:17 stenn@whimsy.udel.edu +1 -0
- Cleanup from Dave.
-
- ntpd/ntp_config.c
- 1.52.3.4 02/07/09 22:06:06 stenn@whimsy.udel.edu +0 -19
- Cleanup from Dave.
-
-ChangeSet
- 1.848 02/07/09 19:13:34 stenn@whimsy.udel.edu +3 -0
- Cleanup from John Hay.
-
- ntpd/ntp_proto.c
- 1.119 02/07/09 19:13:25 stenn@whimsy.udel.edu +11 -3
- Cleanup from John Hay.
-
- ntpd/ntp_crypto.c
- 1.65 02/07/09 19:13:25 stenn@whimsy.udel.edu +0 -17
- Cleanup from John Hay.
-
- ntpd/ntp_config.c
- 1.69 02/07/09 19:13:25 stenn@whimsy.udel.edu +0 -6
- Cleanup from John Hay.
-
-ChangeSet
- 1.847 02/07/08 21:47:34 stenn@whimsy.udel.edu +1 -0
- Dave fixed a typo.
-
- ntpd/ntp_crypto.c
- 1.64 02/07/08 21:47:23 stenn@whimsy.udel.edu +1 -1
- Dave fixed a typo.
-
-ChangeSet
- 1.846 02/07/08 19:59:06 stenn@whimsy.udel.edu +11 -0
- Attempt to resolve recent changes from Dave.
-
- ntpd/ntp_request.c
- 1.36 02/07/08 19:58:54 stenn@whimsy.udel.edu +0 -2
- Attempt to resolve recent changes from Dave.
-
- ntpd/ntp_proto.c
- 1.118 02/07/08 19:58:54 stenn@whimsy.udel.edu +1 -3
- Attempt to resolve recent changes from Dave.
-
- ntpd/ntp_crypto.c
- 1.63 02/07/08 19:58:53 stenn@whimsy.udel.edu +17 -1
- Attempt to resolve recent changes from Dave.
-
- libntp/netof.c
- 1.6 02/07/08 19:58:53 stenn@whimsy.udel.edu +12 -11
- Attempt to resolve recent changes from Dave.
-
- ntpdc/ntpdc_ops.c
- 1.18 02/07/08 19:42:51 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_restrict.c
- 1.9 02/07/08 19:42:51 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.46 02/07/08 19:42:50 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.68 02/07/08 19:42:49 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntpd.h
- 1.44 02/07/08 19:42:48 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_request.h
- 1.18 02/07/08 19:42:48 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.67 02/07/08 19:42:48 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.44 02/07/08 19:38:20 stenn@whimsy.udel.edu +17 -0
- Cleanup from Dave.
-
- util/ntp-keygen.c
- 1.12 02/07/08 19:38:13 stenn@whimsy.udel.edu +17 -18
- Cleanup from Dave.
-
- ntpdc/ntpdc_ops.c
- 1.12.1.3 02/07/08 19:38:13 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave.
-
- ntpd/ntpsim.c
- 1.4 02/07/08 19:38:13 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave.
-
- ntpd/ntpd.c
- 1.38.1.2 02/07/08 19:38:13 stenn@whimsy.udel.edu +0 -4
- Cleanup from Dave.
-
- ntpd/ntp_timer.c
- 1.22 02/07/08 19:38:13 stenn@whimsy.udel.edu +1 -4
- Cleanup from Dave.
-
- ntpd/ntp_restrict.c
- 1.3.1.2 02/07/08 19:38:13 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave.
-
- ntpd/ntp_request.c
- 1.24.2.1 02/07/08 19:38:12 stenn@whimsy.udel.edu +6 -5
- Cleanup from Dave.
-
- ntpd/ntp_proto.c
- 1.99.1.18 02/07/08 19:38:12 stenn@whimsy.udel.edu +241 -211
- Cleanup from Dave.
-
- ntpd/ntp_peer.c
- 1.32.2.4 02/07/08 19:38:12 stenn@whimsy.udel.edu +3 -2
- Cleanup from Dave.
-
- ntpd/ntp_crypto.c
- 1.48.1.15 02/07/08 19:38:11 stenn@whimsy.udel.edu +18 -28
- Cleanup from Dave.
-
- ntpd/ntp_config.c
- 1.52.3.3 02/07/08 19:38:11 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave.
-
- libntp/netof.c
- 1.1.1.2 02/07/08 19:38:11 stenn@whimsy.udel.edu +5 -2
- Cleanup from Dave.
-
- libntp/authkeys.c
- 1.10 02/07/08 19:38:11 stenn@whimsy.udel.edu +1 -0
- Cleanup from Dave.
-
- include/ntpd.h
- 1.31.2.4 02/07/08 19:38:11 stenn@whimsy.udel.edu +8 -10
- Cleanup from Dave.
-
- include/ntp_request.h
- 1.10.1.4 02/07/08 19:38:11 stenn@whimsy.udel.edu +0 -4
- Cleanup from Dave.
-
- include/ntp_crypto.h
- 1.28 02/07/08 19:38:11 stenn@whimsy.udel.edu +62 -3
- Cleanup from Dave.
-
- include/ntp.h
- 1.50.1.17 02/07/08 19:38:10 stenn@whimsy.udel.edu +45 -92
- Cleanup from Dave.
-
-ChangeSet
- 1.845 02/07/04 02:43:41 stenn@whimsy.udel.edu +3 -0
- Cleanup from John Hay.
-
- ntpd/ntp_proto.c
- 1.117 02/07/04 02:43:36 stenn@whimsy.udel.edu +18 -3
- Cleanup from John Hay.
-
- ntpd/ntp_crypto.c
- 1.62 02/07/04 02:43:36 stenn@whimsy.udel.edu +9 -3
- Cleanup from John Hay.
-
- include/ntpd.h
- 1.43 02/07/04 02:43:36 stenn@whimsy.udel.edu +1 -1
- Cleanup from John Hay.
-
-ChangeSet
- 1.844 02/07/02 03:30:40 stenn@whimsy.udel.edu +5 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_proto.c
- 1.116 02/07/02 03:30:37 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.45 02/07/02 03:30:37 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_crypto.c
- 1.61 02/07/02 03:30:36 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.67 02/07/02 03:30:36 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.66 02/07/02 03:30:35 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.43 02/07/02 03:21:03 stenn@whimsy.udel.edu +6 -0
- Crypto cleanup from Dave.
- keysdir fixes from John Hay.
-
- ntpd/ntp_proto.c
- 1.99.1.17 02/07/02 03:20:59 stenn@whimsy.udel.edu +202 -267
- Cleanup from Dave.
-
- ntpd/ntp_peer.c
- 1.32.2.3 02/07/02 03:20:59 stenn@whimsy.udel.edu +5 -1
- Cleanup from Dave.
-
- ntpd/ntp_crypto.c
- 1.48.1.14 02/07/02 03:20:58 stenn@whimsy.udel.edu +6 -7
- Keysdir fixes from John Hay.
- Cleanup from Dave.
-
- ntpd/ntp_config.c
- 1.52.3.2 02/07/02 03:20:58 stenn@whimsy.udel.edu +1 -1
- keysdir fixes from John Hay.
-
- include/ntp_crypto.h
- 1.27 02/07/02 03:20:58 stenn@whimsy.udel.edu +1 -0
- keysdir fixes from John Hay.
-
- include/ntp.h
- 1.50.1.16 02/07/02 03:20:58 stenn@whimsy.udel.edu +0 -7
- Cleanup from Dave.
-
-ChangeSet
- 1.843 02/06/30 02:39:58 stenn@whimsy.udel.edu +8 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpdc/ntpdc_ops.c
- 1.17 02/06/30 02:39:56 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_proto.c
- 1.115 02/06/30 02:39:56 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_crypto.c
- 1.60 02/06/30 02:39:55 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_control.c
- 1.53 02/06/30 02:39:54 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_control.h
- 1.21 02/06/30 02:39:54 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.65 02/06/30 02:39:54 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.266 02/06/30 02:39:53 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/ignore
- 1.19 02/06/30 02:39:45 stenn@whimsy.udel.edu +1 -1
- auto-union
-
-ChangeSet
- 1.706.10.42 02/06/30 02:37:12 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.226.1.48 02/06/30 02:37:10 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.99 02/06/30 02:34:52 stenn@whimsy.udel.edu +1 -0
- Default the RIPE NCC refclock to off for now - it uses the return
- value of sprintf.
-
- configure.in
- 1.219.3.24 02/06/30 02:34:49 stenn@whimsy.udel.edu +3 -2
- Default the RIPE NCC refclock to off for now - it uses the return
- value of sprintf.
-
-ChangeSet
- 1.706.10.41 02/06/30 02:29:14 stenn@whimsy.udel.edu +7 -0
- Cleanup from Dave.
-
- ntpd/ntp_proto.c
- 1.99.1.16 02/06/30 02:29:10 stenn@whimsy.udel.edu +32 -28
- Cleanup from Dave.
-
- ntpd/ntp_crypto.c
- 1.48.1.13 02/06/30 02:29:10 stenn@whimsy.udel.edu +2 -0
- Cleanup from Dave.
-
- BitKeeper/etc/ignore
- 1.14.1.4 02/06/30 02:29:10 stenn@whimsy.udel.edu +1 -0
- Added compile to the ignore list
-
- ntpd/ntp_control.c
- 1.39.2.5 02/06/30 02:29:09 stenn@whimsy.udel.edu +5 -13
- Cleanup from Dave.
-
- include/ntp_crypto.h
- 1.26 02/06/30 02:29:09 stenn@whimsy.udel.edu +2 -2
- Cleanup from Dave.
-
- include/ntp_control.h
- 1.15.1.5 02/06/30 02:29:09 stenn@whimsy.udel.edu +4 -5
- Cleanup from Dave.
-
- include/ntp.h
- 1.50.1.15 02/06/30 02:29:09 stenn@whimsy.udel.edu +6 -0
- KOD codes from Dave.
-
-ChangeSet
- 1.706.10.40 02/06/29 03:54:20 stenn@whimsy.udel.edu +6 -0
- Fix the check_y2k linking.
- Cleanup from Dave.
-
- ntpdc/ntpdc_ops.c
- 1.12.1.2 02/06/29 03:54:17 stenn@whimsy.udel.edu +1 -0
- Cleanup from Dave.
-
- ntpd/ntp_proto.c
- 1.99.1.15 02/06/29 03:54:17 stenn@whimsy.udel.edu +44 -23
- Cleanup from Dave.
-
- ntpd/ntp_crypto.c
- 1.48.1.12 02/06/29 03:54:16 stenn@whimsy.udel.edu +57 -50
- Cleanup from Dave.
-
- ntpd/ntp_control.c
- 1.39.2.4 02/06/29 03:54:16 stenn@whimsy.udel.edu +1 -1
- Cleanup from Dave.
-
- ntpd/Makefile.am
- 1.32 02/06/29 03:54:16 stenn@whimsy.udel.edu +3 -2
- Fix the check_y2k linking.
-
- include/ntp.h
- 1.50.1.14 02/06/29 03:54:16 stenn@whimsy.udel.edu +2 -1
- Cleanup from Dave.
-
-ChangeSet
- 1.842 02/06/29 02:53:48 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.265 02/06/29 02:53:45 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.39 02/06/29 02:51:06 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.226.1.47 02/06/29 02:51:04 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.98 02/06/28 19:11:23 stenn@whimsy.udel.edu +1 -0
- Only build the RIPE NCC driver if we have the PPSAPI.
-
- configure.in
- 1.219.3.23 02/06/28 19:11:20 stenn@whimsy.udel.edu +7 -2
- Only build the RIPE NCC driver if we have the PPSAPI.
-
-ChangeSet
- 1.706.10.38 02/06/28 02:32:32 stenn@whimsy.udel.edu +1 -0
- ntp-4.2 uses nsec, not msec.
-
- ntpd/refclock_ripencc.c
- 1.2 02/06/28 02:32:29 stenn@whimsy.udel.edu +2 -2
- ntp-4.2 uses nsec, not msec.
-
-ChangeSet
- 1.840 02/06/28 02:16:01 stenn@whimsy.udel.edu +5 -0
- ipV6 merge cleanup.
-
- ntpd/ntp_control.c
- 1.52 02/06/28 02:15:58 stenn@whimsy.udel.edu +2 -3
- merge cleanup
-
- include/ntp.h
- 1.64 02/06/28 02:15:58 stenn@whimsy.udel.edu +0 -1
- Merge cleanup.
-
- ntpd/ntp_proto.c
- 1.114 02/06/28 02:11:05 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_crypto.c
- 1.59 02/06/28 02:11:04 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.264 02/06/28 02:11:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.37 02/06/28 02:07:47 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- html/driver42.htm
- 1.4 02/06/28 02:07:45 stenn@whimsy.udel.edu +0 -40
- Auto merged
-
-ChangeSet
- 1.683.4.97 02/06/28 02:05:22 stenn@whimsy.udel.edu +1 -0
- MFC the version from ntp-dev.
-
- html/driver42.htm
- 1.1.1.3 02/06/28 02:05:19 stenn@whimsy.udel.edu +40 -38
- MFC the version from ntp-dev.
-
-ChangeSet
- 1.683.4.96 02/06/28 01:59:12 stenn@whimsy.udel.edu +1 -0
- Typo.
-
- html/driver42.htm
- 1.1.1.2 02/06/28 01:56:56 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver.htm -> html/driver42.htm
-
-ChangeSet
- 1.683.4.95 02/06/28 01:50:11 stenn@whimsy.udel.edu +2 -0
- rename .htm files for consistency.
-
- html/driver43.htm
- 1.2 02/06/28 01:47:33 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver43.html -> html/driver43.htm
-
- html/driver.htm
- 1.1.1.1 02/06/28 01:46:32 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver42.html -> html/driver.htm
-
-ChangeSet
- 1.706.10.36 02/06/28 01:42:08 stenn@whimsy.udel.edu +6 -0
- merge cleanup
-
- libntp/clocktypes.c
- 1.14 02/06/28 01:42:06 stenn@whimsy.udel.edu +3 -3
- merge cleanup
-
- ntpd/refclock_conf.c
- 1.20 02/06/28 01:39:08 stenn@whimsy.udel.edu +8 -9
- Auto merged
-
- ntpd/ntp_control.c
- 1.39.2.3 02/06/28 01:39:08 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/Makefile.am
- 1.31 02/06/28 01:39:07 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.50.1.13 02/06/28 01:39:07 stenn@whimsy.udel.edu +2 -3
- Auto merged
-
- configure.in
- 1.226.1.46 02/06/28 01:39:06 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.35 02/06/28 01:35:26 stenn@whimsy.udel.edu +3 -0
- Cleanup from Dave.
-
- ntpd/ntp_proto.c
- 1.99.1.14 02/06/28 01:35:23 stenn@whimsy.udel.edu +64 -48
- Cleanup from Dave.
-
- ntpd/ntp_crypto.c
- 1.48.1.11 02/06/28 01:35:22 stenn@whimsy.udel.edu +1 -13
- Cleanup from Dave.
-
- ntpd/ntp_control.c
- 1.39.2.2 02/06/28 01:35:22 stenn@whimsy.udel.edu +10 -9
- Cleanup from Dave.
-
-ChangeSet
- 1.683.4.94 02/06/28 01:25:19 stenn@whimsy.udel.edu +10 -0
- Added RIPE NCC trimble driver
- From: Mark Santcroos <marks@ripe.net>
-
- ntpd/refclock_ripencc.c
- 1.1 02/06/28 01:25:15 stenn@whimsy.udel.edu +4872 -0
-
- html/driver43_2.jpg
- 1.1 02/06/28 01:25:15 stenn@whimsy.udel.edu +148 -0
-
- html/driver43_1.gif
- 1.1 02/06/28 01:25:15 stenn@whimsy.udel.edu +864 -0
-
- html/driver43.html
- 1.1 02/06/28 01:25:15 stenn@whimsy.udel.edu +109 -0
-
- ntpd/refclock_ripencc.c
- 1.0 02/06/28 01:25:15 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/ntpd/refclock_ripencc.c
-
- ntpd/refclock_conf.c
- 1.13.1.5 02/06/28 01:25:15 stenn@whimsy.udel.edu +8 -1
- Added RIPE NCC trimble driver
- From: Mark Santcroos <marks@ripe.net>
-
- ntpd/ntp_control.c
- 1.37.3.5 02/06/28 01:25:15 stenn@whimsy.udel.edu +1 -0
- Added RIPE NCC trimble driver
- From: Mark Santcroos <marks@ripe.net>
-
- ntpd/Makefile.am
- 1.18.2.7 02/06/28 01:25:15 stenn@whimsy.udel.edu +1 -1
- Added RIPE NCC trimble driver
- From: Mark Santcroos <marks@ripe.net>
-
- libntp/clocktypes.c
- 1.7.1.5 02/06/28 01:25:15 stenn@whimsy.udel.edu +2 -0
- Added RIPE NCC trimble driver
- From: Mark Santcroos <marks@ripe.net>
-
- html/driver43_2.jpg
- 1.0 02/06/28 01:25:15 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/html/driver43_2.jpg
-
- html/driver43_1.gif
- 1.0 02/06/28 01:25:15 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/html/driver43_1.gif
-
- html/driver43.html
- 1.0 02/06/28 01:25:15 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/html/driver43.html
-
- include/ntp.h
- 1.47.3.5 02/06/28 01:25:14 stenn@whimsy.udel.edu +2 -1
- Added RIPE NCC trimble driver
- From: Mark Santcroos <marks@ripe.net>
-
- configure.in
- 1.219.3.22 02/06/28 01:25:14 stenn@whimsy.udel.edu +10 -0
- Added RIPE NCC trimble driver
- From: Mark Santcroos <marks@ripe.net>
-
-ChangeSet
- 1.839 02/06/28 00:10:34 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.263 02/06/28 00:10:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.34 02/06/28 00:04:58 stenn@whimsy.udel.edu +2 -0
- BUild ntp-keygen iff we have the crypto stuff.
-
- util/Makefile.am
- 1.19 02/06/28 00:04:55 stenn@whimsy.udel.edu +3 -3
- BUild ntp-keygen iff we have the crypto stuff.
-
- configure.in
- 1.226.1.45 02/06/28 00:04:55 stenn@whimsy.udel.edu +2 -1
- BUild ntp-keygen iff we have the crypto stuff.
-
-ChangeSet
- 1.838 02/06/27 19:32:04 stenn@whimsy.udel.edu +3 -0
- ipV6 merge resolution
-
- ntpd/ntp_proto.c
- 1.113 02/06/27 19:32:02 stenn@whimsy.udel.edu +1 -1
- ipV6 merge resolution
-
- ntpd/ntp_crypto.c
- 1.58 02/06/27 19:28:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntpd.h
- 1.42 02/06/27 19:28:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.33 02/06/27 19:25:13 stenn@whimsy.udel.edu +3 -0
- Crypto cleanup from Dave.
-
- ntpd/ntp_proto.c
- 1.99.1.13 02/06/27 19:25:10 stenn@whimsy.udel.edu +108 -78
- Crypto cleanup from Dave.
-
- ntpd/ntp_crypto.c
- 1.48.1.10 02/06/27 19:25:09 stenn@whimsy.udel.edu +169 -163
- Crypto cleanup from Dave.
-
- include/ntpd.h
- 1.31.2.3 02/06/27 19:25:09 stenn@whimsy.udel.edu +1 -2
- Crypto cleanup from Dave.
-
-ChangeSet
- 1.706.10.32 02/06/27 04:40:17 stenn@whimsy.udel.edu +1 -0
- LIBPARSE cleanup re libntpd.a convenience library.
-
- ntpd/Makefile.am
- 1.30 02/06/27 04:40:14 stenn@whimsy.udel.edu +3 -2
- LIBPARSE cleanup re libntpd.a convenience library.
-
-ChangeSet
- 1.837 02/06/26 03:26:51 stenn@whimsy.udel.edu +9 -0
- I hope I did this right... Deal with the ipV6 merge.
-
- ntpd/ntp_proto.c
- 1.112 02/06/26 03:26:48 stenn@whimsy.udel.edu +0 -3
- I hope I did this right... Deal with the ipV6 merge.
-
- util/ntp-genkeys.c
- 1.75 02/06/26 03:22:46 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.44 02/06/26 03:22:46 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_crypto.c
- 1.57 02/06/26 03:22:45 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_control.c
- 1.51 02/06/26 03:22:45 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.66 02/06/26 03:22:44 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/recvbuff.h
- 1.5 02/06/26 03:22:44 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntpd.h
- 1.41 02/06/26 03:22:43 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.63 02/06/26 03:22:43 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.31 02/06/26 03:18:13 stenn@whimsy.udel.edu +15 -0
- Crypto cleanup (and a few others) from Dave.
- Deprecate ntp-genkeys and update the all-new ntp-keygen.
-
- util/ntp-keygen.c
- 1.11 02/06/26 03:18:09 stenn@whimsy.udel.edu +961 -381
- Massive changes from Dave.
-
- util/ntp-genkeys.c
- 1.73.1.1 02/06/26 03:18:09 stenn@whimsy.udel.edu +1 -2
- keysdir cleanup from Dave.
-
- util/Makefile.am
- 1.18 02/06/26 03:18:09 stenn@whimsy.udel.edu +4 -8
- Deprecate ntp-genkeys, install ntp-keygen.
-
- ntpd/refclock_irig.c
- 1.15 02/06/26 03:18:09 stenn@whimsy.udel.edu +21 -23
- Cleanup from Dave.
-
- ntpd/ntp_proto.c
- 1.99.1.12 02/06/26 03:18:08 stenn@whimsy.udel.edu +294 -126
- Crypto cleanup from Dave
-
- ntpd/ntp_peer.c
- 1.32.2.2 02/06/26 03:18:08 stenn@whimsy.udel.edu +2 -2
- Crypto cleanup from Dave
-
- ntpd/ntp_crypto.c
- 1.48.1.9 02/06/26 03:18:08 stenn@whimsy.udel.edu +1362 -312
- Crypto cleanup from Dave
-
- ntpd/ntp_control.c
- 1.39.2.1 02/06/26 03:18:08 stenn@whimsy.udel.edu +2 -2
- Crypto cleanup from Dave
-
- ntpd/ntp_config.c
- 1.52.3.1 02/06/26 03:18:07 stenn@whimsy.udel.edu +34 -43
- Crypto cleanup from Dave
-
- libntp/statestr.c
- 1.7 02/06/26 03:18:07 stenn@whimsy.udel.edu +2 -1
- Crypto cleanup from Dave
-
- include/recvbuff.h
- 1.1.1.2 02/06/26 03:18:07 stenn@whimsy.udel.edu +4 -4
- Crypto cleanup from Dave
-
- include/ntpd.h
- 1.31.2.2 02/06/26 03:18:07 stenn@whimsy.udel.edu +2 -1
- Crypto cleanup from Dave
-
- include/ntp_crypto.h
- 1.25 02/06/26 03:18:07 stenn@whimsy.udel.edu +23 -13
- Crypto cleanup from Dave
-
- include/ntp_config.h
- 1.18 02/06/26 03:18:07 stenn@whimsy.udel.edu +6 -7
- Crypto cleanup from Dave
-
- include/ntp.h
- 1.50.1.12 02/06/26 03:18:07 stenn@whimsy.udel.edu +8 -2
- Crypto cleanup from Dave
-
- util/ntp-keygen.c
- 1.10 02/06/26 03:01:12 stenn@whimsy.udel.edu +0 -0
- Rename: util/genkeys.c -> util/ntp-keygen.c
-
-ChangeSet
- 1.836 02/06/25 04:17:28 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- README.bk
- 1.12 02/06/25 04:17:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.30 02/06/25 04:15:14 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- README.bk
- 1.7.1.4 02/06/25 04:15:12 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.93 02/06/25 04:12:29 stenn@whimsy.udel.edu +1 -0
- Update auto* tool verison requirements.
-
- README.bk
- 1.1.1.14 02/06/25 04:12:27 stenn@whimsy.udel.edu +2 -2
- Update auto* tool verison requirements.
-
-ChangeSet
- 1.706.10.29 02/06/25 01:24:52 stenn@whimsy.udel.edu +1 -0
- libntpd needs to come before libparse.
-
- ntpd/Makefile.am
- 1.29 02/06/25 01:24:48 stenn@whimsy.udel.edu +1 -1
- libntpd needs to come before libparse.
-
-ChangeSet
- 1.834 02/06/10 03:56:27 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.262 02/06/10 03:56:24 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.28 02/06/10 03:49:57 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.226.1.44 02/06/10 03:49:54 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-strstr.c
- 1.3 02/06/10 03:49:53 stenn@whimsy.udel.edu +0 -0
- Delete: libntp/strstr.c
-
-ChangeSet
- 1.683.4.92 02/06/10 03:46:37 stenn@whimsy.udel.edu +2 -0
- Bit-o-cleanup.
-
- libntp/strstr.c
- 1.1 02/06/10 03:46:35 stenn@whimsy.udel.edu +52 -0
-
- libntp/strstr.c
- 1.0 02/06/10 03:46:35 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/libntp/strstr.c
-
- configure.in
- 1.219.3.21 02/06/10 03:46:35 stenn@whimsy.udel.edu +1 -1
-
-
-ChangeSet
- 1.833 02/06/04 02:59:49 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.261 02/06/04 02:59:47 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.27 02/06/04 02:53:04 stenn@whimsy.udel.edu +1 -0
- Recover from the big merge.
-
- configure.in
- 1.226.1.43 02/06/04 02:53:01 stenn@whimsy.udel.edu +0 -39
- Recover from the big merge.
-
-ChangeSet
- 1.706.10.26 02/06/04 02:45:36 stenn@whimsy.udel.edu +1 -0
- Don't ask...
-
- configure.in
- 1.226.1.42 02/06/04 02:45:33 stenn@whimsy.udel.edu +35 -332
- Don't ask...
-
-ChangeSet
- 1.683.4.91 02/06/04 01:58:40 stenn@whimsy.udel.edu +1 -0
- Upgrade configure.in to the same technology used in ntp-dev.
- Do the cross-compile stuff better.
- Order some of the refclocks better.
- Brought in some stuff from ntp-dev that we don't need, but it
- will make future merges easier.
-
- configure.in
- 1.219.3.20 02/06/04 01:58:37 stenn@whimsy.udel.edu +350 -268
- Upgrade configure.in to the same technology used in ntp-dev.
- Do the cross-compile stuff better.
- Order some of the refclocks better.
- Brought in some stuff from ntp-dev that we don't need, but it
- will make future merges easier.
-
-ChangeSet
- 1.832 02/06/04 01:25:14 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.260 02/06/04 01:25:12 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.25 02/06/04 01:21:45 stenn@whimsy.udel.edu +1 -0
- Use the new style AC_DEFINE for HAVE_LIBCURSES.
- Reported by John Hay.
-
- configure.in
- 1.226.1.41 02/06/04 01:21:42 stenn@whimsy.udel.edu +1 -1
- Use the new style AC_DEFINE for HAVE_LIBCURSES.
- Reported by John Hay.
-
-ChangeSet
- 1.831 02/05/30 02:56:59 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.259 02/05/30 02:56:56 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.24 02/05/30 02:40:10 stenn@whimsy.udel.edu +1 -0
- Split the AC_CONFIG_FILES() targets into separate lines.
-
- configure.in
- 1.226.1.40 02/05/30 02:40:07 stenn@whimsy.udel.edu +29 -9
- Split the AC_CONFIG_FILES() targets into separate lines.
-
-ChangeSet
- 1.830 02/05/27 21:43:34 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- README.bk
- 1.11 02/05/27 21:43:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.23 02/05/27 21:40:45 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- README.bk
- 1.7.1.3 02/05/27 21:40:43 stenn@whimsy.udel.edu +2 -2
- Auto merged
-
-ChangeSet
- 1.683.4.90 02/05/27 21:38:29 stenn@whimsy.udel.edu +1 -0
- Note that ntp.bk{server,bits}.net are being upgraded.
-
- README.bk
- 1.1.1.13 02/05/27 21:38:27 stenn@whimsy.udel.edu +10 -0
- Note that ntp.bk{server,bits}.net are being upgraded.
-
-ChangeSet
- 1.683.4.89 02/05/27 00:22:05 stenn@whimsy.udel.edu +1 -0
- Renamed the email list for commit log messages from cvs-all to commitlogs.
-
- BitKeeper/triggers/delta-changelog
- 1.5 02/05/27 00:22:03 stenn@whimsy.udel.edu +1 -1
- Renamed the email list for commit log messages from cvs-all to commitlogs.
-
-ChangeSet
- 1.828 02/05/24 23:44:37 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.258 02/05/24 23:44:35 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.21 02/05/24 23:38:04 stenn@whimsy.udel.edu +1 -0
- AUtomerge cleanup.
-
- configure.in
- 1.226.1.39 02/05/24 23:38:02 stenn@whimsy.udel.edu +1 -1
- Clean up the automerge.
-
-ChangeSet
- 1.683.4.88 02/05/24 23:17:59 stenn@whimsy.udel.edu +1 -0
- AmigoOS changes, -lreadline improvements.
-
- configure.in
- 1.219.3.19 02/05/24 23:17:56 stenn@whimsy.udel.edu +12 -1
- Add flags for amigaos from a request by Philippe Bourdin.
-
- Improve the -lreadline checks.
-
-ChangeSet
- 1.827 02/05/24 03:21:34 stenn@whimsy.udel.edu +3 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_crypto.c
- 1.56 02/05/24 03:21:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntpd.h
- 1.40 02/05/24 03:21:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.257 02/05/24 03:21:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.20 02/05/24 03:15:06 stenn@whimsy.udel.edu +3 -0
- Changes from Dave Mills.
-
- util/genkeys.c
- 1.9 02/05/24 03:15:02 stenn@whimsy.udel.edu +274 -12
- Many changes.
-
- Harlan will not be porting these to ntp-genkeys.c .
- Is there a volunteer to take over?
-
- ntpd/ntp_crypto.c
- 1.48.1.8 02/05/24 03:15:02 stenn@whimsy.udel.edu +3 -6
- Header reorganization.
-
- include/ntpd.h
- 1.31.2.1 02/05/24 03:15:02 stenn@whimsy.udel.edu +1 -0
- Declare timegm().
-
-ChangeSet
- 1.706.10.19 02/05/24 03:01:03 stenn@whimsy.udel.edu +1 -0
- autoconf cleanup.
-
- configure.in
- 1.226.1.38 02/05/24 03:00:58 stenn@whimsy.udel.edu +5 -43
- I have heard we really need autoconf-2.52; believe it and take
- advantage of its cross-compile-aware AC_CHECK_SIZEOF() macros.
- Think about requiring 2.53 so we can use its c-c-a AC_BIG_ENDIAN
- check.
-
-ChangeSet
- 1.706.10.18 02/05/17 19:03:03 stenn@whimsy.udel.edu +1 -0
- Tidy. Renamed from .html to .htm .
-
- html/driver42.htm
- 1.3 02/05/17 19:03:00 stenn@whimsy.udel.edu +40 -38
- Tidy. Renamed from .html to .htm .
-
- html/driver42.htm
- 1.2 02/05/17 18:57:46 stenn@whimsy.udel.edu +0 -0
- Rename: html/driver42.html -> html/driver42.htm
-
-ChangeSet
- 1.706.10.17 02/05/09 02:14:18 stenn@whimsy.udel.edu +7 -0
- Documentation improvements from Dave Mills.
-
- html/monopt.htm
- 1.10 02/05/09 02:14:15 stenn@whimsy.udel.edu +4 -4
- Documentation improvements from Dave Mills.
-
- html/manyopt.htm
- 1.2 02/05/09 02:14:15 stenn@whimsy.udel.edu +48 -19
- Documentation improvements from Dave Mills.
-
- html/index.htm
- 1.14 02/05/09 02:14:15 stenn@whimsy.udel.edu +3 -0
- Documentation improvements from Dave Mills.
-
- html/genkeys.htm
- 1.9 02/05/09 02:14:14 stenn@whimsy.udel.edu +22 -30
- Documentation improvements from Dave Mills.
-
- html/exec.htm
- 1.9 02/05/09 02:14:14 stenn@whimsy.udel.edu +2 -3
- Documentation improvements from Dave Mills.
-
- html/authopt.htm
- 1.17 02/05/09 02:14:14 stenn@whimsy.udel.edu +111 -69
- Documentation improvements from Dave Mills.
-
- html/assoc.htm
- 1.11 02/05/09 02:14:14 stenn@whimsy.udel.edu +35 -39
- Documentation improvements from Dave Mills.
-
-ChangeSet
- 1.825 02/05/04 03:11:51 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_crypto.c
- 1.55 02/05/04 03:11:49 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.256 02/05/04 03:11:48 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.16 02/05/04 03:08:37 stenn@whimsy.udel.edu +3 -0
- timegm() patch from John Hay <jhay@icomtek.csir.co.za>.
-
- ntpd/ntp_crypto.c
- 1.48.1.7 02/05/04 03:08:34 stenn@whimsy.udel.edu +1 -1
- Use timegm() to get the timestamp, not mktime().
-
- libntp/mktime.c
- 1.5 02/05/04 03:08:34 stenn@whimsy.udel.edu +35 -8
- timegm() implementation.
-
- configure.in
- 1.226.1.37 02/05/04 03:08:34 stenn@whimsy.udel.edu +2 -1
- Check for timegm().
-
- We should now use AC_CHECK_FUNCS() instead of AC_REPLACE_FUNCS()
- for mktime() and timegm().
-
-ChangeSet
- 1.706.10.15 02/05/02 01:29:43 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_local.c
- 1.11 02/05/02 01:29:42 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
-ChangeSet
- 1.683.4.87 02/05/02 01:24:37 stenn@whimsy.udel.edu +1 -0
- Patch from ntp-dev.
-
- ntpd/refclock_local.c
- 1.6.1.2 02/05/02 01:24:34 stenn@whimsy.udel.edu +1 -0
- Patch from ntp-dev.
-
-ChangeSet
- 1.823 02/04/30 23:50:17 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/cmd_args.c
- 1.12 02/04/30 23:50:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.14 02/04/30 21:43:51 stenn@whimsy.udel.edu +4 -0
- Simulator improvements from Harish Nair <hari@udel.edu>.
-
- ntpd/ntpsim.c
- 1.3 02/04/30 21:43:48 stenn@whimsy.udel.edu +29 -17
- Use the new parameters.
-
- ntpd/cmd_args.c
- 1.7.1.3 02/04/30 21:43:48 stenn@whimsy.udel.edu +38 -10
- New options.
-
- include/ntpsim.h
- 1.3 02/04/30 21:43:48 stenn@whimsy.udel.edu +7 -2
- Add more parameters.
-
- README.simulator
- 1.2 02/04/30 21:43:48 stenn@whimsy.udel.edu +15 -28
- Update the docs.
-
-ChangeSet
- 1.706.10.13 02/04/30 21:32:55 stenn@whimsy.udel.edu +1 -0
- Update the peer->stratum.
- Bugfix from Dave Mills.
-
- ntpd/refclock_local.c
- 1.10 02/04/30 21:32:52 stenn@whimsy.udel.edu +1 -0
- Update the peer->stratum.
- Bugfix from Dave Mills.
-
-ChangeSet
- 1.822 02/04/28 18:04:14 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.255 02/04/28 18:04:11 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.12 02/04/28 18:00:57 stenn@whimsy.udel.edu +3 -0
- Bump version number.
-
- configure.in
- 1.226.1.36 02/04/28 18:00:54 stenn@whimsy.udel.edu +1 -1
- Bump the version to 4.1.72b.
-
- build
- 1.20 02/04/28 18:00:54 stenn@whimsy.udel.edu +3 -0
- If we detect the wrong build directory, show some debug info.
-
- br-flock
- 1.2 02/04/28 18:00:54 stenn@whimsy.udel.edu +1 -1
- Add arlib and simulator to the default br-flock build.
-
-ChangeSet
- 1.706.10.11 02/04/28 17:36:59 stenn@whimsy.udel.edu +1 -0
- Include ntpsim.h in the distribution.
- Reported by Harish Nair <hari@UDel.Edu>.
-
- include/Makefile.am
- 1.13 02/04/28 17:36:56 stenn@whimsy.udel.edu +1 -0
- Include ntpsim.h in the distribution.
- Reported by Harish Nair <hari@UDel.Edu>.
-
-ChangeSet
- 1.821 02/04/25 17:41:12 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_proto.c
- 1.111 02/04/25 17:41:09 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.10 02/04/25 17:37:10 stenn@whimsy.udel.edu +1 -0
- Fix an evil typo found by Brian Utterback.
-
- ntpd/ntp_proto.c
- 1.99.1.11 02/04/25 17:37:07 stenn@whimsy.udel.edu +1 -1
- Fix an evil typo found by Brian Utterback.
-
-ChangeSet
- 1.706.10.9 02/04/24 02:50:08 stenn@whimsy.udel.edu +1 -0
- pp->[mu]sec are gone now. Use ->nsec instead.
- Reported by Danny Mayer.
-
- ntpd/refclock_hopfpci.c
- 1.5 02/04/24 02:50:03 stenn@whimsy.udel.edu +3 -4
- pp->[mu]sec are gone now. Use ->nsec instead.
-
-ChangeSet
- 1.819 02/04/24 02:00:28 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.254 02/04/24 02:00:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.8 02/04/24 01:58:11 stenn@whimsy.udel.edu +1 -0
- Clean up the HOPF driver tests.
-
- configure.in
- 1.226.1.35 02/04/24 01:58:08 stenn@whimsy.udel.edu +11 -29
- Clean up the HOPF driver tests.
-
-ChangeSet
- 1.706.10.7 02/04/24 01:27:34 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.226.1.34 02/04/24 01:27:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.818 02/04/24 01:23:59 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.253 02/04/24 01:23:56 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.6 02/04/24 01:20:41 stenn@whimsy.udel.edu +1 -0
- Crypto support message cleanup.
-
- configure.in
- 1.226.1.33 02/04/24 01:20:35 stenn@whimsy.udel.edu +1 -1
- Crypto support message cleanup.
-
-ChangeSet
- 1.683.4.86 02/04/24 00:55:13 stenn@whimsy.udel.edu +1 -0
- The HOPF serial and PCI drivers were in the wrong place and
- not being selected.
-
- configure.in
- 1.219.3.18 02/04/24 00:55:10 stenn@whimsy.udel.edu +18 -18
- The HOPF serial and PCI drivers were in the wrong place and
- not being selected.
-
-ChangeSet
- 1.706.10.5 02/04/23 02:55:17 stenn@whimsy.udel.edu +2 -0
- Fix the header problem with the simulator.
-
- ntpd/ntpsim.c
- 1.2 02/04/23 02:55:15 stenn@whimsy.udel.edu +1 -0
- THis is where we need to #include "ntpd.h".
-
- include/ntpsim.h
- 1.2 02/04/23 02:55:14 stenn@whimsy.udel.edu +0 -1
- Lose the include of ntpd.h .
-
-ChangeSet
- 1.816 02/04/22 21:18:16 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/cmd_args.c
- 1.11 02/04/22 21:18:14 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- libntp/Makefile.am
- 1.21 02/04/22 21:18:14 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.4 02/04/22 21:15:21 stenn@whimsy.udel.edu +2 -0
- Simulator option fixes.
- libntpsim.a dependency cleanup.
-
- ntpd/cmd_args.c
- 1.7.1.2 02/04/22 21:15:18 stenn@whimsy.udel.edu +23 -2
- ntp simulator option support.
-
- libntp/Makefile.am
- 1.12.1.7 02/04/22 21:15:18 stenn@whimsy.udel.edu +1 -0
- libntpsim.a Makefile dependency cleanup.
-
-ChangeSet
- 1.815 02/04/18 21:25:28 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.252 02/04/18 21:25:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.28 02/04/18 21:25:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.3 02/04/18 21:18:24 stenn@whimsy.udel.edu +2 -0
- We still need to distribute ntptrace/ .
-
- configure.in
- 1.226.1.32 02/04/18 21:18:21 stenn@whimsy.udel.edu +1 -1
- bump to '72a just so we can distingush the latest changes.
-
- Makefile.am
- 1.16.1.11 02/04/18 21:18:21 stenn@whimsy.udel.edu +2 -0
- We still need to distribute the ntptrace subdir.
-
-ChangeSet
- 1.814 02/04/18 03:16:31 stenn@whimsy.udel.edu +6 -0
- IPV6 cleanup of the simulator patches.
-
- ntpd/ntp_proto.c
- 1.110 02/04/18 03:16:27 stenn@whimsy.udel.edu +1 -1
- IPV6 cleanup of the simulator patches.
-
- ntpd/ntp_io.c
- 1.33 02/04/18 03:16:27 stenn@whimsy.udel.edu +1 -1
- IPV6 cleanup of the simulator patches.
-
- libntp/Makefile.am
- 1.20 02/04/18 03:16:27 stenn@whimsy.udel.edu +3 -4
- IPV6 cleanup of the simulator patches.
-
- ntpd/ntp_peer.c
- 1.43 02/04/18 03:08:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.62 02/04/18 03:08:14 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.251 02/04/18 03:08:13 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.2 02/04/18 03:05:43 stenn@whimsy.udel.edu +14 -0
- Simulator auto* changes from Harlan.
- Crypto changes from Dave.
- Simulator code from Harish Nair <hari@udel.edu>.
-
- ntpd/ntpsim.c
- 1.1 02/04/18 03:05:39 stenn@whimsy.udel.edu +278 -0
-
- libntp/systime_s.c
- 1.1 02/04/18 03:05:39 stenn@whimsy.udel.edu +2 -0
-
- include/ntpsim.h
- 1.1 02/04/18 03:05:39 stenn@whimsy.udel.edu +94 -0
-
- README.simulator
- 1.1 02/04/18 03:05:39 stenn@whimsy.udel.edu +32 -0
-
- ntpd/ntpsim.c
- 1.0 02/04/18 03:05:39 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/ntpd/ntpsim.c
-
- ntpd/ntpd.c
- 1.38.1.1 02/04/18 03:05:39 stenn@whimsy.udel.edu +15 -1
- Simulator changes.
-
- libntp/systime_s.c
- 1.0 02/04/18 03:05:39 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/libntp/systime_s.c
-
- include/ntpsim.h
- 1.0 02/04/18 03:05:39 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/include/ntpsim.h
-
- README.simulator
- 1.0 02/04/18 03:05:39 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/README.simulator
-
- ntpd/ntp_proto.c
- 1.99.1.10 02/04/18 03:05:38 stenn@whimsy.udel.edu +53 -44
- More crypto cleanup from Dave.
-
- ntpd/ntp_peer.c
- 1.32.2.1 02/04/18 03:05:38 stenn@whimsy.udel.edu +4 -3
- Looks like more crypto changes from Dave.
-
- ntpd/ntp_io.c
- 1.21.2.1 02/04/18 03:05:38 stenn@whimsy.udel.edu +8 -0
- Simulator changes.
-
- ntpd/Makefile.am
- 1.28 02/04/18 03:05:38 stenn@whimsy.udel.edu +13 -7
- Support for building ntpdsim, the simulator version of ntpd.
-
- libntp/systime.c
- 1.19 02/04/18 03:05:37 stenn@whimsy.udel.edu +208 -0
- Simulator changes.
-
- libntp/Makefile.am
- 1.12.1.6 02/04/18 03:05:37 stenn@whimsy.udel.edu +5 -3
- Also build libntpsim.a for the simulator stuff. I did this in a
- really gross way...
-
- include/ntp_unixtime.h
- 1.4 02/04/18 03:05:37 stenn@whimsy.udel.edu +11 -0
- simulator stuff.
-
- include/ntp.h
- 1.50.1.11 02/04/18 03:05:37 stenn@whimsy.udel.edu +2 -2
- This might have been more crypto cleanup from Dave's previous fix.
-
- configure.in
- 1.226.1.31 02/04/18 03:05:37 stenn@whimsy.udel.edu +14 -0
- auto* the ntp simulator stuff.
-
-ChangeSet
- 1.813 02/04/18 02:18:31 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_crypto.c
- 1.54 02/04/18 02:18:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.10.1 02/04/18 02:14:26 stenn@whimsy.udel.edu +1 -0
- Crypto improvements from Dave.
-
- ntpd/ntp_crypto.c
- 1.48.1.6 02/04/18 02:14:23 stenn@whimsy.udel.edu +9 -10
- Crypto improvements from Dave.
-
-ChangeSet
- 1.706.2.78 02/04/07 00:10:31 mayer@tecotoo.myibg.com +21 -0
- Merge
-
- libntp/a_md5encrypt.c
- 1.9 02/04/07 00:10:09 mayer@tecotoo.myibg.com +0 -0
- SCCS merged
-
- ports/winnt/include/config.h
- 1.13 02/04/06 23:01:37 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpq/ntpq.c
- 1.19.1.2 02/04/06 23:01:33 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpdc/ntpdc.c
- 1.11.1.2 02/04/06 23:01:28 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/refclock_palisade.c
- 1.12 02/04/06 23:01:24 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/refclock_nmea.c
- 1.19 02/04/06 23:01:19 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/refclock_hopfser.c
- 1.5 02/04/06 23:01:15 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/refclock_dumbclock.c
- 1.7 02/04/06 23:01:10 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/ntpd.c
- 1.39 02/04/06 23:01:06 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/ntp_util.c
- 1.15.1.3 02/04/06 23:01:02 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/ntp_request.c
- 1.24.1.7 02/04/06 23:00:56 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/ntp_refclock.c
- 1.40.1.5 02/04/06 23:00:50 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.32.1.8 02/04/06 23:00:45 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/ntp_io.c
- 1.21.1.5 02/04/06 23:00:41 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/ntp_control.c
- 1.39.1.12 02/04/06 23:00:32 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.52.1.11 02/04/06 23:00:27 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- include/ntpd.h
- 1.31.1.6 02/04/06 23:00:18 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- include/ntp_stdlib.h
- 1.11.1.3 02/04/06 23:00:13 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- include/ntp_machine.h
- 1.12 02/04/06 23:00:09 mayer@tecotoo.myibg.com +0 -0
- Auto merged
-
- BitKeeper/etc/logging_ok
- 1.3.2.7 02/04/06 22:59:17 mayer@tecotoo.myibg.com +1 -0
- 'Auto converge'
-
- BitKeeper/etc/logging_ok
- 1.3.2.6 02/04/06 22:59:15 mayer@tecotoo.myibg.com +0 -0
- Rename: BitKeeper/deleted/.del-logging_ok~bebb84d857254496 -> BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.10 02/04/06 22:59:12 mayer@tecotoo.myibg.com +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.3.2.5 02/04/06 22:58:58 mayer@tecotoo.myibg.com +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.9 02/04/06 22:58:09 mayer@tecotoo.myibg.com +1 -1
- auto-union
-
-ChangeSet
- 1.812 02/04/05 02:32:57 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_crypto.c
- 1.53 02/04/05 02:32:54 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.77 02/04/05 02:18:56 stenn@whimsy.udel.edu +1 -0
- Dave made a lot of improvements and changes to ntp_crypto.c .
-
- ntpd/ntp_crypto.c
- 1.48.1.5 02/04/05 02:18:44 stenn@whimsy.udel.edu +27 -16
- Dave made a lot of improvements and changes.
-
-ChangeSet
- 1.811 02/04/03 03:17:08 harlan@dog.pfcs.com +2 -0
- ipv6 cleanup.
-
- util/ntp-genkeys.c
- 1.74 02/04/03 03:16:50 harlan@dog.pfcs.com +9 -7
- ipv6 changes.
-
- ntpdate/Makefile.am
- 1.10 02/04/03 03:16:49 harlan@dog.pfcs.com +3 -1
- Disable ntptimeset for now.
-
-ChangeSet
- 1.810 02/04/03 00:17:16 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_peer.c
- 1.42 02/04/03 00:17:14 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.76 02/04/03 00:13:14 stenn@whimsy.udel.edu +1 -0
- expire_all(): Call resetmanycast() before we leave.
-
- ntpd/ntp_peer.c
- 1.32.1.7 02/04/03 00:13:03 stenn@whimsy.udel.edu +1 -0
- expire_all(): Call resetmanycast() before we leave.
-
-ChangeSet
- 1.809 02/03/31 03:06:17 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- BitKeeper/etc/ignore
- 1.18 02/03/31 03:06:09 stenn@whimsy.udel.edu +5 -5
- auto-union
-
-ChangeSet
- 1.706.2.75 02/03/31 03:03:10 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/triggers/triggerd
- 1.17 02/03/31 03:03:08 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
- BitKeeper/triggers/trigger.mk
- 1.9 02/03/31 03:03:08 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
-ChangeSet
- 1.683.4.85 02/03/31 03:00:08 stenn@whimsy.udel.edu +2 -0
- Trigger improvements/fixes.
-
- BitKeeper/triggers/triggerd
- 1.15.1.1 02/03/31 02:59:59 stenn@whimsy.udel.edu +1 -1
- Typo fix.
-
- BitKeeper/triggers/trigger.mk
- 1.7.1.1 02/03/31 02:59:58 stenn@whimsy.udel.edu +1 -1
- Lose the (apparently) bogus "triggerd: trigger.cfg" dependency.
-
-ChangeSet
- 1.706.2.74 02/03/31 02:45:03 stenn@whimsy.udel.edu +4 -0
- Trigger cleanup.
-
- BitKeeper/triggers/triggerd
- 1.16 02/03/31 02:44:54 stenn@whimsy.udel.edu +1 -1
- Typo.
-
- BitKeeper/triggers/trigger.mk
- 1.8 02/03/31 02:44:54 stenn@whimsy.udel.edu +1 -1
- Comment out the 'triggerd: trigger.cfg' dependency.
-
- BitKeeper/triggers/00-list
- 1.3 02/03/31 02:44:54 stenn@whimsy.udel.edu +6 -5
- Order like the help page. Add the new pre-delta trigger.
-
- BitKeeper/etc/ignore
- 1.14.1.3 02/03/31 02:44:54 stenn@whimsy.udel.edu +5 -0
- Added ChangeLog.new arlib/depcomp arlib/install-sh arlib/missing arlib/mkinstalldirs to the ignore list
-
-ChangeSet
- 1.808 02/03/31 00:48:23 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.250 02/03/31 00:48:21 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.73 02/03/31 00:42:26 stenn@whimsy.udel.edu +1 -0
- Generate the ntptrace script.
-
- configure.in
- 1.226.1.30 02/03/31 00:42:18 stenn@whimsy.udel.edu +3 -2
- Generate the ntptrace script.
-
-ChangeSet
- 1.807 02/03/31 00:12:26 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- Makefile.am
- 1.27 02/03/31 00:12:24 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.72 02/03/31 00:06:43 stenn@whimsy.udel.edu +3 -0
- Ntptrace: out with the old, in with the new...
-
- scripts/ntptrace.in
- 1.1 02/03/31 00:06:37 stenn@whimsy.udel.edu +60 -0
-
- scripts/ntptrace.in
- 1.0 02/03/31 00:06:37 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/scripts/ntptrace.in
-
- scripts/Makefile.am
- 1.10 02/03/31 00:06:37 stenn@whimsy.udel.edu +1 -1
- Install the new ntptrace script
-
- Makefile.am
- 1.16.1.10 02/03/31 00:06:37 stenn@whimsy.udel.edu +0 -1
- Stop doing anything in ntptrace/ by default.
-
-ChangeSet
- 1.806 02/03/30 21:35:07 stenn@whimsy.udel.edu +1 -0
- Merge resolution
-
- ntpd/ntp_proto.c
- 1.109 02/03/30 21:35:03 stenn@whimsy.udel.edu +1 -1
- Merge resolution
-
-ChangeSet
- 1.706.2.71 02/03/30 21:22:50 stenn@whimsy.udel.edu +1 -0
- Local variable cleanup for OpenSSL.
-
- ntpd/ntp_proto.c
- 1.99.1.9 02/03/30 21:22:45 stenn@whimsy.udel.edu +3 -1
- Local variable cleanup for OpenSSL.
-
-ChangeSet
- 1.805 02/03/30 01:46:01 stenn@whimsy.udel.edu +8 -0
- Merge resolution.
-
- libntp/Makefile.am
- 1.19 02/03/30 01:45:47 stenn@whimsy.udel.edu +2 -6
- Merge resolution.
-
- ntpd/ntp_proto.c
- 1.108 02/03/30 01:36:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.41 02/03/30 01:36:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_crypto.c
- 1.52 02/03/30 01:36:30 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_control.c
- 1.50 02/03/30 01:36:30 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.65 02/03/30 01:36:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.61 02/03/30 01:36:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.249 02/03/30 01:36:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.70 02/03/30 01:29:10 stenn@whimsy.udel.edu +2 -0
- Merge resolution.
-
- libntp/clocktypes.c
- 1.13 02/03/30 01:29:02 stenn@whimsy.udel.edu +0 -3
- Merge resolution.
-
- include/ntp.h
- 1.50.1.10 02/03/30 01:29:02 stenn@whimsy.udel.edu +1 -4
- Merge resolution.
-
-ChangeSet
- 1.683.4.84 02/03/30 01:12:34 stenn@whimsy.udel.edu +2 -0
- clocktypes.c, ntp.h:
- Add REFCLK_TT560.
-
- libntp/clocktypes.c
- 1.7.1.4 02/03/30 01:12:28 stenn@whimsy.udel.edu +3 -1
- Add REFCLK_TT560.
-
- include/ntp.h
- 1.47.3.4 02/03/30 01:12:28 stenn@whimsy.udel.edu +3 -2
- Add REFCLK_TT560.
-
-ChangeSet
- 1.706.2.69 02/03/30 00:25:23 stenn@whimsy.udel.edu +7 -0
- Merge cleanup.
-
- configure.in
- 1.226.1.29 02/03/30 00:25:18 stenn@whimsy.udel.edu +0 -11
- Merge cleanup.
-
- ntpd/refclock_zyfer.c
- 1.4 02/03/30 00:12:53 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/refclock_conf.c
- 1.19 02/03/30 00:12:53 stenn@whimsy.udel.edu +0 -8
- Auto merged
-
- ntpd/ntp_control.c
- 1.39.1.11 02/03/30 00:12:53 stenn@whimsy.udel.edu +0 -2
- Auto merged
-
- ntpd/Makefile.am
- 1.27 02/03/30 00:12:53 stenn@whimsy.udel.edu +0 -11
- Auto merged
-
- BitKeeper/deleted/.del-refclock_tt560.c
- 1.2 02/03/30 00:12:52 stenn@whimsy.udel.edu +0 -0
- Delete: ntpd/refclock_tt560.c
-
- BitKeeper/deleted/.del-README.rsa~6f1a085f
- 1.7 02/03/30 00:12:52 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-README.rsa~6f1a085f
- 1.3.2.2 02/03/30 00:12:36 stenn@whimsy.udel.edu +0 -0
- Merge rename: README.rsa -> BitKeeper/deleted/.del-README.rsa~6f1a085f
-
-ChangeSet
- 1.683.4.83 02/03/29 23:38:30 harlan@dog.pfcs.com +1 -0
- Typo fix.
-
- ntpd/refclock_zyfer.c
- 1.1.1.2 02/03/29 23:38:21 harlan@dog.pfcs.com +1 -1
- Typo fix.
-
-ChangeSet
- 1.706.9.2 02/03/29 23:24:37 stenn@whimsy.udel.edu +1 -0
- ntp_config.h:
- Add CONF_CRYPT_KEYS.
-
- include/ntp_config.h
- 1.17 02/03/29 23:24:26 stenn@whimsy.udel.edu +1 -0
- Add CONF_CRYPT_KEYS.
-
-ChangeSet
- 1.706.9.1 02/03/29 21:58:28 stenn@whimsy.udel.edu +7 -0
- ntp_proto.c:
- For burst, use NTP_BURST instead of NTP_SHIFT for peer->burst.
- ntp_peer.c:
- Improve statstr diagnostic message.
- ntp_crypto.c:
- Dave made a ton of changes and improvements.
- ntp_control.c:
- Add REFCLOCK_TT560 (Harlan)
- Code cleanup (Dave)
- ntp_config.c:
- Added "keysdir" and CRYPTO_CONF_KEYS.
- ntp.h:
- Added NTP_BURST and FLAG_CLUST.
- Changed the X509 version variable name.
- Makefile.am:
- Disable all installation for now. (Harlan)
-
- ntpd/ntp_proto.c
- 1.99.1.8 02/03/29 21:58:09 stenn@whimsy.udel.edu +11 -18
- For burst, use NTP_BURST instead of NTP_SHIFT for peer->burst.
-
- ntpd/ntp_peer.c
- 1.32.1.6 02/03/29 21:58:08 stenn@whimsy.udel.edu +3 -1
- Improve statstr diagnostic message.
-
- ntpd/ntp_crypto.c
- 1.48.1.4 02/03/29 21:58:08 stenn@whimsy.udel.edu +159 -94
- Dave made a ton of changes and improvements.
-
- ntpd/ntp_control.c
- 1.39.1.10 02/03/29 21:58:08 stenn@whimsy.udel.edu +4 -2
- Add REFCLOCK_TT560 (Harlan)
- Code cleanup (Dave)
-
- ntpd/ntp_config.c
- 1.52.1.10 02/03/29 21:58:07 stenn@whimsy.udel.edu +5 -0
- Added "keysdir" and CRYPTO_CONF_KEYS.
-
- include/ntp.h
- 1.50.1.9 02/03/29 21:58:07 stenn@whimsy.udel.edu +3 -3
- Added NTP_BURST and FLAG_CLUST.
- Changed the X509 version variable name.
-
- arlib/Makefile.am
- 1.2 02/03/29 21:58:07 stenn@whimsy.udel.edu +8 -4
- Disable all installation for now. (Harlan)
-
-ChangeSet
- 1.683.4.82 02/03/28 19:06:16 stenn@whimsy.udel.edu +6 -0
- Backport the TrueTime 560 IRIG driver so the clock numbers
- don't change on the Zyfer.
-
- ntpd/refclock_tt560.c
- 1.1 02/03/28 19:06:14 stenn@whimsy.udel.edu +274 -0
-
- ntpd/refclock_tt560.c
- 1.0 02/03/28 19:06:14 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/ntpd/refclock_tt560.c
-
- ntpd/refclock_conf.c
- 1.13.1.4 02/03/28 19:06:14 stenn@whimsy.udel.edu +12 -5
- C
-
- ntpd/ntp_control.c
- 1.37.3.4 02/03/28 19:06:14 stenn@whimsy.udel.edu +2 -1
- Add the TT560 driver.
-
- ntpd/Makefile.am
- 1.18.2.6 02/03/28 19:06:14 stenn@whimsy.udel.edu +11 -11
- Better order the source files. Include the TT560 driver.
-
- configure.in
- 1.219.3.17 02/03/28 19:06:14 stenn@whimsy.udel.edu +11 -1
- Backport the TrueTime 560 IRIG driver so the clock numbers don't change
- on the Zyfer.
-
- README.rsa
- 1.3.2.1 02/03/28 19:06:14 stenn@whimsy.udel.edu +2 -4
- Cleanup.
-
-ChangeSet
- 1.706.2.66 02/03/26 20:59:14 harlan@dog.pfcs.com +1 -0
- Finish the integration of strstr.c
-
- libntp/strstr.c
- 1.2 02/03/26 20:59:05 harlan@dog.pfcs.com +7 -1
- Finish the integration of strstr.c
-
-ChangeSet
- 1.706.2.65 02/03/26 20:22:52 harlan@dog.pfcs.com +5 -0
- ntp-stable -> ntp-dev integration wibbles.
-
- libntp/Makefile.am
- 1.12.1.5 02/03/26 20:22:42 harlan@dog.pfcs.com +5 -14
- Integrate what used to go in LIBOBJS.
-
- configure.in
- 1.226.1.28 02/03/26 20:22:40 harlan@dog.pfcs.com +0 -2
- ntp-dev doesn't use RSAREF.
-
- ntpd/refclock_zyfer.c
- 1.3 02/03/26 16:50:45 harlan@dog.pfcs.com +0 -10
- Auto merged
-
- ntpd/ntp_loopfilter.c
- 1.64 02/03/26 16:50:44 harlan@dog.pfcs.com +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-Makefile.am~e832209e
- 1.18 02/03/26 16:50:42 harlan@dog.pfcs.com +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-Makefile.am~e832209e
- 1.14.2.2 02/03/26 16:50:38 harlan@dog.pfcs.com +0 -0
- Merge rename: librsaref/Makefile.am -> BitKeeper/deleted/.del-Makefile.am~e832209e
-
-ChangeSet
- 1.683.4.81 02/03/26 11:22:48 harlan@dog.pfcs.com +1 -0
- Zyfer PPS fixes.
-
- ntpd/refclock_zyfer.c
- 1.1.1.1 02/03/26 11:22:47 harlan@dog.pfcs.com +10 -0
- PPS fixes.
-
-ChangeSet
- 1.683.4.80 02/03/26 03:57:29 harlan@dog.pfcs.com +7 -0
- Auto* cleanup.
-
- librsaref/Makefile.am
- 1.14.2.1 02/03/26 03:57:28 harlan@dog.pfcs.com +4 -1
- Lose RSASRCS from the library; it's now forbidden to do things this way.
-
- libntp/strerror.c
- 1.3 02/03/26 03:57:28 harlan@dog.pfcs.com +6 -0
- Always compile the file, but only provide the guts if we need them.
-
- libntp/strdup.c
- 1.5 02/03/26 03:57:28 harlan@dog.pfcs.com +6 -0
- Always compile the file, but only provide the guts if we need them.
-
- libntp/snprintf.c
- 1.6 02/03/26 03:57:27 harlan@dog.pfcs.com +4 -0
- Always compile the file, but only provide the guts if we need them.
-
- libntp/mktime.c
- 1.4 02/03/26 03:57:27 harlan@dog.pfcs.com +5 -0
- Always compile the file, but only provide the guts if we need them.
-
- libntp/Makefile.am
- 1.11.2.3 02/03/26 03:57:27 harlan@dog.pfcs.com +10 -13
- Alphabetize libntp_a_SOURCES, and avoid the libntp/*.c automake problem
- by always compiling the AC_REPLACE_FUNCS() items.
-
- configure.in
- 1.219.3.16 02/03/26 03:57:25 harlan@dog.pfcs.com +7 -5
- auto* cleanup:
- Cleanup the RSAREF source stuff, and the LIBOBJS cruft.
- Quote the AC_CHECK_HEADERS(sys/timepps.h) [from John Hay]
-
-ChangeSet
- 1.683.4.79 02/03/25 02:19:44 harlan@dog.pfcs.com +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-stable
- into dog.pfcs.com:/a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-stable
-
- configure.in
- 1.219.3.15 02/03/25 02:19:41 harlan@dog.pfcs.com +0 -0
- Auto merged
-
-ChangeSet
- 1.804 02/03/25 00:11:25 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.248 02/03/25 00:11:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.64 02/03/25 00:05:26 stenn@whimsy.udel.edu +1 -0
- Merge
-
- configure.in
- 1.226.1.27 02/03/25 00:05:24 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
-ChangeSet
- 1.683.8.1 02/03/24 23:45:05 stenn@whimsy.udel.edu +1 -0
- configure.in: Comment out the LIBOBJS hack for ANSI2KNR.
- We needed it at one time, but 2.52 doesn't need it and 2.53 hates it.
-
- configure.in
- 1.219.4.2 02/03/24 23:45:03 stenn@whimsy.udel.edu +3 -2
- configure.in: Comment out the LIBOBJS hack for ANSI2KNR.
- We needed it at one time, but 2.52 doesn't need it and 2.53 hates it.
-
-ChangeSet
- 1.683.7.3 02/03/24 19:25:36 mayer@tecotoo.myibg.com +8 -0
- WINNT specific includes were included in wrong place.
- Casting issue fixes.
-
- ntpd/ntp_request.c
- 1.23.2.6 02/03/24 19:25:13 mayer@tecotoo.myibg.com +1 -1
- Fix casting issues
-
- ntpd/ntp_refclock.c
- 1.39.2.2 02/03/24 19:25:10 mayer@tecotoo.myibg.com +1 -1
- Fix casting issues
-
- ntpd/ntp_config.c
- 1.50.3.5 02/03/24 19:25:06 mayer@tecotoo.myibg.com +3 -2
- Fix assignment
-
- libntp/dolfptoa.c
- 1.4 02/03/24 19:25:03 mayer@tecotoo.myibg.com +1 -1
- Fix casting issues
-
- libntp/dofptoa.c
- 1.4 02/03/24 19:25:00 mayer@tecotoo.myibg.com +1 -1
- Fix casting issues
-
- libntp/caljulian.c
- 1.4 02/03/24 19:24:57 mayer@tecotoo.myibg.com +1 -1
- Fix casting issues
-
- libntp/binio.c
- 1.3 02/03/24 19:24:54 mayer@tecotoo.myibg.com +12 -12
- Fix casting issues
-
- include/ntp_machine.h
- 1.7.1.4 02/03/24 19:24:50 mayer@tecotoo.myibg.com +5 -4
- WINNT specific includes were included in the wrong place
- conditionally define register as empty since registers should not
- be used here.
-
-ChangeSet
- 1.683.7.2 02/03/23 21:11:39 mayer@tecotoo.myibg.com +39 -0
- This is a miscellaneous set of fixes necessary to build on WINNT. Some of the
- fixes are errors in the non-WINNT specific areas related to type mismatches and
- casting issues.
-
- BitKeeper/etc/logging_ok
- 1.1.2.1 02/03/23 21:10:57 mayer@tecotoo.myibg.com +1 -0
- Logging to logging@openlogging.org accepted
-
- ports/winnt/ntptrace/ntptrace.dsp
- 1.7 02/03/23 21:10:37 mayer@tecotoo.myibg.com +3 -3
- Fix the WINT build command lines
-
- ports/winnt/ntpq/ntpq.dsp
- 1.7 02/03/23 21:10:35 mayer@tecotoo.myibg.com +3 -3
- Fix the WINT build command lines
-
- ports/winnt/ntpdc/ntpdc.dsp
- 1.7 02/03/23 21:10:34 mayer@tecotoo.myibg.com +3 -3
- Fix the WINT build command lines
-
- ports/winnt/ntpdate/ntpdate.dsp
- 1.7 02/03/23 21:10:32 mayer@tecotoo.myibg.com +4 -4
- Fix the WINT build command lines
-
- ports/winnt/ntpd/ntp_iocompletionport.c
- 1.7 02/03/23 21:10:30 mayer@tecotoo.myibg.com +4 -6
- Fix completion port code to make the proper calls and return the proper error
- codes.
-
- ports/winnt/ntpd/hopf_PCI_io.c
- 1.3 02/03/23 21:10:28 mayer@tecotoo.myibg.com +0 -4
- Remove dead code
-
- ports/winnt/libntp/mexit.c
- 1.4 02/03/23 21:10:27 mayer@tecotoo.myibg.com +1 -1
- Reorder includes.
-
- ports/winnt/libntp/log.h
- 1.4 02/03/23 21:10:25 mayer@tecotoo.myibg.com +1 -0
- Add process.h include for WINNT
-
- ports/winnt/libntp/libntp.dsp
- 1.7 02/03/23 21:10:24 mayer@tecotoo.myibg.com +1 -1
- Fixes for WINNT command line builds.
-
- ports/winnt/instsrv/instsrv.c
- 1.6 02/03/23 21:10:22 mayer@tecotoo.myibg.com +14 -14
- Miscellaneous WINNT code fixes to build properly and to make the function call
- to add the ntp events to the registry work with the calling arguments.
-
- ports/winnt/instsrv/Instsrv.dsp
- 1.5 02/03/23 21:10:20 mayer@tecotoo.myibg.com +4 -3
- Fix the WINNT build options
-
- ports/winnt/include/config.h
- 1.9.1.2 02/03/23 21:10:18 mayer@tecotoo.myibg.com +23 -1
- Add WINNT specific definitions for proper support
-
- ports/winnt/include/clockstuff.h
- 1.5 02/03/23 21:10:16 mayer@tecotoo.myibg.com +4 -1
- Reorder includes
- Add function calls to init_winnt_time and reset_winnt_time
-
- ntpq/ntpq.c
- 1.16.1.2 02/03/23 21:10:14 mayer@tecotoo.myibg.com +3 -3
- Remove function abortcmd for WINNT.
- fix cmdsort to be non-const.
-
- ntpdc/ntpdc.c
- 1.8.1.3 02/03/23 21:10:12 mayer@tecotoo.myibg.com +3 -2
- Remove function abortcmd for WINNT.
- fix cmdsort to be non-const.
-
- ntpd/refclock_palisade.c
- 1.9.1.2 02/03/23 21:10:10 mayer@tecotoo.myibg.com +5 -0
- Fix WINNT to call closesocket instead of close
-
- ntpd/refclock_nmea.c
- 1.16.1.1 02/03/23 21:10:07 mayer@tecotoo.myibg.com +5 -0
- Fix WINNT to call closesocket instead of close
-
- ntpd/refclock_hopfser.c
- 1.3.1.1 02/03/23 21:10:04 mayer@tecotoo.myibg.com +5 -0
- Fix WINNT to call closesocket instead of close
-
- ntpd/refclock_dumbclock.c
- 1.5.1.1 02/03/23 21:10:02 mayer@tecotoo.myibg.com +5 -0
- Fix WINNT to call closesocket instead of close.
-
- ntpd/ntpd.c
- 1.33.1.4 02/03/23 21:09:59 mayer@tecotoo.myibg.com +2 -1
- Add missing include for WINNT.
-
- ntpd/ntp_util.c
- 1.14.2.2 02/03/23 21:09:56 mayer@tecotoo.myibg.com +1 -1
- Fix WINNT specific function call.
-
- ntpd/ntp_peer.c
- 1.29.2.2 02/03/23 21:09:52 mayer@tecotoo.myibg.com +2 -2
- Fixes for Type mismatches
-
- ntpd/ntp_io.c
- 1.20.2.4 02/03/23 21:09:49 mayer@tecotoo.myibg.com +6 -6
- Fixes for Type mismatches
-
- ntpd/ntp_control.c
- 1.37.4.1 02/03/23 21:09:46 mayer@tecotoo.myibg.com +6 -6
- Fix type conversion to include the or par of the condition
-
- ntpd/ntp_config.c
- 1.50.3.4 02/03/23 21:09:42 mayer@tecotoo.myibg.com +2 -2
- Fix quotes since this is a single character and not a string.
- Fix WINNT Function call GetTempPath to not return a length since the length is not
- used and the code generates a warning message.
-
- libntp/msyslog.c
- 1.12 02/03/23 21:09:39 mayer@tecotoo.myibg.com +1 -1
- Fixes for Type mismatches
-
- libntp/mfptoms.c
- 1.3 02/03/23 21:09:36 mayer@tecotoo.myibg.com +1 -1
- Fixes for Type mismatches
-
- libntp/mfptoa.c
- 1.3 02/03/23 21:09:33 mayer@tecotoo.myibg.com +1 -1
- Fixes for Type mismatches
-
- libntp/log.c
- 1.3 02/03/23 21:09:31 mayer@tecotoo.myibg.com +8 -4
- Fixes for WINNT specific code. This probably should be in the port/winnt/libntp directory.
-
- libntp/fptoms.c
- 1.3 02/03/23 21:09:28 mayer@tecotoo.myibg.com +1 -1
- Fixes for Type mismatches
-
- libntp/fptoa.c
- 1.3 02/03/23 21:09:25 mayer@tecotoo.myibg.com +1 -1
- Fixes for Type mismatches
-
- libntp/dolfptoa.c
- 1.3 02/03/23 21:09:22 mayer@tecotoo.myibg.com +1 -1
- Fixes for Type mismatches
-
- libntp/dofptoa.c
- 1.3 02/03/23 21:09:19 mayer@tecotoo.myibg.com +2 -2
- Fixes for Type mismatches
-
- libntp/a_md5encrypt.c
- 1.5.1.2 02/03/23 21:09:16 mayer@tecotoo.myibg.com +2 -2
- Reorder so that the config.h gets included before the ntp_machine.h file.
-
- include/ntpd.h
- 1.27.2.3 02/03/23 21:09:13 mayer@tecotoo.myibg.com +4 -4
- Fixes for Type mismatches
-
- include/ntp_stdlib.h
- 1.10.2.2 02/03/23 21:09:11 mayer@tecotoo.myibg.com +2 -2
- Fixes for type mismatches
-
- include/ntp_machine.h
- 1.7.1.3 02/03/23 21:09:09 mayer@tecotoo.myibg.com +19 -5
- Fixes for WinNT support
-
- include/ntp_fp.h
- 1.2.1.2 02/03/23 21:09:06 mayer@tecotoo.myibg.com +4 -5
- Fix type mismatches
-
-ChangeSet
- 1.803 02/03/23 14:59:48 stenn@whimsy.udel.edu +8 -0
- Merge resolution.
-
- ntpd/ntp_config.c
- 1.64 02/03/23 14:59:46 stenn@whimsy.udel.edu +5 -0
- Merge resolution.
-
- ntpd/ntp_proto.c
- 1.107 02/03/23 14:51:02 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.40 02/03/23 14:51:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_crypto.c
- 1.51 02/03/23 14:51:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_control.c
- 1.49 02/03/23 14:51:00 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntpd.h
- 1.39 02/03/23 14:50:59 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_control.h
- 1.20 02/03/23 14:50:59 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.60 02/03/23 14:50:59 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.63 02/03/23 01:12:33 harlan@dog.pfcs.com +1 -0
- Merge stenn@whimsy.udel.edu:/backroom/ntp-dev
- into dog.pfcs.com:/a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-dev
-
- ntpd/ntp_config.c
- 1.52.1.9 02/03/23 01:12:31 harlan@dog.pfcs.com +0 -0
- Auto merged
-
-ChangeSet
- 1.706.8.1 02/03/23 01:07:49 stenn@whimsy.udel.edu +13 -0
- Integrate Dave's certificate changes.
-
- util/genkeys.c
- 1.8 02/03/23 01:07:48 stenn@whimsy.udel.edu +10 -73
- Lose the DH stuff and the cert req's.
-
- ntpd/ntp_timer.c
- 1.21 02/03/23 01:07:48 stenn@whimsy.udel.edu +1 -1
- interface updates.
-
- ntpd/ntp_proto.c
- 1.99.1.7 02/03/23 01:07:48 stenn@whimsy.udel.edu +87 -67
- Many crypto/cert changes.
-
- ntpd/ntp_peer.c
- 1.32.1.5 02/03/23 01:07:47 stenn@whimsy.udel.edu +1 -1
- Interface cleanup.
-
- ntpd/ntp_crypto.c
- 1.48.1.3 02/03/23 01:07:47 stenn@whimsy.udel.edu +1170 -648
- Lots of changes and cleanup.
-
- ntpd/ntp_control.c
- 1.39.1.9 02/03/23 01:07:47 stenn@whimsy.udel.edu +26 -30
- Various cleanup/changes.
-
- ntpd/ntp_config.c
- 1.52.2.1 02/03/23 01:07:46 stenn@whimsy.udel.edu +5 -4
- Implement CONF_CRYPTO_TRUST.
-
- libntp/statestr.c
- 1.6 02/03/23 01:07:46 stenn@whimsy.udel.edu +7 -9
- State message updates.
-
- include/ntpd.h
- 1.31.1.5 02/03/23 01:07:46 stenn@whimsy.udel.edu +4 -5
- Various interface changes.
-
- include/ntp_crypto.h
- 1.24 02/03/23 01:07:46 stenn@whimsy.udel.edu +23 -30
- Wiggle some flag bits.
- Add some certificate stuff.
-
- include/ntp_control.h
- 1.15.1.4 02/03/23 01:07:46 stenn@whimsy.udel.edu +5 -6
- Lose CP_CERTIF.
-
- include/ntp_config.h
- 1.16 02/03/23 01:07:46 stenn@whimsy.udel.edu +1 -0
- New #define: CONF_CRYPTO_TRUST.
-
- include/ntp.h
- 1.50.1.8 02/03/23 01:07:46 stenn@whimsy.udel.edu +40 -6
- Lose pkt from struct value.
- Create struct exten, struct cert_info.
- Clean up/update some of the other bits.
-
-ChangeSet
- 1.706.2.62 02/03/23 00:10:36 harlan@dog.pfcs.com +2 -0
- ntp-genkeys improvements.
-
- util/ntp-genkeys.c
- 1.73 02/03/23 00:10:34 harlan@dog.pfcs.com +14 -1
- Have the peer_config() stub return nonzero so getconfig() doesn't squawk.
- Set call_resolver to 0 so getconfig() doesn't try and call the resolver.
- Add in the missing calls to unlink() before we create the symlinks.
- Control generation of X509 certificate requests with a #define until we
- figure out if we want them at all.
-
- ntpd/ntp_config.c
- 1.52.1.8 02/03/23 00:10:32 harlan@dog.pfcs.com +7 -4
- Implement a "call_resolver" variable (default to "yes"), as while we want
- to run the resolver by default, when we crack ntp.conf anywhere other than
- in ntpd we don't want to call the resolver.
-
-ChangeSet
- 1.683.4.78 02/03/22 22:05:41 harlan@dog.pfcs.com +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-stable
- into dog.pfcs.com:/a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-stable
-
- configure.in
- 1.219.3.14 02/03/22 22:05:39 harlan@dog.pfcs.com +0 -0
- Auto merged
-
-ChangeSet
- 1.802 02/03/21 23:16:08 stenn@whimsy.udel.edu +2 -0
- libntp's Makefile.am has some additional source modules.
-
- libntp/Makefile.am
- 1.18 02/03/21 23:16:08 stenn@whimsy.udel.edu +5 -5
- Reorder the source modules.
-
- configure.in
- 1.247 02/03/21 23:03:17 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.61 02/03/21 22:50:18 harlan@dog.pfcs.com +4 -0
- Provide strstr.c .
- ntp-genkeys should be usable now.
-
- libntp/strstr.c
- 1.1 02/03/21 22:50:17 harlan@dog.pfcs.com +46 -0
-
- libntp/strstr.c
- 1.0 02/03/21 22:50:17 harlan@dog.pfcs.com +0 -0
- BitKeeper file /a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-dev/libntp/strstr.c
-
- util/ntp-genkeys.c
- 1.72 02/03/21 22:50:16 harlan@dog.pfcs.com +93 -68
- Allow for hostname substitution in the filenames in ntp.conf.
- Implement the default filename stuff.
- Update the filenames for each host.
-
- libntp/Makefile.am
- 1.12.1.4 02/03/21 22:50:15 harlan@dog.pfcs.com +11 -12
- C
-
- configure.in
- 1.226.1.26 02/03/21 22:50:13 harlan@dog.pfcs.com +1 -1
- Look for/provide strstr().
-
-ChangeSet
- 1.706.2.60 02/03/18 01:18:31 harlan@dog.pfcs.com +1 -0
- ntp-genkeys improvements.
-
- util/ntp-genkeys.c
- 1.71 02/03/18 01:18:29 harlan@dog.pfcs.com +5 -2
- Fix bug in the case where we want to use the key specified in ntp.conf .
-
-ChangeSet
- 1.706.2.59 02/03/18 00:53:41 harlan@dog.pfcs.com +1 -0
- ntp-genkeys is mostly functional now. Mostly.
-
- util/ntp-genkeys.c
- 1.70 02/03/18 00:53:39 harlan@dog.pfcs.com +46 -19
- Raise the bar for debug noise.
- Implement the symlink code.
-
-ChangeSet
- 1.706.2.58 02/03/17 22:50:20 harlan@dog.pfcs.com +1 -0
- ntp-genkeys is real close now...
-
- util/ntp-genkeys.c
- 1.69 02/03/17 22:50:18 harlan@dog.pfcs.com +157 -41
- Real close now...
-
-ChangeSet
- 1.706.2.57 02/03/17 01:51:54 harlan@dog.pfcs.com +1 -0
- ntp-genkeys cleanup and improvements.
-
- util/ntp-genkeys.c
- 1.68 02/03/17 01:51:52 harlan@dog.pfcs.com +16 -9
- cleanup/improvements.
-
-ChangeSet
- 1.706.2.56 02/03/16 23:19:29 harlan@dog.pfcs.com +1 -0
- Added pps-api to EXTRA_PROGRAMS.
-
- util/Makefile.am
- 1.17 02/03/16 23:19:29 harlan@dog.pfcs.com +1 -1
- Added pps-api to EXTRA_PROGRAMS.
-
-ChangeSet
- 1.706.2.55 02/03/16 23:14:32 harlan@dog.pfcs.com +2 -0
- More progress on ntp-genkeys.
-
- Add in the pps-api.c test program from P-HK.
-
- util/pps-api.c
- 1.1 02/03/16 23:14:31 harlan@dog.pfcs.com +100 -0
-
- util/pps-api.c
- 1.0 02/03/16 23:14:31 harlan@dog.pfcs.com +0 -0
- BitKeeper file /a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-dev/util/pps-api.c
-
- util/ntp-genkeys.c
- 1.67 02/03/16 23:14:30 harlan@dog.pfcs.com +278 -192
- Much progress. Now generates what we say, but the symlinks still need
- to be generated.
-
-ChangeSet
- 1.798 02/03/12 19:19:07 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.246 02/03/12 19:19:06 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.54 02/03/12 19:15:19 stenn@whimsy.udel.edu +1 -0
- Lose PUBKEY - it's really obsolete.
-
- configure.in
- 1.226.1.25 02/03/12 19:15:18 stenn@whimsy.udel.edu +0 -1
- Lose PUBKEY - it's really obsolete.
-
-ChangeSet
- 1.706.2.53 02/03/11 15:25:50 harlan@dog.pfcs.com +1 -0
- Make ntp-genkeys compile in the absence of OPENSSL.
-
- util/ntp-genkeys.c
- 1.66 02/03/11 15:25:46 harlan@dog.pfcs.com +2 -0
- If no OPENSSL then we can't parse openssl-specific keywords.
-
-ChangeSet
- 1.706.2.52 02/03/09 21:17:03 harlan@dog.pfcs.com +1 -0
- More ntp-genkeys work.
-
- util/ntp-genkeys.c
- 1.65 02/03/09 21:17:02 harlan@dog.pfcs.com +270 -67
- More ntp-genkeys work.
-
-ChangeSet
- 1.706.7.2 02/03/09 16:55:30 stenn@whimsy.udel.edu +1 -0
- QNX cleanup.
- From: Dmitry Alexeyev <D.Alexeyev@qnx.org.ru>
-
- libntp/adjtime.c
- 1.6 02/03/09 16:55:30 stenn@whimsy.udel.edu +0 -10
- QNX cleanup.
- From: Dmitry Alexeyev <D.Alexeyev@qnx.org.ru>
-
-ChangeSet
- 1.706.2.50 02/03/09 04:17:28 harlan@dog.pfcs.com +1 -0
- ntp-genkeys: Begin the cert bitmask stuff.
-
- util/ntp-genkeys.c
- 1.64 02/03/09 04:17:26 harlan@dog.pfcs.com +75 -38
- Begin the cert bitmask stuff.
-
-ChangeSet
- 1.706.7.1 02/03/08 15:20:53 stenn@whimsy.udel.edu +1 -0
- Include arlib/'s copying permission statement.
-
- arlib/COPYING
- 1.2 02/03/08 15:20:52 stenn@whimsy.udel.edu +46 -0
- Distribute the copying permission for arlib/.
-
-ChangeSet
- 1.706.2.49 02/03/08 03:56:36 harlan@dog.pfcs.com +2 -0
- Check in recent ntp-genkeys work.
-
- util/ntp-genkeys.c
- 1.63 02/03/08 03:56:34 harlan@dog.pfcs.com +354 -52
- Check in tonights work on ntp-genkeys.
-
- util/Makefile.am
- 1.16 02/03/08 03:56:34 harlan@dog.pfcs.com +2 -2
- ntp-genkeys needs the ntp.conf cracking stuff now.
-
-ChangeSet
- 1.794 02/03/07 22:23:50 stenn@whimsy.udel.edu +2 -0
- Merge resolution.
-
- ntpdate/ntpdate.c
- 1.32 02/03/07 22:23:49 stenn@whimsy.udel.edu +2 -2
- Conflict resolution. Nothing spiffy.
-
- configure.in
- 1.245 02/03/07 22:15:07 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.48 02/03/07 22:04:02 stenn@whimsy.udel.edu +2 -0
- Update config.guess and config.sub.
-
- config.sub
- 1.11 02/03/07 22:04:01 stenn@whimsy.udel.edu +154 -86
- Freshen up.
-
- config.guess
- 1.11 02/03/07 22:04:01 stenn@whimsy.udel.edu +152 -128
- Freshen up.
-
-ChangeSet
- 1.706.2.47 02/03/07 21:41:02 harlan@dog.pfcs.com +5 -0
- Take a stab at finishing the QNX patches sent in from Dmitry Alexeyev <D.Alexeyev@qnx.org.ru>
-
- ntpdate/ntpdate.c
- 1.23.1.5 02/03/07 21:41:00 harlan@dog.pfcs.com +4 -0
- QNX patches, from Dmitry Alexeyev <D.Alexeyev@qnx.org.ru>
-
- libntp/iosignal.c
- 1.10 02/03/07 21:41:00 harlan@dog.pfcs.com +6 -0
- QNX patches, from Dmitry Alexeyev <D.Alexeyev@qnx.org.ru>
-
- libntp/adjtime.c
- 1.5 02/03/07 21:40:59 harlan@dog.pfcs.com +11 -1
- QNX patches, from Dmitry Alexeyev <D.Alexeyev@qnx.org.ru>
-
- include/adjtime.h
- 1.3 02/03/07 21:40:59 harlan@dog.pfcs.com +6 -0
- QNX patches, from Dmitry Alexeyev <D.Alexeyev@qnx.org.ru>
-
- configure.in
- 1.226.1.24 02/03/07 21:40:57 harlan@dog.pfcs.com +5 -2
- Take a stab at QNX patches (inspired by Dmitry's patch) and some cleanup.
-
-ChangeSet
- 1.706.2.46 02/03/07 19:04:20 harlan@dog.pfcs.com +2 -0
- Build both genkeys and ntp-genkeys while we're waiting for ntp-genkeys
- to be finished.
-
- util/ntp-genkeys.c
- 1.62 02/03/07 19:04:18 harlan@dog.pfcs.com +506 -937
- Initial cut at updated ntp-genkeys.
-
- This still needs work before it's useful.
-
- util/Makefile.am
- 1.15 02/03/07 19:04:18 harlan@dog.pfcs.com +2 -2
- Build both genkeys and ntp-genkeys while we're still making progress
- on the official version of ntp-genkeys.
-
-ChangeSet
- 1.792 02/03/07 18:44:07 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.244 02/03/07 18:44:06 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.26 02/03/07 18:44:06 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.45 02/03/07 18:38:58 harlan@dog.pfcs.com +1 -0
- audio.c: Linux doesn't do AIOGFMT and snd_chan_param.
-
- libntp/audio.c
- 1.16 02/03/07 18:38:57 harlan@dog.pfcs.com +4 -0
- audio.c: Linux doesn't do AIOGFMT and snd_chan_param.
-
-ChangeSet
- 1.706.2.44 02/03/07 13:36:48 harlan@dog.pfcs.com +1 -0
- Merge stenn@whimsy.udel.edu:/backroom/ntp-dev
- into dog.pfcs.com:/a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-dev
-
- configure.in
- 1.226.1.23 02/03/07 13:36:46 harlan@dog.pfcs.com +0 -0
- Auto merged
-
-ChangeSet
- 1.706.6.1 02/03/07 13:34:34 harlan@dog.pfcs.com +1 -0
- AC_CANONICAL_SYSTEM ($host/$target/$build) cleanup.
-
- configure.in
- 1.226.3.1 02/03/07 13:34:31 harlan@dog.pfcs.com +97 -97
- AC_CANONICAL_SYSTEM ($host/$target/$build) cleanup.
-
-ChangeSet
- 1.706.2.43 02/03/07 03:40:34 stenn@whimsy.udel.edu +1 -0
- Control compilation of arlib/ via --with-arlib
-
- configure.in
- 1.226.1.22 02/03/07 03:40:33 stenn@whimsy.udel.edu +10 -2
- Control compilation of arlib/ via --with-arlib
-
- arlib/sample.c
- 1.1 02/03/07 02:40:54 stenn@whimsy.udel.edu +143 -0
-
-ChangeSet
- 1.706.2.42 02/03/07 02:40:54 stenn@whimsy.udel.edu +11 -0
- arlib/ checkin.
-
- arlib/sample.c
- 1.0 02/03/07 02:40:54 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/arlib/sample.c
-
- arlib/configure.in
- 1.1 02/03/07 02:40:53 stenn@whimsy.udel.edu +57 -0
-
- arlib/arplib.h
- 1.1 02/03/07 02:40:53 stenn@whimsy.udel.edu +45 -0
-
- arlib/arlib.h
- 1.1 02/03/07 02:40:53 stenn@whimsy.udel.edu +29 -0
-
- arlib/arlib.c
- 1.1 02/03/07 02:40:53 stenn@whimsy.udel.edu +1056 -0
-
- arlib/arlib.3
- 1.1 02/03/07 02:40:53 stenn@whimsy.udel.edu +230 -0
-
- arlib/UNSHAR.HDR
- 1.1 02/03/07 02:40:53 stenn@whimsy.udel.edu +32 -0
-
- arlib/README
- 1.1 02/03/07 02:40:53 stenn@whimsy.udel.edu +49 -0
-
- arlib/configure.in
- 1.0 02/03/07 02:40:53 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/arlib/configure.in
-
- arlib/arplib.h
- 1.0 02/03/07 02:40:53 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/arlib/arplib.h
-
- arlib/arlib.h
- 1.0 02/03/07 02:40:53 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/arlib/arlib.h
-
- arlib/arlib.c
- 1.0 02/03/07 02:40:53 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/arlib/arlib.c
-
- arlib/arlib.3
- 1.0 02/03/07 02:40:53 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/arlib/arlib.3
-
- arlib/UNSHAR.HDR
- 1.0 02/03/07 02:40:53 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/arlib/UNSHAR.HDR
-
- arlib/README
- 1.0 02/03/07 02:40:53 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/arlib/README
-
- arlib/Makefile.am
- 1.1 02/03/07 02:40:52 stenn@whimsy.udel.edu +11 -0
-
- arlib/INSTALL
- 1.1 02/03/07 02:40:52 stenn@whimsy.udel.edu +182 -0
-
- arlib/COPYING
- 1.1 02/03/07 02:40:52 stenn@whimsy.udel.edu +0 -0
-
- arlib/Makefile.am
- 1.0 02/03/07 02:40:52 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/arlib/Makefile.am
-
- arlib/INSTALL
- 1.0 02/03/07 02:40:52 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/arlib/INSTALL
-
- arlib/COPYING
- 1.0 02/03/07 02:40:52 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/arlib/COPYING
-
-ChangeSet
- 1.706.2.41 02/03/04 01:30:41 harlan@dog.pfcs.com +2 -0
- Add in conditional support for building the async resolver library.
- We're not using this (yet).
-
- configure.in
- 1.226.1.21 02/03/04 01:30:39 harlan@dog.pfcs.com +13 -6
- Add in conditional support for building the async resolver library.
- We're not using this (yet).
-
- Makefile.am
- 1.16.1.9 02/03/04 01:30:38 harlan@dog.pfcs.com +1 -0
- Add in conditional support for building the async resolver library.
- We're not using this (yet).
-
-ChangeSet
- 1.706.2.40 02/03/02 16:42:08 harlan@dog.pfcs.com +1 -0
- Patches to html2man.pl
-
- scripts/html2man.pl
- 1.2 02/03/02 16:42:07 harlan@dog.pfcs.com +6 -4
- Recent perl's mkdir seems to require the 2nd arg...
-
-ChangeSet
- 1.790 02/03/02 16:29:04 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.243 02/03/02 16:29:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/ignore
- 1.17 02/03/02 16:28:57 stenn@whimsy.udel.edu +0 -0
- auto-union
-
-ChangeSet
- 1.706.2.39 02/03/02 16:11:35 harlan@dog.pfcs.com +1 -0
- Ignore generated man pages.
-
- BitKeeper/etc/ignore
- 1.14.1.2 02/03/02 16:11:35 harlan@dog.pfcs.com +1 -0
- Ignore generated man pages.
-
-ChangeSet
- 1.706.2.38 02/03/02 16:08:40 harlan@dog.pfcs.com +2 -0
- PCM_SOUND: Check for struct snd_size - apparently it's not in Linux.
-
- libntp/audio.c
- 1.15 02/03/02 16:08:39 harlan@dog.pfcs.com +4 -0
- Guard use of struct snd_size.
-
- configure.in
- 1.226.1.20 02/03/02 16:08:37 harlan@dog.pfcs.com +21 -0
- PCM_SOUND: Check for struct snd_size - apparently it's not in Linux
-
-ChangeSet
- 1.706.5.1 02/02/28 15:17:46 harlan@dog.pfcs.com +1 -0
- Added html2man script.
-
- From: Peter Boettcher <boettcher@ll.mit.edu>
-
- scripts/html2man.pl
- 1.1 02/02/28 15:17:45 harlan@dog.pfcs.com +172 -0
-
- scripts/html2man.pl
- 1.0 02/02/28 15:17:45 harlan@dog.pfcs.com +0 -0
- BitKeeper file /a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-dev/scripts/html2man.pl
-
-ChangeSet
- 1.789 02/02/27 01:41:33 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.242 02/02/27 01:41:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.36 02/02/27 01:38:22 stenn@whimsy.udel.edu +2 -0
- Resolve the automerge - ntp-dev's version number is the one we want.
-
- configure.in
- 1.226.1.19 02/02/27 01:38:21 stenn@whimsy.udel.edu +0 -1
- Resolve the automerge - ntp-dev uses ntp-dev's version number.
-
- NEWS
- 1.38 02/02/27 01:31:51 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.7.1 02/02/26 22:44:34 stenn@whimsy.udel.edu +2 -0
- ntp-4.1.1
-
- configure.in
- 1.219.4.1 02/02/26 22:44:33 stenn@whimsy.udel.edu +1 -1
- ntp-4.1.1
-
- NEWS
- 1.31.1.7 02/02/26 22:44:32 stenn@whimsy.udel.edu +1 -0
- Update the NEWS file.
-
-ChangeSet
- 1.706.2.35 02/02/26 04:01:55 stenn@whimsy.udel.edu +1 -0
- Apparently, the TPRO refclock didn't get updated when the refclockproc
- structure changed the usec member to nsec. Fix it now.
-
- ntpd/refclock_tpro.c
- 1.8 02/02/26 04:01:55 stenn@whimsy.udel.edu +7 -1
- Apparently, the TPRO refclock didn't get updated when the refclockproc
- structure changed the usec member to nsec. Fix it now.
-
-ChangeSet
- 1.706.2.34 02/02/26 03:38:12 stenn@whimsy.udel.edu +1 -0
- Generate X509v3 certificate requests.
-
- util/genkeys.c
- 1.7 02/02/26 03:38:11 stenn@whimsy.udel.edu +5 -5
- Generate X509v3 certificate requests.
-
- util/audio-pcm.c
- 1.1 02/02/24 02:21:11 harlan@dog.pfcs.com +154 -0
-
-ChangeSet
- 1.706.2.33 02/02/24 02:21:11 harlan@dog.pfcs.com +2 -0
- New program: util/audio-pcm, used for debugging the PCM audio stuff.
-
- util/audio-pcm.c
- 1.0 02/02/24 02:21:11 harlan@dog.pfcs.com +0 -0
- BitKeeper file /a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-dev/util/audio-pcm.c
-
- util/Makefile.am
- 1.14 02/02/24 02:21:10 harlan@dog.pfcs.com +4 -1
- audio-pcm is a new extra program.
-
-ChangeSet
- 1.706.2.32 02/02/24 02:17:52 harlan@dog.pfcs.com +1 -0
- Finish off the /etc/ntp.audio config file processing.
-
- libntp/audio.c
- 1.14 02/02/24 02:17:51 harlan@dog.pfcs.com +71 -8
- Finish off the /etc/ntp.audio config file processing.
-
-ChangeSet
- 1.706.2.31 02/02/23 22:05:20 harlan@dog.pfcs.com +1 -0
- Only do PCM audio config file processing if we have PCM audio.
-
- libntp/audio.c
- 1.13 02/02/23 22:05:19 harlan@dog.pfcs.com +2 -0
- Only do PCM audio config file processing if we have PCM audio.
-
-ChangeSet
- 1.706.2.30 02/02/23 21:51:51 harlan@dog.pfcs.com +5 -0
- Revert the audio port/mongain changes.
-
- Prepare for PCM audio config files.
-
- ntpd/refclock_wwv.c
- 1.35 02/02/23 21:51:48 harlan@dog.pfcs.com +27 -29
- Revert the audio port/mongain changes.
-
- ntpd/refclock_irig.c
- 1.14 02/02/23 21:51:47 harlan@dog.pfcs.com +31 -31
- Revert the audio port/mongain changes.
-
- ntpd/refclock_chu.c
- 1.29 02/02/23 21:51:46 harlan@dog.pfcs.com +37 -42
- Revert the audio port/mongain changes.
-
- libntp/audio.c
- 1.12 02/02/23 21:51:45 harlan@dog.pfcs.com +163 -51
- Revert the audio port/mongain changes.
-
- Prepare for PCM audio config files.
-
- include/audio.h
- 1.6 02/02/23 21:51:45 harlan@dog.pfcs.com +2 -2
- Revert the audio port/mongain changes.
-
-ChangeSet
- 1.706.2.29 02/02/22 22:23:28 harlan@dog.pfcs.com +1 -0
- Merge stenn@whimsy.udel.edu:/backroom/ntp-dev
- into dog.pfcs.com:/a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-dev
-
- ntpd/refclock_chu.c
- 1.28 02/02/22 22:23:27 harlan@dog.pfcs.com +0 -0
- Auto merged
-
-ChangeSet
- 1.706.4.1 02/02/22 22:21:38 harlan@dog.pfcs.com +5 -0
- Set the port and mongain in audio_init(), not audio_gain().
-
- ntpd/refclock_wwv.c
- 1.34 02/02/22 22:21:34 harlan@dog.pfcs.com +30 -28
- Set the port and mongain in audio_init(), not audio_gain().
-
- ntpd/refclock_irig.c
- 1.13 02/02/22 22:21:33 harlan@dog.pfcs.com +33 -33
- Set the port and mongain in audio_init(), not audio_gain().
-
- ntpd/refclock_chu.c
- 1.26.1.1 02/02/22 22:21:32 harlan@dog.pfcs.com +42 -37
- Set the port and mongain in audio_init(), not audio_gain().
-
- libntp/audio.c
- 1.11 02/02/22 22:21:32 harlan@dog.pfcs.com +82 -66
- Set the port and mongain in audio_init(), not audio_gain().
-
- include/audio.h
- 1.5 02/02/22 22:21:32 harlan@dog.pfcs.com +2 -2
- Set the port and mongain in audio_init(), not audio_gain().
-
-ChangeSet
- 1.706.2.28 02/02/22 21:59:51 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_chu.c
- 1.27 02/02/22 21:59:51 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.27 02/02/22 21:58:56 stenn@whimsy.udel.edu +1 -0
- Begin PPS support for the Zyfer.
-
- ntpd/refclock_zyfer.c
- 1.2 02/02/22 21:58:55 stenn@whimsy.udel.edu +10 -0
- Begin PPS support for the Zyfer.
-
-ChangeSet
- 1.683.4.76 02/02/22 21:10:08 stenn@whimsy.udel.edu +1 -0
- LEAP_DELSECOND support for CHU.
-
- From: Ralph Siemsen <ralphs@netwinder.org>
-
- ntpd/refclock_chu.c
- 1.21.1.1 02/02/22 21:10:07 stenn@whimsy.udel.edu +3 -0
- LEAP_DELSECOND support.
-
- From: Ralph Siemsen <ralphs@netwinder.org>
-
-ChangeSet
- 1.683.6.1 02/02/20 12:36:45 harlan@dog.pfcs.com +1 -0
- Merge bk://www.ntp.org/home/bk/ntp-stable
- into dog.pfcs.com:/a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-stable
-
- ntpd/ntp_loopfilter.c
- 1.53.1.4 02/02/20 12:36:43 harlan@dog.pfcs.com +0 -2
- Auto merged
-
-ChangeSet
- 1.786 02/02/19 19:16:50 stenn@whimsy.udel.edu +4 -0
- Merge
-
- include/ntp.h
- 1.59 02/02/19 19:16:49 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
- ntpd/ntp_control.c
- 1.48 02/02/19 19:14:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.241 02/02/19 19:14:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/logging_ok
- 1.9 02/02/19 19:14:17 stenn@whimsy.udel.edu +0 -0
- auto-union
-
-ChangeSet
- 1.683.4.75 02/02/19 19:07:29 stenn@whimsy.udel.edu +2 -0
- Trigger improvements.
-
- BitKeeper/triggers/trigger.cfg
- 1.9 02/02/19 19:07:28 stenn@whimsy.udel.edu +2 -2
- Enable the email-related log messages.
-
- BitKeeper/triggers/delta-changelog
- 1.4 02/02/19 19:07:28 stenn@whimsy.udel.edu +3 -2
- Don't use this to update ChangeLog, but use it only to send the
- checkin log email.
-
-ChangeSet
- 1.706.2.25 02/02/19 13:35:59 harlan@dog.pfcs.com +5 -0
- Automerge cleanup.
-
- ntpd/refclock_conf.c
- 1.18 02/02/19 13:35:58 harlan@dog.pfcs.com +8 -9
- Automerge cleanup.
-
- ntpd/Makefile.am
- 1.26 02/02/19 13:35:58 harlan@dog.pfcs.com +0 -2
- Automerge cleanup
-
- libntp/clocktypes.c
- 1.12 02/02/19 13:35:57 harlan@dog.pfcs.com +3 -3
- Automerge cleanup
-
- include/ntp.h
- 1.50.1.7 02/02/19 13:35:56 harlan@dog.pfcs.com +3 -4
- Automerge cleanup.
-
- configure.in
- 1.226.1.18 02/02/19 13:35:54 harlan@dog.pfcs.com +11 -20
- Automerge cleanup.
-
-ChangeSet
- 1.706.3.2 02/02/19 13:07:32 harlan@dog.pfcs.com +10 -0
- Merge dog.pfcs.com:/a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-stable
- into dog.pfcs.com:/a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-dev
-
- ntpd/refclock_conf.c
- 1.16.1.2 02/02/19 13:07:31 harlan@dog.pfcs.com +0 -8
- Auto merged
-
- ntpd/ntp_loopfilter.c
- 1.63 02/02/19 13:07:29 harlan@dog.pfcs.com +0 -2
- Auto merged
-
- ntpd/ntp_control.c
- 1.39.1.8 02/02/19 13:07:26 harlan@dog.pfcs.com +0 -1
- Auto merged
-
- ntpd/Makefile.am
- 1.24.1.2 02/02/19 13:07:23 harlan@dog.pfcs.com +0 -4
- Auto merged
-
- libntp/clocktypes.c
- 1.10.1.2 02/02/19 13:07:23 harlan@dog.pfcs.com +0 -2
- Auto merged
-
- include/ntp.h
- 1.50.2.2 02/02/19 13:07:21 harlan@dog.pfcs.com +0 -2
- Auto merged
-
- configure.in
- 1.226.2.2 02/02/19 13:07:18 harlan@dog.pfcs.com +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-refclock_zyfer.c
- 1.2 02/02/19 13:07:14 harlan@dog.pfcs.com +0 -0
- Delete: ntpd/refclock_zyfer.c
-
- BitKeeper/etc/logging_ok
- 1.3.2.4 02/02/19 13:06:36 harlan@dog.pfcs.com +1 -1
- 'Auto converge'
-
- BitKeeper/etc/logging_ok
- 1.3.2.3 02/02/19 13:06:36 harlan@dog.pfcs.com +0 -0
- Rename: BitKeeper/deleted/.del-logging_ok~bebb84d857254496 -> BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.8 02/02/19 13:06:36 harlan@dog.pfcs.com +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.3.2.2 02/02/19 13:06:35 harlan@dog.pfcs.com +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.7 02/02/19 13:06:34 harlan@dog.pfcs.com +1 -1
- auto-union
-
-ChangeSet
- 1.706.3.1 02/02/19 13:04:34 harlan@dog.pfcs.com +9 -0
- PCM sound support, from Harlan Stenn.
-
- Zyfer GPStarplus support, from Harlan Stenn
-
- BitKeeper/etc/logging_ok
- 1.3.2.1 02/02/19 13:04:26 harlan@dog.pfcs.com +1 -0
- Logging to logging@openlogging.org accepted
-
- ntpd/refclock_zyfer.c
- 1.1 02/02/19 13:04:14 harlan@dog.pfcs.com +336 -0
-
- ntpd/refclock_zyfer.c
- 1.0 02/02/19 13:04:14 harlan@dog.pfcs.com +0 -0
- BitKeeper file /a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-dev/ntpd/refclock_zyfer.c
-
- ntpd/refclock_conf.c
- 1.16.1.1 02/02/19 13:04:14 harlan@dog.pfcs.com +8 -1
- Zyfer GPStarplus support.
-
- ntpd/ntp_control.c
- 1.39.1.7 02/02/19 13:04:13 harlan@dog.pfcs.com +1 -0
- Added Zyfer GPStarplus.
-
- ntpd/Makefile.am
- 1.24.1.1 02/02/19 13:04:12 harlan@dog.pfcs.com +4 -3
- refclock_zyfer.c added to refclock list.
-
- libntp/clocktypes.c
- 1.10.1.1 02/02/19 13:04:12 harlan@dog.pfcs.com +2 -0
- Zyfer GPStarplus support.
-
- libntp/audio.c
- 1.10 02/02/19 13:04:12 harlan@dog.pfcs.com +135 -18
- PCM audio support.
-
- include/ntp.h
- 1.50.2.1 02/02/19 13:04:11 harlan@dog.pfcs.com +2 -1
- Zyfer GPStarplus support.
-
- configure.in
- 1.226.2.1 02/02/19 13:04:09 harlan@dog.pfcs.com +14 -2
- PCM Audio support.
-
- Zyfer GPStarplus support.
-
-ChangeSet
- 1.683.5.1 02/02/19 12:52:08 harlan@dog.pfcs.com +10 -0
- Zyfer GPStarplus driver (From Harlan Stenn)
-
- debug cleanup in loopfilter.
-
- BitKeeper/etc/logging_ok
- 1.1.1.3 02/02/19 12:52:02 harlan@dog.pfcs.com +1 -0
- Logging to logging@openlogging.org accepted
-
- ntpd/refclock_zyfer.c
- 1.1 02/02/19 12:51:58 harlan@dog.pfcs.com +336 -0
-
- ntpd/refclock_zyfer.c
- 1.0 02/02/19 12:51:58 harlan@dog.pfcs.com +0 -0
- BitKeeper file /a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-stable/ntpd/refclock_zyfer.c
-
- html/driver42.html
- 1.1 02/02/19 12:51:57 harlan@dog.pfcs.com +39 -0
-
- ntpd/refclock_conf.c
- 1.13.1.3 02/02/19 12:51:57 harlan@dog.pfcs.com +8 -1
- Added hooks for the ZyferGPStarplus.
-
- html/driver42.html
- 1.0 02/02/19 12:51:57 harlan@dog.pfcs.com +0 -0
- BitKeeper file /a/local/etc/amd.stage/spot/._d/da3s1f/src/Networking/Xntp/ntp-stable/html/driver42.html
-
- ntpd/ntp_loopfilter.c
- 1.53.2.1 02/02/19 12:51:56 harlan@dog.pfcs.com +2 -2
- Don't divide the sys_jitter by mu, as mu may be zero.
-
- ntpd/ntp_control.c
- 1.37.3.3 02/02/19 12:51:54 harlan@dog.pfcs.com +1 -0
- Zyfer GPStarplus refclock.
-
- ntpd/Makefile.am
- 1.18.2.5 02/02/19 12:51:54 harlan@dog.pfcs.com +4 -3
- Added refclock_zyfer.c to the refclock list.
-
- libntp/clocktypes.c
- 1.7.1.3 02/02/19 12:51:54 harlan@dog.pfcs.com +2 -0
- Zyfer GPStarplus receiver.
-
- include/ntp.h
- 1.47.3.3 02/02/19 12:51:53 harlan@dog.pfcs.com +2 -1
- Zyfer GPStarplus receiver.
-
- configure.in
- 1.219.3.13 02/02/19 12:51:51 harlan@dog.pfcs.com +10 -0
- Zyfer GPStarplus refclock support.
-
-ChangeSet
- 1.706.2.24 02/02/19 12:37:55 stenn@whimsy.udel.edu +2 -0
- Don't enable the TT560 by default yet.
-
- Finish adding the hooks for the TT560.
-
- ntpd/refclock_conf.c
- 1.17 02/02/19 12:37:54 stenn@whimsy.udel.edu +8 -1
- Add the tt560 clock to the list.
-
- configure.in
- 1.226.1.17 02/02/19 12:37:53 stenn@whimsy.udel.edu +2 -2
- Disable the TT560 for now - it doesn't compile and I need to
- check in another driver.
-
-ChangeSet
- 1.785 02/02/19 00:30:20 stenn@whimsy.udel.edu +1 -0
- Allocate memory for entry->ce_name
- and remove some unnecessary code.
-
- From: John Hay.
-
- ntpd/ntp_intres.c
- 1.25 02/02/19 00:30:19 stenn@whimsy.udel.edu +3 -5
- Allocate memory for entry->ce_name
- and remove some unnecessary code.
-
- From: John Hay.
-
-ChangeSet
- 1.784 02/02/19 00:08:56 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_crypto.c
- 1.50 02/02/19 00:08:55 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.23 02/02/19 00:03:21 stenn@whimsy.udel.edu +1 -0
- struct value encrypt -> encryptval (avoid name collision).
-
- From: John Hay
-
- ntpd/ntp_crypto.c
- 1.48.1.2 02/02/19 00:03:20 stenn@whimsy.udel.edu +2 -2
- struct value encrypt -> encryptval (avoid name collision).
-
- From: John Hay
-
-ChangeSet
- 1.706.2.22 02/02/18 23:39:12 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_crypto.c
- 1.48.1.1 02/02/18 23:39:12 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.74 02/02/18 23:27:09 stenn@whimsy.udel.edu +1 -0
- ntp_adjtime() call cleanup.
- From: John Hay
-
- ntpd/ntp_crypto.c
- 1.43.1.2 02/02/18 23:27:08 stenn@whimsy.udel.edu +1 -3
- ntp_adjtime() call cleanup.
- From John Hay.
-
-ChangeSet
- 1.783 02/02/18 22:42:10 stenn@whimsy.udel.edu +1 -0
- Merge
-
- include/ntp.h
- 1.58 02/02/18 22:42:09 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
-ChangeSet
- 1.782 02/02/18 22:41:06 stenn@whimsy.udel.edu +1 -0
- Automerge cleanup.
-
- configure.in
- 1.240 02/02/18 22:23:54 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.21 02/02/18 22:17:33 stenn@whimsy.udel.edu +7 -0
- TrueTime 560 refclock.
-
- Some configure.in cleanup.
-
- ntpd/refclock_tt560.c
- 1.1 02/02/18 22:17:32 stenn@whimsy.udel.edu +274 -0
-
- kernel/sys/tt560_api.h
- 1.1 02/02/18 22:17:32 stenn@whimsy.udel.edu +489 -0
-
- ntpd/refclock_tt560.c
- 1.0 02/02/18 22:17:32 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/ntpd/refclock_tt560.c
-
- ntpd/Makefile.am
- 1.25 02/02/18 22:17:32 stenn@whimsy.udel.edu +11 -11
- A
-
- libntp/clocktypes.c
- 1.11 02/02/18 22:17:32 stenn@whimsy.udel.edu +4 -2
- TT560 support.
-
- kernel/sys/tt560_api.h
- 1.0 02/02/18 22:17:32 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/kernel/sys/tt560_api.h
-
- kernel/sys/Makefile.am
- 1.3 02/02/18 22:17:32 stenn@whimsy.udel.edu +1 -1
- noinst_HEADERS: add tt560_api.h
-
- include/ntp.h
- 1.50.1.6 02/02/18 22:17:32 stenn@whimsy.udel.edu +4 -3
- Add support for the TT560.
-
- configure.in
- 1.226.1.16 02/02/18 22:17:31 stenn@whimsy.udel.edu +188 -128
- Alphabetize the clock list by "enable" option name.
-
- Convert the clock enable list to AC_HELP_STRING() format.
-
- Add support for the TrueTime 560 clock.
-
-ChangeSet
- 1.706.2.20 02/02/18 13:39:54 stenn@whimsy.udel.edu +1 -0
- JJY driver doc cleanup from Takao Abe.
-
- html/driver40.htm
- 1.3 02/02/18 13:39:53 stenn@whimsy.udel.edu +39 -4
- Cleanup from Takao Abe
-
-ChangeSet
- 1.706.2.19 02/01/25 18:54:43 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_loopfilter.c
- 1.62 02/01/25 18:54:42 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.73 02/01/25 18:51:26 stenn@whimsy.udel.edu +1 -0
- mu can be 0, and the (old) debug info would divide sys_jitter by mu.
- Lose the division.
- From: Dave Mills.
-
- ntpd/ntp_loopfilter.c
- 1.53.1.3 02/01/25 18:51:25 stenn@whimsy.udel.edu +2 -2
- mu can be 0, and the (old) debug info would divide sys_jitter by mu.
- Lose the division.
- From: Dave Mills.
-
-ChangeSet
- 1.780 02/01/22 18:43:08 stenn@whimsy.udel.edu +1 -0
- Gotta wonder where this code went...
-
- ntpd/ntp_intres.c
- 1.24 02/01/22 18:43:08 stenn@whimsy.udel.edu +3 -0
- Gotta wonder where this code went...
-
-ChangeSet
- 1.706.2.18 02/01/22 18:19:55 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- util/ntp-genkeys.c
- 1.61 02/01/22 18:19:53 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.72 02/01/22 18:16:09 stenn@whimsy.udel.edu +2 -0
- Lint cleanup.
- From Marc.Brett@westerngeco.com
-
- util/ntp-genkeys.c
- 1.56.1.4 02/01/22 18:16:08 stenn@whimsy.udel.edu +0 -1
- Lint.
-
- ntpd/ntp_intres.c
- 1.17.1.3 02/01/22 18:16:08 stenn@whimsy.udel.edu +1 -1
- Lint.
-
-ChangeSet
- 1.779 02/01/17 18:01:29 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_proto.c
- 1.106 02/01/17 18:01:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.17 02/01/17 17:56:08 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_proto.c
- 1.99.1.6 02/01/17 17:56:07 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.71 02/01/17 17:52:47 stenn@whimsy.udel.edu +1 -0
- Lose the source port check. Too many folks are going thru Port and
- Address Translators, and present wisdom says that one should not
- trust source ports anyway.
-
- ntpd/ntp_proto.c
- 1.93.2.3 02/01/17 17:52:46 stenn@whimsy.udel.edu +1 -5
- Lose the source port check. Too many folks are going thru Port and
- Address Translators, and present wisdom says that one should not
- trust source ports anyway.
-
-ChangeSet
- 1.706.2.16 02/01/17 16:12:23 stenn@whimsy.udel.edu +3 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_palisade.c
- 1.11 02/01/17 16:12:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/refclock_local.c
- 1.9 02/01/17 16:12:22 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/refclock_jjy.c
- 1.9 02/01/17 16:12:22 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.70 02/01/17 16:02:37 stenn@whimsy.udel.edu +3 -0
- Lint cleanup from Marc.Brett@westerngeco.com .
-
- ntpd/refclock_palisade.c
- 1.9.1.1 02/01/17 16:02:36 stenn@whimsy.udel.edu +2 -0
- Lint.
-
- ntpd/refclock_local.c
- 1.6.1.1 02/01/17 16:02:36 stenn@whimsy.udel.edu +2 -0
- Lint.
-
- ntpd/refclock_jjy.c
- 1.2.2.1 02/01/17 16:02:36 stenn@whimsy.udel.edu +1 -4
- Lint.
-
-ChangeSet
- 1.683.4.69 02/01/13 11:52:50 stenn@whimsy.udel.edu +1 -0
- Disable the delta-changelog and related scripts.
-
- BitKeeper/triggers/trigger.cfg
- 1.8 02/01/13 11:52:49 stenn@whimsy.udel.edu +2 -2
- Disable the delta-changelog and related scripts.
-
-ChangeSet
- 1.776 02/01/13 11:33:49 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.239 02/01/13 11:33:48 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.14 02/01/13 11:23:35 stenn@whimsy.udel.edu +1 -0
- ntp-dev uses its own version string.
-
- configure.in
- 1.226.1.15 02/01/13 11:23:34 stenn@whimsy.udel.edu +0 -1
- ntp-dev uses its own version string.
-
-ChangeSet
- 1.683.4.68 02/01/12 23:36:13 stenn@whimsy.udel.edu +1 -0
- 4.1.0b-rc3
-
- configure.in
- 1.219.3.12 02/01/12 23:36:12 stenn@whimsy.udel.edu +1 -1
- 4.1.0b-rc3
-
-ChangeSet
- 1.706.2.13 02/01/12 02:15:25 stenn@whimsy.udel.edu +1 -0
- Validate the version of OpenSSL we're using against the version
- we had when we were compiled.
- If RAND_load_file() fails, print a bit more info. Still not enough...
-
- util/genkeys.c
- 1.6 02/01/12 02:15:24 stenn@whimsy.udel.edu +12 -1
- Validate the version of OpenSSL we're using against the version
- we had when we were compiled.
- If RAND_load_file() fails, print a bit more info. Still not enough...
-
-ChangeSet
- 1.706.2.12 02/01/10 20:48:59 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- NEWS
- 1.37 02/01/10 20:48:58 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.67 02/01/10 20:43:25 stenn@whimsy.udel.edu +1 -0
- Update the NEWS file.
-
- NEWS
- 1.31.1.6 02/01/10 20:43:25 stenn@whimsy.udel.edu +5 -0
- Update the NEWS file.
-
-ChangeSet
- 1.706.2.11 02/01/06 18:42:12 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/refclock_true.c
- 1.9 02/01/06 18:42:12 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.66 02/01/06 18:35:45 stenn@whimsy.udel.edu +1 -0
- Disable the refclock_report(peer, CEVNT_BADREPLY) if the GOES
- clock reports !(lon > 7000 && lon < 14000).
- From: Paul Vixie.
-
- ntpd/refclock_true.c
- 1.7.1.1 02/01/06 18:35:45 stenn@whimsy.udel.edu +1 -1
- Disable the refclock_report(peer, CEVNT_BADREPLY) if the GOES
- clock reports !(lon > 7000 && lon < 14000).
- From: Paul Vixie.
-
-ChangeSet
- 1.773 02/01/05 00:01:18 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_control.c
- 1.47 02/01/05 00:01:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.10 02/01/04 23:57:50 stenn@whimsy.udel.edu +1 -0
- Lose the extra EOV entry.
-
- ntpd/ntp_control.c
- 1.39.1.6 02/01/04 23:57:49 stenn@whimsy.udel.edu +1 -3
- Lose the extra EOV entry.
-
-ChangeSet
- 1.772 02/01/04 04:15:00 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_request.c
- 1.35 02/01/04 04:14:59 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.9 02/01/04 04:08:21 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_request.c
- 1.24.1.6 02/01/04 04:08:21 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.65 02/01/04 04:03:26 stenn@whimsy.udel.edu +1 -0
- Lose some implementation debug output.
- From: John Hay
-
- ntpd/ntp_request.c
- 1.23.2.5 02/01/04 04:03:25 stenn@whimsy.udel.edu +0 -7
- Lose some implementation debug output.
-
-ChangeSet
- 1.771 02/01/04 10:27:36 jhay@angel.cids.org.za +1 -0
- Fix another merge mistake. The implementation version is a variable in the -ipv6
- tree.
-
- ntpdc/ntpdc_ops.c
- 1.16 02/01/04 10:27:35 jhay@angel.cids.org.za +1 -1
- Fix another merge mistake. The implementation version is a variable in the -ipv6
- tree.
-
-ChangeSet
- 1.770 02/01/04 10:09:58 jhay@angel.cids.org.za +1 -0
- Fix merge mistake, remove duplicate struct req_pkt_tail.
-
- include/ntp_request.h
- 1.17 02/01/04 10:09:58 jhay@angel.cids.org.za +0 -10
- Fix merge mistake, remove duplicate struct req_pkt_tail.
-
-ChangeSet
- 1.769 02/01/04 10:02:57 jhay@angel.cids.org.za +4 -0
- merge (x)ntpdc compatibilty changes.
-
- ntpdc/ntpdc_ops.c
- 1.15 02/01/04 10:02:57 jhay@angel.cids.org.za +8 -7
- merge (x)ntpdc compatibilty changes.
-
- ntpdc/ntpdc.c
- 1.14 02/01/04 10:02:57 jhay@angel.cids.org.za +0 -36
- merge (x)ntpdc compatibilty changes.
-
- ntpd/ntp_request.c
- 1.34 02/01/04 10:02:57 jhay@angel.cids.org.za +13 -49
- merge (x)ntpdc compatibilty changes.
-
- include/ntp_request.h
- 1.16 02/01/04 08:52:16 jhay@angel.cids.org.za +0 -1
- Auto merged
-
-ChangeSet
- 1.706.2.8 02/01/04 01:08:45 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpdc/ntpdc.c
- 1.11.1.1 02/01/04 01:08:45 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_request.c
- 1.24.1.5 02/01/04 01:08:44 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.64 02/01/04 00:37:40 stenn@whimsy.udel.edu +4 -0
- From: John Hay <jhay@icomtek.csir.co.za>
- Subject: [ntp:hackers] (x)ntpdc compatibility patch
-
- And there was much rejoicing...
-
- ntpdc/ntpdc_ops.c
- 1.12.1.1 02/01/04 00:37:39 stenn@whimsy.udel.edu +7 -0
- If we get back INFO_ERR_FMT, try again with the old conf_peer size.
-
- ntpdc/ntpdc.c
- 1.8.1.2 02/01/04 00:37:39 stenn@whimsy.udel.edu +36 -5
- Handle sending packets of both size. We might need to send along
- a req_pkt_tail. If we send the request and get back INFO_ERR_FMT,
- try again with a req_pkt_size of 48.
-
- ntpd/ntp_request.c
- 1.23.2.4 02/01/04 00:37:39 stenn@whimsy.udel.edu +48 -11
- Deal with both short and long packets. REQ_CONFIG can have two
- sizes, too. Count old_conf_peer packets. Lose keystr - it's no
- longer used.
-
- include/ntp_request.h
- 1.10.1.3 02/01/04 00:37:39 stenn@whimsy.udel.edu +23 -0
- Added struct req_pkt_tail, REQ_LEN_HDR, and struct old_conf_peer.
-
-ChangeSet
- 1.768 02/01/03 13:29:04 jhay@angel.cids.org.za +1 -0
- proto_config() has 4 parameters in the IPv6 tree.
-
- ntpd/ntp_config.c
- 1.63 02/01/03 13:29:04 jhay@angel.cids.org.za +5 -5
- proto_config() has 4 parameters in the IPv6 tree.
-
-ChangeSet
- 1.767 02/01/03 13:09:39 jhay@angel.cids.org.za +4 -0
- merge
-
- ntpd/ntp_io.c
- 1.32 02/01/03 13:09:39 jhay@angel.cids.org.za +3 -8
- Merge virtual ips on loopback device.
-
- configure.in
- 1.238 02/01/03 12:37:01 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- BitKeeper/etc/logging_ok
- 1.8 02/01/03 12:36:51 jhay@angel.cids.org.za +0 -1
- auto-union
-
-ChangeSet
- 1.706.2.7 02/01/02 23:57:06 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_io.c
- 1.21.1.4 02/01/02 23:57:05 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.63 02/01/02 23:52:46 stenn@whimsy.udel.edu +1 -0
- The loopback is OK if we're listening to virtual IPs.
- Show candidate interface addresses during debug.
- From: Paul Vixie
-
- ntpd/ntp_io.c
- 1.20.2.3 02/01/02 23:52:46 stenn@whimsy.udel.edu +14 -8
- The loopback is OK if we're listening to virtual IPs.
- Show candidate interface addresses during debug.
-
-ChangeSet
- 1.706.2.6 02/01/02 22:50:05 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/deleted/.del-README.cvs~1e180ca3
- 1.10 02/01/02 22:50:05 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.226.1.14 02/01/02 22:50:04 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-README.cvs~1e180ca3
- 1.6.2.2 02/01/02 22:50:04 stenn@whimsy.udel.edu +0 -0
- Merge rename: README.cvs -> BitKeeper/deleted/.del-README.cvs~1e180ca3
-
-ChangeSet
- 1.683.4.62 02/01/02 22:36:34 stenn@whimsy.udel.edu +1 -0
- F_SETOWN bsdi typo fix
- From: Paul Vixie
-
- configure.in
- 1.219.3.11 02/01/02 22:36:33 stenn@whimsy.udel.edu +1 -1
- F_SETOWN bsdi typo fix
- From: Paul Vixie
-
-ChangeSet
- 1.683.4.61 02/01/02 22:26:22 stenn@whimsy.udel.edu +2 -0
- Boring documentation cleanup.
-
- README.versions
- 1.2 02/01/02 22:26:22 stenn@whimsy.udel.edu +1 -1
- Bit-o-cleanup...
-
- README.cvs
- 1.6.2.1 02/01/02 22:26:22 stenn@whimsy.udel.edu +4 -0
- Note that the CVS repo is dormant.
-
-ChangeSet
- 1.706.2.5 01/12/31 19:31:31 stenn@whimsy.udel.edu +1 -0
- Document the "includefile" config parameter.
- From: Dean Gibson.
-
- html/miscopt.htm
- 1.16 01/12/31 19:31:31 stenn@whimsy.udel.edu +9 -0
- Document the "includefile" config parameter.
-
-ChangeSet
- 1.765 01/12/31 03:03:54 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- include/ntpd.h
- 1.38 01/12/31 03:03:53 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.237 01/12/31 03:03:53 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.4 01/12/31 02:54:46 stenn@whimsy.udel.edu +3 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_loopfilter.c
- 1.61 01/12/31 02:54:45 stenn@whimsy.udel.edu +0 -55
- Auto merged
-
- include/ntpd.h
- 1.31.1.4 01/12/31 02:54:45 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
- configure.in
- 1.226.1.13 01/12/31 02:54:45 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.764 01/12/31 02:53:22 stenn@whimsy.udel.edu +9 -0
- Automerge Dvae's recent changes from ntp-dev.
- I probably broke something when doing the conflict resolution on
- ntp_proto.c .
-
- ntpd/ntp_proto.c
- 1.105 01/12/31 02:53:21 stenn@whimsy.udel.edu +0 -2
- Somebody should look at this patch - there are differences between
- this and ntp-dev that I just don't understand. Things like svalue/value
- and the new "weeding" of the manycast survivors.
-
- ntpq/ntpq.c
- 1.22 01/12/31 02:37:51 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/refclock_parse.c
- 1.20 01/12/31 02:37:50 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.39 01/12/31 02:37:49 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_control.c
- 1.46 01/12/31 02:37:46 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.62 01/12/31 02:37:46 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntpd.h
- 1.37 01/12/31 02:37:46 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_control.h
- 1.19 01/12/31 02:37:46 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.57 01/12/31 02:37:45 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.3 01/12/31 02:32:00 stenn@whimsy.udel.edu +30 -0
- Changes/improvements from Dave Mills.
-
- html/manyopt.htm
- 1.1 01/12/31 02:31:58 stenn@whimsy.udel.edu +265 -0
-
- ntpq/ntpq.c
- 1.19.1.1 01/12/31 02:31:58 stenn@whimsy.udel.edu +0 -1
- ttlmax -> ttl cleanup.
-
- ntpd/refclock_wwv.c
- 1.33 01/12/31 02:31:58 stenn@whimsy.udel.edu +3 -3
- ttlmax -> ttl cleanup.
-
- html/manyopt.htm
- 1.0 01/12/31 02:31:58 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/html/manyopt.htm
-
- ntpd/refclock_usno.c
- 1.8 01/12/31 02:31:57 stenn@whimsy.udel.edu +1 -1
- ttlmax -> ttl cleanup.
-
- ntpd/refclock_parse.c
- 1.18.1.1 01/12/31 02:31:57 stenn@whimsy.udel.edu +2 -2
- ttlmax -> ttl cleanup.
-
- ntpd/refclock_nmea.c
- 1.18 01/12/31 02:31:57 stenn@whimsy.udel.edu +2 -2
- ttlmax -> ttl cleanup.
-
- ntpd/refclock_jjy.c
- 1.8 01/12/31 02:31:57 stenn@whimsy.udel.edu +7 -7
- ttlmax -> ttl cleanup.
-
- ntpd/refclock_heath.c
- 1.11 01/12/31 02:31:57 stenn@whimsy.udel.edu +1 -1
- ttlmax -> ttl cleanup.
-
- ntpd/refclock_chu.c
- 1.26 01/12/31 02:31:57 stenn@whimsy.udel.edu +4 -4
- ttlmax -> ttl cleanup.
-
- ntpd/refclock_as2201.c
- 1.9 01/12/31 02:31:56 stenn@whimsy.udel.edu +1 -1
- pp->nsec is a "long".
-
- ntpd/refclock_acts.c
- 1.10 01/12/31 02:31:56 stenn@whimsy.udel.edu +1 -1
- ttlmax -> ttl cleanup.
-
- ntpd/ntp_proto.c
- 1.99.1.5 01/12/31 02:31:56 stenn@whimsy.udel.edu +195 -134
- FLOOR, CEILING, MINSANE, MINCLOCK, COHORT, and ttl cleanup.
- Other cleanup/improvements.
-
- ntpd/ntp_peer.c
- 1.32.1.4 01/12/31 02:31:56 stenn@whimsy.udel.edu +3 -3
- ttlmax -> ttl cleanup.
-
- ntpd/ntp_loopfilter.c
- 1.60 01/12/31 02:31:56 stenn@whimsy.udel.edu +1 -1
- allow_panic should be FALSE in the default case.
-
- ntpd/ntp_control.c
- 1.39.1.5 01/12/31 02:31:55 stenn@whimsy.udel.edu +5 -13
- Lose TTLMAX. Cleanup.
-
- ntpd/ntp_config.c
- 1.52.1.7 01/12/31 02:31:55 stenn@whimsy.udel.edu +78 -9
- TOS config stuff. Cleanup/validation.
-
- include/ntpd.h
- 1.31.1.3 01/12/31 02:31:55 stenn@whimsy.udel.edu +7 -1
- Add support for minclock, minsane, floor, ceiling, and the
- ttl cleanup.
-
- include/ntp_control.h
- 1.15.1.3 01/12/31 02:31:55 stenn@whimsy.udel.edu +9 -10
- Lose TTLMAX.
-
- include/ntp_config.h
- 1.15 01/12/31 02:31:55 stenn@whimsy.udel.edu +14 -4
- CONFIG_ TOS, TTL, and INCLUDEFILE.
- CONFIG_TOS_ MINCLOC, MINSANE, FLOOR, CEILING, and COHORT.
-
- include/ntp.h
- 1.50.1.5 01/12/31 02:31:55 stenn@whimsy.udel.edu +7 -2
- Lose ttlmax; ttl alone is just fine.
- MINCLOCK, MINSANE, FLOOR, CEILING, and COHORT.
-
- html/release.htm
- 1.18 01/12/31 02:31:55 stenn@whimsy.udel.edu +55 -65
- Cleanup. Note that ntpdate is headed for retirement.
- Talk about the PPS refclock.
-
- html/quick.htm
- 1.7 01/12/31 02:31:54 stenn@whimsy.udel.edu +4 -4
- Cleanup.
-
- html/ntpd.htm
- 1.16 01/12/31 02:31:54 stenn@whimsy.udel.edu +2 -1
- Cleanup. Reference the new manyopt.htm page.
-
- html/miscopt.htm
- 1.15 01/12/31 02:31:54 stenn@whimsy.udel.edu +46 -40
- Cleanup. Discuss the new "tinker" options.
-
- html/index.htm
- 1.13 01/12/31 02:31:54 stenn@whimsy.udel.edu +50 -15
- Cleanup. Mention the OpenSSL crypto stuff, and manycast.
-
- html/hints.htm
- 1.6 01/12/31 02:31:54 stenn@whimsy.udel.edu +1 -1
- Cleanup.
-
- html/build.htm
- 1.10 01/12/31 02:31:54 stenn@whimsy.udel.edu +42 -36
- Lose the RSAREF comments, talk about OpenSSL instead.
- Cleanup. Mention the .rnd file and point folks at the directions
- for generating auth keys. Also mention the manyicast stuff.
-
- html/authopt.htm
- 1.16 01/12/31 02:31:54 stenn@whimsy.udel.edu +11 -8
- Cleanup. Update the "crypto" config line.
-
- html/assoc.htm
- 1.10 01/12/31 02:31:54 stenn@whimsy.udel.edu +9 -97
- Cleanup. Moved a bunch of stuff to the new manyopt.htm page.
-
- conf/baldwin.conf
- 1.4 01/12/31 02:31:54 stenn@whimsy.udel.edu +7 -31
- Converted to a manycast configuration file.
-
-ChangeSet
- 1.683.4.60 01/12/31 00:53:29 stenn@whimsy.udel.edu +3 -0
- Later verisons of FreeBSD need the PARENB IGNPAR thing.
- Backport ntp_loopfilter fixes.
-
- ntpd/ntp_loopfilter.c
- 1.53.1.2 01/12/31 00:53:28 stenn@whimsy.udel.edu +55 -26
- Backport ntp_loopfilter fixes.
-
- include/ntpd.h
- 1.27.2.2 01/12/31 00:53:28 stenn@whimsy.udel.edu +1 -1
- Backport ntp_loopfilter fixes.
-
- configure.in
- 1.219.3.10 01/12/31 00:53:28 stenn@whimsy.udel.edu +5 -0
- Later verisons of FreeBSD need the PARENB IGNPAR thing.
-
-ChangeSet
- 1.763 01/12/22 00:22:06 stenn@whimsy.udel.edu +3 -0
- Resolve automerge conflict: removed refclock_atom's LEAP_NOWARNING.
- Could be wrong...
-
- ntpd/refclock_atom.c
- 1.38 01/12/22 00:22:06 stenn@whimsy.udel.edu +1 -2
- Remove pp->leap = LEAP_NOWARNING. Could be wrong...
-
- ntpd/ntp_refclock.c
- 1.44 01/12/21 23:58:20 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_refclock.h
- 1.13 01/12/21 23:58:19 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.2.2 01/12/21 23:27:19 stenn@whimsy.udel.edu +2 -0
- Documentation cleanup from Dave Mills.
-
- html/howto.htm
- 1.7 01/12/21 23:27:18 stenn@whimsy.udel.edu +346 -246
- Documentation cleanup
-
- html/driver36.htm
- 1.10 01/12/21 23:27:18 stenn@whimsy.udel.edu +97 -122
- Documentation cleanup
-
-ChangeSet
- 1.706.2.1 01/12/21 22:24:22 stenn@whimsy.udel.edu +37 -0
- Guys,
-
- Fixed a wee bug and the house caved in. Just about every driver was
- broken in a little evil way and broke the interface conventions in the
- following:
-
- 1. The drivers did not correctly update the reference time variable
- pp->lastref. Some left it untouched, some broke the rule that the
- reference time must not be later than the receive timestamp. I added
- pp->lastref = pp->lastrec just before the refclock_receive() call, which
- should be correct in most cases. For those drivers that use
- refclock_process(), coders might want to move the line just before that
- call.
-
- 2. There were two variables pp->usec and pp->msec for microseconds and
- milliseconds, respectively, of the second. There was no provision for
- nanoseconds. Some drivers used both of these, which was not handled
- correctly in the interface. I removed both and replaced with pp->nsec
- for nanoseconds and recoded various drivers to do that correctly.
-
- 3. Some drivers did not zero the fraction part of the l_fp offset
- variable computed by clocktime(). This was the first thing I noticed in
- testing. The result in some cases was garbage when computing the
- difference between clock time and system time.
-
- 4. The SAMPLE macro in ntp_refclock.h and the refclock_sample() routine
- was defective. If the median filter ever filled up, the latter would
- consider it empty and toss the entire filter contents. The intent when
- the filter fills up is that old samples are overwritten and the filter
- retains its maximum size untl refclock_receive() empties it.
-
- 5. Small changes were made to interface routines in order to improve and
- simplify the debug trace.
-
- While I carefully checked all the drivers and the changes are minor, I
- am able to test only a few, including the audio drivers, PSTI,
- Spectracom, Arbiter and PPS, which do just fine. I have done nothing for
- the parse drivers, which may or may not need the same updates. I was
- able to confirm the Solaris, SunOS, FreeBSD and Linux builds work. Later
- for HPUX and Alpha.
-
- Aside: In experimenting with the -N high option, which is necessary for
- the WWV audio driver, I discovered some little evils. First, the serial
- port jitter is terrible with my Ultra 30 - simething like 10 ms - and
- the latency surprisingly large, like 10 ms. Checking timestamps, I
- discovered without -N the CR and LF have the same timestamp, while with
- -N they have separate and much more precise timestamps. I also
- discovered for whatever reason the monitor function of the audio codec
- doesn't work in the Ultra 30, but works just fine using the same code in
- the Blade 1000, both Solariba 8.
-
- ntpd/refclock_wwvb.c
- 1.11 01/12/21 22:24:21 stenn@whimsy.udel.edu +20 -17
- Dave's big cleanup
-
- ntpd/refclock_wwv.c
- 1.32 01/12/21 22:24:20 stenn@whimsy.udel.edu +12 -11
- Dave's big cleanup
-
- ntpd/refclock_usno.c
- 1.7 01/12/21 22:24:20 stenn@whimsy.udel.edu +2 -1
- Dave's big cleanup
-
- ntpd/refclock_ulink.c
- 1.12 01/12/21 22:24:20 stenn@whimsy.udel.edu +6 -7
- Dave's big cleanup
-
- ntpd/refclock_true.c
- 1.8 01/12/21 22:24:20 stenn@whimsy.udel.edu +3 -1
- Dave's big cleanup
-
- ntpd/refclock_trak.c
- 1.8 01/12/21 22:24:20 stenn@whimsy.udel.edu +1 -0
- Dave's big cleanup
-
- ntpd/refclock_tpro.c
- 1.7 01/12/21 22:24:20 stenn@whimsy.udel.edu +2 -0
- Dave's big cleanup
-
- ntpd/refclock_shm.c
- 1.11 01/12/21 22:24:20 stenn@whimsy.udel.edu +1 -0
- Dave's big cleanup
-
- ntpd/refclock_pst.c
- 1.7 01/12/21 22:24:20 stenn@whimsy.udel.edu +24 -20
- Dave's big cleanup
-
- ntpd/refclock_pcf.c
- 1.7 01/12/21 22:24:19 stenn@whimsy.udel.edu +3 -2
- Dave's big cleanup
-
- ntpd/refclock_palisade.c
- 1.10 01/12/21 22:24:19 stenn@whimsy.udel.edu +7 -7
- Dave's big cleanup
-
- ntpd/refclock_oncore.c
- 1.39 01/12/21 22:24:19 stenn@whimsy.udel.edu +1 -1
- Dave's big cleanup
-
- ntpd/refclock_nmea.c
- 1.17 01/12/21 22:24:19 stenn@whimsy.udel.edu +7 -7
- Dave's big cleanup
-
- ntpd/refclock_mx4200.c
- 1.16 01/12/21 22:24:19 stenn@whimsy.udel.edu +1 -3
- Dave's big cleanup
-
- ntpd/refclock_local.c
- 1.8 01/12/21 22:24:19 stenn@whimsy.udel.edu +1 -0
- Dave's big cleanup
-
- ntpd/refclock_leitch.c
- 1.6 01/12/21 22:24:19 stenn@whimsy.udel.edu +1 -0
- Dave's big cleanup
-
- ntpd/refclock_jupiter.c
- 1.9 01/12/21 22:24:18 stenn@whimsy.udel.edu +4 -8
- Dave's big cleanup
-
- ntpd/refclock_jjy.c
- 1.7 01/12/21 22:24:18 stenn@whimsy.udel.edu +3 -5
- Dave's big cleanup
-
- ntpd/refclock_irig.c
- 1.12 01/12/21 22:24:18 stenn@whimsy.udel.edu +94 -84
- Dave's big cleanup
-
- ntpd/refclock_hpgps.c
- 1.6 01/12/21 22:24:18 stenn@whimsy.udel.edu +1 -0
- Dave's big cleanup
-
- ntpd/refclock_hopfser.c
- 1.4 01/12/21 22:24:18 stenn@whimsy.udel.edu +1 -0
- Dave's big cleanup
-
- ntpd/refclock_hopfpci.c
- 1.4 01/12/21 22:24:18 stenn@whimsy.udel.edu +1 -2
- Dave's big cleanup
-
- ntpd/refclock_heath.c
- 1.10 01/12/21 22:24:18 stenn@whimsy.udel.edu +15 -51
- Dave's big cleanup
-
- ntpd/refclock_gpsvme.c
- 1.6 01/12/21 22:24:18 stenn@whimsy.udel.edu +8 -5
- Dave's big cleanup
-
- ntpd/refclock_fg.c
- 1.8 01/12/21 22:24:18 stenn@whimsy.udel.edu +5 -5
- Dave's big cleanup
-
- ntpd/refclock_dumbclock.c
- 1.6 01/12/21 22:24:18 stenn@whimsy.udel.edu +2 -2
- Dave's big cleanup
-
- ntpd/refclock_datum.c
- 1.8 01/12/21 22:24:17 stenn@whimsy.udel.edu +2 -0
- Dave's big cleanup
-
- ntpd/refclock_chu.c
- 1.25 01/12/21 22:24:17 stenn@whimsy.udel.edu +6 -5
- Dave's big cleanup
-
- ntpd/refclock_chronolog.c
- 1.6 01/12/21 22:24:17 stenn@whimsy.udel.edu +2 -2
- Dave's big cleanup
-
- ntpd/refclock_bancomm.c
- 1.8 01/12/21 22:24:17 stenn@whimsy.udel.edu +2 -1
- Dave's big cleanup
-
- ntpd/refclock_atom.c
- 1.34.1.3 01/12/21 22:24:17 stenn@whimsy.udel.edu +1 -0
- Dave's big cleanup
-
- ntpd/refclock_as2201.c
- 1.8 01/12/21 22:24:17 stenn@whimsy.udel.edu +2 -1
- Dave's big cleanup
-
- ntpd/refclock_arc.c
- 1.9 01/12/21 22:24:17 stenn@whimsy.udel.edu +1 -5
- Dave's big cleanup
-
- ntpd/refclock_arbiter.c
- 1.6 01/12/21 22:24:17 stenn@whimsy.udel.edu +2 -1
- Dave's big cleanup
-
- ntpd/refclock_acts.c
- 1.9 01/12/21 22:24:17 stenn@whimsy.udel.edu +2 -1
- Dave's big cleanup
-
- ntpd/ntp_refclock.c
- 1.40.1.4 01/12/21 22:24:16 stenn@whimsy.udel.edu +29 -22
- Dave's big cleanup
-
- include/ntp_refclock.h
- 1.9.1.3 01/12/21 22:24:16 stenn@whimsy.udel.edu +7 -7
- Dave's big cleanup
-
-ChangeSet
- 1.706.1.59 01/12/21 16:45:12 jhay@angel.cids.org.za +2 -0
- Merge
-
- BitKeeper/etc/logging_ok
- 1.3.1.5 01/12/21 16:45:12 jhay@angel.cids.org.za +1 -0
- Auto merged
-
- BitKeeper/deleted/.del-logging_ok~f9e0e77ee75409f0
- 1.2 01/12/21 16:45:12 jhay@angel.cids.org.za +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/etc/logging_ok
- 1.1 01/12/21 15:46:14 jhay@angel.cids.org.za +1 -0
-
-ChangeSet
- 1.706.1.58 01/12/21 15:46:14 jhay@angel.cids.org.za +2 -0
- Merge bk://ntp.bkserver.net/ntp-dev
- into angel.cids.org.za:/home/ntp/ntp-dev
-
- BitKeeper/etc/logging_ok
- 1.0 01/12/21 15:46:14 jhay@angel.cids.org.za +0 -0
- BitKeeper file /home/ntp/ntp-dev/RESYNC/BitKeeper/etc/logging_ok
-
-ChangeSet
- 1.762 01/12/19 18:56:48 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.236 01/12/19 18:56:47 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.25 01/12/19 18:56:47 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.57 01/12/19 18:52:03 stenn@whimsy.udel.edu +2 -0
- Usual nits when the parent's version is changed.
-
- configure.in
- 1.226.1.12 01/12/19 18:52:03 stenn@whimsy.udel.edu +0 -1
- Nits.
-
- Makefile.am
- 1.16.1.8 01/12/19 18:52:02 stenn@whimsy.udel.edu +0 -0
- Nits.
-
-ChangeSet
- 1.683.4.59 01/12/19 15:57:09 stenn@whimsy.udel.edu +1 -0
- Distribute README.versions .
-
- Makefile.am
- 1.12.1.13 01/12/19 15:57:07 stenn@whimsy.udel.edu +1 -0
- Distribute README.versions .
-
-ChangeSet
- 1.706.1.56 01/12/18 21:23:31 stenn@whimsy.udel.edu +1 -0
- 4.1.72
-
- configure.in
- 1.226.1.11 01/12/18 21:23:30 stenn@whimsy.udel.edu +1 -1
- 4.1.72
-
-ChangeSet
- 1.706.1.55 01/12/18 20:17:53 stenn@whimsy.udel.edu +3 -0
- Cleanup from Dave Mills.
-
- ntpd/refclock_wwv.c
- 1.31 01/12/18 20:17:52 stenn@whimsy.udel.edu +25 -34
- Cleanup from Dave Mills.
-
- ntpd/refclock_irig.c
- 1.11 01/12/18 20:17:52 stenn@whimsy.udel.edu +5 -9
- Cleanup from Dave Mills.
-
- ntpd/refclock_chu.c
- 1.24 01/12/18 20:17:52 stenn@whimsy.udel.edu +4 -6
- Cleanup from Dave Mills.
-
-ChangeSet
- 1.683.4.58 01/12/18 19:27:29 stenn@whimsy.udel.edu +1 -0
- 4.1.0b-rc2
-
- configure.in
- 1.219.3.9 01/12/18 19:27:28 stenn@whimsy.udel.edu +1 -1
- 4.1.0b-rc2
-
-ChangeSet
- 1.761 01/12/17 23:32:08 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpdate/ntpdate.c
- 1.31 01/12/17 23:32:07 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.57 01/12/17 23:25:13 stenn@whimsy.udel.edu +1 -0
- Be more verbose/descriptive of problems in debug mode.
- From: Todd MacDermid <tmacderm@uu.net>
-
- ntpdate/ntpdate.c
- 1.23.1.4 01/12/17 23:25:12 stenn@whimsy.udel.edu +30 -9
- Be more verbose/descriptive of problems in debug mode.
- From: Todd MacDermid <tmacderm@uu.net>
-
-ChangeSet
- 1.760 01/12/17 00:37:32 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- libntp/machines.c
- 1.16 01/12/17 00:37:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.53 01/12/17 00:29:05 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- libntp/machines.c
- 1.12.1.3 01/12/17 00:29:05 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.56 01/12/17 00:26:09 stenn@whimsy.udel.edu +1 -0
- Make the ntp_set_tod() debug messages less confusing/chatty.
-
- libntp/machines.c
- 1.11.1.2 01/12/17 00:26:09 stenn@whimsy.udel.edu +16 -16
- Make the ntp_set_tod() debug messages less confusing/chatty.
-
-ChangeSet
- 1.706.1.52 01/12/16 23:16:41 stenn@whimsy.udel.edu +1 -0
- cleanup/improvements from Dave Mills.
-
- ntpd/refclock_wwv.c
- 1.30 01/12/16 23:16:40 stenn@whimsy.udel.edu +233 -191
- cleanup/improvements from Dave Mills.
-
-ChangeSet
- 1.706.1.51 01/12/16 01:41:34 stenn@whimsy.udel.edu +1 -0
- cleanup for systems without sys/audioio.h .
- From Dave Mills.
-
- libntp/audio.c
- 1.9 01/12/16 01:41:33 stenn@whimsy.udel.edu +6 -5
- cleanup for systems without sys/audioio.h .
- From Dave Mills.
-
-ChangeSet
- 1.683.4.55 01/12/14 02:43:08 stenn@whimsy.udel.edu +1 -0
- This patch fixes a bug in NTP which appears if NTP is built on a system
- where signaled I/O is used, i.e. HAVE_SIGNALED_IO is defined in
- config.h. The bug has been found in ntp-4.1.71 but seems to last in the
- NTP code since the xntp3 days.
-
- The symptom:
- If a radio clock is connected via the serial port using the parse driver
- (driver 8) then there are lots of messages in the syslog saying:
- > 31 Oct 09:13:42 ntpd[6708]: input_handler: handler_count is 2!
- > 31 Oct 09:13:42 ntpd[6708]: input_handler: handler_count is 2!
-
- This has been observed under AIX 4.3.2 and Solaris 8, and the patch
- works in both cases. This effect is very obvious if a radio clock is
- connected via a serial interface, and a SIGIO signal is raised whenever
- a character has been received. It's a common problem, however, but the
- probability that a signal is raised again while the handler for the
- previous signal is still executing is much less if there
- are only signals if network packets are received.
-
- The fix:
- The patch below is used to take care that the SIGIO signal is not
- unintentionally unblocked inside the sigio_handler() if the handler
- executes a piece of code that is bracketed by BLOCKIO()/UNBLOCKIO()
- calls.
-
- From: Martin Burnicki <martin.burnicki@meinberg.de>
-
- libntp/iosignal.c
- 1.9 01/12/14 02:43:08 stenn@whimsy.udel.edu +72 -39
- This patch fixes a bug in NTP which appears if NTP is built on a system
- where signaled I/O is used, i.e. HAVE_SIGNALED_IO is defined in
- config.h. The bug has been found in ntp-4.1.71 but seems to last in the
- NTP code since the xntp3 days.
-
- The symptom:
- If a radio clock is connected via the serial port using the parse driver
- (driver 8) then there are lots of messages in the syslog saying:
- > 31 Oct 09:13:42 ntpd[6708]: input_handler: handler_count is 2!
- > 31 Oct 09:13:42 ntpd[6708]: input_handler: handler_count is 2!
-
- This has been observed under AIX 4.3.2 and Solaris 8, and the patch
- works in both cases. This effect is very obvious if a radio clock is
- connected via a serial interface, and a SIGIO signal is raised whenever
- a character has been received. It's a common problem, however, but the
- probability that a signal is raised again while the handler for the
- previous signal is still executing is much less if there
- are only signals if network packets are received.
-
- The fix:
- The patch below is used to take care that the SIGIO signal is not
- unintentionally unblocked inside the sigio_handler() if the handler
- executes a piece of code that is bracketed by BLOCKIO()/UNBLOCKIO()
- calls.
-
- From: Martin Burnicki <martin.burnicki@meinberg.de>
-
-ChangeSet
- 1.756 01/12/12 21:53:52 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpdate/ntpdate.c
- 1.30 01/12/12 21:53:51 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.54 01/12/12 21:46:20 stenn@whimsy.udel.edu +1 -0
- Alter the "ci" calculation to reduce the chance of overflow.
- From: Michael Andres <ma@suse.de>
-
- ntpdate/ntpdate.c
- 1.23.1.3 01/12/12 21:46:19 stenn@whimsy.udel.edu +8 -2
- Alter the "ci" calculation to reduce the chance of overflow.
- From: Michael Andres <ma@suse.de>
-
-ChangeSet
- 1.706.1.48 01/12/11 02:03:30 stenn@whimsy.udel.edu +5 -0
- wwv/audio improvements from Dave Mills.
-
- ntpd/refclock_wwv.c
- 1.29 01/12/11 02:03:29 stenn@whimsy.udel.edu +282 -358
- Improvements and cleanup.
-
- ntpd/refclock_irig.c
- 1.10 01/12/11 02:03:29 stenn@whimsy.udel.edu +28 -26
- Improvements.
-
- ntpd/refclock_chu.c
- 1.23 01/12/11 02:03:29 stenn@whimsy.udel.edu +42 -70
- Improvements.
-
- libntp/audio.c
- 1.8 01/12/11 02:03:29 stenn@whimsy.udel.edu +16 -12
- audio_init()'s new arg is bufsize, plus various improvements.
- Audio_gain()'s new arg is monitor gain, plus various improvements.
-
- include/audio.h
- 1.4 01/12/11 02:03:28 stenn@whimsy.udel.edu +4 -3
- audio_init() and audio_gain() now take another arg.
-
-ChangeSet
- 1.683.4.53 01/12/10 22:02:24 stenn@whimsy.udel.edu +1 -0
- Properly check the pps_device variable.
- From: "David G. Andersen" <dga@lcs.mit.edu>
-
- ntpd/refclock_oncore.c
- 1.38 01/12/10 22:02:23 stenn@whimsy.udel.edu +1 -1
- Properly check the pps_device variable.
- From: "David G. Andersen" <dga@lcs.mit.edu>
-
-ChangeSet
- 1.753 01/12/06 11:03:58 jhay@angel.cids.org.za +3 -0
- Portability fixes to make it compile on the Udel flock.
-
- ntpdc/ntpdc_ops.c
- 1.14 01/12/06 11:03:58 jhay@angel.cids.org.za +38 -8
- Portability fixes to make it compile on the Udel flock.
-
- ntpdc/ntpdc.c
- 1.13 01/12/06 11:03:58 jhay@angel.cids.org.za +1 -1
- Portability fixes to make it compile on the Udel flock.
-
- ntpd/ntp_request.c
- 1.33 01/12/06 11:03:58 jhay@angel.cids.org.za +21 -2
- Portability fixes to make it compile on the Udel flock.
-
-ChangeSet
- 1.752 01/12/05 21:22:32 jhay@angel.cids.org.za +1 -0
- Merge angel.cids.org.za:/home/ntp/ntp-dev-ipv6-clean
- into angel.cids.org.za:/home/ntp/ntp-dev-ipv6
-
- ntpd/ntp_request.c
- 1.32 01/12/05 21:22:32 jhay@angel.cids.org.za +0 -0
- Auto merged
-
-ChangeSet
- 1.745.1.1 01/12/05 21:21:09 jhay@angel.cids.org.za +9 -0
- Add IPv6 support for ntpdc and make both ntpd and ntpdc capable of talking to
- older versions of (x)ntpdc and (x)ntpd.
-
- ntpdc/ntpdc_ops.c
- 1.13 01/12/05 21:21:08 jhay@angel.cids.org.za +689 -208
- Add IPv6 support to ntpdc and also make it capable of talking to older versions
- of ntpd.
-
- ntpdc/ntpdc.h
- 1.3 01/12/05 21:21:08 jhay@angel.cids.org.za +8 -3
- Add IPv6 support to ntpdc and also make it capable of talking to older versions
- of ntpd.
-
- ntpdc/ntpdc.c
- 1.12 01/12/05 21:21:08 jhay@angel.cids.org.za +180 -70
- Add IPv6 support to ntpdc and also make it capable of talking to older versions
- of ntpd.
-
- ntpd/ntp_request.c
- 1.30.1.1 01/12/05 21:21:08 jhay@angel.cids.org.za +609 -362
- Add IPv6 support to mode 7 packets and add backward compatability so that just
- about any (x)ntpdc can talk to it.
-
- ntpd/ntp_peer.c
- 1.38 01/12/05 21:21:08 jhay@angel.cids.org.za +1 -1
- Handle the case where dstadr == NULL correctly.
-
- ntpd/ntp_intres.c
- 1.23 01/12/05 21:21:08 jhay@angel.cids.org.za +25 -10
- Catch up to the ntp_request.h changes.
-
- include/ntpd.h
- 1.36 01/12/05 21:21:08 jhay@angel.cids.org.za +2 -1
- Export the IPv6 restrictlist.
-
- include/ntp_request.h
- 1.15 01/12/05 21:21:08 jhay@angel.cids.org.za +95 -28
- Add IPv6 addresses to structures for use by ntpdc. Also add struct req_pkt_tail
- so that variable length request packets can be supported.
-
- include/ntp.h
- 1.56 01/12/05 21:21:08 jhay@angel.cids.org.za +5 -0
- Add some macros used in the ntpdc port to IPv6.
-
-ChangeSet
- 1.706.1.46 01/12/05 03:25:31 stenn@whimsy.udel.edu +1 -0
- Fix the "gone" file.
-
- BitKeeper/etc/gone
- 1.1 01/12/05 03:21:09 stenn@whimsy.udel.edu +1 -0
-
- BitKeeper/etc/gone
- 1.0 01/12/05 03:21:09 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev/BitKeeper/etc/gone
-
-ChangeSet
- 1.751 01/12/05 02:44:54 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
-ChangeSet
- 1.706.1.45 01/12/05 02:35:45 stenn@whimsy.udel.edu +1 -0
- Use the right copy of refclock_jjy.c
-
- ntpd/refclock_jjy.c
- 1.6 01/12/05 02:35:44 stenn@whimsy.udel.edu +0 -0
- Use the right copy of the file...
-
- refclock_jjy.c
- 1.5 01/12/05 02:19:59 stenn@whimsy.udel.edu +0 -0
- Rename: BitKeeper/deleted/.del-refclock_jjy.c -> refclock_jjy.c
-
-ChangeSet
- 1.706.1.44 01/12/05 01:28:27 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/deleted/.del-refclock_jjy.c
- 1.4 01/12/05 01:28:27 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-refclock_jjy.c
- 1.2.1.2 01/12/05 01:28:26 stenn@whimsy.udel.edu +0 -0
- Merge rename: ntpd/refclock_jjy.c -> BitKeeper/deleted/.del-refclock_jjy.c
-
-ChangeSet
- 1.683.4.52 01/12/05 01:24:04 stenn@whimsy.udel.edu +1 -0
- C-DEX patch.
- From: Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
-
- ntpd/refclock_jjy.c
- 1.2.1.1 01/12/05 01:24:03 stenn@whimsy.udel.edu +3 -1
- C-DEX patch.
- From: Masaki Fukushima <fukusima@goto.info.waseda.ac.jp>
-
- README.versions
- 1.1 01/12/02 23:02:32 stenn@whimsy.udel.edu +35 -0
-
-ChangeSet
- 1.683.4.51 01/12/02 23:02:32 stenn@whimsy.udel.edu +1 -0
- Added README.versions, which describes the version numbering scheme
- we are using. Suggested by Ulrich Windl.
-
- README.versions
- 1.0 01/12/02 23:02:32 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/README.versions
-
-ChangeSet
- 1.749 01/12/02 12:42:06 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- libntp/machines.c
- 1.15 01/12/02 12:42:05 stenn@whimsy.udel.edu +0 -2
- Auto merged
-
-ChangeSet
- 1.706.1.42 01/12/02 12:33:54 stenn@whimsy.udel.edu +1 -0
- Put the definition of adjtv where it belongs.
-
- libntp/machines.c
- 1.12.1.2 01/12/02 12:33:53 stenn@whimsy.udel.edu +2 -1
- Put the definition of adjtv where it belongs.
-
-ChangeSet
- 1.748 01/12/02 12:23:39 stenn@whimsy.udel.edu +2 -0
- automerge + conflict resolution.
-
- libntp/machines.c
- 1.14 01/12/02 12:23:38 stenn@whimsy.udel.edu +1 -2
- Conflict cleanup from automerge.
-
- configure.in
- 1.235 01/12/02 04:40:05 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.41 01/12/02 04:26:18 stenn@whimsy.udel.edu +2 -0
- Boring conflict resolution after automerge.
-
- libntp/machines.c
- 1.12.1.1 01/12/02 04:26:18 stenn@whimsy.udel.edu +1 -1
- Boring conflict resolution.
-
- configure.in
- 1.226.1.10 01/12/02 04:15:37 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.50 01/12/02 04:12:13 stenn@whimsy.udel.edu +2 -0
- settimeofday() fix in configure, do a better job tracking and
- reporting progress in ntp_set_tod().
-
- libntp/machines.c
- 1.11.1.1 01/12/02 04:12:12 stenn@whimsy.udel.edu +40 -21
- Do a better job tracking (and reporting, if debug enabled) progress
- in ntp_set_tod().
-
- configure.in
- 1.219.3.8 01/12/02 04:12:12 stenn@whimsy.udel.edu +1 -1
- Use AC_CHECK_FUNCS instead of _FUNC to check for settimeofday()
- because we need HAVE_SETTIMEOFDAY.
-
-ChangeSet
- 1.706.1.40 01/12/01 23:08:32 stenn@whimsy.udel.edu +4 -0
- WWV and CHU improvements from Dave Mills.
-
- ntpd/refclock_wwv.c
- 1.28 01/12/01 23:08:31 stenn@whimsy.udel.edu +350 -400
- Improvements from Dave Mills:
-
- it does better with the audio codec than my
- Spectracom WWVB receiver with serial port.
-
- ntpd/refclock_chu.c
- 1.22 01/12/01 23:08:31 stenn@whimsy.udel.edu +4 -9
- Simplify - let refclock_process_offset() do the work.
- From Dave Mills.
-
- html/authopt.htm
- 1.15 01/12/01 23:08:31 stenn@whimsy.udel.edu +1 -3
- Update the documentation of the crypto line.
-
- NEWS
- 1.36 01/12/01 23:08:30 stenn@whimsy.udel.edu +1 -0
- Document wwv and chu improvements in the NEWS file.
-
-ChangeSet
- 1.746 01/11/30 19:42:42 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_request.c
- 1.31 01/11/30 19:42:41 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.39 01/11/30 19:39:37 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_request.c
- 1.24.1.4 01/11/30 19:39:36 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.49 01/11/30 19:36:36 stenn@whimsy.udel.edu +1 -0
- If no REFCLOCK, no cal_enable.
- From: Ralf Nyren <ralf.nyren@educ.umu.se>
-
- ntpd/ntp_request.c
- 1.23.2.3 01/11/30 19:36:35 stenn@whimsy.udel.edu +2 -0
- If no REFCLOCK, no cal_enable.
- From: Ralf Nyren <ralf.nyren@educ.umu.se>
-
-ChangeSet
- 1.745 01/11/30 01:10:14 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.234 01/11/30 01:10:13 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.38 01/11/30 00:56:47 stenn@whimsy.udel.edu +2 -0
- Check for EVP_md2 - Some redhat distros have lost it, too.
-
- util/genkeys.c
- 1.5 01/11/30 00:56:46 stenn@whimsy.udel.edu +2 -0
- Check for EVP_md2 - Some redhat distros have lost it, too.
-
- configure.in
- 1.226.1.9 01/11/30 00:56:46 stenn@whimsy.udel.edu +1 -1
- Check for EVP_md2 - Some redhat distros have lost it, too.
-
-ChangeSet
- 1.741.1.5 01/11/24 23:58:03 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.233 01/11/24 23:58:02 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.37 01/11/24 23:50:35 stenn@whimsy.udel.edu +3 -0
- Mostly updates to the NEWS file.
-
- configure.in
- 1.226.1.8 01/11/24 23:50:34 stenn@whimsy.udel.edu +0 -1
- Use the ntp-dev version number.
-
- NEWS
- 1.35 01/11/24 23:38:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-driver40.htm
- 1.2 01/11/24 23:38:03 stenn@whimsy.udel.edu +0 -0
- Delete: html/driver40.htm
-
-ChangeSet
- 1.683.4.48 01/11/24 23:30:49 stenn@whimsy.udel.edu +1 -0
- Somewhere along the line, the driver40.htm file got lost - recover it.
-
- html/driver40.htm
- 1.1 01/11/24 23:30:48 stenn@whimsy.udel.edu +141 -0
-
- html/driver40.htm
- 1.0 01/11/24 23:30:48 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/html/driver40.htm
-
-ChangeSet
- 1.683.4.47 01/11/23 23:23:23 stenn@whimsy.udel.edu +2 -0
- 4.1.0b-rc1
-
- configure.in
- 1.219.3.7 01/11/23 23:23:22 stenn@whimsy.udel.edu +1 -1
- 4.1.0b-rc1
-
- NEWS
- 1.31.1.5 01/11/23 23:23:22 stenn@whimsy.udel.edu +7 -0
- Update the NEWS file.
-
-ChangeSet
- 1.706.1.36 01/11/19 22:20:56 stenn@whimsy.udel.edu +2 -0
- Doc cleanups from Dave Mills.
-
- html/ntpdc.htm
- 1.8 01/11/19 22:20:55 stenn@whimsy.udel.edu +8 -69
- Doc cleanups from Dave Mills.
-
- html/miscopt.htm
- 1.14 01/11/19 22:20:55 stenn@whimsy.udel.edu +33 -32
- Doc cleanups from Dave Mills.
-
-ChangeSet
- 1.741.1.3 01/11/19 21:58:25 stenn@whimsy.udel.edu +3 -0
- proto_config() needs a 4th arg in the IPv6 code.
-
- ntpd/ntp_request.c
- 1.30 01/11/19 21:58:24 stenn@whimsy.udel.edu +8 -14
- proto_config() apparently takes a 4th arg in the IPv6 code.
-
- ntpd/ntp_config.c
- 1.61 01/11/19 21:40:27 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_request.h
- 1.14 01/11/19 21:40:27 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.35 01/11/19 21:35:42 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_request.c
- 1.24.1.3 01/11/19 21:35:41 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.52.1.6 01/11/19 21:35:41 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.46 01/11/19 21:29:34 stenn@whimsy.udel.edu +4 -0
- enable/disable calibrate.
-
- Flags cleanup for ntpdc and friends.
-
- From Dave Mills.
-
- ntpdc/ntpdc_ops.c
- 1.12 01/11/19 21:29:33 stenn@whimsy.udel.edu +17 -13
- Flag cleanup.
-
- ntpd/ntp_request.c
- 1.23.2.2 01/11/19 21:29:33 stenn@whimsy.udel.edu +25 -20
- Alphabetize the keyword checks.
-
- setclr/handle the CAL and AUTH flag bits, too.
-
- ntpd/ntp_config.c
- 1.50.3.3 01/11/19 21:29:33 stenn@whimsy.udel.edu +4 -4
- One can also enable/disable calibrate.
-
- Alphabetize the flag keywords.
-
- include/ntp_request.h
- 1.10.1.2 01/11/19 21:29:33 stenn@whimsy.udel.edu +7 -5
- Cleanup/fixes from Dave Mills.
-
-ChangeSet
- 1.706.1.34 01/11/17 00:53:52 stenn@whimsy.udel.edu +3 -0
- HTML cleanup from Dave Mills.
-
- html/parsedata.htm
- 1.6 01/11/17 00:53:51 stenn@whimsy.udel.edu +1 -1
- HTML cleanup from Dave Mills.
-
- html/driver39.htm
- 1.5 01/11/17 00:53:51 stenn@whimsy.udel.edu +1 -1
- HTML cleanup from Dave Mills.
-
- html/driver38.htm
- 1.5 01/11/17 00:53:51 stenn@whimsy.udel.edu +1 -1
- HTML cleanup from Dave Mills.
-
-ChangeSet
- 1.706.1.33 01/11/16 23:51:30 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/Makefile.am
- 1.24 01/11/16 23:51:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.45 01/11/16 23:35:26 stenn@whimsy.udel.edu +1 -0
- ntp_resolver.c is currently unused.
-
- ntpd/Makefile.am
- 1.18.2.4 01/11/16 23:35:25 stenn@whimsy.udel.edu +2 -1
- ntp_resolver.c is currently unused.
-
-ChangeSet
- 1.742 01/11/15 19:25:09 jhay@angel.cids.org.za +1 -0
- Fix an off by 1 error.
- Handle the case where ai->ai_canonname is NULL sometimes.
-
- ntpq/ntpq.c
- 1.21 01/11/15 19:25:09 jhay@angel.cids.org.za +8 -2
- Fix an off by 1 error.
- Handle the case where ai->ai_canonname is NULL sometimes.
-
-ChangeSet
- 1.739.1.1 01/11/10 13:58:28 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- Makefile.am
- 1.24 01/11/10 13:58:27 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.32 01/11/10 13:50:22 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- Makefile.am
- 1.16.1.7 01/11/10 13:50:21 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.44 01/11/10 13:46:34 stenn@whimsy.udel.edu +1 -0
- Handle the version stuff even when building completely outside
- the srcdir.
-
- Makefile.am
- 1.12.1.12 01/11/10 13:46:34 stenn@whimsy.udel.edu +7 -1
- Handle the version stuff even when building completely outside
- the srcdir.
-
-ChangeSet
- 1.740 01/11/10 13:32:50 jhay@angel.cids.org.za +1 -0
- Make ntpdate also compile and run on rackety (SunOS 4.1.3)
- Catch a if(... = ...).
-
- ntpdate/ntpdate.c
- 1.29 01/11/10 13:32:50 jhay@angel.cids.org.za +5 -3
- Make ntpdate also compile and run on rackety (SunOS 4.1.3)
- Catch a if(... = ...).
-
-ChangeSet
- 1.706.1.31 01/11/10 02:00:29 stenn@whimsy.udel.edu +1 -0
- Be less aggressive when looking for ASYNC and NDELAY alternatives.
- From John Hay.
-
- include/ntp_io.h
- 1.5 01/11/10 02:00:29 stenn@whimsy.udel.edu +4 -6
- Be less aggressive when looking for ASYNC and NDELAY alternatives.
- From John Hay.
-
-ChangeSet
- 1.738 01/11/09 23:44:59 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- Makefile.am
- 1.23 01/11/09 23:44:58 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.30 01/11/09 23:41:20 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- Makefile.am
- 1.16.1.6 01/11/09 23:41:20 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.43 01/11/09 23:29:51 stenn@whimsy.udel.edu +1 -0
- Improve the version file generation code.
-
- Makefile.am
- 1.12.1.11 01/11/09 23:29:50 stenn@whimsy.udel.edu +3 -4
- Improve the version file generation code.
-
-ChangeSet
- 1.737 01/11/09 20:23:41 jhay@angel.cids.org.za +8 -0
- IPv6 port by Bill Cote USG <billcote@zk3.dec.com> with twiddling be me to make
- it work with the rest of our code.
-
- ntpq/ntpq_ops.c
- 1.12 01/11/09 20:23:41 jhay@angel.cids.org.za +139 -70
- IPv6 port by Bill Cote USG <billcote@zk3.dec.com> with twiddling be me to make
- it work with the rest of our code.
-
- ntpq/ntpq.h
- 1.3 01/11/09 20:23:41 jhay@angel.cids.org.za +4 -3
- IPv6 port by Bill Cote USG <billcote@zk3.dec.com> with twiddling be me to make
- it work with the rest of our code.
-
- ntpq/ntpq.c
- 1.20 01/11/09 20:23:41 jhay@angel.cids.org.za +102 -53
- IPv6 port by Bill Cote USG <billcote@zk3.dec.com> with twiddling be me to make
- it work with the rest of our code.
-
- libntp/socktohost.c
- 1.2 01/11/09 20:23:41 jhay@angel.cids.org.za +3 -1
- Return a string representation of the address if the dns lookup fail.
-
- libntp/ntp_rfc2553.c
- 1.4 01/11/09 20:23:41 jhay@angel.cids.org.za +9 -2
- ntpq needs a little more of the rfc2553 api.
-
- libntp/decodenetnum.c
- 1.3 01/11/09 20:23:41 jhay@angel.cids.org.za +16 -35
- IPv6 port by Bill Cote USG <billcote@zk3.dec.com> with twiddling be me to make
- it work with the rest of our code.
-
- include/ntp_stdlib.h
- 1.16 01/11/09 20:23:41 jhay@angel.cids.org.za +2 -2
- Change decodenetnum to use sockaddr_storage.
-
- include/ntp_rfc2553.h
- 1.3 01/11/09 20:23:41 jhay@angel.cids.org.za +2 -0
- We now need AI_ADDRCONFIG too.
-
-ChangeSet
- 1.736 01/11/08 16:52:48 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- Makefile.am
- 1.22 01/11/08 16:52:48 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.29 01/11/08 16:49:41 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- Makefile.am
- 1.16.1.5 01/11/08 16:49:40 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.42 01/11/08 16:46:12 stenn@whimsy.udel.edu +1 -0
- Make the cmp of the version file be silent.
-
- Makefile.am
- 1.12.1.10 01/11/08 16:46:11 stenn@whimsy.udel.edu +1 -1
- Make the cmp of the version file be silent.
-
-ChangeSet
- 1.683.4.41 01/11/08 16:37:05 stenn@whimsy.udel.edu +2 -0
- Fix the version file update code.
- Reported by John Hay.
- The "version" file should not be checked in.
-
- Makefile.am
- 1.12.1.9 01/11/08 16:37:02 stenn@whimsy.udel.edu +3 -2
- Fix the version file update code.
- Reported by John Hay.
-
- BitKeeper/deleted/.del-version~aeecada457249d0c
- 1.2 01/11/08 16:34:27 stenn@whimsy.udel.edu +1 -1
- Delete: version
-
-ChangeSet
- 1.735 01/11/08 03:40:27 stenn@whimsy.udel.edu +3 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.232 01/11/08 03:40:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.21 01/11/08 03:40:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/ignore
- 1.16 01/11/08 03:40:17 stenn@whimsy.udel.edu +7 -0
- auto-union
-
-ChangeSet
- 1.706.1.28 01/11/08 03:32:50 stenn@whimsy.udel.edu +1 -0
- Comment out apparently unused RSA stuff.
-
- configure.in
- 1.226.1.7 01/11/08 03:32:49 stenn@whimsy.udel.edu +6 -6
- Comment out RSA stuff - I think it's no longer used.
-
-ChangeSet
- 1.706.1.27 01/11/08 03:19:45 stenn@whimsy.udel.edu +6 -0
- Merge
-
- ntpq/Makefile.am
- 1.8 01/11/08 03:19:45 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
- ntpdc/Makefile.am
- 1.7 01/11/08 03:19:45 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
- ntpdate/Makefile.am
- 1.9 01/11/08 03:19:45 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
- ntpd/Makefile.am
- 1.23 01/11/08 03:19:45 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
- Makefile.am
- 1.16.1.4 01/11/08 03:15:40 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/ignore
- 1.14.1.1 01/11/08 03:15:34 stenn@whimsy.udel.edu +0 -0
- auto-union
-
-ChangeSet
- 1.683.4.40 01/11/08 03:06:18 stenn@whimsy.udel.edu +9 -0
- Get the ChangeSet number in the compiled-in version strings.
-
- version
- 1.1 01/11/08 03:06:16 stenn@whimsy.udel.edu +1 -0
-
- BitKeeper/etc/ignore
- 1.1.2.7 01/11/08 03:06:17 stenn@whimsy.udel.edu +1 -0
- Added version to the ignore list
-
- version
- 1.0 01/11/08 03:06:16 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/version
-
- scripts/mkver.in
- 1.9 01/11/08 03:06:16 stenn@whimsy.udel.edu +5 -0
- If
-
- ntptrace/Makefile.am
- 1.4 01/11/08 03:06:16 stenn@whimsy.udel.edu +1 -1
- Pass the contents of the version file in to the mkver script.
-
- ntpq/Makefile.am
- 1.4.1.2 01/11/08 03:06:16 stenn@whimsy.udel.edu +1 -1
- Pass the contents of the version file in to the mkver script.
-
- ntpdc/Makefile.am
- 1.3.1.2 01/11/08 03:06:16 stenn@whimsy.udel.edu +1 -1
- Pass the contents of the version file in to the mkver script.
-
- ntpdate/Makefile.am
- 1.5.1.2 01/11/08 03:06:16 stenn@whimsy.udel.edu +1 -1
- Pass the contents of the version file in to the mkver script.
-
- ntpd/Makefile.am
- 1.18.2.3 01/11/08 03:06:16 stenn@whimsy.udel.edu +1 -1
- Pass the contents of the version file in to the mkver script.
-
- Makefile.am
- 1.12.1.8 01/11/08 03:06:16 stenn@whimsy.udel.edu +9 -3
- Maintain the version file, which holds the latest ChangeSet number.
-
-ChangeSet
- 1.734 01/11/05 00:34:46 stenn@whimsy.udel.edu +1 -0
- Attempt to reconcile the multicast patch with the one in ntp-dev.
-
- ntpd/ntp_peer.c
- 1.37 01/11/05 00:34:46 stenn@whimsy.udel.edu +0 -8
- Attempt to reconcile the multicast patch with the one in ntp-dev.
-
-ChangeSet
- 1.706.1.26 01/11/04 23:48:00 stenn@whimsy.udel.edu +1 -0
- Multicast improvements
- From: John.Hay@icomtek.csir.co.za
-
- ntpd/ntp_peer.c
- 1.32.1.3 01/11/04 23:47:59 stenn@whimsy.udel.edu +8 -2
- Multicast improvements
- From: John.Hay@icomtek.csir.co.za
-
-ChangeSet
- 1.706.1.25 01/11/04 04:42:02 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/deleted/.del-00-list~baf8bb517d043606
- 1.5 01/11/04 04:42:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-00-list~baf8bb517d043606
- 1.4 01/11/04 04:42:01 stenn@whimsy.udel.edu +0 -0
- Merge rename: BitKeeper/deleted/.del-00-list -> BitKeeper/deleted/.del-00-list~baf8bb517d043606
-
-ChangeSet
- 1.683.4.39 01/11/04 04:38:31 stenn@whimsy.udel.edu +1 -0
- Lose an obsolete file.
-
- BitKeeper/deleted/.del-00-list~baf8bb517d043606
- 1.2.1.1 01/11/04 04:34:24 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/00-list
-
-ChangeSet
- 1.723.1.5 01/11/04 04:30:43 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.231 01/11/04 04:30:42 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.38 01/11/04 04:21:46 stenn@whimsy.udel.edu +3 -0
- Attempt to handle the cases where triggers are being run from the
- RESYNC dir.
-
- BitKeeper/triggers/triggert
- 1.4 01/11/04 04:21:45 stenn@whimsy.udel.edu +10 -4
- General cleanup, and pass along $bkp (bk repo prefix) so we can
- find the repo directory instead of the RESYNC dir.
-
- BitKeeper/triggers/lg-changeset
- 1.2 01/11/04 04:21:45 stenn@whimsy.udel.edu +1 -1
- Make sure we're're accessing the .lgc file in the main repo and not in a RESYNC dir.
-
- BitKeeper/triggers/delta-changelog
- 1.3 01/11/04 04:21:45 stenn@whimsy.udel.edu +1 -1
- Use bkp to make sure we get the .lgc file in the repo and not
- (potentially) the (bogus) one in the RESYNC tree.
-
-ChangeSet
- 1.683.4.37 01/11/03 14:46:21 stenn@whimsy.udel.edu +1 -0
- Cleanup
-
- BitKeeper/triggers/trigger.mk
- 1.7 01/11/03 14:46:20 stenn@whimsy.udel.edu +2 -7
- Cleanup
-
-ChangeSet
- 1.723.1.4 01/11/03 14:25:15 stenn@whimsy.udel.edu +1 -0
- Clean up the ignore file
-
- BitKeeper/etc/ignore
- 1.15 01/11/03 14:25:14 stenn@whimsy.udel.edu +0 -7
- Clean up the ignore file
-
-ChangeSet
- 1.706.1.23 01/11/03 02:16:34 stenn@whimsy.udel.edu +5 -0
- QNX 6.x patches
- From: Chris Burghart <burghart@atd.ucar.edu>
-
- util/genkeys.c
- 1.4 01/11/03 02:16:34 stenn@whimsy.udel.edu +3 -0
- util/genkeys.c needs a protected sys/types.h for QNX.
-
- ntpd/check_y2k.c
- 1.7 01/11/03 02:16:34 stenn@whimsy.udel.edu +3 -0
- ntpd/check_y2k needs a protected sys/signal.h for QNX.
-
- libntp/adjtime.c
- 1.4 01/11/03 02:16:33 stenn@whimsy.udel.edu +77 -3
- QNX adjtime hack.
-
- include/ntp_io.h
- 1.4 01/11/03 02:16:33 stenn@whimsy.udel.edu +19 -0
- QNX 6 patches
-
- configure.in
- 1.226.1.6 01/11/03 02:16:33 stenn@whimsy.udel.edu +23 -1
- QNX patches
-
-ChangeSet
- 1.732 01/11/03 08:26:08 jhay@angel.cids.org.za +1 -0
- Make multicasting from other subnets work with autokey.
-
- ntpd/ntp_peer.c
- 1.36 01/11/03 08:26:08 jhay@angel.cids.org.za +8 -2
- Make multicasting from other subnets work with autokey.
-
-ChangeSet
- 1.706.1.22 01/11/02 17:06:51 stenn@whimsy.udel.edu +2 -0
- .del-pre-apply.paranoid~eabcafcd55240e3e:
- Delete: BitKeeper/triggers/pre-apply.paranoid
- .del-post-commit.changelog~eabcee9c552e8cb4:
- Delete: BitKeeper/triggers/post-commit.changelog
-
- BitKeeper/deleted/.del-pre-apply.paranoid~eabcafcd55240e3e
- 1.2 01/11/02 17:06:20 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/pre-apply.paranoid
-
- BitKeeper/deleted/.del-post-commit.changelog~eabcee9c552e8cb4
- 1.2 01/11/02 17:06:19 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/post-commit.changelog
-
-ChangeSet
- 1.706.1.21 01/11/02 17:04:56 stenn@whimsy.udel.edu +1 -0
- Merge
-
- BitKeeper/etc/ignore
- 1.14 01/11/02 17:04:36 stenn@whimsy.udel.edu +1 -1
- auto-union
-
-ChangeSet
- 1.683.4.36 01/11/02 16:56:25 stenn@whimsy.udel.edu +1 -0
- Cleanup.
-
- BitKeeper/triggers/trigger.mk
- 1.6 01/11/02 16:56:25 stenn@whimsy.udel.edu +0 -1
- Remove the trigger.touch file. No longer needed.
- We should look at some of the other touch files, too.
-
-ChangeSet
- 1.683.4.35 01/11/02 16:39:34 stenn@whimsy.udel.edu +2 -0
- Cleanup/reality check smoe trigger stuff.
-
- BitKeeper/triggers/trigger.cfg
- 1.7 01/11/02 16:39:33 stenn@whimsy.udel.edu +3 -5
- Update the header docs, merge some of the trigger scripts.
-
- BitKeeper/triggers/trigger.README
- 1.3 01/11/02 16:39:33 stenn@whimsy.udel.edu +8 -7
- Cleanup/reality check the file.
-
-ChangeSet
- 1.683.4.34 01/11/02 04:52:47 stenn@whimsy.udel.edu +1 -0
- Enable the delta changelog and last-good changeset triggers.
-
- BitKeeper/triggers/trigger.cfg
- 1.6 01/11/02 04:52:47 stenn@whimsy.udel.edu +4 -4
- Enable the delta changelog and last-good changeset triggers.
-
-ChangeSet
- 1.683.4.33 01/11/02 04:33:25 stenn@whimsy.udel.edu +1 -0
- Prepend the new logs to the ChangeLog.
-
- BitKeeper/triggers/delta-changelog
- 1.2 01/11/02 04:33:25 stenn@whimsy.udel.edu +3 -1
- Prepend the new logs to the ChangeLog.
-
-ChangeSet
- 1.683.4.32 01/11/02 04:15:19 stenn@whimsy.udel.edu +2 -0
- Now that we are using sed to install the trigger, call 'chmod +x'
- when we're done.
-
- BitKeeper/triggers/triggerd
- 1.15 01/11/02 04:15:18 stenn@whimsy.udel.edu +1 -0
- Now that we are using sed to install the trigger, call 'chmod +x'
- when we're done.
-
- BitKeeper/triggers/trigger.mk
- 1.5 01/11/02 04:15:18 stenn@whimsy.udel.edu +1 -1
- Now that we are using sed to install the trigger, call 'chmod +x'
- when we're done.
-
-ChangeSet
- 1.683.4.31 01/11/02 04:05:19 stenn@whimsy.udel.edu +1 -0
- Better logging.
-
- BitKeeper/triggers/triggert
- 1.3 01/11/02 04:05:18 stenn@whimsy.udel.edu +1 -1
- Better logging.
-
-ChangeSet
- 1.683.4.30 01/11/02 03:58:14 stenn@whimsy.udel.edu +1 -0
- Mirror updates.
-
- BitKeeper/triggers/trigger.cfg
- 1.5 01/11/02 03:58:13 stenn@whimsy.udel.edu +2 -2
- Enable the mirror updates
-
-ChangeSet
- 1.683.4.29 01/11/02 03:49:01 stenn@whimsy.udel.edu +1 -0
- Typos.
-
- BitKeeper/triggers/triggerd
- 1.14 01/11/02 03:49:00 stenn@whimsy.udel.edu +1 -1
- Typos. I"m getting pretty tired...
-
-ChangeSet
- 1.683.4.28 01/11/02 03:42:45 stenn@whimsy.udel.edu +1 -0
- Trigger manager improvements.
-
- BitKeeper/triggers/triggerd
- 1.13 01/11/02 03:42:44 stenn@whimsy.udel.edu +3 -3
- Install triggert to call the actual trigger, using a sed substitution.
-
-ChangeSet
- 1.683.4.27 01/11/02 03:33:15 stenn@whimsy.udel.edu +1 -0
- Typo.
-
- BitKeeper/triggers/trigger.mk
- 1.4 01/11/02 03:33:15 stenn@whimsy.udel.edu +1 -1
- Typo.
-
-ChangeSet
- 1.683.4.26 01/11/02 03:24:31 stenn@whimsy.udel.edu +2 -0
- trigger manager improvements.
-
- BitKeeper/triggers/triggert
- 1.2 01/11/02 03:24:30 stenn@whimsy.udel.edu +1 -1
- Use a sed substitution for the target trigger name.
-
- BitKeeper/triggers/trigger.mk
- 1.3 01/11/02 03:24:30 stenn@whimsy.udel.edu +1 -1
- Use sed instead of cp to copy triggert to the target; we will
- most likely want to use this trick for the triggers in trigger.cfg,
- too.
-
-ChangeSet
- 1.683.4.25 01/11/02 03:08:17 stenn@whimsy.udel.edu +1 -0
- More trigger manager fixes
-
- BitKeeper/triggers/triggerd
- 1.12 01/11/02 03:08:17 stenn@whimsy.udel.edu +2 -2
- Set the file count to 0 even earlier.
-
-ChangeSet
- 1.683.4.24 01/11/02 02:49:46 stenn@whimsy.udel.edu +1 -0
- More trigger manager work
-
- BitKeeper/triggers/triggerd
- 1.11 01/11/02 02:49:46 stenn@whimsy.udel.edu +3 -2
- Don't reset the count at each new tag; somebody might use a tag more
- than once.
-
-ChangeSet
- 1.683.4.23 01/11/02 02:36:34 stenn@whimsy.udel.edu +2 -0
- Start enabling more triggers...
-
- BitKeeper/triggers/trigger.cfg
- 1.4 01/11/02 02:36:34 stenn@whimsy.udel.edu +1 -1
- Try enabling the paranoid check.
-
- BitKeeper/etc/ignore
- 1.1.2.6 01/11/02 02:36:33 stenn@whimsy.udel.edu +1 -0
- Ignore BitKeeper/triggers/p*--*, as those are the files installed
- by the trigger manager package.
-
-ChangeSet
- 1.683.4.22 01/11/02 02:29:37 stenn@whimsy.udel.edu +1 -0
- More trigger manager cleanup.
-
- BitKeeper/triggers/triggerd
- 1.10 01/11/02 02:29:36 stenn@whimsy.udel.edu +26 -21
- Typos, cleanup.
-
-ChangeSet
- 1.683.4.21 01/11/02 00:27:34 stenn@whimsy.udel.edu +1 -0
- More trigger manager work.
-
- BitKeeper/triggers/triggerd
- 1.9 01/11/02 00:27:33 stenn@whimsy.udel.edu +6 -3
- Better logging.
- Fix some typos.
-
-ChangeSet
- 1.683.4.20 01/11/02 00:12:41 stenn@whimsy.udel.edu +4 -0
- Another pass at the trigger manager.
-
- BitKeeper/triggers/triggerd
- 1.8 01/11/02 00:12:40 stenn@whimsy.udel.edu +55 -19
- Now that wedon't call the triggers from triggerd, there is no reason
- to re-exec ourselves.
-
- When we process the triggers.cfg file, first remove the old triggers.
- Validate the trigger classes.
- Process each script for each tag, installing them so that they are
- executed in the correct order.
-
- BitKeeper/triggers/trigger.mk
- 1.2 01/11/02 00:12:40 stenn@whimsy.udel.edu +1 -2
- Only install triggerd for post-commit and post-incoming.
-
- BitKeeper/triggers/trigger.cfg
- 1.3 01/11/02 00:12:40 stenn@whimsy.udel.edu +1 -1
- Enable the "notify" trigger.
-
- BitKeeper/triggers/trigger.README
- 1.2 01/11/02 00:12:40 stenn@whimsy.udel.edu +2 -5
- Implement multiple triggers per tag line.
-
-ChangeSet
- 1.706.1.20 01/11/01 02:10:09 stenn@whimsy.udel.edu +5 -0
- Cleanup. From Dave Mills.
-
- ntpd/refclock_wwv.c
- 1.27 01/11/01 02:10:08 stenn@whimsy.udel.edu +5 -5
- Cleanup. From Dave Mills.
-
- html/notes.htm
- 1.8 01/11/01 02:10:08 stenn@whimsy.udel.edu +1237 -1421
- Cleanup. From Dave Mills.
-
- html/driver6.htm
- 1.7 01/11/01 02:10:07 stenn@whimsy.udel.edu +62 -49
- Cleanup. From Dave Mills.
-
- html/driver36.htm
- 1.9 01/11/01 02:10:07 stenn@whimsy.udel.edu +4 -3
- Cleanup. From Dave Mills.
-
- html/audio.htm
- 1.8 01/11/01 02:10:07 stenn@whimsy.udel.edu +54 -14
- Cleanup. From Dave Mills.
-
-ChangeSet
- 1.723.1.1 01/11/01 01:38:33 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- Makefile.am
- 1.20 01/11/01 01:38:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/etc/logging_ok
- 1.7 01/11/01 01:38:25 stenn@whimsy.udel.edu +1 -1
- auto-union
-
-ChangeSet
- 1.706.1.19 01/11/01 01:25:02 stenn@whimsy.udel.edu +8 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntpd.c
- 1.38 01/11/01 01:25:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.16.1.3 01/11/01 01:25:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-pre-apply.paranoid~baecee4c7d243e1c
- 1.5 01/11/01 01:25:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-post-commit.changelog~baedea457d24369c
- 1.8 01/11/01 01:25:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-2mirrors
- 1.2 01/11/01 01:25:00 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/2mirrors
-
- BitKeeper/deleted/.del-pre-apply.paranoid~baecee4c7d243e1c
- 1.4 01/11/01 01:23:43 stenn@whimsy.udel.edu +0 -0
- Merge rename: BitKeeper/deleted/.del-pre-apply.paranoid -> BitKeeper/deleted/.del-pre-apply.paranoid~baecee4c7d243e1c
-
- BitKeeper/deleted/.del-post-commit.changelog~baedea457d24369c
- 1.7 01/11/01 01:23:40 stenn@whimsy.udel.edu +0 -0
- Merge rename: BitKeeper/deleted/.del-post-commit.changelog -> BitKeeper/deleted/.del-post-commit.changelog~baedea457d24369c
-
- BitKeeper/etc/logging_ok
- 1.3.1.4 01/11/01 01:22:03 stenn@whimsy.udel.edu +1 -0
- 'Auto converge'
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.6 01/11/01 01:22:03 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.3.1.3 01/11/01 01:22:03 stenn@whimsy.udel.edu +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.5 01/11/01 01:22:01 stenn@whimsy.udel.edu +0 -0
- auto-union
-
- BitKeeper/etc/ignore
- 1.13 01/11/01 01:22:00 stenn@whimsy.udel.edu +13 -13
- auto-union
-
-ChangeSet
- 1.683.4.19 01/10/24 10:00:02 stenn@whimsy.udel.edu +1 -0
- Disable our triggers until I can find the processing bug.
-
- BitKeeper/triggers/trigger.cfg
- 1.2 01/10/24 10:00:02 stenn@whimsy.udel.edu +8 -8
- Disable our triggers until I can find the processing bug.
-
-ChangeSet
- 1.683.4.18 01/10/24 04:42:37 stenn@whimsy.udel.edu +2 -0
- Recover the 2mirror script.
-
- BitKeeper/triggers/2mirrors
- 1.1 01/10/24 04:14:04 stenn@whimsy.udel.edu +40 -0
-
- BitKeeper/triggers/2mirrors
- 1.0 01/10/24 04:14:04 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/2mirrors
-
- BitKeeper/triggers/triggerd
- 1.7 01/10/24 03:54:25 stenn@whimsy.udel.edu +1 -4
- Quiet some debug stuff.
-
- BitKeeper/triggers/triggerd
- 1.6 01/10/24 03:43:12 stenn@whimsy.udel.edu +3 -2
- Run the right script. Sigh.
-
- BitKeeper/triggers/triggerd
- 1.5 01/10/24 03:33:59 stenn@whimsy.udel.edu +2 -0
- triggerd hacking
-
- BitKeeper/triggers/triggerd
- 1.4 01/10/24 03:07:10 stenn@whimsy.udel.edu +2 -1
- Disable the re-exec; it seems to be hosing us.
-
- BitKeeper/triggers/triggerd
- 1.3 01/10/24 02:46:31 stenn@whimsy.udel.edu +2 -1
- Use the right ball. Actually get the script if it isn't checked
- out and actually run it.
-
- BitKeeper/triggers/triggerd
- 1.2 01/10/24 01:59:12 stenn@whimsy.udel.edu +1 -0
- Play ball - actually run the intended trigger script.
-
-ChangeSet
- 1.683.4.17 01/10/24 01:50:16 stenn@whimsy.udel.edu +1 -0
- Ignore some of the trigger system overhead files.
-
- BitKeeper/etc/ignore
- 1.1.2.5 01/10/24 01:37:32 stenn@whimsy.udel.edu +3 -0
- added BitKeeper/triggers/trigger.t1 BitKeeper/triggers/trigger.t2 BitKeeper/triggers/trigger.touch
-
- BitKeeper/etc/ignore
- 1.1.2.4 01/10/24 01:37:05 stenn@whimsy.udel.edu +8 -0
- added BitKeeper/triggers/post-commit BitKeeper/triggers/post-incoming BitKeeper/triggers/post-outgoing BitKeeper/triggers/pre-apply BitKeeper/triggers/pre-commit BitKeeper/triggers/pre-incoming BitKeeper/triggers/pre-outgoing BitKeeper/triggers/pre-resolve
-
-ChangeSet
- 1.683.4.16 01/10/24 01:32:31 stenn@whimsy.udel.edu +14 -0
- New ChagneLog processing.
- New trigger scripts.
-
- BitKeeper/triggers/triggert
- 1.1 01/10/24 01:32:30 stenn@whimsy.udel.edu +14 -0
-
- BitKeeper/triggers/triggerd
- 1.1 01/10/24 01:32:30 stenn@whimsy.udel.edu +54 -0
-
- BitKeeper/triggers/triggert
- 1.0 01/10/24 01:32:30 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/triggert
-
- BitKeeper/triggers/triggerd
- 1.0 01/10/24 01:32:30 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/triggerd
-
- BitKeeper/triggers/trigger.mk
- 1.1 01/10/24 01:32:29 stenn@whimsy.udel.edu +17 -0
-
- BitKeeper/triggers/trigger.cfg
- 1.1 01/10/24 01:32:29 stenn@whimsy.udel.edu +25 -0
-
- BitKeeper/triggers/trigger.README
- 1.1 01/10/24 01:32:29 stenn@whimsy.udel.edu +53 -0
-
- BitKeeper/triggers/paranoid
- 1.1 01/10/24 01:32:29 stenn@whimsy.udel.edu +80 -0
-
- BitKeeper/triggers/lg-changeset
- 1.1 01/10/24 01:32:29 stenn@whimsy.udel.edu +15 -0
-
- BitKeeper/triggers/delta-changelog
- 1.1 01/10/24 01:32:29 stenn@whimsy.udel.edu +64 -0
-
- BitKeeper/etc/ignore
- 1.1.2.3 01/10/24 01:32:30 stenn@whimsy.udel.edu +2 -0
- Added ChangeLog BitKeeper/triggers/.lgc to the ignore list
-
- Makefile.am
- 1.12.1.7 01/10/24 01:32:29 stenn@whimsy.udel.edu +1 -0
- Distribute ChangeLog-4.1.0.
-
- ChangeLog-4.1.0
- 1.589 01/10/24 01:32:29 stenn@whimsy.udel.edu +0 -0
- Renamed the CVS ChangeLog to ChangeLog-4.1.0;
- the new ChangeLog is auto-generated.
-
- BitKeeper/triggers/trigger.mk
- 1.0 01/10/24 01:32:29 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/trigger.mk
-
- BitKeeper/triggers/trigger.cfg
- 1.0 01/10/24 01:32:29 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/trigger.cfg
-
- BitKeeper/triggers/trigger.README
- 1.0 01/10/24 01:32:29 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/trigger.README
-
- BitKeeper/triggers/paranoid
- 1.0 01/10/24 01:32:29 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/paranoid
-
- BitKeeper/triggers/lg-changeset
- 1.0 01/10/24 01:32:29 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/lg-changeset
-
- BitKeeper/triggers/delta-changelog
- 1.0 01/10/24 01:32:29 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/delta-changelog
-
- BitKeeper/deleted/.del-post-commit.changelog~baedea457d24369c
- 1.5.1.1 01/10/24 01:11:24 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/post-commit.changelog
-
- BitKeeper/deleted/.del-pre-apply.paranoid~baecee4c7d243e1c
- 1.2.1.1 01/10/24 00:42:20 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/pre-apply.paranoid
-
- BitKeeper/deleted/.del-post-incoming.2mirrors~baedfb107d26b494
- 1.5 01/10/24 00:42:11 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/post-incoming.2mirrors
-
-ChangeSet
- 1.729 01/10/23 15:06:06 jhay@angel.cids.org.za +1 -0
- Get rid of & in front of addr6 and rl6->addr6. Those are pointers already.
-
- ntpd/ntp_restrict.c
- 1.8 01/10/23 15:06:06 jhay@angel.cids.org.za +5 -5
- Get rid of & in front of addr6 and rl6->addr6. Those are pointers already.
-
-ChangeSet
- 1.728 01/10/23 15:02:59 jhay@angel.cids.org.za +1 -0
- Move adjtv to get rid of an unused variable warning.
-
- libntp/machines.c
- 1.13 01/10/23 15:02:59 jhay@angel.cids.org.za +2 -1
- Move adjtv to get rid of an unused variable warning.
-
-ChangeSet
- 1.727 01/10/23 14:38:35 jhay@angel.cids.org.za +3 -0
- Some sockaddr_in to sockaddr_storage conversions. They were missed because they came
- after the initial IPv6 port.
-
- ntpd/ntp_util.c
- 1.19 01/10/23 14:38:35 jhay@angel.cids.org.za +2 -2
- Some sockaddr_in to sockaddr_storage conversions. They were missed because they came
- after the initial IPv6 port.
-
- ntpd/ntp_crypto.c
- 1.49 01/10/23 14:38:35 jhay@angel.cids.org.za +12 -4
- Some sockaddr_in to sockaddr_storage conversions. They were missed because they came
- after the initial IPv6 port.
-
- include/ntpd.h
- 1.35 01/10/23 14:38:35 jhay@angel.cids.org.za +2 -2
- Some sockaddr_in to sockaddr_storage conversions. They were missed because they came
- after the initial IPv6 port.
-
-ChangeSet
- 1.726 01/10/23 10:44:04 jhay@angel.cids.org.za +1 -0
- Oops, I forgot the copyright for this file. Give credit where credit is due.
-
- libntp/ntp_rfc2553.c
- 1.3 01/10/23 10:44:04 jhay@angel.cids.org.za +67 -0
- Oops, I forgot the copyright for this file. Give credit where credit is due.
-
-ChangeSet
- 1.725 01/10/23 09:23:04 jhay@angel.cids.org.za +3 -0
- With these changes a flock-build of libntp and ntpd survive.
-
- ntpd/ntp_io.c
- 1.31 01/10/23 09:23:04 jhay@angel.cids.org.za +1 -1
- Add a missing &, addr is not a pointer.
-
- libntp/ntp_rfc2553.c
- 1.2 01/10/23 09:23:04 jhay@angel.cids.org.za +1 -0
- At least on some systems including ntp_stdlib.h is needed.
-
- include/ntp_rfc2553.h
- 1.2 01/10/23 09:23:04 jhay@angel.cids.org.za +1 -3
- Try a different way of defining u_int64_t.
-
-ChangeSet
- 1.724 01/10/22 20:59:18 jhay@angel.cids.org.za +1 -0
- Fix two places where refnumtoa() usage were not converted to the post IPv6 way.
-
- ntpd/refclock_parse.c
- 1.19 01/10/22 20:59:17 jhay@angel.cids.org.za +2 -2
- Fix two places where refnumtoa() usage were not converted to the post IPv6 way.
-
-ChangeSet
- 1.683.4.15 01/10/20 12:07:53 wink@iris1.saville.com +4 -0
- Add support for waiting on an IO event under Windows NT. This improves the responsiveness
- of the system when running under NT.
-
- BitKeeper/etc/logging_ok
- 1.1.1.2 01/10/20 12:07:50 wink@iris1.saville.com +1 -0
- Logging to logging@openlogging.org accepted
-
- ports/winnt/ntpd/ntp_iocompletionport.c
- 1.6 01/10/20 12:07:43 wink@iris1.saville.com +33 -0
- Add support for waiting on an IO event under to improve responsiveness.
-
- ports/winnt/include/ntp_iocompletionport.h
- 1.5 01/10/20 12:07:43 wink@iris1.saville.com +2 -0
- Add get_io_event
-
- ntpd/ntpd.c
- 1.33.1.3 01/10/20 12:07:43 wink@iris1.saville.com +27 -6
- Add support for waiting on an IO event under Windows NT. This improves the responsiveness
- of the system when running under NT.
-
-ChangeSet
- 1.723 01/10/20 12:55:32 jhay@angel.cids.org.za +1 -0
- Make IPv6 multicasting work.
-
- ntpd/ntp_io.c
- 1.30 01/10/20 12:55:32 jhay@angel.cids.org.za +3 -3
- Make IPv6 multicasting work.
-
-ChangeSet
- 1.720.1.1 01/10/19 17:22:38 jhay@angel.cids.org.za +2 -0
- Make IPv4 multicastclient work again after the IPv6 merge.
-
- ntpd/ntp_io.c
- 1.29 01/10/19 17:22:38 jhay@angel.cids.org.za +1 -15
- Make IPv4 multicastclient work again after the IPv6 merge.
-
- include/ntp.h
- 1.55 01/10/19 17:22:38 jhay@angel.cids.org.za +6 -6
- Protect the macros with brackets around them.
-
-ChangeSet
- 1.706.1.18 01/10/18 00:34:09 stenn@whimsy.udel.edu +1 -0
- #include ntp_machine.h so we can use the P() macros
- so we can use prototype declarations.
-
- util/genkeys.c
- 1.3 01/10/18 00:34:08 stenn@whimsy.udel.edu +5 -4
- #include ntp_machine.h so we can use the P() macros
- so we can use prototype declarations.
-
-ChangeSet
- 1.720 01/10/17 01:49:20 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- configure.in
- 1.230 01/10/17 01:49:19 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.17 01/10/17 01:44:22 stenn@whimsy.udel.edu +2 -0
- Changes from Dave Mills:
- cleanup and portability improvements.
-
- ntpd/ntp_loopfilter.c
- 1.59 01/10/17 01:44:22 stenn@whimsy.udel.edu +1 -2
- flladj calc cleanup.
- From: Dave Mills.
-
- libntp/machines.c
- 1.12 01/10/17 01:44:22 stenn@whimsy.udel.edu +7 -0
- Some broken systems don't reset adjtime() when the clock is stepped.
- From: Dave Mills.
-
-ChangeSet
- 1.706.1.16 01/10/17 01:19:23 stenn@whimsy.udel.edu +2 -0
- EVP_mdc2() portability hack.
- portability improvement to genkey.c.
-
- util/genkeys.c
- 1.2 01/10/17 01:19:23 stenn@whimsy.udel.edu +3 -1
- Define JAN_1970 using the ULONG_CONST macro.
- Guard the call to EVP_mdc2().
-
- configure.in
- 1.226.1.5 01/10/17 01:19:23 stenn@whimsy.udel.edu +1 -0
- Look for EVP_mdc2; some Linux distros don't have it.
-
-ChangeSet
- 1.719 01/10/16 00:11:03 stenn@whimsy.udel.edu +2 -0
- Merge
-
- libntp/Makefile.am
- 1.17 01/10/16 00:11:03 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
- ntpd/ntp_config.c
- 1.60 01/10/16 00:06:39 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.15 01/10/15 23:57:46 stenn@whimsy.udel.edu +1 -0
- Merge
-
- libntp/Makefile.am
- 1.12.1.3 01/10/15 23:57:46 stenn@whimsy.udel.edu +0 -0
- SCCS merged
-
-ChangeSet
- 1.683.4.14 01/10/15 23:36:58 stenn@whimsy.udel.edu +1 -0
- Lose mktime.c snprintf.c strdup.c strerror.c from
- EXTRA_libntp_a_SOURCES as they are auto-added by AC_REPLACE_FUNCS
-
- libntp/Makefile.am
- 1.11.2.2 01/10/15 23:36:58 stenn@whimsy.udel.edu +2 -2
- Lose mktime.c snprintf.c strdup.c strerror.c from
- EXTRA_libntp_a_SOURCES as they are auto-added by AC_REPLACE_FUNCS
-
-ChangeSet
- 1.718 01/10/15 19:19:45 jhay@angel.cids.org.za +1 -0
- Fix a memory leak.
-
- libntp/netof.c
- 1.5 01/10/15 19:19:45 jhay@angel.cids.org.za +8 -1
- Fix a memory leak. Is there a better way?
-
-ChangeSet
- 1.717 01/10/15 19:18:42 jhay@angel.cids.org.za +1 -0
- Fixup after latest ntp-dev merge.
-
- ntpd/ntp_control.c
- 1.45 01/10/15 19:18:41 jhay@angel.cids.org.za +2 -2
- Fixup after latest ntp-dev merge.
-
-ChangeSet
- 1.683.4.13 01/10/11 00:15:50 stenn@whimsy.udel.edu +1 -0
- Make a little mirror trigger noise
-
- BitKeeper/triggers/post-incoming.2mirrors
- 1.4 01/10/11 00:14:58 stenn@whimsy.udel.edu +2 -0
- Make a little mirror trigger noise
-
-ChangeSet
- 1.706.1.14 01/10/10 21:22:59 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_config.c
- 1.52.1.5 01/10/10 21:22:59 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.12 01/10/10 21:14:30 stenn@whimsy.udel.edu +1 -0
- Use %u to display the keyid.
- From: Simon Burge <simonb@wasabisystems.com>
-
- ntpd/ntp_config.c
- 1.50.3.2 01/10/10 21:14:29 stenn@whimsy.udel.edu +2 -2
- Use %u to display the keyid.
- From: Simon Burge <simonb@wasabisystems.com>
-
-ChangeSet
- 1.716 01/10/09 21:31:44 jhay@angel.cids.org.za +11 -0
- Merge angel.cids.org.za:/home/ntp/ntp-dev-ipv6
- into angel.cids.org.za:/export/3-stable/home/ntp/ntp-dev-ipv6
-
- ntpdate/ntpdate.c
- 1.28 01/10/09 21:31:43 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- ntpdate/ntpdate.c
- 1.27 01/10/09 21:31:43 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_restrict.c
- 1.7 01/10/09 21:31:41 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- ntpd/ntp_restrict.c
- 1.6 01/10/09 21:31:41 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_request.c
- 1.29 01/10/09 21:31:39 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- ntpd/ntp_request.c
- 1.28 01/10/09 21:31:39 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_io.c
- 1.28 01/10/09 21:31:36 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- ntpd/ntp_io.c
- 1.27 01/10/09 21:31:36 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_intres.c
- 1.22 01/10/09 21:31:27 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- ntpd/ntp_intres.c
- 1.21 01/10/09 21:31:27 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_control.c
- 1.44 01/10/09 21:31:24 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- ntpd/ntp_control.c
- 1.43 01/10/09 21:31:24 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_config.c
- 1.59 01/10/09 21:31:21 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.58 01/10/09 21:31:21 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/Makefile.am
- 1.16 01/10/09 21:31:13 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- libntp/Makefile.am
- 1.15 01/10/09 21:31:13 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_stdlib.h
- 1.15 01/10/09 21:31:11 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- include/ntp_stdlib.h
- 1.14 01/10/09 21:31:11 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_fp.h
- 1.6 01/10/09 21:30:59 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- include/ntp_fp.h
- 1.5 01/10/09 21:30:59 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- configure.in
- 1.229 01/10/09 21:28:53 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- configure.in
- 1.228 01/10/09 21:28:53 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
-ChangeSet
- 1.712.1.2 01/10/09 21:22:30 jhay@angel.cids.org.za +4 -0
- Merge bk://ntp.bkserver.net/ntp-dev-ipv6
- into angel.cids.org.za:/home/ntp/ntp-dev-ipv6
-
- ntpd/ntp_proto.c
- 1.104 01/10/09 21:22:29 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- ntpd/ntp_proto.c
- 1.103 01/10/09 21:22:29 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_io.c
- 1.24.1.2 01/10/09 21:22:14 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- ntpd/ntp_io.c
- 1.24.1.1 01/10/09 21:22:14 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_config.c
- 1.56.1.2 01/10/09 21:21:48 jhay@angel.cids.org.za +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.56.1.1 01/10/09 21:21:48 jhay@angel.cids.org.za +0 -0
- Turn on EOLN_NATIVE flag
-
- BitKeeper/etc/logging_ok
- 1.6 01/10/09 21:15:27 jhay@angel.cids.org.za +0 -0
- auto-union
-
-ChangeSet
- 1.708.1.9 01/10/09 03:49:37 stenn@whimsy.udel.edu +29 -0
- Automerge, EOLN_NATIVE cleanup, REFID cleanup.
-
- ntpd/refclock_atom.c
- 1.37 01/10/09 03:49:36 stenn@whimsy.udel.edu +2 -1
- REFID cleanup
-
- ntpd/ntp_refclock.c
- 1.43 01/10/09 03:49:35 stenn@whimsy.udel.edu +4 -1
- REFID cleanup.
-
- ntpd/ntp_control.c
- 1.41.1.2 01/10/09 03:49:35 stenn@whimsy.udel.edu +1 -1
- REFID cleanup.
-
- ntpdate/ntpdate.h
- 1.7 01/10/09 03:06:43 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpdate/ntpdate.h
- 1.6 01/10/09 03:06:43 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdate/ntpdate.c
- 1.25.1.2 01/10/09 03:06:41 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpdate/ntpdate.c
- 1.25.1.1 01/10/09 03:06:40 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_atom.c
- 1.36 01/10/09 03:06:38 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_util.c
- 1.18 01/10/09 03:06:36 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_util.c
- 1.17 01/10/09 03:06:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_restrict.c
- 1.4.1.2 01/10/09 03:06:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_restrict.c
- 1.4.1.1 01/10/09 03:06:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_resolver.c
- 1.15 01/10/09 03:06:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_resolver.c
- 1.14 01/10/09 03:06:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_request.c
- 1.25.1.2 01/10/09 03:06:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_request.c
- 1.25.1.1 01/10/09 03:06:29 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_refclock.c
- 1.42 01/10/09 03:06:27 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_proto.c
- 1.100.1.4 01/10/09 03:06:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_proto.c
- 1.100.1.3 01/10/09 03:06:23 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_peer.c
- 1.35 01/10/09 03:06:21 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.34 01/10/09 03:06:20 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_monitor.c
- 1.7 01/10/09 03:06:18 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_monitor.c
- 1.6 01/10/09 03:06:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_io.c
- 1.22.1.4 01/10/09 03:06:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_io.c
- 1.22.1.3 01/10/09 03:06:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_intres.c
- 1.19.1.2 01/10/09 03:06:14 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_intres.c
- 1.19.1.1 01/10/09 03:06:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_control.c
- 1.41.1.1 01/10/09 03:05:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_config.c
- 1.53.1.5 01/10/09 03:05:55 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.53.1.4 01/10/09 03:05:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/cmd_args.c
- 1.10 01/10/09 03:05:48 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/cmd_args.c
- 1.9 01/10/09 03:05:47 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/refnumtoa.c
- 1.4 01/10/09 03:05:38 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- libntp/refnumtoa.c
- 1.3 01/10/09 03:05:38 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/netof.c
- 1.4 01/10/09 03:05:35 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- libntp/netof.c
- 1.3 01/10/09 03:05:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/Makefile.am
- 1.13.1.2 01/10/09 03:05:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- libntp/Makefile.am
- 1.13.1.1 01/10/09 03:05:32 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/recvbuff.h
- 1.4 01/10/09 03:05:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/recvbuff.h
- 1.3 01/10/09 03:05:25 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntpd.h
- 1.34 01/10/09 03:05:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntpd.h
- 1.33 01/10/09 03:05:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_stdlib.h
- 1.12.1.2 01/10/09 03:05:08 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_stdlib.h
- 1.12.1.1 01/10/09 03:05:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_request.h
- 1.13 01/10/09 03:05:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_request.h
- 1.12 01/10/09 03:05:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_refclock.h
- 1.12 01/10/09 03:05:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_refclock.h
- 1.11 01/10/09 03:05:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_fp.h
- 1.3.1.2 01/10/09 03:04:59 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_fp.h
- 1.3.1.1 01/10/09 03:04:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_control.h
- 1.18 01/10/09 03:04:56 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_control.h
- 1.17 01/10/09 03:04:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp.h
- 1.54 01/10/09 03:04:47 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.53 01/10/09 03:04:47 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- README.bk
- 1.10 01/10/09 03:04:38 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.19 01/10/09 03:04:37 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.18 01/10/09 03:04:37 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
-ChangeSet
- 1.706.1.13 01/10/09 02:57:09 stenn@whimsy.udel.edu +2 -0
- Lose autokey.
-
- flock-build
- 1.24 01/10/09 02:57:09 stenn@whimsy.udel.edu +0 -2
- Lose autokey.
-
- configure.in
- 1.226.1.4 01/10/09 02:57:09 stenn@whimsy.udel.edu +1 -9
- Lose autokey.
-
-ChangeSet
- 1.706.1.12 01/10/09 02:19:59 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- configure.in
- 1.226.1.3 01/10/09 02:19:58 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.4.11 01/10/09 02:04:10 stenn@whimsy.udel.edu +1 -0
- Check for clock_gettime().
-
- configure.in
- 1.219.3.6 01/10/09 02:04:09 stenn@whimsy.udel.edu +1 -1
- Check for clock_gettime().
-
-ChangeSet
- 1.706.1.11 01/10/08 23:13:17 stenn@whimsy.udel.edu +149 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev-hms
-
- util/ntp-genkeys.c
- 1.60 01/10/08 23:13:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- util/ntp-genkeys.c
- 1.59 01/10/08 23:13:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/Makefile.am
- 1.13 01/10/08 23:13:08 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- util/Makefile.am
- 1.12 01/10/08 23:13:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpq/ntpq.c
- 1.19 01/10/08 23:13:05 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpq/ntpq.c
- 1.18 01/10/08 23:13:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpq/Makefile.am
- 1.7 01/10/08 23:13:01 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpq/Makefile.am
- 1.6 01/10/08 23:13:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdc/ntpdc.c
- 1.11 01/10/08 23:12:50 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpdc/ntpdc.c
- 1.10 01/10/08 23:12:50 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdc/Makefile.am
- 1.6 01/10/08 23:12:38 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpdc/Makefile.am
- 1.5 01/10/08 23:12:38 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdate/Makefile.am
- 1.8 01/10/08 23:12:33 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpdate/Makefile.am
- 1.7 01/10/08 23:12:33 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_local.c
- 1.7 01/10/08 23:12:21 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/refclock_local.c
- 1.5.1.2 01/10/08 23:12:20 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_conf.c
- 1.16 01/10/08 23:12:16 stenn@whimsy.udel.edu +0 -8
- Auto merged
-
- ntpd/refclock_conf.c
- 1.15 01/10/08 23:12:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_atom.c
- 1.34.1.2 01/10/08 23:12:13 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/refclock_atom.c
- 1.34.2.2 01/10/08 23:12:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntpd.c
- 1.37 01/10/08 23:12:06 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntpd.c
- 1.36 01/10/08 23:12:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_util.c
- 1.15.1.2 01/10/08 23:12:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_util.c
- 1.15.1.1 01/10/08 23:12:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_timer.c
- 1.20 01/10/08 23:11:57 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_timer.c
- 1.19 01/10/08 23:11:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_request.c
- 1.24.1.2 01/10/08 23:11:54 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_request.c
- 1.24.1.1 01/10/08 23:11:54 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_refclock.c
- 1.40.1.3 01/10/08 23:11:49 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_refclock.c
- 1.40.1.2 01/10/08 23:11:49 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_proto.c
- 1.99.1.4 01/10/08 23:11:43 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_proto.c
- 1.99.1.3 01/10/08 23:11:43 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_peer.c
- 1.32.1.2 01/10/08 23:11:39 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.32.1.1 01/10/08 23:11:39 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_loopfilter.c
- 1.58 01/10/08 23:11:35 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_loopfilter.c
- 1.57 01/10/08 23:11:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_io.c
- 1.21.1.3 01/10/08 23:11:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_io.c
- 1.21.1.2 01/10/08 23:11:29 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_crypto.c
- 1.48 01/10/08 23:11:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_crypto.c
- 1.47 01/10/08 23:11:25 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_control.c
- 1.39.1.4 01/10/08 23:11:22 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
- ntpd/ntp_control.c
- 1.39.1.3 01/10/08 23:11:22 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_config.c
- 1.52.1.4 01/10/08 23:11:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.52.1.3 01/10/08 23:11:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/Makefile.am
- 1.22 01/10/08 23:11:11 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
- ntpd/Makefile.am
- 1.21 01/10/08 23:11:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/statestr.c
- 1.5 01/10/08 23:10:59 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- libntp/statestr.c
- 1.4 01/10/08 23:10:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/clocktypes.c
- 1.10 01/10/08 23:10:54 stenn@whimsy.udel.edu +0 -2
- Auto merged
-
- libntp/clocktypes.c
- 1.9 01/10/08 23:10:54 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/authusekey.c
- 1.6 01/10/08 23:10:51 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- libntp/authusekey.c
- 1.5 01/10/08 23:10:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/authreadkeys.c
- 1.6 01/10/08 23:10:43 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- libntp/authreadkeys.c
- 1.5 01/10/08 23:10:43 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/authkeys.c
- 1.9 01/10/08 23:10:40 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- libntp/authkeys.c
- 1.8 01/10/08 23:10:40 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/a_md5encrypt.c
- 1.8 01/10/08 23:10:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- libntp/a_md5encrypt.c
- 1.7 01/10/08 23:10:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/Makefile.am
- 1.12.1.2 01/10/08 23:10:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- libntp/Makefile.am
- 1.12.1.1 01/10/08 23:10:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntpd.h
- 1.31.1.2 01/10/08 23:10:20 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntpd.h
- 1.31.1.1 01/10/08 23:10:20 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_stdlib.h
- 1.11.1.2 01/10/08 23:10:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_stdlib.h
- 1.11.1.1 01/10/08 23:10:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_refclock.h
- 1.9.1.2 01/10/08 23:10:13 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_refclock.h
- 1.9.2.2 01/10/08 23:10:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_machine.h
- 1.11 01/10/08 23:10:07 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_machine.h
- 1.10 01/10/08 23:10:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_crypto.h
- 1.23 01/10/08 23:10:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_crypto.h
- 1.22 01/10/08 23:10:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_control.h
- 1.15.1.2 01/10/08 23:09:53 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_control.h
- 1.15.1.1 01/10/08 23:09:53 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_config.h
- 1.14 01/10/08 23:09:47 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_config.h
- 1.13 01/10/08 23:09:47 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp.h
- 1.50.1.4 01/10/08 23:09:44 stenn@whimsy.udel.edu +0 -2
- Auto merged
-
- include/ntp.h
- 1.50.1.3 01/10/08 23:09:43 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/rackety.conf
- 1.4 01/10/08 23:09:41 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- conf/rackety.conf
- 1.3 01/10/08 23:09:41 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/pogo.conf
- 1.5 01/10/08 23:09:39 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- conf/pogo.conf
- 1.4 01/10/08 23:09:38 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/malarky.conf
- 1.4 01/10/08 23:09:36 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- conf/malarky.conf
- 1.3 01/10/08 23:09:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/grundoon.conf
- 1.5 01/10/08 23:09:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- conf/grundoon.conf
- 1.4 01/10/08 23:09:32 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/README
- 1.6 01/10/08 23:09:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- conf/README
- 1.5 01/10/08 23:09:28 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/config.h
- 1.12 01/10/08 23:09:24 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ports/winnt/include/config.h
- 1.11 01/10/08 23:09:24 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/refclock.htm
- 1.17 01/10/08 23:09:15 stenn@whimsy.udel.edu +0 -8
- Auto merged
-
- html/tickadj.htm
- 1.7 01/10/08 23:09:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/release.htm
- 1.17 01/10/08 23:09:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/refclock.htm
- 1.16 01/10/08 23:09:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/rdebug.htm
- 1.6 01/10/08 23:09:07 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/qth.htm
- 1.5 01/10/08 23:09:06 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/quick.htm
- 1.6 01/10/08 23:09:06 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/qth.htm
- 1.4 01/10/08 23:09:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/prefer.htm
- 1.6 01/10/08 23:08:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/pps.htm
- 1.10 01/10/08 23:08:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/porting.htm
- 1.5 01/10/08 23:08:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/patches.htm
- 1.6 01/10/08 23:08:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/parsenew.htm
- 1.3 01/10/08 23:08:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/parsedata.htm
- 1.5 01/10/08 23:08:33 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/ntptrace.htm
- 1.6 01/10/08 23:08:33 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/ntptime.htm
- 1.8 01/10/08 23:08:33 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/ntpq.htm
- 1.10 01/10/08 23:08:33 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/ntpdc.htm
- 1.7 01/10/08 23:08:33 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/ntpdate.htm
- 1.7 01/10/08 23:08:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/ntpd.htm
- 1.15 01/10/08 23:08:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/notes.htm
- 1.7 01/10/08 23:08:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/mx4200data.htm
- 1.6 01/10/08 23:08:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/monopt.htm
- 1.9 01/10/08 23:08:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/miscopt.htm
- 1.13 01/10/08 23:08:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/measure.htm
- 1.5 01/10/08 23:08:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/leap.htm
- 1.3 01/10/08 23:08:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/ldisc.htm
- 1.4 01/10/08 23:08:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/kernpps.htm
- 1.5 01/10/08 23:08:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/kern.htm
- 1.7 01/10/08 23:08:31 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/index.htm
- 1.12 01/10/08 23:08:30 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/htmlprimer.htm
- 1.3 01/10/08 23:08:30 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/howto.htm
- 1.6 01/10/08 23:08:30 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/hints.htm
- 1.5 01/10/08 23:08:30 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/genkeys.htm
- 1.8 01/10/08 23:08:30 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/gadget.htm
- 1.5 01/10/08 23:08:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/extern.htm
- 1.6 01/10/08 23:08:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/exec.htm
- 1.8 01/10/08 23:08:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver9.htm
- 1.6 01/10/08 23:08:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver8.htm
- 1.5 01/10/08 23:08:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver7.htm
- 1.11 01/10/08 23:08:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver6.htm
- 1.6 01/10/08 23:08:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver5.htm
- 1.4 01/10/08 23:08:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver4.htm
- 1.5 01/10/08 23:08:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver39.htm
- 1.4 01/10/08 23:08:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver38.htm
- 1.4 01/10/08 23:08:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver37.htm
- 1.4 01/10/08 23:08:28 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver36.htm
- 1.8 01/10/08 23:08:27 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver35.htm
- 1.7 01/10/08 23:08:27 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver34.htm
- 1.4 01/10/08 23:08:27 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver33.htm
- 1.5 01/10/08 23:08:27 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver32.htm
- 1.5 01/10/08 23:08:27 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver30.htm
- 1.8 01/10/08 23:08:27 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver3.htm
- 1.4 01/10/08 23:08:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver29.htm
- 1.4 01/10/08 23:08:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver28.htm
- 1.4 01/10/08 23:08:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver27.htm
- 1.4 01/10/08 23:08:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver26.htm
- 1.3 01/10/08 23:08:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver24.htm
- 1.3 01/10/08 23:08:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver23.htm
- 1.5 01/10/08 23:08:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver22.htm
- 1.8 01/10/08 23:08:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver20.htm
- 1.6 01/10/08 23:08:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver2.htm
- 1.4 01/10/08 23:08:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver19.htm
- 1.4 01/10/08 23:08:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver18.htm
- 1.4 01/10/08 23:08:25 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver16.htm
- 1.3 01/10/08 23:08:24 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver12.htm
- 1.4 01/10/08 23:08:24 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver11.htm
- 1.4 01/10/08 23:08:24 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver10.htm
- 1.4 01/10/08 23:08:24 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/driver1.htm
- 1.5 01/10/08 23:08:24 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/debug.htm
- 1.8 01/10/08 23:08:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/copyright.htm
- 1.19 01/10/08 23:08:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/confopt.htm
- 1.17 01/10/08 23:08:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/config.htm
- 1.7 01/10/08 23:08:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/clockopt.htm
- 1.9 01/10/08 23:08:22 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/clockopt.htm
- 1.7.1.2 01/10/08 23:08:22 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/build.htm
- 1.9 01/10/08 23:08:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/biblio.htm
- 1.6 01/10/08 23:08:16 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/authopt.htm
- 1.14 01/10/08 23:08:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/audio.htm
- 1.7 01/10/08 23:08:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/assoc.htm
- 1.9 01/10/08 23:08:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/accopt.htm
- 1.9 01/10/08 23:08:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- html/Oncore-SHMEM.htm
- 1.4 01/10/08 23:08:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-ntp_update~382c0630
- 1.9 01/10/08 23:08:14 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-ntp_update~382c0630
- 1.8 01/10/08 23:08:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- BitKeeper/deleted/.del-README.rsa~6f1a085f
- 1.6 01/10/08 23:08:12 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-README.rsa~6f1a085f
- 1.5 01/10/08 23:08:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- BitKeeper/deleted/.del-README.des~3aed0663
- 1.9 01/10/08 23:08:08 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-README.des~3aed0663
- 1.8 01/10/08 23:08:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- BitKeeper/deleted/.del-Makefile.am~e832209e
- 1.17 01/10/08 23:07:44 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-Makefile.am~e832209e
- 1.16 01/10/08 23:07:44 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- BitKeeper/deleted/.del-authparity.c~3aed0663
- 1.6 01/10/08 23:06:58 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-authparity.c~3aed0663
- 1.5 01/10/08 23:06:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- BitKeeper/deleted/.del-authencrypt.c~3aed0663
- 1.8 01/10/08 23:06:46 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-authencrypt.c~3aed0663
- 1.7 01/10/08 23:06:46 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- BitKeeper/deleted/.del-dewey.conf~3e480692
- 1.4 01/10/08 23:06:30 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-dewey.conf~3e480692
- 1.3 01/10/08 23:06:30 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- BitKeeper/deleted/.del-README.cvs~1e180ca3
- 1.9 01/10/08 23:06:27 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-README.cvs~1e180ca3
- 1.8 01/10/08 23:06:27 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- configure.in
- 1.226.1.2 01/10/08 23:06:18 stenn@whimsy.udel.edu +0 -9
- Auto merged
-
- BitKeeper/etc/config
- 1.6 01/10/08 23:06:19 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.226.1.1 01/10/08 23:06:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- build
- 1.19 01/10/08 23:06:15 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- build
- 1.18 01/10/08 23:06:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- acinclude.m4
- 1.6 01/10/08 23:06:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- acinclude.m4
- 1.5 01/10/08 23:06:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- acconfig.h
- 1.28 01/10/08 23:05:57 stenn@whimsy.udel.edu +0 -3
- Auto merged
-
- acconfig.h
- 1.27 01/10/08 23:05:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- README
- 1.18 01/10/08 23:05:51 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- README
- 1.17 01/10/08 23:05:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- README.bk
- 1.7.1.2 01/10/08 23:05:39 stenn@whimsy.udel.edu +1 -3
- Auto merged
-
- NEWS
- 1.34 01/10/08 23:05:39 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- NEWS
- 1.33 01/10/08 23:05:38 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- Makefile.am
- 1.16.1.2 01/10/08 23:03:40 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.16.1.1 01/10/08 23:03:40 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- BitKeeper/deleted/.del-pre-apply.paranoid
- 1.3 01/10/08 23:03:00 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/pre-apply.paranoid
-
- BitKeeper/deleted/.del-post-incoming.2mirrors
- 1.2 01/10/08 23:02:49 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/post-incoming.2mirrors
-
- BitKeeper/deleted/.del-post-commit.changelog
- 1.6 01/10/08 23:02:18 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/post-commit.changelog
-
- BitKeeper/deleted/.del-notify
- 1.3 01/10/08 23:01:58 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/notify
-
- BitKeeper/deleted/.del-00-list
- 1.3 01/10/08 23:01:44 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/00-list
-
- BitKeeper/deleted/.del-refclock_jjy.c
- 1.3 01/10/08 23:01:17 stenn@whimsy.udel.edu +0 -0
- Delete: ntpd/refclock_jjy.c
-
- BitKeeper/deleted/.del-ntp_update~382c0630
- 1.6.1.5 01/10/08 22:55:52 stenn@whimsy.udel.edu +0 -0
- Merge rename: ntp_update -> BitKeeper/deleted/.del-ntp_update~382c0630
-
- BitKeeper/deleted/.del-dewey.conf~3e480692
- 1.1.1.2 01/10/08 22:55:52 stenn@whimsy.udel.edu +0 -0
- Merge rename: conf/dewey.conf -> BitKeeper/deleted/.del-dewey.conf~3e480692
-
- BitKeeper/deleted/.del-authparity.c~3aed0663
- 1.3.1.2 01/10/08 22:55:52 stenn@whimsy.udel.edu +0 -0
- Merge rename: libntp/authparity.c -> BitKeeper/deleted/.del-authparity.c~3aed0663
-
- BitKeeper/deleted/.del-authencrypt.c~3aed0663
- 1.4.1.2 01/10/08 22:55:52 stenn@whimsy.udel.edu +0 -0
- Merge rename: libntp/authencrypt.c -> BitKeeper/deleted/.del-authencrypt.c~3aed0663
-
- BitKeeper/deleted/.del-README.rsa~6f1a085f
- 1.3.1.5 01/10/08 22:55:52 stenn@whimsy.udel.edu +0 -0
- Merge rename: README.rsa -> BitKeeper/deleted/.del-README.rsa~6f1a085f
-
- BitKeeper/deleted/.del-README.des~3aed0663
- 1.6.1.5 01/10/08 22:55:52 stenn@whimsy.udel.edu +0 -0
- Merge rename: README.des -> BitKeeper/deleted/.del-README.des~3aed0663
-
- BitKeeper/deleted/.del-Makefile.am~e832209e
- 1.14.1.2 01/10/08 22:55:52 stenn@whimsy.udel.edu +0 -0
- Merge rename: librsaref/Makefile.am -> BitKeeper/deleted/.del-Makefile.am~e832209e
-
- BitKeeper/deleted/.del-README.cvs~1e180ca3
- 1.6.1.5 01/10/08 22:55:51 stenn@whimsy.udel.edu +0 -0
- Merge rename: README.cvs -> BitKeeper/deleted/.del-README.cvs~1e180ca3
-
- BitKeeper/etc/logging_ok
- 1.3.1.2 01/10/08 22:55:47 stenn@whimsy.udel.edu +0 -0
- 'Auto converge'
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.4 01/10/08 22:55:46 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.3.1.1 01/10/08 22:55:45 stenn@whimsy.udel.edu +0 -0
- 'Auto converge rename'
-
- BitKeeper/etc/logging_ok
- 1.3 01/10/08 22:55:44 stenn@whimsy.udel.edu +0 -0
- auto-union
-
- BitKeeper/etc/ignore
- 1.12 01/10/08 22:55:44 stenn@whimsy.udel.edu +3 -24
- auto-union
-
-ChangeSet
- 1.706.1.10 01/10/08 22:36:23 stenn@whimsy.udel.edu +89 -0
- Cleanup and improvements from Dave Mills.
-
- ntpd/refclock_local.c
- 1.5.1.1 01/10/08 22:36:20 stenn@whimsy.udel.edu +1 -1
- The stratum is in pp, not peer.
-
- ntpd/refclock_atom.c
- 1.34.2.1 01/10/08 22:36:20 stenn@whimsy.udel.edu +12 -8
- Cleanup and improvements.
-
- ntpd/ntp_refclock.c
- 1.40.1.1 01/10/08 22:36:20 stenn@whimsy.udel.edu +8 -13
- Cleanup and improvements.
-
- BitKeeper/etc/ignore
- 1.11 01/10/08 22:36:20 stenn@whimsy.udel.edu +3 -0
- Added ntpd/atom.bak ntpd/atom.c ntpd/ntp_proto.c.2 to the ignore list
-
- ntpd/ntp_proto.c
- 1.99.1.2 01/10/08 22:36:19 stenn@whimsy.udel.edu +77 -123
- Comment cleanup.
- Improvements and cleanup.
-
- ntpd/ntp_loopfilter.c
- 1.56 01/10/08 22:36:19 stenn@whimsy.udel.edu +1 -1
- Use clock_offset, not fp_offset.
-
- ntpd/ntp_control.c
- 1.39.1.2 01/10/08 22:36:19 stenn@whimsy.udel.edu +11 -7
- REFID cleanup.
-
- include/ntp_refclock.h
- 1.9.2.1 01/10/08 22:36:18 stenn@whimsy.udel.edu +1 -0
- Lose unused stratum variable.
-
- include/ntp.h
- 1.50.1.2 01/10/08 22:36:18 stenn@whimsy.udel.edu +1 -1
- Comment cleanup
-
- html/refclock.htm
- 1.15 01/10/08 22:36:18 stenn@whimsy.udel.edu +6 -5
- Cleanup from Dave Mills.
-
- html/qth.htm
- 1.3 01/10/08 22:36:18 stenn@whimsy.udel.edu +2 -28
- Cleanup from Dave Mills.
-
- html/driver40.htm
- 1.2 01/10/08 22:36:18 stenn@whimsy.udel.edu +87 -178
- Convert to NTP-style format
-
- html/clockopt.htm
- 1.7.1.1 01/10/08 22:36:18 stenn@whimsy.udel.edu +182 -39
- Clean up.
-
-ChangeSet
- 1.683.4.10 01/10/08 21:51:07 stenn@whimsy.udel.edu +548 -0
- Use EOLN_NATIVE.
-
- ElectricFence/tstheap.c
- 1.2 01/10/08 21:18:40 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ElectricFence/print.c
- 1.2 01/10/08 21:18:40 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ElectricFence/page.c
- 1.5 01/10/08 21:18:40 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ElectricFence/libefence.3
- 1.2 01/10/08 21:18:40 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ElectricFence/README
- 1.2 01/10/08 21:18:40 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ElectricFence/Makefile.am
- 1.7 01/10/08 21:18:40 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/timetrim.c
- 1.3 01/10/08 21:18:39 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/tickadj.c
- 1.5 01/10/08 21:18:39 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/testrs6000.c
- 1.2 01/10/08 21:18:39 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/sht.c
- 1.2 01/10/08 21:18:39 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ElectricFence/eftest.c
- 1.2 01/10/08 21:18:39 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ElectricFence/efence.h
- 1.2 01/10/08 21:18:39 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ElectricFence/efence.c
- 1.2 01/10/08 21:18:39 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ElectricFence/Makefile-
- 1.2 01/10/08 21:18:39 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ElectricFence/COPYING
- 1.2 01/10/08 21:18:39 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ElectricFence/CHANGES
- 1.2 01/10/08 21:18:39 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/precision.c
- 1.3 01/10/08 21:18:38 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/README
- 1.3 01/10/08 21:18:38 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/ntptime.c
- 1.14 01/10/08 21:18:37 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/ntp-genkeys.c
- 1.56.1.3 01/10/08 21:18:37 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/longsize.c
- 1.2 01/10/08 21:18:37 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/kern.c
- 1.3 01/10/08 21:18:37 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/jitter.c
- 1.3 01/10/08 21:18:37 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/Makefile.am
- 1.9.1.1 01/10/08 21:18:37 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/hist.c
- 1.5 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/byteorder.c
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/ansi2knr.c
- 1.3 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- util/ansi2knr.1
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/etc/setup
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/etc/rc
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/etc/install
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/etc/cron
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/etc/crontab
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/rc2/local.ntpd
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/rc1/xntp
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/rc1/prototype
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/rc1/preremove
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/rc1/preinstall
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/rc1/postinstall
- 1.2 01/10/08 21:18:36 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/tickconf
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/sun4.sun4m
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/sun4.sun4m.faui45m
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/sun4.sun4m.faui42
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/sun4.sun4c
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/sun4.sun4c.Lucifer
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/sun4.sun4.faui45
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/sun4.sun4.faui10
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/sun4.sun4.faui01
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/sun3.sun3
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/ntp.conf
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/hp800.hp800
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/hp700.hp700
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/hp700.hp700.faui47
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/conf/hp300.hp300
- 1.2 01/10/08 21:18:35 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/bin/mvstats
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/bin/monl
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/support/README
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/tdata.awk
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/tdata.S
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/summary.sh
- 1.3 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/psummary.awk
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/peer.awk
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/loop_summary
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/loop.awk
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/loop.S
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/itf.awk
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/itf.S
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/README
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/README.timecodes
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/README.stats
- 1.2 01/10/08 21:18:34 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/etf.awk
- 1.2 01/10/08 21:18:33 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/etf.S
- 1.2 01/10/08 21:18:33 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/ensemble.awk
- 1.2 01/10/08 21:18:33 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/ensemble.S
- 1.2 01/10/08 21:18:33 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/dupe.awk
- 1.2 01/10/08 21:18:33 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/stats/clock.awk
- 1.2 01/10/08 21:18:33 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/monitoring/timelocal.pl
- 1.2 01/10/08 21:18:33 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/monitoring/ntptrap
- 1.2 01/10/08 21:18:33 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/monitoring/ntploopwatch
- 1.2 01/10/08 21:18:33 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/monitoring/README
- 1.3 01/10/08 21:18:33 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/summary.in
- 1.2 01/10/08 21:18:32 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/plot_summary.in
- 1.2 01/10/08 21:18:32 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/ntpver.in
- 1.2 01/10/08 21:18:32 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/ntpsweep.in
- 1.2 01/10/08 21:18:32 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/ntp-wait.in
- 1.5 01/10/08 21:18:32 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/monitoring/ntploopstat
- 1.3 01/10/08 21:18:32 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/monitoring/ntp.pl
- 1.3 01/10/08 21:18:32 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/monitoring/lr.pl
- 1.3 01/10/08 21:18:32 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/monitoring/loopwatch.config.SAMPLE
- 1.2 01/10/08 21:18:32 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/ntp-status
- 1.2 01/10/08 21:18:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/ntp-restart
- 1.3 01/10/08 21:18:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/ntp-groper
- 1.2 01/10/08 21:18:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/ntp-close
- 1.2 01/10/08 21:18:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/mkver.in
- 1.8 01/10/08 21:18:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/hpadjtime.sh
- 1.2 01/10/08 21:18:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/freq_adj.in
- 1.2 01/10/08 21:18:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/fixautomakedepsmagic
- 1.2 01/10/08 21:18:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/checktime.in
- 1.2 01/10/08 21:18:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/Makefile.am
- 1.9 01/10/08 21:18:31 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/calc_tickadj.in
- 1.2 01/10/08 21:18:30 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- scripts/README
- 1.8 01/10/08 21:18:30 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/sys/wait.h
- 1.3 01/10/08 21:18:30 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/sys/time.h
- 1.3 01/10/08 21:18:30 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/sys/socket.h
- 1.3 01/10/08 21:18:30 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/netinet/ip.h
- 1.2 01/10/08 21:18:30 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/netinet/in_system.h
- 1.2 01/10/08 21:18:30 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/netinet/in.h
- 1.3 01/10/08 21:18:30 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/arpa/inet.h
- 1.3 01/10/08 21:18:30 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/win32_io.h
- 1.4 01/10/08 21:18:29 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/unistd.h
- 1.2 01/10/08 21:18:29 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/transmitbuff.h
- 1.3 01/10/08 21:18:29 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/sys/signal.h
- 1.3 01/10/08 21:18:29 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/sys/resource.h
- 1.3 01/10/08 21:18:29 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/sys/param.h
- 1.3 01/10/08 21:18:29 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/sys/ioctl.h
- 1.4 01/10/08 21:18:29 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/instsrv/instsrv.c
- 1.5 01/10/08 21:18:28 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/termios.h
- 1.2 01/10/08 21:18:28 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/syslog.h
- 1.3 01/10/08 21:18:28 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/ntp_timer.h
- 1.3 01/10/08 21:18:28 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/ntp_iocompletionport.h
- 1.4 01/10/08 21:18:28 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/netdb.h
- 1.3 01/10/08 21:18:28 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/hopf_PCI_io.h
- 1.2 01/10/08 21:18:28 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/config.h
- 1.9.1.1 01/10/08 21:18:28 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/include/clockstuff.h
- 1.4 01/10/08 21:18:28 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/ntpd/refclock_trimbledc.h
- 1.3 01/10/08 21:18:27 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/ntpd/refclock_trimbledc.c
- 1.4 01/10/08 21:18:27 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/ntpd/ntp_iocompletionport.c
- 1.5 01/10/08 21:18:27 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/libntp/util_clockstuff.c
- 1.3 01/10/08 21:18:27 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/libntp/transmitbuff.c
- 1.4 01/10/08 21:18:27 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/libntp/mexit.c
- 1.3 01/10/08 21:18:27 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/libntp/messages.mc
- 1.3 01/10/08 21:18:27 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/libntp/log.h
- 1.3 01/10/08 21:18:27 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/libntp/SetSystemTime.c
- 1.3 01/10/08 21:18:27 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/scripts/mkver.bat
- 1.4 01/10/08 21:18:26 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/ntpd/win32_io.c
- 1.5 01/10/08 21:18:26 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/ntpd/nt_clockstuff.c
- 1.10 01/10/08 21:18:26 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/ntpd/hopf_PCI_io.c
- 1.2 01/10/08 21:18:26 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- parseutil/testdcf.c
- 1.3 01/10/08 21:18:26 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- parseutil/README
- 1.2 01/10/08 21:18:26 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- parseutil/Makefile.am
- 1.4 01/10/08 21:18:26 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- parseutil/dcfd.c
- 1.8 01/10/08 21:18:25 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntptrace/ntptrace.h
- 1.2 01/10/08 21:18:25 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntptrace/ntptrace.c
- 1.15 01/10/08 21:18:25 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntptrace/README
- 1.3 01/10/08 21:18:25 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntptrace/Makefile.am
- 1.3 01/10/08 21:18:25 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpq/ntpq_ops.c
- 1.11 01/10/08 21:18:25 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpq/README
- 1.3 01/10/08 21:18:25 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpq/ntpq.h
- 1.2 01/10/08 21:18:24 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpq/ntpq.c
- 1.16.1.1 01/10/08 21:18:24 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpq/Makefile.am
- 1.4.1.1 01/10/08 21:18:24 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdc/ntpdc_ops.c
- 1.11 01/10/08 21:18:24 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdc/ntpdc.h
- 1.2 01/10/08 21:18:24 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdc/ntpdc.c
- 1.8.1.1 01/10/08 21:18:24 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdc/README
- 1.3 01/10/08 21:18:24 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdc/Makefile.am
- 1.3.1.1 01/10/08 21:18:24 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdate/ntptimeset.c
- 1.11 01/10/08 21:18:23 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdate/ntptime_config.c
- 1.5 01/10/08 21:18:23 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdate/ntpdate.h
- 1.4.1.1 01/10/08 21:18:23 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdate/ntpdate.c
- 1.23.1.2 01/10/08 21:18:23 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdate/Makefile.am
- 1.5.1.1 01/10/08 21:18:23 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpdate/README
- 1.3 01/10/08 21:18:22 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_wwvb.c
- 1.10 01/10/08 21:18:22 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_usno.c
- 1.6 01/10/08 21:18:22 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_ulink.c
- 1.11 01/10/08 21:18:22 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_jjy.c
- 1.2 01/10/08 21:18:22 stenn@whimsy.udel.edu +0 -0
-
- ntpd/refclock_wwv.c
- 1.26 01/10/08 21:18:21 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_true.c
- 1.7 01/10/08 21:18:21 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_trak.c
- 1.7 01/10/08 21:18:21 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_tpro.c
- 1.6 01/10/08 21:18:21 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_shm.c
- 1.10 01/10/08 21:18:21 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_ptbacts.c
- 1.2 01/10/08 21:18:21 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_parse.c
- 1.18 01/10/08 21:18:21 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_palisade.h
- 1.6 01/10/08 21:18:21 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_palisade.c
- 1.9 01/10/08 21:18:20 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_oncore.c
- 1.37 01/10/08 21:18:20 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_nmea.c
- 1.16 01/10/08 21:18:20 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_mx4200.c
- 1.15 01/10/08 21:18:20 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_pst.c
- 1.6 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_pcf.c
- 1.6 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_msfees.c
- 1.8 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_local.c
- 1.6 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_leitch.c
- 1.5 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_jupiter.c
- 1.8 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_irig.c
- 1.9 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_hpgps.c
- 1.5 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_hopfser.c
- 1.3 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_hopfpci.c
- 1.3 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_heath.c
- 1.9 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_gpsvme.c
- 1.5 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_dumbclock.c
- 1.5 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_datum.c
- 1.7 01/10/08 21:18:19 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_fg.c
- 1.7 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_conf.c
- 1.13.1.2 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_chu.c
- 1.21 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_chronolog.c
- 1.5 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_bancomm.c
- 1.7 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_atom.c
- 1.34.1.1 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_as2201.c
- 1.7 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_arc.c
- 1.8 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_arbiter.c
- 1.5 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/refclock_acts.c
- 1.8 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_util.c
- 1.14.2.1 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_timer.c
- 1.15.1.2 01/10/08 21:18:18 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_restrict.c
- 1.3.1.1 01/10/08 21:18:17 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_resolver.c
- 1.11.1.2 01/10/08 21:18:17 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_request.c
- 1.23.2.1 01/10/08 21:18:17 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_refclock.c
- 1.39.2.1 01/10/08 21:18:17 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_proto.c
- 1.93.2.2 01/10/08 21:18:17 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_peer.c
- 1.29.2.1 01/10/08 21:18:17 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_monitor.c
- 1.4.1.1 01/10/08 21:18:17 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_loopfilter.c
- 1.53.1.1 01/10/08 21:18:17 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntpd.c
- 1.33.1.2 01/10/08 21:18:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_intres.c
- 1.17.1.2 01/10/08 21:18:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_filegen.c
- 1.6 01/10/08 21:18:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_crypto.c
- 1.43.1.1 01/10/08 21:18:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_control.c
- 1.37.3.2 01/10/08 21:18:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_config.c
- 1.50.3.1 01/10/08 21:18:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/map_vme.c
- 1.4 01/10/08 21:18:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/jupiter.h
- 1.2 01/10/08 21:18:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/Makefile.am
- 1.18.2.2 01/10/08 21:18:16 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/ntp_io.c
- 1.20.2.2 01/10/08 21:18:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/cmd_args.c
- 1.7.1.1 01/10/08 21:18:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntpd/check_y2k.c
- 1.6 01/10/08 21:18:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/trim_info.c
- 1.2 01/10/08 21:18:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/parsestreams.c
- 1.4 01/10/08 21:18:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/parsesolaris.c
- 1.4 01/10/08 21:18:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/parse_conf.c
- 1.7 01/10/08 21:18:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/parse.c
- 1.8 01/10/08 21:18:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/mkinfo_scmd.sed
- 1.2 01/10/08 21:18:15 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/mkinfo_rcmd.sed
- 1.2 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/info_trimble.c
- 1.2 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/data_mbg.c
- 1.3 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/clk_wharton.c
- 1.4 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/clk_varitext.c
- 1.5 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/clk_trimtsip.c
- 1.6 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/clk_trimtaip.c
- 1.6 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/clk_schmid.c
- 1.6 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/clk_rcc8000.c
- 1.6 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/clk_rawdcf.c
- 1.8 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/clk_meinberg.c
- 1.6 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/clk_hopf6021.c
- 1.6 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/clk_dcf7000.c
- 1.6 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/Makefile.am
- 1.7 01/10/08 21:18:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/clk_computime.c
- 1.6 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libparse/README
- 1.2 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/ymd2yd.c
- 1.3 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/utvtoa.c
- 1.3 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/uinttoa.c
- 1.2 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/uglydate.c
- 1.3 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/tvtots.c
- 1.2 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/tvtoa.c
- 1.3 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/tstotv.c
- 1.2 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/tsftomsu.c
- 1.2 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/systime.c
- 1.18 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/syssignal.c
- 1.8 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/strerror.c
- 1.2 01/10/08 21:18:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/strdup.c
- 1.4 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/statestr.c
- 1.2.1.1 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/snprintf.c
- 1.5 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/refnumtoa.c
- 1.1.1.1 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/recvbuff.c
- 1.8 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/ranny.c
- 1.2 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/random.c
- 1.2 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/prettydate.c
- 1.3 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/octtoint.c
- 1.2 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/numtohost.c
- 1.2 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/numtoa.c
- 1.2 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/netof.c
- 1.1.1.1 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/msyslog.c
- 1.11 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/msutotsf.c
- 1.2 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/README
- 1.2 01/10/08 21:18:12 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/mstolfp.c
- 1.2 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/modetoa.c
- 1.2 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/mktime.c
- 1.3 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/mfptoms.c
- 1.2 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/mfptoa.c
- 1.2 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/mfp_mul.c
- 1.3 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/memmove.c
- 1.2 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/md5c.c
- 1.2 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/machines.c
- 1.11 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/log.h
- 1.2 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/log.c
- 1.2 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/lib_strbuf.h
- 1.2 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/lib_strbuf.c
- 1.3 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/iosignal.c
- 1.8 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/ieee754io.c
- 1.4 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/humandate.c
- 1.3 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/Makefile.am
- 1.11.2.1 01/10/08 21:18:11 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/inttoa.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/icom.c
- 1.7 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/hextolfp.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/hextoint.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/gpstolfp.c
- 1.5 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/getopt.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/fptoms.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/fptoa.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/findconfig.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/emalloc.c
- 1.5 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/dolfptoa.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/dofptoa.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/decodenetnum.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/clocktypes.c
- 1.7.1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/clocktime.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/calyearstart.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/calleapwhen.c
- 1.2 01/10/08 21:18:10 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/caltontp.c
- 1.2 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/caljulian.c
- 1.3 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/buftvtots.c
- 1.3 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/binio.c
- 1.2 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/authusekey.c
- 1.3.1.1 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/authreadkeys.c
- 1.3.1.1 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/authparity.c
- 1.3.1.1 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/authkeys.c
- 1.6.1.1 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/authencrypt.c
- 1.4.1.1 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/audio.c
- 1.7 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/atouint.c
- 1.2 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/atolfp.c
- 1.2 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/atoint.c
- 1.2 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/adjtimex.c
- 1.2 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/adjtime.c
- 1.3 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- libntp/a_md5encrypt.c
- 1.5.1.1 01/10/08 21:18:09 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/tty_clk_STREAMS.c
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/tty_clk.c
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/tty_chu_STREAMS.c
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/tty_chu.c
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/sys/tpro.h
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/sys/timex.h
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/sys/ppsclock.h
- 1.3 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/sys/pcl720.h
- 1.3 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/sys/parsestreams.h
- 1.3 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/sys/i8253.h
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/sys/clkdefs.h
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/sys/chudefs.h
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/sys/bsd_audioirig.h
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/sys/README
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/sys/Makefile.am
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/Makefile.am
- 1.2 01/10/08 21:18:08 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/clkinit.c
- 1.2 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/chuinit.c
- 1.2 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- kernel/README
- 1.2 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/trimble.h
- 1.2 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/recvbuff.h
- 1.1.1.1 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/parse_conf.h
- 1.2 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/parse.h
- 1.4 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_unixtime.h
- 1.3 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_types.h
- 1.4 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_syslog.h
- 1.3 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_syscall.h
- 1.5 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_string.h
- 1.2 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_stdlib.h
- 1.10.2.1 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_select.h
- 1.2 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_request.h
- 1.10.1.1 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/README
- 1.2 01/10/08 21:18:07 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_tty.h
- 1.2 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_refclock.h
- 1.9.1.1 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_proto.h
- 1.4 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_malloc.h
- 1.2 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_machine.h
- 1.7.1.2 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_io.h
- 1.3 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_if.h
- 1.3 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_fp.h
- 1.2.1.1 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_filegen.h
- 1.2 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_datum.h
- 1.2 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_crypto.h
- 1.20.1.1 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_control.h
- 1.13.2.1 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_config.h
- 1.11.1.1 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_cmdargs.h
- 1.2 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp_calendar.h
- 1.2 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntp.h
- 1.47.3.2 01/10/08 21:18:06 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntpd.h
- 1.27.2.1 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ntif.h
- 1.2 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/mx4200.h
- 1.2 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/md5.h
- 1.2 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/mbg_gps166.h
- 1.2 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/l_stdlib.h
- 1.8 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/iosignal.h
- 1.2 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ieee754io.h
- 1.2 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/icom.h
- 1.4 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/hopf6039.h
- 1.2 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/gps.h
- 1.2 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/global.h
- 1.3 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/binio.h
- 1.2 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/audio.h
- 1.3 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/ascii.h
- 1.2 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/adjtime.h
- 1.2 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- include/Makefile.am
- 1.12 01/10/08 21:18:05 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/winnt.htm
- 1.8 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/mpeix
- 1.2 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
-
- conf/rackety.conf
- 1.1.1.1 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/pogo.conf
- 1.2.1.1 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/malarky.conf
- 1.1.1.1 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/grundoon.conf
- 1.2.1.1 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/dewey.conf
- 1.1.1.1 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/beauregard.conf
- 1.2 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/baldwin.conf
- 1.3 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- conf/README
- 1.3.1.1 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- clockstuff/propdelay.c
- 1.3 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- clockstuff/clktest.c
- 1.2 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- clockstuff/chutest.c
- 1.2 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- clockstuff/README
- 1.3 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- clockstuff/Makefile.am
- 1.3 01/10/08 21:18:04 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/vxworks.htm
- 1.2 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/vxworks.html
- 1.2 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/todo
- 1.2 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/svr4_package
- 1.2 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/svr4-dell
- 1.2 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/sun4
- 1.2 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/solaris.xtra.patchfreq
- 1.2 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/solaris.xtra.S99ntpd
- 1.3 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/solaris.xtra.4095849
- 1.2 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/solaris.xtra.4023118
- 1.2 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/solaris.html
- 1.4 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/solaris-dosynctodr.html
- 1.2 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/sco.htm
- 1.2 01/10/08 21:18:03 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/sgi
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/rs6000
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/refclocks
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/parse
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/notes-xntp-v3
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/linux
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/hpux
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/freebsd
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/decosf2
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/decosf1
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/changes
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/bsdi
- 1.2 01/10/08 21:18:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/tickadj.htm
- 1.5.1.1 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/release.htm
- 1.13.1.1 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/refclock.htm
- 1.13.1.2 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/rdebug.htm
- 1.4.1.1 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/quick.htm
- 1.4.1.1 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/qth.htm
- 1.1.1.2 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/porting.htm
- 1.3.1.1 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/patches.htm
- 1.4.1.1 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/parsenew.htm
- 1.1.1.1 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/parsedata.htm
- 1.2.1.1 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntptrace.htm
- 1.4.1.1 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntptime.htm
- 1.6.1.1 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/aix
- 1.2 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints/a-ux
- 1.2 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/Oncore-SHMEM.htm
- 1.2.1.1 01/10/08 21:18:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/prefer.htm
- 1.4.1.1 01/10/08 21:18:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/pps.htm
- 1.8.1.1 01/10/08 21:18:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntpq.htm
- 1.6.1.1 01/10/08 21:18:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntpdc.htm
- 1.5.1.1 01/10/08 21:18:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntpdate.htm
- 1.5.1.1 01/10/08 21:18:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntpd.htm
- 1.13.1.1 01/10/08 21:18:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/notes.htm
- 1.5.1.1 01/10/08 21:18:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/mx4200data.htm
- 1.4.1.1 01/10/08 21:18:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/miscopt.htm
- 1.11.1.1 01/10/08 21:18:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/measure.htm
- 1.3.1.1 01/10/08 21:18:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/monopt.htm
- 1.6.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/leap.htm
- 1.1.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ldisc.htm
- 1.2.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/kernpps.htm
- 1.3.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/kern.htm
- 1.5.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/index.htm
- 1.10.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/htmlprimer.htm
- 1.1.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/howto.htm
- 1.4.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints.htm
- 1.3.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/genkeys.htm
- 1.5.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/gadget.htm
- 1.3.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/extern.htm
- 1.4.1.1 01/10/08 21:17:59 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver9.htm
- 1.4.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver8.htm
- 1.3.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver7.htm
- 1.9.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver6.htm
- 1.4.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver5.htm
- 1.2.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver4.htm
- 1.3.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver39.htm
- 1.1.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver38.htm
- 1.1.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver37.htm
- 1.2.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver36.htm
- 1.6.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver35.htm
- 1.4.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver34.htm
- 1.2.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver33.htm
- 1.3.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver3.htm
- 1.2.1.1 01/10/08 21:17:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver32.htm
- 1.3.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver30.htm
- 1.6.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver29.htm
- 1.2.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver28.htm
- 1.2.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver27.htm
- 1.2.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver26.htm
- 1.1.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver24.htm
- 1.1.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver23.htm
- 1.3.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver22.htm
- 1.6.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver20.htm
- 1.4.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver2.htm
- 1.2.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver19.htm
- 1.2.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver18.htm
- 1.2.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver16.htm
- 1.1.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver1.htm
- 1.3.1.1 01/10/08 21:17:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/exec.htm
- 1.6.1.1 01/10/08 21:17:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver12.htm
- 1.2.1.1 01/10/08 21:17:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver11.htm
- 1.2.1.1 01/10/08 21:17:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver10.htm
- 1.2.1.1 01/10/08 21:17:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/debug.htm
- 1.5.1.1 01/10/08 21:17:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/copyright.htm
- 1.17.1.1 01/10/08 21:17:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/confopt.htm
- 1.14.1.1 01/10/08 21:17:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/config.htm
- 1.4.1.1 01/10/08 21:17:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/clockopt.htm
- 1.8 01/10/08 21:17:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/build.htm
- 1.6.1.1 01/10/08 21:17:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- librsaref/Makefile.am
- 1.14.1.1 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/biblio.htm
- 1.4.1.1 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/authopt.htm
- 1.11.1.1 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/audio.htm
- 1.5.1.1 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/assoc.htm
- 1.6.1.1 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/accopt.htm
- 1.7.1.1 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- adjtimed/adjtimed.c
- 1.4 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- adjtimed/README
- 1.3 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- adjtimed/Makefile.am
- 1.2 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- BitKeeper/triggers/pre-apply.paranoid
- 1.2 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
-
- BitKeeper/triggers/post-commit.changelog
- 1.5 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
-
- BitKeeper/triggers/00-list
- 1.2 01/10/08 21:17:55 stenn@whimsy.udel.edu +0 -0
-
- results.y2kfixes
- 1.5 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- readme.y2kfixes
- 1.5 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- ntp_update
- 1.6.1.4 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- mkinstalldirs
- 1.7 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- WHERE-TO-START
- 1.5 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- TODO
- 1.6 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- README
- 1.14.1.4 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- README.rsa
- 1.3.1.4 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- README.hackers
- 1.5 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- README.des
- 1.6.1.4 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- README.cvs
- 1.6.1.4 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- NOTES.y2kfixes
- 1.6 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- NEWS
- 1.31.1.4 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- BitKeeper/triggers/post-incoming.2mirrors
- 1.3 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- BitKeeper/triggers/notify
- 1.2 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- BitKeeper/etc/logging_ok
- 1.1.1.1 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- BitKeeper/etc/ignore
- 1.1.2.2 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- BitKeeper/etc/config
- 1.1.1.3 01/10/08 21:17:54 stenn@whimsy.udel.edu +0 -0
-
- missing
- 1.7 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- install-sh
- 1.5 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- flock-build
- 1.23 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- excludes
- 1.5 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- dot.emacs
- 1.7 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- depcomp
- 1.6 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- configure.in
- 1.219.3.5 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- config.sub
- 1.10 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- config.guess
- 1.10 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- acconfig.h
- 1.23.3.5 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- README.bk
- 1.1.1.12 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- INSTALL
- 1.7 01/10/08 21:17:53 stenn@whimsy.udel.edu +0 -0
-
- build
- 1.16.1.4 01/10/08 21:17:52 stenn@whimsy.udel.edu +0 -0
-
- acinclude.m4
- 1.3.1.4 01/10/08 21:17:52 stenn@whimsy.udel.edu +0 -0
-
- Makefile.am
- 1.12.1.6 01/10/08 21:17:52 stenn@whimsy.udel.edu +0 -0
-
- ChangeLog
- 1.588 01/10/08 21:17:52 stenn@whimsy.udel.edu +0 -0
-
- results.y2kfixes
- 1.4 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- readme.y2kfixes
- 1.4 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- ntp_update
- 1.6.1.3 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- mkinstalldirs
- 1.6 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- missing
- 1.6 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- install-sh
- 1.4 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- flock-build
- 1.22 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- excludes
- 1.4 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- dot.emacs
- 1.6 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- depcomp
- 1.5 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- configure.in
- 1.219.3.4 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- acconfig.h
- 1.23.3.4 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- WHERE-TO-START
- 1.4 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- TODO
- 1.5 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- README
- 1.14.1.3 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- README.rsa
- 1.3.1.3 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- README.hackers
- 1.4 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- README.des
- 1.6.1.3 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- README.cvs
- 1.6.1.3 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- NOTES.y2kfixes
- 1.5 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- NEWS
- 1.31.1.3 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- INSTALL
- 1.6 01/10/08 02:09:51 stenn@whimsy.udel.edu +0 -0
-
- config.sub
- 1.9 01/10/08 02:09:50 stenn@whimsy.udel.edu +0 -0
-
- config.guess
- 1.9 01/10/08 02:09:50 stenn@whimsy.udel.edu +0 -0
-
- build
- 1.16.1.3 01/10/08 02:09:50 stenn@whimsy.udel.edu +0 -0
-
- acinclude.m4
- 1.3.1.3 01/10/08 02:09:50 stenn@whimsy.udel.edu +0 -0
-
- README.bk
- 1.1.1.11 01/10/08 02:09:50 stenn@whimsy.udel.edu +0 -0
-
- Makefile.am
- 1.12.1.5 01/10/08 02:09:50 stenn@whimsy.udel.edu +0 -0
-
- ChangeLog
- 1.587 01/10/08 02:09:50 stenn@whimsy.udel.edu +0 -0
-
-ChangeSet
- 1.683.4.9 01/10/08 02:05:47 stenn@whimsy.udel.edu +29 -0
- EOLN_NATIVE.
-
- results.y2kfixes
- 1.3 01/10/08 01:57:14 stenn@whimsy.udel.edu +0 -0
-
- readme.y2kfixes
- 1.3 01/10/08 01:57:14 stenn@whimsy.udel.edu +0 -0
-
- WHERE-TO-START
- 1.3 01/10/08 01:57:14 stenn@whimsy.udel.edu +0 -0
-
- TODO
- 1.4 01/10/08 01:57:14 stenn@whimsy.udel.edu +0 -0
-
- README
- 1.14.1.2 01/10/08 01:57:14 stenn@whimsy.udel.edu +0 -0
-
- README.rsa
- 1.3.1.2 01/10/08 01:57:14 stenn@whimsy.udel.edu +0 -0
-
- README.hackers
- 1.3 01/10/08 01:57:14 stenn@whimsy.udel.edu +0 -0
-
- README.des
- 1.6.1.2 01/10/08 01:57:14 stenn@whimsy.udel.edu +0 -0
-
- NOTES.y2kfixes
- 1.4 01/10/08 01:57:14 stenn@whimsy.udel.edu +0 -0
-
- ntp_update
- 1.6.1.2 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- mkinstalldirs
- 1.5 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- missing
- 1.5 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- install-sh
- 1.3 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- flock-build
- 1.21 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- excludes
- 1.3 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- dot.emacs
- 1.5 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- depcomp
- 1.4 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- configure.in
- 1.219.3.3 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- config.sub
- 1.8 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- config.guess
- 1.8 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- build
- 1.16.1.2 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- acconfig.h
- 1.23.3.3 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- README.cvs
- 1.6.1.2 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- README.bk
- 1.1.1.10 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- NEWS
- 1.31.1.2 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- INSTALL
- 1.5 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- ChangeLog
- 1.586 01/10/08 01:57:13 stenn@whimsy.udel.edu +0 -0
-
- acinclude.m4
- 1.3.1.2 01/10/08 01:57:12 stenn@whimsy.udel.edu +0 -0
-
- Makefile.am
- 1.12.1.4 01/10/08 01:57:12 stenn@whimsy.udel.edu +0 -0
-
- results.y2kfixes
- 1.2 01/10/08 01:57:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- WHERE-TO-START
- 1.2 01/10/08 01:57:02 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- readme.y2kfixes
- 1.2 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ntp_update
- 1.6.1.1 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- mkinstalldirs
- 1.4 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- missing
- 1.4 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- flock-build
- 1.20 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- configure.in
- 1.219.3.2 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- TODO
- 1.3 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- README
- 1.14.1.1 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- README.rsa
- 1.3.1.1 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- README.hackers
- 1.2 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- README.des
- 1.6.1.1 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- README.cvs
- 1.6.1.1 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- NOTES.y2kfixes
- 1.3 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- NEWS
- 1.31.1.1 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- INSTALL
- 1.4 01/10/08 01:57:01 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- install-sh
- 1.2 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- excludes
- 1.2 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- dot.emacs
- 1.4 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- depcomp
- 1.3 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- config.sub
- 1.7 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- config.guess
- 1.7 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- build
- 1.16.1.1 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- acinclude.m4
- 1.3.1.1 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- acconfig.h
- 1.23.3.2 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- README.bk
- 1.1.1.9 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
-
- Makefile.am
- 1.12.1.3 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ChangeLog
- 1.585 01/10/08 01:57:00 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
-ChangeSet
- 1.683.4.8 01/10/08 01:55:18 stenn@whimsy.udel.edu +1 -0
- Re-import the JJY patch.
-
- html/qth.htm
- 1.1.1.1 01/10/08 01:55:17 stenn@whimsy.udel.edu +12 -0
- JJY entries.
-
- html/tickadj.htm
- 1.6 01/10/08 01:12:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/release.htm
- 1.16 01/10/08 01:12:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/rdebug.htm
- 1.5 01/10/08 01:12:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/quick.htm
- 1.5 01/10/08 01:12:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/prefer.htm
- 1.5 01/10/08 01:12:58 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/pps.htm
- 1.9 01/10/08 01:12:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/porting.htm
- 1.4 01/10/08 01:12:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/patches.htm
- 1.5 01/10/08 01:12:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/parsenew.htm
- 1.2 01/10/08 01:12:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/parsedata.htm
- 1.4 01/10/08 01:12:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntptrace.htm
- 1.5 01/10/08 01:12:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntptime.htm
- 1.7 01/10/08 01:12:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntpq.htm
- 1.9 01/10/08 01:12:57 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntpdc.htm
- 1.6 01/10/08 01:12:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntpdate.htm
- 1.6 01/10/08 01:12:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ntpd.htm
- 1.14 01/10/08 01:12:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/notes.htm
- 1.6 01/10/08 01:12:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/mx4200data.htm
- 1.5 01/10/08 01:12:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/monopt.htm
- 1.8 01/10/08 01:12:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/miscopt.htm
- 1.12 01/10/08 01:12:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/measure.htm
- 1.4 01/10/08 01:12:56 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/leap.htm
- 1.2 01/10/08 01:12:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/ldisc.htm
- 1.3 01/10/08 01:12:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/kernpps.htm
- 1.4 01/10/08 01:12:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/kern.htm
- 1.6 01/10/08 01:12:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/index.htm
- 1.11 01/10/08 01:12:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/htmlprimer.htm
- 1.2 01/10/08 01:12:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/howto.htm
- 1.5 01/10/08 01:12:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/hints.htm
- 1.4 01/10/08 01:12:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/genkeys.htm
- 1.7 01/10/08 01:12:55 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/gadget.htm
- 1.4 01/10/08 01:12:54 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/extern.htm
- 1.5 01/10/08 01:12:54 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/exec.htm
- 1.7 01/10/08 01:12:54 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver9.htm
- 1.5 01/10/08 01:12:54 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver8.htm
- 1.4 01/10/08 01:12:54 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver7.htm
- 1.10 01/10/08 01:12:54 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver6.htm
- 1.5 01/10/08 01:12:54 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver5.htm
- 1.3 01/10/08 01:12:54 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver4.htm
- 1.4 01/10/08 01:12:53 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver39.htm
- 1.3 01/10/08 01:12:53 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver38.htm
- 1.3 01/10/08 01:12:53 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver37.htm
- 1.3 01/10/08 01:12:53 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver36.htm
- 1.7 01/10/08 01:12:53 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver35.htm
- 1.6 01/10/08 01:12:53 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver34.htm
- 1.3 01/10/08 01:12:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver33.htm
- 1.4 01/10/08 01:12:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver32.htm
- 1.4 01/10/08 01:12:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver30.htm
- 1.7 01/10/08 01:12:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver3.htm
- 1.3 01/10/08 01:12:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver29.htm
- 1.3 01/10/08 01:12:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver28.htm
- 1.3 01/10/08 01:12:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver27.htm
- 1.3 01/10/08 01:12:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver26.htm
- 1.2 01/10/08 01:12:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver24.htm
- 1.2 01/10/08 01:12:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver23.htm
- 1.4 01/10/08 01:12:52 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver22.htm
- 1.7 01/10/08 01:12:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver20.htm
- 1.5 01/10/08 01:12:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver2.htm
- 1.3 01/10/08 01:12:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver19.htm
- 1.3 01/10/08 01:12:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver18.htm
- 1.3 01/10/08 01:12:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver16.htm
- 1.2 01/10/08 01:12:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver12.htm
- 1.3 01/10/08 01:12:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver11.htm
- 1.3 01/10/08 01:12:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver10.htm
- 1.3 01/10/08 01:12:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/driver1.htm
- 1.4 01/10/08 01:12:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/debug.htm
- 1.7 01/10/08 01:12:51 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/copyright.htm
- 1.18 01/10/08 01:12:50 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/confopt.htm
- 1.16 01/10/08 01:12:50 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/config.htm
- 1.6 01/10/08 01:12:50 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/build.htm
- 1.8 01/10/08 01:12:50 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/biblio.htm
- 1.5 01/10/08 01:12:50 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/authopt.htm
- 1.13 01/10/08 01:12:50 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/audio.htm
- 1.6 01/10/08 01:12:49 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/assoc.htm
- 1.8 01/10/08 01:12:49 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/accopt.htm
- 1.8 01/10/08 01:12:49 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- html/Oncore-SHMEM.htm
- 1.3 01/10/08 01:12:49 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
-ChangeSet
- 1.683.4.7 01/10/06 15:30:18 stenn@whimsy.udel.edu +1 -0
- More trigger debugging.
-
- BitKeeper/triggers/post-commit.changelog
- 1.4 01/10/06 15:30:18 stenn@whimsy.udel.edu +3 -0
- More debug stuff.
-
-ChangeSet
- 1.683.4.6 01/10/06 14:48:38 stenn@whimsy.udel.edu +1 -0
- Debug the post-commit.changelog trigger.
-
- BitKeeper/triggers/post-commit.changelog
- 1.3 01/10/06 14:48:37 stenn@whimsy.udel.edu +4 -0
- More debug stuff.
-
-ChangeSet
- 1.683.4.5 01/10/06 13:50:26 stenn@whimsy.udel.edu +3 -0
- Trigger cleanup and debug.
-
- BitKeeper/triggers/post-commit.changelog
- 1.2 01/10/06 13:50:25 stenn@whimsy.udel.edu +1 -0
- Add a delay to the changelog (cvs-all email) trigger so maybe I'll
- be able to see it happen...
-
- BitKeeper/deleted/.del-changelog~bafcae117d0e1606
- 1.2 01/10/06 12:58:27 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/changelog
-
- BitKeeper/deleted/.del-2mirrors~baf8ef547d0494ae
- 1.3 01/10/06 12:57:43 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/triggers/2mirrors
-
-ChangeSet
- 1.683.4.4 01/10/06 04:28:47 stenn@whimsy.udel.edu +1 -0
- Grab the updates from the master 2mirrors script.
-
- BitKeeper/triggers/post-incoming.2mirrors
- 1.2 01/10/06 04:28:47 stenn@whimsy.udel.edu +2 -2
- Grab the updates from the master 2mirrors script.
-
-ChangeSet
- 1.683.4.3 01/10/06 04:16:36 stenn@whimsy.udel.edu +1 -0
- 2mirrors trigger is now quiet when we don't run it.
-
- BitKeeper/triggers/2mirrors
- 1.2 01/10/06 04:16:36 stenn@whimsy.udel.edu +2 -2
- Don't show the "starting 2mirrors trigger" message unless we're
- on a host that actually runs it.
-
-ChangeSet
- 1.683.4.2 01/10/06 03:34:37 stenn@whimsy.udel.edu +8 -0
- Recover ntp-stable - update the ignore file and replace the triggers.
-
- BitKeeper/triggers/pre-apply.paranoid
- 1.1 01/10/06 03:34:36 stenn@whimsy.udel.edu +80 -0
-
- BitKeeper/triggers/post-incoming.2mirrors
- 1.1 01/10/06 03:34:36 stenn@whimsy.udel.edu +40 -0
-
- BitKeeper/triggers/post-commit.changelog
- 1.1 01/10/06 03:34:36 stenn@whimsy.udel.edu +61 -0
-
- BitKeeper/triggers/notify
- 1.1 01/10/06 03:34:36 stenn@whimsy.udel.edu +81 -0
-
- BitKeeper/triggers/changelog
- 1.1 01/10/06 03:34:36 stenn@whimsy.udel.edu +61 -0
-
- BitKeeper/triggers/pre-apply.paranoid
- 1.0 01/10/06 03:34:36 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/pre-apply.paranoid
-
- BitKeeper/triggers/post-incoming.2mirrors
- 1.0 01/10/06 03:34:36 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/post-incoming.2mirrors
-
- BitKeeper/triggers/post-commit.changelog
- 1.0 01/10/06 03:34:36 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/post-commit.changelog
-
- BitKeeper/triggers/notify
- 1.0 01/10/06 03:34:36 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/notify
-
- BitKeeper/triggers/changelog
- 1.0 01/10/06 03:34:36 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/changelog
-
- BitKeeper/triggers/2mirrors
- 1.1 01/10/06 03:34:35 stenn@whimsy.udel.edu +40 -0
-
- BitKeeper/triggers/00-list
- 1.1 01/10/06 03:34:35 stenn@whimsy.udel.edu +8 -0
-
- BitKeeper/triggers/2mirrors
- 1.0 01/10/06 03:34:35 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/2mirrors
-
- BitKeeper/triggers/00-list
- 1.0 01/10/06 03:34:35 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/00-list
-
- BitKeeper/etc/ignore
- 1.1.2.1 01/10/06 03:34:35 stenn@whimsy.udel.edu +25 -5
- Recover the changes to the ignore file.
-
-ChangeSet
- 1.683.4.1 01/10/06 03:09:54 stenn@whimsy.udel.edu +3 -0
- Merge maccarony://home/bk/ntp-stable-hosed
- into whimsy.udel.edu:/backroom/ntp-stable
-
- configure.in
- 1.219.3.1 01/10/06 03:09:53 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- acconfig.h
- 1.23.3.1 01/10/06 03:09:52 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- README.bk
- 1.1.1.8 01/10/06 03:09:52 stenn@whimsy.udel.edu +0 -8
- Auto merged
-
-ChangeSet
- 1.683.3.1 01/10/06 02:03:04 stenn@whimsy.udel.edu +10 -0
- README.bk improvements.
- JJY driver patch.
-
- ntpd/refclock_jjy.c
- 1.1 01/10/06 02:02:57 stenn@whimsy.udel.edu +713 -0
-
- ntpd/refclock_jjy.c
- 1.0 01/10/06 02:02:57 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable-hms/ntpd/refclock_jjy.c
-
- ntpd/refclock_conf.c
- 1.13.1.1 01/10/06 02:02:57 stenn@whimsy.udel.edu +8 -1
- Re-import the JJY driver patch.
-
- ntpd/ntp_control.c
- 1.37.3.1 01/10/06 02:02:57 stenn@whimsy.udel.edu +1 -0
- Re-import the JJY driver patch.
-
- ntpd/Makefile.am
- 1.18.2.1 01/10/06 02:02:57 stenn@whimsy.udel.edu +1 -1
- Re-import the JJY driver patch.
-
- libntp/clocktypes.c
- 1.7.1.1 01/10/06 02:02:57 stenn@whimsy.udel.edu +2 -0
- Re-import the JJY driver patch.
-
- include/ntp.h
- 1.47.3.1 01/10/06 02:02:56 stenn@whimsy.udel.edu +2 -1
- Re-import the JJY driver patch.
-
- html/refclock.htm
- 1.13.1.1 01/10/06 02:02:56 stenn@whimsy.udel.edu +8 -4
- Re-import the JJY driver patch.
-
- configure.in
- 1.219.2.1 01/10/06 02:02:56 stenn@whimsy.udel.edu +9 -1
- Re-import the JJY driver patch.
-
- acconfig.h
- 1.23.2.1 01/10/06 02:02:56 stenn@whimsy.udel.edu +3 -0
- Re-import the JJY driver patch.
-
- README.bk
- 1.1.2.1 01/10/06 02:02:56 stenn@whimsy.udel.edu +22 -7
- Resync with latest copy, add new info about getting bitkeeper
- and using HTTP as the transport protocol.
-
-ChangeSet
- 1.714 01/10/04 21:49:32 jhay@angel.cids.org.za +5 -0
- With these fixes ntpd can sync to another ntpd using IPv6.
-
- ntpd/ntp_request.c
- 1.27 01/10/04 21:49:32 jhay@angel.cids.org.za +3 -3
- IPv6 fix
-
- ntpd/ntp_io.c
- 1.26 01/10/04 21:49:32 jhay@angel.cids.org.za +4 -1
- IPv6 fix
-
- ntpd/ntp_intres.c
- 1.20 01/10/04 21:49:32 jhay@angel.cids.org.za +2 -0
- IPv6 fix
-
- ntpd/ntp_control.c
- 1.42 01/10/04 21:49:32 jhay@angel.cids.org.za +4 -3
- IPv6 fix
-
- ntpd/ntp_config.c
- 1.57 01/10/04 21:49:32 jhay@angel.cids.org.za +5 -4
- IPv6 fix
-
-ChangeSet
- 1.713 01/10/04 21:42:50 jhay@angel.cids.org.za +11 -0
- Port the new IPv6 codebase to legacy systems
-
- libntp/ntp_rfc2553.c
- 1.1 01/10/04 21:42:49 jhay@angel.cids.org.za +146 -0
-
- include/ntp_rfc2553.h
- 1.1 01/10/04 21:42:49 jhay@angel.cids.org.za +232 -0
-
- ntpdate/ntpdate.c
- 1.26 01/10/04 21:42:49 jhay@angel.cids.org.za +3 -3
- Port to legacy systems
-
- ntpd/ntp_restrict.c
- 1.5 01/10/04 21:42:49 jhay@angel.cids.org.za +2 -2
- Port to legacy systems
-
- libntp/ntp_rfc2553.c
- 1.0 01/10/04 21:42:49 jhay@angel.cids.org.za +0 -0
- BitKeeper file /export/3-stable/home/ntp/ntp-dev-ipv6/libntp/ntp_rfc2553.c
-
- include/ntp_rfc2553.h
- 1.0 01/10/04 21:42:49 jhay@angel.cids.org.za +0 -0
- BitKeeper file /export/3-stable/home/ntp/ntp-dev-ipv6/include/ntp_rfc2553.h
-
- ntpd/ntp_request.c
- 1.26 01/10/04 21:42:48 jhay@angel.cids.org.za +0 -2
- Port to legacy systems
-
- ntpd/ntp_io.c
- 1.25 01/10/04 21:42:48 jhay@angel.cids.org.za +26 -2
- Port to legacy systems
-
- libntp/socktoa.c
- 1.2 01/10/04 21:42:48 jhay@angel.cids.org.za +4 -1
- Port to legacy systems
-
- libntp/Makefile.am
- 1.14 01/10/04 21:42:48 jhay@angel.cids.org.za +1 -1
- Port to legacy systems
-
- include/ntp_stdlib.h
- 1.13 01/10/04 21:42:48 jhay@angel.cids.org.za +1 -0
- Port to legacy systems
-
- include/ntp_fp.h
- 1.4 01/10/04 21:42:48 jhay@angel.cids.org.za +1 -0
- Port to legacy systems
-
- configure.in
- 1.227 01/10/04 21:42:48 jhay@angel.cids.org.za +10 -0
- Port to legacy systems
-
-ChangeSet
- 1.712 01/09/24 20:21:51 jhay@angel.cids.org.za +1 -0
- Merge bk://ntp.bkserver.net/ntp-dev-ipv6
- into angel.cids.org.za:/home/ntp/ntp-dev-ipv6
-
- ntpd/ntp_config.c
- 1.56 01/09/24 20:21:51 jhay@angel.cids.org.za +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.9 01/09/24 01:15:15 stenn@whimsy.udel.edu +1 -0
- ntfs hates names with `:' in them; rename :list to 00-list
-
- BitKeeper/triggers/00-list
- 1.2 01/09/24 01:15:15 stenn@whimsy.udel.edu +0 -0
- Renamed from :list
-
-ChangeSet
- 1.708.1.7 01/09/22 03:26:30 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_config.c
- 1.53.1.3 01/09/22 03:26:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.8 01/09/22 03:15:03 stenn@whimsy.udel.edu +1 -0
- Clean up the patch that was already in there.
-
- ntpd/ntp_config.c
- 1.52.1.2 01/09/22 03:15:02 stenn@whimsy.udel.edu +0 -3
- The patch was already there...
-
-ChangeSet
- 1.683.2.13 01/09/22 03:07:03 stenn@whimsy.udel.edu +1 -0
- manycastclient bugfix.
- From: Sydney Weinstein <syd@verne.myxa.com>
-
- ntpd/ntp_config.c
- 1.50.2.2 01/09/22 03:07:02 stenn@whimsy.udel.edu +3 -0
- On at least Solaris 8 (5.8), the manycastclient does not do the calls
- to join the multicast group, so it works on the local LAN but not
- across routers. The switch statements in ntp_config.c for
- MULTICASTCLIENT do this as they are part of MANYCASTSERVER as well.
- I added the call to MANYCASTCLIENT switch statement.
-
-ChangeSet
- 1.708.1.6 01/09/22 02:44:30 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- ntpd/ntp_control.c
- 1.41 01/09/22 02:44:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.52 01/09/22 02:44:29 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.7 01/09/22 02:35:35 stenn@whimsy.udel.edu +5 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- ntpd/ntp_control.c
- 1.39.1.1 01/09/22 02:35:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/Makefile.am
- 1.20 01/09/22 02:35:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.50.1.1 01/09/22 02:35:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.226 01/09/22 02:35:33 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- acconfig.h
- 1.26 01/09/22 02:35:33 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.2.12 01/09/22 02:31:31 stenn@whimsy.udel.edu +11 -0
- Add support for the JJY receiver.
- From: Takao Abe <abetakao@bea.hi-ho.ne.jp>
-
- html/driver40.htm
- 1.1 01/09/22 02:31:30 stenn@whimsy.udel.edu +232 -0
-
- ntpd/refclock_conf.c
- 1.14 01/09/22 02:31:30 stenn@whimsy.udel.edu +8 -1
- Add the entries for the refclk_jjy driver.
-
- ntpd/ntp_control.c
- 1.37.2.1 01/09/22 02:31:30 stenn@whimsy.udel.edu +1 -0
- REFCLK_JJY is a CTL_SST_TS_LF beast.
-
- ntpd/Makefile.am
- 1.18.1.1 01/09/22 02:31:30 stenn@whimsy.udel.edu +1 -1
- Add the refclock_jjy.c module to the build list.
-
- html/driver40.htm
- 1.0 01/09/22 02:31:30 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/html/driver40.htm
-
- libntp/clocktypes.c
- 1.8 01/09/22 02:31:29 stenn@whimsy.udel.edu +2 -0
- Add the JJY refclock entries.
-
- include/ntp.h
- 1.47.2.1 01/09/22 02:31:29 stenn@whimsy.udel.edu +2 -1
- Add #define for REFCLK_JJY.
-
- html/refclock.htm
- 1.14 01/09/22 02:31:29 stenn@whimsy.udel.edu +4 -1
- Add a link to the JJY driver.
-
- html/qth.htm
- 1.2 01/09/22 02:31:29 stenn@whimsy.udel.edu +28 -2
- Add JJY frequencies.
-
- configure.in
- 1.219.1.4 01/09/22 02:31:29 stenn@whimsy.udel.edu +9 -1
- Cleanup whitespace, add the test for the JJY clock.
-
- acconfig.h
- 1.23.1.2 01/09/22 02:31:29 stenn@whimsy.udel.edu +3 -0
- Add the #define for CLOCK_JJY
-
-ChangeSet
- 1.706.1.6 01/09/22 00:39:27 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/etc/ignore
- 1.10 01/09/22 00:39:23 stenn@whimsy.udel.edu +2 -4
- auto-union
-
-ChangeSet
- 1.683.2.11 01/09/22 00:34:44 stenn@whimsy.udel.edu +9 -0
- Update the ignore list.
- Check in the triggers.
-
- br-flock
- 1.1 01/09/22 00:34:42 stenn@whimsy.udel.edu +8 -0
-
- BitKeeper/triggers/pre-apply.paranoid
- 1.1 01/09/22 00:34:42 stenn@whimsy.udel.edu +80 -0
-
- BitKeeper/triggers/post-incoming.2mirrors
- 1.1 01/09/22 00:34:42 stenn@whimsy.udel.edu +40 -0
-
- BitKeeper/triggers/post-commit.changelog
- 1.1 01/09/22 00:34:42 stenn@whimsy.udel.edu +61 -0
-
- BitKeeper/triggers/notify
- 1.1 01/09/22 00:34:42 stenn@whimsy.udel.edu +81 -0
-
- BitKeeper/triggers/changelog
- 1.1 01/09/22 00:34:42 stenn@whimsy.udel.edu +61 -0
-
- BitKeeper/triggers/:list
- 1.1 01/09/22 00:34:42 stenn@whimsy.udel.edu +8 -0
-
- BitKeeper/triggers/2mirrors
- 1.1 01/09/22 00:34:42 stenn@whimsy.udel.edu +40 -0
-
- BitKeeper/etc/ignore
- 1.1.1.7 01/09/22 00:34:43 stenn@whimsy.udel.edu +2 -0
- Added .buildkey rsaref2 to the ignore list
-
- br-flock
- 1.0 01/09/22 00:34:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/br-flock
-
- BitKeeper/triggers/pre-apply.paranoid
- 1.0 01/09/22 00:34:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/pre-apply.paranoid
-
- BitKeeper/triggers/post-incoming.2mirrors
- 1.0 01/09/22 00:34:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/post-incoming.2mirrors
-
- BitKeeper/triggers/post-commit.changelog
- 1.0 01/09/22 00:34:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/post-commit.changelog
-
- BitKeeper/triggers/notify
- 1.0 01/09/22 00:34:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/notify
-
- BitKeeper/triggers/changelog
- 1.0 01/09/22 00:34:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/changelog
-
- BitKeeper/triggers/:list
- 1.0 01/09/22 00:34:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/:list
-
- BitKeeper/triggers/2mirrors
- 1.0 01/09/22 00:34:42 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/triggers/2mirrors
-
- BitKeeper/etc/ignore
- 1.1.1.6 01/09/22 00:34:42 stenn@whimsy.udel.edu +1 -1
- Alphabetize the librsaref/*.h entry.
-
- BitKeeper/etc/ignore
- 1.1.1.5 01/09/22 00:24:48 stenn@whimsy.udel.edu +7 -3
- added librsaref/*.h
-
-ChangeSet
- 1.711 01/09/21 17:24:45 jhay@angel.cids.org.za +3 -0
- Merge bk://ntp.bkserver.net/ntp-dev-ipv6
- into angel.cids.org.za:/home/ntp/ntp-dev-ipv6
-
- ntpd/ntp_proto.c
- 1.102 01/09/21 17:24:45 jhay@angel.cids.org.za +0 -5
- Auto merged
-
- ntpd/ntp_io.c
- 1.24 01/09/21 17:24:45 jhay@angel.cids.org.za +0 -1
- Auto merged
-
- ntpd/ntp_config.c
- 1.55 01/09/21 17:24:45 jhay@angel.cids.org.za +0 -1
- Auto merged
-
-ChangeSet
- 1.708.1.4 01/09/21 03:08:08 stenn@whimsy.udel.edu +3 -0
- IPv6 patches to make it compile under FreeBSD (at least).
- From: John Hay <jhay@icomtek.csir.co.za>
-
- ntpd/ntp_proto.c
- 1.100.1.2 01/09/21 03:08:08 stenn@whimsy.udel.edu +5 -3
- Add a missing reference operator.
- Fix/conditionalize an address compare.
-
- ntpd/ntp_io.c
- 1.22.1.2 01/09/21 03:08:08 stenn@whimsy.udel.edu +1 -1
- Use fd instead of listenfds[n] on the setsockopt() call
-
- ntpd/ntp_config.c
- 1.53.1.2 01/09/21 03:08:07 stenn@whimsy.udel.edu +1 -1
- Use 0 instead of peeeraddr...s_addr.
-
-ChangeSet
- 1.708.1.3 01/09/21 02:48:37 stenn@whimsy.udel.edu +7 -0
- Looks like reconciliation of the HP-MPE/iX stuff...
-
- ntpdate/ntpdate.c
- 1.25 01/09/21 02:48:36 stenn@whimsy.udel.edu +4 -0
- We might need netinfo/ni.h, apparently.
-
- ntpd/ntp_io.c
- 1.22.1.1 01/09/21 02:48:36 stenn@whimsy.udel.edu +1 -2
- Reconcile the default 127.0.0.1 test
-
- ntpd/ntp_resolver.c
- 1.13 01/09/20 18:06:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_proto.c
- 1.100.1.1 01/09/20 18:06:23 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_intres.c
- 1.19 01/09/20 18:06:22 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.53.1.1 01/09/20 18:06:22 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- README.bk
- 1.9 01/09/20 18:06:21 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.5 01/09/20 16:09:38 stenn@whimsy.udel.edu +10 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- util/ntp-genkeys.c
- 1.58 01/09/20 16:09:37 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntpd.c
- 1.35 01/09/20 16:09:37 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_timer.c
- 1.18 01/09/20 16:09:36 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_proto.c
- 1.99.1.1 01/09/20 16:09:36 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_io.c
- 1.21.1.1 01/09/20 16:09:36 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.52.1.1 01/09/20 16:09:35 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_machine.h
- 1.9 01/09/20 16:09:35 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- configure.in
- 1.225 01/09/20 16:09:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- acconfig.h
- 1.25 01/09/20 16:09:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- README.bk
- 1.7.1.1 01/09/20 16:09:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.2.10 01/09/20 04:54:45 stenn@whimsy.udel.edu +1 -0
- Clean up a small portability nit from the MPE port.
-
- util/ntp-genkeys.c
- 1.56.1.2 01/09/20 04:54:45 stenn@whimsy.udel.edu +4 -0
- There are a number of platforms that don't use GETTIMEOFDAY;
- deal with it here, where we need it.
-
-ChangeSet
- 1.683.2.9 01/09/20 02:15:15 stenn@whimsy.udel.edu +18 -0
- HP MPE/iX patch
- From: "BIXBY,MARK (HP-Cupertino,ex1)" <mark_bixby@hp.com>
-
- html/hints/mpeix
- 1.1 01/09/20 02:15:14 stenn@whimsy.udel.edu +50 -0
-
- util/ntp-genkeys.c
- 1.56.1.1 01/09/20 02:15:14 stenn@whimsy.udel.edu +8 -5
- #include cleanup.
- Use the GETTIMEOFDAY macro instead of making the call directly.
- Ditto for SRANDOM() and RANDOM().
-
- ntptrace/ntptrace.c
- 1.14 01/09/20 02:15:14 stenn@whimsy.udel.edu +8 -2
- #include guarding
-
- ntpdate/ntptimeset.c
- 1.10 01/09/20 02:15:14 stenn@whimsy.udel.edu +6 -1
- #include cleanup and guarding
-
- ntpdate/ntpdate.c
- 1.23.1.1 01/09/20 02:15:14 stenn@whimsy.udel.edu +6 -1
- #include guarding
-
- html/hints/mpeix
- 1.0 01/09/20 02:15:14 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/html/hints/mpeix
-
- ntpd/ntpd.c
- 1.33.1.1 01/09/20 02:15:13 stenn@whimsy.udel.edu +10 -3
- #include guarding
- MPE doesn't have the concept of "root".
-
- ntpd/ntp_timer.c
- 1.15.1.1 01/09/20 02:15:13 stenn@whimsy.udel.edu +3 -1
- #include guarding
-
- ntpd/ntp_resolver.c
- 1.11.1.1 01/09/20 02:15:13 stenn@whimsy.udel.edu +1 -0
- #include cleanup
-
- ntpd/ntp_proto.c
- 1.93.2.1 01/09/20 02:15:13 stenn@whimsy.udel.edu +2 -1
- MPE does not use a struct timezone tzp.
-
- ntpd/ntp_io.c
- 1.20.2.1 01/09/20 02:15:13 stenn@whimsy.udel.edu +8 -4
- #include guarding
- Clean up the default local loopback test
-
- ntpd/ntp_intres.c
- 1.17.1.1 01/09/20 02:15:12 stenn@whimsy.udel.edu +1 -0
- #include cleanup
-
- ntpd/ntp_config.c
- 1.50.2.1 01/09/20 02:15:12 stenn@whimsy.udel.edu +2 -0
- header #include cleanup/guarding
-
- libntp/strdup.c
- 1.3 01/09/20 02:15:12 stenn@whimsy.udel.edu +3 -1
- MPE header cleanup
-
- libntp/machines.c
- 1.10 01/09/20 02:15:12 stenn@whimsy.udel.edu +285 -1
- MPE portability stuff - wrappers for bind(), fcntl(), setitimer(),
- gettimeofday(), and settimeofday().
-
- libntp/adjtime.c
- 1.2 01/09/20 02:15:12 stenn@whimsy.udel.edu +97 -0
- adjtime() implementation for MPE/iX
-
- include/ntp_machine.h
- 1.7.1.1 01/09/20 02:15:12 stenn@whimsy.udel.edu +42 -0
- MPE portability stuff
-
- configure.in
- 1.219.1.3 01/09/20 02:15:12 stenn@whimsy.udel.edu +56 -6
- Various portability and MPE/iX porting patches.
-
- acconfig.h
- 1.23.1.1 01/09/20 02:15:12 stenn@whimsy.udel.edu +3 -0
- Added DECL_INET_NTOA_0
-
-ChangeSet
- 1.683.2.8 01/09/19 20:27:23 stenn@whimsy.udel.edu +1 -0
- README.bk improvements
-
- README.bk
- 1.1.1.7 01/09/19 20:27:22 stenn@whimsy.udel.edu +2 -1
- Mention that warnings from autorefonc are expected.
-
-ChangeSet
- 1.710 01/09/19 19:00:18 jhay@angel.cids.org.za +1 -0
- Merge bk://ntp.bkserver.net/ntp-dev-ipv6
- into angel.cids.org.za:/home/ntp/ntp-dev-ipv6
-
- BitKeeper/etc/logging_ok
- 1.5 01/09/19 19:00:17 jhay@angel.cids.org.za +1 -1
- 'Auto converge'
-
-ChangeSet
- 1.708.1.2 01/09/19 02:51:42 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- README.bk
- 1.8 01/09/19 02:51:42 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
- Makefile.am
- 1.17 01/09/19 02:51:41 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.4 01/09/19 02:44:16 stenn@whimsy.udel.edu +2 -0
- Version 4.1.71.
-
- configure.in
- 1.224 01/09/19 02:44:15 stenn@whimsy.udel.edu +1 -1
- version 4.1.71 - a testing release.
-
- Makefile.am
- 1.16 01/09/19 02:44:15 stenn@whimsy.udel.edu +0 -4
- Lose obsolete files from the tarball distribution.
-
-ChangeSet
- 1.708.1.1 01/09/19 01:55:12 stenn@whimsy.udel.edu +2 -0
- Merge cleanup.
-
- README.bk
- 1.4.1.2 01/09/19 01:55:12 stenn@whimsy.udel.edu +1 -2
- Merge cleanup.
-
- Makefile.am
- 1.13.1.1 01/09/19 01:48:18 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.3 01/09/19 01:44:27 stenn@whimsy.udel.edu +2 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- README.bk
- 1.7 01/09/19 01:44:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- Makefile.am
- 1.15 01/09/19 01:44:26 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.2.7 01/09/19 01:40:46 stenn@whimsy.udel.edu +1 -0
- Makefile.am cruft cleanup.
-
- Makefile.am
- 1.12.1.2 01/09/19 01:40:46 stenn@whimsy.udel.edu +16 -13
- More cruft cleanup.
-
-ChangeSet
- 1.683.2.6 01/09/19 01:26:24 stenn@whimsy.udel.edu +1 -0
- Fix a typo.
-
- README.bk
- 1.1.1.6 01/09/19 01:26:24 stenn@whimsy.udel.edu +1 -1
- Typo.
-
-ChangeSet
- 1.706.1.2 01/09/19 01:18:03 stenn@whimsy.udel.edu +2 -0
- Makefile.am automerge and README.bk cleanup
-
- README.bk
- 1.6 01/09/19 01:18:02 stenn@whimsy.udel.edu +1 -2
- Cleanup the README.bk commit.
-
- Makefile.am
- 1.14 01/09/19 01:05:44 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.2.5 01/09/19 00:21:06 stenn@whimsy.udel.edu +1 -0
- README.bk improvements
-
- README.bk
- 1.1.1.5 01/09/19 00:21:06 stenn@whimsy.udel.edu +5 -4
- Clean it up even more.
-
-ChangeSet
- 1.709 01/09/18 17:55:36 jhay@angel.cids.org.za +4 -0
- Make ntp-dev-ipv6 compile again.
-
- BitKeeper/etc/logging_ok
- 1.4 01/09/18 17:55:34 jhay@angel.cids.org.za +1 -0
- Logging to logging@openlogging.org accepted
-
- ntpd/ntp_proto.c
- 1.101 01/09/18 17:54:56 jhay@angel.cids.org.za +5 -3
- IPv6 conversion.
-
- ntpd/ntp_io.c
- 1.23 01/09/18 17:54:56 jhay@angel.cids.org.za +1 -1
- Fix filedescriptor.
-
- ntpd/ntp_config.c
- 1.54 01/09/18 17:54:56 jhay@angel.cids.org.za +1 -1
- IPv6 conversion
-
-ChangeSet
- 1.683.2.4 01/09/18 03:20:33 stenn@whimsy.udel.edu +1 -0
- Makefile.am cleanup
-
- Makefile.am
- 1.12.1.1 01/09/18 03:20:33 stenn@whimsy.udel.edu +3 -3
- Add README.bk to the distribution list.
- Do the .warning message as a BUILT_SOURCES entry, not as a dependency to Makefile.
-
-ChangeSet
- 1.708 01/09/16 00:29:33 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev-ipv6
-
- README.bk
- 1.4.1.1 01/09/16 00:29:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.706.1.1 01/09/16 00:28:33 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- README.bk
- 1.5 01/09/16 00:28:32 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.2.3 01/09/16 00:25:29 stenn@whimsy.udel.edu +1 -0
- autoreconf updates
-
- README.bk
- 1.1.1.4 01/09/16 00:25:28 stenn@whimsy.udel.edu +1 -1
- autoreconf updates
-
-ChangeSet
- 1.683.2.2 01/09/16 00:14:53 stenn@whimsy.udel.edu +8 -0
- Make the *.ds[pw] files be EOLN_NATIVE.
-
- ports/winnt/ntpd/ntpd.dsp
- 1.11 01/09/16 00:07:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/libntp/libntp.dsp
- 1.6 01/09/16 00:07:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/instsrv/Instsrv.dsp
- 1.4 01/09/16 00:07:14 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/ntptrace/ntptrace.dsp
- 1.6 01/09/16 00:07:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/ntpq/ntpq.dsp
- 1.6 01/09/16 00:07:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/ntpdc/ntpdc.dsp
- 1.6 01/09/16 00:07:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/ntpdate/ntpdate.dsp
- 1.6 01/09/16 00:07:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
- ports/winnt/ntp.dsw
- 1.5 01/09/16 00:07:13 stenn@whimsy.udel.edu +0 -0
- Turn on EOLN_NATIVE flag
-
-ChangeSet
- 1.683.2.1 01/09/15 03:16:54 stenn@whimsy.udel.edu +1 -0
- ntp-dev-ipv6 update to README.bk
-
- README.bk
- 1.1.1.3 01/09/15 03:16:54 stenn@whimsy.udel.edu +9 -0
- Talk about the new ntp-dev-ipv6 repo.
-
-ChangeSet
- 1.707 01/09/14 23:45:35 stenn@whimsy.udel.edu +13 -0
- Merge ipv6 changes with stuff since 4.1.0
-
- ntpd/ntp_proto.c
- 1.100 01/09/14 23:45:35 stenn@whimsy.udel.edu +3 -8
- ipv6 merges
-
- ntpd/ntp_io.c
- 1.22 01/09/14 23:45:34 stenn@whimsy.udel.edu +14 -0
- ipv6 merges
-
- include/ntpd.h
- 1.32 01/09/14 23:45:34 stenn@whimsy.udel.edu +1 -1
- ipv6 merges
-
- ntpd/ntp_util.c
- 1.16 01/09/14 22:12:37 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_request.c
- 1.25 01/09/14 22:12:36 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_refclock.c
- 1.41 01/09/14 22:12:36 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_peer.c
- 1.33 01/09/14 22:12:35 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_control.c
- 1.40 01/09/14 22:12:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.53 01/09/14 22:12:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- libntp/Makefile.am
- 1.13 01/09/14 22:12:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_stdlib.h
- 1.12 01/09/14 22:12:33 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp_control.h
- 1.16 01/09/14 22:12:33 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- include/ntp.h
- 1.51 01/09/14 22:12:33 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.683.1.17 01/09/14 17:54:19 stenn@whimsy.udel.edu +30 -0
- IPV6 patches
- From: Jean-Francois.Boudreault@viagenie.qc.ca
-
- libntp/socktohost.c
- 1.1 01/09/14 17:54:17 stenn@whimsy.udel.edu +30 -0
-
- libntp/socktoa.c
- 1.1 01/09/14 17:54:17 stenn@whimsy.udel.edu +41 -0
-
- INSTALLv6.txt
- 1.1 01/09/14 17:54:17 stenn@whimsy.udel.edu +13 -0
-
- ntpdate/ntpdate.h
- 1.5 01/09/14 17:54:17 stenn@whimsy.udel.edu +6 -1
- IPV6 patches
-
- ntpdate/ntpdate.c
- 1.24 01/09/14 17:54:17 stenn@whimsy.udel.edu +218 -90
- IPV6 patches
-
- libntp/socktohost.c
- 1.0 01/09/14 17:54:17 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev-ipv6/libntp/socktohost.c
-
- libntp/socktoa.c
- 1.0 01/09/14 17:54:17 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev-ipv6/libntp/socktoa.c
-
- INSTALLv6.txt
- 1.0 01/09/14 17:54:17 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-dev-ipv6/INSTALLv6.txt
-
- ntpd/refclock_atom.c
- 1.35 01/09/14 17:54:16 stenn@whimsy.udel.edu +1 -1
- IPV6 patches
-
- ntpd/ntp_util.c
- 1.14.1.1 01/09/14 17:54:16 stenn@whimsy.udel.edu +34 -7
- IPV6 patches
-
- ntpd/ntp_restrict.c
- 1.4 01/09/14 17:54:16 stenn@whimsy.udel.edu +249 -34
- IPV6 patches
-
- ntpd/ntp_resolver.c
- 1.12 01/09/14 17:54:16 stenn@whimsy.udel.edu +14 -30
- IPV6 patches
-
- ntpd/ntp_request.c
- 1.23.1.1 01/09/14 17:54:16 stenn@whimsy.udel.edu +276 -229
- IPV6 patches
-
- ntpd/ntp_refclock.c
- 1.39.1.1 01/09/14 17:54:16 stenn@whimsy.udel.edu +27 -13
- IPV6 patches
-
- ntpd/ntp_proto.c
- 1.93.1.1 01/09/14 17:54:16 stenn@whimsy.udel.edu +33 -31
- IPV6 patches
-
- ntpd/ntp_peer.c
- 1.29.1.1 01/09/14 17:54:15 stenn@whimsy.udel.edu +41 -23
- IPV6 patches
-
- ntpd/ntp_monitor.c
- 1.5 01/09/14 17:54:15 stenn@whimsy.udel.edu +9 -8
- IPV6 patches
-
- ntpd/ntp_io.c
- 1.20.1.1 01/09/14 17:54:15 stenn@whimsy.udel.edu +696 -306
- IPV6 patches
-
- ntpd/ntp_intres.c
- 1.18 01/09/14 17:54:15 stenn@whimsy.udel.edu +29 -46
- IPV6 patches
-
- ntpd/ntp_control.c
- 1.37.1.1 01/09/14 17:54:15 stenn@whimsy.udel.edu +30 -27
- IPV6 patches
-
- ntpd/ntp_config.c
- 1.50.1.1 01/09/14 17:54:15 stenn@whimsy.udel.edu +79 -85
- IPV6 patches
-
- ntpd/cmd_args.c
- 1.8 01/09/14 17:54:15 stenn@whimsy.udel.edu +9 -5
- IPV6 patches
-
- libntp/refnumtoa.c
- 1.2 01/09/14 17:54:15 stenn@whimsy.udel.edu +15 -10
- IPV6 patches
-
- libntp/netof.c
- 1.2 01/09/14 17:54:14 stenn@whimsy.udel.edu +17 -5
- IPV6 patches
-
- libntp/Makefile.am
- 1.11.1.1 01/09/14 17:54:14 stenn@whimsy.udel.edu +1 -1
- IPV6 patches
-
- include/recvbuff.h
- 1.2 01/09/14 17:54:14 stenn@whimsy.udel.edu +2 -2
- IPV6 patches
-
- include/ntpd.h
- 1.27.1.1 01/09/14 17:54:14 stenn@whimsy.udel.edu +23 -20
- IPV6 patches
-
- include/ntp_stdlib.h
- 1.10.1.1 01/09/14 17:54:14 stenn@whimsy.udel.edu +5 -2
- IPV6 patches
-
- include/ntp_request.h
- 1.11 01/09/14 17:54:14 stenn@whimsy.udel.edu +26 -34
- IPV6 patches
-
- include/ntp_refclock.h
- 1.10 01/09/14 17:54:14 stenn@whimsy.udel.edu +2 -2
- IPV6 patches
-
- include/ntp_fp.h
- 1.3 01/09/14 17:54:14 stenn@whimsy.udel.edu +5 -2
- IPV6 patches
-
- include/ntp_control.h
- 1.13.1.1 01/09/14 17:54:14 stenn@whimsy.udel.edu +1 -1
- IPV6 patches
-
- include/ntp.h
- 1.47.1.1 01/09/14 17:54:14 stenn@whimsy.udel.edu +43 -11
- IPV6 patches
-
-ChangeSet
- 1.706 01/09/13 02:05:34 stenn@whimsy.udel.edu +1 -0
- Fix from Dave Mills: location of #endif typo.
-
- ntpd/ntp_peer.c
- 1.32 01/09/13 02:05:33 stenn@whimsy.udel.edu +1 -1
- Fix a typo (location) on an #endif for OPENSSL.
- From: Dave Mills.
-
-ChangeSet
- 1.705 01/09/13 01:58:19 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/etc/ignore
- 1.9 01/09/13 01:58:13 stenn@whimsy.udel.edu +2 -2
- auto-union
-
-ChangeSet
- 1.683.1.16 01/09/13 01:42:48 stenn@whimsy.udel.edu +1 -0
- Ignore some auto* related files.
-
- BitKeeper/etc/ignore
- 1.1.1.4 01/09/13 01:38:23 stenn@whimsy.udel.edu +2 -0
- added config.h.in stamp-h.in
-
-ChangeSet
- 1.704 01/09/11 22:03:54 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/deleted/.del-config.h.in~3aed0663
- 1.65 01/09/11 22:03:53 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-config.h.in~3aed0663
- 1.64 01/09/11 22:03:52 stenn@whimsy.udel.edu +0 -0
- Merge rename: config.h.in -> BitKeeper/deleted/.del-config.h.in~3aed0663
-
-ChangeSet
- 1.683.1.15 01/09/11 21:41:11 stenn@whimsy.udel.edu +2 -0
- Remove more auto* generated/related files.
-
- BitKeeper/deleted/.del-stamp-h.in~3aed0663
- 1.4 01/09/11 21:33:41 stenn@whimsy.udel.edu +0 -0
- Delete: stamp-h.in
-
- BitKeeper/deleted/.del-config.h.in~3aed0663
- 1.62.1.1 01/09/11 21:33:41 stenn@whimsy.udel.edu +0 -0
- Delete: config.h.in
-
-ChangeSet
- 1.703 01/09/08 20:29:17 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- README.bk
- 1.4 01/09/08 20:29:16 stenn@whimsy.udel.edu +8 -9
- Auto merged
-
-ChangeSet
- 1.683.1.14 01/09/08 20:23:01 stenn@whimsy.udel.edu +1 -0
- Document the mirrors at www.ntp.org.
-
- README.bk
- 1.1.1.2 01/09/08 20:23:01 stenn@whimsy.udel.edu +14 -1
- Document the mirrors at www.ntp.org.
-
-ChangeSet
- 1.702 01/09/08 19:54:57 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- README.bk
- 1.3 01/09/08 19:54:57 stenn@whimsy.udel.edu +0 -12
- Auto merged
-
-ChangeSet
- 1.683.1.13 01/09/08 19:39:22 stenn@whimsy.udel.edu +1 -0
- Doc updates.
-
- README.bk
- 1.1.1.1 01/09/08 19:39:21 stenn@whimsy.udel.edu +12 -2
- Say what versions of the auto* tools we need.
- Say where to find bk and the ntp repos.
-
-ChangeSet
- 1.701 01/09/08 03:57:56 stenn@whimsy.udel.edu +2 -0
- Lose ntp_update. It's a CVS thing...
-
- README
- 1.16 01/09/08 03:57:55 stenn@whimsy.udel.edu +0 -2
- Lose ntp_update - we don't need it anymore.
-
- BitKeeper/deleted/.del-ntp_update~382c0630
- 1.7 01/09/08 03:51:39 stenn@whimsy.udel.edu +0 -0
- Delete: ntp_update
-
-ChangeSet
- 1.700 01/09/08 03:31:34 stenn@whimsy.udel.edu +27 -0
- Lose DES and MD5 manifests, lose rsaref stuff.
-
- util/ntp-genkeys.c
- 1.57 01/09/08 03:31:28 stenn@whimsy.udel.edu +2 -2
- Lose DES stuff.
-
- util/Makefile.am
- 1.11 01/09/08 03:31:28 stenn@whimsy.udel.edu +3 -3
- Lose rsaref stuff.
-
- ports/winnt/include/config.h
- 1.10 01/09/08 03:31:28 stenn@whimsy.udel.edu +0 -2
- Lose DES and MD5.
-
- ntpq/ntpq.c
- 1.17 01/09/08 03:31:27 stenn@whimsy.udel.edu +5 -15
- Lose DES stuff.
-
- ntpq/Makefile.am
- 1.5 01/09/08 03:31:27 stenn@whimsy.udel.edu +2 -2
- Lose rsaref stuff.
-
- ntpdc/ntpdc.c
- 1.9 01/09/08 03:31:27 stenn@whimsy.udel.edu +6 -16
- Lose DES stuff.
-
- ntpdc/Makefile.am
- 1.4 01/09/08 03:31:27 stenn@whimsy.udel.edu +2 -2
- Lose rsaref stuff.
-
- ntpdate/Makefile.am
- 1.6 01/09/08 03:31:27 stenn@whimsy.udel.edu +2 -2
- Lose rsaref stuff.
-
- ntpd/ntp_proto.c
- 1.99 01/09/08 03:31:27 stenn@whimsy.udel.edu +1 -1
- Lose DES.
-
- ntpd/Makefile.am
- 1.19 01/09/08 03:31:27 stenn@whimsy.udel.edu +3 -3
- Lose rsaref stuff.
-
- libntp/authusekey.c
- 1.4 01/09/08 03:31:27 stenn@whimsy.udel.edu +0 -83
- Lose DES-related stuff.
-
- libntp/authreadkeys.c
- 1.4 01/09/08 03:31:27 stenn@whimsy.udel.edu +0 -37
- Lose DES-related stuff.
-
- libntp/authkeys.c
- 1.7 01/09/08 03:31:27 stenn@whimsy.udel.edu +0 -74
- Lose DES stuff.
-
- libntp/Makefile.am
- 1.12 01/09/08 03:31:27 stenn@whimsy.udel.edu +2 -2
- Lose DES- and rsaref-related stuff.
-
- include/ntp_stdlib.h
- 1.11 01/09/08 03:31:26 stenn@whimsy.udel.edu +0 -9
- Lose DES-related stuff.
-
- include/ntp_machine.h
- 1.8 01/09/08 03:31:26 stenn@whimsy.udel.edu +2 -2
- Lose DES-related stuff.
-
- configure.in
- 1.223 01/09/08 03:31:26 stenn@whimsy.udel.edu +15 -51
- Lose rsaref-related stuff.
-
- config.h.in
- 1.63 01/09/08 03:31:26 stenn@whimsy.udel.edu +0 -9
- Perhaps we should lose this file from the repo...
- Lose the DES, MD5, and RSAREF manifests.
-
- acconfig.h
- 1.24 01/09/08 03:31:26 stenn@whimsy.udel.edu +0 -6
- Lose the MD5 manifest - we always support it.
- Lose the DES manifest - we don't support DES anymore.
-
- README
- 1.15 01/09/08 03:31:26 stenn@whimsy.udel.edu +1 -5
- Added README.bk, lose README.cvs, README.des, and librsaref entries.
-
- Makefile.am
- 1.13 01/09/08 03:31:26 stenn@whimsy.udel.edu +0 -1
- Lose librsaref - we don't use it anymore.
-
- BitKeeper/deleted/.del-authparity.c~3aed0663
- 1.4 01/09/08 02:37:24 stenn@whimsy.udel.edu +0 -0
- Delete: libntp/authparity.c
-
- BitKeeper/deleted/.del-authencrypt.c~3aed0663
- 1.6 01/09/08 02:35:05 stenn@whimsy.udel.edu +0 -0
- Delete: libntp/authencrypt.c
-
- BitKeeper/deleted/.del-README.cvs~1e180ca3
- 1.7 01/09/08 02:23:03 stenn@whimsy.udel.edu +0 -0
- Delete: README.cvs
-
- BitKeeper/deleted/.del-README.rsa~6f1a085f
- 1.4 01/09/08 02:22:08 stenn@whimsy.udel.edu +0 -0
- Delete: README.rsa
-
- BitKeeper/deleted/.del-README.des~3aed0663
- 1.7 01/09/08 02:21:37 stenn@whimsy.udel.edu +0 -0
- Delete: README.des
-
- BitKeeper/deleted/.del-Makefile.am~e832209e
- 1.15 01/09/08 02:18:56 stenn@whimsy.udel.edu +0 -0
- Delete: librsaref/Makefile.am
-
-ChangeSet
- 1.699 01/09/06 04:22:29 stenn@whimsy.udel.edu +2 -0
- Cleanup pull from ntp-stable
-
- configure.in
- 1.222 01/09/06 04:22:29 stenn@whimsy.udel.edu +0 -1
- We use ntp-dev version numbers, not ntp-stable ones.
-
- BitKeeper/etc/ignore
- 1.8 01/09/06 04:15:41 stenn@whimsy.udel.edu +10 -11
- auto-union
-
-ChangeSet
- 1.683.1.12 01/09/06 04:09:32 stenn@whimsy.udel.edu +1 -0
- From: David Campbell <dcampbell@uk.ibm.com>
- Subject: [ntp:bugs] Compiling ntp on Dynix PTX (CFLAGS patch)
-
- configure.in
- 1.219.1.2 01/09/06 04:09:31 stenn@whimsy.udel.edu +2 -2
- From: David Campbell <dcampbell@uk.ibm.com>
- Subject: [ntp:bugs] Compiling ntp on Dynix PTX (CFLAGS patch)
-
-ChangeSet
- 1.683.1.11 01/09/06 03:36:29 stenn@whimsy.udel.edu +1 -0
- Ignore ~ backup files.
-
- BitKeeper/etc/ignore
- 1.1.1.3 01/09/06 03:36:28 stenn@whimsy.udel.edu +1 -0
- Ignore ~ backup files.
-
-ChangeSet
- 1.683.1.10 01/09/06 03:26:08 stenn@whimsy.udel.edu +1 -0
- From: Hubert Feyrer <hubert@feyrer.de>
- Subject: [ntp:bugs] "-u" missing from ntpdate usage statement
-
- ntpdate/ntpdate.c
- 1.23 01/09/06 03:26:07 stenn@whimsy.udel.edu +1 -1
- From: Hubert Feyrer <hubert@feyrer.de>
- Subject: [ntp:bugs] "-u" missing from ntpdate usage statement
-
-ChangeSet
- 1.698 01/09/06 02:42:14 stenn@whimsy.udel.edu +1 -0
- Merge whimsy.udel.edu:/backroom/ntp-stable
- into whimsy.udel.edu:/backroom/ntp-dev
-
- BitKeeper/etc/config
- 1.5 01/09/06 02:42:14 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
-ChangeSet
- 1.683.1.9 01/09/06 02:28:37 stenn@whimsy.udel.edu +1 -0
- Try the new EDIT checkout mode - it's supposed to fix the timestamp problem.
-
- BitKeeper/etc/config
- 1.1.1.2 01/09/06 02:28:36 stenn@whimsy.udel.edu +1 -1
- Use checkout:EDIT instead of checkout:edit.
-
-ChangeSet
- 1.697 01/09/06 01:30:35 stenn@whimsy.udel.edu +3 -0
- Changes from Dave Mills: loop stability improvements.
-
- ntpd/ntp_proto.c
- 1.98 01/09/06 01:30:34 stenn@whimsy.udel.edu +3 -4
- allan_xpt changes.
-
- ntpd/ntp_loopfilter.c
- 1.55 01/09/06 01:30:34 stenn@whimsy.udel.edu +38 -34
- CLOCK_* #define cleanups.
- The allan_xpt is now log2 seconds.
- Added hybrid PLL/FLL parameters.
- Loop stability improvements.
-
- include/ntpd.h
- 1.31 01/09/06 01:30:33 stenn@whimsy.udel.edu +1 -1
- allan_xpt is now a u_char (was a double).
-
-ChangeSet
- 1.696 01/09/06 01:04:40 stenn@whimsy.udel.edu +2 -0
- Say more in README.bk, ignore ~ files.
-
- README.bk
- 1.2 01/09/06 01:04:39 stenn@whimsy.udel.edu +12 -2
- Add more stuff.
-
- BitKeeper/etc/ignore
- 1.7 01/09/06 01:04:39 stenn@whimsy.udel.edu +1 -0
- Ignore *~ files.
-
-ChangeSet
- 1.695 01/09/06 00:48:43 stenn@whimsy.udel.edu +1 -0
- checkout:EDIT
-
- BitKeeper/etc/config
- 1.4 01/09/06 00:48:42 stenn@whimsy.udel.edu +1 -1
- try using EDIT instead of edit for the checkout mode.
-
-ChangeSet
- 1.694 01/09/03 05:25:45 stenn@whimsy.udel.edu +11 -0
- Changes and updates from Dave Mills.
-
- ntpd/ntp_timer.c
- 1.17 01/09/03 05:25:44 stenn@whimsy.udel.edu +8 -4
- sys_revoke chagnes. Use a random poll interval.
- Record the refresh timestamp in the crypto stats.
-
- ntpd/ntp_refclock.c
- 1.40 01/09/03 05:25:43 stenn@whimsy.udel.edu +1 -7
- Lose the local hpoll stuff.
-
- ntpd/ntp_proto.c
- 1.97 01/09/03 05:25:43 stenn@whimsy.udel.edu +65 -55
- Fix a typo re config.h inclusion.
- clock_select() cleanup. Be careful when we unpeer() versus peer_clear().
- poll_update() changes for SKEY.
- hpoll changes.
- Randomization changes.
- More debug info on the selection stuff.
- peer list survivor cleanup.
- Lose a call to poll_update(). No more hcookie.
-
- ntpd/ntp_peer.c
- 1.31 01/09/03 05:25:43 stenn@whimsy.udel.edu +29 -8
- Log unpeer info.
- hpoll/ppoll cleanup.
- Log newpeer info.
- More peer-related wiggles.
- anycast(?) poll_update cleanup.
-
- ntpd/ntp_loopfilter.c
- 1.54 01/09/03 05:25:43 stenn@whimsy.udel.edu +39 -13
- Group PPS_MAXAGE with earlier #define's.
- PLL/FLL/Allan intercept wiggles.
-
- ntpd/ntp_crypto.c
- 1.46 01/09/03 05:25:43 stenn@whimsy.udel.edu +9 -13
- Lose MAX_LINELEN and MAX_STATLEN in favor of NTP_MAXSTRLEN.
- No more hcookie.
-
- ntpd/ntp_control.c
- 1.39 01/09/03 05:25:42 stenn@whimsy.udel.edu +6 -10
- CP_SASKEY changes.
- Deal with losing hcookie.
-
- ntpd/ntp_config.c
- 1.52 01/09/03 05:25:42 stenn@whimsy.udel.edu +1 -1
- sys_revoke changes.
-
- include/ntpd.h
- 1.30 01/09/03 05:25:42 stenn@whimsy.udel.edu +1 -1
- sys_revoke is now log2 - make it a u_char instead of a u_long.
-
- include/ntp_control.h
- 1.15 01/09/03 05:25:42 stenn@whimsy.udel.edu +4 -5
- Lose CP_SASKEY.
-
- include/ntp.h
- 1.50 01/09/03 05:25:42 stenn@whimsy.udel.edu +2 -2
- Create NTP_MAXSTR, a generic max strlen value.
- Lose the host cookie.
-
-ChangeSet
- 1.693 01/09/03 04:15:52 stenn@whimsy.udel.edu +5 -0
- html cleanup from Dave Mills.
-
- BitKeeper/etc/ignore
- 1.6 01/09/03 04:15:52 stenn@whimsy.udel.edu +9 -0
- Added html/pic/thumbs.db html/thumbs.db ntpd/loop.bak ntpd/loop.c ntpd/ntp_crypto.c.1 ntpd/ntp_proto.c.1 ntpd/peer.bak ntpd/peer.c ntpd/precision to the ignore list
-
- html/release.htm
- 1.15 01/09/03 04:15:51 stenn@whimsy.udel.edu +31 -26
- Cleanup, reformat, and reality check.
-
- html/ntpq.htm
- 1.8 01/09/03 04:15:51 stenn@whimsy.udel.edu +8 -2
- Cleanup, reformat, and reality check.
-
- html/confopt.htm
- 1.15 01/09/03 04:15:51 stenn@whimsy.udel.edu +11 -15
- Cleanup, reformat, and reality check.
-
- html/assoc.htm
- 1.7 01/09/03 04:15:51 stenn@whimsy.udel.edu +304 -54
- Cleanup, reformat, and reality check.
-
-ChangeSet
- 1.692 01/08/27 04:17:41 stenn@whimsy.udel.edu +6 -0
- Lose auto* generated files.
-
- configure.in
- 1.221 01/08/27 04:17:40 stenn@whimsy.udel.edu +1 -2
- Update version number
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~13
- 1.29 01/08/27 04:17:40 stenn@whimsy.udel.edu +79 -26
- Pedantic cruft.
-
- BitKeeper/deleted/.del-configure~3aed0663
- 1.227 01/08/27 04:05:05 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-aclocal.m4~3aed0663
- 1.90 01/08/27 04:05:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-COPYRIGHT~3aed0663
- 1.25 01/08/27 04:05:03 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- BitKeeper/deleted/.del-configure~3aed0663
- 1.226 01/08/27 04:05:02 stenn@whimsy.udel.edu +0 -0
- Merge rename: configure -> BitKeeper/deleted/.del-configure~3aed0663
-
- BitKeeper/deleted/.del-aclocal.m4~3aed0663
- 1.89 01/08/27 04:05:01 stenn@whimsy.udel.edu +0 -0
- Merge rename: aclocal.m4 -> BitKeeper/deleted/.del-aclocal.m4~3aed0663
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~13
- 1.28 01/08/27 04:05:00 stenn@whimsy.udel.edu +0 -0
- Merge rename: util/Makefile.in -> BitKeeper/deleted/.del-Makefile.in~3aed0663~13
-
- BitKeeper/deleted/.del-COPYRIGHT~3aed0663
- 1.24 01/08/27 04:05:00 stenn@whimsy.udel.edu +0 -0
- Merge rename: COPYRIGHT -> BitKeeper/deleted/.del-COPYRIGHT~3aed0663
-
- BitKeeper/etc/ignore
- 1.5 01/08/27 04:04:54 stenn@whimsy.udel.edu +7 -7
- auto-union
-
-ChangeSet
- 1.683.1.8 01/08/27 03:49:01 stenn@whimsy.udel.edu +5 -0
- Finish up cleanup from losing generated files.
- Bump verison number.
-
- README.bk
- 1.1 01/08/27 03:49:00 stenn@whimsy.udel.edu +15 -0
-
- BitKeeper/etc/ignore
- 1.1.1.2 01/08/27 03:49:01 stenn@whimsy.udel.edu +22 -0
- Added COPYRIGHT ElectricFence/Makefile.in Makefile.in aclocal.m4 adjtimed/Makefile.in am.log clockstuff/Makefile.in configure include/Makefile.in kernel/Makefile.in kernel/sys/Makefile.in libntp/Makefile.in libparse/Makefile.in librsaref/Makefile.in ntpd/Makefile.in ntpdate/Makefile.in ntpdc/Makefile.in ntpq/Makefile.in ntptrace/Makefile.in parseutil/Makefile.in scripts/Makefile.in util/Makefile.in to the ignore list
-
- configure.in
- 1.219.1.1 01/08/27 03:49:00 stenn@whimsy.udel.edu +1 -1
- Call this version '0a1.
-
- config.h.in
- 1.62 01/08/27 03:49:00 stenn@whimsy.udel.edu +3 -0
- HAVE_STDINT_H check.
-
- clockstuff/Makefile.am
- 1.2 01/08/27 03:49:00 stenn@whimsy.udel.edu +2 -2
- Portability improvements found by automake 1.5
-
- README.bk
- 1.0 01/08/27 03:49:00 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/README.bk
-
-ChangeSet
- 1.683.1.7 01/08/27 03:30:52 stenn@whimsy.udel.edu +21 -0
- .del-aclocal.m4~3aed0663:
- Delete: aclocal.m4
- .del-Makefile.in~52231e38:
- Delete: ElectricFence/Makefile.in
- .del-Makefile.in~bd702e17:
- Delete: scripts/Makefile.in
- .del-Makefile.in~3aed0663~12:
- Delete: parseutil/Makefile.in
- .del-Makefile.in~3aed0663~13:
- Delete: util/Makefile.in
- .del-Makefile.in~3aed0663~14:
- Delete: Makefile.in
- .del-Makefile.in~3aed0663~10:
- Delete: ntpq/Makefile.in
- .del-Makefile.in~3aed0663~11:
- Delete: ntptrace/Makefile.in
- .del-Makefile.in~3aed0663~6:
- Delete: libparse/Makefile.in
- .del-Makefile.in~3aed0663~7:
- Delete: ntpd/Makefile.in
- .del-Makefile.in~3aed0663~8:
- Delete: ntpdate/Makefile.in
- .del-Makefile.in~3aed0663~9:
- Delete: ntpdc/Makefile.in
- .del-Makefile.in~3aed0663:
- Delete: adjtimed/Makefile.in
- .del-Makefile.in~3aed0663~1:
- Delete: clockstuff/Makefile.in
- .del-Makefile.in~3aed0663~4:
- Delete: kernel/Makefile.in
- .del-Makefile.in~3aed0663~5:
- Delete: libntp/Makefile.in
- .del-Makefile.in~3aed0663~2:
- Delete: include/Makefile.in
- .del-Makefile.in~3aed0663~3:
- Delete: kernel/sys/Makefile.in
- .del-Makefile.in~e832209e:
- Delete: librsaref/Makefile.in
- .del-COPYRIGHT~3aed0663:
- Delete: COPYRIGHT
- .del-configure~3aed0663:
- Delete: configure
-
- BitKeeper/deleted/.del-aclocal.m4~3aed0663
- 1.86.1.2 01/08/27 02:37:31 stenn@whimsy.udel.edu +217 -160
- Delete: aclocal.m4
-
- BitKeeper/deleted/.del-Makefile.in~bd702e17
- 1.27 01/08/27 02:35:20 stenn@whimsy.udel.edu +30 -39
- Delete: scripts/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~52231e38
- 1.18 01/08/27 02:35:20 stenn@whimsy.udel.edu +89 -97
- Delete: ElectricFence/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~14
- 1.43 01/08/27 02:35:20 stenn@whimsy.udel.edu +62 -63
- Delete: Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~13
- 1.26.1.1 01/08/27 02:35:20 stenn@whimsy.udel.edu +150 -169
- Delete: util/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~12
- 1.23 01/08/27 02:35:20 stenn@whimsy.udel.edu +76 -88
- Delete: parseutil/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~9
- 1.27 01/08/27 02:35:19 stenn@whimsy.udel.edu +78 -89
- Delete: ntpdc/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~8
- 1.31 01/08/27 02:35:19 stenn@whimsy.udel.edu +86 -97
- Delete: ntpdate/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~7
- 1.30 01/08/27 02:35:19 stenn@whimsy.udel.edu +273 -260
- Delete: ntpd/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~6
- 1.27 01/08/27 02:35:19 stenn@whimsy.udel.edu +148 -152
- Delete: libparse/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~11
- 1.22 01/08/27 02:35:19 stenn@whimsy.udel.edu +76 -87
- Delete: ntptrace/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~10
- 1.27 01/08/27 02:35:19 stenn@whimsy.udel.edu +78 -89
- Delete: ntpq/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~e832209e
- 1.33 01/08/27 02:35:18 stenn@whimsy.udel.edu +89 -95
- Delete: librsaref/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~5
- 1.31 01/08/27 02:35:18 stenn@whimsy.udel.edu +282 -286
- Delete: libntp/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~4
- 1.22 01/08/27 02:35:18 stenn@whimsy.udel.edu +43 -47
- Delete: kernel/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~3
- 1.21 01/08/27 02:35:18 stenn@whimsy.udel.edu +34 -41
- Delete: kernel/sys/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~2
- 1.34 01/08/27 02:35:18 stenn@whimsy.udel.edu +35 -42
- Delete: include/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663~1
- 1.22 01/08/27 02:35:18 stenn@whimsy.udel.edu +78 -89
- Delete: clockstuff/Makefile.in
-
- BitKeeper/deleted/.del-Makefile.in~3aed0663
- 1.22 01/08/27 02:35:18 stenn@whimsy.udel.edu +76 -87
- Delete: adjtimed/Makefile.in
-
- BitKeeper/deleted/.del-configure~3aed0663
- 1.224.1.1 01/08/27 02:35:16 stenn@whimsy.udel.edu +1959 -2108
- Delete: configure
-
- BitKeeper/deleted/.del-COPYRIGHT~3aed0663
- 1.20.1.2 01/08/27 02:35:16 stenn@whimsy.udel.edu +0 -0
- Delete: COPYRIGHT
-
-ChangeSet
- 1.683.1.6 01/08/26 04:41:45 stenn@whimsy.udel.edu +1 -0
- Readline support,
- From: Ollivier Robert <roberto@eurocontrol.fr>
-
- ntpq/ntpq.c
- 1.16 01/08/26 03:06:34 stenn@whimsy.udel.edu +30 -14
- Readline support.
-
-ChangeSet
- 1.690 01/08/26 00:14:37 stenn@whimsy.udel.edu +2 -0
- Anti-clockhop hysteresis stuff from Dave Mills.
-
- ntpd/ntp_proto.c
- 1.96 01/08/26 00:14:36 stenn@whimsy.udel.edu +8 -1
- Implement the anti-clockhop hysteresis stuff.
- Comment accordingly.
-
- include/ntp.h
- 1.49 01/08/26 00:14:36 stenn@whimsy.udel.edu +3 -0
- anti-clockhop hysteresis #defines
-
-ChangeSet
- 1.689 01/08/26 00:05:56 stenn@whimsy.udel.edu +1 -0
- Generated files. Gotta try and lose these soon...
-
- COPYRIGHT
- 1.23 01/08/26 00:05:55 stenn@whimsy.udel.edu +1 -1
- Generated file
-
-ChangeSet
- 1.688 01/08/23 22:52:15 stenn@whimsy.udel.edu +4 -0
- Changes fro Dave Mills: crypto_recv() improvements, etc.
-
- ntpd/ntp_proto.c
- 1.95 01/08/23 22:52:15 stenn@whimsy.udel.edu +58 -46
- Document some variables.
- Call crypto_recv() with the new 3rd arg.
- Do test4 (access denied) sooner.
- Comment cleanup.
- OpenSSL patch for is_org.
- Call peer_clear() instead of key_expire()+flag wiggle.
-
- BitKeeper/etc/ignore
- 1.4 01/08/23 22:52:15 stenn@whimsy.udel.edu +6 -0
- Added .buildkey br-flock ntpd/crypto.bak ntpd/crypto.c ntpd/proto.bak ntpd/proto.c to the ignore list
-
- ntpd/ntp_crypto.c
- 1.45 01/08/23 22:52:14 stenn@whimsy.udel.edu +67 -27
- Only create a sig if the tstamp isn't 0.
-
- Add a timestamps test arg to crypto_recv().
- Postpone setting peer->assoc.
- Discard the message if the status word has already been received or
- the response does not match the request.
-
- include/ntpd.h
- 1.29 01/08/23 22:52:14 stenn@whimsy.udel.edu +1 -1
- crypto_recv() now takes a 3rd arg - the timestamps test flag.
-
-ChangeSet
- 1.687 01/08/23 04:17:09 stenn@whimsy.udel.edu +3 -0
- pull resolution
-
- COPYRIGHT
- 1.22 01/08/23 04:17:08 stenn@whimsy.udel.edu +0 -1
- Conflict cleanup
-
- aclocal.m4
- 1.88 01/08/23 04:04:49 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
- BitKeeper/etc/ignore
- 1.3 01/08/23 04:04:45 stenn@whimsy.udel.edu +1 -2
- auto-union
-
-ChangeSet
- 1.683.1.5 01/08/23 03:56:20 stenn@whimsy.udel.edu +1 -0
- Ignore A.* directories.
-
-ChangeSet
- 1.683.1.4 01/08/23 03:46:22 stenn@whimsy.udel.edu +4 -0
- Don't include SCCS subdirs in a distribution.
-
- aclocal.m4
- 1.86.1.1 01/08/23 03:46:21 stenn@whimsy.udel.edu +1 -1
- Regenerated file.
-
- Makefile.in
- 1.42 01/08/23 03:46:21 stenn@whimsy.udel.edu +1 -0
- Regenerated file.
-
- Makefile.am
- 1.12 01/08/23 03:46:21 stenn@whimsy.udel.edu +1 -0
- Clean out SCCS subdirs when making a distribution.
-
- COPYRIGHT
- 1.20.1.1 01/08/23 03:46:21 stenn@whimsy.udel.edu +1 -1
- Regenerated file.
-
- BitKeeper/etc/ignore
- 1.1.1.1 01/08/23 02:35:50 stenn@whimsy.udel.edu +1 -0
- added A.*
-
-ChangeSet
- 1.686 01/08/17 18:36:01 stenn@whimsy.udel.edu +1 -0
- Note the integration of OpenSSL in the NEWS file
-
- NEWS
- 1.32 01/08/17 18:35:57 stenn@whimsy.udel.edu +1 -0
- Note the integration of OpenSSL
-
-ChangeSet
- 1.685 01/08/17 18:21:24 stenn@whimsy.udel.edu +3 -0
- Merge whimsy.udel.edu:/backroom/ntp-dev
- into whimsy.udel.edu:/backroom/ntpssl41c
-
- BitKeeper/etc/config
- 1.3 01/08/17 18:21:24 stenn@whimsy.udel.edu +0 -2
- Auto merged
-
- BitKeeper/etc/logging_ok
- 1.3 01/08/17 18:21:22 stenn@whimsy.udel.edu +0 -0
- 'Auto converge'
-
- BitKeeper/deleted/.del-logging_ok~bfee81887dad4c1e
- 1.2 01/08/17 18:21:21 stenn@whimsy.udel.edu +0 -0
- Delete: BitKeeper/etc/logging_ok
-
- BitKeeper/deleted/.del-logging_ok~bebb84d857254496
- 1.2 01/08/17 18:21:21 stenn@whimsy.udel.edu +0 -0
- 'Auto converge rename'
-
-ChangeSet
- 1.683.1.3 01/08/16 02:47:35 stenn@whimsy.udel.edu +1 -0
- Add a marker to the NEWS file.
-
- NEWS
- 1.31 01/08/16 02:47:34 stenn@whimsy.udel.edu +1 -0
- Add a "marker" to the file so we can easily segregate stable from
- development changes in the NEWS file.
-
-ChangeSet
- 1.683.1.2 01/08/16 02:28:43 stenn@whimsy.udel.edu +1 -0
- Final ntp-4.1.0 changes to the NEWS file.
-
- NEWS
- 1.30 01/08/16 02:28:43 stenn@whimsy.udel.edu +2 -0
- Add the final missing bits to the NEWS file for the 4.1.0 release.
-
-ChangeSet
- 1.683.1.1 01/08/16 01:05:37 stenn@whimsy.udel.edu +2 -0
- Enable auto-checkout.
-
- BitKeeper/etc/logging_ok
- 1.1 01/08/16 01:05:33 stenn@whimsy.udel.edu +1 -0
-
- BitKeeper/etc/logging_ok
- 1.0 01/08/16 01:05:33 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-stable/BitKeeper/etc/logging_ok
-
- BitKeeper/etc/config
- 1.1.1.1 01/08/16 01:05:21 stenn@whimsy.udel.edu +2 -0
- Dave and I want auto-checkout.
-
-ChangeSet
- 1.684 01/08/16 00:57:43 stenn@whimsy.udel.edu +8 -0
- Merge Dave's OpenSSL work with the latest code.
-
- include/ntp_config.h
- 1.12 01/08/16 00:57:42 stenn@whimsy.udel.edu +0 -1
- Lose an extra/redundant #define.
-
- configure.in
- 1.220 01/08/16 00:57:42 stenn@whimsy.udel.edu +1 -2
- Use 4.1.70 as the version number for the merged OpenSSL code.
-
- configure
- 1.225 01/08/16 00:57:41 stenn@whimsy.udel.edu +1 -2
- Generated file
-
- ntpd/ntp_control.c
- 1.38 01/08/16 00:49:36 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
- ntpd/ntp_config.c
- 1.51 01/08/16 00:49:36 stenn@whimsy.udel.edu +0 -39
- Auto merged
-
- html/driver35.htm
- 1.5 01/08/16 00:49:35 stenn@whimsy.udel.edu +0 -1
- Auto merged
-
- html/config.htm
- 1.5 01/08/16 00:49:35 stenn@whimsy.udel.edu +0 -150
- Auto merged
-
- aclocal.m4
- 1.87 01/08/16 00:49:34 stenn@whimsy.udel.edu +0 -0
- Auto merged
-
-ChangeSet
- 1.672.1.3 01/08/15 18:45:08 stenn@whimsy.udel.edu +4 -0
- Update some generated files. I'd like to lose these from the repo...
-
- configure
- 1.219.1.1 01/08/15 18:45:06 stenn@whimsy.udel.edu +3 -3
- generated file
-
- aclocal.m4
- 1.81.1.1 01/08/15 18:45:06 stenn@whimsy.udel.edu +2 -2
- Generated file
-
- COPYRIGHT
- 1.21 01/08/15 18:45:05 stenn@whimsy.udel.edu +1 -1
- Generated file
-
- BitKeeper/etc/ignore
- 1.2 01/08/15 18:39:01 stenn@whimsy.udel.edu +1 -0
- added A.*
-
-ChangeSet
- 1.672.1.2 01/08/15 18:04:18 stenn@whimsy.udel.edu +1 -0
- Dave and I like our code visible...
-
- BitKeeper/etc/config
- 1.2 01/08/15 18:04:18 stenn@whimsy.udel.edu +2 -0
- Dave and I like our code visible...
-
-ChangeSet
- 1.672.1.1 01/08/15 17:45:05 stenn@whimsy.udel.edu +44 -0
- Dave's OpenSSL modifications
-
- BitKeeper/etc/logging_ok
- 1.1 01/08/15 05:13:24 stenn@whimsy.udel.edu +1 -0
-
- BitKeeper/etc/logging_ok
- 1.0 01/08/15 05:13:24 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-ssl-int/BitKeeper/etc/logging_ok
-
- util/genkeys.c
- 1.1 01/08/15 05:12:59 stenn@whimsy.udel.edu +452 -0
-
- util/genkeys.c
- 1.0 01/08/15 05:12:59 stenn@whimsy.udel.edu +0 -0
- BitKeeper file /backroom/ntp-ssl-int/util/genkeys.c
-
- util/Makefile.in
- 1.27 01/08/15 05:12:59 stenn@whimsy.udel.edu +32 -29
- generated file
-
- util/Makefile.am
- 1.10 01/08/15 05:12:59 stenn@whimsy.udel.edu +4 -3
- Disable ntp_genkeys for now. Make genkeys instead.
-
- ntpd/ntpd.c
- 1.34 01/08/15 05:12:58 stenn@whimsy.udel.edu +4 -18
- OpenSSL changes
-
- ntpd/ntp_util.c
- 1.15 01/08/15 05:12:58 stenn@whimsy.udel.edu +72 -3
- OpenSSL changes
-
- ntpd/ntp_timer.c
- 1.16 01/08/15 05:12:58 stenn@whimsy.udel.edu +6 -6
- OpenSSL changes
-
- ntpd/ntp_request.c
- 1.24 01/08/15 05:12:58 stenn@whimsy.udel.edu +2 -2
- OpenSSL changes
-
- ntpd/ntp_proto.c
- 1.94 01/08/15 05:12:58 stenn@whimsy.udel.edu +312 -256
- OpenSSL changes
-
- ntpd/ntp_peer.c
- 1.30 01/08/15 05:12:58 stenn@whimsy.udel.edu +9 -11
- OpenSSL changes
-
- ntpd/ntp_io.c
- 1.21 01/08/15 05:12:58 stenn@whimsy.udel.edu +4 -0
- OpenSSL changes
-
- ntpd/ntp_crypto.c
- 1.44 01/08/15 05:12:57 stenn@whimsy.udel.edu +1246 -1446
- OpenSSL changes
-
- ntpd/ntp_control.c
- 1.36.1.1 01/08/15 05:12:57 stenn@whimsy.udel.edu +85 -68
- OpenSSL changes
-
- ntpd/ntp_config.c
- 1.47.1.1 01/08/15 05:12:57 stenn@whimsy.udel.edu +70 -45
- OpenSSL changes
-
- libntp/statestr.c
- 1.3 01/08/15 05:12:57 stenn@whimsy.udel.edu +35 -2
- OpenSSL changes
-
- libntp/authencrypt.c
- 1.5 01/08/15 05:12:57 stenn@whimsy.udel.edu +2 -48
- OpenSSL changes
-
- libntp/a_md5encrypt.c
- 1.6 01/08/15 05:12:57 stenn@whimsy.udel.edu +18 -26
- OpenSSL changes
-
- include/ntpd.h
- 1.28 01/08/15 05:12:57 stenn@whimsy.udel.edu +21 -4
- OpenSSL changes
-
- include/ntp_crypto.h
- 1.21 01/08/15 05:12:57 stenn@whimsy.udel.edu +75 -70
- OpenSSL changes
-
- include/ntp_control.h
- 1.14 01/08/15 05:12:56 stenn@whimsy.udel.edu +17 -17
- OpenSSL changes
-
- include/ntp_config.h
- 1.10.1.1 01/08/15 05:12:56 stenn@whimsy.udel.edu +14 -13
- OpenSSL changes
-
- include/ntp.h
- 1.48 01/08/15 05:12:56 stenn@whimsy.udel.edu +26 -42
- OpenSSL changes
-
- html/release.htm
- 1.14 01/08/15 05:12:56 stenn@whimsy.udel.edu +133 -89
- Documentation cleanup
-
- html/parsedata.htm
- 1.3 01/08/15 05:12:56 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup
-
- html/ntpq.htm
- 1.7 01/08/15 05:12:56 stenn@whimsy.udel.edu +235 -168
- Documentation cleanup
-
- html/monopt.htm
- 1.7 01/08/15 05:12:56 stenn@whimsy.udel.edu +227 -174
- Documentation cleanup
-
- html/genkeys.htm
- 1.6 01/08/15 05:12:56 stenn@whimsy.udel.edu +237 -133
- Documentation cleanup
-
- html/driver39.htm
- 1.2 01/08/15 05:12:56 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup
-
- html/driver38.htm
- 1.2 01/08/15 05:12:55 stenn@whimsy.udel.edu +1 -1
- Documentation cleanup
-
- html/driver35.htm
- 1.3.1.1 01/08/15 05:12:55 stenn@whimsy.udel.edu +1 -2
- Documentation cleanup
-
- html/debug.htm
- 1.6 01/08/15 05:12:55 stenn@whimsy.udel.edu +89 -37
- Documentation cleanup
-
- html/config.htm
- 1.3.1.1 01/08/15 05:12:55 stenn@whimsy.udel.edu +150 -255
- Documentation cleanup
-
- html/build.htm
- 1.7 01/08/15 05:12:55 stenn@whimsy.udel.edu +23 -26
- Documentation cleanup
-
- html/authopt.htm
- 1.12 01/08/15 05:12:55 stenn@whimsy.udel.edu +307 -247
- Documentation cleanup
-
- configure.in
- 1.214.1.1 01/08/15 05:12:55 stenn@whimsy.udel.edu +4 -4
- version changes, crypto option update.
-
- conf/rackety.conf
- 1.2 01/08/15 05:12:55 stenn@whimsy.udel.edu +9 -1
- Comment cleanup, restrict changes (KOD and version)
-
- conf/pogo.conf
- 1.3 01/08/15 05:12:55 stenn@whimsy.udel.edu +2 -13
- comment cleanup, crypto line changes, added cryptostats.
-
- conf/malarky.conf
- 1.2 01/08/15 05:12:54 stenn@whimsy.udel.edu +1 -1
- comment cleanup
-
- conf/grundoon.conf
- 1.3 01/08/15 05:12:54 stenn@whimsy.udel.edu +1 -1
- Comment cleanup
-
- conf/README
- 1.4 01/08/15 05:12:54 stenn@whimsy.udel.edu +4 -8
- OpenSSL updates
-
- build
- 1.17 01/08/15 05:12:54 stenn@whimsy.udel.edu +1 -1
- OpenSSL changes
-
- acinclude.m4
- 1.4 01/08/15 05:12:54 stenn@whimsy.udel.edu +1 -1
- Keyword expansion
-
- BitKeeper/deleted/.del-stats.ulrich.patches~3aed0663
- 1.3 01/08/15 05:12:54 stenn@whimsy.udel.edu +0 -0
- No idea what this file is...
-
- BitKeeper/deleted/.del-dewey.conf~3e480692
- 1.2 01/08/15 04:27:03 stenn@whimsy.udel.edu +0 -0
- Delete: conf/dewey.conf
-
-ChangeSet
- 1.683 01/08/01 23:01:12 stenn@whimsy.udel.edu +4 -0
- aclocal.m4, ChangeLog, configure, configure.in:
- * configure.in: 4.1.0
-
- configure.in
- 1.219 01/08/01 23:01:12 stenn@whimsy.udel.edu +1 -1
- * configure.in: 4.1.0
-
- configure
- 1.224 01/08/01 23:01:10 stenn@whimsy.udel.edu +1 -1
- * configure.in: 4.1.0
-
- aclocal.m4
- 1.86 01/08/01 23:01:10 stenn@whimsy.udel.edu +0 -0
- * configure.in: 4.1.0
-
- ChangeLog
- 1.584 01/08/01 23:01:10 stenn@whimsy.udel.edu +4 -0
- * configure.in: 4.1.0
-
+(4.2.4p5) 2008/08/17 Released by Harlan Stenn <stenn@ntp.org>
+---
+(4.2.4p5) 2008/08/17 Released by Harlan Stenn <stenn@ntp.org>
+(4.2.4p5) 2008/08/17 Released by Harlan Stenn <stenn@ntp.org>
+
+* [BUG 1051] Month off by one in leap second message written to clockstats
+ file fixed.
+* [Bug 450] Windows only: Under original Windows NT we must not discard the
+ wildcard socket to workaround a bug in NT's getsockname().
+* [Bug 1038] Built-in getpass() function also prompts for password if
+ not built with DEBUG.
+* [Bug 841] Obsolete the "dynamic" keyword and make deferred binding
+ to local interfaces the default.
+ Emit a warning if that keyword is used for configuration.
+* [Bug 959] Refclock on Windows not properly releasing recvbuffs.
+* [Bug 993] Fix memory leak when fetching system messages.
+* [Bug 987] Wake up the resolver thread/process when a new interface has
+ become available.
+* Correctly apply negative-sawtooth for oncore 12 channel receiver.
+* Startup code for original LinuxPPS removed. LinuxPPS now conforms to
+ the PPSAPI.
+* [Bug 1000] allow implicit receive buffer allocation for Windows.
+ fixes startup for windows systems with many interfaces.
+ reduces dropped packets on network bursts.
+ additionally fix timer() starvation during high load.
+* [Bug 990] drop minimum time restriction for interface update interval.
+* [Bug 977] Fix mismatching #ifdefs for builds without IPv6.
+* Update the copyright year.
+* Build system cleanup (make autogen-generated files writable).
+* [Bug 957] Windows only: Let command line parameters from the Windows SCM GUI
+ override the standard parameters from the ImagePath registry key.
+* Fixes for ntpdate:
+* [Bug 532] nptdate timeout is too long if several servers are supplied.
+* [Bug 698] timeBeginPeriod is called without timeEndPeriod in some NTP tools.
+* [Bug 857] ntpdate debug mode adjusts system clock when it shouldn't.
+* [Bug 908] ntpdate crashes sometimes.
+* [Bug 982] ntpdate(and ntptimeset) buffer overrun if HAVE_POLL_H isn't set
+ (dup of 908).
+* [Bug 997] ntpdate buffer too small and unsafe.
+* ntpdate.c: Under Windows check whether NTP port in use under same conditions
+ as under other OSs.
+* ntpdate.c: Fixed some typos and indents (tabs/spaces).
+
+---
+(4.2.4p4) Released by Harlan Stenn <stenn@ntp.org>
+
+* [Bug 902] Fix problems with the -6 flag.
+* Updated include/copyright.def (owner and year).
+* [Bug 878] Avoid ntpdc use of refid value as unterminated string.
+* [Bug 881] Corrected display of pll offset on 64bit systems.
+* [Bug 886] Corrected sign handling on 64bit in ntpdc loopinfo command.
+* [Bug 889] avoid malloc() interrupted by SIGIO risk
+* ntpd/refclock_parse.c: cleanup shutdown while the file descriptor is still open.
+* [Bug 885] use emalloc() to get a message at the end of the memory
+ unsigned types cannot be less than 0
+ default_ai_family is a short
+ lose trailing , from enum list
+ clarify ntp_restrict.c for easier automated analysis
+* [Bug 884] don't access recv buffers after having them passed to the free list.
+* [Bug 882] allow loopback interfaces to share addresses with other interfaces.
+
+---
+(4.2.4p3) Released by Harlan Stenn <stenn@ntp.org>
+
+* [Bug 863] unable to stop ntpd on Windows as the handle reference for events
+ changed
+
+---
+(4.2.4p2) Released by Harlan Stenn <stenn@ntp.org>
+
+* [Bug 854] Broadcast address was not correctly set for interface addresses
+* [Bug 829] reduce syslog noise, while there fix Enabled/Disable logging
+ to reflect the actual configuration.
+* [Bug 795] Moved declaration of variable to top of function.
+* [Bug 789] Fix multicast client crypto authentication and make sure arriving
+ multicast packets do not disturb the autokey dance.
+* [Bug 785] improve handling of multicast interfaces
+ (multicast routers still need to run a multicast routing
+ software/daemon)
+* [Bug 527] Don't write from source address length to wrong location
+* Upgraded autogen and libopts.
+* [Bug 811] ntpd should not read a .ntprc file.
+
+---
+(4.2.4p1) (skipped)
+
+---
+(4.2.4p0) Released by Harlan Stenn <stenn@ntp.org>
+
+* [Bug 793] Update Hans Lambermont's email address in ntpsweep.
+* [Bug 776] Remove unimplemented "rate" flag from ntpdate.
+* [Bug 586] Avoid lookups if AI_NUMERICHOST is set.
+* [Bug 770] Fix numeric parameters to ntp-keygen (Alain Guibert).
+* [Bug 768] Fix io_setbclient() error message.
+* [Bug 765] Use net_bind_service capability on linux.
+* [Bug 760] The background resolver must be aware of the 'dynamic' keyword.
+* [Bug 753] make union timestamp anonymous (Philip Prindeville).
+* confopt.html: move description for "dynamic" keyword into the right section.
+* pick the right type for the recv*() length argument.
+
+---
+(4.2.4) Released by Harlan Stenn <stenn@ntp.org>
+
+* monopt.html fixes from Dave Mills.
+* [Bug 452] Do not report kernel PLL/FLL flips.
+* [Bug 746] Expert mouseCLOCK USB v2.0 support added.'
+* driver8.html updates.
+* [Bug 747] Drop <NOBR> tags from ntpdc.html.
+* sntp now uses the returned precision to control decimal places.
+* sntp -u will use an unprivileged port for its queries.
+* [Bug 741] "burst" doesn't work with !unfit peers.
+* [Bug 735] Fix a make/gmake VPATH issue on Solaris.
+* [Bug 739] ntpd -x should not take an argument.
+* [Bug 737] Some systems need help providing struct iovec.
+* [Bug 717] Fix libopts compile problem.
+* [Bug 728] parse documentation fixes.
+* [Bug 734] setsockopt(..., IP_MULTICAST_IF, ...) fails on 64-bit platforms.
+* [Bug 732] C-DEX JST2000 patch from Hideo Kuramatsu.
+* [Bug 721] check for __ss_family and __ss_len separately.
+* [Bug 666] ntpq opeers displays jitter rather than dispersion.
+* [Bug 718] Use the recommended type for the saddrlen arg to getsockname().
+* [Bug 715] Fix a multicast issue under Linux.
+* [Bug 690] Fix a Windows DNS lookup buffer overflow.
+* [Bug 670] Resolved a Windows issue with the dynamic interface rescan code.
+* K&R C support is being deprecated.
+* [Bug 714] ntpq -p should conflict with -i, not -c.
+* WWV refclock improvements from Dave Mills.
+* [Bug 708] Use thread affinity only for the clock interpolation thread.
+* [Bug 706] ntpd can be running several times in parallel.
+* [Bug 704] Documentation typos.
+* [Bug 701] coverity: NULL dereference in ntp_peer.c
+* [Bug 695] libopts does not protect against macro collisions.
+* [Bug 693] __adjtimex is independent of ntp_{adj,get}time.
+* [Bug 692] sys_limitrejected was not being incremented.
+* [Bug 691] restrictions() assumption not always valid.
+* [Bug 689] Deprecate HEATH GC-1001 II; the driver never worked.
+* [Bug 688] Fix documentation typos.
+* [Bug 686] Handle leap seconds better under Windows.
+* [Bug 685] Use the Windows multimedia timer.
+* [Bug 684] Only allow debug options if debugging is enabled.
+* [Bug 683] Use the right version string.
+* [Bug 680] Fix the generated version string on Windows.
+* [Bug 678] Use the correct size for control messages.
+* [Bug 677] Do not check uint_t in configure.ac.
+* [Bug 676] Use the right value for msg_namelen.
+* [Bug 675] Make sure ntpd builds without debugging.
+* [Bug 672] Fix cross-platform structure padding/size differences.
+* [Bug 660] New TIMESTAMP code fails tp build on Solaris Express.
+* [Bug 659] libopts does not build under Windows.
+* [Bug 658] HP-UX with cc needs -Wp,-H8166 in CFLAGS.
+* [Bug 656] ntpdate doesn't work with multicast address.
+* [Bug 638] STREAMS_TLI is deprecated - remove it.
+* [Bug 635] Fix tOptions definition.
+* [Bug 628] Fallback to ntp discipline not working for large offsets.
+* [Bug 622] Dynamic interface tracking for ntpd.
+* [Bug 603] Don't link with libelf if it's not needed.
+* [Bug 523] ntpd service under Windows does't shut down properly.
+* [Bug 500] sntp should always be built.
+* [Bug 479] Fix the -P option.
+* [Bug 421] Support the bc637PCI-U card.
+* [Bug 342] Deprecate broken TRAK refclock driver.
+* [Bug 340] Deprecate broken MSF EES refclock driver.
+* [Bug 153] Don't do DNS lookups on address masks.
+* [Bug 143] Fix interrupted system call on HP-UX.
+* [Bug 42] Distribution tarballs should be signed.
+* Support separate PPS devices for PARSE refclocks.
+* [Bug 637, 51?] Dynamic interface scanning can now be done.
+* Options processing now uses GNU AutoGen.
+
+---
+(4.2.2p4) Released by Harlan Stenn <stenn@ntp.org>
+
+ * [Bug 710] compat getnameinfo() has off-by-one error
+ * [Bug 690] Buffer overflow in Windows when doing DNS Lookups
+
+---
+(4.2.2p3) Released by Harlan Stenn <stenn@ntp.org>
+
+ * Make the ChangeLog file cleaner and easier to read
+ * [Bug 601] ntpq's decodeint uses an extra level of indirection
+ * [Bug 657] Different OSes need different sized args for IP_MULTICAST_LOOP
+ * release engineering/build changes
+ * Documentation fixes
+ * Get sntp working under AIX-5
+
+---
+(4.2.2p2) (broken)
+
+ * Get sntp working under AIX-5
+
+---
+(4.2.2p1)
+
+ * [Bug 661] Use environment variable to specify the base path to openssl.
+ * Resolve an ambiguity in the copyright notice
+ * Added some new documentation files
+ * URL cleanup in the documentation
+ * [Bug 657]: IP_MULTICAST_LOOP uses a u_char value/size
+ * quiet gcc4 complaints
+ * more Coverity fixes
+ * [Bug 614] manage file descriptors better
+ * [Bug 632] update kernel PPS offsets when PPS offset is re-configured
+ * [Bug 637] Ignore UP in*addr_any interfaces
+ * [Bug 633] Avoid writing files in srcdir
+ * release engineering/build changes
+
+---
+(4.2.2)
+
+ * SNTP
+ * Many bugfixes
+ * Implements the current "goal state" of NTPv4
+ * Autokey improvements
+ * Much better IPv6 support
+ * [Bug 360] ntpd loses handles with LAN connection disabled.
+ * [Bug 239] Fix intermittent autokey failure with multicast clients.
+ * Rewrite of the multicast code
+ * New version numbering scheme
+
+---
+(4.2.0)
+
+* More stuff than I have time to document
+* IPv6 support
+* Bugfixes
+* call-gap filtering
+* wwv and chu refclock improvements
+* OpenSSL integration
+
+---
+(4.1.2)
+
+* clock state machine bugfix
+* Lose the source port check on incoming packets
+* (x)ntpdc compatibility patch
+* Virtual IP improvements
+* ntp_loopfilter fixes and improvements
+* ntpdc improvements
+* GOES refclock fix
+* JJY driver
+* Jupiter refclock fixes
+* Neoclock4X refclock fixes
+* AIX 5 port
+* bsdi port fixes
+* Cray unicos port upgrade
+* HP MPE/iX port
+* Win/NT port upgrade
+* Dynix PTX port fixes
+* Document conversion from CVS to BK
+* readline support for ntpq
+
+---
+(4.1.0)
+
+* CERT problem fixed (99k23)
+
+* Huff-n-Puff filter
+* Preparation for OpenSSL support
+* Resolver changes/improvements are not backward compatible with mode 7
+ requests (which are implementation-specific anyway)
+* leap second stuff
+* manycast should work now
+* ntp-genkeys does new good things.
+* scripts/ntp-close
+* PPS cleanup and improvements
+* readline support for ntpdc
+* Crypto/authentication rewrite
+* WINNT builds with MD5 by default
+* WINNT no longer requires Perl for building with Visual C++ 6.0
+* algorithmic improvements, bugfixes
+* Solaris dosynctodr info update
+* html/pic/* is *lots* smaller
+* New/updated drivers: Forum Graphic GPS, WWV/H, Heath GC-100 II, HOPF
+ serial and PCI, ONCORE, ulink331
+* Rewrite of the audio drivers
+
+---
+(4.0.99)
+
+* Driver updates: CHU, DCF, GPS/VME, Oncore, PCF, Ulink, WWVB, burst
+ If you use the ONCORE driver with a HARDPPS kernel module,
+ you *must* have a properly specified:
+ pps <filename> [assert/clear] [hardpps]
+ line in the /etc/ntp.conf file.
+* PARSE cleanup
+* PPS cleanup
+* ntpd, ntpq, ntpdate cleanup and fixes
+* NT port improvements
+* AIX, BSDI, DEC OSF, FreeBSD, NetBSD, Reliant, SCO, Solaris port improvements
+
+---
+(4.0.98)
+
+* Solaris kernel FLL bug is fixed in 106541-07
+* Bug/lint cleanup
+* PPS cleanup
+* ReliantUNIX patches
+* NetInfo support
+* Ultralink driver
+* Trimble OEM Ace-II support
+* DCF77 power choices
+* Oncore improvements
+
+---
+(4.0.97)
+
+* NT patches
+* AIX,SunOS,IRIX portability
+* NeXT portability
+* ntptimeset utility added
+* cygwin portability patches
+
+---
+(4.0.96)
+
+* -lnsl, -lsocket, -lgen configuration patches
+* Y2K patches from AT&T
+* Linux portability cruft
+
+---
+(4.0.95)
+
+* NT port cleanup/replacement
+* a few portability fixes
+* VARITEXT Parse clock added
+
+---
+(4.0.94)
+
+* PPS updates (including ntp.config options)
+* Lose the old DES stuff in favor of the (optional) RSAREF stuff
+* html cleanup/updates
+* numerous drivers cleaned up
+* numerous portability patches and code cleanup
+
+---
+(4.0.93)
+
+* Oncore refclock needs PPS or one of two ioctls.
+* Don't make ntptime under Linux. It doesn't compile for too many folks.
+* Autokey cleanup
+* ReliantUnix patches
+* html cleanup
+* tickadj cleanup
+* PARSE cleanup
+* IRIX -n32 cleanup
+* byte order cleanup
+* ntptrace improvements and patches
+* ntpdc improvements and patches
+* PPS cleanup
+* mx4200 cleanup
+* New clock state machine
+* SCO cleanup
+* Skip alias interfaces
+
+---
+(4.0.92)
+
+* chronolog and dumbclock refclocks
+* SCO updates
+* Cleanup/bugfixes
+* Y2K patches
+* Updated palisade driver
+* Plug memory leak
+* wharton kernel clock
+* Oncore clock upgrades
+* NMEA clock improvements
+* PPS improvements
+* AIX portability patches
+
+---
+(4.0.91)
+
+* New ONCORE driver
+* New MX4200 driver
+* Palisade improvements
+* config file bugfixes and problem reporting
+* autoconf upgrade and cleanup
+* HP-UX, IRIX lint cleanup
+* AIX portability patches
+* NT cleanup
+
+---
+(4.0.90)
+
+* Nanoseconds
+* New palisade driver
+* New Oncore driver
+
+---
+(4.0.73)
+
+* README.hackers added
+* PARSE driver is working again
+* Solaris 2.6 has nasty kernel bugs. DO NOT enable pll!
+* DES is out of the distribution.
+
+---
+(4.0.72)
+
+* K&R C compiling should work again.
+* IRIG patches.
+* MX4200 driver patches.
+* Jupiter driver added.
+* Palisade driver added. Needs work (ANSI, ntoh/hton, sizeof double, ???)
diff --git a/contrib/ntp/CommitLog b/contrib/ntp/CommitLog
new file mode 100644
index 0000000..861e03d
--- /dev/null
+++ b/contrib/ntp/CommitLog
@@ -0,0 +1,23578 @@
+ChangeSet@1.1541, 2008-08-17 05:30:47-04:00, stenn@whimsy.udel.edu +26 -0
+ NTP_4_2_4P5
+ TAG: NTP_4_2_4P5
+
+ ChangeLog@1.44, 2008-08-17 05:30:27-04:00, stenn@whimsy.udel.edu +3 -0
+ NTP_4_2_4P5
+
+ ntpd/ntpd-opts.c@1.74, 2008-08-17 05:30:28-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ ntpd/ntpd-opts.h@1.74, 2008-08-17 05:30:28-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5
+
+ ntpd/ntpd-opts.texi@1.73, 2008-08-17 05:30:29-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5
+
+ ntpd/ntpd.1@1.72, 2008-08-17 05:30:30-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ ntpd/ntpdsim-opts.c@1.74, 2008-08-17 05:30:30-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ ntpd/ntpdsim-opts.h@1.74, 2008-08-17 05:30:31-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5
+
+ ntpd/ntpdsim-opts.texi@1.72, 2008-08-17 05:30:32-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5
+
+ ntpd/ntpdsim.1@1.72, 2008-08-17 05:30:33-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ ntpdc/ntpdc-opts.c@1.74, 2008-08-17 05:30:33-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ ntpdc/ntpdc-opts.h@1.74, 2008-08-17 05:30:34-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5
+
+ ntpdc/ntpdc-opts.texi@1.72, 2008-08-17 05:30:34-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5
+
+ ntpdc/ntpdc.1@1.72, 2008-08-17 05:30:35-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ ntpq/ntpq-opts.c@1.76, 2008-08-17 05:30:35-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ ntpq/ntpq-opts.h@1.76, 2008-08-17 05:30:36-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5
+
+ ntpq/ntpq-opts.texi@1.73, 2008-08-17 05:30:36-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5
+
+ ntpq/ntpq.1@1.72, 2008-08-17 05:30:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ packageinfo.sh@1.101, 2008-08-17 05:30:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ sntp/sntp-opts.c@1.72, 2008-08-17 05:30:38-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ sntp/sntp-opts.h@1.72, 2008-08-17 05:30:39-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5
+
+ sntp/sntp-opts.texi@1.69, 2008-08-17 05:30:39-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5
+
+ sntp/sntp.1@1.72, 2008-08-17 05:30:40-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ util/ntp-keygen-opts.c@1.73, 2008-08-17 05:30:40-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ util/ntp-keygen-opts.h@1.73, 2008-08-17 05:30:41-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5
+
+ util/ntp-keygen-opts.texi@1.71, 2008-08-17 05:30:42-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5
+
+ util/ntp-keygen.1@1.71, 2008-08-17 05:30:42-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5
+
+ChangeSet@1.1540, 2008-08-17 05:29:47-04:00, stenn@whimsy.udel.edu +1 -0
+ typo
+
+ scripts/addChangeLogTag@1.2, 2008-08-17 05:29:37-04:00, stenn@whimsy.udel.edu +1 -1
+ typo
+
+ChangeSet@1.1539, 2008-08-17 03:28:53-04:00, stenn@whimsy.udel.edu +5 -0
+ 4.2.4p5 prep
+
+ .point-changed-filelist@1.2, 2008-08-17 03:27:42-04:00, stenn@whimsy.udel.edu +1 -0
+ 4.2.4p5 prep
+
+ NEWS@1.99, 2008-08-17 03:27:42-04:00, stenn@whimsy.udel.edu +17 -0
+ 4.2.4p5 prep
+
+ packageinfo.sh@1.100, 2008-08-17 03:27:43-04:00, stenn@whimsy.udel.edu +1 -1
+ 4.2.4p5 prep
+
+ scripts/addChangeLogTag@1.1, 2008-08-17 03:27:55-04:00, stenn@whimsy.udel.edu +27 -0
+ BitKeeper file /deacon/backroom/ntp-stable/scripts/addChangeLogTag
+
+ scripts/addChangeLogTag@1.0, 2008-08-17 03:27:55-04:00, stenn@whimsy.udel.edu +0 -0
+
+ scripts/genChangeLogTag@1.1, 2008-08-17 03:27:55-04:00, stenn@whimsy.udel.edu +6 -0
+ BitKeeper file /deacon/backroom/ntp-stable/scripts/genChangeLogTag
+
+ scripts/genChangeLogTag@1.0, 2008-08-17 03:27:55-04:00, stenn@whimsy.udel.edu +0 -0
+
+ChangeSet@1.1538, 2008-08-16 22:42:08-04:00, stenn@whimsy.udel.edu +2 -0
+ [BUG 1051] Month off by one in leap second message written to clockstats
+
+ ChangeLog@1.43, 2008-08-16 22:41:50-04:00, stenn@whimsy.udel.edu +2 -0
+ [BUG 1051] Month off by one in leap second message written to clockstats
+
+ ntpd/refclock_oncore.c@1.63, 2008-08-16 22:41:50-04:00, stenn@whimsy.udel.edu +1 -1
+ [BUG 1051] Month off by one in leap second message written to clockstats
+
+ChangeSet@1.1537, 2008-08-10 07:44:31-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P5_RC2
+ TAG: NTP_4_2_4P5_RC2
+
+ ntpd/ntpd-opts.c@1.73, 2008-08-10 07:44:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC2
+
+ ntpd/ntpd-opts.h@1.73, 2008-08-10 07:44:09-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5_RC2
+
+ ntpd/ntpd-opts.texi@1.72, 2008-08-10 07:44:10-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5_RC2
+
+ ntpd/ntpd.1@1.71, 2008-08-10 07:44:10-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC2
+
+ ntpd/ntpdsim-opts.c@1.73, 2008-08-10 07:44:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC2
+
+ ntpd/ntpdsim-opts.h@1.73, 2008-08-10 07:44:12-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5_RC2
+
+ ntpd/ntpdsim-opts.texi@1.71, 2008-08-10 07:44:12-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5_RC2
+
+ ntpd/ntpdsim.1@1.71, 2008-08-10 07:44:13-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC2
+
+ ntpdc/ntpdc-opts.c@1.73, 2008-08-10 07:44:14-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC2
+
+ ntpdc/ntpdc-opts.h@1.73, 2008-08-10 07:44:15-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5_RC2
+
+ ntpdc/ntpdc-opts.texi@1.71, 2008-08-10 07:44:16-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5_RC2
+
+ ntpdc/ntpdc.1@1.71, 2008-08-10 07:44:17-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC2
+
+ ntpq/ntpq-opts.c@1.75, 2008-08-10 07:44:17-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC2
+
+ ntpq/ntpq-opts.h@1.75, 2008-08-10 07:44:18-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5_RC2
+
+ ntpq/ntpq-opts.texi@1.72, 2008-08-10 07:44:19-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5_RC2
+
+ ntpq/ntpq.1@1.71, 2008-08-10 07:44:20-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC2
+
+ packageinfo.sh@1.99, 2008-08-10 07:44:20-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5_RC2
+
+ sntp/sntp-opts.c@1.71, 2008-08-10 07:44:22-04:00, stenn@whimsy.udel.edu +4 -5
+ NTP_4_2_4P5_RC2
+
+ sntp/sntp-opts.h@1.71, 2008-08-10 07:44:23-04:00, stenn@whimsy.udel.edu +5 -6
+ NTP_4_2_4P5_RC2
+
+ sntp/sntp-opts.texi@1.68, 2008-08-10 07:44:23-04:00, stenn@whimsy.udel.edu +2 -3
+ NTP_4_2_4P5_RC2
+
+ sntp/sntp.1@1.71, 2008-08-10 07:44:24-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5_RC2
+
+ util/ntp-keygen-opts.c@1.72, 2008-08-10 07:44:25-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC2
+
+ util/ntp-keygen-opts.h@1.72, 2008-08-10 07:44:25-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5_RC2
+
+ util/ntp-keygen-opts.texi@1.70, 2008-08-10 07:44:27-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5_RC2
+
+ util/ntp-keygen.1@1.70, 2008-08-10 07:44:27-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC2
+
+ChangeSet@1.1531.3.1, 2008-08-10 02:22:22-04:00, stenn@whimsy.udel.edu +1 -0
+ triggert needs to handle rooted RESYNC paths now
+
+ BitKeeper/triggers/triggert@1.5, 2008-08-10 02:22:11-04:00, stenn@whimsy.udel.edu +3 -2
+ triggert needs to handle rooted RESYNC paths now
+
+ChangeSet@1.1534, 2008-08-09 20:05:06-04:00, stenn@whimsy.udel.edu +2 -0
+ AutoGen'd files must be writable
+
+ sntp/Makefile.am@1.23, 2008-08-09 20:04:56-04:00, stenn@whimsy.udel.edu +2 -2
+ AutoGen'd files must be writable
+
+ sntp/sntp-opts.menu@1.3, 2008-08-09 20:04:10-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-rw-r--
+
+ChangeSet@1.1531.2.1, 2008-08-07 20:44:31+02:00, burnicki@pogo.udel.edu +3 -0
+ [Bug 450] Windows only: Under original Windows NT we must not discard the
+ wildcard socket to workaround a bug in NT's getsockname().
+
+ ChangeLog@1.39.2.1, 2008-08-07 20:44:30+02:00, burnicki@pogo.udel.edu +2 -0
+ [Bug 450] Windows only: Under original Windows NT we must not discard the
+ wildcard socket to workaround a bug in NT's getsockname().
+
+ ntpd/ntp_peer.c@1.99.1.1, 2008-08-07 20:44:30+02:00, burnicki@pogo.udel.edu +10 -2
+ [Bug 450] Windows only: Under original Windows NT we must not discard the
+ wildcard socket to workaround a bug in NT's getsockname().
+
+ ports/winnt/ntpd/ntservice.c@1.11, 2008-08-07 20:44:30+02:00, burnicki@pogo.udel.edu +8 -1
+ [Bug 450] Windows only: Under original Windows NT we must not discard the
+ wildcard socket to workaround a bug in NT's getsockname().
+
+ChangeSet@1.1531.1.2, 2008-08-05 09:56:08+02:00, burnicki@pogo.udel.edu +1 -0
+ Removed Windows-specific debug code which has been added in ntp-dev and fails to compile in ntp-stable.
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.26, 2008-08-05 09:56:08+02:00, burnicki@pogo.udel.edu +0 -8
+ Removed Windows-specific debug code which has been added in ntp-dev and fails to compile in ntp-stable.
+
+ChangeSet@1.1531.1.1, 2008-08-05 09:50:23+02:00, burnicki@pogo.udel.edu +10 -0
+ [Bug 841] Obsolete the "dynamic" keyword and make deferred binding
+ to local interfaces the default.
+ Emit a warning if that keyword is used for configuration.
+
+ ChangeLog@1.39.1.1, 2008-08-05 09:50:23+02:00, burnicki@pogo.udel.edu +3 -0
+ [Bug 841] Obsolete the "dynamic" keyword and make deferred binding
+ to local interfaces the default.
+ Emit a warning if that keyword is used for configuration.
+
+ html/confopt.html@1.36, 2008-08-05 09:50:23+02:00, burnicki@pogo.udel.edu +0 -2
+ Bug 841: Obsolete the "dynamic" keyword.
+
+ html/ntpdc.html@1.27, 2008-08-05 09:50:23+02:00, burnicki@pogo.udel.edu +2 -3
+ Bug 841: Obsolete the "dynamic" keyword.
+
+ include/ntp.h@1.129, 2008-08-05 09:50:23+02:00, burnicki@pogo.udel.edu +0 -1
+ Bug 841: Obsolete the "dynamic" keyword.
+
+ include/ntp_request.h@1.31, 2008-08-05 09:50:23+02:00, burnicki@pogo.udel.edu +0 -1
+ Bug 841: Obsolete the "dynamic" keyword.
+
+ ntpd/ntp_config.c@1.144, 2008-08-05 09:50:23+02:00, burnicki@pogo.udel.edu +4 -2
+ [Bug 841] Obsolete the "dynamic" keyword and make deferred binding
+ to local interfaces the default.
+ Emit a warning if that keyword is used for configuration.
+
+ ntpd/ntp_intres.c@1.52, 2008-08-05 09:50:23+02:00, burnicki@pogo.udel.edu +1 -3
+ Bug 841: Obsolete the "dynamic" keyword.
+
+ ntpd/ntp_peer.c@1.100, 2008-08-05 09:50:23+02:00, burnicki@pogo.udel.edu +5 -25
+ [Bug 841] Obsolete the "dynamic" keyword and make deferred binding
+ to local interfaces the default.
+
+ ntpd/ntp_request.c@1.66, 2008-08-05 09:50:23+02:00, burnicki@pogo.udel.edu +1 -3
+ Bug 841: Obsolete the "dynamic" keyword.
+
+ ntpdc/ntpdc_ops.c@1.50, 2008-08-05 09:50:23+02:00, burnicki@pogo.udel.edu +3 -3
+ [Bug 841] Obsolete the "dynamic" keyword and make deferred binding
+ to local interfaces the default.
+
+ChangeSet@1.1532, 2008-07-22 11:41:26+02:00, burnicki@pogo.udel.edu +2 -0
+ [Bug 1038] Built-in getpass() function also prompts for password if not built with DEBUG.
+
+ ChangeLog@1.40, 2008-07-22 11:41:25+02:00, burnicki@pogo.udel.edu +1 -0
+ [Bug 1038] Built-in getpass() function also prompts for password if not built with DEBUG.
+
+ libntp/machines.c@1.19, 2008-07-22 11:41:25+02:00, burnicki@pogo.udel.edu +2 -2
+ [Bug 1038] Built-in getpass() function also prompts for password if not built with DEBUG.
+
+ChangeSet@1.1531, 2008-05-20 03:51:01-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P5_RC1
+ TAG: NTP_4_2_4P5_RC1
+
+ ntpd/ntpd-opts.c@1.72, 2008-05-20 03:50:37-04:00, stenn@whimsy.udel.edu +6 -7
+ NTP_4_2_4P5_RC1
+
+ ntpd/ntpd-opts.h@1.72, 2008-05-20 03:50:37-04:00, stenn@whimsy.udel.edu +6 -7
+ NTP_4_2_4P5_RC1
+
+ ntpd/ntpd-opts.texi@1.71, 2008-05-20 03:50:38-04:00, stenn@whimsy.udel.edu +8 -11
+ NTP_4_2_4P5_RC1
+
+ ntpd/ntpd.1@1.70, 2008-05-20 03:50:39-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P5_RC1
+
+ ntpd/ntpdsim-opts.c@1.72, 2008-05-20 03:50:40-04:00, stenn@whimsy.udel.edu +6 -7
+ NTP_4_2_4P5_RC1
+
+ ntpd/ntpdsim-opts.h@1.72, 2008-05-20 03:50:41-04:00, stenn@whimsy.udel.edu +6 -7
+ NTP_4_2_4P5_RC1
+
+ ntpd/ntpdsim-opts.texi@1.70, 2008-05-20 03:50:42-04:00, stenn@whimsy.udel.edu +3 -4
+ NTP_4_2_4P5_RC1
+
+ ntpd/ntpdsim.1@1.70, 2008-05-20 03:50:43-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P5_RC1
+
+ ntpdc/ntpdc-opts.c@1.72, 2008-05-20 03:50:44-04:00, stenn@whimsy.udel.edu +6 -7
+ NTP_4_2_4P5_RC1
+
+ ntpdc/ntpdc-opts.h@1.72, 2008-05-20 03:50:44-04:00, stenn@whimsy.udel.edu +6 -7
+ NTP_4_2_4P5_RC1
+
+ ntpdc/ntpdc-opts.texi@1.70, 2008-05-20 03:50:45-04:00, stenn@whimsy.udel.edu +5 -6
+ NTP_4_2_4P5_RC1
+
+ ntpdc/ntpdc.1@1.70, 2008-05-20 03:50:46-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5_RC1
+
+ ntpq/ntpq-opts.c@1.74, 2008-05-20 03:50:47-04:00, stenn@whimsy.udel.edu +6 -7
+ NTP_4_2_4P5_RC1
+
+ ntpq/ntpq-opts.h@1.74, 2008-05-20 03:50:47-04:00, stenn@whimsy.udel.edu +6 -7
+ NTP_4_2_4P5_RC1
+
+ ntpq/ntpq-opts.texi@1.71, 2008-05-20 03:50:48-04:00, stenn@whimsy.udel.edu +5 -6
+ NTP_4_2_4P5_RC1
+
+ ntpq/ntpq.1@1.70, 2008-05-20 03:50:49-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5_RC1
+
+ packageinfo.sh@1.98, 2008-05-20 03:50:50-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC1
+
+ sntp/sntp-opts.c@1.70, 2008-05-20 03:50:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC1
+
+ sntp/sntp-opts.h@1.70, 2008-05-20 03:50:52-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5_RC1
+
+ sntp/sntp-opts.texi@1.67, 2008-05-20 03:50:52-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P5_RC1
+
+ sntp/sntp.1@1.70, 2008-05-20 03:50:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P5_RC1
+
+ util/ntp-keygen-opts.c@1.71, 2008-05-20 03:50:54-04:00, stenn@whimsy.udel.edu +6 -7
+ NTP_4_2_4P5_RC1
+
+ util/ntp-keygen-opts.h@1.71, 2008-05-20 03:50:54-04:00, stenn@whimsy.udel.edu +6 -7
+ NTP_4_2_4P5_RC1
+
+ util/ntp-keygen-opts.texi@1.69, 2008-05-20 03:50:55-04:00, stenn@whimsy.udel.edu +7 -9
+ NTP_4_2_4P5_RC1
+
+ util/ntp-keygen.1@1.69, 2008-05-20 03:50:56-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P5_RC1
+
+ChangeSet@1.1530, 2008-05-18 05:14:37-04:00, stenn@whimsy.udel.edu +1 -0
+ Start the 4.2.4p5 release candidate cycle
+
+ packageinfo.sh@1.97, 2008-05-18 05:14:27-04:00, stenn@whimsy.udel.edu +1 -1
+ Start the 4.2.4p5 release candidate cycle
+
+ChangeSet@1.1529, 2008-04-11 18:41:57-04:00, stenn@whimsy.udel.edu +1 -0
+ Solaris _XOPEN_SOURCE updates
+
+ configure.ac@1.401, 2008-04-11 18:41:47-04:00, stenn@whimsy.udel.edu +5 -1
+ Solaris _XOPEN_SOURCE updates
+
+ChangeSet@1.1524.1.3, 2008-04-10 02:09:52-04:00, stenn@pogo.udel.edu +1 -0
+ Changelog cleanup
+
+ ChangeLog@1.37.1.2, 2008-04-10 02:08:57-04:00, stenn@pogo.udel.edu +2 -1
+
+ChangeSet@1.1524.1.2, 2008-04-08 12:20:22+02:00, burnicki@pogo.udel.edu +1 -0
+ Always sleep a little before calling doconfigure() to make sure the network is completely up.
+
+ ntpd/ntp_intres.c@1.51, 2008-04-08 12:20:21+02:00, burnicki@pogo.udel.edu +5 -6
+ Always sleep a little before calling doconfigure() to make sure the network is completely up.
+
+ChangeSet@1.1524.1.1, 2008-04-03 10:19:03-04:00, burnicki@pogo.udel.edu +5 -0
+ [Bug 987] Wake up the resolver thread/process when a new interface has become available.
+
+ ChangeLog@1.37.1.1, 2008-04-03 10:18:59-04:00, burnicki@pogo.udel.edu +1 -0
+ [Bug 987] Wake up the resolver thread/process when a new interface has become available.
+
+ include/ntpd.h@1.98, 2008-04-03 10:18:59-04:00, burnicki@pogo.udel.edu +5 -0
+ Added vars used to wake up the resolver process/thread.
+
+ ntpd/ntp_config.c@1.143, 2008-04-03 10:18:59-04:00, burnicki@pogo.udel.edu +34 -1
+ Initialize synchronization variables when the resolver process/thread is started.
+
+ ntpd/ntp_intres.c@1.50, 2008-04-03 10:18:59-04:00, burnicki@pogo.udel.edu +64 -65
+ Enable the resolver to be woken up when a new interface has become available.
+
+ ntpd/ntp_io.c@1.256, 2008-04-03 10:19:00-04:00, burnicki@pogo.udel.edu +25 -5
+ Wake up the resolver thread/process when a new interface has become available.
+
+ChangeSet@1.1527, 2008-03-24 22:12:42-04:00, mayer@pogo.udel.edu +1 -0
+ bugs 993 a d 959
+
+ ChangeLog@1.38, 2008-03-24 22:12:26-04:00, mayer@pogo.udel.edu +2 -0
+ bugs 993 a d 959
+
+ChangeSet@1.1526, 2008-03-24 21:41:55-04:00, mayer@pogo.udel.edu +1 -0
+ [Bug 959] Refclock on Windows not properly releasing recvbuffs
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.25, 2008-03-24 21:41:37-04:00, mayer@pogo.udel.edu +25 -13
+ [Bug 959] Refclock on Windows not properly releasing recvbuffs
+
+ChangeSet@1.1525, 2008-03-24 21:40:32-04:00, mayer@pogo.udel.edu +1 -0
+ [Bug 993] Windows: Fix memory leak when fetching system messages
+
+ ports/winnt/libisc/isc_strerror.c@1.5, 2008-03-24 21:40:07-04:00, mayer@pogo.udel.edu +78 -18
+ [Bug 993] Windows: Fix memory leak when fetching system messages
+
+ChangeSet@1.1520.3.5, 2008-03-22 02:12:10-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 977] Fix mismatching #ifdefs for builds without IPv6
+
+ ChangeLog@1.35.3.4, 2008-03-22 02:11:57-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 977] Fix mismatching #ifdefs for builds without IPv6
+
+ libisc/net.c@1.9, 2008-03-22 02:11:58-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 977] Fix mismatching #ifdefs for builds without IPv6
+
+ChangeSet@1.1520.3.4, 2008-03-22 02:02:36-05:00, stenn@whimsy.udel.edu +3 -0
+ Update the copyright year
+
+ ChangeLog@1.35.3.3, 2008-03-22 02:02:24-05:00, stenn@whimsy.udel.edu +8 -6
+ Update the copyright year
+
+ html/copyright.html@1.37, 2008-03-22 02:02:25-05:00, stenn@whimsy.udel.edu +1 -1
+ Update the copyright year
+
+ include/copyright.def@1.6, 2008-03-22 02:02:25-05:00, stenn@whimsy.udel.edu +1 -1
+ Update the copyright year
+
+ChangeSet@1.1520.3.3, 2008-03-22 01:58:52-05:00, stenn@whimsy.udel.edu +5 -0
+ Make autogen-generated files writable
+
+ ntpd/Makefile.am@1.54, 2008-03-22 01:57:08-05:00, stenn@whimsy.udel.edu +1 -1
+ Make autogen-generated files writable
+
+ ntpdc/Makefile.am@1.35, 2008-03-22 01:57:09-05:00, stenn@whimsy.udel.edu +1 -1
+ Make autogen-generated files writable
+
+ ntpq/Makefile.am@1.27, 2008-03-22 01:57:10-05:00, stenn@whimsy.udel.edu +1 -1
+ Make autogen-generated files writable
+
+ sntp/Makefile.am@1.22, 2008-03-22 01:57:11-05:00, stenn@whimsy.udel.edu +1 -1
+ Make autogen-generated files writable
+
+ util/Makefile.am@1.36, 2008-03-22 01:57:11-05:00, stenn@whimsy.udel.edu +1 -1
+ Make autogen-generated files writable
+
+ChangeSet@1.1520.4.1, 2008-03-16 09:15:13-04:00, burnicki@pogo.udel.edu +2 -0
+ [Bug 957] Windows only: Let command line parameters from the Windows SCM GUI override the standard parameters from the ImagePath registry key.
+
+ ChangeLog@1.35.4.1, 2008-03-16 09:15:10-04:00, burnicki@pogo.udel.edu +3 -0
+ [Bug 957] Let command line parameters from the Windows SCM GUI override the standard parameters from the ImagePath registry key.
+
+ ports/winnt/ntpd/ntservice.c@1.10, 2008-03-16 09:15:11-04:00, burnicki@pogo.udel.edu +11 -2
+ [Bug 957] Let command line parameters from the Windows SCM GUI override the standard parameters from the ImagePath registry key.
+
+ChangeSet@1.1520.3.1, 2008-03-03 11:50:50+01:00, martin@pc-martin.py.meinberg.de +2 -0
+ [Bug 532] nptdate timeout is too long if several servers are supplied
+ [Bug 698] timeBeginPeriod is called without timeEndPeriod in some NTP tools
+ [Bug 857] ntpdate debug mode adjusts system clock when it shouldn't
+ [Bug 908] ntpdate crashes sometimes
+ [Bug 982] ntpdate(and ntptimeset) buffer overrun if HAVE_POLL_H isn't set (dup of 908)
+ [Bug 997] ntpdate buffer too small and unsafe
+ Under Windows check whether NTP port in use under same conditions as under other OSs.
+ Fixed some typos and indents (tabs/spaces).
+
+ ChangeLog@1.35.3.1, 2008-03-03 11:50:49+01:00, martin@pc-martin.py.meinberg.de +10 -0
+ [Bug 532] nptdate timeout is too long if several servers are supplied
+ [Bug 698] timeBeginPeriod is called without timeEndPeriod in some NTP tools
+ [Bug 857] ntpdate debug mode adjusts system clock when it shouldn't
+ [Bug 908] ntpdate crashes sometimes
+ [Bug 982] ntpdate(and ntptimeset) buffer overrun if HAVE_POLL_H isn't set (dup of 908)
+ [Bug 997] ntpdate buffer too small and unsafe
+ Under Windows check whether NTP port in use under same conditions as under other OSs.
+ Fixed some typos and indents (tabs/spaces).
+
+ ntpdate/ntpdate.c@1.62, 2008-03-03 11:50:49+01:00, martin@pc-martin.py.meinberg.de +101 -82
+ [Bug 532] nptdate timeout is too long if several servers are supplied
+ [Bug 698] timeBeginPeriod is called without timeEndPeriod in some NTP tools
+ [Bug 857] ntpdate debug mode adjusts system clock when it shouldn't
+ [Bug 908] ntpdate crashes sometimes
+ [Bug 982] ntpdate(and ntptimeset) buffer overrun if HAVE_POLL_H isn't set (dup of 908)
+ [Bug 997] ntpdate buffer too small and unsafe
+ Under Windows check whether NTP port in use under same conditions as under other OSs.
+ Fixed some typos and indents (tabs/spaces).
+
+ChangeSet@1.1520.2.7, 2008-02-20 12:13:24+01:00, martin@pc-martin4. +2 -0
+ [Bug 909] Define int32_t for Windows (backport from ntp-dev)
+
+ ChangeLog@1.35.2.3, 2008-02-20 12:13:24+01:00, martin@pc-martin4. +1 -0
+ [Bug 909] Define int32_t for Windows (backport from ntp-dev)
+
+ ports/winnt/include/config.h@1.47, 2008-02-20 12:13:24+01:00, martin@pc-martin4. +2 -0
+ [Bug 909] Define int32_t for Windows (backport from ntp-dev)
+
+ChangeSet@1.1520.2.6, 2008-02-19 11:08:55-05:00, burnicki@pogo.udel.edu +1 -0
+ Fixed indentation.
+
+ ntpd/ntp_io.c@1.255, 2008-02-19 11:08:52-05:00, burnicki@pogo.udel.edu +1 -1
+ Fixed indentation.
+
+ChangeSet@1.1520.2.5, 2008-02-18 09:30:34-05:00, burnicki@pogo.udel.edu +1 -0
+ Use new get_free_recv_buffer_alloc().
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.24, 2008-02-18 09:30:31-05:00, burnicki@pogo.udel.edu +4 -4
+ Use new get_free_recv_buffer_alloc().
+
+ChangeSet@1.1520.2.4, 2008-02-17 17:48:29+00:00, kardel@pogo.udel.edu +1 -0
+ recvbuff.c:
+ Bug 1000: add some pico optimizations
+
+ libntp/recvbuff.c@1.29, 2008-02-17 17:42:21+00:00, kardel@pogo.udel.edu +5 -8
+ Bug 1000: add some pico optimizations
+
+ChangeSet@1.1520.2.3, 2008-02-17 08:38:07+00:00, kardel@pogo.udel.edu +2 -0
+ ntpd.c:
+ Bug 1000: avoid timer() starvation during high load conditions
+ ChangeLog:
+ Bug 1000: additionally fix timer() starvation during high load
+
+ ChangeLog@1.35.2.2, 2008-02-17 08:37:20+00:00, kardel@pogo.udel.edu +1 -0
+ Bug 1000: additionally fix timer() starvation during high load
+
+ ntpd/ntpd.c@1.85, 2008-02-17 08:34:13+00:00, kardel@pogo.udel.edu +11 -0
+ Bug 1000: avoid timer() starvation during high load conditions
+
+ChangeSet@1.1520.2.2, 2008-02-17 08:10:59+00:00, kardel@pogo.udel.edu +1 -0
+ recvbuff.c:
+ Bug 1000: replenish when having expeirenced empty free lists
+
+ libntp/recvbuff.c@1.28, 2008-02-17 08:09:37+00:00, kardel@pogo.udel.edu +1 -1
+ Bug 1000: replenish when having expeirenced empty free lists
+
+ChangeSet@1.1520.2.1, 2008-02-17 07:31:29+00:00, kardel@pogo.udel.edu +4 -0
+ recvbuff.c, recvbuff.h, ntp_io.c, ChangeLog:
+ Bug 1000: Potentially insufficient number of receive buffers at startup
+
+ ChangeLog@1.35.2.1, 2008-02-17 07:29:23+00:00, kardel@pogo.udel.edu +3 -0
+ Bug 1000: Potentially insufficient number of receive buffers at startup
+
+ include/recvbuff.h@1.13, 2008-02-17 07:30:35+00:00, kardel@pogo.udel.edu +2 -1
+ Bug 1000: Potentially insufficient number of receive buffers at startup
+
+ libntp/recvbuff.c@1.27, 2008-02-17 07:30:09+00:00, kardel@pogo.udel.edu +30 -11
+ Bug 1000: Potentially insufficient number of receive buffers at startup
+
+ ntpd/ntp_io.c@1.254, 2008-02-17 07:30:50+00:00, kardel@pogo.udel.edu +6 -2
+ Bug 1000: Potentially insufficient number of receive buffers at startup
+
+ChangeSet@1.1520.1.1, 2008-01-26 06:43:33+00:00, kardel@pogo.udel.edu +3 -0
+ ntpdbase-opts.def, ChangeLog, cmd_args.c:
+ remove minimum interface update interval restriction
+
+ ChangeLog@1.35.1.1, 2008-01-26 06:42:11+00:00, kardel@pogo.udel.edu +2 -0
+ remove minimum interface update interval restriction
+
+ ntpd/cmd_args.c@1.48, 2008-01-26 06:42:47+00:00, kardel@pogo.udel.edu +2 -2
+ remove minimum interface update interval restriction
+
+ ntpd/ntpdbase-opts.def@1.11, 2008-01-26 06:43:10+00:00, kardel@pogo.udel.edu +1 -1
+ remove minimum interface update interval restriction
+
+ChangeSet@1.1523, 2007-11-01 03:52:00-04:00, clemens@pogo.udel.edu +1 -0
+ * Negative-sawtooth not applied correctly for oncore 12 channel
+ receiver. Fixed.
+ * Startup code for original LinuxPPS removed. LinuxPPS now
+ conforms to the PPSAPI.
+
+ ChangeLog@1.36, 2007-11-01 03:51:58-04:00, clemens@pogo.udel.edu +4 -0
+ * Negative-sawtooth not applied correctly for oncore 12 channel
+ receiver. Fixed.
+ * Startup code for original LinuxPPS removed. LinuxPPS now
+ conforms to the PPSAPI.
+
+ChangeSet@1.1522, 2007-11-01 03:29:24-04:00, clemens@pogo.udel.edu +1 -0
+ The original version of LinuxPPS did not comply with the PPSAPI and required
+ some changes to the startup code in refclock_oncore.c . The current version
+ complies, and these changes can be removed.
+
+ ntpd/refclock_oncore.c@1.62, 2007-11-01 03:29:21-04:00, clemens@pogo.udel.edu +1 -56
+ The original version of LinuxPPS did not comply with the PPSAPI and required
+ some changes to the startup code in refclock_oncore.c . The current version
+ complies, and these changes can be removed.
+
+ChangeSet@1.1521, 2007-11-01 02:16:36-04:00, clemens@pogo.udel.edu +1 -0
+ The oncore hardware provides a 'negative saw-tooth' the offset of the PPS signal
+ which is on the zero crossing of its internal clock, from its true value. the
+ refclock_oncore.c driver applies this difference to correct the time of the
+ provided timestamp. This value was being applied correctly for the 6 and 8 channel
+ receivers, but not for the 12 channel. This has been corrected.
+
+ ntpd/refclock_oncore.c@1.61, 2007-11-01 02:16:33-04:00, clemens@pogo.udel.edu +2 -2
+ The oncore hardware provides a 'negative saw-tooth' the offset of the PPS signal
+ which is on the zero crossing of its internal clock, from its true value. the
+ refclock_oncore.c driver applies this difference to correct the time of the
+ provided timestamp. This value was being applied correctly for the 6 and 8 channel
+ receivers, but not for the 12 channel. This has been corrected.
+
+ChangeSet@1.1520, 2007-09-10 20:40:19-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P4
+ TAG: NTP_4_2_4P4
+
+ ntpd/ntpd-opts.c@1.71, 2007-09-10 20:39:55-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ ntpd/ntpd-opts.h@1.71, 2007-09-10 20:39:56-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4
+
+ ntpd/ntpd-opts.texi@1.70, 2007-09-10 20:39:57-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P4
+
+ ntpd/ntpd.1@1.69, 2007-09-10 20:39:57-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ ntpd/ntpdsim-opts.c@1.71, 2007-09-10 20:39:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ ntpd/ntpdsim-opts.h@1.71, 2007-09-10 20:39:58-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4
+
+ ntpd/ntpdsim-opts.texi@1.69, 2007-09-10 20:40:00-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P4
+
+ ntpd/ntpdsim.1@1.69, 2007-09-10 20:40:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ ntpdc/ntpdc-opts.c@1.71, 2007-09-10 20:40:01-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ ntpdc/ntpdc-opts.h@1.71, 2007-09-10 20:40:02-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4
+
+ ntpdc/ntpdc-opts.texi@1.69, 2007-09-10 20:40:03-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P4
+
+ ntpdc/ntpdc.1@1.69, 2007-09-10 20:40:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ ntpq/ntpq-opts.c@1.73, 2007-09-10 20:40:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ ntpq/ntpq-opts.h@1.73, 2007-09-10 20:40:05-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4
+
+ ntpq/ntpq-opts.texi@1.70, 2007-09-10 20:40:06-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P4
+
+ ntpq/ntpq.1@1.69, 2007-09-10 20:40:06-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ packageinfo.sh@1.96, 2007-09-10 20:40:07-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ sntp/sntp-opts.c@1.69, 2007-09-10 20:40:08-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ sntp/sntp-opts.h@1.69, 2007-09-10 20:40:08-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4
+
+ sntp/sntp-opts.texi@1.66, 2007-09-10 20:40:09-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P4
+
+ sntp/sntp.1@1.69, 2007-09-10 20:40:10-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ util/ntp-keygen-opts.c@1.70, 2007-09-10 20:40:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ util/ntp-keygen-opts.h@1.70, 2007-09-10 20:40:12-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4
+
+ util/ntp-keygen-opts.texi@1.68, 2007-09-10 20:40:13-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P4
+
+ util/ntp-keygen.1@1.68, 2007-09-10 20:40:14-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4
+
+ChangeSet@1.1519, 2007-09-10 16:56:09-04:00, stenn@whimsy.udel.edu +3 -0
+ Release 4.2.4p4
+
+ ChangeLog@1.35, 2007-09-10 16:55:51-04:00, stenn@whimsy.udel.edu +3 -0
+ Release 4.2.4p4
+
+ NEWS@1.98, 2007-09-10 16:55:54-04:00, stenn@whimsy.udel.edu +11 -0
+ Release 4.2.4p4
+
+ packageinfo.sh@1.95, 2007-09-10 16:55:58-04:00, stenn@whimsy.udel.edu +1 -1
+ Release 4.2.4p4
+
+ChangeSet@1.1518, 2007-09-10 01:57:20-04:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 902] Fix problems with the -6 flag
+
+ ChangeLog@1.34, 2007-09-10 01:57:02-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 902] Fix problems with the -6 flag
+
+ libopts/save.c@1.2, 2007-09-10 01:57:02-04:00, stenn@whimsy.udel.edu +11 -2
+ [Bug 902] Fix problems with the -6 flag
+
+ sntp/libopts/save.c@1.2, 2007-09-10 01:57:03-04:00, stenn@whimsy.udel.edu +11 -2
+ [Bug 902] Fix problems with the -6 flag
+
+ChangeSet@1.1517, 2007-08-28 15:34:55-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P4_RC2
+ TAG: NTP_4_2_4P4_RC2
+
+ ntpd/ntpd-opts.c@1.70, 2007-08-28 15:34:28-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P4_RC2
+
+ ntpd/ntpd-opts.h@1.70, 2007-08-28 15:34:29-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P4_RC2
+
+ ntpd/ntpd-opts.texi@1.69, 2007-08-28 15:34:31-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC2
+
+ ntpd/ntpd.1@1.68, 2007-08-28 15:34:32-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC2
+
+ ntpd/ntpdsim-opts.c@1.70, 2007-08-28 15:34:32-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P4_RC2
+
+ ntpd/ntpdsim-opts.h@1.70, 2007-08-28 15:34:33-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P4_RC2
+
+ ntpd/ntpdsim-opts.texi@1.68, 2007-08-28 15:34:34-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P4_RC2
+
+ ntpd/ntpdsim.1@1.68, 2007-08-28 15:34:34-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC2
+
+ ntpdc/ntpdc-opts.c@1.70, 2007-08-28 15:34:35-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P4_RC2
+
+ ntpdc/ntpdc-opts.h@1.70, 2007-08-28 15:34:36-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P4_RC2
+
+ ntpdc/ntpdc-opts.texi@1.68, 2007-08-28 15:34:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC2
+
+ ntpdc/ntpdc.1@1.68, 2007-08-28 15:34:38-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC2
+
+ ntpq/ntpq-opts.c@1.72, 2007-08-28 15:34:38-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P4_RC2
+
+ ntpq/ntpq-opts.h@1.72, 2007-08-28 15:34:39-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P4_RC2
+
+ ntpq/ntpq-opts.texi@1.69, 2007-08-28 15:34:40-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC2
+
+ ntpq/ntpq.1@1.68, 2007-08-28 15:34:41-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC2
+
+ packageinfo.sh@1.94, 2007-08-28 15:34:41-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P4_RC2
+
+ sntp/sntp-opts.c@1.68, 2007-08-28 15:34:42-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC2
+
+ sntp/sntp-opts.h@1.68, 2007-08-28 15:34:43-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC2
+
+ sntp/sntp-opts.texi@1.65, 2007-08-28 15:34:44-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P4_RC2
+
+ sntp/sntp.1@1.68, 2007-08-28 15:34:45-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC2
+
+ util/ntp-keygen-opts.c@1.69, 2007-08-28 15:34:45-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P4_RC2
+
+ util/ntp-keygen-opts.h@1.69, 2007-08-28 15:34:46-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P4_RC2
+
+ util/ntp-keygen-opts.texi@1.67, 2007-08-28 15:34:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC2
+
+ util/ntp-keygen.1@1.67, 2007-08-28 15:34:48-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC2
+
+ChangeSet@1.1516, 2007-08-27 22:38:57-04:00, stenn@whimsy.udel.edu +2 -0
+ Updated include/copyright.def (owner and year)
+
+ ChangeLog@1.33, 2007-08-27 22:38:46-04:00, stenn@whimsy.udel.edu +1 -0
+ Updated include/copyright.def (owner and year)
+
+ include/copyright.def@1.5, 2007-08-27 22:38:47-04:00, stenn@whimsy.udel.edu +2 -2
+ Updated include/copyright.def (owner and year)
+
+ChangeSet@1.1515, 2007-08-19 05:26:13-04:00, dunlop@pogo.udel.edu +2 -0
+ ntpdc_ops.c, ChangeLog:
+ [BUG 881] Corrected display of pll offset on 64bit systems.
+ [BUG 886] Corrected sign extension of il->compliance on 64 bit systems
+ [BUG 878] Avoid ntpdc use of refid value as unterminated string.
+
+ ChangeLog@1.32, 2007-08-19 05:20:42-04:00, dunlop@pogo.udel.edu +1 -0
+ [Bug 878] Avoid ntpdc use of refid value as unterminated string.
+
+ ChangeLog@1.31, 2007-08-19 05:13:18-04:00, dunlop@pogo.udel.edu +1 -0
+ [Bug 881] Corrected display of pll offset on 64bit systems.
+
+ ChangeLog@1.30, 2007-08-19 05:01:14-04:00, dunlop@pogo.udel.edu +1 -0
+ [BUG 886] Corrected sign extension of il->compliance on 64 bit systems
+
+ ntpdc/ntpdc_ops.c@1.49, 2007-08-19 05:20:34-04:00, dunlop@pogo.udel.edu +1 -3
+ [Bug 878] Avoid ntpdc use of refid value as unterminated string.
+
+ ntpdc/ntpdc_ops.c@1.48, 2007-08-19 05:12:52-04:00, dunlop@pogo.udel.edu +1 -1
+ [Bug 881] Corrected display of pll offset on 64bit systems.
+
+ ntpdc/ntpdc_ops.c@1.47, 2007-08-19 04:59:48-04:00, dunlop@pogo.udel.edu +2 -2
+ [BUG 886] Corrected sign extension of il->compliance on 64 bit systems
+
+ChangeSet@1.1514, 2007-08-18 17:11:19-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P4_RC1
+ TAG: NTP_4_2_4P4_RC1
+
+ ntpd/ntpd-opts.c@1.69, 2007-08-18 17:10:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ ntpd/ntpd-opts.h@1.69, 2007-08-18 17:10:52-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC1
+
+ ntpd/ntpd-opts.texi@1.68, 2007-08-18 17:10:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ ntpd/ntpd.1@1.67, 2007-08-18 17:10:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ ntpd/ntpdsim-opts.c@1.69, 2007-08-18 17:10:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ ntpd/ntpdsim-opts.h@1.69, 2007-08-18 17:10:54-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC1
+
+ ntpd/ntpdsim-opts.texi@1.67, 2007-08-18 17:10:56-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P4_RC1
+
+ ntpd/ntpdsim.1@1.67, 2007-08-18 17:10:56-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ ntpdc/ntpdc-opts.c@1.69, 2007-08-18 17:10:57-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ ntpdc/ntpdc-opts.h@1.69, 2007-08-18 17:10:57-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC1
+
+ ntpdc/ntpdc-opts.texi@1.67, 2007-08-18 17:10:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ ntpdc/ntpdc.1@1.67, 2007-08-18 17:10:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ ntpq/ntpq-opts.c@1.71, 2007-08-18 17:10:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ ntpq/ntpq-opts.h@1.71, 2007-08-18 17:11:01-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC1
+
+ ntpq/ntpq-opts.texi@1.68, 2007-08-18 17:11:02-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ ntpq/ntpq.1@1.67, 2007-08-18 17:11:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ packageinfo.sh@1.93, 2007-08-18 17:11:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ sntp/sntp-opts.c@1.67, 2007-08-18 17:11:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ sntp/sntp-opts.h@1.67, 2007-08-18 17:11:05-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC1
+
+ sntp/sntp-opts.texi@1.64, 2007-08-18 17:11:07-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P4_RC1
+
+ sntp/sntp.1@1.67, 2007-08-18 17:11:08-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ util/ntp-keygen-opts.c@1.68, 2007-08-18 17:11:08-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ util/ntp-keygen-opts.h@1.68, 2007-08-18 17:11:10-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P4_RC1
+
+ util/ntp-keygen-opts.texi@1.66, 2007-08-18 17:11:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ util/ntp-keygen.1@1.66, 2007-08-18 17:11:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P4_RC1
+
+ChangeSet@1.1513, 2007-08-18 16:16:22-04:00, stenn@whimsy.udel.edu +1 -0
+ 4.2.4p4-RC
+
+ packageinfo.sh@1.92, 2007-08-18 16:16:06-04:00, stenn@whimsy.udel.edu +1 -1
+ 4.2.4p4-RC
+
+ChangeSet@1.1512, 2007-08-18 12:59:45+00:00, kardel@pogo.udel.edu +2 -0
+ ntp_restrict.c:
+ Bug 885: clarify to allow tools to pick up
+ invariants easier.
+ Use NULL instead of 0 with pointers.
+ ChangeLog:
+ document ntp_restrict.c change
+
+ ChangeLog@1.29, 2007-08-18 12:59:05+00:00, kardel@pogo.udel.edu +1 -0
+ document ntp_restrict.c change
+
+ ntpd/ntp_restrict.c@1.23, 2007-08-18 12:56:40+00:00, kardel@pogo.udel.edu +21 -21
+ Bug 885: clarify to allow tools to pick up
+ invariants easier.
+ Use NULL instead of 0 with pointers.
+
+ChangeSet@1.1511, 2007-08-18 12:53:35+00:00, kardel@pogo.udel.edu +2 -0
+ recvbuff.c:
+ Bug 889: avoid malloc() interrupted by SIGIO risk
+ ChangeLog:
+ document Bug 889
+
+ ChangeLog@1.28, 2007-08-18 12:52:19+00:00, kardel@pogo.udel.edu +1 -0
+ document Bug 889
+
+ libntp/recvbuff.c@1.26, 2007-08-18 12:49:27+00:00, kardel@pogo.udel.edu +28 -21
+ Bug 889: avoid malloc() interrupted by SIGIO risk
+
+ChangeSet@1.1510, 2007-08-18 09:51:41+00:00, kardel@pogo.udel.edu +1 -0
+ cmd_args.c:
+ Bug 885: fix comparison
+
+ ntpd/cmd_args.c@1.47, 2007-08-18 09:50:28+00:00, kardel@pogo.udel.edu +1 -1
+ Bug 885: fix comparison
+
+ChangeSet@1.1502.1.1, 2007-08-17 05:28:07-04:00, stenn@pogo.udel.edu +1 -0
+ Use autoconf-2.59 and automake-1.9 for building 4.2.4
+
+ bootstrap@1.19, 2007-08-17 05:27:51-04:00, stenn@pogo.udel.edu +18 -2
+ Use autoconf-2.59 and automake-1.9 for building 4.2.4
+
+ChangeSet@1.1508, 2007-08-11 17:32:22+00:00, kardel@pogo.udel.edu +1 -0
+ ChangeLog:
+ document refclock_parse.c fix
+
+ ChangeLog@1.27, 2007-08-11 17:31:30+00:00, kardel@pogo.udel.edu +1 -0
+ document refclock_parse.c fix
+
+ChangeSet@1.1507, 2007-08-11 17:30:42+00:00, kardel@pogo.udel.edu +4 -0
+ ChangeLog:
+ document Bug 885
+ ntp_io.c:
+ Bug 885: use emalloc() to get a message at the end of the memory
+ cmd_args.c:
+ Bug 885: unsigned types cannot be less than 0
+ default_ai_family is a short
+ ntp_config.c:
+ Bug 885: lose trailing , from enum list
+
+ ChangeLog@1.26, 2007-08-11 17:30:24+00:00, kardel@pogo.udel.edu +4 -0
+ document Bug 885
+
+ ntpd/cmd_args.c@1.46, 2007-08-11 17:19:51+00:00, kardel@pogo.udel.edu +2 -2
+ Bug 885: unsigned types cannot be less than 0
+ default_ai_family is a short
+
+ ntpd/ntp_config.c@1.142, 2007-08-11 17:20:52+00:00, kardel@pogo.udel.edu +1 -1
+ Bug 885: lose trailing , from enum list
+
+ ntpd/ntp_io.c@1.253, 2007-08-11 17:21:17+00:00, kardel@pogo.udel.edu +1 -1
+ Bug 885: use emalloc() to get a message at the end of the memory
+
+ChangeSet@1.1506, 2007-08-11 17:19:45+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_parse.c:
+ remove io binding before io_closeclock() closes the file descriptor
+
+ ntpd/refclock_parse.c@1.48, 2007-08-11 17:17:16+00:00, kardel@pogo.udel.edu +25 -10
+ remove io binding before io_closeclock() closes the file descriptor
+
+ChangeSet@1.1505, 2007-08-09 20:30:55+00:00, kardel@pogo.udel.edu +1 -0
+ ChangeLog:
+ [Bug 882] allow loopback interfaces to share addresses with other interfaces.
+ [Bug 884] don't access recv buffers after having them passed to the free list.
+
+ ChangeLog@1.25, 2007-08-09 20:30:26+00:00, kardel@pogo.udel.edu +3 -0
+ [Bug 882] allow loopback interfaces to share addresses with other interfaces.
+ [Bug 884] don't access recv buffers after having them passed to the free list.
+
+ChangeSet@1.1504, 2007-08-09 19:05:17+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ Bug 884: no access to recv buffers after they are returned to free pool
+
+ ntpd/ntp_io.c@1.252, 2007-08-09 19:01:30+00:00, kardel@pogo.udel.edu +9 -7
+ Bug 884: no access to recv buffers after they are returned to free pool
+
+ChangeSet@1.1503, 2007-08-07 18:14:16+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ Bug 882: loopback interfaces may share IP addresses with other interfaces
+ thus allow addresses also found on loopback interfaces to be used
+ as local address.
+
+ ntpd/ntp_io.c@1.251, 2007-08-07 18:09:50+00:00, kardel@pogo.udel.edu +1 -1
+ Bug 882: loopback interfaces may share IP addresses with other interfaces
+ thus allow addresses also found on loopback interfaces to be used
+ as local address.
+
+ChangeSet@1.1502, 2007-06-29 15:46:00-04:00, stenn@deacon.udel.edu +25 -0
+ NTP_4_2_4P3
+ TAG: NTP_4_2_4P3
+
+ ntpd/ntpd-opts.c@1.68, 2007-06-29 15:45:58-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ ntpd/ntpd-opts.h@1.68, 2007-06-29 15:45:58-04:00, stenn@deacon.udel.edu +3 -3
+ NTP_4_2_4P3
+
+ ntpd/ntpd-opts.texi@1.67, 2007-06-29 15:45:58-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ ntpd/ntpd.1@1.66, 2007-06-29 15:45:58-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ ntpd/ntpdsim-opts.c@1.68, 2007-06-29 15:45:58-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ ntpd/ntpdsim-opts.h@1.68, 2007-06-29 15:45:58-04:00, stenn@deacon.udel.edu +3 -3
+ NTP_4_2_4P3
+
+ ntpd/ntpdsim-opts.texi@1.66, 2007-06-29 15:45:58-04:00, stenn@deacon.udel.edu +1 -1
+ NTP_4_2_4P3
+
+ ntpd/ntpdsim.1@1.66, 2007-06-29 15:45:58-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ ntpdc/ntpdc-opts.c@1.68, 2007-06-29 15:45:58-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ ntpdc/ntpdc-opts.h@1.68, 2007-06-29 15:45:58-04:00, stenn@deacon.udel.edu +3 -3
+ NTP_4_2_4P3
+
+ ntpdc/ntpdc-opts.texi@1.66, 2007-06-29 15:45:58-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ ntpdc/ntpdc.1@1.66, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ ntpq/ntpq-opts.c@1.70, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ ntpq/ntpq-opts.h@1.70, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +3 -3
+ NTP_4_2_4P3
+
+ ntpq/ntpq-opts.texi@1.67, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ ntpq/ntpq.1@1.66, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ packageinfo.sh@1.91, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ sntp/sntp-opts.c@1.66, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ sntp/sntp-opts.h@1.66, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +3 -3
+ NTP_4_2_4P3
+
+ sntp/sntp-opts.texi@1.63, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +1 -1
+ NTP_4_2_4P3
+
+ sntp/sntp.1@1.66, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ util/ntp-keygen-opts.c@1.67, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ util/ntp-keygen-opts.h@1.67, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +3 -3
+ NTP_4_2_4P3
+
+ util/ntp-keygen-opts.texi@1.65, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ util/ntp-keygen.1@1.65, 2007-06-29 15:45:59-04:00, stenn@deacon.udel.edu +2 -2
+ NTP_4_2_4P3
+
+ChangeSet@1.1501, 2007-06-29 15:31:21-04:00, stenn@deacon.udel.edu +3 -0
+ Release 4.2.4p3
+
+ ChangeLog@1.24, 2007-06-29 15:30:58-04:00, stenn@deacon.udel.edu +1 -1
+ Release 4.2.4p3
+
+ NEWS@1.97, 2007-06-29 15:30:58-04:00, stenn@deacon.udel.edu +1 -1
+ Release 4.2.4p3
+
+ packageinfo.sh@1.90, 2007-06-29 15:30:58-04:00, stenn@deacon.udel.edu +1 -1
+ Release 4.2.4p3
+
+ChangeSet@1.1500, 2007-06-29 19:03:39+00:00, stenn@ntp1.isc.org +2 -0
+ Cosmetic reformatting
+
+ ChangeLog@1.23, 2007-06-29 19:03:32+00:00, stenn@ntp1.isc.org +70 -16
+ Cosmetic reformatting
+
+ NEWS@1.96, 2007-06-29 19:03:32+00:00, stenn@ntp1.isc.org +4 -0
+ Cosmetic reformatting
+
+ChangeSet@1.1499, 2007-06-27 07:46:44-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P3_RC1
+ TAG: NTP_4_2_4P3_RC1
+
+ ntpd/ntpd-opts.c@1.67, 2007-06-27 07:46:22-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ ntpd/ntpd-opts.h@1.67, 2007-06-27 07:46:23-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P3_RC1
+
+ ntpd/ntpd-opts.texi@1.66, 2007-06-27 07:46:24-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ ntpd/ntpd.1@1.65, 2007-06-27 07:46:24-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ ntpd/ntpdsim-opts.c@1.67, 2007-06-27 07:46:25-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ ntpd/ntpdsim-opts.h@1.67, 2007-06-27 07:46:26-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P3_RC1
+
+ ntpd/ntpdsim-opts.texi@1.65, 2007-06-27 07:46:27-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P3_RC1
+
+ ntpd/ntpdsim.1@1.65, 2007-06-27 07:46:28-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ ntpdc/ntpdc-opts.c@1.67, 2007-06-27 07:46:29-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ ntpdc/ntpdc-opts.h@1.67, 2007-06-27 07:46:29-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P3_RC1
+
+ ntpdc/ntpdc-opts.texi@1.65, 2007-06-27 07:46:30-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ ntpdc/ntpdc.1@1.65, 2007-06-27 07:46:31-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ ntpq/ntpq-opts.c@1.69, 2007-06-27 07:46:31-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ ntpq/ntpq-opts.h@1.69, 2007-06-27 07:46:32-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P3_RC1
+
+ ntpq/ntpq-opts.texi@1.66, 2007-06-27 07:46:33-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ ntpq/ntpq.1@1.65, 2007-06-27 07:46:34-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ packageinfo.sh@1.89, 2007-06-27 07:46:34-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ sntp/sntp-opts.c@1.65, 2007-06-27 07:46:35-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ sntp/sntp-opts.h@1.65, 2007-06-27 07:46:36-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P3_RC1
+
+ sntp/sntp-opts.texi@1.62, 2007-06-27 07:46:36-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P3_RC1
+
+ sntp/sntp.1@1.65, 2007-06-27 07:46:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ util/ntp-keygen-opts.c@1.66, 2007-06-27 07:46:38-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ util/ntp-keygen-opts.h@1.66, 2007-06-27 07:46:39-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P3_RC1
+
+ util/ntp-keygen-opts.texi@1.64, 2007-06-27 07:46:40-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ util/ntp-keygen.1@1.64, 2007-06-27 07:46:40-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P3_RC1
+
+ChangeSet@1.1498, 2007-06-27 01:42:30-04:00, stenn@whimsy.udel.edu +3 -0
+ First RC for 4.2.4p3
+
+ ChangeLog@1.22, 2007-06-27 01:41:43-04:00, stenn@whimsy.udel.edu +2 -1
+ First RC for 4.2.4p3
+
+ NEWS@1.95, 2007-06-27 01:41:46-04:00, stenn@whimsy.udel.edu +8 -0
+ First RC for 4.2.4p3
+
+ packageinfo.sh@1.88, 2007-06-27 01:41:59-04:00, stenn@whimsy.udel.edu +1 -1
+ First RC for 4.2.4p3
+
+ChangeSet@1.1497, 2007-06-23 08:47:07-04:00, mayer@pogo.udel.edu +1 -0
+ Added Bug #863
+
+ ChangeLog@1.21, 2007-06-23 08:46:51-04:00, mayer@pogo.udel.edu +2 -0
+ Added Bug #863
+
+ChangeSet@1.1492.1.1, 2007-06-23 08:42:58-04:00, mayer@pogo.udel.edu +3 -0
+ Bug #863 Unable to stop ntpd because the handle index changed
+
+ ports/winnt/include/ntp_iocompletionport.h@1.13, 2007-06-23 08:42:41-04:00, mayer@pogo.udel.edu +3 -0
+ Bug #863 Unable to stop ntpd because the handle index changed
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.23, 2007-06-23 08:42:41-04:00, mayer@pogo.udel.edu +15 -1
+ Bug #863 Unable to stop ntpd because the handle index changed
+
+ ports/winnt/ntpd/ntservice.c@1.9, 2007-06-23 08:42:41-04:00, mayer@pogo.udel.edu +9 -5
+ Bug #863 Unable to stop ntpd because the handle index changed
+
+ChangeSet@1.1495, 2007-06-20 07:45:57-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P2
+ TAG: NTP_4_2_4P2
+
+ ntpd/ntpd-opts.c@1.66, 2007-06-20 07:45:33-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ ntpd/ntpd-opts.h@1.66, 2007-06-20 07:45:33-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2
+
+ ntpd/ntpd-opts.texi@1.65, 2007-06-20 07:45:34-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P2
+
+ ntpd/ntpd.1@1.64, 2007-06-20 07:45:35-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ ntpd/ntpdsim-opts.c@1.66, 2007-06-20 07:45:35-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ ntpd/ntpdsim-opts.h@1.66, 2007-06-20 07:45:36-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2
+
+ ntpd/ntpdsim-opts.texi@1.64, 2007-06-20 07:45:37-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2
+
+ ntpd/ntpdsim.1@1.64, 2007-06-20 07:45:38-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ ntpdc/ntpdc-opts.c@1.66, 2007-06-20 07:45:39-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ ntpdc/ntpdc-opts.h@1.66, 2007-06-20 07:45:39-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2
+
+ ntpdc/ntpdc-opts.texi@1.64, 2007-06-20 07:45:40-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ ntpdc/ntpdc.1@1.64, 2007-06-20 07:45:41-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ ntpq/ntpq-opts.c@1.68, 2007-06-20 07:45:42-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ ntpq/ntpq-opts.h@1.68, 2007-06-20 07:45:43-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2
+
+ ntpq/ntpq-opts.texi@1.65, 2007-06-20 07:45:43-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ ntpq/ntpq.1@1.64, 2007-06-20 07:45:45-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ packageinfo.sh@1.87, 2007-06-20 07:45:45-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ sntp/sntp-opts.c@1.64, 2007-06-20 07:45:46-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ sntp/sntp-opts.h@1.64, 2007-06-20 07:45:47-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2
+
+ sntp/sntp-opts.texi@1.61, 2007-06-20 07:45:47-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2
+
+ sntp/sntp.1@1.64, 2007-06-20 07:45:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ util/ntp-keygen-opts.c@1.65, 2007-06-20 07:45:49-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ util/ntp-keygen-opts.h@1.65, 2007-06-20 07:45:50-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2
+
+ util/ntp-keygen-opts.texi@1.63, 2007-06-20 07:45:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ util/ntp-keygen.1@1.63, 2007-06-20 07:45:52-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2
+
+ChangeSet@1.1494, 2007-06-20 04:07:34-04:00, stenn@deacon.udel.edu +3 -0
+ 4.2.4p2
+
+ ChangeLog@1.20, 2007-06-20 04:07:25-04:00, stenn@deacon.udel.edu +1 -0
+ 4.2.4p2
+
+ NEWS@1.94, 2007-06-20 04:07:25-04:00, stenn@deacon.udel.edu +8 -13
+ 4.2.4p2
+
+ packageinfo.sh@1.86, 2007-06-20 04:07:26-04:00, stenn@deacon.udel.edu +1 -1
+ 4.2.4p2
+
+ChangeSet@1.1493, 2007-06-10 07:58:59-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P2_RC6
+ TAG: NTP_4_2_4P2_RC6
+
+ ntpd/ntpd-opts.c@1.65, 2007-06-10 07:58:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ ntpd/ntpd-opts.h@1.65, 2007-06-10 07:58:37-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC6
+
+ ntpd/ntpd-opts.texi@1.64, 2007-06-10 07:58:38-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC6
+
+ ntpd/ntpd.1@1.63, 2007-06-10 07:58:39-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ ntpd/ntpdsim-opts.c@1.65, 2007-06-10 07:58:40-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ ntpd/ntpdsim-opts.h@1.65, 2007-06-10 07:58:41-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC6
+
+ ntpd/ntpdsim-opts.texi@1.63, 2007-06-10 07:58:41-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC6
+
+ ntpd/ntpdsim.1@1.63, 2007-06-10 07:58:42-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ ntpdc/ntpdc-opts.c@1.65, 2007-06-10 07:58:42-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ ntpdc/ntpdc-opts.h@1.65, 2007-06-10 07:58:43-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC6
+
+ ntpdc/ntpdc-opts.texi@1.63, 2007-06-10 07:58:44-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC6
+
+ ntpdc/ntpdc.1@1.63, 2007-06-10 07:58:44-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ ntpq/ntpq-opts.c@1.67, 2007-06-10 07:58:45-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ ntpq/ntpq-opts.h@1.67, 2007-06-10 07:58:46-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC6
+
+ ntpq/ntpq-opts.texi@1.64, 2007-06-10 07:58:46-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC6
+
+ ntpq/ntpq.1@1.63, 2007-06-10 07:58:47-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ packageinfo.sh@1.85, 2007-06-10 07:58:48-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC6
+
+ sntp/sntp-opts.c@1.63, 2007-06-10 07:58:49-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ sntp/sntp-opts.h@1.63, 2007-06-10 07:58:50-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC6
+
+ sntp/sntp-opts.texi@1.60, 2007-06-10 07:58:50-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC6
+
+ sntp/sntp.1@1.63, 2007-06-10 07:58:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ util/ntp-keygen-opts.c@1.64, 2007-06-10 07:58:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ util/ntp-keygen-opts.h@1.64, 2007-06-10 07:58:52-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC6
+
+ util/ntp-keygen-opts.texi@1.62, 2007-06-10 07:58:53-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC6
+
+ util/ntp-keygen.1@1.62, 2007-06-10 07:58:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC6
+
+ChangeSet@1.1492, 2007-06-07 09:28:16-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #854 Broadcast address was not correctly set for interface addresses
+
+ ChangeLog@1.19, 2007-06-07 09:28:05-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #854 Broadcast address was not correctly set for interface addresses
+
+ChangeSet@1.1491, 2007-06-07 09:25:17-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #854 Broadcast address was not correctly set for interface addresses
+
+ ports/winnt/libisc/interfaceiter.c@1.7, 2007-06-07 09:24:57-04:00, mayer@pogo.udel.edu +35 -13
+ Bug #854 Broadcast address was not correctly set for interface addresses
+
+ChangeSet@1.1490, 2007-05-29 07:43:58-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P2_RC5
+ TAG: NTP_4_2_4P2_RC5
+
+ ntpd/ntpd-opts.c@1.64, 2007-05-29 07:43:35-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ ntpd/ntpd-opts.h@1.64, 2007-05-29 07:43:35-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC5
+
+ ntpd/ntpd-opts.texi@1.63, 2007-05-29 07:43:36-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC5
+
+ ntpd/ntpd.1@1.62, 2007-05-29 07:43:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ ntpd/ntpdsim-opts.c@1.64, 2007-05-29 07:43:38-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ ntpd/ntpdsim-opts.h@1.64, 2007-05-29 07:43:39-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC5
+
+ ntpd/ntpdsim-opts.texi@1.62, 2007-05-29 07:43:40-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC5
+
+ ntpd/ntpdsim.1@1.62, 2007-05-29 07:43:40-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ ntpdc/ntpdc-opts.c@1.64, 2007-05-29 07:43:41-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ ntpdc/ntpdc-opts.h@1.64, 2007-05-29 07:43:42-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC5
+
+ ntpdc/ntpdc-opts.texi@1.62, 2007-05-29 07:43:43-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC5
+
+ ntpdc/ntpdc.1@1.62, 2007-05-29 07:43:43-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ ntpq/ntpq-opts.c@1.66, 2007-05-29 07:43:44-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ ntpq/ntpq-opts.h@1.66, 2007-05-29 07:43:45-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC5
+
+ ntpq/ntpq-opts.texi@1.63, 2007-05-29 07:43:45-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC5
+
+ ntpq/ntpq.1@1.62, 2007-05-29 07:43:46-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ packageinfo.sh@1.84, 2007-05-29 07:43:47-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC5
+
+ sntp/sntp-opts.c@1.62, 2007-05-29 07:43:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ sntp/sntp-opts.h@1.62, 2007-05-29 07:43:49-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC5
+
+ sntp/sntp-opts.texi@1.59, 2007-05-29 07:43:49-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC5
+
+ sntp/sntp.1@1.62, 2007-05-29 07:43:50-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ util/ntp-keygen-opts.c@1.63, 2007-05-29 07:43:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ util/ntp-keygen-opts.h@1.63, 2007-05-29 07:43:52-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC5
+
+ util/ntp-keygen-opts.texi@1.61, 2007-05-29 07:43:53-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC5
+
+ util/ntp-keygen.1@1.61, 2007-05-29 07:43:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC5
+
+ChangeSet@1.1489, 2007-05-29 01:32:29-04:00, stenn@whimsy.udel.edu +2 -0
+ typo cleanup
+
+ ChangeLog@1.18, 2007-05-29 01:32:14-04:00, stenn@whimsy.udel.edu +1 -1
+ typo cleanup
+
+ NEWS@1.93, 2007-05-29 01:32:15-04:00, stenn@whimsy.udel.edu +1 -2
+ typo cleanup
+
+ChangeSet@1.1488, 2007-05-28 10:00:27+00:00, kardel@pogo.udel.edu +3 -0
+ NEWS, ntp_io.c, ChangeLog:
+ Bug 829: reduce syslog noise, while there fix Enabled/Disable logging
+ to reflect the actual configuration
+
+ ChangeLog@1.17, 2007-05-28 09:54:40+00:00, kardel@pogo.udel.edu +2 -0
+ Bug 829: reduce syslog noise, while there fix Enabled/Disable logging
+ to reflect the actual configuration
+
+ NEWS@1.92, 2007-05-28 09:55:04+00:00, kardel@pogo.udel.edu +3 -0
+ Bug 829: reduce syslog noise, while there fix Enabled/Disable logging
+ to reflect the actual configuration
+
+ ntpd/ntp_io.c@1.250, 2007-05-28 09:59:44+00:00, kardel@pogo.udel.edu +58 -44
+ Bug 829: reduce syslog noise, while there fix Enabled/Disable logging
+ to reflect the actual configuration
+
+ChangeSet@1.1487, 2007-05-27 07:45:05-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P2_RC4
+ TAG: NTP_4_2_4P2_RC4
+
+ ntpd/ntpd-opts.c@1.63, 2007-05-27 07:44:40-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ ntpd/ntpd-opts.h@1.63, 2007-05-27 07:44:40-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC4
+
+ ntpd/ntpd-opts.texi@1.62, 2007-05-27 07:44:41-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC4
+
+ ntpd/ntpd.1@1.61, 2007-05-27 07:44:42-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ ntpd/ntpdsim-opts.c@1.63, 2007-05-27 07:44:43-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ ntpd/ntpdsim-opts.h@1.63, 2007-05-27 07:44:44-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC4
+
+ ntpd/ntpdsim-opts.texi@1.61, 2007-05-27 07:44:45-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC4
+
+ ntpd/ntpdsim.1@1.61, 2007-05-27 07:44:46-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ ntpdc/ntpdc-opts.c@1.63, 2007-05-27 07:44:46-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ ntpdc/ntpdc-opts.h@1.63, 2007-05-27 07:44:47-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC4
+
+ ntpdc/ntpdc-opts.texi@1.61, 2007-05-27 07:44:48-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC4
+
+ ntpdc/ntpdc.1@1.61, 2007-05-27 07:44:49-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ ntpq/ntpq-opts.c@1.65, 2007-05-27 07:44:50-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ ntpq/ntpq-opts.h@1.65, 2007-05-27 07:44:50-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC4
+
+ ntpq/ntpq-opts.texi@1.62, 2007-05-27 07:44:51-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC4
+
+ ntpq/ntpq.1@1.61, 2007-05-27 07:44:52-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ packageinfo.sh@1.83, 2007-05-27 07:44:52-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC4
+
+ sntp/sntp-opts.c@1.61, 2007-05-27 07:44:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ sntp/sntp-opts.h@1.61, 2007-05-27 07:44:54-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC4
+
+ sntp/sntp-opts.texi@1.58, 2007-05-27 07:44:55-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC4
+
+ sntp/sntp.1@1.61, 2007-05-27 07:44:55-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ util/ntp-keygen-opts.c@1.62, 2007-05-27 07:44:56-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ util/ntp-keygen-opts.h@1.62, 2007-05-27 07:44:57-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC4
+
+ util/ntp-keygen-opts.texi@1.60, 2007-05-27 07:44:58-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC4
+
+ util/ntp-keygen.1@1.60, 2007-05-27 07:44:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC4
+
+ChangeSet@1.1486, 2007-05-27 00:52:52-04:00, stenn@whimsy.udel.edu +1 -0
+ update NEWS file with new fixes
+
+ NEWS@1.91, 2007-05-27 00:52:43-04:00, stenn@whimsy.udel.edu +6 -0
+ update NEWS file with new fixes
+
+ChangeSet@1.1485, 2007-05-27 00:31:51-04:00, stenn@deacon.udel.edu +1 -0
+ Cleanup
+
+ ChangeLog@1.16, 2007-05-27 00:31:40-04:00, stenn@deacon.udel.edu +2 -2
+ Cleanup
+
+ChangeSet@1.1484, 2007-05-26 08:00:03+00:00, kardel@pogo.udel.edu +2 -0
+ ntp_io.c:
+ [Bug 795] Moved declaration of variable to top of function.
+ ChangeLog:
+ [Bug 795] Moved declaration of variable to top of function.
+
+ ChangeLog@1.15, 2007-05-26 07:57:22+00:00, kardel@pogo.udel.edu +1 -0
+ Bug 795
+
+ ntpd/ntp_io.c@1.249, 2007-05-26 07:58:40+00:00, kardel@pogo.udel.edu +4 -1
+ [Bug 795] Moved declaration of variable to top of function.
+
+ChangeSet@1.1480.1.9, 2007-05-25 07:44:43-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P2_RC3
+ TAG: NTP_4_2_4P2_RC3
+
+ ntpd/ntpd-opts.c@1.62, 2007-05-25 07:44:20-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ ntpd/ntpd-opts.h@1.62, 2007-05-25 07:44:21-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC3
+
+ ntpd/ntpd-opts.texi@1.61, 2007-05-25 07:44:22-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC3
+
+ ntpd/ntpd.1@1.60, 2007-05-25 07:44:23-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ ntpd/ntpdsim-opts.c@1.62, 2007-05-25 07:44:23-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ ntpd/ntpdsim-opts.h@1.62, 2007-05-25 07:44:24-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC3
+
+ ntpd/ntpdsim-opts.texi@1.60, 2007-05-25 07:44:25-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC3
+
+ ntpd/ntpdsim.1@1.60, 2007-05-25 07:44:25-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ ntpdc/ntpdc-opts.c@1.62, 2007-05-25 07:44:26-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ ntpdc/ntpdc-opts.h@1.62, 2007-05-25 07:44:27-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC3
+
+ ntpdc/ntpdc-opts.texi@1.60, 2007-05-25 07:44:28-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC3
+
+ ntpdc/ntpdc.1@1.60, 2007-05-25 07:44:28-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ ntpq/ntpq-opts.c@1.64, 2007-05-25 07:44:29-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ ntpq/ntpq-opts.h@1.64, 2007-05-25 07:44:30-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC3
+
+ ntpq/ntpq-opts.texi@1.61, 2007-05-25 07:44:31-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC3
+
+ ntpq/ntpq.1@1.60, 2007-05-25 07:44:32-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ packageinfo.sh@1.82, 2007-05-25 07:44:33-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC3
+
+ sntp/sntp-opts.c@1.60, 2007-05-25 07:44:33-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ sntp/sntp-opts.h@1.60, 2007-05-25 07:44:35-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC3
+
+ sntp/sntp-opts.texi@1.57, 2007-05-25 07:44:35-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC3
+
+ sntp/sntp.1@1.60, 2007-05-25 07:44:36-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ util/ntp-keygen-opts.c@1.61, 2007-05-25 07:44:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ util/ntp-keygen-opts.h@1.61, 2007-05-25 07:44:38-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC3
+
+ util/ntp-keygen-opts.texi@1.59, 2007-05-25 07:44:38-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC3
+
+ util/ntp-keygen.1@1.59, 2007-05-25 07:44:39-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC3
+
+ChangeSet@1.1480.1.8, 2007-05-25 02:18:59-04:00, stenn@whimsy.udel.edu +1 -0
+ cleanup
+
+ NEWS@1.90, 2007-05-25 02:18:48-04:00, stenn@whimsy.udel.edu +1 -0
+ cleanup
+
+ChangeSet@1.1480.2.1, 2007-05-25 02:06:52-04:00, stenn@whimsy.udel.edu +2 -0
+ Upgraded autogen and libopts
+
+ ChangeLog@1.11.2.1, 2007-05-25 02:06:37-04:00, stenn@whimsy.udel.edu +1 -0
+ Upgraded autogen and libopts
+
+ NEWS@1.89, 2007-05-25 02:06:38-04:00, stenn@whimsy.udel.edu +1 -0
+ Upgraded autogen and libopts
+
+ChangeSet@1.1480.1.6, 2007-05-25 01:07:59-04:00, stenn@pogo.udel.edu +1 -0
+ cleanup ChangeLog
+
+ ChangeLog@1.11.1.3, 2007-05-25 01:07:52-04:00, stenn@pogo.udel.edu +1 -1
+ cleanup ChangeLog
+
+ChangeSet@1.1480.1.5, 2007-05-24 08:10:30-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #527 Don't write from source address length to wrong location
+
+ ChangeLog@1.11.1.2, 2007-05-24 08:10:20-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #527 Don't write from source address length to wrong location
+
+ChangeSet@1.1480.1.4, 2007-05-24 08:08:34-04:00, mayer@pogo.udel.edu +4 -0
+ Bug #527 Don't write from source address length to wrong location
+
+ include/recvbuff.h@1.12, 2007-05-24 08:08:03-04:00, mayer@pogo.udel.edu +2 -0
+ Bug #527 Don't write from source address length to wrong location
+
+ libntp/recvbuff.c@1.25, 2007-05-24 08:08:03-04:00, mayer@pogo.udel.edu +27 -13
+ Bug #527 Don't write from source address length to wrong location
+
+ ports/winnt/libntp/transmitbuff.c@1.7, 2007-05-24 08:08:03-04:00, mayer@pogo.udel.edu +10 -10
+ Bug #527 Don't write from source address length to wrong location
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.22, 2007-05-24 08:08:03-04:00, mayer@pogo.udel.edu +76 -62
+ Bug #527 Don't write from source address length to wrong location
+
+ChangeSet@1.1480.1.3, 2007-05-19 07:53:57-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P2_RC2
+ TAG: NTP_4_2_4P2_RC2
+
+ ntpd/ntpd-opts.c@1.61, 2007-05-19 07:53:35-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P2_RC2
+
+ ntpd/ntpd-opts.h@1.61, 2007-05-19 07:53:35-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC2
+
+ ntpd/ntpd-opts.texi@1.60, 2007-05-19 07:53:36-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC2
+
+ ntpd/ntpd.1@1.59, 2007-05-19 07:53:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC2
+
+ ntpd/ntpdsim-opts.c@1.61, 2007-05-19 07:53:38-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P2_RC2
+
+ ntpd/ntpdsim-opts.h@1.61, 2007-05-19 07:53:39-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC2
+
+ ntpd/ntpdsim-opts.texi@1.59, 2007-05-19 07:53:40-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC2
+
+ ntpd/ntpdsim.1@1.59, 2007-05-19 07:53:40-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC2
+
+ ntpdc/ntpdc-opts.c@1.61, 2007-05-19 07:53:41-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P2_RC2
+
+ ntpdc/ntpdc-opts.h@1.61, 2007-05-19 07:53:42-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC2
+
+ ntpdc/ntpdc-opts.texi@1.59, 2007-05-19 07:53:43-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC2
+
+ ntpdc/ntpdc.1@1.59, 2007-05-19 07:53:43-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC2
+
+ ntpq/ntpq-opts.c@1.63, 2007-05-19 07:53:44-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P2_RC2
+
+ ntpq/ntpq-opts.h@1.63, 2007-05-19 07:53:45-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC2
+
+ ntpq/ntpq-opts.texi@1.60, 2007-05-19 07:53:46-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC2
+
+ ntpq/ntpq.1@1.59, 2007-05-19 07:53:47-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC2
+
+ packageinfo.sh@1.81, 2007-05-19 07:53:48-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC2
+
+ sntp/sntp-opts.c@1.59, 2007-05-19 07:53:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC2
+
+ sntp/sntp-opts.h@1.59, 2007-05-19 07:53:49-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC2
+
+ sntp/sntp-opts.texi@1.56, 2007-05-19 07:53:49-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC2
+
+ sntp/sntp.1@1.59, 2007-05-19 07:53:50-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC2
+
+ util/ntp-keygen-opts.c@1.60, 2007-05-19 07:53:51-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_4P2_RC2
+
+ util/ntp-keygen-opts.h@1.60, 2007-05-19 07:53:51-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC2
+
+ util/ntp-keygen-opts.texi@1.58, 2007-05-19 07:53:52-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC2
+
+ util/ntp-keygen.1@1.58, 2007-05-19 07:53:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC2
+
+ChangeSet@1.1480.1.2, 2007-05-19 02:33:04-04:00, stenn@whimsy.udel.edu +193 -0
+ We need another RC release to be sure the new autogen/libopts works.
+
+ BitKeeper/deleted/.del-COPYING.lgpl~492b62c9d62ba57a@1.2, 2007-05-19 00:01:18-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/COPYING.lgpl
+
+ BitKeeper/deleted/.del-COPYING.lgpl~adfa2ac04d64c0f7@1.2, 2007-05-19 00:00:02-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/COPYING.lgpl
+
+ BitKeeper/deleted/.del-COPYING.mbsd~7e1baaedfa33c877@1.2, 2007-05-19 00:00:03-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/COPYING.mbsd
+
+ BitKeeper/deleted/.del-COPYING.mbsd~e8244dcf5895b58f@1.2, 2007-05-19 00:01:19-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/COPYING.mbsd
+
+ BitKeeper/deleted/.del-MakeDefs.inc~3fd54e9b117bfdad@1.2, 2007-05-19 00:01:20-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/MakeDefs.inc
+
+ BitKeeper/deleted/.del-MakeDefs.inc~511eb438badc27b@1.2, 2007-05-19 00:00:04-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/MakeDefs.inc
+
+ BitKeeper/deleted/.del-Makefile.am~65692661e68a4392@1.2, 2007-05-19 00:00:04-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/Makefile.am
+
+ BitKeeper/deleted/.del-Makefile.am~fdf1a715e04b5f2c@1.2, 2007-05-19 00:01:21-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/Makefile.am
+
+ BitKeeper/deleted/.del-README~7ed47aff36cc39c@1.2, 2007-05-19 00:01:22-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/README
+
+ BitKeeper/deleted/.del-README~cec57621589d1ea6@1.2, 2007-05-19 00:00:05-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/README
+
+ BitKeeper/deleted/.del-autoopts.c~7b48d6dc5ca9c3b@1.2, 2007-05-19 00:01:22-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/autoopts.c
+
+ BitKeeper/deleted/.del-autoopts.c~917f3eb3a2030087@1.2, 2007-05-19 00:00:06-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/autoopts.c
+
+ BitKeeper/deleted/.del-autoopts.h~4184ad33bbb8222@1.2, 2007-05-19 00:00:08-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/autoopts.h
+
+ BitKeeper/deleted/.del-autoopts.h~d0834f397c8a330d@1.2, 2007-05-19 00:01:24-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/autoopts.h
+
+ BitKeeper/deleted/.del-boolean.c~50ae286fc516eee2@1.2, 2007-05-19 00:01:25-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/boolean.c
+
+ BitKeeper/deleted/.del-boolean.c~afd23e01a43b9536@1.2, 2007-05-19 00:00:09-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/boolean.c
+
+ BitKeeper/deleted/.del-compat.h~2bcdd381f6a570a1@1.2, 2007-05-19 00:01:54-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/compat.h
+
+ BitKeeper/deleted/.del-compat.h~e5d9fc11f0b928f2@1.2, 2007-05-19 00:00:35-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/compat.h
+
+ BitKeeper/deleted/.del-configfile.c~53384c73e434a615@1.2, 2007-05-19 00:00:09-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/configfile.c
+
+ BitKeeper/deleted/.del-configfile.c~ee0b7d49d26b4f74@1.2, 2007-05-19 00:01:26-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/configfile.c
+
+ BitKeeper/deleted/.del-cook.c~760181d2119b672@1.2, 2007-05-19 00:01:27-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/cook.c
+
+ BitKeeper/deleted/.del-cook.c~84c1af00a5581292@1.2, 2007-05-19 00:00:11-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/cook.c
+
+ BitKeeper/deleted/.del-enumeration.c~551805256cb9068c@1.2, 2007-05-19 00:00:12-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/enumeration.c
+
+ BitKeeper/deleted/.del-enumeration.c~969462e75e3913a3@1.2, 2007-05-19 00:01:29-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/enumeration.c
+
+ BitKeeper/deleted/.del-environment.c~643ce1e5a16a4f94@1.2, 2007-05-19 00:01:30-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/environment.c
+
+ BitKeeper/deleted/.del-environment.c~965d8c0fdf1150f5@1.2, 2007-05-19 00:00:13-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/environment.c
+
+ BitKeeper/deleted/.del-genshell.c~20529138c60103c3@1.2, 2007-05-19 00:00:14-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/genshell.c
+
+ BitKeeper/deleted/.del-genshell.c~bd74153097ec640f@1.2, 2007-05-19 00:01:31-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/genshell.c
+
+ BitKeeper/deleted/.del-genshell.h~7f41539b135f914a@1.2, 2007-05-19 00:00:15-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/genshell.h
+
+ BitKeeper/deleted/.del-genshell.h~b2793e1ea2981ff5@1.2, 2007-05-19 00:01:32-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/genshell.h
+
+ BitKeeper/deleted/.del-libopts.c~9353e1c3a0c56ad@1.2, 2007-05-19 00:00:16-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/libopts.c
+
+ BitKeeper/deleted/.del-libopts.c~bfc74bb368a309be@1.2, 2007-05-19 00:01:33-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/libopts.c
+
+ BitKeeper/deleted/.del-libopts.m4~9851dd84df41023b@1.2, 2007-05-19 00:00:40-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/m4/libopts.m4
+
+ BitKeeper/deleted/.del-libopts.m4~9fa7e371d1cc0426@1.2, 2007-05-19 00:02:00-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/m4/libopts.m4
+
+ BitKeeper/deleted/.del-liboptschk.m4~1828e1c4576e5aea@1.2, 2007-05-19 00:00:41-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/m4/liboptschk.m4
+
+ BitKeeper/deleted/.del-liboptschk.m4~480d5c4f1634a9fa@1.2, 2007-05-19 00:02:01-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/m4/liboptschk.m4
+
+ BitKeeper/deleted/.del-load.c~688d4934eb14272@1.2, 2007-05-19 00:01:34-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/load.c
+
+ BitKeeper/deleted/.del-load.c~b6aa568c6e3eaca1@1.2, 2007-05-19 00:00:16-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/load.c
+
+ BitKeeper/deleted/.del-makeshell.c~8c63bc5a263da752@1.2, 2007-05-19 00:01:35-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/makeshell.c
+
+ BitKeeper/deleted/.del-makeshell.c~a9cd96c3bfbc0835@1.2, 2007-05-19 00:00:17-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/makeshell.c
+
+ BitKeeper/deleted/.del-nested.c~1670193227f54043@1.2, 2007-05-19 00:01:36-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/nested.c
+
+ BitKeeper/deleted/.del-nested.c~a8521c8fcff292b6@1.2, 2007-05-19 00:00:18-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/nested.c
+
+ BitKeeper/deleted/.del-numeric.c~eb3fbec29633e61@1.2, 2007-05-19 00:01:37-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/numeric.c
+
+ BitKeeper/deleted/.del-numeric.c~ec644fa246942cbc@1.2, 2007-05-19 00:00:19-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/numeric.c
+
+ BitKeeper/deleted/.del-options.h~3cb6af32ad01957@1.2, 2007-05-19 00:01:52-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/autoopts/options.h
+
+ BitKeeper/deleted/.del-options.h~f700d69ce23e3e23@1.2, 2007-05-19 00:00:33-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/autoopts/options.h
+
+ BitKeeper/deleted/.del-pathfind.c~953a96dbc9932@1.2, 2007-05-19 00:01:56-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/pathfind.c
+
+ BitKeeper/deleted/.del-pathfind.c~c132dab083075929@1.2, 2007-05-19 00:00:36-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/pathfind.c
+
+ BitKeeper/deleted/.del-pgusage.c~5c1f8f132e9a1546@1.2, 2007-05-19 00:01:39-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/pgusage.c
+
+ BitKeeper/deleted/.del-pgusage.c~cec1309617012832@1.2, 2007-05-19 00:00:20-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/pgusage.c
+
+ BitKeeper/deleted/.del-proto.h~697b4937ff37ca3f@1.2, 2007-05-19 00:01:40-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/proto.h
+
+ BitKeeper/deleted/.del-proto.h~e2a13f546fbc0d4f@1.2, 2007-05-19 00:00:21-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/proto.h
+
+ BitKeeper/deleted/.del-putshell.c~6845ea506fad6426@1.2, 2007-05-19 00:01:41-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/putshell.c
+
+ BitKeeper/deleted/.del-putshell.c~6e39e6836261f3f7@1.2, 2007-05-19 00:00:22-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/putshell.c
+
+ BitKeeper/deleted/.del-restore.c~c14d8b96be44c6a8@1.2, 2007-05-19 00:01:42-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/restore.c
+
+ BitKeeper/deleted/.del-restore.c~e2a155efceab6f0d@1.2, 2007-05-19 00:00:23-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/restore.c
+
+ BitKeeper/deleted/.del-save.c~17e5ac125a404fb0@1.2, 2007-05-19 00:00:24-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/save.c
+
+ BitKeeper/deleted/.del-save.c~e7e7366cd24e1a8f@1.2, 2007-05-19 00:01:43-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/save.c
+
+ BitKeeper/deleted/.del-snprintf.c~4b42e45647e9ccef@1.2, 2007-05-19 00:00:38-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/snprintf.c
+
+ BitKeeper/deleted/.del-snprintf.c~988df6799c67781f@1.2, 2007-05-19 00:01:57-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/snprintf.c
+
+ BitKeeper/deleted/.del-sort.c~586535d7d26d958@1.2, 2007-05-19 00:01:44-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/sort.c
+
+ BitKeeper/deleted/.del-sort.c~bb92da923b5dcb7@1.2, 2007-05-19 00:00:25-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/sort.c
+
+ BitKeeper/deleted/.del-stack.c~202d33ccdfd74ec@1.2, 2007-05-19 00:01:45-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/stack.c
+
+ BitKeeper/deleted/.del-stack.c~b60d0ab82970f41f@1.2, 2007-05-19 00:00:26-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/stack.c
+
+ BitKeeper/deleted/.del-strchr.c~4a7e412c18f53557@1.2, 2007-05-19 00:01:57-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/strchr.c
+
+ BitKeeper/deleted/.del-strchr.c~7f4589858587fcc4@1.2, 2007-05-19 00:00:38-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/strchr.c
+
+ BitKeeper/deleted/.del-strdup.c~75e27662f28944b1@1.2, 2007-05-19 00:01:58-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/strdup.c
+
+ BitKeeper/deleted/.del-strdup.c~b295027011406c46@1.2, 2007-05-19 00:00:39-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/strdup.c
+
+ BitKeeper/deleted/.del-streqvcmp.c~999e9cfa251ea4b3@1.2, 2007-05-19 00:00:28-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/streqvcmp.c
+
+ BitKeeper/deleted/.del-streqvcmp.c~dc5534ffb1c6f28@1.2, 2007-05-19 00:01:47-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/streqvcmp.c
+
+ BitKeeper/deleted/.del-text_mmap.c~52f2f1dbe57a9743@1.2, 2007-05-19 00:00:29-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/text_mmap.c
+
+ BitKeeper/deleted/.del-text_mmap.c~e5096667484e499a@1.2, 2007-05-19 00:01:48-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/text_mmap.c
+
+ BitKeeper/deleted/.del-tokenize.c~315c26f9b162f234@1.2, 2007-05-19 00:01:49-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/tokenize.c
+
+ BitKeeper/deleted/.del-tokenize.c~6a814216fa293c3c@1.2, 2007-05-19 00:00:30-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/tokenize.c
+
+ BitKeeper/deleted/.del-usage-txt.h~3737a7c76813e8c3@1.2, 2007-05-19 00:00:34-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/autoopts/usage-txt.h
+
+ BitKeeper/deleted/.del-usage-txt.h~b71acc916d68c58c@1.2, 2007-05-19 00:01:53-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/autoopts/usage-txt.h
+
+ BitKeeper/deleted/.del-usage.c~f21924faa210bfa9@1.2, 2007-05-19 00:01:50-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/usage.c
+
+ BitKeeper/deleted/.del-usage.c~fe9a0f55b3cc55e4@1.2, 2007-05-19 00:00:31-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/usage.c
+
+ BitKeeper/deleted/.del-version.c~b69eccbdea7f51d9@1.2, 2007-05-19 00:01:51-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/version.c
+
+ BitKeeper/deleted/.del-version.c~de7f014d3e2ac91e@1.2, 2007-05-19 00:00:32-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/version.c
+
+ BitKeeper/deleted/.del-windows-config.h~11a9a57b2895598f@1.2, 2007-05-19 00:01:59-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/windows-config.h
+
+ BitKeeper/deleted/.del-windows-config.h~a6ead462c3d18ff0@1.2, 2007-05-19 00:00:39-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/windows-config.h
+
+ clockstuff/clktest-opts.c@1.10, 2007-05-19 02:30:32-04:00, stenn@whimsy.udel.edu +38 -270
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ clockstuff/clktest-opts.def@1.6, 2007-05-19 02:27:39-04:00, stenn@whimsy.udel.edu +4 -0
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ clockstuff/clktest-opts.h@1.10, 2007-05-19 02:30:33-04:00, stenn@whimsy.udel.edu +22 -57
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ include/autogen-version.def@1.4, 2007-05-19 02:27:41-04:00, stenn@whimsy.udel.edu +1 -1
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ libopts/COPYING.lgpl@1.1, 2007-05-19 00:04:01-04:00, stenn@whimsy.udel.edu +502 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/COPYING.lgpl
+
+ libopts/COPYING.lgpl@1.0, 2007-05-19 00:04:01-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/COPYING.mbsd@1.1, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +26 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/COPYING.mbsd
+
+ libopts/COPYING.mbsd@1.0, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/MakeDefs.inc@1.1, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/MakeDefs.inc
+
+ libopts/MakeDefs.inc@1.0, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/Makefile.am@1.1, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +24 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/Makefile.am
+
+ libopts/Makefile.am@1.0, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/README@1.1, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +93 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/README
+
+ libopts/README@1.0, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/autoopts.c@1.1, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +1120 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/autoopts.c
+
+ libopts/autoopts.c@1.0, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/autoopts.h@1.1, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +387 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/autoopts.h
+
+ libopts/autoopts.h@1.0, 2007-05-19 00:04:02-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/autoopts/options.h@1.1, 2007-05-19 00:04:14-04:00, stenn@whimsy.udel.edu +977 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/autoopts/options.h
+
+ libopts/autoopts/options.h@1.0, 2007-05-19 00:04:14-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/autoopts/usage-txt.h@1.1, 2007-05-19 00:04:14-04:00, stenn@whimsy.udel.edu +355 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/autoopts/usage-txt.h
+
+ libopts/autoopts/usage-txt.h@1.0, 2007-05-19 00:04:14-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/boolean.c@1.1, 2007-05-19 00:04:03-04:00, stenn@whimsy.udel.edu +106 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/boolean.c
+
+ libopts/boolean.c@1.0, 2007-05-19 00:04:03-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/compat/compat.h@1.1, 2007-05-19 00:04:15-04:00, stenn@whimsy.udel.edu +319 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/compat/compat.h
+
+ libopts/compat/compat.h@1.0, 2007-05-19 00:04:15-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/compat/pathfind.c@1.1, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +339 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/compat/pathfind.c
+
+ libopts/compat/pathfind.c@1.0, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/compat/snprintf.c@1.1, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +60 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/compat/snprintf.c
+
+ libopts/compat/snprintf.c@1.0, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/compat/strchr.c@1.1, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +60 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/compat/strchr.c
+
+ libopts/compat/strchr.c@1.0, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/compat/strdup.c@1.1, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +19 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/compat/strdup.c
+
+ libopts/compat/strdup.c@1.0, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/compat/windows-config.h@1.1, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +130 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/compat/windows-config.h
+
+ libopts/compat/windows-config.h@1.0, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/configfile.c@1.1, 2007-05-19 00:04:03-04:00, stenn@whimsy.udel.edu +1290 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/configfile.c
+
+ libopts/configfile.c@1.0, 2007-05-19 00:04:03-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/cook.c@1.1, 2007-05-19 00:04:04-04:00, stenn@whimsy.udel.edu +354 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/cook.c
+
+ libopts/cook.c@1.0, 2007-05-19 00:04:04-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/enumeration.c@1.1, 2007-05-19 00:04:05-04:00, stenn@whimsy.udel.edu +498 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/enumeration.c
+
+ libopts/enumeration.c@1.0, 2007-05-19 00:04:05-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/environment.c@1.1, 2007-05-19 00:04:05-04:00, stenn@whimsy.udel.edu +279 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/environment.c
+
+ libopts/environment.c@1.0, 2007-05-19 00:04:05-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/genshell.c@1.1, 2007-05-19 00:04:06-04:00, stenn@whimsy.udel.edu +354 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/genshell.c
+
+ libopts/genshell.c@1.0, 2007-05-19 00:04:06-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/genshell.h@1.1, 2007-05-19 00:04:06-04:00, stenn@whimsy.udel.edu +149 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/genshell.h
+
+ libopts/genshell.h@1.0, 2007-05-19 00:04:06-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/libopts.c@1.1, 2007-05-19 00:04:06-04:00, stenn@whimsy.udel.edu +30 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/libopts.c
+
+ libopts/libopts.c@1.0, 2007-05-19 00:04:06-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/load.c@1.1, 2007-05-19 00:04:06-04:00, stenn@whimsy.udel.edu +563 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/load.c
+
+ libopts/load.c@1.0, 2007-05-19 00:04:06-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/m4/libopts.m4@1.1, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +509 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/m4/libopts.m4
+
+ libopts/m4/libopts.m4@1.0, 2007-05-19 00:04:16-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/m4/liboptschk.m4@1.1, 2007-05-19 00:04:17-04:00, stenn@whimsy.udel.edu +42 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/m4/liboptschk.m4
+
+ libopts/m4/liboptschk.m4@1.0, 2007-05-19 00:04:17-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/makeshell.c@1.1, 2007-05-19 00:04:07-04:00, stenn@whimsy.udel.edu +1122 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/makeshell.c
+
+ libopts/makeshell.c@1.0, 2007-05-19 00:04:07-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/nested.c@1.1, 2007-05-19 00:04:07-04:00, stenn@whimsy.udel.edu +733 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/nested.c
+
+ libopts/nested.c@1.0, 2007-05-19 00:04:07-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/numeric.c@1.1, 2007-05-19 00:04:08-04:00, stenn@whimsy.udel.edu +93 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/numeric.c
+
+ libopts/numeric.c@1.0, 2007-05-19 00:04:08-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/pgusage.c@1.1, 2007-05-19 00:04:08-04:00, stenn@whimsy.udel.edu +157 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/pgusage.c
+
+ libopts/pgusage.c@1.0, 2007-05-19 00:04:08-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/proto.h@1.1, 2007-05-19 00:04:08-04:00, stenn@whimsy.udel.edu +91 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/proto.h
+
+ libopts/proto.h@1.0, 2007-05-19 00:04:08-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/putshell.c@1.1, 2007-05-19 00:04:08-04:00, stenn@whimsy.udel.edu +335 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/putshell.c
+
+ libopts/putshell.c@1.0, 2007-05-19 00:04:08-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/restore.c@1.1, 2007-05-19 00:04:08-04:00, stenn@whimsy.udel.edu +250 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/restore.c
+
+ libopts/restore.c@1.0, 2007-05-19 00:04:08-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/save.c@1.1, 2007-05-19 00:04:09-04:00, stenn@whimsy.udel.edu +512 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/save.c
+
+ libopts/save.c@1.0, 2007-05-19 00:04:09-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/sort.c@1.1, 2007-05-19 00:04:09-04:00, stenn@whimsy.udel.edu +359 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/sort.c
+
+ libopts/sort.c@1.0, 2007-05-19 00:04:09-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/stack.c@1.1, 2007-05-19 00:04:10-04:00, stenn@whimsy.udel.edu +269 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/stack.c
+
+ libopts/stack.c@1.0, 2007-05-19 00:04:10-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/streqvcmp.c@1.1, 2007-05-19 00:04:11-04:00, stenn@whimsy.udel.edu +289 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/streqvcmp.c
+
+ libopts/streqvcmp.c@1.0, 2007-05-19 00:04:11-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/text_mmap.c@1.1, 2007-05-19 00:04:11-04:00, stenn@whimsy.udel.edu +363 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/text_mmap.c
+
+ libopts/text_mmap.c@1.0, 2007-05-19 00:04:11-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/tokenize.c@1.1, 2007-05-19 00:04:12-04:00, stenn@whimsy.udel.edu +321 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/tokenize.c
+
+ libopts/tokenize.c@1.0, 2007-05-19 00:04:12-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/usage.c@1.1, 2007-05-19 00:04:13-04:00, stenn@whimsy.udel.edu +740 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/usage.c
+
+ libopts/usage.c@1.0, 2007-05-19 00:04:13-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/version.c@1.1, 2007-05-19 00:04:13-04:00, stenn@whimsy.udel.edu +178 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/libopts/version.c
+
+ libopts/version.c@1.0, 2007-05-19 00:04:13-04:00, stenn@whimsy.udel.edu +0 -0
+
+ ntpd/ntpd-opts.c@1.60, 2007-05-19 02:30:34-04:00, stenn@whimsy.udel.edu +20 -11
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpd/ntpd-opts.h@1.60, 2007-05-19 02:30:36-04:00, stenn@whimsy.udel.edu +4 -4
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpd/ntpd-opts.texi@1.59, 2007-05-19 02:30:36-04:00, stenn@whimsy.udel.edu +2 -8
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpd/ntpd.1@1.58, 2007-05-19 02:30:37-04:00, stenn@whimsy.udel.edu +2 -2
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpd/ntpdsim-opts.c@1.60, 2007-05-19 02:30:40-04:00, stenn@whimsy.udel.edu +23 -14
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpd/ntpdsim-opts.h@1.60, 2007-05-19 02:30:41-04:00, stenn@whimsy.udel.edu +6 -6
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpd/ntpdsim-opts.texi@1.58, 2007-05-19 02:30:43-04:00, stenn@whimsy.udel.edu +1 -1
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpd/ntpdsim.1@1.58, 2007-05-19 02:30:44-04:00, stenn@whimsy.udel.edu +2 -2
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpdc/ntpdc-opts.c@1.60, 2007-05-19 02:30:45-04:00, stenn@whimsy.udel.edu +23 -14
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpdc/ntpdc-opts.h@1.60, 2007-05-19 02:30:48-04:00, stenn@whimsy.udel.edu +6 -6
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpdc/ntpdc-opts.texi@1.58, 2007-05-19 02:30:48-04:00, stenn@whimsy.udel.edu +3 -3
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpdc/ntpdc.1@1.58, 2007-05-19 02:30:49-04:00, stenn@whimsy.udel.edu +2 -2
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpq/ntpq-opts.c@1.62, 2007-05-19 02:30:50-04:00, stenn@whimsy.udel.edu +23 -14
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpq/ntpq-opts.h@1.62, 2007-05-19 02:30:51-04:00, stenn@whimsy.udel.edu +6 -6
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpq/ntpq-opts.texi@1.59, 2007-05-19 02:30:52-04:00, stenn@whimsy.udel.edu +3 -3
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ ntpq/ntpq.1@1.58, 2007-05-19 02:30:53-04:00, stenn@whimsy.udel.edu +2 -2
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ packageinfo.sh@1.80, 2007-05-19 02:28:15-04:00, stenn@whimsy.udel.edu +1 -1
+ We need another RC release to be sure the new autogen/libopts works.
+
+ sntp/libopts/COPYING.lgpl@1.1, 2007-05-19 00:04:59-04:00, stenn@whimsy.udel.edu +502 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/COPYING.lgpl
+
+ sntp/libopts/COPYING.lgpl@1.0, 2007-05-19 00:04:59-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/COPYING.mbsd@1.1, 2007-05-19 00:05:00-04:00, stenn@whimsy.udel.edu +26 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/COPYING.mbsd
+
+ sntp/libopts/COPYING.mbsd@1.0, 2007-05-19 00:05:00-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/MakeDefs.inc@1.1, 2007-05-19 00:05:00-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/MakeDefs.inc
+
+ sntp/libopts/MakeDefs.inc@1.0, 2007-05-19 00:05:00-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/Makefile.am@1.1, 2007-05-19 00:05:00-04:00, stenn@whimsy.udel.edu +24 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/Makefile.am
+
+ sntp/libopts/Makefile.am@1.0, 2007-05-19 00:05:00-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/README@1.1, 2007-05-19 00:05:00-04:00, stenn@whimsy.udel.edu +93 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/README
+
+ sntp/libopts/README@1.0, 2007-05-19 00:05:00-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/autoopts.c@1.1, 2007-05-19 00:05:00-04:00, stenn@whimsy.udel.edu +1120 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/autoopts.c
+
+ sntp/libopts/autoopts.c@1.0, 2007-05-19 00:05:00-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/autoopts.h@1.1, 2007-05-19 00:05:01-04:00, stenn@whimsy.udel.edu +387 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/autoopts.h
+
+ sntp/libopts/autoopts.h@1.0, 2007-05-19 00:05:01-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/autoopts/options.h@1.1, 2007-05-19 00:05:12-04:00, stenn@whimsy.udel.edu +977 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/autoopts/options.h
+
+ sntp/libopts/autoopts/options.h@1.0, 2007-05-19 00:05:12-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/autoopts/usage-txt.h@1.1, 2007-05-19 00:05:13-04:00, stenn@whimsy.udel.edu +355 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/autoopts/usage-txt.h
+
+ sntp/libopts/autoopts/usage-txt.h@1.0, 2007-05-19 00:05:13-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/boolean.c@1.1, 2007-05-19 00:05:01-04:00, stenn@whimsy.udel.edu +106 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/boolean.c
+
+ sntp/libopts/boolean.c@1.0, 2007-05-19 00:05:01-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/compat/compat.h@1.1, 2007-05-19 00:05:13-04:00, stenn@whimsy.udel.edu +319 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/compat/compat.h
+
+ sntp/libopts/compat/compat.h@1.0, 2007-05-19 00:05:13-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/compat/pathfind.c@1.1, 2007-05-19 00:05:14-04:00, stenn@whimsy.udel.edu +339 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/compat/pathfind.c
+
+ sntp/libopts/compat/pathfind.c@1.0, 2007-05-19 00:05:14-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/compat/snprintf.c@1.1, 2007-05-19 00:05:14-04:00, stenn@whimsy.udel.edu +60 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/compat/snprintf.c
+
+ sntp/libopts/compat/snprintf.c@1.0, 2007-05-19 00:05:14-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/compat/strchr.c@1.1, 2007-05-19 00:05:14-04:00, stenn@whimsy.udel.edu +60 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/compat/strchr.c
+
+ sntp/libopts/compat/strchr.c@1.0, 2007-05-19 00:05:14-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/compat/strdup.c@1.1, 2007-05-19 00:05:14-04:00, stenn@whimsy.udel.edu +19 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/compat/strdup.c
+
+ sntp/libopts/compat/strdup.c@1.0, 2007-05-19 00:05:14-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/compat/windows-config.h@1.1, 2007-05-19 00:05:14-04:00, stenn@whimsy.udel.edu +130 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/compat/windows-config.h
+
+ sntp/libopts/compat/windows-config.h@1.0, 2007-05-19 00:05:14-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/configfile.c@1.1, 2007-05-19 00:05:01-04:00, stenn@whimsy.udel.edu +1290 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/configfile.c
+
+ sntp/libopts/configfile.c@1.0, 2007-05-19 00:05:01-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/cook.c@1.1, 2007-05-19 00:05:02-04:00, stenn@whimsy.udel.edu +354 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/cook.c
+
+ sntp/libopts/cook.c@1.0, 2007-05-19 00:05:02-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/enumeration.c@1.1, 2007-05-19 00:05:03-04:00, stenn@whimsy.udel.edu +498 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/enumeration.c
+
+ sntp/libopts/enumeration.c@1.0, 2007-05-19 00:05:03-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/environment.c@1.1, 2007-05-19 00:05:04-04:00, stenn@whimsy.udel.edu +279 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/environment.c
+
+ sntp/libopts/environment.c@1.0, 2007-05-19 00:05:04-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/genshell.c@1.1, 2007-05-19 00:05:04-04:00, stenn@whimsy.udel.edu +354 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/genshell.c
+
+ sntp/libopts/genshell.c@1.0, 2007-05-19 00:05:04-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/genshell.h@1.1, 2007-05-19 00:05:05-04:00, stenn@whimsy.udel.edu +149 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/genshell.h
+
+ sntp/libopts/genshell.h@1.0, 2007-05-19 00:05:05-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/libopts.c@1.1, 2007-05-19 00:05:05-04:00, stenn@whimsy.udel.edu +30 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/libopts.c
+
+ sntp/libopts/libopts.c@1.0, 2007-05-19 00:05:05-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/load.c@1.1, 2007-05-19 00:05:05-04:00, stenn@whimsy.udel.edu +563 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/load.c
+
+ sntp/libopts/load.c@1.0, 2007-05-19 00:05:05-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/m4/libopts.m4@1.1, 2007-05-19 00:05:15-04:00, stenn@whimsy.udel.edu +509 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/m4/libopts.m4
+
+ sntp/libopts/m4/libopts.m4@1.0, 2007-05-19 00:05:15-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/m4/liboptschk.m4@1.1, 2007-05-19 00:05:15-04:00, stenn@whimsy.udel.edu +42 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/m4/liboptschk.m4
+
+ sntp/libopts/m4/liboptschk.m4@1.0, 2007-05-19 00:05:15-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/makeshell.c@1.1, 2007-05-19 00:05:05-04:00, stenn@whimsy.udel.edu +1122 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/makeshell.c
+
+ sntp/libopts/makeshell.c@1.0, 2007-05-19 00:05:05-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/nested.c@1.1, 2007-05-19 00:05:06-04:00, stenn@whimsy.udel.edu +733 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/nested.c
+
+ sntp/libopts/nested.c@1.0, 2007-05-19 00:05:06-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/numeric.c@1.1, 2007-05-19 00:05:06-04:00, stenn@whimsy.udel.edu +93 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/numeric.c
+
+ sntp/libopts/numeric.c@1.0, 2007-05-19 00:05:06-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/pgusage.c@1.1, 2007-05-19 00:05:06-04:00, stenn@whimsy.udel.edu +157 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/pgusage.c
+
+ sntp/libopts/pgusage.c@1.0, 2007-05-19 00:05:06-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/proto.h@1.1, 2007-05-19 00:05:06-04:00, stenn@whimsy.udel.edu +91 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/proto.h
+
+ sntp/libopts/proto.h@1.0, 2007-05-19 00:05:06-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/putshell.c@1.1, 2007-05-19 00:05:07-04:00, stenn@whimsy.udel.edu +335 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/putshell.c
+
+ sntp/libopts/putshell.c@1.0, 2007-05-19 00:05:07-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/restore.c@1.1, 2007-05-19 00:05:07-04:00, stenn@whimsy.udel.edu +250 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/restore.c
+
+ sntp/libopts/restore.c@1.0, 2007-05-19 00:05:07-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/save.c@1.1, 2007-05-19 00:05:08-04:00, stenn@whimsy.udel.edu +512 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/save.c
+
+ sntp/libopts/save.c@1.0, 2007-05-19 00:05:08-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/sort.c@1.1, 2007-05-19 00:05:08-04:00, stenn@whimsy.udel.edu +359 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/sort.c
+
+ sntp/libopts/sort.c@1.0, 2007-05-19 00:05:08-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/stack.c@1.1, 2007-05-19 00:05:09-04:00, stenn@whimsy.udel.edu +269 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/stack.c
+
+ sntp/libopts/stack.c@1.0, 2007-05-19 00:05:09-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/streqvcmp.c@1.1, 2007-05-19 00:05:09-04:00, stenn@whimsy.udel.edu +289 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/streqvcmp.c
+
+ sntp/libopts/streqvcmp.c@1.0, 2007-05-19 00:05:09-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/text_mmap.c@1.1, 2007-05-19 00:05:10-04:00, stenn@whimsy.udel.edu +363 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/text_mmap.c
+
+ sntp/libopts/text_mmap.c@1.0, 2007-05-19 00:05:10-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/tokenize.c@1.1, 2007-05-19 00:05:10-04:00, stenn@whimsy.udel.edu +321 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/tokenize.c
+
+ sntp/libopts/tokenize.c@1.0, 2007-05-19 00:05:10-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/usage.c@1.1, 2007-05-19 00:05:11-04:00, stenn@whimsy.udel.edu +740 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/usage.c
+
+ sntp/libopts/usage.c@1.0, 2007-05-19 00:05:11-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/version.c@1.1, 2007-05-19 00:05:12-04:00, stenn@whimsy.udel.edu +178 -0
+ BitKeeper file /deacon/backroom/ntp-stable-hms/sntp/libopts/version.c
+
+ sntp/libopts/version.c@1.0, 2007-05-19 00:05:12-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/sntp-opts.c@1.58, 2007-05-19 02:30:55-04:00, stenn@whimsy.udel.edu +21 -12
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ sntp/sntp-opts.h@1.58, 2007-05-19 02:30:56-04:00, stenn@whimsy.udel.edu +6 -6
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ sntp/sntp-opts.texi@1.55, 2007-05-19 02:30:57-04:00, stenn@whimsy.udel.edu +1 -1
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ sntp/sntp.1@1.58, 2007-05-19 02:30:58-04:00, stenn@whimsy.udel.edu +2 -2
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ util/ntp-keygen-opts.c@1.59, 2007-05-19 02:31:00-04:00, stenn@whimsy.udel.edu +23 -14
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ util/ntp-keygen-opts.h@1.59, 2007-05-19 02:31:02-04:00, stenn@whimsy.udel.edu +6 -6
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ util/ntp-keygen-opts.texi@1.57, 2007-05-19 02:31:04-04:00, stenn@whimsy.udel.edu +3 -3
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ util/ntp-keygen.1@1.57, 2007-05-19 02:31:04-04:00, stenn@whimsy.udel.edu +2 -2
+ We need to use the upgraded autogen/libopts in -stable too.
+
+ChangeSet@1.1480.1.1, 2007-05-18 02:20:56-04:00, stenn@whimsy.udel.edu +3 -0
+ Release 4.2.4p2
+
+ ChangeLog@1.11.1.1, 2007-05-18 02:19:13-04:00, stenn@whimsy.udel.edu +4 -2
+ Release 4.2.4p2
+
+ NEWS@1.88, 2007-05-18 02:19:14-04:00, stenn@whimsy.udel.edu +6 -0
+ Release 4.2.4p2
+
+ packageinfo.sh@1.79, 2007-05-18 02:20:38-04:00, stenn@whimsy.udel.edu +1 -1
+ Release 4.2.4p2
+
+ChangeSet@1.1482, 2007-04-28 10:19:57+00:00, kardel@pogo.udel.edu +2 -0
+ ntp_peer.c:
+ Bug 789 (backported from ntp-dev):
+ Fix multicast client crypto authentication and make sure arriving
+ multicast packets do not disturb the autokey dance.
+ ChangeLog:
+ Bug 789 (backported from ntp-dev):
+ Fix multicast client crypto authentication and make sure arriving
+ multicast packets do not disturb the autokey dance.
+
+ ChangeLog@1.13, 2007-04-28 10:15:34+00:00, kardel@pogo.udel.edu +4 -1
+ Bug 789:
+ Fix multicast client crypto authentication and make sure arriving
+ multicast packets do not disturb the autokey dance.
+
+ ntpd/ntp_peer.c@1.99, 2007-04-28 10:06:31+00:00, kardel@pogo.udel.edu +21 -12
+ Bug 789 (backported from ntp-dev):
+ fix multicast client mode by re-setting
+ crypto information only when the local address
+ changes and not for BCLNTs.
+ Addtitionally don't update the local address while
+ a BCLNT is doing the autokey dance.
+
+ChangeSet@1.1481, 2007-04-28 10:03:26+00:00, kardel@pogo.udel.edu +3 -0
+ ntp_io.c, ChangeLog:
+ bug 785 (backport from ntp-dev):
+ improve handling of multicast interfaces
+ (multicast routers still need to run a multicast routing software/daemon)
+ ntp_peer.c:
+ bug 785 (backport from ntp-dev):
+ clarify debug messages
+
+ ChangeLog@1.12, 2007-04-28 10:00:26+00:00, kardel@pogo.udel.edu +1 -0
+ bug 785 (backport from ntp-dev):
+ improve handling of multicast interfaces
+ (multicast routers still need to run a multicast routing software/daemon)
+
+ ntpd/ntp_io.c@1.248, 2007-04-28 09:52:18+00:00, kardel@pogo.udel.edu +84 -62
+ bug 785 (backport from ntp-dev):
+ improve handling of multicast interfaces
+ (multicast routers still need to run a multicast routing software/daemon)
+
+ ntpd/ntp_peer.c@1.98, 2007-04-28 09:53:09+00:00, kardel@pogo.udel.edu +2 -2
+ bug 785 (backport from ntp-dev):
+ clarify debug messages
+
+ChangeSet@1.1480, 2007-04-14 19:05:07-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P2_RC1
+ TAG: NTP_4_2_4P2_RC1
+
+ ntpd/ntpd-opts.c@1.59, 2007-04-14 19:04:46-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ ntpd/ntpd-opts.h@1.59, 2007-04-14 19:04:46-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC1
+
+ ntpd/ntpd-opts.texi@1.58, 2007-04-14 19:04:47-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC1
+
+ ntpd/ntpd.1@1.57, 2007-04-14 19:04:47-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ ntpd/ntpdsim-opts.c@1.59, 2007-04-14 19:04:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ ntpd/ntpdsim-opts.h@1.59, 2007-04-14 19:04:49-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC1
+
+ ntpd/ntpdsim-opts.texi@1.57, 2007-04-14 19:04:50-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC1
+
+ ntpd/ntpdsim.1@1.57, 2007-04-14 19:04:50-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ ntpdc/ntpdc-opts.c@1.59, 2007-04-14 19:04:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ ntpdc/ntpdc-opts.h@1.59, 2007-04-14 19:04:52-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC1
+
+ ntpdc/ntpdc-opts.texi@1.57, 2007-04-14 19:04:52-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC1
+
+ ntpdc/ntpdc.1@1.57, 2007-04-14 19:04:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ ntpq/ntpq-opts.c@1.61, 2007-04-14 19:04:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ ntpq/ntpq-opts.h@1.61, 2007-04-14 19:04:55-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC1
+
+ ntpq/ntpq-opts.texi@1.58, 2007-04-14 19:04:55-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC1
+
+ ntpq/ntpq.1@1.57, 2007-04-14 19:04:56-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ packageinfo.sh@1.78, 2007-04-14 19:04:57-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ sntp/sntp-opts.c@1.57, 2007-04-14 19:04:57-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ sntp/sntp-opts.h@1.57, 2007-04-14 19:04:58-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC1
+
+ sntp/sntp-opts.texi@1.54, 2007-04-14 19:04:59-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC1
+
+ sntp/sntp.1@1.57, 2007-04-14 19:04:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ util/ntp-keygen-opts.c@1.58, 2007-04-14 19:05:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ util/ntp-keygen-opts.h@1.58, 2007-04-14 19:05:01-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P2_RC1
+
+ util/ntp-keygen-opts.texi@1.56, 2007-04-14 19:05:02-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P2_RC1
+
+ util/ntp-keygen.1@1.56, 2007-04-14 19:05:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P2_RC1
+
+ChangeSet@1.1479, 2007-04-14 18:16:04-04:00, stenn@deacon.udel.edu +2 -0
+ Distribute include/homerc.def
+
+ include/Makefile.am@1.25, 2007-04-14 18:15:53-04:00, stenn@deacon.udel.edu +1 -1
+ Distribute include/homerc.def
+
+ packageinfo.sh@1.77, 2007-04-14 18:14:54-04:00, stenn@deacon.udel.edu +1 -1
+ restart the RC
+
+ChangeSet@1.1478, 2007-04-14 07:53:43-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P1_RC1
+ TAG: NTP_4_2_4P1_RC1
+
+ ntpd/ntpd-opts.c@1.58, 2007-04-14 07:53:21-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ ntpd/ntpd-opts.h@1.58, 2007-04-14 07:53:21-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P1_RC1
+
+ ntpd/ntpd-opts.texi@1.57, 2007-04-14 07:53:23-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ ntpd/ntpd.1@1.56, 2007-04-14 07:53:23-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ ntpd/ntpdsim-opts.c@1.58, 2007-04-14 07:53:24-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ ntpd/ntpdsim-opts.h@1.58, 2007-04-14 07:53:25-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P1_RC1
+
+ ntpd/ntpdsim-opts.texi@1.56, 2007-04-14 07:53:26-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P1_RC1
+
+ ntpd/ntpdsim.1@1.56, 2007-04-14 07:53:27-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ ntpdc/ntpdc-opts.c@1.58, 2007-04-14 07:53:28-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ ntpdc/ntpdc-opts.h@1.58, 2007-04-14 07:53:29-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P1_RC1
+
+ ntpdc/ntpdc-opts.texi@1.56, 2007-04-14 07:53:30-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ ntpdc/ntpdc.1@1.56, 2007-04-14 07:53:30-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ ntpq/ntpq-opts.c@1.60, 2007-04-14 07:53:31-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ ntpq/ntpq-opts.h@1.60, 2007-04-14 07:53:32-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P1_RC1
+
+ ntpq/ntpq-opts.texi@1.57, 2007-04-14 07:53:33-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ ntpq/ntpq.1@1.56, 2007-04-14 07:53:33-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ packageinfo.sh@1.76, 2007-04-14 07:53:34-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ sntp/sntp-opts.c@1.56, 2007-04-14 07:53:35-04:00, stenn@whimsy.udel.edu +8 -7
+ NTP_4_2_4P1_RC1
+
+ sntp/sntp-opts.h@1.56, 2007-04-14 07:53:35-04:00, stenn@whimsy.udel.edu +8 -14
+ NTP_4_2_4P1_RC1
+
+ sntp/sntp-opts.texi@1.53, 2007-04-14 07:53:36-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P1_RC1
+
+ sntp/sntp.1@1.56, 2007-04-14 07:53:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ util/ntp-keygen-opts.c@1.57, 2007-04-14 07:53:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ util/ntp-keygen-opts.h@1.57, 2007-04-14 07:53:38-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P1_RC1
+
+ util/ntp-keygen-opts.texi@1.55, 2007-04-14 07:53:39-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ util/ntp-keygen.1@1.55, 2007-04-14 07:53:39-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P1_RC1
+
+ChangeSet@1.1477, 2007-04-14 05:13:18-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ChangeLog@1.11, 2007-04-14 05:12:51-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 811] ntpd should not read a .ntprc file
+
+ChangeSet@1.1476, 2007-04-14 04:47:21-04:00, stenn@whimsy.udel.edu +1 -0
+ start an RC cycle
+
+ packageinfo.sh@1.75, 2007-04-14 04:47:01-04:00, stenn@whimsy.udel.edu +2 -2
+ start an RC cycle
+
+ChangeSet@1.1475, 2007-04-14 02:38:03-04:00, stenn@whimsy.udel.edu +32 -0
+ [Bug 811] ntpd should not read a .ntprc file
+
+ clockstuff/Makefile.am@1.6, 2007-04-14 02:35:13-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 811] ntpd should not read a .ntprc file
+
+ clockstuff/clktest-opts.def@1.5, 2007-04-14 02:35:14-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 811] ntpd should not read a .ntprc file
+
+ include/copyright.def@1.4, 2007-04-14 02:35:14-04:00, stenn@whimsy.udel.edu +0 -7
+ [Bug 811] ntpd should not read a .ntprc file
+
+ include/homerc.def@1.1, 2007-04-14 01:19:52-04:00, stenn@whimsy.udel.edu +9 -0
+ BitKeeper file /deacon/backroom/ntp-stable/include/homerc.def
+
+ include/homerc.def@1.0, 2007-04-14 01:19:52-04:00, stenn@whimsy.udel.edu +0 -0
+
+ ntpd/Makefile.am@1.53, 2007-04-14 02:35:14-04:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpd/ntpd-opts.c@1.57, 2007-04-14 02:36:43-04:00, stenn@whimsy.udel.edu +12 -54
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpd/ntpd-opts.h@1.57, 2007-04-14 02:36:44-04:00, stenn@whimsy.udel.edu +8 -22
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpd/ntpd-opts.texi@1.56, 2007-04-14 02:36:44-04:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpd/ntpd.1@1.55, 2007-04-14 02:36:45-04:00, stenn@whimsy.udel.edu +3 -19
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpd/ntpdsim-opts.c@1.57, 2007-04-14 02:36:46-04:00, stenn@whimsy.udel.edu +7 -6
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpd/ntpdsim-opts.def@1.6, 2007-04-14 02:35:15-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpd/ntpdsim-opts.h@1.57, 2007-04-14 02:36:46-04:00, stenn@whimsy.udel.edu +6 -12
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpd/ntpdsim-opts.texi@1.55, 2007-04-14 02:36:47-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpd/ntpdsim.1@1.55, 2007-04-14 02:36:48-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpdc/Makefile.am@1.34, 2007-04-14 02:35:15-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpdc/ntpdc-opts.c@1.57, 2007-04-14 02:36:48-04:00, stenn@whimsy.udel.edu +7 -6
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpdc/ntpdc-opts.def@1.13, 2007-04-14 02:35:16-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpdc/ntpdc-opts.h@1.57, 2007-04-14 02:36:49-04:00, stenn@whimsy.udel.edu +6 -12
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpdc/ntpdc-opts.texi@1.55, 2007-04-14 02:36:50-04:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpdc/ntpdc.1@1.55, 2007-04-14 02:36:51-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpq/Makefile.am@1.26, 2007-04-14 02:35:16-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpq/ntpq-opts.c@1.59, 2007-04-14 02:36:52-04:00, stenn@whimsy.udel.edu +7 -6
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpq/ntpq-opts.def@1.12, 2007-04-14 02:35:16-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpq/ntpq-opts.h@1.59, 2007-04-14 02:36:53-04:00, stenn@whimsy.udel.edu +6 -12
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpq/ntpq-opts.texi@1.56, 2007-04-14 02:36:53-04:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 811] ntpd should not read a .ntprc file
+
+ ntpq/ntpq.1@1.55, 2007-04-14 02:36:54-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 811] ntpd should not read a .ntprc file
+
+ util/Makefile.am@1.35, 2007-04-14 02:35:17-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 811] ntpd should not read a .ntprc file
+
+ util/ntp-keygen-opts.c@1.56, 2007-04-14 02:36:55-04:00, stenn@whimsy.udel.edu +7 -6
+ [Bug 811] ntpd should not read a .ntprc file
+
+ util/ntp-keygen-opts.def@1.7, 2007-04-14 02:35:18-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 811] ntpd should not read a .ntprc file
+
+ util/ntp-keygen-opts.h@1.56, 2007-04-14 02:36:55-04:00, stenn@whimsy.udel.edu +6 -12
+ [Bug 811] ntpd should not read a .ntprc file
+
+ util/ntp-keygen-opts.texi@1.54, 2007-04-14 02:36:56-04:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 811] ntpd should not read a .ntprc file
+
+ util/ntp-keygen.1@1.54, 2007-04-14 02:36:57-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 811] ntpd should not read a .ntprc file
+
+ChangeSet@1.1474, 2007-04-14 01:11:33-04:00, stenn@whimsy.udel.edu +166 -0
+ autogen/libopts upgrade
+
+ BitKeeper/deleted/.del-COPYING.lgpl@1.3, 2007-04-13 18:58:46-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/COPYING.lgpl
+
+ sntp/libopts/COPYING.lgpl@1.1, 2007-04-13 19:09:02-04:00, stenn@whimsy.udel.edu +502 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/COPYING.lgpl
+
+ sntp/libopts/COPYING.lgpl@1.0, 2007-04-13 19:09:02-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-COPYING.lgpl~54a90ba0899593cb@1.2, 2007-04-13 19:05:57-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/COPYING.lgpl
+
+ libopts/COPYING.lgpl@1.1, 2007-04-13 19:10:05-04:00, stenn@whimsy.udel.edu +502 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/COPYING.lgpl
+
+ libopts/COPYING.lgpl@1.0, 2007-04-13 19:10:05-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-COPYING.mbsd@1.2, 2007-04-13 18:58:48-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/COPYING.mbsd
+
+ libopts/COPYING.mbsd@1.1, 2007-04-13 19:10:05-04:00, stenn@whimsy.udel.edu +26 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/COPYING.mbsd
+
+ libopts/COPYING.mbsd@1.0, 2007-04-13 19:10:05-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-COPYING.mbsd~9b1945bb2136c70b@1.2, 2007-04-13 19:05:59-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/COPYING.mbsd
+
+ sntp/libopts/COPYING.mbsd@1.1, 2007-04-13 19:09:03-04:00, stenn@whimsy.udel.edu +26 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/COPYING.mbsd
+
+ sntp/libopts/COPYING.mbsd@1.0, 2007-04-13 19:09:03-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-MakeDefs.inc@1.2, 2007-04-13 18:58:49-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/MakeDefs.inc
+
+ BitKeeper/deleted/.del-MakeDefs.inc~2b8fdfc9df6d652d@1.2, 2007-04-13 19:06:00-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/MakeDefs.inc
+
+ sntp/libopts/MakeDefs.inc@1.1, 2007-04-13 19:09:03-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/MakeDefs.inc
+
+ sntp/libopts/MakeDefs.inc@1.0, 2007-04-13 19:09:03-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/MakeDefs.inc@1.1, 2007-04-13 19:10:05-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/MakeDefs.inc
+
+ libopts/MakeDefs.inc@1.0, 2007-04-13 19:10:05-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-Makefile.am@1.7, 2007-04-13 18:58:50-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/Makefile.am
+
+ libopts/Makefile.am@1.1, 2007-04-13 19:10:05-04:00, stenn@whimsy.udel.edu +24 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/Makefile.am
+
+ libopts/Makefile.am@1.0, 2007-04-13 19:10:05-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-Makefile.am~fa9bd87b6045015c@1.5, 2007-04-13 19:06:01-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/Makefile.am
+
+ sntp/libopts/Makefile.am@1.1, 2007-04-13 19:09:03-04:00, stenn@whimsy.udel.edu +24 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/Makefile.am
+
+ sntp/libopts/Makefile.am@1.0, 2007-04-13 19:09:03-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-README@1.2, 2007-04-13 18:58:51-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/README
+
+ BitKeeper/deleted/.del-README~1ae087758ee867d4@1.2, 2007-04-13 19:06:02-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/README
+
+ sntp/libopts/README@1.1, 2007-04-13 19:09:03-04:00, stenn@whimsy.udel.edu +93 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/README
+
+ sntp/libopts/README@1.0, 2007-04-13 19:09:03-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/README@1.1, 2007-04-13 19:10:05-04:00, stenn@whimsy.udel.edu +93 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/README
+
+ libopts/README@1.0, 2007-04-13 19:10:05-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-autoopts.c@1.11, 2007-04-13 18:58:52-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/autoopts.c
+
+ BitKeeper/deleted/.del-autoopts.c~5b417341bc85d7a8@1.8, 2007-04-13 19:06:03-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/autoopts.c
+
+ sntp/libopts/autoopts.c@1.1, 2007-04-13 19:08:52-04:00, stenn@whimsy.udel.edu +1101 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/autoopts.c
+
+ sntp/libopts/autoopts.c@1.0, 2007-04-13 19:08:52-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/autoopts.c@1.1, 2007-04-13 19:10:06-04:00, stenn@whimsy.udel.edu +1101 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/autoopts.c
+
+ libopts/autoopts.c@1.0, 2007-04-13 19:10:06-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-autoopts.h@1.10, 2007-04-13 18:58:53-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/autoopts.h
+
+ libopts/autoopts.h@1.1, 2007-04-13 19:10:06-04:00, stenn@whimsy.udel.edu +377 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/autoopts.h
+
+ libopts/autoopts.h@1.0, 2007-04-13 19:10:06-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-autoopts.h~8cdce21b181a1a01@1.8, 2007-04-13 19:06:05-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/autoopts.h
+
+ sntp/libopts/autoopts.h@1.1, 2007-04-13 19:08:51-04:00, stenn@whimsy.udel.edu +377 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/autoopts.h
+
+ sntp/libopts/autoopts.h@1.0, 2007-04-13 19:08:51-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-boolean.c@1.9, 2007-04-13 18:58:54-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/boolean.c
+
+ sntp/libopts/boolean.c@1.1, 2007-04-13 19:08:52-04:00, stenn@whimsy.udel.edu +106 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/boolean.c
+
+ sntp/libopts/boolean.c@1.0, 2007-04-13 19:08:52-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-boolean.c~a5d10c8997e6a2e2@1.6, 2007-04-13 19:06:06-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/boolean.c
+
+ libopts/boolean.c@1.1, 2007-04-13 19:10:07-04:00, stenn@whimsy.udel.edu +106 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/boolean.c
+
+ libopts/boolean.c@1.0, 2007-04-13 19:10:07-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-compat.h@1.13, 2007-04-13 19:04:47-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/compat.h
+
+ sntp/libopts/compat/compat.h@1.1, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +314 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/compat/compat.h
+
+ sntp/libopts/compat/compat.h@1.0, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-compat.h~9682d0ac273ae32@1.9, 2007-04-13 19:06:50-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/compat.h
+
+ libopts/compat/compat.h@1.1, 2007-04-13 19:10:38-04:00, stenn@whimsy.udel.edu +314 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/compat/compat.h
+
+ libopts/compat/compat.h@1.0, 2007-04-13 19:10:38-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-configfile.c@1.11, 2007-04-13 18:58:56-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/configfile.c
+
+ libopts/configfile.c@1.1, 2007-04-13 19:10:07-04:00, stenn@whimsy.udel.edu +1288 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/configfile.c
+
+ libopts/configfile.c@1.0, 2007-04-13 19:10:07-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-configfile.c~8194f784686fa804@1.8, 2007-04-13 19:06:07-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/configfile.c
+
+ sntp/libopts/configfile.c@1.1, 2007-04-13 19:08:52-04:00, stenn@whimsy.udel.edu +1288 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/configfile.c
+
+ sntp/libopts/configfile.c@1.0, 2007-04-13 19:08:52-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-cook.c@1.10, 2007-04-13 18:58:57-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/cook.c
+
+ sntp/libopts/cook.c@1.1, 2007-04-13 19:08:53-04:00, stenn@whimsy.udel.edu +354 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/cook.c
+
+ sntp/libopts/cook.c@1.0, 2007-04-13 19:08:53-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/cook.c@1.1, 2007-04-13 19:10:08-04:00, stenn@whimsy.udel.edu +354 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/cook.c
+
+ libopts/cook.c@1.0, 2007-04-13 19:10:08-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-cook.c~e48d079a438432dc@1.7, 2007-04-13 19:06:08-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/cook.c
+
+ BitKeeper/deleted/.del-enumeration.c@1.10, 2007-04-13 18:58:59-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/enumeration.c
+
+ libopts/enumeration.c@1.1, 2007-04-13 19:10:09-04:00, stenn@whimsy.udel.edu +498 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/enumeration.c
+
+ libopts/enumeration.c@1.0, 2007-04-13 19:10:09-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-enumeration.c~5f4e6af2706370ae@1.7, 2007-04-13 19:06:10-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/enumeration.c
+
+ sntp/libopts/enumeration.c@1.1, 2007-04-13 19:08:53-04:00, stenn@whimsy.udel.edu +498 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/enumeration.c
+
+ sntp/libopts/enumeration.c@1.0, 2007-04-13 19:08:53-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-environment.c@1.9, 2007-04-13 18:59:00-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/environment.c
+
+ BitKeeper/deleted/.del-environment.c~2bae2966695067c2@1.6, 2007-04-13 19:06:11-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/environment.c
+
+ sntp/libopts/environment.c@1.1, 2007-04-13 19:08:54-04:00, stenn@whimsy.udel.edu +260 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/environment.c
+
+ sntp/libopts/environment.c@1.0, 2007-04-13 19:08:54-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/environment.c@1.1, 2007-04-13 19:10:09-04:00, stenn@whimsy.udel.edu +260 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/environment.c
+
+ libopts/environment.c@1.0, 2007-04-13 19:10:09-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-genshell.c@1.10, 2007-04-13 18:59:01-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/genshell.c
+
+ BitKeeper/deleted/.del-genshell.c~1fd152b2b52bdab@1.7, 2007-04-13 19:06:12-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/genshell.c
+
+ libopts/genshell.c@1.1, 2007-04-13 19:10:10-04:00, stenn@whimsy.udel.edu +345 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/genshell.c
+
+ libopts/genshell.c@1.0, 2007-04-13 19:10:10-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/genshell.c@1.1, 2007-04-13 19:08:55-04:00, stenn@whimsy.udel.edu +345 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/genshell.c
+
+ sntp/libopts/genshell.c@1.0, 2007-04-13 19:08:55-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-genshell.h@1.10, 2007-04-13 18:59:02-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/genshell.h
+
+ BitKeeper/deleted/.del-genshell.h~375f0fa5b925f454@1.7, 2007-04-13 19:06:14-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/genshell.h
+
+ libopts/genshell.h@1.1, 2007-04-13 19:10:10-04:00, stenn@whimsy.udel.edu +149 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/genshell.h
+
+ libopts/genshell.h@1.0, 2007-04-13 19:10:10-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/genshell.h@1.1, 2007-04-13 19:08:51-04:00, stenn@whimsy.udel.edu +149 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/genshell.h
+
+ sntp/libopts/genshell.h@1.0, 2007-04-13 19:08:51-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-libopts.c@1.4, 2007-04-13 18:59:04-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/libopts.c
+
+ BitKeeper/deleted/.del-libopts.c~58b8fbed850e6d5e@1.4, 2007-04-13 19:06:15-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/libopts.c
+
+ libopts/libopts.c@1.1, 2007-04-13 19:10:10-04:00, stenn@whimsy.udel.edu +30 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/libopts.c
+
+ libopts/libopts.c@1.0, 2007-04-13 19:10:10-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/libopts.c@1.1, 2007-04-13 19:08:50-04:00, stenn@whimsy.udel.edu +30 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/libopts.c
+
+ sntp/libopts/libopts.c@1.0, 2007-04-13 19:08:50-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-libopts.m4@1.15, 2007-04-13 19:04:54-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/m4/libopts.m4
+
+ libopts/m4/libopts.m4@1.1, 2007-04-13 19:10:43-04:00, stenn@whimsy.udel.edu +489 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/m4/libopts.m4
+
+ libopts/m4/libopts.m4@1.0, 2007-04-13 19:10:43-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-libopts.m4~9e0f33f57d3a0a9@1.12, 2007-04-13 19:06:56-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/m4/libopts.m4
+
+ sntp/libopts/m4/libopts.m4@1.1, 2007-04-13 19:08:50-04:00, stenn@whimsy.udel.edu +489 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/m4/libopts.m4
+
+ sntp/libopts/m4/libopts.m4@1.0, 2007-04-13 19:08:50-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-liboptschk.m4@1.4, 2007-04-13 19:04:55-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/m4/liboptschk.m4
+
+ libopts/m4/liboptschk.m4@1.1, 2007-04-13 19:10:43-04:00, stenn@whimsy.udel.edu +42 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/m4/liboptschk.m4
+
+ libopts/m4/liboptschk.m4@1.0, 2007-04-13 19:10:43-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/m4/liboptschk.m4@1.1, 2007-04-13 19:08:50-04:00, stenn@whimsy.udel.edu +42 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/m4/liboptschk.m4
+
+ sntp/libopts/m4/liboptschk.m4@1.0, 2007-04-13 19:08:50-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-liboptschk.m4~bbeebebe76865058@1.4, 2007-04-13 19:06:58-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/m4/liboptschk.m4
+
+ BitKeeper/deleted/.del-libtool.m4@1.2, 2007-04-13 19:04:57-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/m4/libtool.m4
+
+ BitKeeper/deleted/.del-libtool.m4~db8acbd0fb34597f@1.2, 2007-04-13 19:07:00-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/m4/libtool.m4
+
+ BitKeeper/deleted/.del-load.c@1.11, 2007-04-13 18:59:05-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/load.c
+
+ BitKeeper/deleted/.del-load.c~59960aa12bb95bf7@1.8, 2007-04-13 19:06:16-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/load.c
+
+ sntp/libopts/load.c@1.1, 2007-04-13 19:08:55-04:00, stenn@whimsy.udel.edu +563 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/load.c
+
+ sntp/libopts/load.c@1.0, 2007-04-13 19:08:55-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/load.c@1.1, 2007-04-13 19:10:11-04:00, stenn@whimsy.udel.edu +563 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/load.c
+
+ libopts/load.c@1.0, 2007-04-13 19:10:11-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-makeshell.c@1.12, 2007-04-13 18:59:06-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/makeshell.c
+
+ BitKeeper/deleted/.del-makeshell.c~4fcd12fc31c0a4a4@1.9, 2007-04-13 19:06:18-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/makeshell.c
+
+ sntp/libopts/makeshell.c@1.1, 2007-04-13 19:08:56-04:00, stenn@whimsy.udel.edu +1122 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/makeshell.c
+
+ sntp/libopts/makeshell.c@1.0, 2007-04-13 19:08:56-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/makeshell.c@1.1, 2007-04-13 19:10:11-04:00, stenn@whimsy.udel.edu +1122 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/makeshell.c
+
+ libopts/makeshell.c@1.0, 2007-04-13 19:10:11-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-nested.c@1.10, 2007-04-13 18:59:07-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/nested.c
+
+ sntp/libopts/nested.c@1.1, 2007-04-13 19:08:57-04:00, stenn@whimsy.udel.edu +733 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/nested.c
+
+ sntp/libopts/nested.c@1.0, 2007-04-13 19:08:57-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-nested.c~85346d5d12098689@1.7, 2007-04-13 19:06:19-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/nested.c
+
+ libopts/nested.c@1.1, 2007-04-13 19:10:12-04:00, stenn@whimsy.udel.edu +733 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/nested.c
+
+ libopts/nested.c@1.0, 2007-04-13 19:10:12-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-numeric.c@1.10, 2007-04-13 18:59:08-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/numeric.c
+
+ BitKeeper/deleted/.del-numeric.c~cdb7deb5cf6f27c2@1.7, 2007-04-13 19:06:21-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/numeric.c
+
+ sntp/libopts/numeric.c@1.1, 2007-04-13 19:08:57-04:00, stenn@whimsy.udel.edu +93 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/numeric.c
+
+ sntp/libopts/numeric.c@1.0, 2007-04-13 19:08:57-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/numeric.c@1.1, 2007-04-13 19:10:12-04:00, stenn@whimsy.udel.edu +93 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/numeric.c
+
+ libopts/numeric.c@1.0, 2007-04-13 19:10:12-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-options.h@1.11, 2007-04-13 19:04:44-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/autoopts/options.h
+
+ sntp/libopts/autoopts/options.h@1.1, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +964 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/autoopts/options.h
+
+ sntp/libopts/autoopts/options.h@1.0, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-options.h~6eb465cb95a56bee@1.8, 2007-04-13 19:06:45-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/autoopts/options.h
+
+ libopts/autoopts/options.h@1.1, 2007-04-13 19:10:30-04:00, stenn@whimsy.udel.edu +964 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/autoopts/options.h
+
+ libopts/autoopts/options.h@1.0, 2007-04-13 19:10:30-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-pathfind.c@1.10, 2007-04-13 19:04:49-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/pathfind.c
+
+ sntp/libopts/compat/pathfind.c@1.1, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +339 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/compat/pathfind.c
+
+ sntp/libopts/compat/pathfind.c@1.0, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-pathfind.c~a0863179d884d4a4@1.7, 2007-04-13 19:06:51-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/pathfind.c
+
+ libopts/compat/pathfind.c@1.1, 2007-04-13 19:10:38-04:00, stenn@whimsy.udel.edu +339 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/compat/pathfind.c
+
+ libopts/compat/pathfind.c@1.0, 2007-04-13 19:10:38-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-pgusage.c@1.10, 2007-04-13 18:59:09-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/pgusage.c
+
+ sntp/libopts/pgusage.c@1.1, 2007-04-13 19:08:57-04:00, stenn@whimsy.udel.edu +157 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/pgusage.c
+
+ sntp/libopts/pgusage.c@1.0, 2007-04-13 19:08:57-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/pgusage.c@1.1, 2007-04-13 19:10:12-04:00, stenn@whimsy.udel.edu +157 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/pgusage.c
+
+ libopts/pgusage.c@1.0, 2007-04-13 19:10:12-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-pgusage.c~d981c42eb301cfdd@1.6, 2007-04-13 19:06:22-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/pgusage.c
+
+ BitKeeper/deleted/.del-proto.h@1.12, 2007-04-13 18:59:11-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/proto.h
+
+ sntp/libopts/proto.h@1.1, 2007-04-13 19:08:52-04:00, stenn@whimsy.udel.edu +91 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/proto.h
+
+ sntp/libopts/proto.h@1.0, 2007-04-13 19:08:52-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/proto.h@1.1, 2007-04-13 19:10:12-04:00, stenn@whimsy.udel.edu +91 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/proto.h
+
+ libopts/proto.h@1.0, 2007-04-13 19:10:12-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-proto.h~fa076f6dd9d0667e@1.9, 2007-04-13 19:06:23-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/proto.h
+
+ BitKeeper/deleted/.del-putshell.c@1.11, 2007-04-13 18:59:12-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/putshell.c
+
+ BitKeeper/deleted/.del-putshell.c~24959f5e1ba688e6@1.8, 2007-04-13 19:06:24-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/putshell.c
+
+ sntp/libopts/putshell.c@1.1, 2007-04-13 19:08:57-04:00, stenn@whimsy.udel.edu +335 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/putshell.c
+
+ sntp/libopts/putshell.c@1.0, 2007-04-13 19:08:57-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/putshell.c@1.1, 2007-04-13 19:10:12-04:00, stenn@whimsy.udel.edu +335 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/putshell.c
+
+ libopts/putshell.c@1.0, 2007-04-13 19:10:12-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-restore.c@1.10, 2007-04-13 18:59:13-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/restore.c
+
+ sntp/libopts/restore.c@1.1, 2007-04-13 19:08:58-04:00, stenn@whimsy.udel.edu +250 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/restore.c
+
+ sntp/libopts/restore.c@1.0, 2007-04-13 19:08:57-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/restore.c@1.1, 2007-04-13 19:10:13-04:00, stenn@whimsy.udel.edu +250 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/restore.c
+
+ libopts/restore.c@1.0, 2007-04-13 19:10:13-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-restore.c~eada4acbf21cd8bf@1.6, 2007-04-13 19:06:26-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/restore.c
+
+ BitKeeper/deleted/.del-save.c@1.11, 2007-04-13 18:59:15-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/save.c
+
+ libopts/save.c@1.1, 2007-04-13 19:10:14-04:00, stenn@whimsy.udel.edu +512 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/save.c
+
+ libopts/save.c@1.0, 2007-04-13 19:10:14-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-save.c~a29f5bd429a568bb@1.8, 2007-04-13 19:06:27-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/save.c
+
+ sntp/libopts/save.c@1.1, 2007-04-13 19:08:58-04:00, stenn@whimsy.udel.edu +512 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/save.c
+
+ sntp/libopts/save.c@1.0, 2007-04-13 19:08:58-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-snprintf.c@1.5, 2007-04-13 19:04:50-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/snprintf.c
+
+ libopts/compat/snprintf.c@1.1, 2007-04-13 19:10:39-04:00, stenn@whimsy.udel.edu +60 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/compat/snprintf.c
+
+ libopts/compat/snprintf.c@1.0, 2007-04-13 19:10:39-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-snprintf.c~66578c716014cd3d@1.4, 2007-04-13 19:06:52-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/snprintf.c
+
+ sntp/libopts/compat/snprintf.c@1.1, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +60 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/compat/snprintf.c
+
+ sntp/libopts/compat/snprintf.c@1.0, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-sort.c@1.9, 2007-04-13 18:59:16-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/sort.c
+
+ sntp/libopts/sort.c@1.1, 2007-04-13 19:08:59-04:00, stenn@whimsy.udel.edu +359 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/sort.c
+
+ sntp/libopts/sort.c@1.0, 2007-04-13 19:08:59-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/sort.c@1.1, 2007-04-13 19:10:14-04:00, stenn@whimsy.udel.edu +359 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/sort.c
+
+ libopts/sort.c@1.0, 2007-04-13 19:10:14-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-sort.c~bec5a7fb6a01a5dc@1.5, 2007-04-13 19:06:28-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/sort.c
+
+ BitKeeper/deleted/.del-stack.c@1.11, 2007-04-13 18:59:17-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/stack.c
+
+ sntp/libopts/stack.c@1.1, 2007-04-13 19:08:59-04:00, stenn@whimsy.udel.edu +269 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/stack.c
+
+ sntp/libopts/stack.c@1.0, 2007-04-13 19:08:59-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/stack.c@1.1, 2007-04-13 19:10:15-04:00, stenn@whimsy.udel.edu +269 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/stack.c
+
+ libopts/stack.c@1.0, 2007-04-13 19:10:15-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-stack.c~e817b57b18b315c1@1.8, 2007-04-13 19:06:29-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/stack.c
+
+ BitKeeper/deleted/.del-strchr.c@1.4, 2007-04-13 19:04:51-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/strchr.c
+
+ sntp/libopts/compat/strchr.c@1.1, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +60 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/compat/strchr.c
+
+ sntp/libopts/compat/strchr.c@1.0, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/compat/strchr.c@1.1, 2007-04-13 19:10:39-04:00, stenn@whimsy.udel.edu +60 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/compat/strchr.c
+
+ libopts/compat/strchr.c@1.0, 2007-04-13 19:10:39-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-strchr.c~80e88afbe7e2209a@1.4, 2007-04-13 19:06:53-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/strchr.c
+
+ BitKeeper/deleted/.del-strdup.c@1.4, 2007-04-13 19:04:52-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/strdup.c
+
+ BitKeeper/deleted/.del-strdup.c~1f262be5e55c3c4a@1.3, 2007-04-13 19:06:54-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/strdup.c
+
+ sntp/libopts/compat/strdup.c@1.1, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +19 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/compat/strdup.c
+
+ sntp/libopts/compat/strdup.c@1.0, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/compat/strdup.c@1.1, 2007-04-13 19:10:39-04:00, stenn@whimsy.udel.edu +19 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/compat/strdup.c
+
+ libopts/compat/strdup.c@1.0, 2007-04-13 19:10:39-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-streqvcmp.c@1.10, 2007-04-13 18:59:19-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/streqvcmp.c
+
+ BitKeeper/deleted/.del-streqvcmp.c~66420c6082b06827@1.7, 2007-04-13 19:06:31-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/streqvcmp.c
+
+ libopts/streqvcmp.c@1.1, 2007-04-13 19:10:15-04:00, stenn@whimsy.udel.edu +289 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/streqvcmp.c
+
+ libopts/streqvcmp.c@1.0, 2007-04-13 19:10:15-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/streqvcmp.c@1.1, 2007-04-13 19:09:00-04:00, stenn@whimsy.udel.edu +289 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/streqvcmp.c
+
+ sntp/libopts/streqvcmp.c@1.0, 2007-04-13 19:09:00-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-text_mmap.c@1.9, 2007-04-13 18:59:20-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/text_mmap.c
+
+ libopts/text_mmap.c@1.1, 2007-04-13 19:10:16-04:00, stenn@whimsy.udel.edu +363 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/text_mmap.c
+
+ libopts/text_mmap.c@1.0, 2007-04-13 19:10:16-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/text_mmap.c@1.1, 2007-04-13 19:09:01-04:00, stenn@whimsy.udel.edu +363 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/text_mmap.c
+
+ sntp/libopts/text_mmap.c@1.0, 2007-04-13 19:09:01-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-text_mmap.c~f1915a52b87816ba@1.6, 2007-04-13 19:06:32-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/text_mmap.c
+
+ BitKeeper/deleted/.del-tokenize.c@1.6, 2007-04-13 18:59:21-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/tokenize.c
+
+ sntp/libopts/tokenize.c@1.1, 2007-04-13 19:09:01-04:00, stenn@whimsy.udel.edu +321 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/tokenize.c
+
+ sntp/libopts/tokenize.c@1.0, 2007-04-13 19:09:01-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/tokenize.c@1.1, 2007-04-13 19:10:17-04:00, stenn@whimsy.udel.edu +321 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/tokenize.c
+
+ libopts/tokenize.c@1.0, 2007-04-13 19:10:17-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-tokenize.c~ae2f23dbb2bee589@1.5, 2007-04-13 19:06:33-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/tokenize.c
+
+ BitKeeper/deleted/.del-usage-txt.h@1.10, 2007-04-13 19:04:46-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/autoopts/usage-txt.h
+
+ libopts/autoopts/usage-txt.h@1.1, 2007-04-13 19:10:31-04:00, stenn@whimsy.udel.edu +355 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/autoopts/usage-txt.h
+
+ libopts/autoopts/usage-txt.h@1.0, 2007-04-13 19:10:31-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-usage-txt.h~6ce4dce87430d1b@1.7, 2007-04-13 19:06:47-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/autoopts/usage-txt.h
+
+ sntp/libopts/autoopts/usage-txt.h@1.1, 2007-04-13 19:08:49-04:00, stenn@whimsy.udel.edu +355 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/autoopts/usage-txt.h
+
+ sntp/libopts/autoopts/usage-txt.h@1.0, 2007-04-13 19:08:49-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-usage.c@1.10, 2007-04-13 18:59:22-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/usage.c
+
+ BitKeeper/deleted/.del-usage.c~c868ef1e661a6eb1@1.8, 2007-04-13 19:06:34-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/usage.c
+
+ sntp/libopts/usage.c@1.1, 2007-04-13 19:09:02-04:00, stenn@whimsy.udel.edu +731 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/usage.c
+
+ sntp/libopts/usage.c@1.0, 2007-04-13 19:09:02-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/usage.c@1.1, 2007-04-13 19:10:17-04:00, stenn@whimsy.udel.edu +731 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/usage.c
+
+ libopts/usage.c@1.0, 2007-04-13 19:10:17-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-version.c@1.10, 2007-04-13 18:59:24-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/version.c
+
+ BitKeeper/deleted/.del-version.c~a426e6b58b20d06@1.7, 2007-04-13 19:06:35-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/version.c
+
+ sntp/libopts/version.c@1.1, 2007-04-13 19:09:02-04:00, stenn@whimsy.udel.edu +176 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/version.c
+
+ sntp/libopts/version.c@1.0, 2007-04-13 19:09:02-04:00, stenn@whimsy.udel.edu +0 -0
+
+ libopts/version.c@1.1, 2007-04-13 19:10:18-04:00, stenn@whimsy.udel.edu +176 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/version.c
+
+ libopts/version.c@1.0, 2007-04-13 19:10:18-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-windows-config.h@1.6, 2007-04-13 19:04:53-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libopts/compat/windows-config.h
+
+ sntp/libopts/compat/windows-config.h@1.1, 2007-04-13 19:08:48-04:00, stenn@whimsy.udel.edu +129 -0
+ BitKeeper file /deacon/backroom/ntp-stable/sntp/libopts/compat/windows-config.h
+
+ sntp/libopts/compat/windows-config.h@1.0, 2007-04-13 19:08:47-04:00, stenn@whimsy.udel.edu +0 -0
+
+ BitKeeper/deleted/.del-windows-config.h~36f7ad2ccf764ad2@1.4, 2007-04-13 19:06:56-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: sntp/libopts/compat/windows-config.h
+
+ libopts/compat/windows-config.h@1.1, 2007-04-13 19:10:39-04:00, stenn@whimsy.udel.edu +129 -0
+ BitKeeper file /deacon/backroom/ntp-stable/libopts/compat/windows-config.h
+
+ libopts/compat/windows-config.h@1.0, 2007-04-13 19:10:39-04:00, stenn@whimsy.udel.edu +0 -0
+
+ChangeSet@1.1473, 2007-04-12 06:32:19-04:00, stenn@whimsy.udel.edu +1 -0
+ Added ntp2 mirror
+
+ BitKeeper/triggers/2mirrors@1.4, 2007-04-12 06:30:59-04:00, stenn@whimsy.udel.edu +1 -0
+ Added ntp2 mirror
+
+ChangeSet@1.1472, 2007-03-07 06:46:09-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P0
+ TAG: NTP_4_2_4P0
+
+ ntpd/ntpd-opts.c@1.56, 2007-03-07 06:45:46-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ ntpd/ntpd-opts.h@1.56, 2007-03-07 06:45:47-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0
+
+ ntpd/ntpd-opts.texi@1.55, 2007-03-07 06:45:48-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0
+
+ ntpd/ntpd.1@1.54, 2007-03-07 06:45:48-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ ntpd/ntpdsim-opts.c@1.56, 2007-03-07 06:45:49-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ ntpd/ntpdsim-opts.h@1.56, 2007-03-07 06:45:50-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0
+
+ ntpd/ntpdsim-opts.texi@1.54, 2007-03-07 06:45:51-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0
+
+ ntpd/ntpdsim.1@1.54, 2007-03-07 06:45:51-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ ntpdc/ntpdc-opts.c@1.56, 2007-03-07 06:45:52-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ ntpdc/ntpdc-opts.h@1.56, 2007-03-07 06:45:53-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0
+
+ ntpdc/ntpdc-opts.texi@1.54, 2007-03-07 06:45:53-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0
+
+ ntpdc/ntpdc.1@1.54, 2007-03-07 06:45:54-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ ntpq/ntpq-opts.c@1.58, 2007-03-07 06:45:55-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ ntpq/ntpq-opts.h@1.58, 2007-03-07 06:45:56-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0
+
+ ntpq/ntpq-opts.texi@1.55, 2007-03-07 06:45:57-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0
+
+ ntpq/ntpq.1@1.54, 2007-03-07 06:45:58-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ packageinfo.sh@1.74, 2007-03-07 06:45:58-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ sntp/sntp-opts.c@1.55, 2007-03-07 06:45:59-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ sntp/sntp-opts.h@1.55, 2007-03-07 06:46:00-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0
+
+ sntp/sntp-opts.texi@1.52, 2007-03-07 06:46:01-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0
+
+ sntp/sntp.1@1.55, 2007-03-07 06:46:01-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ util/ntp-keygen-opts.c@1.55, 2007-03-07 06:46:03-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ util/ntp-keygen-opts.h@1.55, 2007-03-07 06:46:03-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0
+
+ util/ntp-keygen-opts.texi@1.53, 2007-03-07 06:46:04-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0
+
+ util/ntp-keygen.1@1.53, 2007-03-07 06:46:05-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0
+
+ChangeSet@1.1471, 2007-03-07 00:53:31-05:00, stenn@whimsy.udel.edu +1 -0
+ time to release
+
+ packageinfo.sh@1.73, 2007-03-07 00:53:21-05:00, stenn@whimsy.udel.edu +3 -1
+ time to release
+
+ChangeSet@1.1470, 2007-03-03 19:21:29-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 793] Update Hans Lambermont's email address in ntpsweep
+
+ ChangeLog@1.10, 2007-03-03 19:21:16-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 793] Update Hans Lambermont's email address in ntpsweep
+
+ scripts/ntpsweep.in@1.3, 2007-03-03 19:21:17-05:00, stenn@whimsy.udel.edu +1 -2
+ [Bug 793] Update Hans Lambermont's email address in ntpsweep
+
+ChangeSet@1.1469, 2007-02-24 06:42:26-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P0_RC5
+ TAG: NTP_4_2_4P0_RC5
+
+ ntpd/ntpd-opts.c@1.55, 2007-02-24 06:42:04-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ ntpd/ntpd-opts.h@1.55, 2007-02-24 06:42:05-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC5
+
+ ntpd/ntpd-opts.texi@1.54, 2007-02-24 06:42:06-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0_RC5
+
+ ntpd/ntpd.1@1.53, 2007-02-24 06:42:07-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ ntpd/ntpdsim-opts.c@1.55, 2007-02-24 06:42:08-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ ntpd/ntpdsim-opts.h@1.55, 2007-02-24 06:42:08-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC5
+
+ ntpd/ntpdsim-opts.texi@1.53, 2007-02-24 06:42:09-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0_RC5
+
+ ntpd/ntpdsim.1@1.53, 2007-02-24 06:42:10-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ ntpdc/ntpdc-opts.c@1.55, 2007-02-24 06:42:11-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ ntpdc/ntpdc-opts.h@1.55, 2007-02-24 06:42:11-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC5
+
+ ntpdc/ntpdc-opts.texi@1.53, 2007-02-24 06:42:12-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0_RC5
+
+ ntpdc/ntpdc.1@1.53, 2007-02-24 06:42:13-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ ntpq/ntpq-opts.c@1.57, 2007-02-24 06:42:13-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ ntpq/ntpq-opts.h@1.57, 2007-02-24 06:42:14-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC5
+
+ ntpq/ntpq-opts.texi@1.54, 2007-02-24 06:42:15-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0_RC5
+
+ ntpq/ntpq.1@1.53, 2007-02-24 06:42:16-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ packageinfo.sh@1.72, 2007-02-24 06:42:17-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0_RC5
+
+ sntp/sntp-opts.c@1.54, 2007-02-24 06:42:17-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ sntp/sntp-opts.h@1.54, 2007-02-24 06:42:18-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC5
+
+ sntp/sntp-opts.texi@1.51, 2007-02-24 06:42:18-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0_RC5
+
+ sntp/sntp.1@1.54, 2007-02-24 06:42:19-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ util/ntp-keygen-opts.c@1.54, 2007-02-24 06:42:20-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ util/ntp-keygen-opts.h@1.54, 2007-02-24 06:42:21-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC5
+
+ util/ntp-keygen-opts.texi@1.52, 2007-02-24 06:42:21-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0_RC5
+
+ util/ntp-keygen.1@1.52, 2007-02-24 06:42:22-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC5
+
+ChangeSet@1.1468, 2007-02-24 05:07:16-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 628] Fallback to ntp discipline not working for large offsets
+
+ ntpd/ntp_loopfilter.c@1.128, 2007-02-24 05:07:04-05:00, stenn@whimsy.udel.edu +9 -24
+ [Bug 628] Fallback to ntp discipline not working for large offsets
+
+ChangeSet@1.1467, 2007-02-21 15:16:15-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 776] Remove the obsolete r: from the getopt string in ntpdate
+
+ ntpdate/ntpdate.c@1.61, 2007-02-21 15:16:00-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 776] Remove the obsolete r: from the getopt string in ntpdate
+
+ChangeSet@1.1466, 2007-02-19 06:46:30-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4P0_RC4
+ TAG: NTP_4_2_4P0_RC4
+
+ ntpd/ntpd-opts.c@1.54, 2007-02-19 06:46:11-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ ntpd/ntpd-opts.h@1.54, 2007-02-19 06:46:11-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC4
+
+ ntpd/ntpd-opts.texi@1.53, 2007-02-19 06:46:12-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ ntpd/ntpd.1@1.52, 2007-02-19 06:46:13-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ ntpd/ntpdsim-opts.c@1.54, 2007-02-19 06:46:13-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ ntpd/ntpdsim-opts.h@1.54, 2007-02-19 06:46:14-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC4
+
+ ntpd/ntpdsim-opts.texi@1.52, 2007-02-19 06:46:15-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0_RC4
+
+ ntpd/ntpdsim.1@1.52, 2007-02-19 06:46:16-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ ntpdc/ntpdc-opts.c@1.54, 2007-02-19 06:46:16-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ ntpdc/ntpdc-opts.h@1.54, 2007-02-19 06:46:17-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC4
+
+ ntpdc/ntpdc-opts.texi@1.52, 2007-02-19 06:46:18-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ ntpdc/ntpdc.1@1.52, 2007-02-19 06:46:18-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ ntpq/ntpq-opts.c@1.56, 2007-02-19 06:46:19-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ ntpq/ntpq-opts.h@1.56, 2007-02-19 06:46:19-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC4
+
+ ntpq/ntpq-opts.texi@1.53, 2007-02-19 06:46:20-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ ntpq/ntpq.1@1.52, 2007-02-19 06:46:21-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ packageinfo.sh@1.71, 2007-02-19 06:46:22-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC4
+
+ sntp/sntp-opts.c@1.53, 2007-02-19 06:46:22-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ sntp/sntp-opts.h@1.53, 2007-02-19 06:46:23-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC4
+
+ sntp/sntp-opts.texi@1.50, 2007-02-19 06:46:24-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4P0_RC4
+
+ sntp/sntp.1@1.53, 2007-02-19 06:46:24-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ util/ntp-keygen-opts.c@1.53, 2007-02-19 06:46:25-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ util/ntp-keygen-opts.h@1.53, 2007-02-19 06:46:25-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4P0_RC4
+
+ util/ntp-keygen-opts.texi@1.51, 2007-02-19 06:46:26-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ util/ntp-keygen.1@1.51, 2007-02-19 06:46:27-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4P0_RC4
+
+ChangeSet@1.1465, 2007-02-19 00:19:22-05:00, stenn@whimsy.udel.edu +1 -0
+ Ready to go...
+
+ packageinfo.sh@1.70, 2007-02-19 00:19:05-05:00, stenn@whimsy.udel.edu +2 -2
+ Ready to go...
+
+ChangeSet@1.1464, 2007-02-19 00:14:29-05:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 776] Remove unimplemented "rate" flag from ntpdate
+
+ ChangeLog@1.9, 2007-02-19 00:14:19-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 776] Remove unimplemented "rate" flag from ntpdate
+
+ ntpdate/Makefile.am@1.15, 2007-02-19 00:13:50-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 776] Remove unimplemented "rate" flag from ntpdate
+
+ ntpdate/ntpdate.c@1.60, 2007-02-19 00:13:51-05:00, stenn@whimsy.udel.edu +1 -21
+ [Bug 776] Remove unimplemented "rate" flag from ntpdate
+
+ChangeSet@1.1463, 2007-02-05 06:47:44-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4_RC3
+ TAG: NTP_4_2_4_RC3
+
+ ntpd/ntpd-opts.c@1.53, 2007-02-05 06:47:21-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ ntpd/ntpd-opts.h@1.53, 2007-02-05 06:47:21-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC3
+
+ ntpd/ntpd-opts.texi@1.52, 2007-02-05 06:47:22-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC3
+
+ ntpd/ntpd.1@1.51, 2007-02-05 06:47:23-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ ntpd/ntpdsim-opts.c@1.53, 2007-02-05 06:47:24-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ ntpd/ntpdsim-opts.h@1.53, 2007-02-05 06:47:24-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC3
+
+ ntpd/ntpdsim-opts.texi@1.51, 2007-02-05 06:47:25-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC3
+
+ ntpd/ntpdsim.1@1.51, 2007-02-05 06:47:26-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ ntpdc/ntpdc-opts.c@1.53, 2007-02-05 06:47:26-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ ntpdc/ntpdc-opts.h@1.53, 2007-02-05 06:47:28-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC3
+
+ ntpdc/ntpdc-opts.texi@1.51, 2007-02-05 06:47:28-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC3
+
+ ntpdc/ntpdc.1@1.51, 2007-02-05 06:47:29-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ ntpq/ntpq-opts.c@1.55, 2007-02-05 06:47:30-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ ntpq/ntpq-opts.h@1.55, 2007-02-05 06:47:30-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC3
+
+ ntpq/ntpq-opts.texi@1.52, 2007-02-05 06:47:31-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC3
+
+ ntpq/ntpq.1@1.51, 2007-02-05 06:47:32-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ packageinfo.sh@1.69, 2007-02-05 06:47:33-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC3
+
+ sntp/sntp-opts.c@1.52, 2007-02-05 06:47:33-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ sntp/sntp-opts.h@1.52, 2007-02-05 06:47:34-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC3
+
+ sntp/sntp-opts.texi@1.49, 2007-02-05 06:47:35-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC3
+
+ sntp/sntp.1@1.52, 2007-02-05 06:47:37-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ util/ntp-keygen-opts.c@1.52, 2007-02-05 06:47:38-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ util/ntp-keygen-opts.h@1.52, 2007-02-05 06:47:39-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC3
+
+ util/ntp-keygen-opts.texi@1.50, 2007-02-05 06:47:39-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC3
+
+ util/ntp-keygen.1@1.50, 2007-02-05 06:47:40-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC3
+
+ChangeSet@1.1462, 2007-02-04 23:08:28-05:00, stenn@whimsy.udel.edu +1 -0
+ Danny forgot to pull before editing - replace the change he undid.
+
+ ntpq/ntpq-subs.c@1.27, 2007-02-04 23:08:17-05:00, stenn@whimsy.udel.edu +3 -2
+ Danny forgot to pull before editing - replace the change he undid.
+
+ChangeSet@1.1461, 2007-02-04 22:53:32-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 586] Avoid lookups if AI_NUMERICHOST is set.
+
+ ChangeLog@1.8, 2007-02-04 22:53:22-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 586] Avoid lookups if AI_NUMERICHOST is set.
+
+ChangeSet@1.1460, 2007-02-04 21:51:15-05:00, mayer@pogo.udel.edu +1 -0
+ Bug #586 Don't do lookups if AI_NUMERICHOST is set
+
+ libntp/ntp_rfc2553.c@1.37, 2007-02-04 21:51:01-05:00, mayer@pogo.udel.edu +6 -0
+ Bug #586 Don't do lookups if AI_NUMERICHOST is set
+
+ChangeSet@1.1459, 2007-02-04 21:44:13-05:00, mayer@pogo.udel.edu +1 -0
+ Bug #586 Check for <4 characters for the refid first
+
+ ntpq/ntpq-subs.c@1.26, 2007-02-04 21:43:38-05:00, mayer@pogo.udel.edu +9 -10
+ Bug #586 Check for <4 characters for the refid first
+
+ChangeSet@1.1458, 2007-02-04 17:56:17+00:00, kardel@pogo.udel.edu +1 -0
+ ntpd.c:
+ comment clarification about capabilities used
+
+ ntpd/ntpd.c@1.84, 2007-02-04 17:55:31+00:00, kardel@pogo.udel.edu +4 -7
+ comment clarification about capabilities used
+
+ChangeSet@1.1451.1.1, 2007-02-04 17:47:20+00:00, kardel@pogo.udel.edu +1 -0
+ ntpd.c:
+ Bug 765:
+ use Linux capability mechanism to allow dynamic interface tracking to continue in
+ unprivileged mode.
+
+ ntpd/ntpd.c@1.83, 2007-02-04 17:45:55+00:00, kardel@pogo.udel.edu +11 -1
+ Bug 765:
+ use Linux capability mechanism to allow dynamic interface tracking to continue in
+ unprivileged mode.
+
+ChangeSet@1.1456, 2007-01-30 06:44:11-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4_RC2
+ TAG: NTP_4_2_4_RC2
+
+ ntpd/ntpd-opts.c@1.52, 2007-01-30 06:43:46-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ ntpd/ntpd-opts.h@1.52, 2007-01-30 06:43:46-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC2
+
+ ntpd/ntpd-opts.texi@1.51, 2007-01-30 06:43:47-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC2
+
+ ntpd/ntpd.1@1.50, 2007-01-30 06:43:48-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ ntpd/ntpdsim-opts.c@1.52, 2007-01-30 06:43:49-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ ntpd/ntpdsim-opts.h@1.52, 2007-01-30 06:43:50-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC2
+
+ ntpd/ntpdsim-opts.texi@1.50, 2007-01-30 06:43:51-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC2
+
+ ntpd/ntpdsim.1@1.50, 2007-01-30 06:43:52-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ ntpdc/ntpdc-opts.c@1.52, 2007-01-30 06:43:52-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ ntpdc/ntpdc-opts.h@1.52, 2007-01-30 06:43:54-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC2
+
+ ntpdc/ntpdc-opts.texi@1.50, 2007-01-30 06:43:55-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC2
+
+ ntpdc/ntpdc.1@1.50, 2007-01-30 06:43:55-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ ntpq/ntpq-opts.c@1.54, 2007-01-30 06:43:56-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ ntpq/ntpq-opts.h@1.54, 2007-01-30 06:43:57-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC2
+
+ ntpq/ntpq-opts.texi@1.51, 2007-01-30 06:43:57-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC2
+
+ ntpq/ntpq.1@1.50, 2007-01-30 06:43:58-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ packageinfo.sh@1.68, 2007-01-30 06:43:59-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC2
+
+ sntp/sntp-opts.c@1.51, 2007-01-30 06:43:59-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ sntp/sntp-opts.h@1.51, 2007-01-30 06:44:00-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC2
+
+ sntp/sntp-opts.texi@1.48, 2007-01-30 06:44:01-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC2
+
+ sntp/sntp.1@1.51, 2007-01-30 06:44:02-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ util/ntp-keygen-opts.c@1.51, 2007-01-30 06:44:03-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ util/ntp-keygen-opts.h@1.51, 2007-01-30 06:44:03-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC2
+
+ util/ntp-keygen-opts.texi@1.49, 2007-01-30 06:44:04-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC2
+
+ util/ntp-keygen.1@1.49, 2007-01-30 06:44:05-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC2
+
+ChangeSet@1.1455, 2007-01-29 21:20:08-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 770] Fix numeric parameters to ntp-keygen (Alain Guibert).
+
+ ChangeLog@1.7, 2007-01-29 21:19:52-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 770] Fix numeric parameters to ntp-keygen (Alain Guibert).
+
+ util/ntp-keygen.c@1.38, 2007-01-29 21:19:53-05:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 770] Fix numeric parameters to ntp-keygen (Alain Guibert).
+
+ChangeSet@1.1454, 2007-01-29 17:43:41-05:00, stenn@whimsy.udel.edu +1 -0
+ More ChangeLog -> CommitLog fixes
+
+ scripts/genCommitLog@1.4, 2007-01-29 17:42:48-05:00, stenn@whimsy.udel.edu +2 -2
+ More ChangeLog -> CommitLog fixes
+
+ChangeSet@1.1453, 2007-01-29 16:52:38-05:00, stenn@whimsy.udel.edu +3 -0
+ More ChangeLog -> CommitLog fixes
+
+ Makefile.am@1.72, 2007-01-29 16:52:06-05:00, stenn@whimsy.udel.edu +5 -5
+ More ChangeLog -> CommitLog fixes
+
+ scripts/Makefile.am@1.15, 2007-01-29 16:52:07-05:00, stenn@whimsy.udel.edu +1 -1
+ More ChangeLog -> CommitLog fixes
+
+ scripts/genCommitLog@1.3, 2007-01-29 16:09:19-05:00, stenn@whimsy.udel.edu +0 -0
+ Rename: scripts/genChangeLog -> scripts/genCommitLog
+
+ChangeSet@1.1452, 2007-01-28 23:24:05-05:00, stenn@whimsy.udel.edu +1 -0
+ Entries for bugs 765 and 768
+
+ ChangeLog@1.6, 2007-01-28 23:23:45-05:00, stenn@whimsy.udel.edu +2 -0
+ Entries for bugs 765 and 768
+
+ChangeSet@1.1451, 2007-01-27 08:54:51+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ fix misleading error message when calling io_setbclient() and
+ broadcast sockets are already open and not new sockets need to
+ be opened.
+ Bug 768: fix binding for broadcast client mode (Ulrich Weber)
+
+ ntpd/ntp_io.c@1.247, 2007-01-27 08:51:50+00:00, kardel@pogo.udel.edu +6 -3
+ fix misleading error message when calling io_setbclient() and
+ broadcast sockets are already open and not new sockets need to
+ be opened.
+
+ ntpd/ntp_io.c@1.246, 2007-01-27 08:24:25+00:00, kardel@pogo.udel.edu +2 -2
+ Bug 768: fix binding for broadcast client mode (Ulrich Weber)
+
+ChangeSet@1.1450, 2007-01-23 04:47:08-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4_RC1
+ TAG: NTP_4_2_4_RC1
+
+ ntpd/ntpd-opts.c@1.51, 2007-01-23 04:46:47-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ ntpd/ntpd-opts.h@1.51, 2007-01-23 04:46:48-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC1
+
+ ntpd/ntpd-opts.texi@1.50, 2007-01-23 04:46:48-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ ntpd/ntpd.1@1.49, 2007-01-23 04:46:49-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ ntpd/ntpdsim-opts.c@1.51, 2007-01-23 04:46:50-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ ntpd/ntpdsim-opts.h@1.51, 2007-01-23 04:46:50-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC1
+
+ ntpd/ntpdsim-opts.texi@1.49, 2007-01-23 04:46:52-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC1
+
+ ntpd/ntpdsim.1@1.49, 2007-01-23 04:46:52-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ ntpdc/ntpdc-opts.c@1.51, 2007-01-23 04:46:53-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ ntpdc/ntpdc-opts.h@1.51, 2007-01-23 04:46:54-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC1
+
+ ntpdc/ntpdc-opts.texi@1.49, 2007-01-23 04:46:54-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ ntpdc/ntpdc.1@1.49, 2007-01-23 04:46:55-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ ntpq/ntpq-opts.c@1.53, 2007-01-23 04:46:56-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ ntpq/ntpq-opts.h@1.53, 2007-01-23 04:46:57-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC1
+
+ ntpq/ntpq-opts.texi@1.50, 2007-01-23 04:46:57-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ ntpq/ntpq.1@1.49, 2007-01-23 04:46:58-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ packageinfo.sh@1.67, 2007-01-23 04:46:59-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC1
+
+ sntp/sntp-opts.c@1.50, 2007-01-23 04:47:00-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ sntp/sntp-opts.h@1.50, 2007-01-23 04:47:00-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC1
+
+ sntp/sntp-opts.texi@1.47, 2007-01-23 04:47:01-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4_RC1
+
+ sntp/sntp.1@1.50, 2007-01-23 04:47:02-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ util/ntp-keygen-opts.c@1.50, 2007-01-23 04:47:03-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ util/ntp-keygen-opts.h@1.50, 2007-01-23 04:47:04-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4_RC1
+
+ util/ntp-keygen-opts.texi@1.48, 2007-01-23 04:47:04-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ util/ntp-keygen.1@1.48, 2007-01-23 04:47:05-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4_RC1
+
+ChangeSet@1.1449, 2007-01-21 12:44:07-05:00, stenn@whimsy.udel.edu +1 -0
+ Danny fixed bug 360 in 4.2.2
+
+ ChangeLog@1.5, 2007-01-21 12:43:50-05:00, stenn@whimsy.udel.edu +1 -0
+ Danny fixed bug 360 in 4.2.2
+
+ChangeSet@1.1448, 2007-01-21 12:40:23-05:00, stenn@whimsy.udel.edu +1 -0
+ Danny fixed bug 239 in 4.2.2
+
+ ChangeLog@1.4, 2007-01-21 12:40:13-05:00, stenn@whimsy.udel.edu +2 -0
+ Danny fixed bug 239 in 4.2.2
+
+ChangeSet@1.1447, 2007-01-21 12:33:46-05:00, stenn@pogo.udel.edu +1 -0
+ Added bug 760 description to the ChangeLog
+
+ ChangeLog@1.3, 2007-01-21 12:33:38-05:00, stenn@pogo.udel.edu +1 -0
+ Added bug 760 description to the ChangeLog
+
+ChangeSet@1.1446, 2007-01-21 12:28:04-05:00, stenn@pogo.udel.edu +1 -0
+ Update the ChangeLog
+
+ ChangeLog@1.2, 2007-01-21 12:27:59-05:00, stenn@pogo.udel.edu +3 -0
+ Update the ChangeLog
+
+ChangeSet@1.1445, 2007-01-21 07:49:58+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ pick the right type for the recv*() length argument (use GETSOCKNAME_SOCKLEN_TYPE config.h define)
+
+ ntpd/ntp_io.c@1.245, 2007-01-21 07:48:16+00:00, kardel@pogo.udel.edu +1 -1
+ pick the right type for the recv*() length argument (use GETSOCKNAME_SOCKLEN_TYPE config.h define)
+
+ChangeSet@1.1444, 2007-01-20 14:38:38+00:00, kardel@pogo.udel.edu +1 -0
+ confopt.html:
+ move description for "dynamic" keyword into the right section
+
+ html/confopt.html@1.35, 2007-01-20 14:37:48+00:00, kardel@pogo.udel.edu +4 -3
+ move description for "dynamic" keyword into the right section
+
+ChangeSet@1.1443, 2007-01-14 08:46:00+00:00, kardel@pogo.udel.edu +1 -0
+ parse.h:
+ Bug 753: make union timestamp anonymous (Philip Prindeville)
+ now there are OSes that claim that name in netinet/ip.h...
+
+ include/parse.h@1.8, 2007-01-14 08:41:52+00:00, kardel@pogo.udel.edu +8 -4
+ Bug 753: make union timestamp anonymous (Philip Prindeville)
+ now there are OSes that claim that name in netinet/ip.h...
+
+ChangeSet@1.1442, 2007-01-13 11:36:29+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_intres.c:
+ support dynamic keyword
+
+ ntpd/ntp_intres.c@1.49, 2007-01-13 11:35:58+00:00, kardel@pogo.udel.edu +3 -1
+ support dynamic keyword
+
+ChangeSet@1.1441, 2007-01-06 18:24:18-05:00, stenn@whimsy.udel.edu +1 -0
+ Updated copyright year
+
+ html/copyright.html@1.36, 2007-01-06 18:23:45-05:00, stenn@whimsy.udel.edu +2 -2
+ Updated copyright year
+
+ChangeSet@1.1440, 2007-01-05 00:27:33-05:00, stenn@whimsy.udel.edu +4 -0
+ ChangeLog->CommitLog, NEWS->ChangeLog, Release Info->NEWS
+
+ ChangeLog@1.1, 2007-01-05 00:06:33-05:00, stenn@whimsy.udel.edu +260 -0
+ BitKeeper file /deacon/backroom/ntp-stable/ChangeLog
+
+ ChangeLog@1.0, 2007-01-05 00:06:33-05:00, stenn@whimsy.udel.edu +0 -0
+
+ CommitLog-4.1.0@1.592, 2007-01-05 00:05:52-05:00, stenn@whimsy.udel.edu +0 -0
+ Rename: ChangeLog-4.1.0 -> CommitLog-4.1.0
+
+ Makefile.am@1.71, 2007-01-05 00:27:13-05:00, stenn@whimsy.udel.edu +2 -1
+ ChangeLog->CommitLog, NEWS->ChangeLog, Release Info->NEWS
+
+ NEWS@1.87, 2007-01-05 00:27:14-05:00, stenn@whimsy.udel.edu +14 -256
+ ChangeLog->CommitLog, NEWS->ChangeLog, Release Info->NEWS
+
+ChangeSet@1.1439, 2007-01-04 23:41:02-05:00, stenn@whimsy.udel.edu +1 -0
+ ChangeLog->CommitLog in the ignore file
+
+ BitKeeper/etc/ignore@1.59, 2007-01-04 23:40:52-05:00, stenn@whimsy.udel.edu +1 -2
+ ChangeLog->CommitLog in the ignore file
+
+ChangeSet@1.1438, 2007-01-04 19:31:07-05:00, stenn@whimsy.udel.edu +1 -0
+ hostname updates for flock-build
+
+ flock-build@1.39, 2007-01-04 19:30:49-05:00, stenn@whimsy.udel.edu +15 -19
+ hostname updates for flock-build
+
+ChangeSet@1.1437, 2006-12-28 19:21:25-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_4
+ TAG: NTP_4_2_4
+
+ ntpd/ntpd-opts.c@1.50, 2006-12-28 19:21:05-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ ntpd/ntpd-opts.h@1.50, 2006-12-28 19:21:05-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4
+
+ ntpd/ntpd-opts.texi@1.49, 2006-12-28 19:21:06-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ ntpd/ntpd.1@1.48, 2006-12-28 19:21:07-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ ntpd/ntpdsim-opts.c@1.50, 2006-12-28 19:21:07-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ ntpd/ntpdsim-opts.h@1.50, 2006-12-28 19:21:08-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4
+
+ ntpd/ntpdsim-opts.texi@1.48, 2006-12-28 19:21:08-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4
+
+ ntpd/ntpdsim.1@1.48, 2006-12-28 19:21:09-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ ntpdc/ntpdc-opts.c@1.50, 2006-12-28 19:21:10-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ ntpdc/ntpdc-opts.h@1.50, 2006-12-28 19:21:10-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4
+
+ ntpdc/ntpdc-opts.texi@1.48, 2006-12-28 19:21:11-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ ntpdc/ntpdc.1@1.48, 2006-12-28 19:21:12-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ ntpq/ntpq-opts.c@1.52, 2006-12-28 19:21:12-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ ntpq/ntpq-opts.h@1.52, 2006-12-28 19:21:13-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4
+
+ ntpq/ntpq-opts.texi@1.49, 2006-12-28 19:21:13-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ ntpq/ntpq.1@1.48, 2006-12-28 19:21:14-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ packageinfo.sh@1.66, 2006-12-28 19:21:15-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ sntp/sntp-opts.c@1.49, 2006-12-28 19:21:15-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ sntp/sntp-opts.h@1.49, 2006-12-28 19:21:17-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4
+
+ sntp/sntp-opts.texi@1.46, 2006-12-28 19:21:18-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_4
+
+ sntp/sntp.1@1.49, 2006-12-28 19:21:18-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ util/ntp-keygen-opts.c@1.49, 2006-12-28 19:21:19-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ util/ntp-keygen-opts.h@1.49, 2006-12-28 19:21:20-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_4
+
+ util/ntp-keygen-opts.texi@1.47, 2006-12-28 19:21:20-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ util/ntp-keygen.1@1.47, 2006-12-28 19:21:21-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_4
+
+ChangeSet@1.1436, 2006-12-28 03:09:12-05:00, stenn@whimsy.udel.edu +1 -0
+ typo
+
+ packageinfo.sh@1.65, 2006-12-28 02:47:41-05:00, stenn@whimsy.udel.edu +1 -1
+ typo
+
+ChangeSet@1.1435, 2006-12-27 21:17:55-05:00, stenn@whimsy.udel.edu +1 -0
+ updated backroom machine list
+
+ br-flock@1.11, 2006-12-27 21:17:39-05:00, stenn@whimsy.udel.edu +1 -1
+ updated backroom machine list
+
+ChangeSet@1.1434, 2006-12-27 20:50:07-05:00, stenn@whimsy.udel.edu +2 -0
+ ntp-4.2.4
+
+ NEWS@1.86, 2006-12-27 20:49:18-05:00, stenn@whimsy.udel.edu +3 -2
+ ntp-4.2.4
+
+ packageinfo.sh@1.64, 2006-12-27 20:49:19-05:00, stenn@whimsy.udel.edu +7 -5
+ ntp-4.2.4
+
+ChangeSet@1.1433, 2006-12-27 02:21:39-05:00, stenn@whimsy.udel.edu +2 -0
+ monopt.html fixes from Dave Mills.
+
+ NEWS@1.85, 2006-12-27 02:21:25-05:00, stenn@whimsy.udel.edu +1 -0
+ monopt.html fixes from Dave Mills.
+
+ html/monopt.html@1.23, 2006-12-27 02:21:26-05:00, stenn@whimsy.udel.edu +2 -2
+ monopt.html fixes from Dave Mills.
+
+ChangeSet@1.1432, 2006-12-27 01:57:20-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 452] Do not report kernel PLL/FLL flips.
+
+ NEWS@1.84, 2006-12-27 01:57:03-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 452] Do not report kernel PLL/FLL flips.
+
+ ntpd/ntp_loopfilter.c@1.127, 2006-12-27 01:57:02-05:00, stenn@whimsy.udel.edu +5 -7
+ [Bug 452] Do not report kernel PLL/FLL flips.
+
+ChangeSet@1.1431, 2006-12-27 01:45:38-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 746] Expert mouseCLOCK USB v2.0 support added.
+
+ NEWS@1.83, 2006-12-27 01:45:24-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 746] Expert mouseCLOCK USB v2.0 support added.
+
+ChangeSet@1.1429, 2006-12-27 01:37:16-05:00, stenn@whimsy.udel.edu +1 -0
+ driver8.html updates from Martin Burnicki
+
+ NEWS@1.82, 2006-12-27 01:37:10-05:00, stenn@whimsy.udel.edu +2 -1
+ driver8.html updates from Martin Burnicki
+
+ChangeSet@1.1426.2.1, 2006-12-27 01:22:30-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 747] Drop <NOBR> tags from ntpdc.html
+
+ NEWS@1.81, 2006-12-27 01:20:47-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 747] Drop <NOBR> tags from ntpdc.html
+
+ html/ntpdc.html@1.26, 2006-12-27 01:20:23-05:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 747] Drop <NOBR> tags from ntpdc.html
+
+ChangeSet@1.1426.1.1, 2006-12-22 20:35:42+00:00, kardel@pogo.udel.edu +2 -0
+ driver8.html, refclock_parse.c:
+ Bug 746 (RFE): add configuration for Expert mouseCLOCK USB v2.0 as mode 19
+
+ html/drivers/driver8.html@1.22.1.1, 2006-12-22 20:35:14+00:00, kardel@pogo.udel.edu +5 -1
+ Bug 746 (RFE): add configuration for Expert mouseCLOCK USB v2.0 as mode 19
+
+ ntpd/refclock_parse.c@1.47, 2006-12-22 20:34:30+00:00, kardel@pogo.udel.edu +34 -3
+ Bug 746 (RFE): add configuration for Expert mouseCLOCK USB v2.0 as mode 19
+
+ChangeSet@1.1427, 2006-12-06 12:18:15+00:00, burnicki@pogo.udel.edu +4 -0
+ Updated Meinberg PZF509 to PZF511.
+ Provided higher quality pictures with background color according to the web page.
+ Removed borders around images.
+
+ html/drivers/driver8.html@1.23, 2006-12-06 12:18:12+00:00, burnicki@pogo.udel.edu +5 -5
+ Removed borders around images.
+ Updated Meinberg PZF509 to PZF511.
+
+ html/pic/c51.jpg@1.2, 2006-12-06 12:18:12+00:00, burnicki@pogo.udel.edu +366 -228
+ Provided higher quality picture with background color according to the web page.
+
+ html/pic/gps167.jpg@1.2, 2006-12-06 12:18:13+00:00, burnicki@pogo.udel.edu +347 -270
+ Provided higher quality picture with background color according to the web page.
+
+ html/pic/pzf511.jpg@1.3, 2006-12-06 12:18:13+00:00, burnicki@pogo.udel.edu +453 -290
+ Provided higher quality picture with background color according to the web page.
+
+ html/pic/pzf511.jpg@1.2, 2006-12-06 12:04:23+00:00, burnicki@pogo.udel.edu +0 -0
+ Rename: html/pic/pzf509.jpg -> html/pic/pzf511.jpg
+
+ChangeSet@1.1426, 2006-11-25 06:41:49-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P70_RC
+ TAG: NTP_4_2_3P70_RC
+
+ ntpd/ntpd-opts.c@1.49, 2006-11-25 06:41:29-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ ntpd/ntpd-opts.h@1.49, 2006-11-25 06:41:30-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P70_RC
+
+ ntpd/ntpd-opts.texi@1.48, 2006-11-25 06:41:31-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P70_RC
+
+ ntpd/ntpd.1@1.47, 2006-11-25 06:41:32-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ ntpd/ntpdsim-opts.c@1.49, 2006-11-25 06:41:32-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ ntpd/ntpdsim-opts.h@1.49, 2006-11-25 06:41:33-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P70_RC
+
+ ntpd/ntpdsim-opts.texi@1.47, 2006-11-25 06:41:33-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P70_RC
+
+ ntpd/ntpdsim.1@1.47, 2006-11-25 06:41:34-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ ntpdc/ntpdc-opts.c@1.49, 2006-11-25 06:41:34-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ ntpdc/ntpdc-opts.h@1.49, 2006-11-25 06:41:36-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P70_RC
+
+ ntpdc/ntpdc-opts.texi@1.47, 2006-11-25 06:41:37-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P70_RC
+
+ ntpdc/ntpdc.1@1.47, 2006-11-25 06:41:37-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ ntpq/ntpq-opts.c@1.51, 2006-11-25 06:41:38-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ ntpq/ntpq-opts.h@1.51, 2006-11-25 06:41:38-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P70_RC
+
+ ntpq/ntpq-opts.texi@1.48, 2006-11-25 06:41:39-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P70_RC
+
+ ntpq/ntpq.1@1.47, 2006-11-25 06:41:40-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ packageinfo.sh@1.63, 2006-11-25 06:41:40-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P70_RC
+
+ sntp/sntp-opts.c@1.48, 2006-11-25 06:41:40-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ sntp/sntp-opts.h@1.48, 2006-11-25 06:41:41-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P70_RC
+
+ sntp/sntp-opts.texi@1.45, 2006-11-25 06:41:42-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P70_RC
+
+ sntp/sntp.1@1.48, 2006-11-25 06:41:43-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ util/ntp-keygen-opts.c@1.48, 2006-11-25 06:41:43-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ util/ntp-keygen-opts.h@1.48, 2006-11-25 06:41:44-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P70_RC
+
+ util/ntp-keygen-opts.texi@1.46, 2006-11-25 06:41:45-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P70_RC
+
+ util/ntp-keygen.1@1.46, 2006-11-25 06:41:45-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P70_RC
+
+ChangeSet@1.1425, 2006-11-25 02:31:59-05:00, stenn@whimsy.udel.edu +2 -0
+ sntp now uses the returned precision to control decimal places
+
+ NEWS@1.80, 2006-11-25 02:31:35-05:00, stenn@whimsy.udel.edu +1 -0
+ sntp now uses the returned precision to control decimal places
+
+ sntp/main.c@1.8, 2006-11-25 02:31:36-05:00, stenn@whimsy.udel.edu +29 -16
+ sntp now uses the returned precision to control decimal places
+
+ChangeSet@1.1424, 2006-11-24 06:42:33-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P69_RC
+ TAG: NTP_4_2_3P69_RC
+
+ ntpd/ntpd-opts.c@1.48, 2006-11-24 06:42:12-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P69_RC
+
+ ntpd/ntpd-opts.h@1.48, 2006-11-24 06:42:13-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P69_RC
+
+ ntpd/ntpd-opts.texi@1.47, 2006-11-24 06:42:14-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P69_RC
+
+ ntpd/ntpd.1@1.46, 2006-11-24 06:42:14-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P69_RC
+
+ ntpd/ntpdsim-opts.c@1.48, 2006-11-24 06:42:15-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P69_RC
+
+ ntpd/ntpdsim-opts.h@1.48, 2006-11-24 06:42:16-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P69_RC
+
+ ntpd/ntpdsim-opts.texi@1.46, 2006-11-24 06:42:17-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P69_RC
+
+ ntpd/ntpdsim.1@1.46, 2006-11-24 06:42:18-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P69_RC
+
+ ntpdc/ntpdc-opts.c@1.48, 2006-11-24 06:42:18-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P69_RC
+
+ ntpdc/ntpdc-opts.h@1.48, 2006-11-24 06:42:19-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P69_RC
+
+ ntpdc/ntpdc-opts.texi@1.46, 2006-11-24 06:42:20-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P69_RC
+
+ ntpdc/ntpdc.1@1.46, 2006-11-24 06:42:20-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P69_RC
+
+ ntpq/ntpq-opts.c@1.50, 2006-11-24 06:42:21-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P69_RC
+
+ ntpq/ntpq-opts.h@1.50, 2006-11-24 06:42:22-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P69_RC
+
+ ntpq/ntpq-opts.texi@1.47, 2006-11-24 06:42:23-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P69_RC
+
+ ntpq/ntpq.1@1.46, 2006-11-24 06:42:23-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P69_RC
+
+ packageinfo.sh@1.62, 2006-11-24 06:42:24-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P69_RC
+
+ sntp/sntp-opts.c@1.47, 2006-11-24 06:42:25-05:00, stenn@whimsy.udel.edu +34 -13
+ NTP_4_2_3P69_RC
+
+ sntp/sntp-opts.h@1.47, 2006-11-24 06:42:26-05:00, stenn@whimsy.udel.edu +21 -14
+ NTP_4_2_3P69_RC
+
+ sntp/sntp-opts.texi@1.44, 2006-11-24 06:42:27-05:00, stenn@whimsy.udel.edu +9 -1
+ NTP_4_2_3P69_RC
+
+ sntp/sntp.1@1.47, 2006-11-24 06:42:27-05:00, stenn@whimsy.udel.edu +8 -64
+ NTP_4_2_3P69_RC
+
+ util/ntp-keygen-opts.c@1.47, 2006-11-24 06:42:28-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P69_RC
+
+ util/ntp-keygen-opts.h@1.47, 2006-11-24 06:42:29-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P69_RC
+
+ util/ntp-keygen-opts.texi@1.45, 2006-11-24 06:42:29-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P69_RC
+
+ util/ntp-keygen.1@1.45, 2006-11-24 06:42:30-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P69_RC
+
+ChangeSet@1.1423, 2006-11-23 21:09:08-05:00, stenn@whimsy.udel.edu +4 -0
+ sntp -u will use an unprivileged port for its queries
+
+ NEWS@1.79, 2006-11-23 21:08:15-05:00, stenn@whimsy.udel.edu +1 -0
+ sntp -u will use an unprivileged port for its queries
+
+ sntp/main.c@1.7, 2006-11-23 21:08:04-05:00, stenn@whimsy.udel.edu +13 -2
+ sntp -u will use an unprivileged port for its queries
+
+ sntp/sntp-opts.def@1.10, 2006-11-23 21:08:04-05:00, stenn@whimsy.udel.edu +10 -62
+ sntp -u will use an unprivileged port for its queries
+
+ sntp/socket.c@1.8, 2006-11-23 21:08:05-05:00, stenn@whimsy.udel.edu +4 -2
+ sntp -u will use an unprivileged port for its queries
+
+ChangeSet@1.1422, 2006-11-22 06:42:29-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P68_RC
+ TAG: NTP_4_2_3P68_RC
+
+ ntpd/ntpd-opts.c@1.47, 2006-11-22 06:42:08-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ ntpd/ntpd-opts.h@1.47, 2006-11-22 06:42:09-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P68_RC
+
+ ntpd/ntpd-opts.texi@1.46, 2006-11-22 06:42:10-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P68_RC
+
+ ntpd/ntpd.1@1.45, 2006-11-22 06:42:10-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ ntpd/ntpdsim-opts.c@1.47, 2006-11-22 06:42:11-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ ntpd/ntpdsim-opts.h@1.47, 2006-11-22 06:42:12-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P68_RC
+
+ ntpd/ntpdsim-opts.texi@1.45, 2006-11-22 06:42:13-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P68_RC
+
+ ntpd/ntpdsim.1@1.45, 2006-11-22 06:42:13-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ ntpdc/ntpdc-opts.c@1.47, 2006-11-22 06:42:14-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ ntpdc/ntpdc-opts.h@1.47, 2006-11-22 06:42:15-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P68_RC
+
+ ntpdc/ntpdc-opts.texi@1.45, 2006-11-22 06:42:16-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ ntpdc/ntpdc.1@1.45, 2006-11-22 06:42:16-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ ntpq/ntpq-opts.c@1.49, 2006-11-22 06:42:17-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ ntpq/ntpq-opts.h@1.49, 2006-11-22 06:42:18-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P68_RC
+
+ ntpq/ntpq-opts.texi@1.46, 2006-11-22 06:42:19-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ ntpq/ntpq.1@1.45, 2006-11-22 06:42:19-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ packageinfo.sh@1.61, 2006-11-22 06:42:20-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P68_RC
+
+ sntp/sntp-opts.c@1.46, 2006-11-22 06:42:20-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ sntp/sntp-opts.h@1.46, 2006-11-22 06:42:21-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P68_RC
+
+ sntp/sntp-opts.texi@1.43, 2006-11-22 06:42:22-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P68_RC
+
+ sntp/sntp.1@1.46, 2006-11-22 06:42:23-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ util/ntp-keygen-opts.c@1.46, 2006-11-22 06:42:23-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ util/ntp-keygen-opts.h@1.46, 2006-11-22 06:42:24-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P68_RC
+
+ util/ntp-keygen-opts.texi@1.44, 2006-11-22 06:42:25-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ util/ntp-keygen.1@1.44, 2006-11-22 06:42:26-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P68_RC
+
+ChangeSet@1.1421, 2006-11-22 02:15:14-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 741] 'burst' doesn't work with peers
+
+ NEWS@1.78, 2006-11-22 02:14:47-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 741] 'burst' doesn't work with !unfit peers
+
+ ntpd/ntp_proto.c@1.249, 2006-11-22 02:14:48-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 741] 'burst' doesn't work with !unfit peers
+
+ChangeSet@1.1420, 2006-11-21 23:53:23-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 735] Fix a make/gmake VPATH issue on Solaris
+
+ Makefile.am@1.70, 2006-11-21 23:53:04-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 735] Fix a make/gmake VPATH issue on Solaris
+
+ NEWS@1.77, 2006-11-21 23:53:03-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 735] Fix a make/gmake VPATH issue on Solaris
+
+ChangeSet@1.1419, 2006-11-21 06:42:26-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P67_RC
+ TAG: NTP_4_2_3P67_RC
+
+ ntpd/ntpd-opts.c@1.46, 2006-11-21 06:42:02-05:00, stenn@whimsy.udel.edu +3 -4
+ NTP_4_2_3P67_RC
+
+ ntpd/ntpd-opts.h@1.46, 2006-11-21 06:42:02-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P67_RC
+
+ ntpd/ntpd-opts.texi@1.45, 2006-11-21 06:42:03-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P67_RC
+
+ ntpd/ntpd.1@1.44, 2006-11-21 06:42:04-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P67_RC
+
+ ntpd/ntpdsim-opts.c@1.46, 2006-11-21 06:42:04-05:00, stenn@whimsy.udel.edu +3 -4
+ NTP_4_2_3P67_RC
+
+ ntpd/ntpdsim-opts.h@1.46, 2006-11-21 06:42:05-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P67_RC
+
+ ntpd/ntpdsim-opts.texi@1.44, 2006-11-21 06:42:06-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P67_RC
+
+ ntpd/ntpdsim.1@1.44, 2006-11-21 06:42:06-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P67_RC
+
+ ntpdc/ntpdc-opts.c@1.46, 2006-11-21 06:42:07-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P67_RC
+
+ ntpdc/ntpdc-opts.h@1.46, 2006-11-21 06:42:08-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P67_RC
+
+ ntpdc/ntpdc-opts.texi@1.44, 2006-11-21 06:42:09-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P67_RC
+
+ ntpdc/ntpdc.1@1.44, 2006-11-21 06:42:10-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P67_RC
+
+ ntpq/ntpq-opts.c@1.48, 2006-11-21 06:42:11-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P67_RC
+
+ ntpq/ntpq-opts.h@1.48, 2006-11-21 06:42:11-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P67_RC
+
+ ntpq/ntpq-opts.texi@1.45, 2006-11-21 06:42:12-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P67_RC
+
+ ntpq/ntpq.1@1.44, 2006-11-21 06:42:13-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P67_RC
+
+ packageinfo.sh@1.60, 2006-11-21 06:42:13-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P67_RC
+
+ sntp/sntp-opts.c@1.45, 2006-11-21 06:42:14-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P67_RC
+
+ sntp/sntp-opts.h@1.45, 2006-11-21 06:42:15-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P67_RC
+
+ sntp/sntp-opts.texi@1.42, 2006-11-21 06:42:15-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P67_RC
+
+ sntp/sntp.1@1.45, 2006-11-21 06:42:16-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P67_RC
+
+ util/ntp-keygen-opts.c@1.45, 2006-11-21 06:42:17-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P67_RC
+
+ util/ntp-keygen-opts.h@1.45, 2006-11-21 06:42:18-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P67_RC
+
+ util/ntp-keygen-opts.texi@1.43, 2006-11-21 06:42:18-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P67_RC
+
+ util/ntp-keygen.1@1.43, 2006-11-21 06:42:19-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P67_RC
+
+ChangeSet@1.1418, 2006-11-21 09:35:31+00:00, burnicki@pogo.udel.edu +1 -0
+ Fixed an uppercase typo.
+
+ html/drivers/driver8.html@1.22, 2006-11-21 09:35:24+00:00, burnicki@pogo.udel.edu +1 -1
+ Fixed an uppercase typo.
+
+ChangeSet@1.1417, 2006-11-21 02:43:36-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 717] Make sure sntp/*version.def is up-to-date
+
+ bootstrap@1.18, 2006-11-21 02:43:17-05:00, stenn@whimsy.udel.edu +5 -0
+ [Bug 717] Make sure sntp/*version.def is up-to-date
+
+ChangeSet@1.1416, 2006-11-20 23:05:54-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 739] ntpd -x should not take an argument
+
+ NEWS@1.76, 2006-11-20 23:04:55-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 739] ntpd -x should not take an argument
+
+ ntpd/ntpdbase-opts.def@1.10, 2006-11-20 23:04:27-05:00, stenn@whimsy.udel.edu +0 -1
+ [Bug 739] ntpd -x should not take an argument
+
+ChangeSet@1.1415, 2006-11-19 06:45:35-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P66_RC
+ TAG: NTP_4_2_3P66_RC
+
+ ntpd/ntpd-opts.c@1.45, 2006-11-19 06:45:13-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ ntpd/ntpd-opts.h@1.45, 2006-11-19 06:45:14-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P66_RC
+
+ ntpd/ntpd-opts.texi@1.44, 2006-11-19 06:45:14-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ ntpd/ntpd.1@1.43, 2006-11-19 06:45:15-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ ntpd/ntpdsim-opts.c@1.45, 2006-11-19 06:45:16-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ ntpd/ntpdsim-opts.h@1.45, 2006-11-19 06:45:17-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P66_RC
+
+ ntpd/ntpdsim-opts.texi@1.43, 2006-11-19 06:45:17-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P66_RC
+
+ ntpd/ntpdsim.1@1.43, 2006-11-19 06:45:18-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ ntpdc/ntpdc-opts.c@1.45, 2006-11-19 06:45:19-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ ntpdc/ntpdc-opts.h@1.45, 2006-11-19 06:45:19-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P66_RC
+
+ ntpdc/ntpdc-opts.texi@1.43, 2006-11-19 06:45:20-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ ntpdc/ntpdc.1@1.43, 2006-11-19 06:45:21-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ ntpq/ntpq-opts.c@1.47, 2006-11-19 06:45:22-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ ntpq/ntpq-opts.h@1.47, 2006-11-19 06:45:23-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P66_RC
+
+ ntpq/ntpq-opts.texi@1.44, 2006-11-19 06:45:24-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ ntpq/ntpq.1@1.43, 2006-11-19 06:45:24-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ packageinfo.sh@1.59, 2006-11-19 06:45:25-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P66_RC
+
+ sntp/sntp-opts.c@1.44, 2006-11-19 06:45:26-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ sntp/sntp-opts.h@1.44, 2006-11-19 06:45:27-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P66_RC
+
+ sntp/sntp-opts.texi@1.41, 2006-11-19 06:45:27-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P66_RC
+
+ sntp/sntp.1@1.44, 2006-11-19 06:45:28-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ util/ntp-keygen-opts.c@1.44, 2006-11-19 06:45:29-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ util/ntp-keygen-opts.h@1.44, 2006-11-19 06:45:30-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P66_RC
+
+ util/ntp-keygen-opts.texi@1.42, 2006-11-19 06:45:31-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ util/ntp-keygen.1@1.42, 2006-11-19 06:45:31-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P66_RC
+
+ChangeSet@1.1412.1.1, 2006-11-18 21:12:41-08:00, harlan@minnie.everett.org +3 -0
+ * [Bug 737] Some systems need help providing struct iovec.
+
+ NEWS@1.75, 2006-11-18 21:12:35-08:00, harlan@minnie.everett.org +1 -0
+ * [Bug 737] Some systems need help providing struct iovec.
+
+ configure.ac@1.400, 2006-11-18 21:12:35-08:00, harlan@minnie.everett.org +44 -0
+ * [Bug 737] Some systems need help providing struct iovec.
+
+ ntpd/ntp_io.c@1.244, 2006-11-18 21:12:35-08:00, harlan@minnie.everett.org +3 -0
+ * [Bug 737] Some systems need help providing struct iovec.
+
+ChangeSet@1.1413, 2006-11-17 08:59:50+00:00, burnicki@pogo.udel.edu +1 -0
+ [Bug #728] More changes by Paul and Martin.
+
+ html/drivers/driver8.html@1.21, 2006-11-17 08:59:48+00:00, burnicki@pogo.udel.edu +93 -44
+ More changes by Paul and Martin.
+
+ChangeSet@1.1412, 2006-11-10 06:41:45-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P65_RC
+ TAG: NTP_4_2_3P65_RC
+
+ ntpd/ntpd-opts.c@1.44, 2006-11-10 06:41:23-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ ntpd/ntpd-opts.h@1.44, 2006-11-10 06:41:24-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P65_RC
+
+ ntpd/ntpd-opts.texi@1.43, 2006-11-10 06:41:24-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P65_RC
+
+ ntpd/ntpd.1@1.42, 2006-11-10 06:41:25-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ ntpd/ntpdsim-opts.c@1.44, 2006-11-10 06:41:26-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ ntpd/ntpdsim-opts.h@1.44, 2006-11-10 06:41:27-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P65_RC
+
+ ntpd/ntpdsim-opts.texi@1.42, 2006-11-10 06:41:28-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P65_RC
+
+ ntpd/ntpdsim.1@1.42, 2006-11-10 06:41:28-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ ntpdc/ntpdc-opts.c@1.44, 2006-11-10 06:41:29-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ ntpdc/ntpdc-opts.h@1.44, 2006-11-10 06:41:30-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P65_RC
+
+ ntpdc/ntpdc-opts.texi@1.42, 2006-11-10 06:41:32-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P65_RC
+
+ ntpdc/ntpdc.1@1.42, 2006-11-10 06:41:32-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ ntpq/ntpq-opts.c@1.46, 2006-11-10 06:41:33-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ ntpq/ntpq-opts.h@1.46, 2006-11-10 06:41:33-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P65_RC
+
+ ntpq/ntpq-opts.texi@1.43, 2006-11-10 06:41:34-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P65_RC
+
+ ntpq/ntpq.1@1.42, 2006-11-10 06:41:35-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ packageinfo.sh@1.58, 2006-11-10 06:41:35-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P65_RC
+
+ sntp/sntp-opts.c@1.43, 2006-11-10 06:41:36-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ sntp/sntp-opts.h@1.43, 2006-11-10 06:41:37-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P65_RC
+
+ sntp/sntp-opts.texi@1.40, 2006-11-10 06:41:37-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P65_RC
+
+ sntp/sntp.1@1.43, 2006-11-10 06:41:38-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ util/ntp-keygen-opts.c@1.43, 2006-11-10 06:41:39-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ util/ntp-keygen-opts.h@1.43, 2006-11-10 06:41:39-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P65_RC
+
+ util/ntp-keygen-opts.texi@1.41, 2006-11-10 06:41:40-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P65_RC
+
+ util/ntp-keygen.1@1.41, 2006-11-10 06:41:41-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P65_RC
+
+ChangeSet@1.1411, 2006-11-10 00:24:06-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 717] Fix libopts compile problem for some windows versions
+
+ NEWS@1.74, 2006-11-10 00:23:54-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 717] Fix libopts compile problem for some windows versions
+
+ChangeSet@1.1398.1.1, 2006-11-09 22:57:09-05:00, mayer@pogo.udel.edu +1 -0
+ Bug #717 Add uintptr_t typedef for VS 6.0
+
+ ports/winnt/include/config.h@1.46, 2006-11-09 22:56:27-05:00, mayer@pogo.udel.edu +7 -0
+ Bug #717 Add uintptr_t typedef for VS 6.0
+
+ChangeSet@1.1409, 2006-11-09 06:42:28-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P64_RC
+ TAG: NTP_4_2_3P64_RC
+
+ ntpd/ntpd-opts.c@1.43, 2006-11-09 06:42:07-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ ntpd/ntpd-opts.h@1.43, 2006-11-09 06:42:07-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P64_RC
+
+ ntpd/ntpd-opts.texi@1.42, 2006-11-09 06:42:08-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P64_RC
+
+ ntpd/ntpd.1@1.41, 2006-11-09 06:42:08-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ ntpd/ntpdsim-opts.c@1.43, 2006-11-09 06:42:09-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ ntpd/ntpdsim-opts.h@1.43, 2006-11-09 06:42:10-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P64_RC
+
+ ntpd/ntpdsim-opts.texi@1.41, 2006-11-09 06:42:10-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P64_RC
+
+ ntpd/ntpdsim.1@1.41, 2006-11-09 06:42:11-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ ntpdc/ntpdc-opts.c@1.43, 2006-11-09 06:42:12-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ ntpdc/ntpdc-opts.h@1.43, 2006-11-09 06:42:13-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P64_RC
+
+ ntpdc/ntpdc-opts.texi@1.41, 2006-11-09 06:42:14-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P64_RC
+
+ ntpdc/ntpdc.1@1.41, 2006-11-09 06:42:14-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ ntpq/ntpq-opts.c@1.45, 2006-11-09 06:42:15-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ ntpq/ntpq-opts.h@1.45, 2006-11-09 06:42:16-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P64_RC
+
+ ntpq/ntpq-opts.texi@1.42, 2006-11-09 06:42:16-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P64_RC
+
+ ntpq/ntpq.1@1.41, 2006-11-09 06:42:17-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ packageinfo.sh@1.57, 2006-11-09 06:42:18-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P64_RC
+
+ sntp/sntp-opts.c@1.42, 2006-11-09 06:42:19-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ sntp/sntp-opts.h@1.42, 2006-11-09 06:42:19-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P64_RC
+
+ sntp/sntp-opts.texi@1.39, 2006-11-09 06:42:20-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P64_RC
+
+ sntp/sntp.1@1.42, 2006-11-09 06:42:21-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ util/ntp-keygen-opts.c@1.42, 2006-11-09 06:42:21-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ util/ntp-keygen-opts.h@1.42, 2006-11-09 06:42:22-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P64_RC
+
+ util/ntp-keygen-opts.texi@1.40, 2006-11-09 06:42:23-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P64_RC
+
+ util/ntp-keygen.1@1.40, 2006-11-09 06:42:23-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P64_RC
+
+ChangeSet@1.1408, 2006-11-09 04:29:07-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 728] parse documentation fixes
+
+ NEWS@1.73, 2006-11-09 04:28:53-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 728] parse documentation fixes
+
+ChangeSet@1.1407, 2006-11-08 18:11:25+00:00, burnicki@pogo.udel.edu +2 -0
+ [Bug #728] Typo fixes submitted by Paul Croome plus additional updates and fixes for driver8.html and parsedata.html.
+
+ html/drivers/driver8.html@1.20, 2006-11-08 18:11:23+00:00, burnicki@pogo.udel.edu +127 -136
+ Typo fixes submitted by Paul Croome.
+ Updated docs and links.
+
+ html/parsedata.html@1.12, 2006-11-08 18:11:23+00:00, burnicki@pogo.udel.edu +92 -80
+ Updated docs and fixed some errors.
+
+ChangeSet@1.1406, 2006-11-06 06:47:05-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P63_RC
+ TAG: NTP_4_2_3P63_RC
+
+ ntpd/ntpd-opts.c@1.42, 2006-11-06 06:46:45-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ ntpd/ntpd-opts.h@1.42, 2006-11-06 06:46:46-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P63_RC
+
+ ntpd/ntpd-opts.texi@1.41, 2006-11-06 06:46:46-05:00, stenn@whimsy.udel.edu +2 -4
+ NTP_4_2_3P63_RC
+
+ ntpd/ntpd.1@1.40, 2006-11-06 06:46:47-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ ntpd/ntpdsim-opts.c@1.42, 2006-11-06 06:46:48-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ ntpd/ntpdsim-opts.h@1.42, 2006-11-06 06:46:48-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P63_RC
+
+ ntpd/ntpdsim-opts.texi@1.40, 2006-11-06 06:46:49-05:00, stenn@whimsy.udel.edu +2 -73
+ NTP_4_2_3P63_RC
+
+ ntpd/ntpdsim.1@1.40, 2006-11-06 06:46:50-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ ntpdc/ntpdc-opts.c@1.42, 2006-11-06 06:46:51-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ ntpdc/ntpdc-opts.h@1.42, 2006-11-06 06:46:51-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P63_RC
+
+ ntpdc/ntpdc-opts.texi@1.40, 2006-11-06 06:46:52-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ ntpdc/ntpdc.1@1.40, 2006-11-06 06:46:53-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ ntpq/ntpq-opts.c@1.44, 2006-11-06 06:46:54-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ ntpq/ntpq-opts.h@1.44, 2006-11-06 06:46:54-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P63_RC
+
+ ntpq/ntpq-opts.texi@1.41, 2006-11-06 06:46:55-05:00, stenn@whimsy.udel.edu +4 -244
+ NTP_4_2_3P63_RC
+
+ ntpq/ntpq.1@1.40, 2006-11-06 06:46:56-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ packageinfo.sh@1.56, 2006-11-06 06:46:57-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P63_RC
+
+ sntp/sntp-opts.c@1.41, 2006-11-06 06:46:57-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ sntp/sntp-opts.h@1.41, 2006-11-06 06:46:58-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P63_RC
+
+ sntp/sntp-opts.texi@1.38, 2006-11-06 06:46:59-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P63_RC
+
+ sntp/sntp.1@1.41, 2006-11-06 06:46:59-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ util/ntp-keygen-opts.c@1.41, 2006-11-06 06:47:00-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ util/ntp-keygen-opts.h@1.41, 2006-11-06 06:47:01-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P63_RC
+
+ util/ntp-keygen-opts.texi@1.39, 2006-11-06 06:47:01-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ util/ntp-keygen.1@1.39, 2006-11-06 06:47:02-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P63_RC
+
+ChangeSet@1.1405, 2006-11-06 03:11:36-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 734] setsockopt(..., IP_MULTICAST_IF, ...) fails on 64-bit platforms.
+
+ NEWS@1.72, 2006-11-06 03:11:21-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 734] setsockopt(..., IP_MULTICAST_IF, ...) fails on 64-bit platforms.
+
+ChangeSet@1.1404, 2006-11-06 03:06:37-05:00, stenn@whimsy.udel.edu +2 -0
+ Build our libopts by default (static, and without installing it
+
+ configure.ac@1.399, 2006-11-06 03:06:25-05:00, stenn@whimsy.udel.edu +17 -0
+ Build our libopts by default (static, and without installing it
+
+ sntp/configure.ac@1.15, 2006-11-06 03:06:27-05:00, stenn@whimsy.udel.edu +18 -0
+ Build our libopts by default (static, and without installing it
+
+ChangeSet@1.1400.1.1, 2006-11-06 02:51:53-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 732] C-DEX JST2000 patch from Hideo Kuramatsu
+
+ NEWS@1.71, 2006-11-06 02:51:43-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 732] C-DEX JST2000 patch from Hideo Kuramatsu
+
+ ntpd/refclock_jjy.c@1.13, 2006-11-06 02:51:17-05:00, stenn@whimsy.udel.edu +5 -0
+ [Bug 732] C-DEX JST2000 patch from Hideo Kuramatsu
+
+ChangeSet@1.1402, 2006-11-05 08:28:53+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ pass correct address length for setsockopt(..., IP_MULTICAST_IF, ...)
+ (sizeof(struct sockaddr_in*) != sizeof(struct in_addr) on 64-bit platforms)
+
+ ntpd/ntp_io.c@1.243, 2006-11-05 08:25:03+00:00, kardel@pogo.udel.edu +1 -1
+ pass correct address length for setsockopt(..., IP_MULTICAST_IF, ...)
+ (sizeof(struct sockaddr_in*) != sizeof(struct in_addr) on 64 bite platforms)
+
+ChangeSet@1.1400, 2006-11-01 06:45:21-05:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P62_RC
+ TAG: NTP_4_2_3P62_RC
+
+ ntpd/ntpd-opts.c@1.41, 2006-11-01 06:45:00-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ ntpd/ntpd-opts.h@1.41, 2006-11-01 06:45:01-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P62_RC
+
+ ntpd/ntpd-opts.texi@1.40, 2006-11-01 06:45:02-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P62_RC
+
+ ntpd/ntpd.1@1.39, 2006-11-01 06:45:02-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ ntpd/ntpdsim-opts.c@1.41, 2006-11-01 06:45:03-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ ntpd/ntpdsim-opts.h@1.41, 2006-11-01 06:45:04-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P62_RC
+
+ ntpd/ntpdsim-opts.texi@1.39, 2006-11-01 06:45:05-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P62_RC
+
+ ntpd/ntpdsim.1@1.39, 2006-11-01 06:45:05-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ ntpdc/ntpdc-opts.c@1.41, 2006-11-01 06:45:06-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ ntpdc/ntpdc-opts.h@1.41, 2006-11-01 06:45:07-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P62_RC
+
+ ntpdc/ntpdc-opts.texi@1.39, 2006-11-01 06:45:07-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P62_RC
+
+ ntpdc/ntpdc.1@1.39, 2006-11-01 06:45:08-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ ntpq/ntpq-opts.c@1.43, 2006-11-01 06:45:08-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ ntpq/ntpq-opts.h@1.43, 2006-11-01 06:45:10-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P62_RC
+
+ ntpq/ntpq-opts.texi@1.40, 2006-11-01 06:45:10-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P62_RC
+
+ ntpq/ntpq.1@1.39, 2006-11-01 06:45:11-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ packageinfo.sh@1.55, 2006-11-01 06:45:12-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P62_RC
+
+ sntp/sntp-opts.c@1.40, 2006-11-01 06:45:13-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ sntp/sntp-opts.h@1.40, 2006-11-01 06:45:13-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P62_RC
+
+ sntp/sntp-opts.texi@1.37, 2006-11-01 06:45:14-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P62_RC
+
+ sntp/sntp.1@1.40, 2006-11-01 06:45:14-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ util/ntp-keygen-opts.c@1.40, 2006-11-01 06:45:16-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ util/ntp-keygen-opts.h@1.40, 2006-11-01 06:45:16-05:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P62_RC
+
+ util/ntp-keygen-opts.texi@1.38, 2006-11-01 06:45:17-05:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P62_RC
+
+ util/ntp-keygen.1@1.38, 2006-11-01 06:45:17-05:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P62_RC
+
+ChangeSet@1.1399, 2006-10-31 23:58:45-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 721] check for __ss_family and __ss_len separately
+
+ NEWS@1.70, 2006-10-31 23:58:29-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 721] check for __ss_family and __ss_len separately
+
+ configure.ac@1.398, 2006-10-31 23:57:41-05:00, stenn@whimsy.udel.edu +41 -2
+ [Bug 721] check for __ss_family and __ss_len separately
+
+ChangeSet@1.1379.13.1, 2006-10-30 07:24:38-05:00, mayer@pogo.udel.edu +1 -0
+ Bug #695 Fix to turn off Option warnings for VS 2005
+
+ ports/winnt/include/config.h@1.45, 2006-10-30 07:24:03-05:00, mayer@pogo.udel.edu +1 -0
+ Bug #695 Fix to turn off Option warnings for VS 2005
+
+ChangeSet@1.1397, 2006-10-23 07:48:24-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P61_RC
+ TAG: NTP_4_2_3P61_RC
+
+ ntpd/ntpd-opts.c@1.40, 2006-10-23 07:48:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ ntpd/ntpd-opts.h@1.40, 2006-10-23 07:48:05-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P61_RC
+
+ ntpd/ntpd-opts.texi@1.39, 2006-10-23 07:48:05-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P61_RC
+
+ ntpd/ntpd.1@1.38, 2006-10-23 07:48:06-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ ntpd/ntpdsim-opts.c@1.40, 2006-10-23 07:48:06-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ ntpd/ntpdsim-opts.h@1.40, 2006-10-23 07:48:07-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P61_RC
+
+ ntpd/ntpdsim-opts.texi@1.38, 2006-10-23 07:48:08-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P61_RC
+
+ ntpd/ntpdsim.1@1.38, 2006-10-23 07:48:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ ntpdc/ntpdc-opts.c@1.40, 2006-10-23 07:48:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ ntpdc/ntpdc-opts.h@1.40, 2006-10-23 07:48:10-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P61_RC
+
+ ntpdc/ntpdc-opts.texi@1.38, 2006-10-23 07:48:11-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P61_RC
+
+ ntpdc/ntpdc.1@1.38, 2006-10-23 07:48:12-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ ntpq/ntpq-opts.c@1.42, 2006-10-23 07:48:12-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ ntpq/ntpq-opts.h@1.42, 2006-10-23 07:48:13-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P61_RC
+
+ ntpq/ntpq-opts.texi@1.39, 2006-10-23 07:48:14-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P61_RC
+
+ ntpq/ntpq.1@1.38, 2006-10-23 07:48:14-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ packageinfo.sh@1.54, 2006-10-23 07:48:15-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P61_RC
+
+ sntp/sntp-opts.c@1.39, 2006-10-23 07:48:15-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ sntp/sntp-opts.h@1.39, 2006-10-23 07:48:16-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P61_RC
+
+ sntp/sntp-opts.texi@1.36, 2006-10-23 07:48:17-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P61_RC
+
+ sntp/sntp.1@1.39, 2006-10-23 07:48:18-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ util/ntp-keygen-opts.c@1.39, 2006-10-23 07:48:18-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ util/ntp-keygen-opts.h@1.39, 2006-10-23 07:48:19-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P61_RC
+
+ util/ntp-keygen-opts.texi@1.37, 2006-10-23 07:48:20-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P61_RC
+
+ util/ntp-keygen.1@1.37, 2006-10-23 07:48:21-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P61_RC
+
+ChangeSet@1.1395, 2006-10-23 00:38:50-04:00, stenn@pogo.udel.edu +2 -0
+ [Bug 666] ntpq opeers displays jitter rather than dispersion
+
+ NEWS@1.69, 2006-10-23 00:38:42-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 666] ntpq opeers displays jitter rather than dispersion
+
+ ntpq/ntpq-subs.c@1.25, 2006-10-23 00:37:58-04:00, stenn@pogo.udel.edu +3 -2
+ [Bug 666] ntpq opeers displays jitter rather than dispersion
+
+ChangeSet@1.1379.12.3, 2006-10-20 07:45:30-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P60_RC
+ TAG: NTP_4_2_3P60_RC
+
+ ntpd/ntpd-opts.c@1.39, 2006-10-20 07:45:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ ntpd/ntpd-opts.h@1.39, 2006-10-20 07:45:09-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P60_RC
+
+ ntpd/ntpd-opts.texi@1.38, 2006-10-20 07:45:10-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P60_RC
+
+ ntpd/ntpd.1@1.37, 2006-10-20 07:45:10-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ ntpd/ntpdsim-opts.c@1.39, 2006-10-20 07:45:12-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ ntpd/ntpdsim-opts.h@1.39, 2006-10-20 07:45:13-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P60_RC
+
+ ntpd/ntpdsim-opts.texi@1.37, 2006-10-20 07:45:13-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P60_RC
+
+ ntpd/ntpdsim.1@1.37, 2006-10-20 07:45:14-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ ntpdc/ntpdc-opts.c@1.39, 2006-10-20 07:45:15-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ ntpdc/ntpdc-opts.h@1.39, 2006-10-20 07:45:15-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P60_RC
+
+ ntpdc/ntpdc-opts.texi@1.37, 2006-10-20 07:45:16-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P60_RC
+
+ ntpdc/ntpdc.1@1.37, 2006-10-20 07:45:17-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ ntpq/ntpq-opts.c@1.41, 2006-10-20 07:45:17-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ ntpq/ntpq-opts.h@1.41, 2006-10-20 07:45:18-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P60_RC
+
+ ntpq/ntpq-opts.texi@1.38, 2006-10-20 07:45:19-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P60_RC
+
+ ntpq/ntpq.1@1.37, 2006-10-20 07:45:19-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ packageinfo.sh@1.53, 2006-10-20 07:45:20-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P60_RC
+
+ sntp/sntp-opts.c@1.38, 2006-10-20 07:45:20-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ sntp/sntp-opts.h@1.38, 2006-10-20 07:45:22-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P60_RC
+
+ sntp/sntp-opts.texi@1.35, 2006-10-20 07:45:23-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P60_RC
+
+ sntp/sntp.1@1.38, 2006-10-20 07:45:23-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ util/ntp-keygen-opts.c@1.38, 2006-10-20 07:45:24-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ util/ntp-keygen-opts.h@1.38, 2006-10-20 07:45:25-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P60_RC
+
+ util/ntp-keygen-opts.texi@1.36, 2006-10-20 07:45:26-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P60_RC
+
+ util/ntp-keygen.1@1.36, 2006-10-20 07:45:27-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P60_RC
+
+ChangeSet@1.1379.12.2, 2006-10-20 00:49:41-04:00, stenn@whimsy.udel.edu +1 -0
+ 4.2.4 Release Candidate
+
+ packageinfo.sh@1.52, 2006-10-20 00:49:29-04:00, stenn@whimsy.udel.edu +2 -2
+ 4.2.4 Release Candidate
+
+ChangeSet@1.1379.12.1, 2006-10-20 00:44:54-04:00, stenn@whimsy.udel.edu +1 -0
+ refclock_wwv.c fix from Dave Mills
+
+ ntpd/refclock_wwv.c@1.66, 2006-10-20 00:44:30-04:00, stenn@whimsy.udel.edu +3 -0
+ refclock_wwv.c fix from Dave Mills
+
+ChangeSet@1.1379.1.53, 2006-10-15 14:25:15+00:00, kardel@pogo.udel.edu +1 -0
+ dcfd.c:
+ cope with cases where sa_sigaction and sa_handler are in a union
+
+ parseutil/dcfd.c@1.19, 2006-10-15 14:24:55+00:00, kardel@pogo.udel.edu +1 -1
+ cope with cases where sa_sigaction and sa_handler are in a union
+
+ChangeSet@1.1379.1.52, 2006-10-15 07:42:15-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P59
+ TAG: NTP_4_2_3P59
+
+ ntpd/ntpd-opts.c@1.38, 2006-10-15 07:41:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ ntpd/ntpd-opts.h@1.38, 2006-10-15 07:41:54-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P59
+
+ ntpd/ntpd-opts.texi@1.37, 2006-10-15 07:41:55-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P59
+
+ ntpd/ntpd.1@1.36, 2006-10-15 07:41:55-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ ntpd/ntpdsim-opts.c@1.38, 2006-10-15 07:41:56-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ ntpd/ntpdsim-opts.h@1.38, 2006-10-15 07:41:57-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P59
+
+ ntpd/ntpdsim-opts.texi@1.36, 2006-10-15 07:41:57-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P59
+
+ ntpd/ntpdsim.1@1.36, 2006-10-15 07:41:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ ntpdc/ntpdc-opts.c@1.38, 2006-10-15 07:41:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ ntpdc/ntpdc-opts.h@1.38, 2006-10-15 07:41:59-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P59
+
+ ntpdc/ntpdc-opts.texi@1.36, 2006-10-15 07:42:00-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P59
+
+ ntpdc/ntpdc.1@1.36, 2006-10-15 07:42:01-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ ntpq/ntpq-opts.c@1.40, 2006-10-15 07:42:01-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ ntpq/ntpq-opts.h@1.40, 2006-10-15 07:42:03-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P59
+
+ ntpq/ntpq-opts.texi@1.37, 2006-10-15 07:42:04-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P59
+
+ ntpq/ntpq.1@1.36, 2006-10-15 07:42:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ packageinfo.sh@1.51, 2006-10-15 07:42:05-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P59
+
+ sntp/sntp-opts.c@1.37, 2006-10-15 07:42:05-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ sntp/sntp-opts.h@1.37, 2006-10-15 07:42:06-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P59
+
+ sntp/sntp-opts.texi@1.34, 2006-10-15 07:42:07-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P59
+
+ sntp/sntp.1@1.37, 2006-10-15 07:42:08-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ util/ntp-keygen-opts.c@1.37, 2006-10-15 07:42:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ util/ntp-keygen-opts.h@1.37, 2006-10-15 07:42:10-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P59
+
+ util/ntp-keygen-opts.texi@1.35, 2006-10-15 07:42:11-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P59
+
+ util/ntp-keygen.1@1.35, 2006-10-15 07:42:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P59
+
+ChangeSet@1.1251.94.61, 2006-10-15 03:47:49-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P4
+ TAG: NTP_4_2_2P4
+
+ packageinfo.sh@1.27.20.2, 2006-10-15 03:47:45-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_2P4
+
+ChangeSet@1.1251.94.60, 2006-10-15 03:14:15-04:00, stenn@whimsy.udel.edu +1 -0
+ Release 4.2.2p4
+
+ packageinfo.sh@1.27.20.1, 2006-10-15 03:14:05-04:00, stenn@whimsy.udel.edu +1 -1
+ Release 4.2.2p4
+
+ChangeSet@1.1379.1.51, 2006-10-15 06:03:07+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ Bug 715:
+ Fix from Peter Pramberger
+ do not send link scoped multicasts with a glocbal source address
+ (if present on that interface)
+
+ ntpd/ntp_io.c@1.234.1.16, 2006-10-15 06:00:32+00:00, kardel@pogo.udel.edu +9 -2
+ Bug 715:
+ Fix from Peter Pramberger
+ do not send link scoped multicasts with a glocbal source address
+ (if present on that interface)
+
+ChangeSet@1.1379.1.50, 2006-10-14 07:41:41-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P58
+ TAG: NTP_4_2_3P58
+
+ ntpd/ntpd-opts.c@1.37, 2006-10-14 07:41:22-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ ntpd/ntpd-opts.h@1.37, 2006-10-14 07:41:23-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P58
+
+ ntpd/ntpd-opts.texi@1.36, 2006-10-14 07:41:23-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P58
+
+ ntpd/ntpd.1@1.35, 2006-10-14 07:41:24-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ ntpd/ntpdsim-opts.c@1.37, 2006-10-14 07:41:25-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ ntpd/ntpdsim-opts.h@1.37, 2006-10-14 07:41:25-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P58
+
+ ntpd/ntpdsim-opts.texi@1.35, 2006-10-14 07:41:26-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P58
+
+ ntpd/ntpdsim.1@1.35, 2006-10-14 07:41:26-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ ntpdc/ntpdc-opts.c@1.37, 2006-10-14 07:41:27-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ ntpdc/ntpdc-opts.h@1.37, 2006-10-14 07:41:27-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P58
+
+ ntpdc/ntpdc-opts.texi@1.35, 2006-10-14 07:41:28-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P58
+
+ ntpdc/ntpdc.1@1.35, 2006-10-14 07:41:29-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ ntpq/ntpq-opts.c@1.39, 2006-10-14 07:41:29-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ ntpq/ntpq-opts.h@1.39, 2006-10-14 07:41:30-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P58
+
+ ntpq/ntpq-opts.texi@1.36, 2006-10-14 07:41:31-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P58
+
+ ntpq/ntpq.1@1.35, 2006-10-14 07:41:32-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ packageinfo.sh@1.50, 2006-10-14 07:41:32-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P58
+
+ sntp/sntp-opts.c@1.36, 2006-10-14 07:41:33-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ sntp/sntp-opts.h@1.36, 2006-10-14 07:41:34-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P58
+
+ sntp/sntp-opts.texi@1.33, 2006-10-14 07:41:34-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P58
+
+ sntp/sntp.1@1.36, 2006-10-14 07:41:35-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ util/ntp-keygen-opts.c@1.36, 2006-10-14 07:41:36-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ util/ntp-keygen-opts.h@1.36, 2006-10-14 07:41:36-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P58
+
+ util/ntp-keygen-opts.texi@1.34, 2006-10-14 07:41:37-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P58
+
+ util/ntp-keygen.1@1.34, 2006-10-14 07:41:38-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P58
+
+ChangeSet@1.1379.1.49, 2006-10-14 08:51:43+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ Bug #715 (& dupe 723):
+ findlocalinterface() in update_interface can be replaced by
+ a simple address to interface lookup. This avoids tripping
+ over the Linux strategy to return the localhost address
+ when attempting to send to an IPv6 address of a local interface.
+ Additionally:
+ synchronize debug output with reality
+ avoid adding duplicate address entries to the address list
+ declare more functions static to reduce name space pollution
+
+ ntpd/ntp_io.c@1.234.1.15, 2006-10-14 08:30:08+00:00, kardel@pogo.udel.edu +107 -81
+ Bug #715 (& dupe 723):
+ findlocalinterface() in update_interface can be replaced by
+ a simple address to interface lookup. This avoids tripping
+ over the Linux strategy to return the localhost address
+ when attempting to send to an IPv6 address of a local interface.
+ Additionally:
+ synchronize debug output with reality
+ avoid adding duplicate address entries to the address list
+ declare more functions static to reduce name space pollution
+
+ChangeSet@1.1379.1.48, 2006-10-13 07:48:30-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P57
+ TAG: NTP_4_2_3P57
+
+ ntpd/ntpd-opts.c@1.36, 2006-10-13 07:48:10-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P57
+
+ ntpd/ntpd-opts.h@1.36, 2006-10-13 07:48:10-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P57
+
+ ntpd/ntpd-opts.texi@1.35, 2006-10-13 07:48:11-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P57
+
+ ntpd/ntpd.1@1.34, 2006-10-13 07:48:12-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P57
+
+ ntpd/ntpdsim-opts.c@1.36, 2006-10-13 07:48:12-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P57
+
+ ntpd/ntpdsim-opts.h@1.36, 2006-10-13 07:48:13-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P57
+
+ ntpd/ntpdsim-opts.texi@1.34, 2006-10-13 07:48:14-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P57
+
+ ntpd/ntpdsim.1@1.34, 2006-10-13 07:48:14-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P57
+
+ ntpdc/ntpdc-opts.c@1.36, 2006-10-13 07:48:15-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P57
+
+ ntpdc/ntpdc-opts.h@1.36, 2006-10-13 07:48:16-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P57
+
+ ntpdc/ntpdc-opts.texi@1.34, 2006-10-13 07:48:16-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P57
+
+ ntpdc/ntpdc.1@1.34, 2006-10-13 07:48:17-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P57
+
+ ntpq/ntpq-opts.c@1.38, 2006-10-13 07:48:18-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P57
+
+ ntpq/ntpq-opts.h@1.38, 2006-10-13 07:48:18-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P57
+
+ ntpq/ntpq-opts.texi@1.35, 2006-10-13 07:48:19-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P57
+
+ ntpq/ntpq.1@1.34, 2006-10-13 07:48:19-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P57
+
+ packageinfo.sh@1.49, 2006-10-13 07:48:20-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P57
+
+ sntp/sntp-opts.c@1.35, 2006-10-13 07:48:21-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P57
+
+ sntp/sntp-opts.h@1.35, 2006-10-13 07:48:22-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P57
+
+ sntp/sntp-opts.texi@1.32, 2006-10-13 07:48:22-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P57
+
+ sntp/sntp.1@1.35, 2006-10-13 07:48:23-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P57
+
+ util/ntp-keygen-opts.c@1.35, 2006-10-13 07:48:24-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P57
+
+ util/ntp-keygen-opts.h@1.35, 2006-10-13 07:48:25-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P57
+
+ util/ntp-keygen-opts.texi@1.33, 2006-10-13 07:48:26-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P57
+
+ util/ntp-keygen.1@1.33, 2006-10-13 07:48:27-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P57
+
+ChangeSet@1.1379.1.47, 2006-10-12 23:32:07-04:00, stenn@whimsy.udel.edu +24 -0
+ Autogen-5.8.7 upgrade
+
+ clockstuff/clktest-opts.c@1.9, 2006-10-12 23:31:35-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ clockstuff/clktest-opts.h@1.9, 2006-10-12 23:31:36-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpd-opts.c@1.35, 2006-10-12 23:31:37-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpd-opts.h@1.35, 2006-10-12 23:31:37-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpd-opts.texi@1.34, 2006-10-12 23:31:38-04:00, stenn@whimsy.udel.edu +3 -3
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpd.1@1.33, 2006-10-12 23:31:39-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpdsim-opts.c@1.35, 2006-10-12 23:31:40-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpdsim-opts.h@1.35, 2006-10-12 23:31:41-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpdsim-opts.texi@1.33, 2006-10-12 23:31:41-04:00, stenn@whimsy.udel.edu +3 -3
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpdsim.1@1.33, 2006-10-12 23:31:42-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpdc/ntpdc-opts.c@1.35, 2006-10-12 23:31:43-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpdc/ntpdc-opts.h@1.35, 2006-10-12 23:31:44-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpdc/ntpdc-opts.texi@1.33, 2006-10-12 23:31:44-04:00, stenn@whimsy.udel.edu +2 -2
+ Autogen-5.8.7 upgrade
+
+ ntpdc/ntpdc.1@1.33, 2006-10-12 23:31:45-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpq/ntpq-opts.c@1.37, 2006-10-12 23:31:46-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpq/ntpq-opts.h@1.37, 2006-10-12 23:31:46-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpq/ntpq-opts.texi@1.34, 2006-10-12 23:31:48-04:00, stenn@whimsy.udel.edu +3 -3
+ Autogen-5.8.7 upgrade
+
+ ntpq/ntpq.1@1.33, 2006-10-12 23:31:48-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ sntp/sntp-opts.c@1.34, 2006-10-12 23:31:49-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ sntp/sntp-opts.h@1.34, 2006-10-12 23:31:50-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ util/ntp-keygen-opts.c@1.34, 2006-10-12 23:31:51-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ util/ntp-keygen-opts.h@1.34, 2006-10-12 23:31:52-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ util/ntp-keygen-opts.texi@1.32, 2006-10-12 23:31:53-04:00, stenn@whimsy.udel.edu +2 -2
+ Autogen-5.8.7 upgrade
+
+ util/ntp-keygen.1@1.32, 2006-10-12 23:31:53-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ChangeSet@1.1379.1.46, 2006-10-12 23:29:11-04:00, stenn@whimsy.udel.edu +1 -0
+ Require autogen-5.8.7
+
+ include/autogen-version.def@1.3, 2006-10-12 23:28:59-04:00, stenn@whimsy.udel.edu +1 -1
+ Require autogen-5.8.7
+
+ChangeSet@1.1379.1.45, 2006-10-12 22:46:49-04:00, stenn@whimsy.udel.edu +14 -0
+ Autogen-5.8.7 upgrade
+
+ clockstuff/clktest-opts.c@1.8, 2006-10-12 22:46:22-04:00, stenn@whimsy.udel.edu +2 -2
+ Autogen-5.8.7 upgrade
+
+ clockstuff/clktest-opts.h@1.8, 2006-10-12 22:46:23-04:00, stenn@whimsy.udel.edu +3 -3
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpd-opts.c@1.34, 2006-10-12 22:46:23-04:00, stenn@whimsy.udel.edu +3 -3
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpd-opts.h@1.34, 2006-10-12 22:46:24-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpdsim-opts.c@1.34, 2006-10-12 22:46:25-04:00, stenn@whimsy.udel.edu +3 -3
+ Autogen-5.8.7 upgrade
+
+ ntpd/ntpdsim-opts.h@1.34, 2006-10-12 22:46:26-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpdc/ntpdc-opts.c@1.34, 2006-10-12 22:46:27-04:00, stenn@whimsy.udel.edu +3 -3
+ Autogen-5.8.7 upgrade
+
+ ntpdc/ntpdc-opts.h@1.34, 2006-10-12 22:46:28-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ ntpq/ntpq-opts.c@1.36, 2006-10-12 22:46:30-04:00, stenn@whimsy.udel.edu +3 -3
+ Autogen-5.8.7 upgrade
+
+ ntpq/ntpq-opts.h@1.36, 2006-10-12 22:46:31-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ sntp/sntp-opts.c@1.33, 2006-10-12 22:46:32-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ sntp/sntp-opts.h@1.33, 2006-10-12 22:46:33-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ util/ntp-keygen-opts.c@1.33, 2006-10-12 22:46:34-04:00, stenn@whimsy.udel.edu +3 -3
+ Autogen-5.8.7 upgrade
+
+ util/ntp-keygen-opts.h@1.33, 2006-10-12 22:46:35-04:00, stenn@whimsy.udel.edu +1 -1
+ Autogen-5.8.7 upgrade
+
+ChangeSet@1.1379.1.44, 2006-10-12 22:42:48-04:00, stenn@whimsy.udel.edu +62 -0
+ autogen-5.8.7 upgrade
+
+ libopts/autoopts.c@1.10, 2006-10-12 22:41:36-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/autoopts.c@1.7, 2006-10-12 22:41:36-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/autoopts.h@1.9, 2006-10-12 22:41:37-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/autoopts.h@1.7, 2006-10-12 22:41:38-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/boolean.c@1.8, 2006-10-12 22:41:39-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/boolean.c@1.5, 2006-10-12 22:41:39-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/compat/compat.h@1.12, 2006-10-12 22:41:39-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/compat/compat.h@1.8, 2006-10-12 22:41:40-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/configfile.c@1.10, 2006-10-12 22:41:44-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/configfile.c@1.7, 2006-10-12 22:41:45-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/cook.c@1.9, 2006-10-12 22:41:46-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/cook.c@1.6, 2006-10-12 22:41:47-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/enumeration.c@1.9, 2006-10-12 22:41:47-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/enumeration.c@1.6, 2006-10-12 22:41:48-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/environment.c@1.8, 2006-10-12 22:41:48-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/environment.c@1.5, 2006-10-12 22:41:49-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/genshell.c@1.9, 2006-10-12 22:41:50-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/genshell.c@1.6, 2006-10-12 22:41:50-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/genshell.h@1.9, 2006-10-12 22:41:51-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/genshell.h@1.6, 2006-10-12 22:41:52-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/m4/libopts.m4@1.14, 2006-10-12 22:41:54-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/m4/libopts.m4@1.11, 2006-10-12 22:41:55-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen-5.8.7 upgrade
+
+ libopts/m4/liboptschk.m4@1.3, 2006-10-12 22:41:55-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/m4/liboptschk.m4@1.3, 2006-10-12 22:41:56-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/load.c@1.10, 2006-10-12 22:41:52-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/load.c@1.7, 2006-10-12 22:41:54-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/makeshell.c@1.11, 2006-10-12 22:41:56-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/makeshell.c@1.8, 2006-10-12 22:41:57-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/nested.c@1.9, 2006-10-12 22:41:58-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/nested.c@1.6, 2006-10-12 22:41:59-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/numeric.c@1.9, 2006-10-12 22:41:59-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/numeric.c@1.6, 2006-10-12 22:42:00-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/autoopts/options.h@1.10, 2006-10-12 22:41:33-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/autoopts/options.h@1.7, 2006-10-12 22:41:33-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen-5.8.7 upgrade
+
+ libopts/compat/pathfind.c@1.9, 2006-10-12 22:41:41-04:00, stenn@whimsy.udel.edu +2 -3
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/compat/pathfind.c@1.6, 2006-10-12 22:41:42-04:00, stenn@whimsy.udel.edu +2 -3
+ autogen-5.8.7 upgrade
+
+ libopts/pgusage.c@1.9, 2006-10-12 22:42:00-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/pgusage.c@1.5, 2006-10-12 22:42:00-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/proto.h@1.11, 2006-10-12 22:42:01-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/proto.h@1.8, 2006-10-12 22:42:01-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/putshell.c@1.10, 2006-10-12 22:42:01-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/putshell.c@1.7, 2006-10-12 22:42:02-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/restore.c@1.9, 2006-10-12 22:42:03-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/restore.c@1.5, 2006-10-12 22:42:04-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/save.c@1.10, 2006-10-12 22:42:05-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/save.c@1.7, 2006-10-12 22:42:06-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/sort.c@1.8, 2006-10-12 22:42:07-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/sort.c@1.4, 2006-10-12 22:42:07-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/stack.c@1.10, 2006-10-12 22:42:08-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/stack.c@1.7, 2006-10-12 22:42:09-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/streqvcmp.c@1.9, 2006-10-12 22:42:10-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/streqvcmp.c@1.6, 2006-10-12 22:42:10-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/text_mmap.c@1.8, 2006-10-12 22:42:11-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/text_mmap.c@1.5, 2006-10-12 22:42:12-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/autoopts/usage-txt.h@1.9, 2006-10-12 22:41:34-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/autoopts/usage-txt.h@1.6, 2006-10-12 22:41:35-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/usage.c@1.9, 2006-10-12 22:42:13-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/usage.c@1.7, 2006-10-12 22:42:14-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/version.c@1.9, 2006-10-12 22:42:15-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/version.c@1.6, 2006-10-12 22:42:15-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen-5.8.7 upgrade
+
+ libopts/compat/windows-config.h@1.5, 2006-10-12 22:41:43-04:00, stenn@whimsy.udel.edu +8 -2
+ autogen-5.8.7 upgrade
+
+ sntp/libopts/compat/windows-config.h@1.3, 2006-10-12 22:41:43-04:00, stenn@whimsy.udel.edu +8 -2
+ autogen-5.8.7 upgrade
+
+ChangeSet@1.1379.1.43, 2006-10-12 19:22:09-04:00, stenn@whimsy.udel.edu +1 -0
+ Improve the getsockname() arg determination
+
+ configure.ac@1.388.1.13, 2006-10-12 19:21:57-04:00, stenn@whimsy.udel.edu +10 -6
+ Improve the getsockname() arg determination
+
+ChangeSet@1.1379.1.42, 2006-10-12 07:40:55-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P56
+ TAG: NTP_4_2_3P56
+
+ ntpd/ntpd-opts.c@1.33, 2006-10-12 07:40:34-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ ntpd/ntpd-opts.h@1.33, 2006-10-12 07:40:35-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P56
+
+ ntpd/ntpd-opts.texi@1.33, 2006-10-12 07:40:36-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P56
+
+ ntpd/ntpd.1@1.32, 2006-10-12 07:40:36-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ ntpd/ntpdsim-opts.c@1.33, 2006-10-12 07:40:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ ntpd/ntpdsim-opts.h@1.33, 2006-10-12 07:40:38-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P56
+
+ ntpd/ntpdsim-opts.texi@1.32, 2006-10-12 07:40:38-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P56
+
+ ntpd/ntpdsim.1@1.32, 2006-10-12 07:40:39-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ ntpdc/ntpdc-opts.c@1.33, 2006-10-12 07:40:39-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ ntpdc/ntpdc-opts.h@1.33, 2006-10-12 07:40:40-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P56
+
+ ntpdc/ntpdc-opts.texi@1.32, 2006-10-12 07:40:40-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P56
+
+ ntpdc/ntpdc.1@1.32, 2006-10-12 07:40:41-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ ntpq/ntpq-opts.c@1.35, 2006-10-12 07:40:42-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ ntpq/ntpq-opts.h@1.35, 2006-10-12 07:40:42-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P56
+
+ ntpq/ntpq-opts.texi@1.33, 2006-10-12 07:40:43-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P56
+
+ ntpq/ntpq.1@1.32, 2006-10-12 07:40:44-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ packageinfo.sh@1.48, 2006-10-12 07:40:45-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P56
+
+ sntp/sntp-opts.c@1.32, 2006-10-12 07:40:45-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ sntp/sntp-opts.h@1.32, 2006-10-12 07:40:47-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P56
+
+ sntp/sntp-opts.texi@1.31, 2006-10-12 07:40:48-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P56
+
+ sntp/sntp.1@1.34, 2006-10-12 07:40:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ util/ntp-keygen-opts.c@1.32, 2006-10-12 07:40:50-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ util/ntp-keygen-opts.h@1.32, 2006-10-12 07:40:51-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P56
+
+ util/ntp-keygen-opts.texi@1.31, 2006-10-12 07:40:51-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P56
+
+ util/ntp-keygen.1@1.31, 2006-10-12 07:40:52-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P56
+
+ChangeSet@1.1379.1.41, 2006-10-12 02:30:52-04:00, stenn@whimsy.udel.edu +1 -0
+ Update NEWS file
+
+ NEWS@1.68, 2006-10-12 02:30:41-04:00, stenn@whimsy.udel.edu +36 -0
+ Update NEWS file
+
+ChangeSet@1.1379.11.2, 2006-10-11 22:40:46-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #690. Purify memory reference error
+
+ ports/winnt/libntp/dnslookup.c@1.4.1.4, 2006-10-11 22:40:27-04:00, mayer@pogo.udel.edu +4 -3
+ Bug #690. Purify memory reference error
+
+ChangeSet@1.1379.11.1, 2006-10-11 22:39:16-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #718. Update to config.h to deal with socklen_t
+
+ ports/winnt/include/config.h@1.44, 2006-10-11 22:38:35-04:00, mayer@pogo.udel.edu +13 -0
+ Bug #718. Update to config.h to deal with socklen_t
+
+ChangeSet@1.1379.1.39, 2006-10-11 07:44:18-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P55
+ TAG: NTP_4_2_3P55
+
+ ntpd/ntpd-opts.c@1.32, 2006-10-11 07:43:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ ntpd/ntpd-opts.h@1.32, 2006-10-11 07:44:00-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P55
+
+ ntpd/ntpd-opts.texi@1.32, 2006-10-11 07:44:00-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P55
+
+ ntpd/ntpd.1@1.31, 2006-10-11 07:44:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ ntpd/ntpdsim-opts.c@1.32, 2006-10-11 07:44:01-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ ntpd/ntpdsim-opts.h@1.32, 2006-10-11 07:44:02-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P55
+
+ ntpd/ntpdsim-opts.texi@1.31, 2006-10-11 07:44:03-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P55
+
+ ntpd/ntpdsim.1@1.31, 2006-10-11 07:44:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ ntpdc/ntpdc-opts.c@1.32, 2006-10-11 07:44:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ ntpdc/ntpdc-opts.h@1.32, 2006-10-11 07:44:04-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P55
+
+ ntpdc/ntpdc-opts.texi@1.31, 2006-10-11 07:44:05-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P55
+
+ ntpdc/ntpdc.1@1.31, 2006-10-11 07:44:06-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ ntpq/ntpq-opts.c@1.34, 2006-10-11 07:44:06-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ ntpq/ntpq-opts.h@1.34, 2006-10-11 07:44:07-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P55
+
+ ntpq/ntpq-opts.texi@1.32, 2006-10-11 07:44:08-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P55
+
+ ntpq/ntpq.1@1.31, 2006-10-11 07:44:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ packageinfo.sh@1.47, 2006-10-11 07:44:09-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P55
+
+ sntp/sntp-opts.c@1.31, 2006-10-11 07:44:10-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ sntp/sntp-opts.h@1.31, 2006-10-11 07:44:11-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P55
+
+ sntp/sntp-opts.texi@1.30, 2006-10-11 07:44:12-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P55
+
+ sntp/sntp.1@1.33, 2006-10-11 07:44:12-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ util/ntp-keygen-opts.c@1.31, 2006-10-11 07:44:13-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ util/ntp-keygen-opts.h@1.31, 2006-10-11 07:44:13-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P55
+
+ util/ntp-keygen-opts.texi@1.30, 2006-10-11 07:44:15-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P55
+
+ util/ntp-keygen.1@1.30, 2006-10-11 07:44:15-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P55
+
+ChangeSet@1.1379.1.37, 2006-10-10 19:52:42-04:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 718] Determine/use the correct type of saddrlen for getsockname()
+
+ configure.ac@1.388.1.12, 2006-10-10 19:52:28-04:00, stenn@whimsy.udel.edu +23 -1
+ [Bug 718] Determine/use the correct type of saddrlen for getsockname()
+
+ libisc/net.c@1.8, 2006-10-10 19:52:28-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 718] Determine/use the correct type of saddrlen for getsockname()
+
+ ntpd/ntp_io.c@1.234.1.14, 2006-10-10 19:52:29-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 718] Determine/use the correct type of saddrlen for getsockname()
+
+ChangeSet@1.1379.10.1, 2006-10-10 16:15:47+00:00, burnicki@pogo.udel.edu +1 -0
+ [Bug 708] nt_clockstuff.c has unintentionally been messed up with the previous changeset. This is the correct version.
+
+ ports/winnt/ntpd/nt_clockstuff.c@1.23, 2006-10-10 16:15:44+00:00, burnicki@pogo.udel.edu +574 -249
+ Oops, this file has unintentionally been messed up with the previous changeset. This is the correct version.
+
+ChangeSet@1.1379.1.36, 2006-10-10 07:46:00-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P54
+ TAG: NTP_4_2_3P54
+
+ ntpd/ntpd-opts.c@1.31, 2006-10-10 07:45:36-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ ntpd/ntpd-opts.h@1.31, 2006-10-10 07:45:37-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P54
+
+ ntpd/ntpd-opts.texi@1.31, 2006-10-10 07:45:37-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P54
+
+ ntpd/ntpd.1@1.30, 2006-10-10 07:45:38-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ ntpd/ntpdsim-opts.c@1.31, 2006-10-10 07:45:39-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ ntpd/ntpdsim-opts.h@1.31, 2006-10-10 07:45:40-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P54
+
+ ntpd/ntpdsim-opts.texi@1.30, 2006-10-10 07:45:40-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P54
+
+ ntpd/ntpdsim.1@1.30, 2006-10-10 07:45:41-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ ntpdc/ntpdc-opts.c@1.31, 2006-10-10 07:45:41-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ ntpdc/ntpdc-opts.h@1.31, 2006-10-10 07:45:42-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P54
+
+ ntpdc/ntpdc-opts.texi@1.30, 2006-10-10 07:45:43-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P54
+
+ ntpdc/ntpdc.1@1.30, 2006-10-10 07:45:44-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ ntpq/ntpq-opts.c@1.33, 2006-10-10 07:45:44-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ ntpq/ntpq-opts.h@1.33, 2006-10-10 07:45:45-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P54
+
+ ntpq/ntpq-opts.texi@1.31, 2006-10-10 07:45:46-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P54
+
+ ntpq/ntpq.1@1.30, 2006-10-10 07:45:47-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ packageinfo.sh@1.46, 2006-10-10 07:45:47-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P54
+
+ sntp/sntp-opts.c@1.30, 2006-10-10 07:45:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ sntp/sntp-opts.h@1.30, 2006-10-10 07:45:49-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P54
+
+ sntp/sntp-opts.texi@1.29, 2006-10-10 07:45:50-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P54
+
+ sntp/sntp.1@1.32, 2006-10-10 07:45:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ util/ntp-keygen-opts.c@1.30, 2006-10-10 07:45:52-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ util/ntp-keygen-opts.h@1.30, 2006-10-10 07:45:52-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P54
+
+ util/ntp-keygen-opts.texi@1.29, 2006-10-10 07:45:53-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P54
+
+ util/ntp-keygen.1@1.29, 2006-10-10 07:45:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P54
+
+ChangeSet@1.1379.1.35, 2006-10-10 02:39:26-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 718] Use the recommended type for the saddrlen arg to getsockname()
+
+ NEWS@1.67, 2006-10-10 02:39:13-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 718] Use the recommended type for the saddrlen arg to getsockname()
+
+ ntpd/ntp_io.c@1.234.1.13, 2006-10-10 02:38:43-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 718] Use the recommended type for the saddrlen arg to getsockname()
+
+ChangeSet@1.1379.1.34, 2006-10-10 02:27:12-04:00, stenn@whimsy.udel.edu +2 -0
+ Use NO_OPTION_NAME_WARNINGS if cc does not support #warning
+
+ configure.ac@1.388.1.11, 2006-10-10 02:25:45-04:00, stenn@whimsy.udel.edu +11 -0
+ Use NO_OPTION_NAME_WARNINGS if cc does not support #warning
+
+ sntp/configure.ac@1.14, 2006-10-10 02:26:57-04:00, stenn@whimsy.udel.edu +11 -0
+ Use NO_OPTION_NAME_WARNINGS if cc does not support #warning
+
+ChangeSet@1.1379.1.33, 2006-10-09 07:41:25-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P53
+ TAG: NTP_4_2_3P53
+
+ ntpd/ntpd-opts.c@1.30, 2006-10-09 07:41:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ ntpd/ntpd-opts.h@1.30, 2006-10-09 07:41:04-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P53
+
+ ntpd/ntpd-opts.texi@1.30, 2006-10-09 07:41:04-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P53
+
+ ntpd/ntpd.1@1.29, 2006-10-09 07:41:05-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ ntpd/ntpdsim-opts.c@1.30, 2006-10-09 07:41:06-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ ntpd/ntpdsim-opts.h@1.30, 2006-10-09 07:41:07-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P53
+
+ ntpd/ntpdsim-opts.texi@1.29, 2006-10-09 07:41:08-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P53
+
+ ntpd/ntpdsim.1@1.29, 2006-10-09 07:41:08-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ ntpdc/ntpdc-opts.c@1.30, 2006-10-09 07:41:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ ntpdc/ntpdc-opts.h@1.30, 2006-10-09 07:41:09-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P53
+
+ ntpdc/ntpdc-opts.texi@1.29, 2006-10-09 07:41:10-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P53
+
+ ntpdc/ntpdc.1@1.29, 2006-10-09 07:41:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ ntpq/ntpq-opts.c@1.32, 2006-10-09 07:41:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ ntpq/ntpq-opts.h@1.32, 2006-10-09 07:41:12-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P53
+
+ ntpq/ntpq-opts.texi@1.30, 2006-10-09 07:41:13-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P53
+
+ ntpq/ntpq.1@1.29, 2006-10-09 07:41:14-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ packageinfo.sh@1.45, 2006-10-09 07:41:15-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P53
+
+ sntp/sntp-opts.c@1.29, 2006-10-09 07:41:15-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ sntp/sntp-opts.h@1.29, 2006-10-09 07:41:17-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P53
+
+ sntp/sntp-opts.texi@1.28, 2006-10-09 07:41:17-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P53
+
+ sntp/sntp.1@1.31, 2006-10-09 07:41:19-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ util/ntp-keygen-opts.c@1.29, 2006-10-09 07:41:20-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ util/ntp-keygen-opts.h@1.29, 2006-10-09 07:41:20-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P53
+
+ util/ntp-keygen-opts.texi@1.28, 2006-10-09 07:41:21-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P53
+
+ util/ntp-keygen.1@1.28, 2006-10-09 07:41:22-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P53
+
+ChangeSet@1.1379.1.32, 2006-10-09 06:35:20-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 715] Fix multicast issues under Linux
+
+ NEWS@1.66, 2006-10-09 06:35:05-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 715] Fix multicast issues under Linux
+
+ libisc/ifiter_ioctl.c@1.25, 2006-10-09 06:35:05-04:00, stenn@whimsy.udel.edu +45 -7
+ [Bug 715] Fix multicast issues under Linux
+
+ChangeSet@1.1379.1.31, 2006-10-08 19:39:10-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P52
+ TAG: NTP_4_2_3P52
+
+ ntpd/ntpd-opts.c@1.29, 2006-10-08 19:38:48-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P52
+
+ ntpd/ntpd-opts.h@1.29, 2006-10-08 19:38:49-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P52
+
+ ntpd/ntpd-opts.texi@1.29, 2006-10-08 19:38:50-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P52
+
+ ntpd/ntpd.1@1.28, 2006-10-08 19:38:50-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P52
+
+ ntpd/ntpdsim-opts.c@1.29, 2006-10-08 19:38:51-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P52
+
+ ntpd/ntpdsim-opts.h@1.29, 2006-10-08 19:38:52-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P52
+
+ ntpd/ntpdsim-opts.texi@1.28, 2006-10-08 19:38:52-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P52
+
+ ntpd/ntpdsim.1@1.28, 2006-10-08 19:38:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P52
+
+ ntpdc/ntpdc-opts.c@1.29, 2006-10-08 19:38:54-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P52
+
+ ntpdc/ntpdc-opts.h@1.29, 2006-10-08 19:38:54-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P52
+
+ ntpdc/ntpdc-opts.texi@1.28, 2006-10-08 19:38:55-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P52
+
+ ntpdc/ntpdc.1@1.28, 2006-10-08 19:38:56-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P52
+
+ ntpq/ntpq-opts.c@1.31, 2006-10-08 19:38:57-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P52
+
+ ntpq/ntpq-opts.h@1.31, 2006-10-08 19:38:57-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P52
+
+ ntpq/ntpq-opts.texi@1.29, 2006-10-08 19:38:58-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P52
+
+ ntpq/ntpq.1@1.28, 2006-10-08 19:38:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P52
+
+ packageinfo.sh@1.44, 2006-10-08 19:39:00-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P52
+
+ sntp/sntp-opts.c@1.28, 2006-10-08 19:39:01-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P52
+
+ sntp/sntp-opts.h@1.28, 2006-10-08 19:39:01-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P52
+
+ sntp/sntp-opts.texi@1.27, 2006-10-08 19:39:02-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P52
+
+ sntp/sntp.1@1.30, 2006-10-08 19:39:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P52
+
+ util/ntp-keygen-opts.c@1.28, 2006-10-08 19:39:03-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P52
+
+ util/ntp-keygen-opts.h@1.28, 2006-10-08 19:39:04-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P52
+
+ util/ntp-keygen-opts.texi@1.27, 2006-10-08 19:39:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P52
+
+ util/ntp-keygen.1@1.27, 2006-10-08 19:39:05-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P52
+
+ChangeSet@1.1379.1.30, 2006-10-08 04:32:17-04:00, stenn@whimsy.udel.edu +53 -0
+ libopts-27.5.3
+
+ libopts/Makefile.am@1.6, 2006-10-08 04:30:43-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ sntp/libopts/Makefile.am@1.4, 2006-10-08 04:31:07-04:00, stenn@whimsy.udel.edu +10 -6
+ libopts-27.5.3
+
+ libopts/autoopts.c@1.9, 2006-10-08 04:30:43-04:00, stenn@whimsy.udel.edu +8 -6
+ libopts-27.5.3
+
+ sntp/libopts/autoopts.c@1.6, 2006-10-08 04:31:07-04:00, stenn@whimsy.udel.edu +8 -6
+ libopts-27.5.3
+
+ libopts/configfile.c@1.9, 2006-10-08 04:30:44-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ sntp/libopts/configfile.c@1.6, 2006-10-08 04:31:08-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ libopts/cook.c@1.8, 2006-10-08 04:30:45-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ sntp/libopts/cook.c@1.5, 2006-10-08 04:31:09-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ libopts/enumeration.c@1.8, 2006-10-08 04:30:46-04:00, stenn@whimsy.udel.edu +4 -4
+ libopts-27.5.3
+
+ sntp/libopts/enumeration.c@1.5, 2006-10-08 04:31:09-04:00, stenn@whimsy.udel.edu +4 -4
+ libopts-27.5.3
+
+ libopts/genshell.c@1.8, 2006-10-08 04:30:47-04:00, stenn@whimsy.udel.edu +3 -1
+ libopts-27.5.3
+
+ sntp/libopts/genshell.c@1.5, 2006-10-08 04:31:10-04:00, stenn@whimsy.udel.edu +3 -1
+ libopts-27.5.3
+
+ libopts/genshell.h@1.8, 2006-10-08 04:30:48-04:00, stenn@whimsy.udel.edu +5 -3
+ libopts-27.5.3
+
+ sntp/libopts/genshell.h@1.5, 2006-10-08 04:31:11-04:00, stenn@whimsy.udel.edu +5 -3
+ libopts-27.5.3
+
+ libopts/m4/libopts.m4@1.13, 2006-10-08 04:30:56-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ sntp/libopts/m4/libopts.m4@1.10, 2006-10-08 04:31:20-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ libopts/load.c@1.9, 2006-10-08 04:30:48-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ sntp/libopts/load.c@1.6, 2006-10-08 04:31:11-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ libopts/makeshell.c@1.10, 2006-10-08 04:30:50-04:00, stenn@whimsy.udel.edu +13 -4
+ libopts-27.5.3
+
+ sntp/libopts/makeshell.c@1.7, 2006-10-08 04:31:12-04:00, stenn@whimsy.udel.edu +13 -4
+ libopts-27.5.3
+
+ libopts/nested.c@1.8, 2006-10-08 04:30:50-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ sntp/libopts/nested.c@1.5, 2006-10-08 04:31:13-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ libopts/numeric.c@1.8, 2006-10-08 04:30:51-04:00, stenn@whimsy.udel.edu +4 -4
+ libopts-27.5.3
+
+ sntp/libopts/numeric.c@1.5, 2006-10-08 04:31:14-04:00, stenn@whimsy.udel.edu +4 -4
+ libopts-27.5.3
+
+ libopts/autoopts/options.h@1.9, 2006-10-08 04:30:55-04:00, stenn@whimsy.udel.edu +131 -64
+ libopts-27.5.3
+
+ sntp/libopts/autoopts/options.h@1.6, 2006-10-08 04:31:18-04:00, stenn@whimsy.udel.edu +131 -64
+ libopts-27.5.3
+
+ libopts/proto.h@1.10, 2006-10-08 04:30:51-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ sntp/libopts/proto.h@1.7, 2006-10-08 04:31:14-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ libopts/putshell.c@1.9, 2006-10-08 04:30:51-04:00, stenn@whimsy.udel.edu +8 -8
+ libopts-27.5.3
+
+ sntp/libopts/putshell.c@1.6, 2006-10-08 04:31:15-04:00, stenn@whimsy.udel.edu +8 -8
+ libopts-27.5.3
+
+ libopts/restore.c@1.8, 2006-10-08 04:30:52-04:00, stenn@whimsy.udel.edu +2 -2
+ libopts-27.5.3
+
+ sntp/libopts/restore.c@1.4, 2006-10-08 04:31:15-04:00, stenn@whimsy.udel.edu +2 -2
+ libopts-27.5.3
+
+ libopts/save.c@1.9, 2006-10-08 04:30:53-04:00, stenn@whimsy.udel.edu +7 -8
+ libopts-27.5.3
+
+ sntp/libopts/save.c@1.6, 2006-10-08 04:31:16-04:00, stenn@whimsy.udel.edu +7 -8
+ libopts-27.5.3
+
+ libopts/stack.c@1.9, 2006-10-08 04:30:54-04:00, stenn@whimsy.udel.edu +3 -3
+ libopts-27.5.3
+
+ sntp/libopts/stack.c@1.6, 2006-10-08 04:31:17-04:00, stenn@whimsy.udel.edu +3 -3
+ libopts-27.5.3
+
+ libopts/autoopts/usage-txt.h@1.8, 2006-10-08 04:30:56-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ sntp/libopts/autoopts/usage-txt.h@1.5, 2006-10-08 04:31:18-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ clockstuff/clktest-opts.c@1.7, 2006-10-08 04:30:41-04:00, stenn@whimsy.udel.edu +9 -7
+ libopts-27.5.3
+
+ clockstuff/clktest-opts.h@1.7, 2006-10-08 04:30:42-04:00, stenn@whimsy.udel.edu +6 -4
+ libopts-27.5.3
+
+ ntpd/ntpd-opts.c@1.28, 2006-10-08 04:30:57-04:00, stenn@whimsy.udel.edu +3 -1
+ libopts-27.5.3
+
+ ntpd/ntpd-opts.h@1.28, 2006-10-08 04:30:58-04:00, stenn@whimsy.udel.edu +6 -4
+ libopts-27.5.3
+
+ ntpd/ntpdsim-opts.c@1.28, 2006-10-08 04:30:59-04:00, stenn@whimsy.udel.edu +3 -1
+ libopts-27.5.3
+
+ ntpd/ntpdsim-opts.h@1.28, 2006-10-08 04:31:00-04:00, stenn@whimsy.udel.edu +6 -4
+ libopts-27.5.3
+
+ ntpdc/ntpdc-opts.c@1.28, 2006-10-08 04:31:01-04:00, stenn@whimsy.udel.edu +3 -1
+ libopts-27.5.3
+
+ ntpdc/ntpdc-opts.h@1.28, 2006-10-08 04:31:02-04:00, stenn@whimsy.udel.edu +6 -4
+ libopts-27.5.3
+
+ ntpq/ntpq-opts.c@1.30, 2006-10-08 04:31:03-04:00, stenn@whimsy.udel.edu +3 -1
+ libopts-27.5.3
+
+ ntpq/ntpq-opts.h@1.30, 2006-10-08 04:31:04-04:00, stenn@whimsy.udel.edu +6 -4
+ libopts-27.5.3
+
+ ntpq/ntpq-opts.texi@1.28, 2006-10-08 04:31:04-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.5.3
+
+ sntp/sntp-opts.c@1.27, 2006-10-08 04:31:05-04:00, stenn@whimsy.udel.edu +3 -1
+ libopts-27.5.3
+
+ sntp/sntp-opts.h@1.27, 2006-10-08 04:31:06-04:00, stenn@whimsy.udel.edu +6 -4
+ libopts-27.5.3
+
+ util/ntp-keygen-opts.c@1.27, 2006-10-08 04:31:20-04:00, stenn@whimsy.udel.edu +5 -3
+ libopts-27.5.3
+
+ util/ntp-keygen-opts.h@1.27, 2006-10-08 04:31:21-04:00, stenn@whimsy.udel.edu +6 -4
+ libopts-27.5.3
+
+ChangeSet@1.1379.9.1, 2006-10-07 19:42:28+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ allow asyncio_readers to remove themselves when being run
+
+ ntpd/ntp_io.c@1.234.1.12, 2006-10-07 19:41:38+00:00, kardel@pogo.udel.edu +5 -3
+ allow asyncio_readers to remove themselves when being run
+
+ChangeSet@1.1379.1.28, 2006-10-05 10:20:42+00:00, burnicki@pogo.udel.edu +2 -0
+ [Bug 708] Set the affinity to a specific CPU for the clock interpolation thread only, not for the whole process.
+
+ ports/winnt/ntpd/nt_clockstuff.c@1.22, 2006-10-05 10:20:40+00:00, burnicki@pogo.udel.edu +250 -575
+ Set the affinity to a specific CPU for the clock interpolation thread only, not for the whole process.
+
+ ports/winnt/ntpd/win32_io.c@1.12, 2006-10-05 10:20:40+00:00, burnicki@pogo.udel.edu +0 -22
+ Set the affinity to a specific CPU for the clock interpolation thread only, not for the whole process.
+
+ChangeSet@1.1379.1.27, 2006-09-26 23:45:08-04:00, stenn@whimsy.udel.edu +1 -0
+ update NEWS
+
+ NEWS@1.65, 2006-09-26 23:44:48-04:00, stenn@whimsy.udel.edu +2 -0
+ update
+
+ChangeSet@1.1379.8.3, 2006-09-26 22:17:09-04:00, mayer@pogo.udel.edu +1 -0
+ Unchanged
+
+ ntpd/refclock_wwv.c@1.63.1.1, 2006-09-26 22:16:51-04:00, mayer@pogo.udel.edu +4 -7
+ Unchanged
+
+ChangeSet@1.1379.8.2, 2006-09-26 18:14:39-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #670: Fix for Transfer Aborted messages on Windows on reconfiguring interfaces
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.21, 2006-09-26 18:14:26-04:00, mayer@pogo.udel.edu +98 -38
+ Bug #670: Fix for Transfer Aborted messages on Windows on reconfiguring interfaces
+
+ChangeSet@1.1379.8.1, 2006-09-26 18:11:11-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #690: Fix for buffer address issue
+
+ ports/winnt/libntp/dnslookup.c@1.4.1.3, 2006-09-26 18:10:40-04:00, mayer@pogo.udel.edu +1 -1
+ Bug #690: Fix for buffer address issue
+
+ChangeSet@1.1379.1.25, 2006-09-26 16:16:30-04:00, stenn@whimsy.udel.edu +26 -0
+ autogen update
+
+ clockstuff/clktest-opts.c@1.6, 2006-09-25 15:03:08-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen update
+
+ clockstuff/clktest-opts.h@1.6, 2006-09-25 15:03:09-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen update
+
+ ntpd/ntpd-opts.c@1.27, 2006-09-25 15:03:10-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen update
+
+ ntpd/ntpd-opts.h@1.27, 2006-09-25 15:03:11-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ ntpd/ntpd-opts.texi@1.28, 2006-09-25 15:03:12-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen update
+
+ ntpd/ntpd.1@1.27, 2006-09-25 15:03:12-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ ntpd/ntpdsim-opts.c@1.27, 2006-09-25 15:03:13-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen update
+
+ ntpd/ntpdsim-opts.h@1.27, 2006-09-25 15:03:14-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ ntpd/ntpdsim-opts.texi@1.27, 2006-09-25 15:03:15-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen update
+
+ ntpd/ntpdsim.1@1.27, 2006-09-25 15:03:16-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ ntpdc/ntpdc-opts.c@1.27, 2006-09-25 15:03:16-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen update
+
+ ntpdc/ntpdc-opts.h@1.27, 2006-09-25 15:03:17-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ ntpdc/ntpdc-opts.texi@1.27, 2006-09-25 15:03:18-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen update
+
+ ntpdc/ntpdc.1@1.27, 2006-09-25 15:03:19-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ ntpq/ntpq-opts.c@1.29, 2006-09-25 15:03:20-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen update
+
+ ntpq/ntpq-opts.h@1.29, 2006-09-25 15:03:21-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ ntpq/ntpq-opts.texi@1.27, 2006-09-25 15:03:21-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen update
+
+ ntpq/ntpq.1@1.27, 2006-09-25 15:03:22-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ sntp/sntp-opts.c@1.26, 2006-09-25 15:03:22-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ sntp/sntp-opts.h@1.26, 2006-09-25 15:03:23-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ sntp/sntp-opts.texi@1.26, 2006-09-25 15:03:24-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ sntp/sntp.1@1.29, 2006-09-25 15:03:25-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ util/ntp-keygen-opts.c@1.26, 2006-09-25 15:03:25-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen update
+
+ util/ntp-keygen-opts.h@1.26, 2006-09-25 15:03:26-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ util/ntp-keygen-opts.texi@1.26, 2006-09-25 15:03:27-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen update
+
+ util/ntp-keygen.1@1.26, 2006-09-25 15:03:27-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen update
+
+ChangeSet@1.1379.1.24, 2006-09-25 07:49:15-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P51
+ TAG: NTP_4_2_3P51
+
+ ntpd/ntpd-opts.c@1.26, 2006-09-25 07:48:54-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P51
+
+ ntpd/ntpd-opts.h@1.26, 2006-09-25 07:48:54-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P51
+
+ ntpd/ntpd-opts.texi@1.27, 2006-09-25 07:48:55-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P51
+
+ ntpd/ntpd.1@1.26, 2006-09-25 07:48:56-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P51
+
+ ntpd/ntpdsim-opts.c@1.26, 2006-09-25 07:48:57-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P51
+
+ ntpd/ntpdsim-opts.h@1.26, 2006-09-25 07:48:58-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P51
+
+ ntpd/ntpdsim-opts.texi@1.26, 2006-09-25 07:48:59-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P51
+
+ ntpd/ntpdsim.1@1.26, 2006-09-25 07:48:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P51
+
+ ntpdc/ntpdc-opts.c@1.26, 2006-09-25 07:49:00-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P51
+
+ ntpdc/ntpdc-opts.h@1.26, 2006-09-25 07:49:01-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P51
+
+ ntpdc/ntpdc-opts.texi@1.26, 2006-09-25 07:49:02-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P51
+
+ ntpdc/ntpdc.1@1.26, 2006-09-25 07:49:02-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P51
+
+ ntpq/ntpq-opts.c@1.28, 2006-09-25 07:49:03-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P51
+
+ ntpq/ntpq-opts.h@1.28, 2006-09-25 07:49:04-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P51
+
+ ntpq/ntpq-opts.texi@1.26, 2006-09-25 07:49:04-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P51
+
+ ntpq/ntpq.1@1.26, 2006-09-25 07:49:05-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P51
+
+ packageinfo.sh@1.43, 2006-09-25 07:49:06-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P51
+
+ sntp/sntp-opts.c@1.25, 2006-09-25 07:49:06-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P51
+
+ sntp/sntp-opts.h@1.25, 2006-09-25 07:49:07-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P51
+
+ sntp/sntp-opts.texi@1.25, 2006-09-25 07:49:07-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P51
+
+ sntp/sntp.1@1.28, 2006-09-25 07:49:08-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P51
+
+ util/ntp-keygen-opts.c@1.25, 2006-09-25 07:49:09-04:00, stenn@whimsy.udel.edu +4 -4
+ NTP_4_2_3P51
+
+ util/ntp-keygen-opts.h@1.25, 2006-09-25 07:49:09-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P51
+
+ util/ntp-keygen-opts.texi@1.25, 2006-09-25 07:49:10-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P51
+
+ util/ntp-keygen.1@1.25, 2006-09-25 07:49:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P51
+
+ChangeSet@1.1379.1.23, 2006-09-25 01:53:46-04:00, stenn@whimsy.udel.edu +93 -0
+ autogen upgrade
+
+ libopts/autoopts.c@1.8, 2006-09-25 01:50:05-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/autoopts.c@1.5, 2006-09-25 01:50:36-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/autoopts.h@1.8, 2006-09-25 01:50:05-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/autoopts.h@1.6, 2006-09-25 01:50:37-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/boolean.c@1.7, 2006-09-25 01:50:06-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/boolean.c@1.4, 2006-09-25 01:50:38-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/compat/compat.h@1.11, 2006-09-25 01:50:22-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/compat/compat.h@1.7, 2006-09-25 01:50:56-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/configfile.c@1.8, 2006-09-25 01:50:06-04:00, stenn@whimsy.udel.edu +34 -35
+ autogen upgrade
+
+ sntp/libopts/configfile.c@1.5, 2006-09-25 01:50:38-04:00, stenn@whimsy.udel.edu +34 -35
+ autogen upgrade
+
+ libopts/cook.c@1.7, 2006-09-25 01:50:07-04:00, stenn@whimsy.udel.edu +5 -6
+ autogen upgrade
+
+ sntp/libopts/cook.c@1.4, 2006-09-25 01:50:40-04:00, stenn@whimsy.udel.edu +5 -6
+ autogen upgrade
+
+ libopts/enumeration.c@1.7, 2006-09-25 01:50:08-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/enumeration.c@1.4, 2006-09-25 01:50:41-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/environment.c@1.7, 2006-09-25 01:50:08-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/environment.c@1.4, 2006-09-25 01:50:42-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/genshell.c@1.7, 2006-09-25 01:50:09-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ sntp/libopts/genshell.c@1.4, 2006-09-25 01:50:42-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ libopts/genshell.h@1.7, 2006-09-25 01:50:10-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ sntp/libopts/genshell.h@1.4, 2006-09-25 01:50:43-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ libopts/m4/libopts.m4@1.12, 2006-09-25 01:50:25-04:00, stenn@whimsy.udel.edu +4 -1
+ autogen upgrade
+
+ sntp/libopts/m4/libopts.m4@1.9, 2006-09-25 01:50:58-04:00, stenn@whimsy.udel.edu +4 -1
+ autogen upgrade
+
+ libopts/m4/liboptschk.m4@1.2, 2006-09-25 01:50:27-04:00, stenn@whimsy.udel.edu +4 -1
+ autogen upgrade
+
+ sntp/libopts/m4/liboptschk.m4@1.2, 2006-09-25 01:50:59-04:00, stenn@whimsy.udel.edu +4 -1
+ autogen upgrade
+
+ libopts/load.c@1.8, 2006-09-25 01:50:10-04:00, stenn@whimsy.udel.edu +10 -11
+ autogen upgrade
+
+ sntp/libopts/load.c@1.5, 2006-09-25 01:50:44-04:00, stenn@whimsy.udel.edu +10 -11
+ autogen upgrade
+
+ libopts/makeshell.c@1.9, 2006-09-25 01:50:11-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/makeshell.c@1.6, 2006-09-25 01:50:45-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/nested.c@1.7, 2006-09-25 01:50:12-04:00, stenn@whimsy.udel.edu +18 -19
+ autogen upgrade
+
+ sntp/libopts/nested.c@1.4, 2006-09-25 01:50:45-04:00, stenn@whimsy.udel.edu +18 -19
+ autogen upgrade
+
+ libopts/numeric.c@1.7, 2006-09-25 01:50:12-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/numeric.c@1.4, 2006-09-25 01:50:46-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/autoopts/options.h@1.8, 2006-09-25 01:50:20-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ sntp/libopts/autoopts/options.h@1.5, 2006-09-25 01:50:55-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ libopts/compat/pathfind.c@1.8, 2006-09-25 01:50:23-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ sntp/libopts/compat/pathfind.c@1.5, 2006-09-25 01:50:57-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ libopts/pgusage.c@1.8, 2006-09-25 01:50:13-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/pgusage.c@1.4, 2006-09-25 01:50:46-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/proto.h@1.9, 2006-09-25 01:50:13-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ sntp/libopts/proto.h@1.6, 2006-09-25 01:50:47-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ libopts/putshell.c@1.8, 2006-09-25 01:50:13-04:00, stenn@whimsy.udel.edu +3 -4
+ autogen upgrade
+
+ sntp/libopts/putshell.c@1.5, 2006-09-25 01:50:47-04:00, stenn@whimsy.udel.edu +3 -4
+ autogen upgrade
+
+ libopts/restore.c@1.7, 2006-09-25 01:50:14-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/restore.c@1.3, 2006-09-25 01:50:47-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/save.c@1.8, 2006-09-25 01:50:15-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/save.c@1.5, 2006-09-25 01:50:49-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/sort.c@1.7, 2006-09-25 01:50:15-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/sort.c@1.3, 2006-09-25 01:50:50-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/stack.c@1.8, 2006-09-25 01:50:16-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/stack.c@1.5, 2006-09-25 01:50:50-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/compat/strchr.c@1.3, 2006-09-25 01:50:24-04:00, stenn@whimsy.udel.edu +0 -1
+ autogen upgrade
+
+ sntp/libopts/compat/strchr.c@1.3, 2006-09-25 01:50:57-04:00, stenn@whimsy.udel.edu +0 -1
+ autogen upgrade
+
+ libopts/streqvcmp.c@1.8, 2006-09-25 01:50:17-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/streqvcmp.c@1.5, 2006-09-25 01:50:51-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/text_mmap.c@1.7, 2006-09-25 01:50:17-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/text_mmap.c@1.4, 2006-09-25 01:50:52-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/tokenize.c@1.5, 2006-09-25 01:50:18-04:00, stenn@whimsy.udel.edu +0 -1
+ autogen upgrade
+
+ sntp/libopts/tokenize.c@1.4, 2006-09-25 01:50:53-04:00, stenn@whimsy.udel.edu +0 -1
+ autogen upgrade
+
+ libopts/autoopts/usage-txt.h@1.7, 2006-09-25 01:50:22-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ sntp/libopts/autoopts/usage-txt.h@1.4, 2006-09-25 01:50:55-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ libopts/usage.c@1.8, 2006-09-25 01:50:19-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/usage.c@1.6, 2006-09-25 01:50:53-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/version.c@1.8, 2006-09-25 01:50:20-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ sntp/libopts/version.c@1.5, 2006-09-25 01:50:54-04:00, stenn@whimsy.udel.edu +1 -2
+ autogen upgrade
+
+ libopts/compat/windows-config.h@1.4, 2006-09-25 01:50:25-04:00, stenn@whimsy.udel.edu +6 -0
+ autogen upgrade
+
+ sntp/libopts/compat/windows-config.h@1.2, 2006-09-25 01:50:58-04:00, stenn@whimsy.udel.edu +16 -10
+ autogen upgrade
+
+ NEWS@1.64, 2006-09-25 01:53:32-04:00, stenn@whimsy.udel.edu +6 -5
+ updates
+
+ clockstuff/clktest-opts.c@1.5, 2006-09-25 01:50:03-04:00, stenn@whimsy.udel.edu +6 -3
+ autogen upgrade
+
+ clockstuff/clktest-opts.h@1.5, 2006-09-25 01:50:04-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ ntpd/ntpd-opts.c@1.25, 2006-09-25 01:50:27-04:00, stenn@whimsy.udel.edu +3 -2
+ autogen upgrade
+
+ ntpd/ntpd-opts.h@1.25, 2006-09-25 01:50:28-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ ntpd/ntpd-opts.texi@1.26, 2006-09-25 01:50:29-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ ntpd/ntpd.1@1.25, 2006-09-25 01:50:30-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ ntpd/ntpdsim-opts.c@1.25, 2006-09-25 01:50:31-04:00, stenn@whimsy.udel.edu +3 -2
+ autogen upgrade
+
+ ntpd/ntpdsim-opts.h@1.25, 2006-09-25 01:50:32-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ ntpd/ntpdsim-opts.texi@1.25, 2006-09-25 01:50:32-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ ntpd/ntpdsim.1@1.25, 2006-09-25 01:50:33-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ ntpdc/ntpdc-opts.c@1.25, 2006-09-25 01:50:34-04:00, stenn@whimsy.udel.edu +3 -2
+ autogen upgrade
+
+ ntpdc/ntpdc-opts.h@1.25, 2006-09-25 01:50:34-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ ntpdc/ntpdc-opts.texi@1.25, 2006-09-25 01:52:36-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ ntpdc/ntpdc.1@1.25, 2006-09-25 01:52:37-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ ntpq/ntpq-opts.c@1.27, 2006-09-25 01:50:35-04:00, stenn@whimsy.udel.edu +3 -2
+ autogen upgrade
+
+ ntpq/ntpq-opts.h@1.27, 2006-09-25 01:50:36-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ ntpq/ntpq-opts.texi@1.25, 2006-09-25 01:52:38-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ ntpq/ntpq.1@1.25, 2006-09-25 01:52:38-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ sntp/sntp-opts.c@1.24, 2006-09-25 01:52:39-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ sntp/sntp-opts.h@1.24, 2006-09-25 01:52:40-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ sntp/sntp-opts.texi@1.24, 2006-09-25 01:52:40-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ sntp/sntp.1@1.27, 2006-09-25 01:52:42-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ util/ntp-keygen-opts.c@1.24, 2006-09-25 01:50:59-04:00, stenn@whimsy.udel.edu +3 -2
+ autogen upgrade
+
+ util/ntp-keygen-opts.h@1.24, 2006-09-25 01:51:00-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ util/ntp-keygen-opts.texi@1.24, 2006-09-25 01:52:42-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ util/ntp-keygen.1@1.24, 2006-09-25 01:52:43-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ChangeSet@1.1379.1.22, 2006-09-24 05:30:52-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P50
+ TAG: NTP_4_2_3P50
+
+ ntpd/ntpd-opts.c@1.24, 2006-09-24 05:30:30-04:00, stenn@whimsy.udel.edu +56 -55
+ NTP_4_2_3P50
+
+ ntpd/ntpd-opts.h@1.24, 2006-09-24 05:30:31-04:00, stenn@whimsy.udel.edu +9 -9
+ NTP_4_2_3P50
+
+ ntpd/ntpd-opts.texi@1.25, 2006-09-24 05:30:32-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P50
+
+ ntpd/ntpd.1@1.24, 2006-09-24 05:30:33-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P50
+
+ ntpd/ntpdsim-opts.c@1.24, 2006-09-24 05:30:34-04:00, stenn@whimsy.udel.edu +74 -73
+ NTP_4_2_3P50
+
+ ntpd/ntpdsim-opts.h@1.24, 2006-09-24 05:30:35-04:00, stenn@whimsy.udel.edu +9 -9
+ NTP_4_2_3P50
+
+ ntpd/ntpdsim-opts.texi@1.24, 2006-09-24 05:30:35-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P50
+
+ ntpd/ntpdsim.1@1.24, 2006-09-24 05:30:36-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P50
+
+ ntpdc/ntpdc-opts.c@1.24, 2006-09-24 05:30:37-04:00, stenn@whimsy.udel.edu +22 -21
+ NTP_4_2_3P50
+
+ ntpdc/ntpdc-opts.h@1.24, 2006-09-24 05:30:38-04:00, stenn@whimsy.udel.edu +7 -7
+ NTP_4_2_3P50
+
+ ntpdc/ntpdc-opts.texi@1.24, 2006-09-24 05:30:38-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P50
+
+ ntpdc/ntpdc.1@1.24, 2006-09-24 05:30:39-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P50
+
+ ntpq/ntpq-opts.c@1.26, 2006-09-24 05:30:40-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P50
+
+ ntpq/ntpq-opts.h@1.26, 2006-09-24 05:30:40-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P50
+
+ ntpq/ntpq-opts.texi@1.24, 2006-09-24 05:30:41-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P50
+
+ ntpq/ntpq.1@1.24, 2006-09-24 05:30:42-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P50
+
+ packageinfo.sh@1.42, 2006-09-24 05:30:43-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P50
+
+ sntp/sntp-opts.c@1.23, 2006-09-24 05:30:43-04:00, stenn@whimsy.udel.edu +17 -16
+ NTP_4_2_3P50
+
+ sntp/sntp-opts.h@1.23, 2006-09-24 05:30:44-04:00, stenn@whimsy.udel.edu +7 -7
+ NTP_4_2_3P50
+
+ sntp/sntp-opts.texi@1.23, 2006-09-24 05:30:44-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P50
+
+ sntp/sntp.1@1.26, 2006-09-24 05:30:45-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P50
+
+ util/ntp-keygen-opts.c@1.23, 2006-09-24 05:30:46-04:00, stenn@whimsy.udel.edu +43 -43
+ NTP_4_2_3P50
+
+ util/ntp-keygen-opts.h@1.23, 2006-09-24 05:30:46-04:00, stenn@whimsy.udel.edu +10 -10
+ NTP_4_2_3P50
+
+ util/ntp-keygen-opts.texi@1.23, 2006-09-24 05:30:47-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P50
+
+ util/ntp-keygen.1@1.23, 2006-09-24 05:30:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P50
+
+ChangeSet@1.1379.1.21, 2006-09-24 03:03:52-04:00, stenn@whimsy.udel.edu +67 -0
+ autogen upgrade
+
+ libopts/autoopts.c@1.7, 2006-09-24 03:02:46-04:00, stenn@whimsy.udel.edu +7 -7
+ autogen upgrade
+
+ sntp/libopts/autoopts.c@1.4, 2006-09-24 03:03:08-04:00, stenn@whimsy.udel.edu +51 -7
+ autogen upgrade
+
+ libopts/autoopts.h@1.7, 2006-09-24 03:02:46-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ sntp/libopts/autoopts.h@1.5, 2006-09-24 03:03:09-04:00, stenn@whimsy.udel.edu +10 -9
+ autogen upgrade
+
+ libopts/boolean.c@1.6, 2006-09-24 03:02:47-04:00, stenn@whimsy.udel.edu +6 -6
+ autogen upgrade
+
+ sntp/libopts/boolean.c@1.3, 2006-09-24 03:03:10-04:00, stenn@whimsy.udel.edu +5 -5
+ autogen upgrade
+
+ libopts/compat/compat.h@1.10, 2006-09-24 03:03:03-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ sntp/libopts/compat/compat.h@1.6, 2006-09-24 03:03:25-04:00, stenn@whimsy.udel.edu +7 -7
+ autogen upgrade
+
+ libopts/configfile.c@1.7, 2006-09-24 03:02:48-04:00, stenn@whimsy.udel.edu +23 -23
+ autogen upgrade
+
+ sntp/libopts/configfile.c@1.4, 2006-09-24 03:03:10-04:00, stenn@whimsy.udel.edu +37 -35
+ autogen upgrade
+
+ libopts/cook.c@1.6, 2006-09-24 03:02:48-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ sntp/libopts/cook.c@1.3, 2006-09-24 03:03:11-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ libopts/enumeration.c@1.6, 2006-09-24 03:02:49-04:00, stenn@whimsy.udel.edu +23 -23
+ autogen upgrade
+
+ sntp/libopts/enumeration.c@1.3, 2006-09-24 03:03:12-04:00, stenn@whimsy.udel.edu +23 -23
+ autogen upgrade
+
+ libopts/environment.c@1.6, 2006-09-24 03:02:50-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ sntp/libopts/environment.c@1.3, 2006-09-24 03:03:12-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ libopts/genshell.c@1.6, 2006-09-24 03:02:51-04:00, stenn@whimsy.udel.edu +8 -8
+ autogen upgrade
+
+ sntp/libopts/genshell.c@1.3, 2006-09-24 03:03:13-04:00, stenn@whimsy.udel.edu +11 -10
+ autogen upgrade
+
+ libopts/genshell.h@1.6, 2006-09-24 03:02:51-04:00, stenn@whimsy.udel.edu +4 -4
+ autogen upgrade
+
+ sntp/libopts/genshell.h@1.3, 2006-09-24 03:03:14-04:00, stenn@whimsy.udel.edu +8 -8
+ autogen upgrade
+
+ libopts/m4/libopts.m4@1.11, 2006-09-24 03:03:06-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ sntp/libopts/m4/libopts.m4@1.8, 2006-09-24 03:03:27-04:00, stenn@whimsy.udel.edu +8 -3
+ autogen upgrade
+
+ libopts/load.c@1.7, 2006-09-24 03:02:52-04:00, stenn@whimsy.udel.edu +4 -4
+ autogen upgrade
+
+ sntp/libopts/load.c@1.4, 2006-09-24 03:03:15-04:00, stenn@whimsy.udel.edu +4 -4
+ autogen upgrade
+
+ libopts/makeshell.c@1.8, 2006-09-24 03:02:53-04:00, stenn@whimsy.udel.edu +13 -12
+ autogen upgrade
+
+ sntp/libopts/makeshell.c@1.5, 2006-09-24 03:03:15-04:00, stenn@whimsy.udel.edu +13 -12
+ autogen upgrade
+
+ libopts/nested.c@1.6, 2006-09-24 03:02:53-04:00, stenn@whimsy.udel.edu +38 -38
+ autogen upgrade
+
+ sntp/libopts/nested.c@1.3, 2006-09-24 03:03:16-04:00, stenn@whimsy.udel.edu +40 -40
+ autogen upgrade
+
+ libopts/numeric.c@1.6, 2006-09-24 03:02:54-04:00, stenn@whimsy.udel.edu +7 -7
+ autogen upgrade
+
+ sntp/libopts/numeric.c@1.3, 2006-09-24 03:03:17-04:00, stenn@whimsy.udel.edu +6 -6
+ autogen upgrade
+
+ libopts/autoopts/options.h@1.7, 2006-09-24 03:03:01-04:00, stenn@whimsy.udel.edu +51 -42
+ autogen upgrade
+
+ sntp/libopts/autoopts/options.h@1.4, 2006-09-24 03:03:23-04:00, stenn@whimsy.udel.edu +60 -51
+ autogen upgrade
+
+ libopts/compat/pathfind.c@1.7, 2006-09-24 03:03:04-04:00, stenn@whimsy.udel.edu +16 -16
+ autogen upgrade
+
+ sntp/libopts/compat/pathfind.c@1.4, 2006-09-24 03:03:25-04:00, stenn@whimsy.udel.edu +19 -19
+ autogen upgrade
+
+ libopts/pgusage.c@1.7, 2006-09-24 03:02:54-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ libopts/proto.h@1.8, 2006-09-24 03:02:54-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ sntp/libopts/proto.h@1.5, 2006-09-24 03:03:17-04:00, stenn@whimsy.udel.edu +14 -2
+ autogen upgrade
+
+ libopts/putshell.c@1.7, 2006-09-24 03:02:54-04:00, stenn@whimsy.udel.edu +12 -12
+ autogen upgrade
+
+ sntp/libopts/putshell.c@1.4, 2006-09-24 03:03:18-04:00, stenn@whimsy.udel.edu +11 -11
+ autogen upgrade
+
+ libopts/restore.c@1.6, 2006-09-24 03:02:55-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ libopts/save.c@1.7, 2006-09-24 03:02:56-04:00, stenn@whimsy.udel.edu +14 -12
+ autogen upgrade
+
+ sntp/libopts/save.c@1.4, 2006-09-24 03:03:18-04:00, stenn@whimsy.udel.edu +14 -12
+ autogen upgrade
+
+ libopts/compat/snprintf.c@1.4, 2006-09-24 03:03:05-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ sntp/libopts/compat/snprintf.c@1.3, 2006-09-24 03:03:26-04:00, stenn@whimsy.udel.edu +4 -4
+ autogen upgrade
+
+ libopts/sort.c@1.6, 2006-09-24 03:02:56-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ libopts/stack.c@1.7, 2006-09-24 03:02:57-04:00, stenn@whimsy.udel.edu +6 -6
+ autogen upgrade
+
+ sntp/libopts/stack.c@1.4, 2006-09-24 03:03:19-04:00, stenn@whimsy.udel.edu +5 -5
+ autogen upgrade
+
+ libopts/compat/strchr.c@1.2, 2006-09-24 03:03:05-04:00, stenn@whimsy.udel.edu +5 -5
+ autogen upgrade
+
+ sntp/libopts/compat/strchr.c@1.2, 2006-09-24 03:03:26-04:00, stenn@whimsy.udel.edu +5 -5
+ autogen upgrade
+
+ libopts/compat/strdup.c@1.3, 2006-09-24 03:03:06-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ sntp/libopts/compat/strdup.c@1.2, 2006-09-24 03:03:27-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ libopts/streqvcmp.c@1.7, 2006-09-24 03:02:58-04:00, stenn@whimsy.udel.edu +9 -9
+ autogen upgrade
+
+ sntp/libopts/streqvcmp.c@1.4, 2006-09-24 03:03:20-04:00, stenn@whimsy.udel.edu +9 -9
+ autogen upgrade
+
+ libopts/text_mmap.c@1.6, 2006-09-24 03:02:58-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ sntp/libopts/text_mmap.c@1.3, 2006-09-24 03:03:20-04:00, stenn@whimsy.udel.edu +12 -16
+ autogen upgrade
+
+ libopts/tokenize.c@1.4, 2006-09-24 03:02:59-04:00, stenn@whimsy.udel.edu +8 -8
+ autogen upgrade
+
+ sntp/libopts/tokenize.c@1.3, 2006-09-24 03:03:21-04:00, stenn@whimsy.udel.edu +16 -16
+ autogen upgrade
+
+ libopts/autoopts/usage-txt.h@1.6, 2006-09-24 03:03:02-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ sntp/libopts/autoopts/usage-txt.h@1.3, 2006-09-24 03:03:24-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ libopts/usage.c@1.7, 2006-09-24 03:03:00-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ sntp/libopts/usage.c@1.5, 2006-09-24 03:03:22-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ libopts/version.c@1.7, 2006-09-24 03:03:01-04:00, stenn@whimsy.udel.edu +9 -9
+ autogen upgrade
+
+ sntp/libopts/version.c@1.4, 2006-09-24 03:03:23-04:00, stenn@whimsy.udel.edu +9 -9
+ autogen upgrade
+
+ clockstuff/clktest-opts.c@1.4, 2006-09-24 03:02:44-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ clockstuff/clktest-opts.c@1.3, 2006-09-24 00:44:30-04:00, stenn@whimsy.udel.edu +39 -39
+ new autogen
+
+ clockstuff/clktest-opts.h@1.4, 2006-09-24 03:02:45-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ clockstuff/clktest-opts.h@1.3, 2006-09-24 00:44:31-04:00, stenn@whimsy.udel.edu +10 -10
+ new autogen
+
+ ntpq/ntpq-opts.c@1.25, 2006-09-24 03:03:07-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ ntpq/ntpq-opts.c@1.24, 2006-09-24 00:45:24-04:00, stenn@whimsy.udel.edu +17 -17
+ new autogen
+
+ ntpq/ntpq-opts.h@1.25, 2006-09-24 03:03:07-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ ntpq/ntpq-opts.h@1.24, 2006-09-24 00:45:25-04:00, stenn@whimsy.udel.edu +5 -5
+ new autogen
+
+ChangeSet@1.1379.1.20, 2006-09-23 17:23:36+00:00, kardel@pogo.udel.edu +5 -0
+ ntpd.h, ntpd.c, ntp_timer.c, ntp_io.c, cmd_args.c:
+ disable dynamic update when giving up the root privilege
+
+ include/ntpd.h@1.97, 2006-09-23 17:22:51+00:00, kardel@pogo.udel.edu +3 -0
+ disable dynamic update when giving up the root privilege
+
+ ntpd/cmd_args.c@1.45, 2006-09-23 17:23:01+00:00, kardel@pogo.udel.edu +0 -1
+ disable dynamic update when giving up the root privilege
+
+ ntpd/ntp_io.c@1.234.1.11, 2006-09-23 17:23:02+00:00, kardel@pogo.udel.edu +22 -5
+ disable dynamic update when giving up the root privilege
+
+ ntpd/ntp_timer.c@1.33, 2006-09-23 17:23:03+00:00, kardel@pogo.udel.edu +1 -1
+ disable dynamic update when giving up the root privilege
+
+ ntpd/ntpd.c@1.82, 2006-09-23 17:23:04+00:00, kardel@pogo.udel.edu +12 -0
+ disable dynamic update when giving up the root privilege
+
+ChangeSet@1.1379.7.2, 2006-09-22 20:27:38-04:00, stenn@whimsy.udel.edu +6 -0
+ [Bug 714] ntpq -p should conflict with -i, not -c.
+
+ NEWS@1.63, 2006-09-22 20:27:13-04:00, stenn@whimsy.udel.edu +1 -0
+ update
+
+ ntpq/ntpq-opts.c@1.23, 2006-09-22 20:26:32-04:00, stenn@whimsy.udel.edu +5 -4
+ [Bug 714] ntpq -p should conflict with -i, not -c.
+
+ ntpq/ntpq-opts.def@1.11, 2006-09-22 20:26:33-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 714] ntpq -p should conflict with -i, not -c.
+
+ ntpq/ntpq-opts.h@1.23, 2006-09-22 20:26:33-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 714] ntpq -p should conflict with -i, not -c.
+
+ ntpq/ntpq-opts.texi@1.23, 2006-09-22 20:26:34-04:00, stenn@whimsy.udel.edu +4 -4
+ [Bug 714] ntpq -p should conflict with -i, not -c.
+
+ ntpq/ntpq.1@1.23, 2006-09-22 20:26:35-04:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 714] ntpq -p should conflict with -i, not -c.
+
+ChangeSet@1.1379.7.1, 2006-09-22 19:38:01-04:00, stenn@whimsy.udel.edu +34 -0
+ Upgrade to libopts-27.4.3
+
+ libopts/Makefile.am@1.5, 2006-09-22 19:36:54-04:00, stenn@whimsy.udel.edu +10 -6
+ Upgrade to libopts-27.4.3
+
+ libopts/autoopts.c@1.6, 2006-09-22 19:36:57-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/autoopts.h@1.6, 2006-09-22 19:36:57-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/boolean.c@1.5, 2006-09-22 19:36:58-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/compat/compat.h@1.9, 2006-09-22 19:36:58-04:00, stenn@whimsy.udel.edu +5 -5
+ Upgrade to libopts-27.4.3
+
+ libopts/configfile.c@1.6, 2006-09-22 19:37:02-04:00, stenn@whimsy.udel.edu +12 -13
+ Upgrade to libopts-27.4.3
+
+ libopts/cook.c@1.5, 2006-09-22 19:37:03-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/enumeration.c@1.5, 2006-09-22 19:37:04-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/environment.c@1.5, 2006-09-22 19:37:04-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/genshell.c@1.5, 2006-09-22 19:37:05-04:00, stenn@whimsy.udel.edu +4 -3
+ Upgrade to libopts-27.4.3
+
+ libopts/genshell.h@1.5, 2006-09-22 19:37:06-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/m4/libopts.m4@1.10, 2006-09-22 19:37:07-04:00, stenn@whimsy.udel.edu +6 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/load.c@1.6, 2006-09-22 19:37:06-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/makeshell.c@1.7, 2006-09-22 19:37:07-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/nested.c@1.5, 2006-09-22 19:37:08-04:00, stenn@whimsy.udel.edu +3 -3
+ Upgrade to libopts-27.4.3
+
+ libopts/numeric.c@1.5, 2006-09-22 19:37:09-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/autoopts/options.h@1.6, 2006-09-22 19:36:55-04:00, stenn@whimsy.udel.edu +5 -5
+ Upgrade to libopts-27.4.3
+
+ libopts/compat/pathfind.c@1.6, 2006-09-22 19:37:00-04:00, stenn@whimsy.udel.edu +2 -2
+ Upgrade to libopts-27.4.3
+
+ libopts/pgusage.c@1.6, 2006-09-22 19:37:09-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/proto.h@1.7, 2006-09-22 19:37:10-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/putshell.c@1.6, 2006-09-22 19:37:10-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/restore.c@1.5, 2006-09-22 19:37:11-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/save.c@1.6, 2006-09-22 19:37:12-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/compat/snprintf.c@1.3, 2006-09-22 19:37:01-04:00, stenn@whimsy.udel.edu +2 -2
+ Upgrade to libopts-27.4.3
+
+ libopts/sort.c@1.5, 2006-09-22 19:37:12-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/stack.c@1.6, 2006-09-22 19:37:13-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/compat/strdup.c@1.2, 2006-09-22 19:37:01-04:00, stenn@whimsy.udel.edu +2 -2
+ Upgrade to libopts-27.4.3
+
+ libopts/streqvcmp.c@1.6, 2006-09-22 19:37:14-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/text_mmap.c@1.5, 2006-09-22 19:37:14-04:00, stenn@whimsy.udel.edu +3 -2
+ Upgrade to libopts-27.4.3
+
+ libopts/tokenize.c@1.3, 2006-09-22 19:37:15-04:00, stenn@whimsy.udel.edu +14 -14
+ Upgrade to libopts-27.4.3
+
+ libopts/autoopts/usage-txt.h@1.5, 2006-09-22 19:36:55-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/usage.c@1.6, 2006-09-22 19:37:16-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/version.c@1.6, 2006-09-22 19:37:17-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.3
+
+ libopts/compat/windows-config.h@1.3, 2006-09-22 19:37:01-04:00, stenn@whimsy.udel.edu +6 -6
+ Upgrade to libopts-27.4.3
+
+ChangeSet@1.1379.1.18, 2006-09-22 22:58:27+00:00, kardel@pogo.udel.edu +2 -0
+ ntp_io.c:
+ add autoconfig enabled code to temporarily
+ set SO_REUSEADDR on wildcard sockets when
+ binding interface addresses. So OSes need
+ this
+ configure.ac:
+ add configtest for REUSEADDR enable on wildcard sockets
+ to allow binding to interface addresses
+
+ configure.ac@1.388.1.10, 2006-09-22 22:39:30+00:00, kardel@pogo.udel.edu +13 -0
+ add configtest for REUSEADDR enable on wildcard sockets
+ to allow binding to interface addresses
+
+ ntpd/ntp_io.c@1.234.1.10, 2006-09-22 22:45:16+00:00, kardel@pogo.udel.edu +96 -48
+ add autoconfig enabled code to temporarily
+ set SO_REUSEADDR on wildcard sockets when
+ binding interface addresses. So OSes need
+ this
+
+ChangeSet@1.1379.1.17, 2006-09-22 17:12:19-04:00, stenn@whimsy.udel.edu +1 -0
+ Dave fixed a bug in the pll/kernel control code, from a report by Joe Harvell
+
+ ntpd/ntp_loopfilter.c@1.126, 2006-09-22 17:12:08-04:00, stenn@whimsy.udel.edu +2 -1
+ Dave fixed a bug in the pll/kernel control code, from a report by Joe Harvell
+
+ChangeSet@1.1379.1.16, 2006-09-21 07:42:50-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P49
+ TAG: NTP_4_2_3P49
+
+ ntpd/ntpd-opts.c@1.23, 2006-09-21 07:42:29-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ ntpd/ntpd-opts.h@1.23, 2006-09-21 07:42:30-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P49
+
+ ntpd/ntpd-opts.texi@1.24, 2006-09-21 07:42:30-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P49
+
+ ntpd/ntpd.1@1.23, 2006-09-21 07:42:31-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ ntpd/ntpdsim-opts.c@1.23, 2006-09-21 07:42:32-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ ntpd/ntpdsim-opts.h@1.23, 2006-09-21 07:42:33-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P49
+
+ ntpd/ntpdsim-opts.texi@1.23, 2006-09-21 07:42:33-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P49
+
+ ntpd/ntpdsim.1@1.23, 2006-09-21 07:42:34-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ ntpdc/ntpdc-opts.c@1.23, 2006-09-21 07:42:35-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ ntpdc/ntpdc-opts.h@1.23, 2006-09-21 07:42:36-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P49
+
+ ntpdc/ntpdc-opts.texi@1.23, 2006-09-21 07:42:36-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P49
+
+ ntpdc/ntpdc.1@1.23, 2006-09-21 07:42:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ ntpq/ntpq-opts.c@1.22, 2006-09-21 07:42:38-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ ntpq/ntpq-opts.h@1.22, 2006-09-21 07:42:38-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P49
+
+ ntpq/ntpq-opts.texi@1.22, 2006-09-21 07:42:39-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P49
+
+ ntpq/ntpq.1@1.22, 2006-09-21 07:42:40-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ packageinfo.sh@1.41, 2006-09-21 07:42:41-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P49
+
+ sntp/sntp-opts.c@1.22, 2006-09-21 07:42:42-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ sntp/sntp-opts.h@1.22, 2006-09-21 07:42:42-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P49
+
+ sntp/sntp-opts.texi@1.22, 2006-09-21 07:42:43-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P49
+
+ sntp/sntp.1@1.25, 2006-09-21 07:42:44-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ util/ntp-keygen-opts.c@1.22, 2006-09-21 07:42:44-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ util/ntp-keygen-opts.h@1.22, 2006-09-21 07:42:45-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P49
+
+ util/ntp-keygen-opts.texi@1.22, 2006-09-21 07:42:46-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P49
+
+ util/ntp-keygen.1@1.22, 2006-09-21 07:42:47-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P49
+
+ChangeSet@1.1379.1.15, 2006-09-20 19:41:43-04:00, stenn@whimsy.udel.edu +2 -0
+ refclock_wwv.c improvements from Dave Mills
+
+ NEWS@1.62, 2006-09-20 19:41:03-04:00, stenn@whimsy.udel.edu +1 -0
+ refclock_wwv.c improvements from Dave Mills
+
+ ntpd/refclock_wwv.c@1.64, 2006-09-20 19:41:04-04:00, stenn@whimsy.udel.edu +50 -40
+ refclock_wwv.c improvements from Dave Mills
+
+ChangeSet@1.1379.1.14, 2006-09-20 19:31:10-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 689] Deprecate HEATH GC-1001 II; the driver never worked.
+
+ NEWS@1.61, 2006-09-20 19:30:58-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 689] Deprecate HEATH GC-1001 II; the driver never worked.
+
+ ntpd/refclock_heath.c@1.13, 2006-09-20 19:29:32-04:00, stenn@whimsy.udel.edu +39 -10
+ [Bug 689] Deprecate HEATH GC-1001 II; the driver never worked.
+
+ChangeSet@1.1379.1.13, 2006-09-19 07:43:25-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P48
+ TAG: NTP_4_2_3P48
+
+ ntpd/ntpd-opts.c@1.22, 2006-09-19 07:43:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ ntpd/ntpd-opts.h@1.22, 2006-09-19 07:43:04-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P48
+
+ ntpd/ntpd-opts.texi@1.23, 2006-09-19 07:43:04-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P48
+
+ ntpd/ntpd.1@1.22, 2006-09-19 07:43:05-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ ntpd/ntpdsim-opts.c@1.22, 2006-09-19 07:43:07-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ ntpd/ntpdsim-opts.h@1.22, 2006-09-19 07:43:08-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P48
+
+ ntpd/ntpdsim-opts.texi@1.22, 2006-09-19 07:43:08-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P48
+
+ ntpd/ntpdsim.1@1.22, 2006-09-19 07:43:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ ntpdc/ntpdc-opts.c@1.22, 2006-09-19 07:43:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ ntpdc/ntpdc-opts.h@1.22, 2006-09-19 07:43:10-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P48
+
+ ntpdc/ntpdc-opts.texi@1.22, 2006-09-19 07:43:11-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P48
+
+ ntpdc/ntpdc.1@1.22, 2006-09-19 07:43:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ ntpq/ntpq-opts.c@1.21, 2006-09-19 07:43:12-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ ntpq/ntpq-opts.h@1.21, 2006-09-19 07:43:12-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P48
+
+ ntpq/ntpq-opts.texi@1.21, 2006-09-19 07:43:13-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P48
+
+ ntpq/ntpq.1@1.21, 2006-09-19 07:43:14-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ packageinfo.sh@1.40, 2006-09-19 07:43:15-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P48
+
+ sntp/sntp-opts.c@1.21, 2006-09-19 07:43:15-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ sntp/sntp-opts.h@1.21, 2006-09-19 07:43:16-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P48
+
+ sntp/sntp-opts.texi@1.21, 2006-09-19 07:43:17-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P48
+
+ sntp/sntp.1@1.24, 2006-09-19 07:43:18-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ util/ntp-keygen-opts.c@1.21, 2006-09-19 07:43:19-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ util/ntp-keygen-opts.h@1.21, 2006-09-19 07:43:19-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P48
+
+ util/ntp-keygen-opts.texi@1.21, 2006-09-19 07:43:20-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P48
+
+ util/ntp-keygen.1@1.21, 2006-09-19 07:43:21-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P48
+
+ChangeSet@1.1251.94.59, 2006-09-18 23:55:40-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P4_RC4
+ TAG: NTP_4_2_2P4_RC4
+
+ packageinfo.sh@1.27.19.2, 2006-09-18 23:55:36-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P4_RC4
+
+ChangeSet@1.1251.94.58, 2006-09-18 18:06:02-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 710] Backport Danny's latest patch
+
+ libntp/ntp_rfc2553.c@1.27.1.6, 2006-09-18 18:05:48-04:00, stenn@whimsy.udel.edu +10 -3
+ [Bug 710] Backport Danny's latest patch
+
+ChangeSet@1.1379.1.11, 2006-09-18 16:23:45-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #710 Fix new off-by-one error
+
+ libntp/ntp_rfc2553.c@1.35, 2006-09-18 16:23:26-04:00, mayer@pogo.udel.edu +1 -1
+ Bug #710 Fix new off-by-one error
+
+ChangeSet@1.1379.1.10, 2006-09-18 16:17:26-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #655 Added refid for broadcast mode
+
+ ntpd/ntp_io.c@1.234.1.9, 2006-09-18 16:17:03-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #655 Added refid for broadcast mode
+
+ChangeSet@1.1379.1.9, 2006-09-18 08:46:18-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #710 fix the length being copied in getnameinfo
+
+ libntp/ntp_rfc2553.c@1.34, 2006-09-18 08:46:00-04:00, mayer@pogo.udel.edu +10 -3
+ Bug #710 fix the length being copied in getnameinfo
+
+ChangeSet@1.1379.2.35, 2006-09-16 18:54:38-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P47
+ TAG: NTP_4_2_3P47
+
+ ntpd/ntpd-opts.c@1.21, 2006-09-16 18:54:17-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ ntpd/ntpd-opts.h@1.21, 2006-09-16 18:54:18-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P47
+
+ ntpd/ntpd-opts.texi@1.22, 2006-09-16 18:54:18-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P47
+
+ ntpd/ntpd.1@1.21, 2006-09-16 18:54:19-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ ntpd/ntpdsim-opts.c@1.21, 2006-09-16 18:54:20-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ ntpd/ntpdsim-opts.h@1.21, 2006-09-16 18:54:20-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P47
+
+ ntpd/ntpdsim-opts.texi@1.21, 2006-09-16 18:54:21-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P47
+
+ ntpd/ntpdsim.1@1.21, 2006-09-16 18:54:22-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ ntpdc/ntpdc-opts.c@1.21, 2006-09-16 18:54:23-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ ntpdc/ntpdc-opts.h@1.21, 2006-09-16 18:54:23-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P47
+
+ ntpdc/ntpdc-opts.texi@1.21, 2006-09-16 18:54:24-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P47
+
+ ntpdc/ntpdc.1@1.21, 2006-09-16 18:54:25-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ ntpq/ntpq-opts.c@1.20, 2006-09-16 18:54:26-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ ntpq/ntpq-opts.h@1.20, 2006-09-16 18:54:27-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P47
+
+ ntpq/ntpq-opts.texi@1.20, 2006-09-16 18:54:28-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P47
+
+ ntpq/ntpq.1@1.20, 2006-09-16 18:54:29-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ packageinfo.sh@1.39, 2006-09-16 18:54:29-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P47
+
+ sntp/sntp-opts.c@1.20, 2006-09-16 18:54:29-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ sntp/sntp-opts.h@1.20, 2006-09-16 18:54:30-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P47
+
+ sntp/sntp-opts.texi@1.20, 2006-09-16 18:54:31-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P47
+
+ sntp/sntp.1@1.23, 2006-09-16 18:54:32-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ util/ntp-keygen-opts.c@1.20, 2006-09-16 18:54:33-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ util/ntp-keygen-opts.h@1.20, 2006-09-16 18:54:33-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P47
+
+ util/ntp-keygen-opts.texi@1.20, 2006-09-16 18:54:34-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P47
+
+ util/ntp-keygen.1@1.20, 2006-09-16 18:54:35-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P47
+
+ChangeSet@1.1251.94.57, 2006-09-16 17:32:32-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P4_RC3
+ TAG: NTP_4_2_2P4_RC3
+
+ packageinfo.sh@1.27.19.1, 2006-09-16 17:32:29-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P4_RC3
+
+ChangeSet@1.1251.94.56, 2006-09-16 16:52:07-04:00, stenn@whimsy.udel.edu +1 -0
+ updated NEWS
+
+ NEWS@1.50.1.6, 2006-09-16 16:51:51-04:00, stenn@whimsy.udel.edu +4 -0
+ updated
+
+ChangeSet@1.1251.94.55, 2006-09-16 15:00:36-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 710] compat getnameinfo() has off-by-one error
+
+ libntp/ntp_rfc2553.c@1.27.1.5, 2006-09-16 15:00:26-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 710] compat getnameinfo() has off-by-one error
+
+ChangeSet@1.1379.2.33, 2006-09-13 07:43:13-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P46
+ TAG: NTP_4_2_3P46
+
+ ntpd/ntpd-opts.c@1.20, 2006-09-13 07:42:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ ntpd/ntpd-opts.h@1.20, 2006-09-13 07:42:51-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P46
+
+ ntpd/ntpd-opts.texi@1.21, 2006-09-13 07:42:53-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P46
+
+ ntpd/ntpd.1@1.20, 2006-09-13 07:42:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ ntpd/ntpdsim-opts.c@1.20, 2006-09-13 07:42:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ ntpd/ntpdsim-opts.h@1.20, 2006-09-13 07:42:55-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P46
+
+ ntpd/ntpdsim-opts.texi@1.20, 2006-09-13 07:42:56-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P46
+
+ ntpd/ntpdsim.1@1.20, 2006-09-13 07:42:57-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ ntpdc/ntpdc-opts.c@1.20, 2006-09-13 07:42:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ ntpdc/ntpdc-opts.h@1.20, 2006-09-13 07:42:59-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P46
+
+ ntpdc/ntpdc-opts.texi@1.20, 2006-09-13 07:42:59-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P46
+
+ ntpdc/ntpdc.1@1.20, 2006-09-13 07:43:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ ntpq/ntpq-opts.c@1.19, 2006-09-13 07:43:01-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ ntpq/ntpq-opts.h@1.19, 2006-09-13 07:43:02-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P46
+
+ ntpq/ntpq-opts.texi@1.19, 2006-09-13 07:43:02-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P46
+
+ ntpq/ntpq.1@1.19, 2006-09-13 07:43:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ packageinfo.sh@1.38, 2006-09-13 07:43:04-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P46
+
+ sntp/sntp-opts.c@1.19, 2006-09-13 07:43:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ sntp/sntp-opts.h@1.19, 2006-09-13 07:43:05-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P46
+
+ sntp/sntp-opts.texi@1.19, 2006-09-13 07:43:06-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P46
+
+ sntp/sntp.1@1.22, 2006-09-13 07:43:07-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ util/ntp-keygen-opts.c@1.19, 2006-09-13 07:43:07-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ util/ntp-keygen-opts.h@1.19, 2006-09-13 07:43:08-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P46
+
+ util/ntp-keygen-opts.texi@1.19, 2006-09-13 07:43:09-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P46
+
+ util/ntp-keygen.1@1.19, 2006-09-13 07:43:10-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P46
+
+ChangeSet@1.1379.2.32, 2006-09-13 04:49:48-04:00, stenn@whimsy.udel.edu +2 -0
+ WWV documentation fixes from Dave Mills.
+
+ html/drivers/driver36.html@1.28, 2006-09-13 04:49:38-04:00, stenn@whimsy.udel.edu +53 -100
+ WWV documentation fixes from Dave Mills.
+
+ html/drivers/driver44.html@1.13, 2006-09-13 04:46:46-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-rw-r--
+
+ChangeSet@1.1379.2.31, 2006-09-13 04:44:52-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 704] Fix documentation typo
+
+ html/authopt.html@1.41, 2006-09-13 04:44:37-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 704] Fix documentation typo
+
+ChangeSet@1.1379.2.30, 2006-09-12 21:35:52-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 706] Only 1 instance of ntpd should be running
+
+ ntpd/ntp_io.c@1.234.1.8, 2006-09-12 21:35:04-04:00, stenn@whimsy.udel.edu +17 -5
+ [Bug 706] Only 1 instance of ntpd should be running
+
+ChangeSet@1.1379.2.29, 2006-09-12 07:42:34-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P45
+ TAG: NTP_4_2_3P45
+
+ ntpd/ntpd-opts.c@1.19, 2006-09-12 07:42:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ ntpd/ntpd-opts.h@1.19, 2006-09-12 07:42:09-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P45
+
+ ntpd/ntpd-opts.texi@1.20, 2006-09-12 07:42:10-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P45
+
+ ntpd/ntpd.1@1.19, 2006-09-12 07:42:12-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ ntpd/ntpdsim-opts.c@1.19, 2006-09-12 07:42:13-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ ntpd/ntpdsim-opts.h@1.19, 2006-09-12 07:42:14-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P45
+
+ ntpd/ntpdsim-opts.texi@1.19, 2006-09-12 07:42:14-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P45
+
+ ntpd/ntpdsim.1@1.19, 2006-09-12 07:42:15-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ ntpdc/ntpdc-opts.c@1.19, 2006-09-12 07:42:16-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ ntpdc/ntpdc-opts.h@1.19, 2006-09-12 07:42:16-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P45
+
+ ntpdc/ntpdc-opts.texi@1.19, 2006-09-12 07:42:17-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P45
+
+ ntpdc/ntpdc.1@1.19, 2006-09-12 07:42:18-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ ntpq/ntpq-opts.c@1.18, 2006-09-12 07:42:19-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ ntpq/ntpq-opts.h@1.18, 2006-09-12 07:42:20-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P45
+
+ ntpq/ntpq-opts.texi@1.18, 2006-09-12 07:42:20-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P45
+
+ ntpq/ntpq.1@1.18, 2006-09-12 07:42:21-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ packageinfo.sh@1.37, 2006-09-12 07:42:21-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P45
+
+ sntp/sntp-opts.c@1.18, 2006-09-12 07:42:22-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ sntp/sntp-opts.h@1.18, 2006-09-12 07:42:23-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P45
+
+ sntp/sntp-opts.texi@1.18, 2006-09-12 07:42:23-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P45
+
+ sntp/sntp.1@1.21, 2006-09-12 07:42:24-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ util/ntp-keygen-opts.c@1.18, 2006-09-12 07:42:25-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ util/ntp-keygen-opts.h@1.18, 2006-09-12 07:42:25-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P45
+
+ util/ntp-keygen-opts.texi@1.18, 2006-09-12 07:42:26-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P45
+
+ util/ntp-keygen.1@1.18, 2006-09-12 07:42:27-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P45
+
+ChangeSet@1.1379.6.1, 2006-09-12 08:25:26+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_peer.c:
+ CID 7: avoid calling broadcast/multicast setup with NULL interface
+
+ ntpd/ntp_peer.c@1.97, 2006-09-12 08:24:24+00:00, kardel@pogo.udel.edu +13 -11
+ CID 7: avoid calling broadcast/multicast setup with NULL interface
+
+ChangeSet@1.1379.2.27, 2006-09-12 04:03:30-04:00, stenn@whimsy.udel.edu +1 -0
+ WWV refclock fixes from Dave Mills
+
+ ntpd/refclock_wwv.c@1.63, 2006-09-12 04:03:17-04:00, stenn@whimsy.udel.edu +7 -4
+ WWV refclock fixes from Dave Mills
+
+ChangeSet@1.1379.2.26, 2006-09-12 06:35:18+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ unify output of "Listening in interface..." message
+ add listing of wildcard interface bindings
+
+ ntpd/ntp_io.c@1.234.1.7, 2006-09-12 06:34:04+00:00, kardel@pogo.udel.edu +25 -13
+ unify output of "Listening in interface..." message
+ add listing of wildcard interface bindings
+
+ChangeSet@1.1379.2.25, 2006-09-11 07:47:06-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P44
+ TAG: NTP_4_2_3P44
+
+ ntpd/ntpd-opts.c@1.18, 2006-09-11 07:46:45-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ ntpd/ntpd-opts.h@1.18, 2006-09-11 07:46:45-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P44
+
+ ntpd/ntpd-opts.texi@1.19, 2006-09-11 07:46:46-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P44
+
+ ntpd/ntpd.1@1.18, 2006-09-11 07:46:47-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ ntpd/ntpdsim-opts.c@1.18, 2006-09-11 07:46:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ ntpd/ntpdsim-opts.h@1.18, 2006-09-11 07:46:49-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P44
+
+ ntpd/ntpdsim-opts.texi@1.18, 2006-09-11 07:46:49-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P44
+
+ ntpd/ntpdsim.1@1.18, 2006-09-11 07:46:50-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ ntpdc/ntpdc-opts.c@1.18, 2006-09-11 07:46:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ ntpdc/ntpdc-opts.h@1.18, 2006-09-11 07:46:51-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P44
+
+ ntpdc/ntpdc-opts.texi@1.18, 2006-09-11 07:46:52-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P44
+
+ ntpdc/ntpdc.1@1.18, 2006-09-11 07:46:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ ntpq/ntpq-opts.c@1.17, 2006-09-11 07:46:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ ntpq/ntpq-opts.h@1.17, 2006-09-11 07:46:55-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P44
+
+ ntpq/ntpq-opts.texi@1.17, 2006-09-11 07:46:56-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P44
+
+ ntpq/ntpq.1@1.17, 2006-09-11 07:46:56-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ packageinfo.sh@1.36, 2006-09-11 07:46:57-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P44
+
+ sntp/sntp-opts.c@1.17, 2006-09-11 07:46:57-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ sntp/sntp-opts.h@1.17, 2006-09-11 07:46:58-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P44
+
+ sntp/sntp-opts.texi@1.17, 2006-09-11 07:46:59-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P44
+
+ sntp/sntp.1@1.20, 2006-09-11 07:46:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ util/ntp-keygen-opts.c@1.17, 2006-09-11 07:47:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ util/ntp-keygen-opts.h@1.17, 2006-09-11 07:47:01-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P44
+
+ util/ntp-keygen-opts.texi@1.17, 2006-09-11 07:47:02-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P44
+
+ util/ntp-keygen.1@1.17, 2006-09-11 07:47:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P44
+
+ChangeSet@1.1379.2.24, 2006-09-10 20:47:32-04:00, stenn@whimsy.udel.edu +29 -0
+ libopts-27.4.3 updates
+
+ libopts/autoopts.c@1.5, 2006-09-10 20:46:57-04:00, stenn@whimsy.udel.edu +46 -2
+ libopts-27.4.3 updates
+
+ libopts/autoopts.h@1.5, 2006-09-10 20:46:57-04:00, stenn@whimsy.udel.edu +8 -7
+ libopts-27.4.3 updates
+
+ libopts/boolean.c@1.4, 2006-09-10 20:46:58-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/compat/compat.h@1.8, 2006-09-10 20:47:16-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/configfile.c@1.5, 2006-09-10 20:46:59-04:00, stenn@whimsy.udel.edu +5 -2
+ libopts-27.4.3 updates
+
+ libopts/cook.c@1.4, 2006-09-10 20:47:00-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/enumeration.c@1.4, 2006-09-10 20:47:00-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/environment.c@1.4, 2006-09-10 20:47:02-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/genshell.c@1.4, 2006-09-10 20:47:03-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/genshell.h@1.4, 2006-09-10 20:47:03-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/m4/libopts.m4@1.9, 2006-09-10 20:47:17-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/load.c@1.5, 2006-09-10 20:47:03-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/makeshell.c@1.6, 2006-09-10 20:47:05-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/nested.c@1.4, 2006-09-10 20:47:06-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/numeric.c@1.4, 2006-09-10 20:47:06-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/autoopts/options.h@1.5, 2006-09-10 20:47:14-04:00, stenn@whimsy.udel.edu +3 -3
+ libopts-27.4.3 updates
+
+ libopts/compat/pathfind.c@1.5, 2006-09-10 20:47:17-04:00, stenn@whimsy.udel.edu +2 -2
+ libopts-27.4.3 updates
+
+ libopts/pgusage.c@1.5, 2006-09-10 20:47:06-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/proto.h@1.6, 2006-09-10 20:47:07-04:00, stenn@whimsy.udel.edu +13 -1
+ libopts-27.4.3 updates
+
+ libopts/putshell.c@1.5, 2006-09-10 20:47:07-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/restore.c@1.4, 2006-09-10 20:47:08-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/save.c@1.5, 2006-09-10 20:47:09-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/sort.c@1.4, 2006-09-10 20:47:09-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/stack.c@1.5, 2006-09-10 20:47:10-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/streqvcmp.c@1.5, 2006-09-10 20:47:11-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/text_mmap.c@1.4, 2006-09-10 20:47:12-04:00, stenn@whimsy.udel.edu +3 -8
+ libopts-27.4.3 updates
+
+ libopts/autoopts/usage-txt.h@1.4, 2006-09-10 20:47:15-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/usage.c@1.5, 2006-09-10 20:47:13-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ libopts/version.c@1.5, 2006-09-10 20:47:14-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3 updates
+
+ChangeSet@1.1379.2.23, 2006-09-10 18:03:04-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P43
+ TAG: NTP_4_2_3P43
+
+ ntpd/ntpd-opts.c@1.17, 2006-09-10 18:02:42-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ ntpd/ntpd-opts.h@1.17, 2006-09-10 18:02:43-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P43
+
+ ntpd/ntpd-opts.texi@1.18, 2006-09-10 18:02:44-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P43
+
+ ntpd/ntpd.1@1.17, 2006-09-10 18:02:45-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ ntpd/ntpdsim-opts.c@1.17, 2006-09-10 18:02:45-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ ntpd/ntpdsim-opts.h@1.17, 2006-09-10 18:02:46-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P43
+
+ ntpd/ntpdsim-opts.texi@1.17, 2006-09-10 18:02:47-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P43
+
+ ntpd/ntpdsim.1@1.17, 2006-09-10 18:02:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ ntpdc/ntpdc-opts.c@1.17, 2006-09-10 18:02:49-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ ntpdc/ntpdc-opts.h@1.17, 2006-09-10 18:02:49-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P43
+
+ ntpdc/ntpdc-opts.texi@1.17, 2006-09-10 18:02:49-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P43
+
+ ntpdc/ntpdc.1@1.17, 2006-09-10 18:02:50-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ ntpq/ntpq-opts.c@1.16, 2006-09-10 18:02:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ ntpq/ntpq-opts.h@1.16, 2006-09-10 18:02:52-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P43
+
+ ntpq/ntpq-opts.texi@1.16, 2006-09-10 18:02:53-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P43
+
+ ntpq/ntpq.1@1.16, 2006-09-10 18:02:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ packageinfo.sh@1.35, 2006-09-10 18:02:55-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P43
+
+ sntp/sntp-opts.c@1.16, 2006-09-10 18:02:55-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ sntp/sntp-opts.h@1.16, 2006-09-10 18:02:56-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P43
+
+ sntp/sntp-opts.texi@1.16, 2006-09-10 18:02:57-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P43
+
+ sntp/sntp.1@1.19, 2006-09-10 18:02:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ util/ntp-keygen-opts.c@1.16, 2006-09-10 18:02:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ util/ntp-keygen-opts.h@1.16, 2006-09-10 18:02:59-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P43
+
+ util/ntp-keygen-opts.texi@1.16, 2006-09-10 18:03:00-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P43
+
+ util/ntp-keygen.1@1.16, 2006-09-10 18:03:01-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P43
+
+ChangeSet@1.1379.2.22, 2006-09-10 15:58:36-04:00, stenn@whimsy.udel.edu +1 -0
+ [CID 3] Not a typo. Rename variables so Harlan can read the code easier
+
+ libntp/recvbuff.c@1.24, 2006-09-10 15:58:11-04:00, stenn@whimsy.udel.edu +5 -4
+ [CID 3] Not a typo. Rename variables so Harlan can read the code easier
+
+ChangeSet@1.1379.2.21, 2006-09-10 07:48:06-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P42
+ TAG: NTP_4_2_3P42
+
+ ntpd/ntpd-opts.c@1.16, 2006-09-10 07:47:46-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ ntpd/ntpd-opts.h@1.16, 2006-09-10 07:47:46-04:00, stenn@whimsy.udel.edu +142 -171
+ NTP_4_2_3P42
+
+ ntpd/ntpd-opts.texi@1.17, 2006-09-10 07:47:47-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P42
+
+ ntpd/ntpd.1@1.16, 2006-09-10 07:47:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ ntpd/ntpdsim-opts.c@1.16, 2006-09-10 07:47:49-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ ntpd/ntpdsim-opts.h@1.16, 2006-09-10 07:47:50-04:00, stenn@whimsy.udel.edu +178 -216
+ NTP_4_2_3P42
+
+ ntpd/ntpdsim-opts.texi@1.16, 2006-09-10 07:47:50-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P42
+
+ ntpd/ntpdsim.1@1.16, 2006-09-10 07:47:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ ntpdc/ntpdc-opts.c@1.16, 2006-09-10 07:47:52-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ ntpdc/ntpdc-opts.h@1.16, 2006-09-10 07:47:52-04:00, stenn@whimsy.udel.edu +65 -75
+ NTP_4_2_3P42
+
+ ntpdc/ntpdc-opts.texi@1.16, 2006-09-10 07:47:53-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P42
+
+ ntpdc/ntpdc.1@1.16, 2006-09-10 07:47:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ ntpq/ntpq-opts.c@1.15, 2006-09-10 07:47:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ ntpq/ntpq-opts.h@1.15, 2006-09-10 07:47:55-04:00, stenn@whimsy.udel.edu +55 -63
+ NTP_4_2_3P42
+
+ ntpq/ntpq-opts.texi@1.15, 2006-09-10 07:47:55-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P42
+
+ ntpq/ntpq.1@1.15, 2006-09-10 07:47:56-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ packageinfo.sh@1.34, 2006-09-10 07:47:57-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P42
+
+ sntp/sntp-opts.c@1.15, 2006-09-10 07:47:57-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ sntp/sntp-opts.h@1.15, 2006-09-10 07:47:58-04:00, stenn@whimsy.udel.edu +50 -57
+ NTP_4_2_3P42
+
+ sntp/sntp-opts.texi@1.15, 2006-09-10 07:47:59-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P42
+
+ sntp/sntp.1@1.18, 2006-09-10 07:47:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ util/ntp-keygen-opts.c@1.15, 2006-09-10 07:48:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ util/ntp-keygen-opts.h@1.15, 2006-09-10 07:48:01-04:00, stenn@whimsy.udel.edu +102 -121
+ NTP_4_2_3P42
+
+ util/ntp-keygen-opts.texi@1.15, 2006-09-10 07:48:01-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P42
+
+ util/ntp-keygen.1@1.15, 2006-09-10 07:48:02-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P42
+
+ChangeSet@1.1379.2.20, 2006-09-09 20:11:07-04:00, stenn@whimsy.udel.edu +1 -0
+ Fix a typo.
+
+ libntp/recvbuff.c@1.23, 2006-09-09 20:10:52-04:00, stenn@whimsy.udel.edu +1 -1
+ Fix a typo.
+
+ChangeSet@1.1379.2.19, 2006-09-09 18:29:08-04:00, stenn@whimsy.udel.edu +2 -0
+ autogen upgrade
+
+ clockstuff/clktest-opts.c@1.2, 2006-09-09 18:28:55-04:00, stenn@whimsy.udel.edu +53 -36
+ autogen upgrade
+
+ clockstuff/clktest-opts.h@1.2, 2006-09-09 18:28:55-04:00, stenn@whimsy.udel.edu +72 -14
+ autogen upgrade
+
+ChangeSet@1.1379.2.18, 2006-09-09 18:21:20-04:00, stenn@whimsy.udel.edu +30 -0
+ libopts-27.4.3
+
+ libopts/COPYING.lgpl@1.2, 2006-09-09 18:20:42-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/Makefile.am@1.4, 2006-09-09 18:20:43-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/autoopts.c@1.4, 2006-09-09 18:20:43-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/boolean.c@1.3, 2006-09-09 18:20:44-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/compat/compat.h@1.7, 2006-09-09 18:20:59-04:00, stenn@whimsy.udel.edu +3 -3
+ libopts-27.4.3
+
+ libopts/configfile.c@1.4, 2006-09-09 18:20:44-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/cook.c@1.3, 2006-09-09 18:20:45-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/enumeration.c@1.3, 2006-09-09 18:20:45-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/environment.c@1.3, 2006-09-09 18:20:46-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/genshell.c@1.3, 2006-09-09 18:20:47-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/genshell.h@1.3, 2006-09-09 18:20:48-04:00, stenn@whimsy.udel.edu +6 -6
+ libopts-27.4.3
+
+ libopts/m4/libopts.m4@1.8, 2006-09-09 18:21:01-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/load.c@1.4, 2006-09-09 18:20:48-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/makeshell.c@1.5, 2006-09-09 18:20:48-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/nested.c@1.3, 2006-09-09 18:20:50-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/numeric.c@1.3, 2006-09-09 18:20:50-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/autoopts/options.h@1.4, 2006-09-09 18:20:57-04:00, stenn@whimsy.udel.edu +5 -5
+ libopts-27.4.3
+
+ libopts/compat/pathfind.c@1.4, 2006-09-09 18:21:00-04:00, stenn@whimsy.udel.edu +5 -5
+ libopts-27.4.3
+
+ libopts/pgusage.c@1.4, 2006-09-09 18:20:51-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/proto.h@1.5, 2006-09-09 18:20:51-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/putshell.c@1.4, 2006-09-09 18:20:51-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/restore.c@1.3, 2006-09-09 18:20:52-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/save.c@1.4, 2006-09-09 18:20:53-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/sort.c@1.3, 2006-09-09 18:20:54-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/stack.c@1.4, 2006-09-09 18:20:54-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/streqvcmp.c@1.4, 2006-09-09 18:20:55-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/text_mmap.c@1.3, 2006-09-09 18:20:56-04:00, stenn@whimsy.udel.edu +7 -7
+ libopts-27.4.3
+
+ libopts/autoopts/usage-txt.h@1.3, 2006-09-09 18:20:58-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/version.c@1.4, 2006-09-09 18:20:57-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.3
+
+ libopts/compat/windows-config.h@1.2, 2006-09-09 18:21:01-04:00, stenn@whimsy.udel.edu +4 -4
+ libopts-27.4.3
+
+ChangeSet@1.1379.5.1, 2006-09-09 05:19:19-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P41
+ TAG: NTP_4_2_3P41
+
+ ntpd/ntpd-opts.c@1.15, 2006-09-09 05:18:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ ntpd/ntpd-opts.h@1.15, 2006-09-09 05:18:59-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P41
+
+ ntpd/ntpd-opts.texi@1.16, 2006-09-09 05:19:00-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P41
+
+ ntpd/ntpd.1@1.15, 2006-09-09 05:19:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ ntpd/ntpdsim-opts.c@1.15, 2006-09-09 05:19:01-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ ntpd/ntpdsim-opts.h@1.15, 2006-09-09 05:19:02-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P41
+
+ ntpd/ntpdsim-opts.texi@1.15, 2006-09-09 05:19:03-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P41
+
+ ntpd/ntpdsim.1@1.15, 2006-09-09 05:19:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ ntpdc/ntpdc-opts.c@1.15, 2006-09-09 05:19:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ ntpdc/ntpdc-opts.h@1.15, 2006-09-09 05:19:05-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P41
+
+ ntpdc/ntpdc-opts.texi@1.15, 2006-09-09 05:19:05-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P41
+
+ ntpdc/ntpdc.1@1.15, 2006-09-09 05:19:06-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ ntpq/ntpq-opts.c@1.14, 2006-09-09 05:19:07-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ ntpq/ntpq-opts.h@1.14, 2006-09-09 05:19:07-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P41
+
+ ntpq/ntpq-opts.texi@1.14, 2006-09-09 05:19:08-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P41
+
+ ntpq/ntpq.1@1.14, 2006-09-09 05:19:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ packageinfo.sh@1.33, 2006-09-09 05:19:10-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P41
+
+ sntp/sntp-opts.c@1.14, 2006-09-09 05:19:10-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ sntp/sntp-opts.h@1.14, 2006-09-09 05:19:11-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P41
+
+ sntp/sntp-opts.texi@1.14, 2006-09-09 05:19:12-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P41
+
+ sntp/sntp.1@1.17, 2006-09-09 05:19:12-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ util/ntp-keygen-opts.c@1.14, 2006-09-09 05:19:13-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ util/ntp-keygen-opts.h@1.14, 2006-09-09 05:19:14-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P41
+
+ util/ntp-keygen-opts.texi@1.14, 2006-09-09 05:19:15-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P41
+
+ util/ntp-keygen.1@1.14, 2006-09-09 05:19:16-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P41
+
+ChangeSet@1.1379.2.16, 2006-09-09 07:16:37+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ remove unnecessary test
+
+ ntpd/ntp_io.c@1.234.1.6, 2006-09-09 07:15:44+00:00, kardel@pogo.udel.edu +1 -1
+ remove unnecessary test
+
+ChangeSet@1.1379.2.15, 2006-09-08 21:33:04-04:00, stenn@whimsy.udel.edu +1 -0
+ [CID 6] Fix a possible null dereference
+
+ ntpd/ntp_io.c@1.234.1.5, 2006-09-08 21:32:51-04:00, stenn@whimsy.udel.edu +3 -3
+ [CID 6] Fix a possible null dereference
+
+ChangeSet@1.1379.2.14, 2006-09-08 19:23:32-04:00, stenn@whimsy.udel.edu +4 -0
+ [Bug 691] ntp_monitor()/restrictions() interaction fixes
+
+ include/ntpd.h@1.96, 2006-09-08 19:22:49-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 691] ntp_monitor()/restrictions() interaction fixes
+
+ ntpd/ntp_monitor.c@1.18, 2006-09-08 19:23:08-04:00, stenn@whimsy.udel.edu +7 -4
+ [Bug 691] ntp_monitor()/restrictions() interaction fixes
+
+ ntpd/ntp_proto.c@1.248, 2006-09-08 19:23:09-04:00, stenn@whimsy.udel.edu +3 -2
+ [Bug 691] ntp_monitor()/restrictions() interaction fixes
+
+ ntpd/ntp_restrict.c@1.22, 2006-09-08 19:23:11-04:00, stenn@whimsy.udel.edu +3 -2
+ [Bug 691] ntp_monitor()/restrictions() interaction fixes
+
+ChangeSet@1.1379.4.1, 2006-09-08 17:20:34-04:00, stenn@whimsy.udel.edu +1 -0
+ autogen dependency cleanup
+
+ ntpdc/Makefile.am@1.33, 2006-09-08 17:20:02-04:00, stenn@whimsy.udel.edu +4 -4
+ autogen dependency cleanup
+
+ChangeSet@1.1379.2.12, 2006-09-08 20:42:56+00:00, kardel@pogo.udel.edu +2 -0
+ configure.ac:
+ add config fragment to conditionally re-bind sockets
+ for OSes that fail to flush cached routes when more
+ specific route are discovered.
+ ntp_io.c:
+ re-bind sockets on OSes that fail to
+ flush cached routes when more specific
+ routes are discovered.
+
+ configure.ac@1.388.1.9, 2006-09-08 20:32:42+00:00, kardel@pogo.udel.edu +13 -0
+ add config fragment to conditionally re-bind sockets
+ for OSes that fail to flush cached routes when more
+ specific route are discovered.
+
+ ntpd/ntp_io.c@1.234.1.4, 2006-09-08 20:37:49+00:00, kardel@pogo.udel.edu +10 -3
+ re-bind sockets on OSes that fail to
+ flush cached routes when more specific
+ routes are discovered.
+
+ChangeSet@1.1379.2.11, 2006-09-07 21:45:01-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P39
+ TAG: NTP_4_2_3P39
+
+ ntpd/ntpd-opts.c@1.14, 2006-09-07 21:44:44-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P39
+
+ ntpd/ntpd-opts.h@1.14, 2006-09-07 21:44:44-04:00, stenn@whimsy.udel.edu +185 -4
+ NTP_4_2_3P39
+
+ ntpd/ntpd-opts.texi@1.15, 2006-09-07 21:44:45-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P39
+
+ ntpd/ntpd.1@1.14, 2006-09-07 21:44:46-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P39
+
+ ntpd/ntpdsim-opts.c@1.14, 2006-09-07 21:44:46-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P39
+
+ ntpd/ntpdsim-opts.h@1.14, 2006-09-07 21:44:47-04:00, stenn@whimsy.udel.edu +239 -4
+ NTP_4_2_3P39
+
+ ntpd/ntpdsim-opts.texi@1.14, 2006-09-07 21:44:48-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P39
+
+ ntpd/ntpdsim.1@1.14, 2006-09-07 21:44:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P39
+
+ ntpdc/ntpdc-opts.c@1.14, 2006-09-07 21:44:49-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P39
+
+ ntpdc/ntpdc-opts.h@1.14, 2006-09-07 21:44:49-04:00, stenn@whimsy.udel.edu +71 -4
+ NTP_4_2_3P39
+
+ ntpdc/ntpdc-opts.texi@1.14, 2006-09-07 21:44:50-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P39
+
+ ntpdc/ntpdc.1@1.14, 2006-09-07 21:44:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P39
+
+ ntpq/ntpq-opts.c@1.13, 2006-09-07 21:44:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P39
+
+ ntpq/ntpq-opts.h@1.13, 2006-09-07 21:44:52-04:00, stenn@whimsy.udel.edu +59 -4
+ NTP_4_2_3P39
+
+ ntpq/ntpq-opts.texi@1.13, 2006-09-07 21:44:53-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P39
+
+ ntpq/ntpq.1@1.13, 2006-09-07 21:44:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P39
+
+ packageinfo.sh@1.32, 2006-09-07 21:44:54-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P39
+
+ sntp/sntp-opts.c@1.13, 2006-09-07 21:44:55-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P39
+
+ sntp/sntp-opts.h@1.13, 2006-09-07 21:44:55-04:00, stenn@whimsy.udel.edu +53 -4
+ NTP_4_2_3P39
+
+ sntp/sntp-opts.texi@1.13, 2006-09-07 21:44:55-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P39
+
+ sntp/sntp.1@1.16, 2006-09-07 21:44:56-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P39
+
+ util/ntp-keygen-opts.c@1.13, 2006-09-07 21:44:57-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P39
+
+ util/ntp-keygen-opts.h@1.13, 2006-09-07 21:44:57-04:00, stenn@whimsy.udel.edu +125 -4
+ NTP_4_2_3P39
+
+ util/ntp-keygen-opts.texi@1.13, 2006-09-07 21:44:58-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P39
+
+ util/ntp-keygen.1@1.13, 2006-09-07 21:44:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P39
+
+ChangeSet@1.1379.2.10, 2006-09-07 19:12:01-04:00, stenn@whimsy.udel.edu +3 -0
+ autogen dependency cleanup
+
+ ntpd/Makefile.am@1.52, 2006-09-07 19:11:48-04:00, stenn@whimsy.udel.edu +8 -8
+ autogen dependency cleanup
+
+ ntpq/Makefile.am@1.25, 2006-09-07 19:11:49-04:00, stenn@whimsy.udel.edu +4 -4
+ autogen dependency cleanup
+
+ util/Makefile.am@1.34, 2006-09-07 19:11:50-04:00, stenn@whimsy.udel.edu +4 -4
+ autogen dependency cleanup
+
+ChangeSet@1.1379.2.9, 2006-09-07 19:07:52-04:00, stenn@whimsy.udel.edu +1 -0
+ More WWV cleanup/fixes from Dave Mills
+
+ ntpd/refclock_wwv.c@1.62, 2006-09-07 19:07:37-04:00, stenn@whimsy.udel.edu +6 -11
+ More WWV cleanup/fixes from Dave Mills
+
+ChangeSet@1.1379.2.8, 2006-09-07 03:22:04-04:00, stenn@whimsy.udel.edu +1 -0
+ sntp/autogen-version.def should be ignored by bk
+
+ BitKeeper/etc/ignore@1.58, 2006-09-07 03:19:09-04:00, stenn@whimsy.udel.edu +1 -0
+ added sntp/autogen-version.def
+
+ChangeSet@1.1379.2.7, 2006-09-07 02:06:36-04:00, stenn@whimsy.udel.edu +12 -0
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ clockstuff/clktest-opts.def@1.4, 2006-09-07 02:06:15-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ include/Makefile.am@1.24, 2006-09-07 02:06:15-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ include/autogen-version.def@1.2, 2006-09-07 02:06:15-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ ntpd/Makefile.am@1.51, 2006-09-07 02:06:15-04:00, stenn@whimsy.udel.edu +3 -2
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ ntpdc/Makefile.am@1.32, 2006-09-07 02:06:16-04:00, stenn@whimsy.udel.edu +3 -2
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ ntpdc/ntpdc-opts.def@1.12, 2006-09-07 02:06:17-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ ntpq/Makefile.am@1.24, 2006-09-07 02:06:18-04:00, stenn@whimsy.udel.edu +3 -2
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ ntpq/ntpq-opts.def@1.10, 2006-09-07 02:06:18-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ sntp/Makefile.am@1.21, 2006-09-07 02:06:19-04:00, stenn@whimsy.udel.edu +12 -2
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ sntp/sntp-opts.def@1.9, 2006-09-07 02:06:19-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ util/Makefile.am@1.33, 2006-09-07 02:06:20-04:00, stenn@whimsy.udel.edu +3 -2
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ util/ntp-keygen-opts.def@1.6, 2006-09-07 02:06:21-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 695] autogen uprgrade: warn/protect macro collisions
+
+ChangeSet@1.1379.2.6, 2006-09-07 01:58:07-04:00, stenn@whimsy.udel.edu +1 -0
+ WWV refclock changes from Dave Mills
+
+ ntpd/refclock_wwv.c@1.61, 2006-09-07 01:57:55-04:00, stenn@whimsy.udel.edu +245 -294
+ WWV refclock changes from Dave Mills
+
+ChangeSet@1.1379.2.5, 2006-09-07 00:48:56-05:00, stenn@poog.il.thewrittenword.com +1 -0
+ [Bug 693] fix configure when there is __adtimex and no ntp_*time
+
+ configure.ac@1.388.1.8, 2006-09-07 00:48:15-05:00, stenn@poog.il.thewrittenword.com +7 -10
+ [Bug 693] fix configure when there is __adtimex and no ntp_*time
+
+ChangeSet@1.1379.2.4, 2006-08-31 02:06:16-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P38
+ TAG: NTP_4_2_3P38
+
+ ntpd/ntpd-opts.c@1.13, 2006-08-31 02:05:56-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ ntpd/ntpd-opts.h@1.13, 2006-08-31 02:05:57-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P38
+
+ ntpd/ntpd-opts.texi@1.14, 2006-08-31 02:05:57-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P38
+
+ ntpd/ntpd.1@1.13, 2006-08-31 02:05:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ ntpd/ntpdsim-opts.c@1.13, 2006-08-31 02:05:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ ntpd/ntpdsim-opts.h@1.13, 2006-08-31 02:05:59-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P38
+
+ ntpd/ntpdsim-opts.texi@1.13, 2006-08-31 02:06:00-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P38
+
+ ntpd/ntpdsim.1@1.13, 2006-08-31 02:06:01-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ ntpdc/ntpdc-opts.c@1.13, 2006-08-31 02:06:02-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ ntpdc/ntpdc-opts.h@1.13, 2006-08-31 02:06:03-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P38
+
+ ntpdc/ntpdc-opts.texi@1.13, 2006-08-31 02:06:03-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P38
+
+ ntpdc/ntpdc.1@1.13, 2006-08-31 02:06:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ ntpq/ntpq-opts.c@1.12, 2006-08-31 02:06:05-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ ntpq/ntpq-opts.h@1.12, 2006-08-31 02:06:05-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P38
+
+ ntpq/ntpq-opts.texi@1.12, 2006-08-31 02:06:06-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P38
+
+ ntpq/ntpq.1@1.12, 2006-08-31 02:06:07-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ packageinfo.sh@1.31, 2006-08-31 02:06:07-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P38
+
+ sntp/sntp-opts.c@1.12, 2006-08-31 02:06:08-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ sntp/sntp-opts.h@1.12, 2006-08-31 02:06:09-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P38
+
+ sntp/sntp-opts.texi@1.12, 2006-08-31 02:06:09-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P38
+
+ sntp/sntp.1@1.15, 2006-08-31 02:06:10-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ util/ntp-keygen-opts.c@1.12, 2006-08-31 02:06:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ util/ntp-keygen-opts.h@1.12, 2006-08-31 02:06:11-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P38
+
+ util/ntp-keygen-opts.texi@1.12, 2006-08-31 02:06:12-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P38
+
+ util/ntp-keygen.1@1.12, 2006-08-31 02:06:13-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P38
+
+ChangeSet@1.1379.2.3, 2006-08-30 06:28:59-04:00, stenn@whimsy.udel.edu +5 -0
+ [Bug 340, 342] Deprecate broken TRAK and MSF EES refclocks
+
+ NEWS@1.59, 2006-08-30 06:28:23-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 340, 342] Deprecate broken TRAK and MSF EES refclocks
+
+ configure.ac@1.388.1.7, 2006-08-30 06:28:26-04:00, stenn@whimsy.udel.edu +20 -18
+ [Bug 340, 342] Deprecate broken TRAK and MSF EES refclocks
+
+ ntpd/Makefile.am@1.50, 2006-08-30 06:27:33-04:00, stenn@whimsy.udel.edu +6 -3
+ [Bug 340, 342] Deprecate broken TRAK and MSF EES refclocks
+
+ ntpd/ntp_control.c@1.87, 2006-08-30 06:27:35-04:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 340, 342] Deprecate broken TRAK and MSF EES refclocks
+
+ ntpd/refclock_conf.c@1.26, 2006-08-30 06:27:42-04:00, stenn@whimsy.udel.edu +4 -4
+ [Bug 340, 342] Deprecate broken TRAK and MSF EES refclocks
+
+ChangeSet@1.1379.3.1, 2006-08-29 23:45:21-04:00, stenn@whimsy.udel.edu +1 -0
+ Fix dependency order problem
+
+ sntp/Makefile.am@1.20, 2006-08-29 23:45:10-04:00, stenn@whimsy.udel.edu +2 -1
+ Fix dependency order problem
+
+ChangeSet@1.1379.2.1, 2006-08-29 16:05:33-04:00, neal@pogo.udel.edu +1 -0
+ refclock_bancomm.c:
+ [BUG 421] add support for bc637PCI
+
+ ntpd/refclock_bancomm.c@1.9, 2006-08-29 15:55:13-04:00, neal@pogo.udel.edu +138 -104
+ [BUG 421] add support for bc637PCI
+
+ChangeSet@1.1353.9.51, 2006-08-29 07:55:52-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #656: Multicast address argument copied incorrectly
+
+ ntpdate/ntpdate.c@1.59, 2006-08-29 07:55:16-04:00, mayer@pogo.udel.edu +1 -1
+ Bug #656: Multicast address argument copied wrongly
+
+ChangeSet@1.1379.1.5, 2006-08-29 06:47:20-04:00, stenn@whimsy.udel.edu +1 -0
+ loopfilter changes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.125, 2006-08-29 06:47:08-04:00, stenn@whimsy.udel.edu +12 -15
+ loopfilter changes from Dave Mills
+
+ChangeSet@1.1379.1.4, 2006-08-29 08:16:22+00:00, stenn@ntp1.isc.org +1 -0
+ [Bug 603] Cleanup the configure patch for the libelf fix
+
+ configure.ac@1.388.1.6, 2006-08-29 08:16:13+00:00, stenn@ntp1.isc.org +12 -9
+ [Bug 603] Cleanup the configure patch for the libelf fix
+
+ChangeSet@1.1379.1.3, 2006-08-28 21:48:10-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P37
+ TAG: NTP_4_2_3P37
+
+ ntpd/ntpd-opts.c@1.12, 2006-08-28 21:47:46-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ ntpd/ntpd-opts.h@1.12, 2006-08-28 21:47:47-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P37
+
+ ntpd/ntpd-opts.texi@1.13, 2006-08-28 21:47:48-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P37
+
+ ntpd/ntpd.1@1.12, 2006-08-28 21:47:48-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ ntpd/ntpdsim-opts.c@1.12, 2006-08-28 21:47:49-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ ntpd/ntpdsim-opts.h@1.12, 2006-08-28 21:47:50-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P37
+
+ ntpd/ntpdsim-opts.texi@1.12, 2006-08-28 21:47:50-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P37
+
+ ntpd/ntpdsim.1@1.12, 2006-08-28 21:47:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ ntpdc/ntpdc-opts.c@1.12, 2006-08-28 21:47:52-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ ntpdc/ntpdc-opts.h@1.12, 2006-08-28 21:47:54-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P37
+
+ ntpdc/ntpdc-opts.texi@1.12, 2006-08-28 21:47:54-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P37
+
+ ntpdc/ntpdc.1@1.12, 2006-08-28 21:47:55-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ ntpq/ntpq-opts.c@1.11, 2006-08-28 21:47:56-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ ntpq/ntpq-opts.h@1.11, 2006-08-28 21:47:57-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P37
+
+ ntpq/ntpq-opts.texi@1.11, 2006-08-28 21:47:58-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P37
+
+ ntpq/ntpq.1@1.11, 2006-08-28 21:47:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ packageinfo.sh@1.30, 2006-08-28 21:47:59-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P37
+
+ sntp/sntp-opts.c@1.11, 2006-08-28 21:48:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ sntp/sntp-opts.h@1.11, 2006-08-28 21:48:01-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P37
+
+ sntp/sntp-opts.texi@1.11, 2006-08-28 21:48:01-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P37
+
+ sntp/sntp.1@1.14, 2006-08-28 21:48:02-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ util/ntp-keygen-opts.c@1.11, 2006-08-28 21:48:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ util/ntp-keygen-opts.h@1.11, 2006-08-28 21:48:03-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P37
+
+ util/ntp-keygen-opts.texi@1.11, 2006-08-28 21:48:04-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P37
+
+ util/ntp-keygen.1@1.11, 2006-08-28 21:48:05-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P37
+
+ChangeSet@1.1379.1.2, 2006-08-28 05:03:05-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 603] Only link with libelf if we need it.
+
+ configure.ac@1.388.1.5, 2006-08-28 05:02:46-04:00, stenn@whimsy.udel.edu +22 -19
+ [Bug 603] Only link with libelf if we need it.
+
+ChangeSet@1.1379.1.1, 2006-08-27 23:47:09-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 692] sys_limitrejected is no longer incremented
+
+ ntpd/ntp_proto.c@1.247, 2006-08-27 23:46:56-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 692] sys_limitrejected is no longer incremented
+
+ChangeSet@1.1379, 2006-08-27 20:49:57-04:00, stenn@whimsy.udel.edu +5 -0
+ [Bug 688] Fix documentation typos
+
+ html/clockopt.html@1.19, 2006-08-27 20:49:38-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 688] Fix documentation typos
+
+ html/notes.html@1.18, 2006-08-27 20:49:42-04:00, stenn@whimsy.udel.edu +10 -10
+ [Bug 688] Fix documentation typos
+
+ html/ntpd.html@1.39, 2006-08-27 20:49:43-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 688] Fix documentation typos
+
+ html/ntpdate.html@1.18, 2006-08-27 20:49:44-04:00, stenn@whimsy.udel.edu +3 -1
+ [Bug 688] Fix documentation typos
+
+ html/ntpdc.html@1.25, 2006-08-27 20:49:44-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 688] Fix documentation typos
+
+ChangeSet@1.1378, 2006-08-27 23:44:15+00:00, stenn@ntp1.isc.org +1 -0
+ [Bug 153] Avoid DNS lookups of known netmasks or refclocks
+
+ ntpd/ntp_config.c@1.141, 2006-08-27 23:44:07+00:00, stenn@ntp1.isc.org +30 -4
+ [Bug 153] Avoid DNS lookups of known netmasks or refclocks
+
+ChangeSet@1.1353.21.3, 2006-08-26 15:10:29-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P36
+ TAG: NTP_4_2_3P36
+
+ ntpd/ntpd-opts.c@1.11, 2006-08-26 15:10:05-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ ntpd/ntpd-opts.h@1.11, 2006-08-26 15:10:05-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P36
+
+ ntpd/ntpd-opts.texi@1.12, 2006-08-26 15:10:06-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P36
+
+ ntpd/ntpd.1@1.11, 2006-08-26 15:10:07-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ ntpd/ntpdsim-opts.c@1.11, 2006-08-26 15:10:08-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ ntpd/ntpdsim-opts.h@1.11, 2006-08-26 15:10:09-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P36
+
+ ntpd/ntpdsim-opts.texi@1.11, 2006-08-26 15:10:10-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P36
+
+ ntpd/ntpdsim.1@1.11, 2006-08-26 15:10:10-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ ntpdc/ntpdc-opts.c@1.11, 2006-08-26 15:10:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ ntpdc/ntpdc-opts.h@1.11, 2006-08-26 15:10:12-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P36
+
+ ntpdc/ntpdc-opts.texi@1.11, 2006-08-26 15:10:12-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P36
+
+ ntpdc/ntpdc.1@1.11, 2006-08-26 15:10:13-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ ntpq/ntpq-opts.c@1.10, 2006-08-26 15:10:14-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ ntpq/ntpq-opts.h@1.10, 2006-08-26 15:10:14-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P36
+
+ ntpq/ntpq-opts.texi@1.10, 2006-08-26 15:10:15-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P36
+
+ ntpq/ntpq.1@1.10, 2006-08-26 15:10:16-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ packageinfo.sh@1.29, 2006-08-26 15:10:17-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P36
+
+ sntp/sntp-opts.c@1.10, 2006-08-26 15:10:17-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ sntp/sntp-opts.h@1.10, 2006-08-26 15:10:18-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P36
+
+ sntp/sntp-opts.texi@1.10, 2006-08-26 15:10:19-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P36
+
+ sntp/sntp.1@1.13, 2006-08-26 15:10:20-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ util/ntp-keygen-opts.c@1.10, 2006-08-26 15:10:20-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ util/ntp-keygen-opts.h@1.10, 2006-08-26 15:10:21-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P36
+
+ util/ntp-keygen-opts.texi@1.10, 2006-08-26 15:10:22-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P36
+
+ util/ntp-keygen.1@1.10, 2006-08-26 15:10:22-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P36
+
+ChangeSet@1.1251.94.54, 2006-08-26 05:34:06-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P4_RC2
+ TAG: NTP_4_2_2P4_RC2
+
+ packageinfo.sh@1.27.18.1, 2006-08-26 05:34:03-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P4_RC2
+
+ChangeSet@1.1353.22.1, 2006-08-26 05:05:56-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P35
+ TAG: NTP_4_2_3P35
+
+ ntpd/ntpd-opts.c@1.10, 2006-08-26 05:05:35-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ ntpd/ntpd-opts.h@1.10, 2006-08-26 05:05:36-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P35
+
+ ntpd/ntpd-opts.texi@1.11, 2006-08-26 05:05:36-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P35
+
+ ntpd/ntpd.1@1.10, 2006-08-26 05:05:37-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ ntpd/ntpdsim-opts.c@1.10, 2006-08-26 05:05:38-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ ntpd/ntpdsim-opts.h@1.10, 2006-08-26 05:05:39-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P35
+
+ ntpd/ntpdsim-opts.texi@1.10, 2006-08-26 05:05:39-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P35
+
+ ntpd/ntpdsim.1@1.10, 2006-08-26 05:05:41-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ ntpdc/ntpdc-opts.c@1.10, 2006-08-26 05:05:41-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ ntpdc/ntpdc-opts.h@1.10, 2006-08-26 05:05:42-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P35
+
+ ntpdc/ntpdc-opts.texi@1.10, 2006-08-26 05:05:43-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P35
+
+ ntpdc/ntpdc.1@1.10, 2006-08-26 05:05:43-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ ntpq/ntpq-opts.c@1.9, 2006-08-26 05:05:44-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ ntpq/ntpq-opts.h@1.9, 2006-08-26 05:05:45-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P35
+
+ ntpq/ntpq-opts.texi@1.9, 2006-08-26 05:05:45-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P35
+
+ ntpq/ntpq.1@1.9, 2006-08-26 05:05:46-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ packageinfo.sh@1.28, 2006-08-26 05:05:47-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P35
+
+ sntp/sntp-opts.c@1.9, 2006-08-26 05:05:47-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ sntp/sntp-opts.h@1.9, 2006-08-26 05:05:48-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P35
+
+ sntp/sntp-opts.texi@1.9, 2006-08-26 05:05:49-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P35
+
+ sntp/sntp.1@1.12, 2006-08-26 05:05:50-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ util/ntp-keygen-opts.c@1.9, 2006-08-26 05:05:51-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ util/ntp-keygen-opts.h@1.9, 2006-08-26 05:05:52-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P35
+
+ util/ntp-keygen-opts.texi@1.9, 2006-08-26 05:05:52-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P35
+
+ util/ntp-keygen.1@1.9, 2006-08-26 05:05:53-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P35
+
+ChangeSet@1.1251.94.53, 2006-08-25 15:55:51-04:00, stenn@whimsy.udel.edu +1 -0
+ update README.patches
+
+ README.patches@1.3, 2006-08-25 15:55:28-04:00, stenn@whimsy.udel.edu +11 -1
+ update
+
+ChangeSet@1.1251.94.52, 2006-08-25 09:00:40-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #690: Fix length returned. Prevents buffer overflow
+
+ ports/winnt/libntp/dnslookup.c@1.3.1.1, 2006-08-25 09:00:24-04:00, mayer@pogo.udel.edu +1 -1
+ Bug #690: Fix length returned. Prevents buffer overflow
+
+ChangeSet@1.1353.20.1, 2006-08-25 08:57:39-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #690: Cleanup fix. Erroneous #define
+
+ libntp/ntp_rfc2553.c@1.32, 2006-08-25 08:57:05-04:00, mayer@pogo.udel.edu +0 -1
+ Bug #690: Cleanup fix. Erroneous #define
+
+ChangeSet@1.1353.9.48, 2006-08-25 02:26:29-04:00, stenn@whimsy.udel.edu +1 -0
+ Dependency cleanup
+
+ sntp/Makefile.am@1.19, 2006-08-25 02:26:15-04:00, stenn@whimsy.udel.edu +6 -6
+ Dependency cleanup
+
+ChangeSet@1.1353.9.47, 2006-08-25 02:24:00-04:00, stenn@whimsy.udel.edu +1 -0
+ ntp_optind needs a declaration, not a definition
+
+ ntpdc/ntpdc.c@1.54, 2006-08-25 02:23:48-04:00, stenn@whimsy.udel.edu +1 -1
+ ntp_optind needs a declaration, not a definition
+
+ChangeSet@1.1251.94.51, 2006-08-24 19:50:32-04:00, stenn@whimsy.udel.edu +1 -0
+ br-flock: mort lives
+
+ br-flock@1.10, 2006-08-24 19:49:33-04:00, stenn@whimsy.udel.edu +1 -1
+ br-flock: mort lives
+
+ChangeSet@1.1353.9.45, 2006-08-24 17:12:32-04:00, stenn@whimsy.udel.edu +3 -0
+ Changes from Dave Mills: Rename MAXSIG to MAXAMP to avoid a collision, tweak the code
+
+ ntpd/refclock_chu.c@1.38, 2006-08-24 17:10:52-04:00, stenn@whimsy.udel.edu +6 -6
+ Rename MAXSIG to MAXAMP to avoid a collision
+
+ ntpd/refclock_irig.c@1.23, 2006-08-24 17:10:52-04:00, stenn@whimsy.udel.edu +6 -6
+ Rename MAXSIG to MAXAMP to avoid a collision
+
+ ntpd/refclock_wwv.c@1.60, 2006-08-24 17:11:27-04:00, stenn@whimsy.udel.edu +124 -119
+ Rename MAXSIG to MAXAMP to avoid a collision, tweak the code
+
+ChangeSet@1.1353.9.44, 2006-08-24 16:04:18-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 638] remove STREAMS_TLI comment from legacy info
+
+ include/ntp_machine.h@1.23, 2006-08-24 16:04:02-04:00, stenn@whimsy.udel.edu +0 -2
+ [Bug 638] remove STREAMS_TLI comment from legacy info
+
+ChangeSet@1.1353.19.1, 2006-08-24 09:10:50-04:00, mayer@pogo.udel.edu +2 -0
+ Bug #690:Proper fix for length issue
+
+ libntp/ntp_rfc2553.c@1.31, 2006-08-24 09:10:22-04:00, mayer@pogo.udel.edu +2 -1
+ Bug #690:Proper fix for length issue
+
+ ports/winnt/libntp/dnslookup.c@1.4, 2006-08-24 09:10:22-04:00, mayer@pogo.udel.edu +1 -1
+ Bug #690:Proper fix for length issue
+
+ChangeSet@1.1353.9.42, 2006-08-20 20:18:08-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P34
+ TAG: NTP_4_2_3P34
+
+ ntpd/ntpd-opts.c@1.9, 2006-08-20 20:17:49-04:00, stenn@whimsy.udel.edu +19 -19
+ NTP_4_2_3P34
+
+ ntpd/ntpd-opts.h@1.9, 2006-08-20 20:17:49-04:00, stenn@whimsy.udel.edu +5 -5
+ NTP_4_2_3P34
+
+ ntpd/ntpd-opts.texi@1.10, 2006-08-20 20:17:50-04:00, stenn@whimsy.udel.edu +7 -7
+ NTP_4_2_3P34
+
+ ntpd/ntpd.1@1.9, 2006-08-20 20:17:51-04:00, stenn@whimsy.udel.edu +5 -5
+ NTP_4_2_3P34
+
+ ntpd/ntpdsim-opts.c@1.9, 2006-08-20 20:17:51-04:00, stenn@whimsy.udel.edu +19 -19
+ NTP_4_2_3P34
+
+ ntpd/ntpdsim-opts.h@1.9, 2006-08-20 20:17:52-04:00, stenn@whimsy.udel.edu +5 -5
+ NTP_4_2_3P34
+
+ ntpd/ntpdsim-opts.texi@1.9, 2006-08-20 20:17:53-04:00, stenn@whimsy.udel.edu +7 -7
+ NTP_4_2_3P34
+
+ ntpd/ntpdsim.1@1.9, 2006-08-20 20:17:54-04:00, stenn@whimsy.udel.edu +5 -5
+ NTP_4_2_3P34
+
+ ntpdc/ntpdc-opts.c@1.9, 2006-08-20 20:17:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P34
+
+ ntpdc/ntpdc-opts.h@1.9, 2006-08-20 20:17:55-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P34
+
+ ntpdc/ntpdc-opts.texi@1.9, 2006-08-20 20:17:56-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P34
+
+ ntpdc/ntpdc.1@1.9, 2006-08-20 20:17:57-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P34
+
+ ntpq/ntpq-opts.c@1.8, 2006-08-20 20:17:57-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P34
+
+ ntpq/ntpq-opts.h@1.8, 2006-08-20 20:17:58-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P34
+
+ ntpq/ntpq-opts.texi@1.8, 2006-08-20 20:17:59-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P34
+
+ ntpq/ntpq.1@1.8, 2006-08-20 20:18:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P34
+
+ packageinfo.sh@1.27, 2006-08-20 20:18:00-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P34
+
+ sntp/sntp-opts.c@1.8, 2006-08-20 20:18:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P34
+
+ sntp/sntp-opts.h@1.8, 2006-08-20 20:18:01-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P34
+
+ sntp/sntp-opts.texi@1.8, 2006-08-20 20:18:02-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P34
+
+ sntp/sntp.1@1.11, 2006-08-20 20:18:02-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P34
+
+ util/ntp-keygen-opts.c@1.8, 2006-08-20 20:18:03-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P34
+
+ util/ntp-keygen-opts.h@1.8, 2006-08-20 20:18:03-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P34
+
+ util/ntp-keygen-opts.texi@1.8, 2006-08-20 20:18:04-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P34
+
+ util/ntp-keygen.1@1.8, 2006-08-20 20:18:05-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P34
+
+ChangeSet@1.1353.9.41, 2006-08-19 23:55:26-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #690: don't copy to many bytes when copying the address info
+
+ libntp/ntp_rfc2553.c@1.30, 2006-08-19 23:54:56-04:00, mayer@pogo.udel.edu +1 -1
+ Bug #690: don't copy to many bytes when copying the address info
+
+ChangeSet@1.1353.9.39, 2006-08-19 23:34:01-04:00, stenn@whimsy.udel.edu +25 -0
+ NTP_4_2_3P33
+ TAG: NTP_4_2_3P33
+
+ ntpd/ntpd-opts.c@1.8, 2006-08-19 23:11:54-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ ntpd/ntpd-opts.h@1.8, 2006-08-19 23:11:54-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P33
+
+ ntpd/ntpd-opts.texi@1.9, 2006-08-19 23:11:55-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P33
+
+ ntpd/ntpd.1@1.8, 2006-08-19 23:11:55-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ ntpd/ntpdsim-opts.c@1.8, 2006-08-19 23:11:55-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ ntpd/ntpdsim-opts.h@1.8, 2006-08-19 23:11:56-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P33
+
+ ntpd/ntpdsim-opts.texi@1.8, 2006-08-19 23:11:57-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P33
+
+ ntpd/ntpdsim.1@1.8, 2006-08-19 23:11:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ ntpdc/ntpdc-opts.c@1.8, 2006-08-19 23:11:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ ntpdc/ntpdc-opts.h@1.8, 2006-08-19 23:11:59-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P33
+
+ ntpdc/ntpdc-opts.texi@1.8, 2006-08-19 23:12:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ ntpdc/ntpdc.1@1.8, 2006-08-19 23:12:01-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ ntpq/ntpq-opts.c@1.7, 2006-08-19 23:12:02-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ ntpq/ntpq-opts.h@1.7, 2006-08-19 23:12:02-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P33
+
+ ntpq/ntpq-opts.texi@1.7, 2006-08-19 23:12:03-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P33
+
+ ntpq/ntpq.1@1.7, 2006-08-19 23:12:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ packageinfo.sh@1.26, 2006-08-19 22:17:12-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P33
+
+ sntp/sntp-opts.c@1.7, 2006-08-19 23:12:04-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ sntp/sntp-opts.h@1.7, 2006-08-19 23:12:05-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P33
+
+ sntp/sntp-opts.texi@1.7, 2006-08-19 23:12:06-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P33
+
+ sntp/sntp.1@1.10, 2006-08-19 23:12:06-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ util/ntp-keygen-opts.c@1.7, 2006-08-19 23:12:08-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ util/ntp-keygen-opts.h@1.7, 2006-08-19 23:12:09-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P33
+
+ util/ntp-keygen-opts.texi@1.7, 2006-08-19 23:12:10-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ util/ntp-keygen.1@1.7, 2006-08-19 23:12:11-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P33
+
+ChangeSet@1.1353.18.1, 2006-08-18 07:58:19-04:00, mayer@pogo.udel.edu +9 -0
+ Bug #685: Changes for MM timer and code cleanup
+
+ include/ntpd.h@1.95, 2006-08-18 07:56:32-04:00, mayer@pogo.udel.edu +0 -3
+ Bug #685: Changes for MM timer and code cleanup
+
+ ntpd/cmd_args.c@1.42.1.1, 2006-08-18 07:56:32-04:00, mayer@pogo.udel.edu +0 -8
+ Bug #685: Changes for MM timer and code cleanup
+
+ ntpd/ntp_timer.c@1.32, 2006-08-18 07:56:32-04:00, mayer@pogo.udel.edu +1 -1
+ Bug #685: Changes for MM timer and code cleanup
+
+ ntpd/ntpd.c@1.81, 2006-08-18 07:56:32-04:00, mayer@pogo.udel.edu +15 -7
+ Bug #685: Changes for MM timer and code cleanup
+
+ ntpd/ntpdbase-opts.def@1.7.1.1, 2006-08-18 07:56:32-04:00, mayer@pogo.udel.edu +4 -3
+ Bug #685: Changes for MM timer and code cleanup
+
+ ports/winnt/include/clockstuff.h@1.7, 2006-08-18 07:57:35-04:00, mayer@pogo.udel.edu +11 -0
+ Bug #685: Changes for MM timer and code cleanup
+
+ ports/winnt/include/config.h@1.43, 2006-08-18 07:57:35-04:00, mayer@pogo.udel.edu +7 -1
+ Bug #685: Changes for MM timer and code cleanup
+
+ ports/winnt/ntpd/nt_clockstuff.c@1.21, 2006-08-18 07:57:35-04:00, mayer@pogo.udel.edu +4 -4
+ Bug #685: Changes for MM timer and code cleanup
+
+ ports/winnt/ntpd/ntpd.dsp@1.29, 2006-08-18 07:57:35-04:00, mayer@pogo.udel.edu +102 -2
+ Bug #685: Changes for MM timer and code cleanup
+
+ChangeSet@1.1353.9.38, 2006-08-18 06:37:36-04:00, stenn@whimsy.udel.edu +1 -0
+ Remove "commented out" items from the bk ignore file
+
+ BitKeeper/etc/ignore@1.57, 2006-08-18 06:37:19-04:00, stenn@whimsy.udel.edu +0 -13
+ Remove "commented out" items from the bk ignore file
+
+ChangeSet@1.1353.9.37, 2006-08-18 03:33:56-04:00, stenn@whimsy.udel.edu +6 -0
+ libopts upgrade
+
+ libopts/autoopts.h@1.4, 2006-08-18 03:33:36-04:00, stenn@whimsy.udel.edu +12 -4
+ libopts upgrade
+
+ sntp/libopts/autoopts.h@1.4, 2006-08-18 03:33:38-04:00, stenn@whimsy.udel.edu +12 -4
+ libopts upgrade
+
+ libopts/m4/libopts.m4@1.7, 2006-08-18 03:33:37-04:00, stenn@whimsy.udel.edu +4 -4
+ libopts upgrade
+
+ sntp/libopts/m4/libopts.m4@1.7, 2006-08-18 03:33:39-04:00, stenn@whimsy.udel.edu +4 -4
+ libopts upgrade
+
+ libopts/usage.c@1.4, 2006-08-18 03:33:37-04:00, stenn@whimsy.udel.edu +3 -3
+ libopts upgrade
+
+ sntp/libopts/usage.c@1.4, 2006-08-18 03:33:39-04:00, stenn@whimsy.udel.edu +3 -3
+ libopts upgrade
+
+ChangeSet@1.1353.9.36, 2006-08-17 01:29:37-04:00, stenn@whimsy.udel.edu +8 -0
+ [Bug 685] cleanup
+
+ ntpd/ntpd-opts.c@1.7, 2006-08-17 01:29:02-04:00, stenn@whimsy.udel.edu +58 -28
+ [Bug 685] use updated autogen-erated files
+
+ ntpd/ntpd-opts.h@1.7, 2006-08-17 01:29:03-04:00, stenn@whimsy.udel.edu +24 -20
+ [Bug 685] use updated autogen-erated files
+
+ ntpd/ntpd-opts.texi@1.8, 2006-08-17 01:29:04-04:00, stenn@whimsy.udel.edu +16 -1
+ [Bug 685] use updated autogen-erated files
+
+ ntpd/ntpd.1@1.7, 2006-08-17 01:29:05-04:00, stenn@whimsy.udel.edu +7 -2
+ [Bug 685] use updated autogen-erated files
+
+ ntpd/ntpdsim-opts.c@1.7, 2006-08-17 01:29:05-04:00, stenn@whimsy.udel.edu +70 -40
+ [Bug 685] use updated autogen-erated files
+
+ ntpd/ntpdsim-opts.h@1.7, 2006-08-17 01:29:06-04:00, stenn@whimsy.udel.edu +30 -26
+ [Bug 685] use updated autogen-erated files
+
+ ntpd/ntpdsim-opts.texi@1.7, 2006-08-17 01:29:06-04:00, stenn@whimsy.udel.edu +16 -1
+ [Bug 685] use updated autogen-erated files
+
+ ntpd/ntpdsim.1@1.7, 2006-08-17 01:29:07-04:00, stenn@whimsy.udel.edu +7 -2
+ [Bug 685] use updated autogen-erated files
+
+ChangeSet@1.1353.9.35, 2006-08-17 01:27:04-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 685] cleanup
+
+ ntpd/cmd_args.c@1.43, 2006-08-17 01:24:44-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 685] Fix a typo - WINNT -> SYS_WINNT
+
+ ntpd/ntpdbase-opts.def@1.8, 2006-08-17 01:25:41-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 685] -M should only accepted if SYS_WINNT is #defined
+
+ChangeSet@1.1353.17.1, 2006-08-17 00:52:10-04:00, stenn@whimsy.udel.edu +24 -0
+ run autogen after point release
+
+ ntpd/ntpd-opts.c@1.6, 2006-08-17 00:51:23-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ ntpd/ntpd-opts.h@1.6, 2006-08-17 00:51:23-04:00, stenn@whimsy.udel.edu +3 -3
+ run autogen after point release
+
+ ntpd/ntpd-opts.texi@1.7, 2006-08-17 00:51:24-04:00, stenn@whimsy.udel.edu +1 -1
+ run autogen after point release
+
+ ntpd/ntpd.1@1.6, 2006-08-17 00:51:24-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ ntpd/ntpdsim-opts.c@1.6, 2006-08-17 00:51:25-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ ntpd/ntpdsim-opts.h@1.6, 2006-08-17 00:51:26-04:00, stenn@whimsy.udel.edu +3 -3
+ run autogen after point release
+
+ ntpd/ntpdsim-opts.texi@1.6, 2006-08-17 00:51:27-04:00, stenn@whimsy.udel.edu +1 -1
+ run autogen after point release
+
+ ntpd/ntpdsim.1@1.6, 2006-08-17 00:51:28-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ ntpdc/ntpdc-opts.c@1.7, 2006-08-17 00:51:29-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ ntpdc/ntpdc-opts.h@1.7, 2006-08-17 00:51:29-04:00, stenn@whimsy.udel.edu +3 -3
+ run autogen after point release
+
+ ntpdc/ntpdc-opts.texi@1.7, 2006-08-17 00:51:30-04:00, stenn@whimsy.udel.edu +1 -1
+ run autogen after point release
+
+ ntpdc/ntpdc.1@1.7, 2006-08-17 00:51:30-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ ntpq/ntpq-opts.c@1.6, 2006-08-17 00:51:32-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ ntpq/ntpq-opts.h@1.6, 2006-08-17 00:51:33-04:00, stenn@whimsy.udel.edu +3 -3
+ run autogen after point release
+
+ ntpq/ntpq-opts.texi@1.6, 2006-08-17 00:51:33-04:00, stenn@whimsy.udel.edu +1 -1
+ run autogen after point release
+
+ ntpq/ntpq.1@1.6, 2006-08-17 00:51:34-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ sntp/sntp-opts.c@1.6, 2006-08-17 00:51:35-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ sntp/sntp-opts.h@1.6, 2006-08-17 00:51:35-04:00, stenn@whimsy.udel.edu +3 -3
+ run autogen after point release
+
+ sntp/sntp-opts.texi@1.6, 2006-08-17 00:51:36-04:00, stenn@whimsy.udel.edu +1 -1
+ run autogen after point release
+
+ sntp/sntp.1@1.9, 2006-08-17 00:51:37-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ util/ntp-keygen-opts.c@1.6, 2006-08-17 00:51:38-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ util/ntp-keygen-opts.h@1.6, 2006-08-17 00:51:39-04:00, stenn@whimsy.udel.edu +3 -3
+ run autogen after point release
+
+ util/ntp-keygen-opts.texi@1.6, 2006-08-17 00:51:39-04:00, stenn@whimsy.udel.edu +1 -1
+ run autogen after point release
+
+ util/ntp-keygen.1@1.6, 2006-08-17 00:51:41-04:00, stenn@whimsy.udel.edu +2 -2
+ run autogen after point release
+
+ChangeSet@1.1353.16.2, 2006-08-15 13:14:03-04:00, mayer@pogo.udel.edu +4 -0
+ Bug #685 and #686: MM timer enhancements and leapsecond fixes
+
+ ntpd/cmd_args.c@1.42, 2006-08-15 13:12:21-04:00, mayer@pogo.udel.edu +8 -0
+ Bug #685: MM timer enhancement for Windows
+
+ ntpd/ntpdbase-opts.def@1.5.1.1, 2006-08-15 13:12:23-04:00, mayer@pogo.udel.edu +9 -0
+ Bug #685: MM timer enhancement for Windows
+
+ ports/winnt/ntpd/nt_clockstuff.c@1.20, 2006-08-15 13:08:20-04:00, mayer@pogo.udel.edu +199 -38
+ Bug #685 and #686: MM timer fixes and leapsecond fixes
+
+ ports/winnt/ntpd/ntservice.c@1.6.1.1, 2006-08-15 13:08:20-04:00, mayer@pogo.udel.edu +13 -12
+ Bug #685 and #686: MM timer fixes and leapsecond fixes
+
+ChangeSet@1.1353.16.1, 2006-08-15 13:04:10-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #523: exit() was being overridden
+
+ include/ntpd.h@1.94, 2006-08-15 13:03:42-04:00, mayer@pogo.udel.edu +0 -2
+ Bug #523: exit() was being overridden
+
+ChangeSet@1.1353.9.32, 2006-08-15 08:10:21-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P31
+ TAG: NTP_4_2_3P31
+
+ packageinfo.sh@1.25, 2006-08-15 08:10:19-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P31
+
+ChangeSet@1.1251.94.50, 2006-08-15 07:02:21-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P4_RC1
+ TAG: NTP_4_2_2P4_RC1
+
+ packageinfo.sh@1.27.17.1, 2006-08-15 07:02:17-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_2P4_RC1
+
+ChangeSet@1.1251.94.49, 2006-08-15 06:09:54-04:00, stenn@whimsy.udel.edu +1 -0
+ Save the list of files that change if the point-level is updated
+
+ .point-changed-filelist@1.1, 2006-08-15 06:09:46-04:00, stenn@whimsy.udel.edu +1 -0
+ BitKeeper file /deacon/backroom/ntp-stable/.point-changed-filelist
+
+ .point-changed-filelist@1.0, 2006-08-15 06:09:46-04:00, stenn@whimsy.udel.edu +0 -0
+
+ChangeSet@1.1353.9.30, 2006-08-15 06:08:03-04:00, stenn@whimsy.udel.edu +1 -0
+ Save the list of files that change if the point-level is updated
+
+ .point-changed-filelist@1.1, 2006-08-15 06:04:15-04:00, stenn@whimsy.udel.edu +25 -0
+ BitKeeper file /deacon/backroom/ntp-dev/.point-changed-filelist
+
+ .point-changed-filelist@1.0, 2006-08-15 06:04:15-04:00, stenn@whimsy.udel.edu +0 -0
+
+ChangeSet@1.1353.9.29, 2006-08-15 05:53:43-04:00, stenn@whimsy.udel.edu +26 -0
+ [Bug 684] debug command-line options should not be shown if #undef DEBUG
+
+ include/debug-opt.def@1.4, 2006-08-15 05:45:38-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 684] debug command-line options should not be shown if #undef DEBUG
+
+ ntpd/ntpd-opts.c@1.5, 2006-08-15 05:52:24-04:00, stenn@whimsy.udel.edu +29 -4
+ regenerate autogen-erated files
+
+ ntpd/ntpd-opts.h@1.5, 2006-08-15 05:52:25-04:00, stenn@whimsy.udel.edu +7 -3
+ regenerate autogen-erated files
+
+ ntpd/ntpd-opts.texi@1.6, 2006-08-15 05:52:26-04:00, stenn@whimsy.udel.edu +5 -1
+ regenerate autogen-erated files
+
+ ntpd/ntpd.1@1.5, 2006-08-15 05:52:27-04:00, stenn@whimsy.udel.edu +2 -2
+ regenerate autogen-erated files
+
+ ntpd/ntpdbase-opts.def@1.6, 2006-08-15 05:48:12-04:00, stenn@whimsy.udel.edu +1 -0
+ Make sure we are using the right version of autogen
+
+ ntpd/ntpdsim-opts.c@1.5, 2006-08-15 05:52:28-04:00, stenn@whimsy.udel.edu +29 -4
+ regenerate autogen-erated files
+
+ ntpd/ntpdsim-opts.h@1.5, 2006-08-15 05:52:29-04:00, stenn@whimsy.udel.edu +7 -3
+ regenerate autogen-erated files
+
+ ntpd/ntpdsim-opts.texi@1.5, 2006-08-15 05:52:29-04:00, stenn@whimsy.udel.edu +5 -1
+ regenerate autogen-erated files
+
+ ntpd/ntpdsim.1@1.5, 2006-08-15 05:52:30-04:00, stenn@whimsy.udel.edu +2 -2
+ regenerate autogen-erated files
+
+ ntpdc/ntpdc-opts.c@1.6, 2006-08-15 05:52:31-04:00, stenn@whimsy.udel.edu +29 -4
+ regenerate autogen-erated files
+
+ ntpdc/ntpdc-opts.h@1.6, 2006-08-15 05:52:31-04:00, stenn@whimsy.udel.edu +7 -3
+ regenerate autogen-erated files
+
+ ntpdc/ntpdc-opts.texi@1.6, 2006-08-15 05:52:32-04:00, stenn@whimsy.udel.edu +5 -1
+ regenerate autogen-erated files
+
+ ntpdc/ntpdc.1@1.6, 2006-08-15 05:52:34-04:00, stenn@whimsy.udel.edu +2 -2
+ regenerate autogen-erated files
+
+ ntpq/ntpq-opts.c@1.5, 2006-08-15 05:52:34-04:00, stenn@whimsy.udel.edu +29 -4
+ regenerate autogen-erated files
+
+ ntpq/ntpq-opts.h@1.5, 2006-08-15 05:52:35-04:00, stenn@whimsy.udel.edu +7 -3
+ regenerate autogen-erated files
+
+ ntpq/ntpq-opts.texi@1.5, 2006-08-15 05:52:36-04:00, stenn@whimsy.udel.edu +5 -1
+ regenerate autogen-erated files
+
+ ntpq/ntpq.1@1.5, 2006-08-15 05:52:36-04:00, stenn@whimsy.udel.edu +2 -2
+ regenerate autogen-erated files
+
+ sntp/sntp-opts.c@1.5, 2006-08-15 05:52:37-04:00, stenn@whimsy.udel.edu +2 -2
+ regenerate autogen-erated files
+
+ sntp/sntp-opts.h@1.5, 2006-08-15 05:52:38-04:00, stenn@whimsy.udel.edu +3 -3
+ regenerate autogen-erated files
+
+ sntp/sntp-opts.texi@1.5, 2006-08-15 05:52:38-04:00, stenn@whimsy.udel.edu +1 -1
+ regenerate autogen-erated files
+
+ sntp/sntp.1@1.8, 2006-08-15 05:52:39-04:00, stenn@whimsy.udel.edu +2 -2
+ regenerate autogen-erated files
+
+ util/ntp-keygen-opts.c@1.5, 2006-08-15 05:52:40-04:00, stenn@whimsy.udel.edu +29 -4
+ regenerate autogen-erated files
+
+ util/ntp-keygen-opts.h@1.5, 2006-08-15 05:52:40-04:00, stenn@whimsy.udel.edu +7 -3
+ regenerate autogen-erated files
+
+ util/ntp-keygen-opts.texi@1.5, 2006-08-15 05:52:41-04:00, stenn@whimsy.udel.edu +5 -1
+ regenerate autogen-erated files
+
+ util/ntp-keygen.1@1.5, 2006-08-15 05:52:42-04:00, stenn@whimsy.udel.edu +2 -2
+ regenerate autogen-erated files
+
+ChangeSet@1.1353.9.28, 2006-08-15 05:40:34-04:00, stenn@whimsy.udel.edu +1 -0
+ test -r seems more portable than test -e
+
+ sntp/Makefile.am@1.18, 2006-08-15 05:40:22-04:00, stenn@whimsy.udel.edu +1 -1
+ test -r seems more portable than test -e
+
+ChangeSet@1.1353.9.27, 2006-08-15 05:08:00-04:00, stenn@whimsy.udel.edu +1 -0
+ Make sure we use the right version of autogen
+
+ include/autogen-version.def@1.1, 2006-08-15 05:07:11-04:00, stenn@whimsy.udel.edu +1 -0
+ BitKeeper file /deacon/backroom/ntp-dev/include/autogen-version.def
+
+ include/autogen-version.def@1.0, 2006-08-15 05:07:11-04:00, stenn@whimsy.udel.edu +0 -0
+
+ChangeSet@1.1353.9.26, 2006-08-11 07:04:21-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P30
+ TAG: NTP_4_2_3P30
+
+ packageinfo.sh@1.24, 2006-08-11 07:04:18-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P30
+
+ChangeSet@1.1353.15.9, 2006-08-10 21:41:32-04:00, stenn@whimsy.udel.edu +24 -0
+ NTP_4_2_3P29
+
+ ntpd/ntpd-opts.c@1.4, 2006-08-10 21:40:58-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P29
+
+ ntpd/ntpd-opts.h@1.4, 2006-08-10 21:40:58-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P29
+
+ ntpd/ntpd-opts.texi@1.5, 2006-08-10 21:40:59-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P29
+
+ ntpd/ntpd.1@1.4, 2006-08-10 21:40:59-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P29
+
+ ntpd/ntpdsim-opts.c@1.4, 2006-08-10 21:41:00-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P29
+
+ ntpd/ntpdsim-opts.h@1.4, 2006-08-10 21:41:01-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P29
+
+ ntpd/ntpdsim-opts.texi@1.4, 2006-08-10 21:41:01-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P29
+
+ ntpd/ntpdsim.1@1.4, 2006-08-10 21:41:02-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P29
+
+ ntpdc/ntpdc-opts.c@1.5, 2006-08-10 21:41:02-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P29
+
+ ntpdc/ntpdc-opts.h@1.5, 2006-08-10 21:41:03-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P29
+
+ ntpdc/ntpdc-opts.texi@1.5, 2006-08-10 21:41:04-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P29
+
+ ntpdc/ntpdc.1@1.5, 2006-08-10 21:41:05-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P29
+
+ ntpq/ntpq-opts.c@1.4, 2006-08-10 21:41:06-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P29
+
+ ntpq/ntpq-opts.h@1.4, 2006-08-10 21:41:07-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P29
+
+ ntpq/ntpq-opts.texi@1.4, 2006-08-10 21:41:08-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P29
+
+ ntpq/ntpq.1@1.4, 2006-08-10 21:41:09-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P29
+
+ sntp/sntp-opts.c@1.4, 2006-08-10 21:41:09-04:00, stenn@whimsy.udel.edu +140 -4
+ NTP_4_2_3P29
+
+ sntp/sntp-opts.h@1.4, 2006-08-10 21:41:10-04:00, stenn@whimsy.udel.edu +83 -4
+ NTP_4_2_3P29
+
+ sntp/sntp-opts.texi@1.4, 2006-08-10 21:41:11-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P29
+
+ sntp/sntp.1@1.7, 2006-08-10 21:41:11-04:00, stenn@whimsy.udel.edu +82 -3
+ NTP_4_2_3P29
+
+ util/ntp-keygen-opts.c@1.4, 2006-08-10 21:41:12-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P29
+
+ util/ntp-keygen-opts.h@1.4, 2006-08-10 21:41:12-04:00, stenn@whimsy.udel.edu +3 -3
+ NTP_4_2_3P29
+
+ util/ntp-keygen-opts.texi@1.4, 2006-08-10 21:41:13-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P29
+
+ util/ntp-keygen.1@1.4, 2006-08-10 21:41:14-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_3P29
+
+ChangeSet@1.1251.94.48, 2006-08-10 20:37:44-04:00, stenn@whimsy.udel.edu +1 -0
+ Choose csets-{in,out} based on daemon/client
+
+ BitKeeper/triggers/send@1.11.1.1, 2006-08-10 20:37:23-04:00, stenn@whimsy.udel.edu +3 -1
+ Choose csets-{in,out} based on daemon/client
+
+ChangeSet@1.1353.15.8, 2006-08-10 20:34:50-04:00, stenn@whimsy.udel.edu +1 -0
+ Choose csets-{in,out} based on daemon/client
+
+ BitKeeper/triggers/send@1.12, 2006-08-10 20:34:36-04:00, stenn@whimsy.udel.edu +3 -1
+ Choose csets-{in,out} based on daemon/client
+
+ChangeSet@1.1353.15.7, 2006-08-10 20:29:08-04:00, stenn@whimsy.udel.edu +2 -0
+ cleanup
+
+ sntp/Makefile.am@1.17, 2006-08-10 20:28:24-04:00, stenn@whimsy.udel.edu +2 -1
+ use a run-ag that is for the sntp subdir
+
+ sntp/sntp-opts.def@1.8, 2006-08-10 20:28:51-04:00, stenn@whimsy.udel.edu +1 -1
+ Fix a typo in sntp-opts.def
+
+ChangeSet@1.1353.15.6, 2006-08-10 20:06:04-04:00, stenn@whimsy.udel.edu +1 -0
+ fix permissions on sntp-opts.menu
+
+ sntp/sntp-opts.menu@1.2, 2006-08-10 18:08:02-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ChangeSet@1.1353.15.5, 2006-08-10 17:45:44-04:00, stenn@whimsy.udel.edu +1 -0
+ Maintain sntp/version.def more quietly
+
+ sntp/Makefile.am@1.16, 2006-08-10 17:45:32-04:00, stenn@whimsy.udel.edu +2 -1
+ Maintain sntp/version.def more quietly
+
+ChangeSet@1.1353.15.4, 2006-08-10 17:24:38-04:00, stenn@whimsy.udel.edu +1 -0
+ Use the new name of the sntp/COPYRIGHT file
+
+ sntp/sntp-opts.def@1.7, 2006-08-10 17:24:13-04:00, stenn@whimsy.udel.edu +1 -1
+ Use the new name of the sntp/COPYRIGHT file
+
+ChangeSet@1.1353.15.3, 2006-08-10 16:53:20-04:00, stenn@whimsy.udel.edu +6 -0
+ [Bug 683] fix version number string mismatches
+
+ ntpd/Makefile.am@1.49, 2006-08-10 16:52:04-04:00, stenn@whimsy.udel.edu +9 -6
+ [Bug 683] fix version number string mismatches
+
+ ntpdc/Makefile.am@1.31, 2006-08-10 16:52:04-04:00, stenn@whimsy.udel.edu +6 -3
+ [Bug 683] fix version number string mismatches
+
+ ntpq/Makefile.am@1.23, 2006-08-10 16:52:05-04:00, stenn@whimsy.udel.edu +6 -3
+ [Bug 683] fix version number string mismatches
+
+ sntp/Makefile.am@1.15, 2006-08-10 16:52:05-04:00, stenn@whimsy.udel.edu +15 -4
+ [Bug 683] fix version number string mismatches
+
+ sntp/sntp-opts.def@1.6, 2006-08-10 16:52:44-04:00, stenn@whimsy.udel.edu +2 -5
+ [Bug 683] fix version number string mismatches
+
+ util/Makefile.am@1.32, 2006-08-10 16:52:06-04:00, stenn@whimsy.udel.edu +6 -3
+ [Bug 683] fix version number string mismatches
+
+ChangeSet@1.1353.15.2, 2006-08-10 16:45:30-04:00, stenn@whimsy.udel.edu +1 -0
+ Rename sntp/Copyright to sntp/COPYRIGHT
+
+ sntp/COPYRIGHT@1.2, 2006-08-10 16:29:50-04:00, stenn@whimsy.udel.edu +0 -0
+ Rename: sntp/Copyright -> sntp/COPYRIGHT
+
+ChangeSet@1.1353.15.1, 2006-08-10 07:03:21-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P29
+ TAG: NTP_4_2_3P29
+
+ packageinfo.sh@1.23, 2006-08-10 07:03:19-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P29
+
+ChangeSet@1.1353.14.1, 2006-08-10 09:40:07+00:00, burnicki@pogo.udel.edu +1 -0
+ Changes by Heiko <heiko.gerstung@meinberg.de>:
+ Fixed point/rcpoint handling which resulted in wrong version strings.
+
+ ports/winnt/scripts/mkver.bat@1.9, 2006-08-10 09:40:04+00:00, burnicki@pogo.udel.edu +32 -4
+ Changes by Heiko <heiko.gerstung@meinberg.de>:
+ Fixed point/rcpoint handling which resulted in wrong version strings.
+
+ChangeSet@1.1353.9.23, 2006-08-10 08:40:06+00:00, burnicki@pogo.udel.edu +2 -0
+ Exclude debug features if building without debug.
+ Removed obsolete prototype for ntpd_usage().
+
+ include/ntp_cmdargs.h@1.4, 2006-08-10 08:40:04+00:00, burnicki@pogo.udel.edu +0 -1
+ Removed ntpd_usage() prototype which is obsolete.
+
+ ports/winnt/ntpd/ntservice.c@1.7, 2006-08-10 08:40:04+00:00, burnicki@pogo.udel.edu +2 -0
+ Exclude debug features if building without debug.
+
+ChangeSet@1.1353.13.3, 2006-08-10 01:02:20-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 659] Get the latest windows patches for libopts
+
+ libopts/compat/compat.h@1.6, 2006-08-10 01:02:08-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 659] Get the latest windows patches for libopts
+
+ChangeSet@1.1353.13.2, 2006-08-10 00:57:53-04:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 659] Get the latest windows patches for libopts
+
+ sntp/libopts/compat/compat.h@1.5, 2006-08-10 00:57:34-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 659] Get the latest windows patches for liboptslibopts/compat/compat.h
+
+ libopts/m4/libopts.m4@1.6, 2006-08-10 00:57:33-04:00, stenn@whimsy.udel.edu +2 -1
+ [Bug 659] Get the latest windows patches for liboptslibopts/compat/compat.h
+
+ sntp/libopts/m4/libopts.m4@1.6, 2006-08-10 00:57:35-04:00, stenn@whimsy.udel.edu +2 -1
+ [Bug 659] Get the latest windows patches for liboptslibopts/compat/compat.h
+
+ChangeSet@1.1353.13.1, 2006-08-10 00:53:59-04:00, stenn@whimsy.udel.edu +1 -0
+ Replace the #ifdef DEBUG that got undone by Danny's recent patch
+
+ ntpd/ntp_io.c@1.234.1.3, 2006-08-10 00:53:37-04:00, stenn@whimsy.udel.edu +5 -1
+ Replace the #ifdef DEBUG that got undone by Danny's recent patch
+
+ChangeSet@1.1353.12.1, 2006-08-09 21:57:02-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #659: to allow --help through and not start services
+
+ ports/winnt/ntpd/ntservice.c@1.6, 2006-08-09 21:56:29-04:00, mayer@pogo.udel.edu +2 -2
+ Bug #659: to allow --help through and not start services
+
+ChangeSet@1.1353.9.19, 2006-08-09 18:28:43-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 682] add --disable-debugging to the test build mix
+
+ build@1.23, 2006-08-09 18:28:30-04:00, stenn@whimsy.udel.edu +6 -0
+ [Bug 682] add --disable-debugging to the test build mix
+
+ flock-build@1.37, 2006-08-09 18:28:31-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 682] add --disable-debugging to the test build mix
+
+ChangeSet@1.1251.94.47, 2006-08-09 18:24:30-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 682] add --disable-debugging to the test build mix
+
+ build@1.21.1.1, 2006-08-09 18:24:18-04:00, stenn@whimsy.udel.edu +6 -0
+ [Bug 682] add --disable-debugging to the test build mix
+
+ flock-build@1.35.1.1, 2006-08-09 18:24:19-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 682] add --disable-debugging to the test build mix
+
+ChangeSet@1.1353.9.18, 2006-08-09 07:02:54-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P28
+ TAG: NTP_4_2_3P28
+
+ packageinfo.sh@1.22, 2006-08-09 07:02:52-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P28
+
+ChangeSet@1.1353.9.17, 2006-08-08 22:38:19-04:00, mayer@pogo.udel.edu +2 -0
+ bug #671: setsockopt needs macro for Windows
+
+ ntpd/ntp_io.c@1.234.1.2, 2006-08-08 22:37:40-04:00, mayer@pogo.udel.edu +11 -6
+ bug #671: setsockopt needs macro for Windows
+
+ ports/winnt/include/config.h@1.42, 2006-08-08 22:37:40-04:00, mayer@pogo.udel.edu +1 -0
+ bug #671: setsockopt needs macro for Windows
+
+ChangeSet@1.1353.11.1, 2006-08-08 11:32:15-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #659: New include file for windows for handling file stat
+
+ ports/winnt/include/isc/stat.h@1.1, 2006-08-08 11:31:23-04:00, mayer@pogo.udel.edu +66 -0
+ BitKeeper file /pogo/users/mayer/ntp-dev/ports/winnt/include/isc/stat.h
+
+ ports/winnt/include/isc/stat.h@1.0, 2006-08-08 11:31:23-04:00, mayer@pogo.udel.edu +0 -0
+
+ChangeSet@1.1353.9.15, 2006-08-08 07:03:46-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P27
+ TAG: NTP_4_2_3P27
+
+ packageinfo.sh@1.21, 2006-08-08 07:03:43-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P27
+
+ChangeSet@1.1353.9.14, 2006-08-08 04:12:04-04:00, stenn@whimsy.udel.edu +7 -0
+ [Bug 675]: Make sure we build even when we --disable-debugging
+
+ ntpd/ntp_intres.c@1.48, 2006-08-08 04:11:04-04:00, stenn@whimsy.udel.edu +4 -0
+ [Bug 675]: Make sure we build even when we --disable-debugging
+
+ ntpd/ntp_io.c@1.234.1.1, 2006-08-08 04:11:05-04:00, stenn@whimsy.udel.edu +5 -1
+ [Bug 675]: Make sure we build even when we --disable-debugging
+
+ ntpd/refclock_jupiter.c@1.20, 2006-08-08 04:11:07-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 675]: Make sure we build even when we --disable-debugging
+
+ ntpd/refclock_leitch.c@1.8, 2006-08-08 04:11:09-04:00, stenn@whimsy.udel.edu +11 -5
+ [Bug 675]: Make sure we build even when we --disable-debugging
+
+ ntpd/refclock_msfees.c@1.12, 2006-08-08 04:11:09-04:00, stenn@whimsy.udel.edu +28 -27
+ [Bug 675]: Make sure we build even when we --disable-debugging
+
+ ntpd/refclock_mx4200.c@1.22, 2006-08-08 04:11:10-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 675]: Make sure we build even when we --disable-debugging
+
+ ntpd/refclock_oncore.c@1.60, 2006-08-08 04:11:11-04:00, stenn@whimsy.udel.edu +34 -10
+ [Bug 675]: Make sure we build even when we --disable-debugging
+
+ChangeSet@1.1353.9.13, 2006-08-07 18:41:58-04:00, stenn@whimsy.udel.edu +2 -0
+ Fix #include <sys/mman.h> breakage
+
+ libopts/compat/compat.h@1.5, 2006-08-07 18:41:15-04:00, stenn@whimsy.udel.edu +3 -1
+ Fix sys/mman.h breakage
+
+ sntp/libopts/compat/compat.h@1.4, 2006-08-07 18:41:15-04:00, stenn@whimsy.udel.edu +3 -1
+ Fix sys/mman.h breakage
+
+ChangeSet@1.1353.9.12, 2006-08-07 09:32:49-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #659 mman.h not always available
+
+ libopts/compat/compat.h@1.4, 2006-08-07 09:32:42-04:00, mayer@pogo.udel.edu +2 -2
+ Bug #659 mman.h not always available
+
+ChangeSet@1.1353.9.11, 2006-08-07 08:51:39-04:00, mayer@pogo.udel.edu +6 -0
+ bug #659: Changes to support libopts on Windows
+
+ ports/winnt/include/config.h@1.41, 2006-08-07 08:42:01-04:00, mayer@pogo.udel.edu +36 -1
+ bug #659: Changes to support libopts on Windows
+
+ ports/winnt/libntp/libntp.dsp@1.30, 2006-08-07 08:42:01-04:00, mayer@pogo.udel.edu +6 -2
+ bug #659: Changes to support libopts on Windows
+
+ ports/winnt/ntp-keygen/ntpkeygen.dsp@1.11, 2006-08-07 08:42:01-04:00, mayer@pogo.udel.edu +8 -4
+ bug #659: Changes to support libopts on Windows
+
+ ports/winnt/ntpd/ntpd.dsp@1.28, 2006-08-07 08:42:01-04:00, mayer@pogo.udel.edu +6 -2
+ bug #659: Changes to support libopts on Windows
+
+ ports/winnt/ntpdc/ntpdc.dsp@1.18, 2006-08-07 08:42:01-04:00, mayer@pogo.udel.edu +6 -2
+ bug #659: Changes to support libopts on Windows
+
+ ports/winnt/ntpq/ntpq.dsp@1.19, 2006-08-07 08:42:01-04:00, mayer@pogo.udel.edu +8 -4
+ bug #659: Changes to support libopts on Windows
+
+ChangeSet@1.1353.9.10, 2006-08-06 07:03:05-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P26
+ TAG: NTP_4_2_3P26
+
+ packageinfo.sh@1.20, 2006-08-06 07:03:02-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P26
+
+ChangeSet@1.1353.9.9, 2006-08-05 21:31:02-04:00, stenn@whimsy.udel.edu +1 -0
+ NEWS: Support separate PPS devices for PARSE refclocks
+
+ NEWS@1.58, 2006-08-05 21:30:52-04:00, stenn@whimsy.udel.edu +1 -0
+ NEWS: Support separate PPS devices for PARSE refclocks
+
+ChangeSet@1.1251.94.46, 2006-08-05 15:44:40-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P3
+ TAG: NTP_4_2_2P3
+
+ packageinfo.sh@1.27.16.1, 2006-08-05 15:44:38-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_2P3
+
+ChangeSet@1.1353.10.1, 2006-08-05 07:05:02-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P25
+ TAG: NTP_4_2_3P25
+
+ packageinfo.sh@1.19, 2006-08-05 07:04:56-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P25
+
+ChangeSet@1.1353.9.7, 2006-08-05 09:01:42+00:00, kardel@pogo.udel.edu +2 -0
+ driver8.html:
+ document additional Meinberg clock mode
+ document optionally separate PPS device (/dev/refclockpps-{0..3})
+ refclock_parse.c:
+ support optionally separate PPS devices via /dev/refclockpps-{0..3}
+
+ html/drivers/driver8.html@1.19, 2006-08-05 08:59:00+00:00, kardel@pogo.udel.edu +12 -9
+ document additional Meinberg clock mode
+ document optionally separate PPS device (/dev/refclockpps-{0..3})
+
+ ntpd/refclock_parse.c@1.46, 2006-08-05 08:58:19+00:00, kardel@pogo.udel.edu +57 -29
+ support optionally separate PPS devices via /dev/refclockpps-{0..3}
+
+ChangeSet@1.1353.9.6, 2006-08-05 02:10:36-04:00, stenn@whimsy.udel.edu +2 -0
+ Fixes from Dave.
+
+ ntpd/ntp_loopfilter.c@1.124, 2006-08-05 02:10:29-04:00, stenn@whimsy.udel.edu +22 -22
+ Dave sez:
+
+ At cold start (no frequency file) the daemon sets the clock at the
+ first update, then waits 15 minutes, measures and corrects the
+ frequency (usually within 1 PPM) and assumes normal operation. This
+ saves many hours to converge the frequency within 1 PPM, especially
+ if the intrinsic frequency error is large, like 200 PPM.
+
+ Until the frequency is corrected, the machine can have serious
+ offset and frequency errors that would drive dependent clients nuts.
+ Up to now, the leap bits and stratum were not initialized until the
+ frequency was corrected. However, the clock was set and local clients
+ were free to believe or not believe the clock. After review, the
+ external behavior is only mildly worse than without the initial
+ training period, so the leap bits and stratum are now set at the
+ first update. The billboards should now be consistent with the
+ Principle of Least Astonishment.
+
+ ntpd/ntp_proto.c@1.246, 2006-08-05 02:10:31-04:00, stenn@whimsy.udel.edu +19 -15
+ Dave sez:
+
+ At cold start (no frequency file) the daemon sets the clock at the
+ first update, then waits 15 minutes, measures and corrects the
+ frequency (usually within 1 PPM) and assumes normal operation. This
+ saves many hours to converge the frequency within 1 PPM, especially
+ if the intrinsic frequency error is large, like 200 PPM.
+
+ Until the frequency is corrected, the machine can have serious
+ offset and frequency errors that would drive dependent clients nuts.
+ Up to now, the leap bits and stratum were not initialized until the
+ frequency was corrected. However, the clock was set and local clients
+ were free to believe or not believe the clock. After review, the
+ external behavior is only mildly worse than without the initial
+ training period, so the leap bits and stratum are now set at the
+ first update. The billboards should now be consistent with the
+ Principle of Least Astonishment.
+
+ChangeSet@1.1353.9.5, 2006-08-05 01:27:50-04:00, stenn@whimsy.udel.edu +2 -0
+ Added uint_t check to libopts.m4
+
+ libopts/m4/libopts.m4@1.5, 2006-08-05 01:27:37-04:00, stenn@whimsy.udel.edu +1 -1
+ Added uint_t check to libopts.m4
+
+ sntp/libopts/m4/libopts.m4@1.5, 2006-08-05 01:27:38-04:00, stenn@whimsy.udel.edu +1 -1
+ Added uint_t check to libopts.m4
+
+ChangeSet@1.1251.94.45, 2006-08-05 00:52:33-04:00, stenn@whimsy.udel.edu +1 -0
+ Use the new format for the "send" emails
+
+ BitKeeper/triggers/send@1.11, 2006-08-05 00:52:03-04:00, stenn@whimsy.udel.edu +1 -4
+ Use the new format for the "send" emails
+
+ChangeSet@1.1353.9.3, 2006-08-05 00:38:57-04:00, stenn@whimsy.udel.edu +1 -0
+ copy new packageinfo from -stable
+
+ packageinfo.sh@1.18, 2006-08-05 00:38:34-04:00, stenn@whimsy.udel.edu +4 -3
+ copy new packageinfo from -stable
+
+ChangeSet@1.1251.94.44, 2006-08-04 21:46:01-04:00, stenn@whimsy.udel.edu +2 -0
+ ready for release
+
+ packageinfo.sh@1.27.15.2, 2006-08-04 21:45:50-04:00, stenn@whimsy.udel.edu +6 -6
+ ready for release
+
+ scripts/genChangeLog@1.2, 2006-08-04 16:18:47-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rwxrwxr-x
+
+ChangeSet@1.1251.94.43, 2006-08-04 16:00:28-04:00, stenn@whimsy.udel.edu +3 -0
+ Clean up the ChangeLog generation
+
+ Makefile.am@1.48.1.7, 2006-08-04 15:59:20-04:00, stenn@whimsy.udel.edu +3 -5
+ Clean up the ChangeLog generation
+
+ scripts/Makefile.am@1.14, 2006-08-04 15:59:21-04:00, stenn@whimsy.udel.edu +3 -2
+ Clean up the ChangeLog generation
+
+ scripts/genChangeLog@1.1, 2006-08-04 15:39:21-04:00, stenn@whimsy.udel.edu +7 -0
+ BitKeeper file /deacon/backroom/ntp-stable/scripts/genChangeLog
+
+ scripts/genChangeLog@1.0, 2006-08-04 15:39:21-04:00, stenn@whimsy.udel.edu +0 -0
+
+ChangeSet@1.1353.9.1, 2006-08-03 07:03:51-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P24
+ TAG: NTP_4_2_3P24
+
+ packageinfo.sh@1.17, 2006-08-03 07:03:48-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P24
+
+ChangeSet@1.1353.1.96, 2006-08-02 20:21:23-04:00, stenn@whimsy.udel.edu +24 -0
+ autogen upgrade
+
+ ntpd/ntpd-opts.c@1.3, 2006-08-02 20:20:38-04:00, stenn@whimsy.udel.edu +37 -15
+ autogen upgrade
+
+ ntpd/ntpd-opts.c@1.2, 2006-08-02 19:36:53-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpd/ntpd-opts.h@1.3, 2006-08-02 20:20:40-04:00, stenn@whimsy.udel.edu +21 -10
+ autogen upgrade
+
+ ntpd/ntpd-opts.h@1.2, 2006-08-02 19:36:54-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpd/ntpd-opts.texi@1.4, 2006-08-02 20:20:40-04:00, stenn@whimsy.udel.edu +1 -1
+ autogen upgrade
+
+ ntpd/ntpd-opts.texi@1.3, 2006-08-02 19:36:56-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpd/ntpd.1@1.3, 2006-08-02 20:20:41-04:00, stenn@whimsy.udel.edu +33 -33
+ autogen upgrade
+
+ ntpd/ntpd.1@1.2, 2006-08-02 19:36:57-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpd/ntpdsim-opts.c@1.3, 2006-08-02 20:20:42-04:00, stenn@whimsy.udel.edu +37 -15
+ autogen upgrade
+
+ ntpd/ntpdsim-opts.c@1.2, 2006-08-02 19:36:58-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpd/ntpdsim-opts.h@1.3, 2006-08-02 20:20:43-04:00, stenn@whimsy.udel.edu +21 -10
+ autogen upgrade
+
+ ntpd/ntpdsim-opts.h@1.2, 2006-08-02 19:37:00-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpd/ntpdsim-opts.texi@1.3, 2006-08-02 20:20:44-04:00, stenn@whimsy.udel.edu +4 -4
+ autogen upgrade
+
+ ntpd/ntpdsim-opts.texi@1.2, 2006-08-02 19:37:02-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpd/ntpdsim.1@1.3, 2006-08-02 20:20:45-04:00, stenn@whimsy.udel.edu +42 -42
+ autogen upgrade
+
+ ntpd/ntpdsim.1@1.2, 2006-08-02 19:37:04-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpdc/ntpdc-opts.c@1.4, 2006-08-02 20:20:46-04:00, stenn@whimsy.udel.edu +2 -4
+ autogen upgrade
+
+ ntpdc/ntpdc-opts.c@1.3, 2006-08-02 19:37:06-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpdc/ntpdc-opts.h@1.4, 2006-08-02 20:20:47-04:00, stenn@whimsy.udel.edu +5 -4
+ autogen upgrade
+
+ ntpdc/ntpdc-opts.h@1.3, 2006-08-02 19:37:07-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpdc/ntpdc-opts.texi@1.4, 2006-08-02 20:20:47-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ ntpdc/ntpdc-opts.texi@1.3, 2006-08-02 19:37:09-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpdc/ntpdc.1@1.4, 2006-08-02 20:20:48-04:00, stenn@whimsy.udel.edu +2 -2
+ autogen upgrade
+
+ ntpdc/ntpdc.1@1.3, 2006-08-02 19:37:10-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpq/ntpq-opts.c@1.3, 2006-08-02 20:20:48-04:00, stenn@whimsy.udel.edu +38 -250
+ autogen upgrade
+
+ ntpq/ntpq-opts.c@1.2, 2006-08-02 19:37:12-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpq/ntpq-opts.h@1.3, 2006-08-02 20:20:49-04:00, stenn@whimsy.udel.edu +21 -10
+ autogen upgrade
+
+ ntpq/ntpq-opts.h@1.2, 2006-08-02 19:37:13-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpq/ntpq-opts.texi@1.3, 2006-08-02 20:20:49-04:00, stenn@whimsy.udel.edu +5 -244
+ autogen upgrade
+
+ ntpq/ntpq-opts.texi@1.2, 2006-08-02 19:37:14-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ ntpq/ntpq.1@1.3, 2006-08-02 20:20:50-04:00, stenn@whimsy.udel.edu +16 -16
+ autogen upgrade
+
+ ntpq/ntpq.1@1.2, 2006-08-02 19:37:17-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ sntp/sntp-opts.c@1.3, 2006-08-02 20:20:51-04:00, stenn@whimsy.udel.edu +40 -260
+ autogen upgrade
+
+ sntp/sntp-opts.c@1.2, 2006-08-02 19:37:19-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ sntp/sntp-opts.h@1.3, 2006-08-02 20:20:52-04:00, stenn@whimsy.udel.edu +21 -10
+ autogen upgrade
+
+ sntp/sntp-opts.h@1.2, 2006-08-02 19:37:22-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ sntp/sntp-opts.texi@1.3, 2006-08-02 20:20:52-04:00, stenn@whimsy.udel.edu +4 -248
+ autogen upgrade
+
+ sntp/sntp-opts.texi@1.2, 2006-08-02 19:37:24-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ sntp/sntp.1@1.6, 2006-08-02 20:20:53-04:00, stenn@whimsy.udel.edu +129 -64
+ autogen upgrade
+
+ sntp/sntp.1@1.5, 2006-08-02 19:37:26-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ util/ntp-keygen-opts.c@1.3, 2006-08-02 20:20:54-04:00, stenn@whimsy.udel.edu +54 -36
+ autogen upgrade
+
+ util/ntp-keygen-opts.c@1.2, 2006-08-02 19:37:29-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ util/ntp-keygen-opts.h@1.3, 2006-08-02 20:20:55-04:00, stenn@whimsy.udel.edu +21 -10
+ autogen upgrade
+
+ util/ntp-keygen-opts.h@1.2, 2006-08-02 19:37:30-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ util/ntp-keygen-opts.texi@1.3, 2006-08-02 20:20:56-04:00, stenn@whimsy.udel.edu +3 -3
+ autogen upgrade
+
+ util/ntp-keygen-opts.texi@1.2, 2006-08-02 19:37:32-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ util/ntp-keygen.1@1.3, 2006-08-02 20:20:56-04:00, stenn@whimsy.udel.edu +23 -23
+ autogen upgrade
+
+ util/ntp-keygen.1@1.2, 2006-08-02 19:37:33-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ChangeSet@1.1353.1.95, 2006-08-01 18:03:38+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ Bug 678:
+ make size of control message buffer configurable if
+ needbe. use lower default of 1536 bytes as qnx couldn't
+ cope with 5120 bytes and we are not really expecting
+ long control messages.
+ qnx limit is around 1900 bytes - qnx analysed by
+ Michael Tatarinov - thanks
+
+ ntpd/ntp_io.c@1.234, 2006-08-01 17:59:17+00:00, kardel@pogo.udel.edu +4 -1
+ Bug 678:
+ make size of control message buffer configurable if
+ needbe. use lower default of 1536 bytes as qnx couldn't
+ cope with 5120 bytes and we are not really expecting
+ long control messages.
+ qnx limit is around 1900 bytes - qnx analysed by
+ Michael Tatarinov - thanks
+
+ChangeSet@1.1353.1.94, 2006-08-01 06:41:31+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ Bug 676:
+ Correct name buffer size calculation. Found
+ by Michael Tatarinov - thanks!
+
+ ntpd/ntp_io.c@1.233, 2006-08-01 06:40:29+00:00, kardel@pogo.udel.edu +1 -1
+ Bug 676:
+ Correct name buffer size calculation. Found
+ by Michael Tatarinov - thanks!
+
+ChangeSet@1.1353.1.93, 2006-07-29 07:02:56-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P23
+ TAG: NTP_4_2_3P23
+
+ packageinfo.sh@1.16, 2006-07-29 07:02:54-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P23
+
+ChangeSet@1.1353.1.92, 2006-07-28 22:30:05-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 659] Move large "detail" description to "prog-man-descrip"
+
+ ntpq/ntpq-opts.def@1.9, 2006-07-28 22:29:50-04:00, stenn@whimsy.udel.edu +12 -1
+ [Bug 659] Move large "detail" description to "prog-man-descrip"
+
+ sntp/sntp-opts.def@1.5, 2006-07-28 22:29:50-04:00, stenn@whimsy.udel.edu +15 -4
+ [Bug 659] Move large "detail" description to "prog-man-descrip"
+
+ChangeSet@1.1353.1.91, 2006-07-28 07:42:56-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P22
+ TAG: NTP_4_2_3P22
+
+ packageinfo.sh@1.15, 2006-07-28 07:42:53-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P22
+
+ChangeSet@1.1251.94.42, 2006-07-28 07:02:21-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P3
+ TAG: NTP_4_2_2P3
+
+ packageinfo.sh@1.27.15.1, 2006-07-28 07:02:18-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P3
+
+ChangeSet@1.1251.94.41, 2006-07-28 01:28:32-04:00, stenn@whimsy.udel.edu +1 -0
+ Ready for release
+
+ packageinfo.sh@1.27.14.2, 2006-07-28 01:28:25-04:00, stenn@whimsy.udel.edu +1 -1
+ Ready for release
+
+ChangeSet@1.1251.94.40, 2006-07-28 01:20:54-04:00, stenn@whimsy.udel.edu +2 -0
+ Ready for release
+
+ packageinfo.sh@1.27.14.1, 2006-07-28 01:20:39-04:00, stenn@whimsy.udel.edu +3 -3
+ Ready for release
+
+ NEWS@1.50.1.5, 2006-07-28 01:20:39-04:00, stenn@whimsy.udel.edu +30 -27
+ Ready for release
+
+ChangeSet@1.1353.1.89, 2006-07-28 00:57:01-04:00, stenn@whimsy.udel.edu +12 -0
+ libopts-27.4.2
+
+ libopts/m4/libopts.m4@1.4, 2006-07-28 00:52:00-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.2
+
+ sntp/libopts/m4/libopts.m4@1.4, 2006-07-28 00:55:02-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.2
+
+ libopts/makeshell.c@1.4, 2006-07-28 00:51:31-04:00, stenn@whimsy.udel.edu +9 -9
+ libopts-27.4.2
+
+ sntp/libopts/makeshell.c@1.4, 2006-07-28 00:52:22-04:00, stenn@whimsy.udel.edu +9 -9
+ libopts-27.4.2
+
+ libopts/proto.h@1.4, 2006-07-28 00:51:32-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.2
+
+ sntp/libopts/proto.h@1.4, 2006-07-28 00:52:24-04:00, stenn@whimsy.udel.edu +1 -1
+ libopts-27.4.2
+
+ libopts/compat/snprintf.c@1.2, 2006-07-28 00:56:19-04:00, stenn@whimsy.udel.edu +28 -4
+ libopts-27.4.2
+
+ sntp/libopts/compat/snprintf.c@1.2, 2006-07-28 00:52:33-04:00, stenn@whimsy.udel.edu +28 -4
+ libopts-27.4.2
+
+ libopts/streqvcmp.c@1.3, 2006-07-28 00:51:34-04:00, stenn@whimsy.udel.edu +3 -5
+ libopts-27.4.2
+
+ sntp/libopts/streqvcmp.c@1.3, 2006-07-28 00:52:26-04:00, stenn@whimsy.udel.edu +3 -5
+ libopts-27.4.2
+
+ libopts/version.c@1.3, 2006-07-28 00:51:35-04:00, stenn@whimsy.udel.edu +4 -8
+ libopts-27.4.2
+
+ sntp/libopts/version.c@1.3, 2006-07-28 00:52:27-04:00, stenn@whimsy.udel.edu +4 -8
+ libopts-27.4.2
+
+ChangeSet@1.1251.94.39, 2006-07-27 22:13:37-04:00, stenn@whimsy.udel.edu +1 -0
+ NEWS: updated
+
+ NEWS@1.50.1.4, 2006-07-27 22:13:28-04:00, stenn@whimsy.udel.edu +21 -2
+ NEWS: updated
+
+ChangeSet@1.1251.94.38, 2006-07-27 22:07:57-04:00, stenn@whimsy.udel.edu +1 -0
+ Makefile.am: add a rule to generate the ChangeLog
+
+ Makefile.am@1.48.1.6, 2006-07-27 22:07:42-04:00, stenn@whimsy.udel.edu +9 -1
+ Makefile.am: add a rule to generate the ChangeLog
+
+ChangeSet@1.1353.1.87, 2006-07-26 08:19:28-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P21
+ TAG: NTP_4_2_3P21
+
+ packageinfo.sh@1.14, 2006-07-26 08:19:23-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P21
+
+ChangeSet@1.1251.94.37, 2006-07-26 07:02:51-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P3_RC2
+ TAG: NTP_4_2_2P3_RC2
+
+ packageinfo.sh@1.27.13.1, 2006-07-26 07:02:46-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P3_RC2
+
+ChangeSet@1.1353.1.86, 2006-07-26 06:34:06-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 660] Solaris wants _XOPEN_SOURCE, __EXTENSIONS__, and -lxnet -lsocket
+
+ configure.ac@1.388.1.4, 2006-07-26 06:33:48-04:00, stenn@whimsy.udel.edu +10 -3
+ [Bug 660] Solaris wants _XOPEN_SOURCE, __EXTENSIONS__, and -lxnet -lsocket
+
+ChangeSet@1.1353.1.85, 2006-07-26 04:16:13-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 638] STREAMS_TLI is no longer needed
+
+ configure.ac@1.388.1.3, 2006-07-26 04:16:02-04:00, stenn@whimsy.udel.edu +0 -20
+ [Bug 638] STREAMS_TLI is no longer needed
+
+ChangeSet@1.1251.94.36, 2006-07-26 03:53:28-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 601] ntpq's decodeint uses an extra level of indiraction
+
+ ntpq/ntpq.c@1.55.1.7, 2006-07-26 03:53:14-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 601] ntpq's decodeint uses an extra level of indiraction
+
+ChangeSet@1.1251.94.35, 2006-07-26 02:56:32-04:00, stenn@whimsy.udel.edu +1 -0
+ Don't do anything in a RESYNC repo
+
+ BitKeeper/triggers/send@1.10, 2006-07-26 02:56:23-04:00, stenn@whimsy.udel.edu +6 -0
+ Don't do anything in a RESYNC repo
+
+ChangeSet@1.1251.94.34, 2006-07-26 02:34:51-04:00, stenn@whimsy.udel.edu +1 -0
+ Test the -m option in the send trigger
+
+ BitKeeper/triggers/send@1.9, 2006-07-26 02:34:40-04:00, stenn@whimsy.udel.edu +4 -1
+ Test the -m option in the send trigger
+
+ChangeSet@1.1353.1.81, 2006-07-26 01:04:24-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 479] -P needs to set priority_done=0
+
+ ntpd/ntpd.c@1.80, 2006-07-26 00:16:05-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 479] -P needs to set priority_done=0
+
+ChangeSet@1.1353.1.80, 2006-07-26 00:55:28-04:00, stenn@whimsy.udel.edu +5 -0
+ AutoOpts cleanup - common .def entries are already in copyright.def
+
+ ntpd/ntpd-opts.def@1.5, 2006-07-26 00:55:23-04:00, stenn@whimsy.udel.edu +0 -3
+ common .def entries are already in copyright.def
+
+ ntpd/ntpd-opts.texi@1.2, 2006-07-26 00:55:23-04:00, stenn@whimsy.udel.edu +4 -4
+ Updated
+
+ ntpd/ntpdsim-opts.def@1.5, 2006-07-26 00:55:24-04:00, stenn@whimsy.udel.edu +0 -3
+ common .def entries are already in copyright.def
+
+ ntpq/ntpq-opts.def@1.8, 2006-07-25 06:08:56-04:00, stenn@whimsy.udel.edu +0 -3
+ common .def entries are already in copyright.def
+
+ util/ntp-keygen-opts.def@1.5, 2006-07-25 06:06:53-04:00, stenn@whimsy.udel.edu +0 -3
+ common .def entries are already in copyright.def
+
+ChangeSet@1.1353.1.79, 2006-07-23 07:03:50-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P20
+ TAG: NTP_4_2_3P20
+
+ packageinfo.sh@1.13, 2006-07-23 07:03:48-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P20
+
+ChangeSet@1.1353.1.78, 2006-07-22 23:35:43-04:00, stenn@whimsy.udel.edu +42 -0
+ windows-config.h:
+ BitKeeper file /deacon/backroom/ntp-dev/sntp/libopts/compat/windows-config.h
+ BitKeeper file /deacon/backroom/ntp-dev/libopts/compat/windows-config.h
+ Many files:
+ Upgrade to libopts-27.4.2
+
+ libopts/Makefile.am@1.3, 2006-07-22 23:28:42-04:00, stenn@whimsy.udel.edu +14 -14
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/Makefile.am@1.3, 2006-07-22 23:34:06-04:00, stenn@whimsy.udel.edu +14 -14
+ Upgrade to libopts-27.4.2
+
+ libopts/autoopts.c@1.3, 2006-07-22 23:28:42-04:00, stenn@whimsy.udel.edu +7 -9
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/autoopts.c@1.3, 2006-07-22 23:34:07-04:00, stenn@whimsy.udel.edu +7 -9
+ Upgrade to libopts-27.4.2
+
+ libopts/autoopts.h@1.3, 2006-07-22 23:28:43-04:00, stenn@whimsy.udel.edu +7 -8
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/autoopts.h@1.3, 2006-07-22 23:34:07-04:00, stenn@whimsy.udel.edu +7 -8
+ Upgrade to libopts-27.4.2
+
+ libopts/compat/compat.h@1.3, 2006-07-22 23:33:15-04:00, stenn@whimsy.udel.edu +25 -9
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/compat/compat.h@1.3, 2006-07-22 23:34:19-04:00, stenn@whimsy.udel.edu +25 -9
+ Upgrade to libopts-27.4.2
+
+ libopts/configfile.c@1.3, 2006-07-22 23:28:44-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/configfile.c@1.3, 2006-07-22 23:34:08-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.2
+
+ libopts/genshell.c@1.2, 2006-07-22 23:28:46-04:00, stenn@whimsy.udel.edu +50 -10
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/genshell.c@1.2, 2006-07-22 23:34:10-04:00, stenn@whimsy.udel.edu +50 -10
+ Upgrade to libopts-27.4.2
+
+ libopts/genshell.h@1.2, 2006-07-22 23:28:46-04:00, stenn@whimsy.udel.edu +21 -10
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/genshell.h@1.2, 2006-07-22 23:34:10-04:00, stenn@whimsy.udel.edu +21 -10
+ Upgrade to libopts-27.4.2
+
+ libopts/libopts.c@1.3, 2006-07-22 23:28:47-04:00, stenn@whimsy.udel.edu +0 -1
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/libopts.c@1.3, 2006-07-22 23:34:11-04:00, stenn@whimsy.udel.edu +0 -1
+ Upgrade to libopts-27.4.2
+
+ libopts/m4/libopts.m4@1.3, 2006-07-22 23:33:17-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/m4/libopts.m4@1.3, 2006-07-22 23:34:21-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.2
+
+ libopts/load.c@1.3, 2006-07-22 23:28:47-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/load.c@1.3, 2006-07-22 23:34:11-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.2
+
+ libopts/makeshell.c@1.3, 2006-07-22 23:28:48-04:00, stenn@whimsy.udel.edu +11 -2
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/makeshell.c@1.3, 2006-07-22 23:34:12-04:00, stenn@whimsy.udel.edu +11 -2
+ Upgrade to libopts-27.4.2
+
+ libopts/autoopts/options.h@1.3, 2006-07-22 23:33:13-04:00, stenn@whimsy.udel.edu +64 -62
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/autoopts/options.h@1.3, 2006-07-22 23:34:18-04:00, stenn@whimsy.udel.edu +64 -62
+ Upgrade to libopts-27.4.2
+
+ libopts/compat/pathfind.c@1.3, 2006-07-22 23:33:15-04:00, stenn@whimsy.udel.edu +12 -3
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/compat/pathfind.c@1.3, 2006-07-22 23:34:20-04:00, stenn@whimsy.udel.edu +12 -3
+ Upgrade to libopts-27.4.2
+
+ libopts/pgusage.c@1.3, 2006-07-22 23:28:49-04:00, stenn@whimsy.udel.edu +7 -3
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/pgusage.c@1.3, 2006-07-22 23:34:13-04:00, stenn@whimsy.udel.edu +7 -3
+ Upgrade to libopts-27.4.2
+
+ libopts/proto.h@1.3, 2006-07-22 23:28:50-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/proto.h@1.3, 2006-07-22 23:34:13-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.2
+
+ libopts/putshell.c@1.3, 2006-07-22 23:28:50-04:00, stenn@whimsy.udel.edu +3 -3
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/putshell.c@1.3, 2006-07-22 23:34:13-04:00, stenn@whimsy.udel.edu +3 -3
+ Upgrade to libopts-27.4.2
+
+ libopts/save.c@1.3, 2006-07-22 23:28:51-04:00, stenn@whimsy.udel.edu +3 -3
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/save.c@1.3, 2006-07-22 23:34:14-04:00, stenn@whimsy.udel.edu +3 -3
+ Upgrade to libopts-27.4.2
+
+ libopts/stack.c@1.3, 2006-07-22 23:28:52-04:00, stenn@whimsy.udel.edu +5 -3
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/stack.c@1.3, 2006-07-22 23:34:15-04:00, stenn@whimsy.udel.edu +5 -3
+ Upgrade to libopts-27.4.2
+
+ libopts/autoopts/usage-txt.h@1.2, 2006-07-22 23:33:14-04:00, stenn@whimsy.udel.edu +271 -395
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/autoopts/usage-txt.h@1.2, 2006-07-22 23:34:19-04:00, stenn@whimsy.udel.edu +271 -395
+ Upgrade to libopts-27.4.2
+
+ libopts/usage.c@1.3, 2006-07-22 23:28:53-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.2
+
+ sntp/libopts/usage.c@1.3, 2006-07-22 23:34:16-04:00, stenn@whimsy.udel.edu +1 -1
+ Upgrade to libopts-27.4.2
+
+ libopts/compat/windows-config.h@1.1, 2006-07-22 23:27:32-04:00, stenn@whimsy.udel.edu +118 -0
+ BitKeeper file /deacon/backroom/ntp-dev/libopts/compat/windows-config.h
+
+ libopts/compat/windows-config.h@1.0, 2006-07-22 23:27:32-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/compat/windows-config.h@1.1, 2006-07-22 23:27:32-04:00, stenn@whimsy.udel.edu +118 -0
+ BitKeeper file /deacon/backroom/ntp-dev/sntp/libopts/compat/windows-config.h
+
+ sntp/libopts/compat/windows-config.h@1.0, 2006-07-22 23:27:32-04:00, stenn@whimsy.udel.edu +0 -0
+
+ChangeSet@1.1353.1.77, 2006-07-22 10:12:26+00:00, kardel@pogo.udel.edu +2 -0
+ ntp_io.c:
+ move debug level for most interface based activity up to 3 and 4
+ 3 major steps and decisions, 4 for tracing like events.
+ remove some #ifdef cruft from sendpkt() - remove SILENT exits that
+ don't make sense.
+ ntp_peer.c:
+ move debug level for some interface based activity up to 3 and 4
+ 3 major steps and decisions, 4 for tracing like events.
+
+ ntpd/ntp_io.c@1.232, 2006-07-22 10:08:32+00:00, kardel@pogo.udel.edu +98 -105
+ move debug level for most interface based activity up to 3 and 4
+ 3 major steps and decisions, 4 for tracing like events.
+ remove some #ifdef cruft from sendpkt() - remove SILENT exits that
+ don't make sense.
+
+ ntpd/ntp_peer.c@1.96, 2006-07-22 10:11:02+00:00, kardel@pogo.udel.edu +4 -4
+ move debug level for some interface based activity up to 3 and 4
+ 3 major steps and decisions, 4 for tracing like events.
+
+ChangeSet@1.1353.1.76, 2006-07-22 10:04:56+00:00, kardel@pogo.udel.edu +2 -0
+ ntp_request.h:
+ bug 672:
+ rearrange struct info_if_stats to be compacter and
+ pad to a 64 bit size boundary for coexistance with
+ 32 and 64 bit platforms
+ layout.std:
+ bug 672:
+ document changed struct info_if_stats layout
+
+ include/ntp_request.h@1.30, 2006-07-22 09:57:38+00:00, kardel@pogo.udel.edu +3 -2
+ bug 672:
+ rearrange struct info_if_stats to be compacter and
+ pad to a 64 bit size boundary for coexistance with
+ 32 and 64 bit platforms
+
+ ntpdc/layout.std@1.7, 2006-07-22 10:00:27+00:00, kardel@pogo.udel.edu +16 -15
+ bug 672:
+ document changed struct info_if_stats layout
+
+ChangeSet@1.1353.1.75, 2006-07-21 08:10:58-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P19
+ TAG: NTP_4_2_3P19
+
+ packageinfo.sh@1.12, 2006-07-21 08:10:56-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P19
+
+ChangeSet@1.1251.94.33, 2006-07-21 07:02:38-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P3_RC1
+ TAG: NTP_4_2_2P3_RC1
+
+ packageinfo.sh@1.27.12.1, 2006-07-21 07:02:33-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P3_RC1
+
+ChangeSet@1.1251.94.32, 2006-07-20 17:22:04-04:00, stenn@whimsy.udel.edu +1 -0
+ Don't bother trying to mirror a RESYNC repo
+
+ BitKeeper/triggers/2mirrors@1.3, 2006-07-20 17:18:06-04:00, stenn@whimsy.udel.edu +6 -0
+ Don't bother trying to mirror a RESYNC repo
+
+ChangeSet@1.1251.94.31, 2006-07-20 15:50:44-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 671] Windows wants TYPEOF_IP_MULTICAST_SPOOL=BOOL
+
+ configure.ac@1.359.5.3, 2006-07-20 15:45:10-04:00, stenn@whimsy.udel.edu +4 -1
+ [Bug 671] Windows wants TYPEOF_IP_MULTICAST_SPOOL=BOOL
+
+ChangeSet@1.1353.1.72, 2006-07-20 13:49:44-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P18
+ TAG: NTP_4_2_3P18
+
+ packageinfo.sh@1.11, 2006-07-20 13:49:25-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P18
+
+ChangeSet@1.1251.94.30, 2006-07-20 07:20:34-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P3_RC0
+ TAG: NTP_4_2_2P3_RC0
+
+ packageinfo.sh@1.27.11.1, 2006-07-20 07:20:29-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P3_RC0
+
+ChangeSet@1.1251.94.29, 2006-07-19 22:22:49-04:00, stenn@deacon.udel.edu +1 -0
+ Send the diffs before the patch in the send trigger.
+
+ BitKeeper/triggers/send@1.8, 2006-07-19 22:22:42-04:00, stenn@deacon.udel.edu +4 -2
+ Send the diffs before the patch in the send trigger.
+
+ChangeSet@1.1251.94.28, 2006-07-19 22:19:11-04:00, stenn@deacon.udel.edu +1 -0
+ update the path to the winnt.html file
+
+ INSTALL@1.8, 2006-07-19 22:19:03-04:00, stenn@deacon.udel.edu +1 -1
+ update the path to the winnt.html file
+
+ChangeSet@1.1251.94.27, 2006-07-19 21:55:54-04:00, stenn@deacon.udel.edu +1 -0
+ Ignore autom4te.cache directories
+
+ BitKeeper/etc/ignore@1.35.1.4, 2006-07-19 21:55:46-04:00, stenn@deacon.udel.edu +2 -1
+ Ignore autom4te.cache directories
+
+ChangeSet@1.1353.1.69, 2006-07-19 21:00:05-04:00, stenn@deacon.udel.edu +1 -0
+ Run the licfix script quietly
+
+ BitKeeper/triggers/pre-resolve.licfix@1.3, 2006-07-19 20:59:54-04:00, stenn@deacon.udel.edu +1 -1
+ Run the licfix script quietly
+
+ChangeSet@1.1251.94.26, 2006-07-19 05:24:23-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 657] netbsd fix for IP_MULTICAST_LOOP test
+
+ configure.ac@1.359.5.2, 2006-07-19 05:24:14-04:00, stenn@pogo.udel.edu +1 -1
+ [Bug 657] netbsd fix for IP_MULTICAST_LOOP test
+
+ChangeSet@1.1251.94.25, 2006-07-19 03:10:22-04:00, stenn@pogo.udel.edu +2 -0
+ [Bug 657] Different OSes need different sized args for IP_MULTICAST_LOOP
+
+ configure.ac@1.359.5.1, 2006-07-19 03:10:08-04:00, stenn@pogo.udel.edu +15 -1
+ [Bug 657] Different OSes need different sized args for IP_MULTICAST_LOOP
+
+ ntpd/ntp_io.c@1.187.1.19, 2006-07-19 03:10:09-04:00, stenn@pogo.udel.edu +1 -1
+ [Bug 657] Different OSes need different sized args for IP_MULTICAST_LOOP
+
+ChangeSet@1.1353.1.67, 2006-07-15 09:35:45+00:00, kardel@pogo.udel.edu +3 -0
+ ntp_io.c:
+ cleanup debug messages
+ add RTM_REDIRECT, RTM_CHANGE as additional interface list scan
+ routing message triggers
+ ntpd.h:
+ select_peerinterface() is comletely private to ntp_peer.c
+ ntp_peer.c:
+ - clear peer crypto when disconnecting from a bound interface
+ - re-arrange initialization for more usable debug output
+ - only bind to non wildcard interfaces even if the OS
+ would offer to send via such an interface
+
+ include/ntpd.h@1.93, 2006-07-15 09:06:47+00:00, kardel@pogo.udel.edu +0 -1
+ select_peerinterface() is comletely private to ntp_peer.c
+
+ ntpd/ntp_io.c@1.230, 2006-07-15 08:59:23+00:00, kardel@pogo.udel.edu +9 -3
+ cleanup debug messages
+ add RTM_REDIRECT, RTM_CHANGE as additional interface list scan
+ routing message triggers
+
+ ntpd/ntp_peer.c@1.95, 2006-07-15 09:04:48+00:00, kardel@pogo.udel.edu +43 -31
+ - clear crypto when leaving a bound interface
+ - re-arrange initialization for more usable debug output
+ - only bind to non wildcard interfaces even if the OS
+ would offer to send via such an interface
+
+ChangeSet@1.1353.1.66, 2006-07-10 18:08:35+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ fix prototype argument type to match implementation
+
+ ntpd/ntp_io.c@1.229, 2006-07-10 18:07:50+00:00, kardel@pogo.udel.edu +1 -1
+ fix prototype argument type to match implementation
+
+ChangeSet@1.1353.1.65, 2006-07-10 07:42:31-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P17
+ TAG: NTP_4_2_3P17
+
+ packageinfo.sh@1.10, 2006-07-10 07:42:26-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P17
+
+ChangeSet@1.1251.97.31, 2006-07-10 07:02:26-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P3_RC
+ TAG: NTP_4_2_2P3_RC
+
+ packageinfo.sh@1.27.9.1, 2006-07-10 07:02:23-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_2P3_RC
+
+ChangeSet@1.1251.97.30, 2006-07-10 03:27:15-04:00, stenn@whimsy.udel.edu +1 -0
+ cleanup
+
+ NEWS@1.50.1.3, 2006-07-10 03:27:07-04:00, stenn@whimsy.udel.edu +1 -1
+ cleanup
+
+ChangeSet@1.1251.97.29, 2006-07-10 03:14:23-04:00, stenn@whimsy.udel.edu +1 -0
+ Start an RC cycle with the new changes
+
+ packageinfo.sh@1.27.8.1, 2006-07-10 03:14:13-04:00, stenn@whimsy.udel.edu +2 -2
+ Start an RC cycle with the new changes
+
+ChangeSet@1.1251.97.28, 2006-07-10 03:07:33-04:00, stenn@whimsy.udel.edu +1 -0
+ Use a decent Subject: line for the new send trigger
+
+ BitKeeper/triggers/send@1.7, 2006-07-10 03:07:21-04:00, stenn@whimsy.udel.edu +2 -1
+ Use a decent Subject: line for the new send trigger
+
+ChangeSet@1.1251.97.27, 2006-07-10 01:54:26-04:00, stenn@whimsy.udel.edu +1 -0
+ Also use the new "bk changes" command for the "send" emails
+
+ BitKeeper/triggers/send@1.6, 2006-07-10 01:54:10-04:00, stenn@whimsy.udel.edu +15 -0
+ Also use the new "bk changes" command for the "send" emails
+
+ChangeSet@1.1251.97.26, 2006-07-10 01:40:48-04:00, stenn@whimsy.udel.edu +1 -0
+ update
+
+ README@1.22, 2006-07-10 01:40:24-04:00, stenn@whimsy.udel.edu +3 -3
+ update
+
+ChangeSet@1.1251.97.25, 2006-07-10 01:32:25-04:00, stenn@whimsy.udel.edu +1 -0
+ update
+
+ WHERE-TO-START@1.6, 2006-07-10 01:32:11-04:00, stenn@whimsy.udel.edu +5 -5
+ update
+
+ChangeSet@1.1251.97.24, 2006-07-10 01:20:12-04:00, stenn@whimsy.udel.edu +1 -0
+ Note that sntp now builds under AIX 5
+
+ NEWS@1.50.1.2, 2006-07-10 01:19:55-04:00, stenn@whimsy.udel.edu +1 -0
+ Note that sntp now builds under AIX 5
+
+ChangeSet@1.1251.97.23, 2006-07-10 00:21:34-04:00, stenn@whimsy.udel.edu +1 -0
+ Have sntp build config.h, and cleanup some quoting
+
+ sntp/configure.ac@1.8.1.1, 2006-07-10 00:21:23-04:00, stenn@whimsy.udel.edu +3 -2
+ Have sntp build config.h, and cleanup some quoting
+
+ChangeSet@1.1353.1.62, 2006-07-09 07:25:54-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P16
+ TAG: NTP_4_2_3P16
+
+ packageinfo.sh@1.9, 2006-07-09 07:25:52-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P16
+
+ChangeSet@1.1251.97.22, 2006-07-09 07:02:21-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P2
+ TAG: NTP_4_2_2P2
+
+ packageinfo.sh@1.27.7.1, 2006-07-09 07:02:18-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P2
+
+ChangeSet@1.1353.1.60, 2006-07-09 00:41:37-04:00, stenn@whimsy.udel.edu +1 -0
+ socket.c needs stuff from config.h
+
+ sntp/socket.c@1.6, 2006-07-09 00:35:36-04:00, stenn@whimsy.udel.edu +2 -0
+ socket.c needs stuff from config.h
+
+ChangeSet@1.1251.97.21, 2006-07-09 00:39:26-04:00, stenn@whimsy.udel.edu +1 -0
+ socket.c needs stuff from config.h
+
+ sntp/socket.c@1.5.1.1, 2006-07-09 00:39:11-04:00, stenn@whimsy.udel.edu +2 -0
+ socket.c needs stuff from config.h
+
+ChangeSet@1.1353.6.1, 2006-07-08 07:26:18-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P15
+ TAG: NTP_4_2_3P15
+
+ packageinfo.sh@1.8, 2006-07-08 07:26:13-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P15
+
+ChangeSet@1.1251.97.20, 2006-07-08 07:02:36-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P1
+ TAG: NTP_4_2_2P1
+
+ packageinfo.sh@1.27.6.1, 2006-07-08 07:02:33-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P1
+
+ChangeSet@1.1353.1.56, 2006-07-08 06:36:29-04:00, stenn@whimsy.udel.edu +4 -0
+ [Bug 667] Fix ntpdc's option processing
+
+ ntpdc/ntpdc-opts.c@1.2, 2006-07-08 06:36:04-04:00, stenn@whimsy.udel.edu +38 -13
+ [Bug 667] Fix ntpdc's option processing
+
+ ntpdc/ntpdc-opts.h@1.2, 2006-07-08 06:36:05-04:00, stenn@whimsy.udel.edu +20 -10
+ [Bug 667] Fix ntpdc's option processing
+
+ ntpdc/ntpdc-opts.texi@1.2, 2006-07-08 06:36:05-04:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 667] Fix ntpdc's option processing
+
+ ntpdc/ntpdc.1@1.2, 2006-07-08 06:36:06-04:00, stenn@whimsy.udel.edu +17 -16
+ [Bug 667] Fix ntpdc's option processing
+
+ChangeSet@1.1251.97.19, 2006-07-08 06:19:53-04:00, stenn@whimsy.udel.edu +1 -0
+ Time for the point release
+
+ packageinfo.sh@1.27.5.2, 2006-07-08 06:19:45-04:00, stenn@whimsy.udel.edu +3 -3
+ Time for the point release
+
+ChangeSet@1.1251.97.18, 2006-07-08 06:16:07-04:00, stenn@whimsy.udel.edu +1 -0
+ cleanup the bk ignore file
+
+ BitKeeper/etc/ignore@1.35.1.3, 2006-07-08 06:15:30-04:00, stenn@whimsy.udel.edu +34 -34
+ cleanup the bk ignore file
+
+ChangeSet@1.1353.1.55, 2006-07-08 06:06:02-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 667] Fix ntpdc's option processing
+
+ ntpdc/ntpdc-opts.def@1.11, 2006-07-08 06:05:51-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 667] Fix ntpdc's option processing
+
+ ntpdc/ntpdc.c@1.53, 2006-07-08 06:05:51-04:00, stenn@whimsy.udel.edu +15 -0
+ [Bug 667] Fix ntpdc's option processing
+
+ChangeSet@1.1353.5.1, 2006-07-08 08:22:35+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ simplify move_fd()
+ refactor socket level udp paket time stamping by creating fetch_timestamp() for the
+ interfaces we will implement
+ implement the standard interface using the CMSG_* macros
+ only enable socket time stamping when CMSG_* macros are defined
+ cleanup minor signedness issues with pointer target types for length arguments
+
+ ntpd/ntp_io.c@1.228, 2006-07-08 08:17:45+00:00, kardel@pogo.udel.edu +93 -75
+ simplify move_fd()
+ refactor socket level udp paket time stamping by creating fetch_timestamp() for the
+ interfaces we will implement
+ implement the standard interface using the CMSG_* macros
+ only enable socket time stamping when CMSG_* macros are defined
+ cleanup minor signedness issues with pointer target types for length arguments
+
+ChangeSet@1.1353.1.54, 2006-07-08 03:04:02-04:00, stenn@whimsy.udel.edu +2 -0
+ Fix the hppa2.0-hp-hpux10.20 -H case
+
+ configure.ac@1.388, 2006-07-08 03:03:30-04:00, stenn@whimsy.udel.edu +4 -3
+ Fix the hppa2.0-hp-hpux10.20 -H case
+
+ sntp/configure.ac@1.12, 2006-07-08 03:03:31-04:00, stenn@whimsy.udel.edu +4 -3
+ Fix the hppa2.0-hp-hpux10.20 -H case
+
+ChangeSet@1.1353.1.53, 2006-07-07 18:34:28-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P14
+ TAG: NTP_4_2_3P14
+
+ packageinfo.sh@1.7, 2006-07-07 18:34:19-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P14
+
+ChangeSet@1.1353.1.52, 2006-07-07 15:20:47-04:00, stenn@whimsy.udel.edu +1 -0
+ Add the -H stuff for cc under HP-UX to sntp's configure.ac
+
+ sntp/configure.ac@1.11, 2006-07-07 15:20:21-04:00, stenn@whimsy.udel.edu +7 -0
+ Add the -H stuff for cc under HP-UX to sntp's configure.ac
+
+ChangeSet@1.1353.1.51, 2006-07-07 06:57:09-04:00, stenn@whimsy.udel.edu +1 -0
+ we want ltmain.sh now
+
+ BitKeeper/etc/ignore@1.53, 2006-07-07 06:56:13-04:00, stenn@whimsy.udel.edu +1 -1
+ we want ltmain.sh now
+
+ChangeSet@1.1353.1.50, 2006-07-07 05:53:15-04:00, stenn@whimsy.udel.edu +11 -0
+ Make sure .def files are readable, distribute libtool.m4 and ltmain.sh to solve bootstrap problem
+
+ libopts/m4/libtool.m4@1.1, 2006-07-07 05:51:53-04:00, stenn@whimsy.udel.edu +6397 -0
+ BitKeeper file /deacon/backroom/ntp-dev/libopts/m4/libtool.m4
+
+ libopts/m4/libtool.m4@1.0, 2006-07-07 05:51:53-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/libopts/m4/libtool.m4@1.1, 2006-07-07 05:51:56-04:00, stenn@whimsy.udel.edu +6397 -0
+ BitKeeper file /deacon/backroom/ntp-dev/sntp/libopts/m4/libtool.m4
+
+ sntp/libopts/m4/libtool.m4@1.0, 2006-07-07 05:51:56-04:00, stenn@whimsy.udel.edu +0 -0
+
+ ltmain.sh@1.1, 2006-07-07 05:51:57-04:00, stenn@whimsy.udel.edu +6863 -0
+ BitKeeper file /deacon/backroom/ntp-dev/ltmain.sh
+
+ ltmain.sh@1.0, 2006-07-07 05:51:57-04:00, stenn@whimsy.udel.edu +0 -0
+
+ ntpd/ntpd-opts.def@1.4, 2006-07-07 05:49:42-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-rw-r--
+
+ ntpd/ntpdbase-opts.def@1.5, 2006-07-07 05:49:43-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-rw-r--
+
+ ntpd/ntpdsim-opts.def@1.4, 2006-07-07 05:49:44-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-rw-r--
+
+ ntpdc/ntpdc-opts.def@1.10, 2006-07-07 05:49:45-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-rw-r--
+
+ ntpq/ntpq-opts.def@1.7, 2006-07-07 05:49:45-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-rw-r--
+
+ sntp/ltmain.sh@1.1, 2006-07-07 05:51:55-04:00, stenn@whimsy.udel.edu +6863 -0
+ BitKeeper file /deacon/backroom/ntp-dev/sntp/ltmain.sh
+
+ sntp/ltmain.sh@1.0, 2006-07-07 05:51:55-04:00, stenn@whimsy.udel.edu +0 -0
+
+ sntp/sntp-opts.def@1.4, 2006-07-07 05:49:46-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-rw-r--
+
+ util/ntp-keygen-opts.def@1.4, 2006-07-07 05:49:47-04:00, stenn@whimsy.udel.edu +0 -0
+ Change mode to -rw-rw-r--
+
+ChangeSet@1.1353.1.49, 2006-07-03 21:51:08-04:00, stenn@deacon.udel.edu +2 -0
+ Make prototype agree with decl
+
+ libopts/autoopts/options.h@1.2, 2006-07-03 21:50:59-04:00, stenn@deacon.udel.edu +1 -1
+ Make prototype agree with decl
+
+ sntp/libopts/autoopts/options.h@1.2, 2006-07-03 21:50:59-04:00, stenn@deacon.udel.edu +1 -1
+ Make prototype agree with decl
+
+ChangeSet@1.1353.1.48, 2006-07-03 19:05:18-04:00, stenn@deacon.udel.edu +58 -0
+ Upgrade to libopts-27.3.2
+
+ libopts/Makefile.am@1.2, 2006-07-03 18:57:04-04:00, stenn@deacon.udel.edu +10 -10
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/Makefile.am@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +10 -10
+ Upgrade to libopts-27.3.2
+
+ libopts/autoopts.c@1.2, 2006-07-03 18:57:04-04:00, stenn@deacon.udel.edu +9 -5
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/autoopts.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +9 -5
+ Upgrade to libopts-27.3.2
+
+ libopts/autoopts.h@1.2, 2006-07-03 18:57:04-04:00, stenn@deacon.udel.edu +15 -7
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/autoopts.h@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +15 -7
+ Upgrade to libopts-27.3.2
+
+ libopts/boolean.c@1.2, 2006-07-03 18:57:04-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/boolean.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ libopts/compat/compat.h@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +5 -2
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/compat/compat.h@1.2, 2006-07-03 18:57:07-04:00, stenn@deacon.udel.edu +5 -2
+ Upgrade to libopts-27.3.2
+
+ libopts/configfile.c@1.2, 2006-07-03 18:57:04-04:00, stenn@deacon.udel.edu +6 -6
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/configfile.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +6 -6
+ Upgrade to libopts-27.3.2
+
+ libopts/cook.c@1.2, 2006-07-03 18:57:04-04:00, stenn@deacon.udel.edu +6 -6
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/cook.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +6 -6
+ Upgrade to libopts-27.3.2
+
+ libopts/enumeration.c@1.2, 2006-07-03 18:57:04-04:00, stenn@deacon.udel.edu +8 -8
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/enumeration.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +8 -8
+ Upgrade to libopts-27.3.2
+
+ libopts/environment.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/environment.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ libopts/libopts.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +1 -0
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/libopts.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +1 -0
+ Upgrade to libopts-27.3.2
+
+ libopts/m4/libopts.m4@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +6 -13
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/m4/libopts.m4@1.2, 2006-07-03 18:57:07-04:00, stenn@deacon.udel.edu +6 -13
+ Upgrade to libopts-27.3.2
+
+ libopts/load.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +7 -7
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/load.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +7 -7
+ Upgrade to libopts-27.3.2
+
+ libopts/makeshell.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +10 -10
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/makeshell.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +10 -10
+ Upgrade to libopts-27.3.2
+
+ libopts/nested.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/nested.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ libopts/numeric.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/numeric.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ libopts/compat/pathfind.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +2 -2
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/compat/pathfind.c@1.2, 2006-07-03 18:57:07-04:00, stenn@deacon.udel.edu +2 -2
+ Upgrade to libopts-27.3.2
+
+ libopts/pgusage.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +3 -3
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/pgusage.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +3 -3
+ Upgrade to libopts-27.3.2
+
+ libopts/proto.h@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +2 -2
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/proto.h@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +2 -2
+ Upgrade to libopts-27.3.2
+
+ libopts/putshell.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +8 -8
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/putshell.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +8 -8
+ Upgrade to libopts-27.3.2
+
+ libopts/restore.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/restore.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ libopts/save.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +7 -7
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/save.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +7 -7
+ Upgrade to libopts-27.3.2
+
+ libopts/sort.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +4 -4
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/sort.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +4 -4
+ Upgrade to libopts-27.3.2
+
+ libopts/stack.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +41 -2
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/stack.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +41 -2
+ Upgrade to libopts-27.3.2
+
+ libopts/compat/strchr.c@1.1, 2006-07-03 18:55:11-04:00, stenn@deacon.udel.edu +61 -0
+
+ libopts/compat/strchr.c@1.0, 2006-07-03 18:55:11-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/libopts/compat/strchr.c
+
+ sntp/libopts/compat/strchr.c@1.1, 2006-07-03 18:55:11-04:00, stenn@deacon.udel.edu +61 -0
+
+ sntp/libopts/compat/strchr.c@1.0, 2006-07-03 18:55:11-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/sntp/libopts/compat/strchr.c
+
+ libopts/streqvcmp.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/streqvcmp.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ libopts/text_mmap.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +3 -3
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/text_mmap.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +3 -3
+ Upgrade to libopts-27.3.2
+
+ libopts/tokenize.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +3 -3
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/tokenize.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +3 -3
+ Upgrade to libopts-27.3.2
+
+ libopts/usage.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +11 -11
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/usage.c@1.2, 2006-07-03 18:57:06-04:00, stenn@deacon.udel.edu +11 -11
+ Upgrade to libopts-27.3.2
+
+ libopts/version.c@1.2, 2006-07-03 18:57:05-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ sntp/libopts/version.c@1.2, 2006-07-03 18:57:07-04:00, stenn@deacon.udel.edu +1 -1
+ Upgrade to libopts-27.3.2
+
+ChangeSet@1.1353.1.47, 2006-07-03 00:18:29-04:00, stenn@deacon.udel.edu +1 -0
+ typo
+
+ bootstrap@1.15, 2006-07-03 00:16:31-04:00, stenn@whimsy.udel.edu +1 -1
+ typo
+
+ChangeSet@1.1353.1.46, 2006-07-03 00:13:59-04:00, stenn@deacon.udel.edu +2 -0
+ touch the files generated by autogen to keep them from needing to be rebuilt.
+
+ bootstrap@1.14, 2006-07-03 00:13:47-04:00, stenn@deacon.udel.edu +38 -14
+ touch the files generated by autogen to keep them from needing to be rebuilt.
+
+ ntpd/ntp_proto.c@1.245, 2006-07-03 00:13:02-04:00, stenn@deacon.udel.edu +2 -2
+ Dave reformatted a line
+
+ChangeSet@1.1353.1.45, 2006-06-30 01:03:52-04:00, stenn@deacon.udel.edu +111 -0
+ Check in libopts and autgen-generated files
+
+ libopts/COPYING.lgpl@1.1, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +502 -0
+
+ libopts/COPYING.lgpl@1.0, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/COPYING.lgpl
+
+ sntp/libopts/COPYING.lgpl@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +502 -0
+
+ sntp/libopts/COPYING.lgpl@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/COPYING.lgpl
+
+ libopts/COPYING.mbsd@1.1, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +26 -0
+
+ libopts/COPYING.mbsd@1.0, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/COPYING.mbsd
+
+ sntp/libopts/COPYING.mbsd@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +26 -0
+
+ sntp/libopts/COPYING.mbsd@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/COPYING.mbsd
+
+ libopts/MakeDefs.inc@1.1, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +0 -0
+
+ libopts/MakeDefs.inc@1.0, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/MakeDefs.inc
+
+ sntp/libopts/MakeDefs.inc@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+
+ sntp/libopts/MakeDefs.inc@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/MakeDefs.inc
+
+ libopts/Makefile.am@1.1, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +20 -0
+
+ libopts/Makefile.am@1.0, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/Makefile.am
+
+ sntp/libopts/Makefile.am@1.1, 2006-06-30 01:00:05-04:00, stenn@deacon.udel.edu +20 -0
+
+ sntp/libopts/Makefile.am@1.0, 2006-06-30 01:00:05-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/Makefile.am
+
+ libopts/README@1.1, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +93 -0
+
+ libopts/README@1.0, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/README
+
+ sntp/libopts/README@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +93 -0
+
+ sntp/libopts/README@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/README
+
+ libopts/autoopts.c@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +1043 -0
+
+ libopts/autoopts.c@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/autoopts.c
+
+ sntp/libopts/autoopts.c@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +1043 -0
+
+ sntp/libopts/autoopts.c@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/autoopts.c
+
+ libopts/autoopts.h@1.1, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +321 -0
+
+ libopts/autoopts.h@1.0, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/autoopts.h
+
+ sntp/libopts/autoopts.h@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +321 -0
+
+ sntp/libopts/autoopts.h@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/autoopts.h
+
+ libopts/boolean.c@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +102 -0
+
+ libopts/boolean.c@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/boolean.c
+
+ sntp/libopts/boolean.c@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +102 -0
+
+ sntp/libopts/boolean.c@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/boolean.c
+
+ libopts/compat/compat.h@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +292 -0
+
+ libopts/compat/compat.h@1.0, 2006-06-30 00:55:13-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/compat/compat.h
+
+ sntp/libopts/compat/compat.h@1.1, 2006-06-30 01:00:01-04:00, stenn@deacon.udel.edu +292 -0
+
+ sntp/libopts/compat/compat.h@1.0, 2006-06-30 01:00:01-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/compat/compat.h
+
+ libopts/configfile.c@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +1277 -0
+
+ libopts/configfile.c@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/configfile.c
+
+ sntp/libopts/configfile.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +1277 -0
+
+ sntp/libopts/configfile.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/configfile.c
+
+ libopts/cook.c@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +355 -0
+
+ libopts/cook.c@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/cook.c
+
+ sntp/libopts/cook.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +355 -0
+
+ sntp/libopts/cook.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/cook.c
+
+ libopts/enumeration.c@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +485 -0
+
+ libopts/enumeration.c@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/enumeration.c
+
+ sntp/libopts/enumeration.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +485 -0
+
+ sntp/libopts/enumeration.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/enumeration.c
+
+ libopts/environment.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +261 -0
+
+ libopts/environment.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/environment.c
+
+ sntp/libopts/environment.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +261 -0
+
+ sntp/libopts/environment.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/environment.c
+
+ libopts/genshell.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +301 -0
+
+ libopts/genshell.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/genshell.c
+
+ sntp/libopts/genshell.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +301 -0
+
+ sntp/libopts/genshell.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/genshell.c
+
+ libopts/genshell.h@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +142 -0
+
+ libopts/genshell.h@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/genshell.h
+
+ sntp/libopts/genshell.h@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +142 -0
+
+ sntp/libopts/genshell.h@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/genshell.h
+
+ libopts/libopts.c@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +30 -0
+
+ libopts/libopts.c@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/libopts.c
+
+ sntp/libopts/libopts.c@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +30 -0
+
+ sntp/libopts/libopts.c@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/libopts.c
+
+ libopts/m4/libopts.m4@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +487 -0
+
+ libopts/m4/libopts.m4@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/m4/libopts.m4
+
+ sntp/libopts/m4/libopts.m4@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +487 -0
+
+ sntp/libopts/m4/libopts.m4@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/m4/libopts.m4
+
+ libopts/m4/liboptschk.m4@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +39 -0
+
+ libopts/m4/liboptschk.m4@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/m4/liboptschk.m4
+
+ sntp/libopts/m4/liboptschk.m4@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +39 -0
+
+ sntp/libopts/m4/liboptschk.m4@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/m4/liboptschk.m4
+
+ libopts/load.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +520 -0
+
+ libopts/load.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/load.c
+
+ sntp/libopts/load.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +520 -0
+
+ sntp/libopts/load.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/load.c
+
+ libopts/makeshell.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +1100 -0
+
+ libopts/makeshell.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/makeshell.c
+
+ sntp/libopts/makeshell.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +1100 -0
+
+ sntp/libopts/makeshell.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/makeshell.c
+
+ libopts/nested.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +705 -0
+
+ libopts/nested.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/nested.c
+
+ sntp/libopts/nested.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +705 -0
+
+ sntp/libopts/nested.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/nested.c
+
+ libopts/numeric.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +89 -0
+
+ libopts/numeric.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/numeric.c
+
+ sntp/libopts/numeric.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +89 -0
+
+ sntp/libopts/numeric.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/numeric.c
+
+ libopts/autoopts/options.h@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +908 -0
+
+ libopts/autoopts/options.h@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/autoopts/options.h
+
+ sntp/libopts/autoopts/options.h@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +908 -0
+
+ sntp/libopts/autoopts/options.h@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/autoopts/options.h
+
+ libopts/compat/pathfind.c@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +330 -0
+
+ libopts/compat/pathfind.c@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/compat/pathfind.c
+
+ sntp/libopts/compat/pathfind.c@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +330 -0
+
+ sntp/libopts/compat/pathfind.c@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/compat/pathfind.c
+
+ libopts/pgusage.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +154 -0
+
+ libopts/pgusage.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/pgusage.c
+
+ sntp/libopts/pgusage.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +154 -0
+
+ sntp/libopts/pgusage.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/pgusage.c
+
+ libopts/proto.h@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +88 -0
+
+ libopts/proto.h@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/proto.h
+
+ sntp/libopts/proto.h@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +88 -0
+
+ sntp/libopts/proto.h@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/proto.h
+
+ libopts/putshell.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +333 -0
+
+ libopts/putshell.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/putshell.c
+
+ sntp/libopts/putshell.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +333 -0
+
+ sntp/libopts/putshell.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/putshell.c
+
+ libopts/restore.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +207 -0
+
+ libopts/restore.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/restore.c
+
+ sntp/libopts/restore.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +207 -0
+
+ sntp/libopts/restore.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/restore.c
+
+ libopts/save.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +499 -0
+
+ libopts/save.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/save.c
+
+ sntp/libopts/save.c@1.1, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +499 -0
+
+ sntp/libopts/save.c@1.0, 2006-06-30 01:00:03-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/save.c
+
+ libopts/compat/snprintf.c@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +36 -0
+
+ libopts/compat/snprintf.c@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/compat/snprintf.c
+
+ sntp/libopts/compat/snprintf.c@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +36 -0
+
+ sntp/libopts/compat/snprintf.c@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/compat/snprintf.c
+
+ libopts/sort.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +369 -0
+
+ libopts/sort.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/sort.c
+
+ sntp/libopts/sort.c@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +369 -0
+
+ sntp/libopts/sort.c@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/sort.c
+
+ libopts/stack.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +224 -0
+
+ libopts/stack.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/stack.c
+
+ sntp/libopts/stack.c@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +224 -0
+
+ sntp/libopts/stack.c@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/stack.c
+
+ libopts/compat/strdup.c@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +19 -0
+
+ libopts/compat/strdup.c@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/compat/strdup.c
+
+ sntp/libopts/compat/strdup.c@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +19 -0
+
+ sntp/libopts/compat/strdup.c@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/compat/strdup.c
+
+ libopts/streqvcmp.c@1.1, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +292 -0
+
+ libopts/streqvcmp.c@1.0, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/streqvcmp.c
+
+ sntp/libopts/streqvcmp.c@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +292 -0
+
+ sntp/libopts/streqvcmp.c@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/streqvcmp.c
+
+ libopts/text_mmap.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +367 -0
+
+ libopts/text_mmap.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/text_mmap.c
+
+ sntp/libopts/text_mmap.c@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +367 -0
+
+ sntp/libopts/text_mmap.c@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/text_mmap.c
+
+ libopts/tokenize.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +322 -0
+
+ libopts/tokenize.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/tokenize.c
+
+ sntp/libopts/tokenize.c@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +322 -0
+
+ sntp/libopts/tokenize.c@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/tokenize.c
+
+ libopts/autoopts/usage-txt.h@1.1, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +479 -0
+
+ libopts/autoopts/usage-txt.h@1.0, 2006-06-30 00:55:14-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/autoopts/usage-txt.h
+
+ sntp/libopts/autoopts/usage-txt.h@1.1, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +479 -0
+
+ sntp/libopts/autoopts/usage-txt.h@1.0, 2006-06-30 01:00:02-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/autoopts/usage-txt.h
+
+ libopts/usage.c@1.1, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +732 -0
+
+ libopts/usage.c@1.0, 2006-06-30 00:55:15-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/usage.c
+
+ sntp/libopts/usage.c@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +732 -0
+
+ sntp/libopts/usage.c@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/usage.c
+
+ libopts/version.c@1.1, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +181 -0
+
+ libopts/version.c@1.0, 2006-06-30 00:55:16-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/libopts/version.c
+
+ sntp/libopts/version.c@1.1, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +181 -0
+
+ sntp/libopts/version.c@1.0, 2006-06-30 01:00:04-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/libopts/version.c
+
+ BitKeeper/etc/ignore@1.52, 2006-06-30 01:03:43-04:00, stenn@deacon.udel.edu +12 -12
+ Check in libopts and autgen-generated files
+
+ bootstrap@1.13, 2006-06-30 01:03:43-04:00, stenn@deacon.udel.edu +19 -18
+ Check in libopts and autgen-generated files
+
+ clockstuff/clktest-opts.c@1.1, 2006-06-30 00:58:06-04:00, stenn@deacon.udel.edu +825 -0
+
+ clockstuff/clktest-opts.c@1.0, 2006-06-30 00:58:06-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/clockstuff/clktest-opts.c
+
+ clockstuff/clktest-opts.h@1.1, 2006-06-30 00:58:06-04:00, stenn@deacon.udel.edu +192 -0
+
+ clockstuff/clktest-opts.h@1.0, 2006-06-30 00:58:06-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/clockstuff/clktest-opts.h
+
+ ntpd/ntpd-opts.c@1.1, 2006-06-30 00:56:22-04:00, stenn@deacon.udel.edu +975 -0
+
+ ntpd/ntpd-opts.c@1.0, 2006-06-30 00:56:22-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpd/ntpd-opts.c
+
+ ntpd/ntpd-opts.h@1.1, 2006-06-30 00:56:22-04:00, stenn@deacon.udel.edu +193 -0
+
+ ntpd/ntpd-opts.h@1.0, 2006-06-30 00:56:22-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpd/ntpd-opts.h
+
+ ntpd/ntpd-opts.menu@1.1, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +1 -0
+
+ ntpd/ntpd-opts.menu@1.0, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpd/ntpd-opts.menu
+
+ ntpd/ntpd-opts.texi@1.1, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +481 -0
+
+ ntpd/ntpd-opts.texi@1.0, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpd/ntpd-opts.texi
+
+ ntpd/ntpd.1@1.1, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +307 -0
+
+ ntpd/ntpd.1@1.0, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpd/ntpd.1
+
+ ntpd/ntpdsim-opts.c@1.1, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +1173 -0
+
+ ntpd/ntpdsim-opts.c@1.0, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpd/ntpdsim-opts.c
+
+ ntpd/ntpdsim-opts.h@1.1, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +211 -0
+
+ ntpd/ntpdsim-opts.h@1.0, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpd/ntpdsim-opts.h
+
+ ntpd/ntpdsim-opts.menu@1.1, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +1 -0
+
+ ntpd/ntpdsim-opts.menu@1.0, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpd/ntpdsim-opts.menu
+
+ ntpd/ntpdsim-opts.texi@1.1, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +562 -0
+
+ ntpd/ntpdsim-opts.texi@1.0, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpd/ntpdsim-opts.texi
+
+ ntpd/ntpdsim.1@1.1, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +352 -0
+
+ ntpd/ntpdsim.1@1.0, 2006-06-30 00:56:23-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpd/ntpdsim.1
+
+ ntpdc/ntpdc-opts.c@1.1, 2006-06-30 00:56:35-04:00, stenn@deacon.udel.edu +606 -0
+
+ ntpdc/ntpdc-opts.c@1.0, 2006-06-30 00:56:35-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpdc/ntpdc-opts.c
+
+ ntpdc/ntpdc-opts.h@1.1, 2006-06-30 00:56:36-04:00, stenn@deacon.udel.edu +155 -0
+
+ ntpdc/ntpdc-opts.h@1.0, 2006-06-30 00:56:36-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpdc/ntpdc-opts.h
+
+ ntpdc/ntpdc-opts.menu@1.1, 2006-06-30 00:56:36-04:00, stenn@deacon.udel.edu +1 -0
+
+ ntpdc/ntpdc-opts.menu@1.0, 2006-06-30 00:56:36-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpdc/ntpdc-opts.menu
+
+ ntpdc/ntpdc-opts.texi@1.1, 2006-06-30 00:56:36-04:00, stenn@deacon.udel.edu +272 -0
+
+ ntpdc/ntpdc-opts.texi@1.0, 2006-06-30 00:56:36-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpdc/ntpdc-opts.texi
+
+ ntpdc/ntpdc.1@1.1, 2006-06-30 00:56:36-04:00, stenn@deacon.udel.edu +157 -0
+
+ ntpdc/ntpdc.1@1.0, 2006-06-30 00:56:36-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpdc/ntpdc.1
+
+ ntpq/ntpq-opts.c@1.1, 2006-06-30 00:56:42-04:00, stenn@deacon.udel.edu +781 -0
+
+ ntpq/ntpq-opts.c@1.0, 2006-06-30 00:56:42-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpq/ntpq-opts.c
+
+ ntpq/ntpq-opts.h@1.1, 2006-06-30 00:56:42-04:00, stenn@deacon.udel.edu +151 -0
+
+ ntpq/ntpq-opts.h@1.0, 2006-06-30 00:56:42-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpq/ntpq-opts.h
+
+ ntpq/ntpq-opts.menu@1.1, 2006-06-30 00:56:42-04:00, stenn@deacon.udel.edu +1 -0
+
+ ntpq/ntpq-opts.menu@1.0, 2006-06-30 00:56:42-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpq/ntpq-opts.menu
+
+ ntpq/ntpq-opts.texi@1.1, 2006-06-30 00:56:42-04:00, stenn@deacon.udel.edu +691 -0
+
+ ntpq/ntpq-opts.texi@1.0, 2006-06-30 00:56:42-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpq/ntpq-opts.texi
+
+ ntpq/ntpq.1@1.1, 2006-06-30 00:56:43-04:00, stenn@deacon.udel.edu +385 -0
+
+ ntpq/ntpq.1@1.0, 2006-06-30 00:56:43-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/ntpq/ntpq.1
+
+ sntp/sntp-opts.c@1.1, 2006-06-30 01:02:22-04:00, stenn@deacon.udel.edu +742 -0
+
+ sntp/sntp-opts.c@1.0, 2006-06-30 01:02:22-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/sntp-opts.c
+
+ sntp/sntp-opts.h@1.1, 2006-06-30 01:02:22-04:00, stenn@deacon.udel.edu +149 -0
+
+ sntp/sntp-opts.h@1.0, 2006-06-30 01:02:22-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/sntp-opts.h
+
+ sntp/sntp-opts.menu@1.1, 2006-06-30 01:02:22-04:00, stenn@deacon.udel.edu +1 -0
+
+ sntp/sntp-opts.menu@1.0, 2006-06-30 01:02:22-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/sntp-opts.menu
+
+ sntp/sntp-opts.texi@1.1, 2006-06-30 01:02:22-04:00, stenn@deacon.udel.edu +410 -0
+
+ sntp/sntp-opts.texi@1.0, 2006-06-30 01:02:22-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/sntp/sntp-opts.texi
+
+ util/ntp-keygen-opts.c@1.1, 2006-06-30 00:51:39-04:00, stenn@deacon.udel.edu +989 -0
+
+ util/ntp-keygen-opts.c@1.0, 2006-06-30 00:51:39-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/util/ntp-keygen-opts.c
+
+ util/ntp-keygen-opts.h@1.1, 2006-06-30 00:51:40-04:00, stenn@deacon.udel.edu +206 -0
+
+ util/ntp-keygen-opts.h@1.0, 2006-06-30 00:51:40-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/util/ntp-keygen-opts.h
+
+ util/ntp-keygen-opts.menu@1.1, 2006-06-30 00:51:40-04:00, stenn@deacon.udel.edu +1 -0
+
+ util/ntp-keygen-opts.menu@1.0, 2006-06-30 00:51:40-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/util/ntp-keygen-opts.menu
+
+ util/ntp-keygen-opts.texi@1.1, 2006-06-30 00:51:40-04:00, stenn@deacon.udel.edu +362 -0
+
+ util/ntp-keygen-opts.texi@1.0, 2006-06-30 00:51:40-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/util/ntp-keygen-opts.texi
+
+ util/ntp-keygen.1@1.1, 2006-06-30 00:51:40-04:00, stenn@deacon.udel.edu +176 -0
+
+ util/ntp-keygen.1@1.0, 2006-06-30 00:51:40-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/util/ntp-keygen.1
+
+ChangeSet@1.1353.1.44, 2006-06-28 07:26:01-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P13
+ TAG: NTP_4_2_3P13
+
+ packageinfo.sh@1.6, 2006-06-28 07:25:51-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P13
+
+ChangeSet@1.1251.97.17, 2006-06-28 07:03:07-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P0_RC8
+ TAG: NTP_4_2_2P0_RC8
+
+ packageinfo.sh@1.27.5.1, 2006-06-28 07:02:59-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P0_RC8
+
+ChangeSet@1.1251.97.16, 2006-06-27 21:20:21+00:00, burnicki@pogo.udel.edu +8 -0
+ [BUG 661]
+ Use environment variable to specify the base path to openssl.
+ Updated hints/winnt.html accordingly.
+
+ html/build/hints/winnt.html@1.16, 2006-06-27 21:20:17+00:00, burnicki@pogo.udel.edu +42 -20
+ Added a hint to the build instructions to set up the OPENSSL environment variable.
+ Added the Meinberg link to download the GUI installer.
+ Wrapped some lines.
+
+ ports/winnt/libntp/libntp.dsp@1.29, 2006-06-27 21:20:17+00:00, burnicki@pogo.udel.edu +2 -2
+ Use environment variable to specify the base path to openssl.
+
+ ports/winnt/ntp-keygen/ntpkeygen.dsp@1.10, 2006-06-27 21:20:17+00:00, burnicki@pogo.udel.edu +4 -4
+ Use environment variable to specify the base path to openssl.
+
+ ports/winnt/ntpd/ntpd.dsp@1.27, 2006-06-27 21:20:17+00:00, burnicki@pogo.udel.edu +4 -4
+ Use environment variable to specify the base path to openssl.
+
+ ports/winnt/ntpdate/ntpdate.dsp@1.15, 2006-06-27 21:20:18+00:00, burnicki@pogo.udel.edu +2 -2
+ Use environment variable to specify the base path to openssl.
+
+ ports/winnt/ntpdc/ntpdc.dsp@1.17, 2006-06-27 21:20:18+00:00, burnicki@pogo.udel.edu +2 -2
+ Use environment variable to specify the base path to openssl.
+
+ ports/winnt/ntpq/ntpq.dsp@1.18, 2006-06-27 21:20:18+00:00, burnicki@pogo.udel.edu +2 -2
+ Use environment variable to specify the base path to openssl.
+
+ ports/winnt/ntptrace/ntptrace.dsp@1.10, 2006-06-27 21:20:18+00:00, burnicki@pogo.udel.edu +2 -2
+ Use environment variable to specify the base path to openssl.
+
+ChangeSet@1.1353.1.42, 2006-06-27 07:48:03-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P12
+ TAG: NTP_4_2_3P12
+
+ packageinfo.sh@1.5, 2006-06-27 07:47:53-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P12
+
+ChangeSet@1.1251.97.15, 2006-06-27 07:02:41-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P0_RC7
+ TAG: NTP_4_2_2P0_RC7
+
+ packageinfo.sh@1.27.4.1, 2006-06-27 07:02:33-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P0_RC7
+
+ChangeSet@1.1251.97.14, 2006-06-27 04:19:41-04:00, stenn@whimsy.udel.edu +2 -0
+ Resolve the ambiguity in the copyright file
+
+ NEWS@1.50.1.1, 2006-06-27 04:19:13-04:00, stenn@whimsy.udel.edu +2 -0
+ Resolve the ambiguity in the copyright file
+
+ html/copyright.html@1.33.1.1, 2006-06-27 04:19:12-04:00, stenn@whimsy.udel.edu +4 -4
+ Resolve the ambiguity in the copyright file
+
+ChangeSet@1.1353.1.40, 2006-06-26 07:50:16-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P11
+ TAG: NTP_4_2_3P11
+
+ packageinfo.sh@1.4, 2006-06-26 07:50:07-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P11
+
+ChangeSet@1.1251.97.13, 2006-06-26 07:03:11-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P0_RC6
+ TAG: NTP_4_2_2P0_RC6
+
+ packageinfo.sh@1.27.3.1, 2006-06-26 07:03:02-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P0_RC6
+
+ChangeSet@1.1251.97.12, 2006-06-26 03:23:59-04:00, stenn@whimsy.udel.edu +3 -0
+ Documentation updated from Dave Mills
+
+ html/ntpdsim.html@1.5, 2006-06-26 03:23:33-04:00, stenn@whimsy.udel.edu +3 -3
+ Documentation updated from Dave Mills
+
+ html/scripts/links7.txt@1.2, 2006-06-26 03:23:34-04:00, stenn@whimsy.udel.edu +1 -0
+ Documentation updated from Dave Mills
+
+ html/scripts/links9.txt@1.3, 2006-06-26 03:23:34-04:00, stenn@whimsy.udel.edu +1 -0
+ Documentation updated from Dave Mills
+
+ChangeSet@1.1251.97.11, 2006-06-26 03:06:50-04:00, stenn@whimsy.udel.edu +3 -0
+ New documentation files from Dave Mills
+
+ html/groups.html@1.1, 2006-06-26 03:06:10-04:00, stenn@whimsy.udel.edu +47 -0
+
+ html/groups.html@1.0, 2006-06-26 03:06:10-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-stable/html/groups.html
+
+ html/ntp_conf.html@1.1, 2006-06-26 03:06:11-04:00, stenn@whimsy.udel.edu +173 -0
+
+ html/ntp_conf.html@1.0, 2006-06-26 03:06:11-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-stable/html/ntp_conf.html
+
+ html/ntpdsim_new.html@1.1, 2006-06-26 03:06:11-04:00, stenn@whimsy.udel.edu +102 -0
+
+ html/ntpdsim_new.html@1.0, 2006-06-26 03:06:11-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-stable/html/ntpdsim_new.html
+
+ChangeSet@1.1251.97.10, 2006-06-26 02:52:54-04:00, stenn@whimsy.udel.edu +1 -0
+ Fix the ntp-keygen URL (Dave Mills) in authopt.html
+
+ html/authopt.html@1.40, 2006-06-26 02:52:07-04:00, stenn@whimsy.udel.edu +2 -2
+ Fix the ntp-keygen URL (Dave Mills) in authopt.html
+
+ChangeSet@1.1353.1.36, 2006-06-26 01:10:19-04:00, stenn@whimsy.udel.edu +1 -0
+ setsockopt() notes
+
+ ntpd/ntp_io.c@1.227, 2006-06-26 01:09:11-04:00, stenn@whimsy.udel.edu +3 -2
+ setsockopt() notes
+
+ChangeSet@1.1353.1.35, 2006-06-26 00:51:09-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 658] hppa2.0-hp-hpux10.20 cc needs a bigger -H for cpp
+
+ configure.ac@1.387, 2006-06-26 00:49:24-04:00, stenn@whimsy.udel.edu +8 -0
+ [Bug 658] hppa2.0-hp-hpux10.20 cc needs a bigger -H for cpp
+
+ChangeSet@1.1353.1.34, 2006-06-25 19:52:52-04:00, stenn@whimsy.udel.edu +1 -0
+ cleanup
+
+ sntp/Makefile.am@1.14, 2006-06-25 19:52:28-04:00, stenn@whimsy.udel.edu +2 -3
+ cleanup
+
+ChangeSet@1.1251.97.9, 2006-06-25 19:10:06-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 657]: IP_MULTICAST_LOOP uses a u_char value/size
+
+ ntpd/ntp_io.c@1.187.1.18, 2006-06-25 19:09:44-04:00, stenn@whimsy.udel.edu +5 -5
+ [Bug 657]: IP_MULTICAST_LOOP uses a u_char value/size
+
+ChangeSet@1.1251.97.8, 2006-06-25 17:00:47-04:00, stenn@whimsy.udel.edu +4 -0
+ distcheck fixes
+
+ BitKeeper/etc/ignore@1.35.1.2, 2006-06-25 16:56:53-04:00, stenn@whimsy.udel.edu +1 -0
+ added sntp/bincheck.mf
+
+ Makefile.am@1.48.1.5, 2006-06-25 16:58:56-04:00, stenn@whimsy.udel.edu +1 -0
+ cleanup; distcheck now works from sntp
+
+ bootstrap@1.4.3.1, 2006-06-25 16:59:01-04:00, stenn@whimsy.udel.edu +2 -0
+ cleanup; distcheck now works from sntp
+
+ sntp/Makefile.am@1.6.1.1, 2006-06-25 16:58:07-04:00, stenn@whimsy.udel.edu +5 -23
+ cleanup; distcheck now works from sntp
+
+ChangeSet@1.1353.1.31, 2006-06-25 07:51:20-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P10
+ TAG: NTP_4_2_3P10
+
+ packageinfo.sh@1.3, 2006-06-25 07:51:10-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P10
+
+ChangeSet@1.1251.97.7, 2006-06-25 07:03:22-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P0_RC5
+ TAG: NTP_4_2_2P0_RC5
+
+ packageinfo.sh@1.27.2.1, 2006-06-25 07:03:11-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P0_RC5
+
+ChangeSet@1.1353.1.30, 2006-06-25 04:50:29-04:00, stenn@whimsy.udel.edu +1 -0
+ Bail on an autogen error
+
+ bootstrap@1.11, 2006-06-25 04:50:01-04:00, stenn@whimsy.udel.edu +2 -1
+ Bail on an autogen error
+
+ChangeSet@1.1353.1.28, 2006-06-24 18:12:20-04:00, stenn@deacon.udel.edu +1 -0
+ fix quoting
+
+ BitKeeper/triggers/pre-resolve.licfix@1.2, 2006-06-24 18:11:52-04:00, stenn@deacon.udel.edu +1 -1
+ fix quoting
+
+ChangeSet@1.1251.98.4, 2006-06-24 18:45:02+00:00, kardel@pogo.udel.edu +1 -0
+ ntpq_ops.c:
+ fix a type punned pointer issue reported by gcc 4
+
+ ntpq/ntpq_ops.c@1.20.3.1, 2006-06-24 18:44:18+00:00, kardel@pogo.udel.edu +6 -6
+ fix a type punned pointer issue reported by gcc 4
+
+ChangeSet@1.1251.98.3, 2006-06-24 18:31:47+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_shm.c:
+ fix gcc 4 uninitialized warning
+
+ ntpd/refclock_shm.c@1.17, 2006-06-24 18:31:01+00:00, kardel@pogo.udel.edu +4 -0
+ fix gcc 4 uninitialized warning
+
+ChangeSet@1.1251.98.2, 2006-06-24 18:24:35+00:00, kardel@pogo.udel.edu +4 -0
+ data_mbg.c, refclock_parse.c, mbg_gps166.h, clk_rawdcf.c:
+ fix gcc 4 signedness complaints
+
+ include/mbg_gps166.h@1.5.1.2, 2006-06-24 18:24:02+00:00, kardel@pogo.udel.edu +7 -4
+ fix gcc 4 signedness complaints
+
+ libparse/clk_rawdcf.c@1.14, 2006-06-24 18:24:08+00:00, kardel@pogo.udel.edu +10 -4
+ fix gcc 4 signedness complaints
+
+ libparse/data_mbg.c@1.5.1.2, 2006-06-24 18:24:08+00:00, kardel@pogo.udel.edu +17 -14
+ fix gcc 4 signedness complaints
+
+ ntpd/refclock_parse.c@1.35.1.14, 2006-06-24 18:24:11+00:00, kardel@pogo.udel.edu +14 -7
+ fix gcc 4 signedness complaints
+
+ChangeSet@1.1251.98.1, 2006-06-24 17:39:54+00:00, kardel@pogo.udel.edu +4 -0
+ refclock_acts.c:
+ NetBSD Coverity CID 3797: bad return code check for open(2) fixed
+ (!fd replaced with fd < 0)
+ ntp_util.c:
+ NetBSD Coverity CID 3804: avoid file pointer leak
+ refclock_parse.c:
+ NetBSD Coverity CID 3796: possible NULL deref
+ ntpq.c:
+ NetBSD Coverity CID 3799: overrun static array (off by one) fixed
+
+ ntpd/ntp_util.c@1.36.2.2, 2006-06-24 17:23:41+00:00, kardel@pogo.udel.edu +1 -0
+ NetBSD Coverity CID 3804: avoid file pointer leak
+
+ ntpd/refclock_acts.c@1.25.1.2, 2006-06-24 17:29:57+00:00, kardel@pogo.udel.edu +1 -1
+ NetBSD Coverity CID 3797: bad return code check for open(2) fixed
+ (!fd replaced with fd < 0)
+
+ ntpd/refclock_parse.c@1.35.1.13, 2006-06-24 17:38:43+00:00, kardel@pogo.udel.edu +5 -1
+ NetBSD Coverity CID 3796: possible NULL deref
+
+ ntpq/ntpq.c@1.55.1.6, 2006-06-24 17:26:57+00:00, kardel@pogo.udel.edu +1 -1
+ NetBSD Coverity CID 3799: overrun static array (off by one) fixed
+
+ChangeSet@1.1353.1.26, 2006-06-24 16:50:45+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ implement fix for bug 614
+ socket fds will be moved out of the
+ stdio reserved area if at all possible
+
+ ntpd/ntp_io.c@1.224, 2006-06-24 16:48:27+00:00, kardel@pogo.udel.edu +106 -27
+ implement fix for bug 614
+ socket fds will be moved out of the
+ stdio reserved area if at all possible
+
+ChangeSet@1.1251.97.5, 2006-06-24 16:46:25+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ implement fix for bug 614
+ socket fds will be moved out of the stdio reserved
+ space if at all possible
+
+ ntpd/ntp_io.c@1.187.1.17, 2006-06-24 16:44:08+00:00, kardel@pogo.udel.edu +107 -27
+ implement fix for bug 614
+ socket fds will be moved out of the stdio reserved
+ space if at all possible
+
+ChangeSet@1.1353.1.25, 2006-06-23 07:48:33-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P9
+ TAG: NTP_4_2_3P9
+
+ packageinfo.sh@1.2, 2006-06-23 07:48:22-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P9
+
+ChangeSet@1.1251.97.4, 2006-06-23 07:02:47-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P0_RC4
+ TAG: NTP_4_2_2P0_RC4
+
+ packageinfo.sh@1.27.1.9, 2006-06-23 07:02:37-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P0_RC4
+
+ChangeSet@1.1251.97.3, 2006-06-22 17:07:33-04:00, stenn@whimsy.udel.edu +1 -0
+ Remove the license: key from etc/config to make the bk4 upgrade easier.
+
+ BitKeeper/etc/config@1.7.1.1, 2006-06-22 17:07:13-04:00, stenn@whimsy.udel.edu +2 -1
+ Remove the license: key from etc/config to make the bk4 upgrade easier.
+
+ChangeSet@1.1353.1.23, 2006-06-22 16:17:02-04:00, stenn@whimsy.udel.edu +2 -0
+ break the link between -stable and -dev copies of packageinfo.sh
+
+ BitKeeper/deleted/.del-packageinfo.sh~7f44215e99c0cd03@1.47, 2006-06-22 16:15:09-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: packageinfo.sh
+
+ packageinfo.sh@1.1, 2006-06-22 16:15:29-04:00, stenn@whimsy.udel.edu +26 -0
+
+ packageinfo.sh@1.0, 2006-06-22 16:15:29-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-632/packageinfo.sh
+
+ChangeSet@1.1251.97.2, 2006-06-22 19:28:28+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_parse.c:
+ bug 632: update kernel PPS offsets when PPS offset is re-configured
+
+ ntpd/refclock_parse.c@1.35.1.12, 2006-06-22 19:26:08+00:00, kardel@pogo.udel.edu +10 -4
+ bug 632: update kernel PPS offsets when PPS offset is re-configured
+
+ChangeSet@1.1353.1.22, 2006-06-22 07:03:29-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P8
+ TAG: NTP_4_2_3P8
+
+ packageinfo.sh@1.46, 2006-06-22 07:03:18-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P8
+
+ChangeSet@1.1353.1.21, 2006-06-22 00:29:56-04:00, stenn@whimsy.udel.edu +1 -0
+ cmd_args.c cleanup
+
+ ntpd/cmd_args.c@1.41, 2006-06-22 00:29:20-04:00, stenn@whimsy.udel.edu +3 -153
+ cleanup
+
+ChangeSet@1.1353.1.20, 2006-06-21 07:03:02-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P7
+ TAG: NTP_4_2_3P7
+
+ packageinfo.sh@1.45, 2006-06-21 07:02:55-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P7
+
+ChangeSet@1.1353.1.19, 2006-06-21 06:17:57-04:00, stenn@whimsy.udel.edu +1 -0
+ OSF4 does not have RTM_{NEW,DEL}ADDR
+
+ ntpd/ntp_io.c@1.223, 2006-06-21 06:17:28-04:00, stenn@whimsy.udel.edu +4 -0
+ OSF4 does not have RTM_{NEW,DEL}ADDR
+
+ChangeSet@1.1353.1.18, 2006-06-21 03:52:10-04:00, stenn@whimsy.udel.edu +1 -0
+ Use a pointer to feed the options to optionUsage() to avoid a struct copy
+
+ ntpd/cmd_args.c@1.40, 2006-06-21 03:51:43-04:00, stenn@whimsy.udel.edu +4 -4
+ Use a pointer to feed the options to optionUsage() to avoid a struct copy
+
+ChangeSet@1.1353.1.17, 2006-06-20 17:42:13-04:00, stenn@whimsy.udel.edu +2 -0
+ Protect COMMAND since we use it as an autogen keyword
+
+ ntpdc/ntpdc.c@1.52, 2006-06-20 17:40:31-04:00, stenn@whimsy.udel.edu +9 -4
+ Protect COMMAND since we use it as an autogen keyword
+
+ ntpq/ntpq.c@1.63, 2006-06-20 17:40:30-04:00, stenn@whimsy.udel.edu +10 -5
+ Protect COMMAND since we use it as an autogen keyword
+
+ChangeSet@1.1353.1.16, 2006-06-20 07:03:15-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P6
+ TAG: NTP_4_2_3P6
+
+ packageinfo.sh@1.44, 2006-06-20 07:03:04-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P6
+
+ChangeSet@1.1353.1.14, 2006-06-20 03:15:38-04:00, stenn@whimsy.udel.edu +1 -0
+ Fix the configure.ac check for rt_msghdr
+
+ configure.ac@1.386, 2006-06-20 03:15:13-04:00, stenn@whimsy.udel.edu +2 -3
+ Fix the configure.ac check for rt_msghdr
+
+ChangeSet@1.1353.1.13, 2006-06-19 07:24:31-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P5
+ TAG: NTP_4_2_3P5
+
+ packageinfo.sh@1.42, 2006-06-19 07:24:21-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P5
+
+ChangeSet@1.1251.97.1, 2006-06-19 07:02:56-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P0_RC3
+ TAG: NTP_4_2_2P0_RC3
+
+ packageinfo.sh@1.27.1.8, 2006-06-19 07:02:45-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P0_RC3
+
+ChangeSet@1.1353.1.12, 2006-06-19 04:16:30-04:00, stenn@whimsy.udel.edu +1 -0
+ Update the NEWS file for the dynamic interface scan fix
+
+ NEWS@1.52, 2006-06-19 04:15:56-04:00, stenn@whimsy.udel.edu +1 -0
+ Update the NEWS file for the dynamic interface scan fix
+
+ChangeSet@1.1251.96.1, 2006-06-19 02:31:54-04:00, stenn@pogo.udel.edu +1 -0
+ Avoid hardcoded path to bash for the bootstrap script
+
+ bootstrap@1.4.2.1, 2006-06-19 02:31:43-04:00, stenn@pogo.udel.edu +1 -1
+ Avoid hardcoded path to bash for the bootstrap script
+
+ChangeSet@1.1353.3.8, 2006-06-18 20:14:55-04:00, stenn@deacon.udel.edu +1 -0
+ Bash might not be in /bin/bash (for bootstrap)
+
+ bootstrap@1.9, 2006-06-18 20:14:47-04:00, stenn@deacon.udel.edu +9 -6
+ Bash might not be in /bin/bash (for bootstrap)
+
+ChangeSet@1.1353.3.7, 2006-06-18 20:12:51-04:00, stenn@deacon.udel.edu +1 -0
+ ignore:
+ added libopts/*
+
+ BitKeeper/etc/ignore@1.50, 2006-06-18 20:12:06-04:00, stenn@deacon.udel.edu +1 -0
+ added libopts/*
+
+ChangeSet@1.1251.94.19, 2006-06-18 20:09:27-04:00, stenn@deacon.udel.edu +1 -0
+ bash (for the bootstrap script) might not be /bin/bash
+
+ bootstrap@1.4.1.1, 2006-06-18 20:09:18-04:00, stenn@deacon.udel.edu +1 -1
+ bash (for the bootstrap script) might not be /bin/bash
+
+ChangeSet@1.1353.1.9, 2006-06-18 22:18:50+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ import fix for bug 637
+
+ ntpd/ntp_io.c@1.221, 2006-06-18 22:18:19+00:00, kardel@pogo.udel.edu +22 -9
+ import fix for bug 637
+
+ChangeSet@1.1353.3.6, 2006-06-18 07:24:11-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P4
+ TAG: NTP_4_2_3P4
+
+ packageinfo.sh@1.40, 2006-06-18 07:24:01-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P4
+
+ChangeSet@1.1251.94.18, 2006-06-18 07:03:14-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P0_RC2
+ TAG: NTP_4_2_2P0_RC2
+
+ packageinfo.sh@1.27.1.7, 2006-06-18 07:03:05-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P0_RC2
+
+ChangeSet@1.1353.3.5, 2006-06-18 02:18:46-04:00, stenn@whimsy.udel.edu +1 -0
+ The fix for bug 637 needs work for ntp-dev
+
+ ntpd/ntp_io.c@1.218.1.1, 2006-06-18 02:18:15-04:00, stenn@whimsy.udel.edu +2 -0
+ The fix for bug 637 needs work for ntp-dev
+
+ChangeSet@1.1353.3.4, 2006-06-18 02:14:55-04:00, stenn@whimsy.udel.edu +1 -0
+ ntp-dev uses repotype=dev
+
+ packageinfo.sh@1.39, 2006-06-18 02:14:34-04:00, stenn@whimsy.udel.edu +2 -2
+ ntp-dev uses repotype=dev
+
+ChangeSet@1.1251.94.17, 2006-06-18 02:05:42-04:00, stenn@whimsy.udel.edu +2 -0
+ Make the license check triggers work with bk3 and bk4
+
+ BitKeeper/triggers/post-incoming.license-warn@1.6, 2006-06-18 02:05:11-04:00, stenn@whimsy.udel.edu +9 -3
+ Make the license check triggers work with bk3 and bk4
+
+ BitKeeper/triggers/pre-resolve.license-chk@1.5.1.2, 2006-06-18 02:05:12-04:00, stenn@whimsy.udel.edu +10 -4
+ Make the license check triggers work with bk3 and bk4
+
+ChangeSet@1.1251.94.15, 2006-06-17 22:47:38-04:00, stenn@whimsy.udel.edu +2 -0
+ debug
+
+ BitKeeper/triggers/post-incoming.license-warn@1.5, 2006-06-17 22:47:19-04:00, stenn@whimsy.udel.edu +1 -0
+ debug
+
+ BitKeeper/triggers/pre-resolve.license-chk@1.5.1.1, 2006-06-17 22:47:19-04:00, stenn@whimsy.udel.edu +1 -0
+ debug
+
+ChangeSet@1.1353.3.1, 2006-06-17 22:32:24-04:00, stenn@whimsy.udel.edu +1 -0
+ typo
+
+ BitKeeper/triggers/pre-resolve.license-chk@1.3.1.1, 2006-06-17 22:31:40-04:00, stenn@whimsy.udel.edu +0 -1
+ typo
+
+ChangeSet@1.1251.94.14, 2006-06-17 22:05:18-04:00, stenn@whimsy.udel.edu +1 -0
+ typo
+
+ BitKeeper/triggers/pre-resolve.license-chk@1.5, 2006-06-17 22:04:50-04:00, stenn@whimsy.udel.edu +0 -1
+ typo
+
+ChangeSet@1.1353.1.7, 2006-06-18 00:01:22+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ skip interfaces that cannot be bound to
+
+ ntpd/ntp_io.c@1.219, 2006-06-17 23:59:09+00:00, kardel@pogo.udel.edu +1 -0
+ skip interfaces that cannot be bound to
+
+ChangeSet@1.1251.94.13, 2006-06-17 19:57:47-04:00, stenn@whimsy.udel.edu +2 -0
+ More bk-4 license check trigger cleanup
+
+ BitKeeper/triggers/post-incoming.license-warn@1.4, 2006-06-17 19:57:29-04:00, stenn@whimsy.udel.edu +2 -0
+ More bk-4 license check trigger cleanup
+
+ BitKeeper/triggers/pre-resolve.license-chk@1.4, 2006-06-17 19:57:29-04:00, stenn@whimsy.udel.edu +2 -0
+ More bk-4 license check trigger cleanup
+
+ChangeSet@1.1251.95.1, 2006-06-17 23:09:55+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ move decision into seperate function and insure compilability on
+ non IPv6 platforms
+
+ ntpd/ntp_io.c@1.187.1.16, 2006-06-17 23:08:26+00:00, kardel@pogo.udel.edu +24 -8
+ move decision into seperate function and insure compilability on
+ non IPv6 platforms
+
+ChangeSet@1.1251.94.12, 2006-06-17 18:42:11-04:00, stenn@whimsy.udel.edu +2 -0
+ More bk-4 license check trigger cleanup
+
+ BitKeeper/triggers/post-incoming.license-warn@1.3, 2006-06-17 18:41:50-04:00, stenn@whimsy.udel.edu +11 -4
+ More bk-4 license check trigger cleanup
+
+ BitKeeper/triggers/pre-resolve.license-chk@1.3, 2006-06-17 18:41:50-04:00, stenn@whimsy.udel.edu +12 -4
+ More bk-4 license check trigger cleanup
+
+ChangeSet@1.1251.94.11, 2006-06-17 13:53:20-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 637] Ignore UP in*addr_any interfaces
+
+ ntpd/ntp_io.c@1.187.1.15, 2006-06-17 13:53:00-04:00, stenn@whimsy.udel.edu +15 -0
+ [Bug 637] Ignore UP in*addr_any interfaces
+
+ChangeSet@1.1251.94.10, 2006-06-17 13:47:07-04:00, stenn@whimsy.udel.edu +2 -0
+ Deal with -stable rcpoint
+
+ packageinfo.sh@1.27.1.6, 2006-06-17 13:46:47-04:00, stenn@whimsy.udel.edu +1 -0
+ Deal with -stable rcpoint
+
+ scripts/VersionName@1.4, 2006-06-17 13:46:48-04:00, stenn@whimsy.udel.edu +10 -0
+ Deal with -stable rcpoint
+
+ChangeSet@1.1251.94.9, 2006-06-17 12:37:23-04:00, stenn@whimsy.udel.edu +2 -0
+ bk-3 uses sccscat, bk-4 uses annotate
+
+ BitKeeper/triggers/post-incoming.license-warn@1.2, 2006-06-17 12:37:04-04:00, stenn@whimsy.udel.edu +10 -1
+ bk-3 uses sccscat, bk-4 uses annotate
+
+ BitKeeper/triggers/pre-resolve.license-chk@1.2, 2006-06-17 12:37:04-04:00, stenn@whimsy.udel.edu +9 -1
+ bk-3 uses sccscat, bk-4 uses annotate
+
+ChangeSet@1.1353.1.4, 2006-06-17 07:21:46-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P3
+ TAG: NTP_4_2_3P3
+
+ packageinfo.sh@1.37, 2006-06-17 07:21:37-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P3
+
+ChangeSet@1.1251.94.8, 2006-06-17 07:02:53-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P0_RC
+ TAG: NTP_4_2_2P0_RC
+
+ packageinfo.sh@1.27.1.5, 2006-06-17 07:02:44-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P0_RC
+
+ChangeSet@1.1353.1.2, 2006-06-16 18:33:41-04:00, stenn@pogo.udel.edu +4 -0
+ Makefile.am:
+ "make distcheck" is now happy with the libopts/ stuff
+ configure.ac, Makefile.am:
+ [Bug 635] get libopts/ properly distributed
+ [Bug 635] Properly distribute libopts/ .
+ Makefile.am:
+ Distribute copyright.def and debug-opt.def
+ debug-opt.def:
+ Change mode to -rw-rw-rw-
+
+ Makefile.am@1.66, 2006-06-16 18:33:23-04:00, stenn@pogo.udel.edu +61 -57
+ "make distcheck" is now happy with the libopts/ stuff
+
+ Makefile.am@1.65, 2006-06-16 15:49:25-04:00, stenn@pogo.udel.edu +1 -1
+ [Bug 635] get libopts/ properly distributed
+
+ Makefile.am@1.64, 2006-06-16 03:49:12-04:00, stenn@pogo.udel.edu +6 -3
+ [Bug 635] Properly distribute libopts/ .
+
+ configure.ac@1.385, 2006-06-16 15:49:26-04:00, stenn@pogo.udel.edu +1 -2
+ [Bug 635] get libopts/ properly distributed
+
+ configure.ac@1.384, 2006-06-16 03:49:13-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 635] Properly distribute libopts/ .
+
+ include/Makefile.am@1.23, 2006-06-16 03:47:49-04:00, stenn@pogo.udel.edu +1 -1
+ Distribute copyright.def and debug-opt.def
+
+ include/debug-opt.def@1.3, 2006-06-16 03:46:23-04:00, stenn@pogo.udel.edu +0 -0
+ Change mode to -rw-rw-rw-
+
+ChangeSet@1.1251.94.7, 2006-06-16 18:02:54-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 633] Avoid writing files in srcdir
+
+ scripts/genver@1.4, 2006-06-16 17:58:49-04:00, stenn@whimsy.udel.edu +8 -8
+ [Bug 633] Avoid writing files in srcdir
+
+ChangeSet@1.1351.1.1, 2006-06-16 02:54:50-04:00, stenn@pogo.udel.edu +1 -0
+ Use separate copies of libopts for ntp and sntp
+
+ bootstrap@1.6.1.1, 2006-06-16 02:54:38-04:00, stenn@pogo.udel.edu +7 -0
+ Use separate copies of libopts for ntp and sntp
+
+ChangeSet@1.1353, 2006-06-15 07:12:32-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P2
+ TAG: NTP_4_2_3P2
+
+ packageinfo.sh@1.35, 2006-06-15 07:12:20-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P2
+
+ChangeSet@1.1352, 2006-06-15 04:46:11-04:00, stenn@whimsy.udel.edu +1 -0
+ Try harder to get sntp/libopts/Makefile.in to get the correct srcdir path
+
+ bootstrap@1.7, 2006-06-15 04:45:42-04:00, stenn@whimsy.udel.edu +4 -0
+ Try harder to get sntp/libopts/Makefile.in to get the correct srcdir path
+
+ChangeSet@1.1347.2.3, 2006-06-13 07:27:18-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P1
+ TAG: NTP_4_2_3P1
+
+ packageinfo.sh@1.34, 2006-06-13 07:27:10-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P1
+
+ChangeSet@1.1251.94.6, 2006-06-13 07:02:41-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P0_RC
+ TAG: NTP_4_2_2P0_RC
+
+ packageinfo.sh@1.27.1.4, 2006-06-13 07:02:31-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2P0_RC
+
+ChangeSet@1.1251.94.5, 2006-06-13 04:43:41-04:00, stenn@whimsy.udel.edu +1 -0
+ Distribute the bootstrap script
+
+ Makefile.am@1.48.1.4, 2006-06-13 04:43:22-04:00, stenn@whimsy.udel.edu +1 -0
+ Distribute the bootstrap script
+
+ChangeSet@1.1347.2.1, 2006-06-12 07:47:44-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3P0
+ TAG: NTP_4_2_3P0
+
+ packageinfo.sh@1.32, 2006-06-12 07:47:36-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3P0
+
+ChangeSet@1.1251.94.4, 2006-06-12 07:03:05-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2P0_RC
+ TAG: NTP_4_2_2P0_RC
+
+ packageinfo.sh@1.27.1.3, 2006-06-12 07:02:55-04:00, stenn@whimsy.udel.edu +2 -2
+ NTP_4_2_2P0_RC
+
+ChangeSet@1.1347.1.10, 2006-06-12 01:42:27-04:00, stenn@whimsy.udel.edu +1 -0
+ Explain how to disable the trigger stuff
+
+ BitKeeper/triggers/trigger.README@1.4, 2006-06-12 01:41:47-04:00, stenn@whimsy.udel.edu +6 -0
+ Explain how to disable the trigger stuff
+
+ChangeSet@1.1347.1.9, 2006-06-12 01:37:08-04:00, stenn@whimsy.udel.edu +1 -0
+ cleanup
+
+ packageinfo.sh@1.31, 2006-06-12 01:36:39-04:00, stenn@whimsy.udel.edu +2 -2
+ cleanup
+
+ChangeSet@1.1251.94.3, 2006-06-11 18:38:11-04:00, stenn@whimsy.udel.edu +2 -0
+ Install license check triggers.
+
+ BitKeeper/triggers/post-incoming.license-warn@1.1, 2006-06-11 18:35:50-04:00, stenn@whimsy.udel.edu +14 -0
+
+ BitKeeper/triggers/post-incoming.license-warn@1.0, 2006-06-11 18:35:50-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-stable/BitKeeper/triggers/post-incoming.license-warn
+
+ BitKeeper/triggers/pre-resolve.license-chk@1.1, 2006-06-11 18:35:51-04:00, stenn@whimsy.udel.edu +21 -0
+
+ BitKeeper/triggers/pre-resolve.license-chk@1.0, 2006-06-11 18:35:51-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-stable/BitKeeper/triggers/pre-resolve.license-chk
+
+ChangeSet@1.1251.94.2, 2006-06-11 17:49:08-04:00, stenn@whimsy.udel.edu +1 -0
+ Add some internal distribution checks
+
+ packageinfo.sh@1.27.1.2, 2006-06-11 17:48:43-04:00, stenn@whimsy.udel.edu +3 -3
+ Add some internal distribution checks
+
+ChangeSet@1.1347.1.7, 2006-06-11 01:34:07+00:00, rick@pogo.udel.edu +1 -0
+ pre-resolve.fixlic:
+ Block bad repos from being pulled into this repo,
+ or if this repo is bad, stops it from being used.
+
+ Please do a 'bk fix -c' and edit pre-resolve.fixlic
+ to either rename it or make it better.
+ Then bk new them and bk commit.
+ Thanks. -- Rick Smith
+
+ BitKeeper/triggers/pre-resolve.licfix@1.1, 2006-06-11 01:33:05+00:00, rick@pogo.udel.edu +32 -0
+
+ BitKeeper/triggers/pre-resolve.licfix@1.0, 2006-06-11 01:33:05+00:00, rick@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/lm/ntp-fixed.license/BitKeeper/triggers/pre-resolve.licfix
+
+ChangeSet@1.1347.1.6, 2006-06-10 01:37:28-04:00, stenn@whimsy.udel.edu +2 -0
+ bootstrap:
+ there was a libopts dependency name problem with the old autoreconf sequence - change it to something slower that works.
+ flock-build:
+ lose --with-sntp as it is no longer needed
+
+ bootstrap@1.6, 2006-06-10 01:36:09-04:00, stenn@whimsy.udel.edu +2 -2
+ there was a libopts dependency name problem with the old autoreconf sequence - change it to something slower that works.
+
+ flock-build@1.36, 2006-06-10 01:34:40-04:00, stenn@whimsy.udel.edu +1 -1
+ lose --with-sntp as it is no longer needed
+
+ChangeSet@1.1347.1.5, 2006-06-09 19:30:12-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_3
+ TAG: NTP_4_2_3
+
+ packageinfo.sh@1.29, 2006-06-09 19:29:55-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_3
+
+ChangeSet@1.1251.94.1, 2006-06-06 16:19:55-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_2
+ TAG: NTP_4_2_2
+
+ packageinfo.sh@1.27.1.1, 2006-06-06 16:19:45-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_2
+
+ChangeSet@1.1347.1.4, 2006-06-06 05:05:56-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 500] sntp is now part of the team
+
+ Makefile.am@1.62, 2006-06-06 05:04:23-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 500] sntp is now part of the team
+
+ configure.ac@1.381.1.1, 2006-06-06 05:04:28-04:00, stenn@whimsy.udel.edu +1 -20
+ [Bug 500] sntp is now part of the team
+
+ChangeSet@1.1350, 2006-06-06 08:47:18+00:00, kardel@pogo.udel.edu +2 -0
+ ntpdbase-opts.def:
+ add U option for update interval for
+ interface scan
+ cmd_args.c:
+ adjust argument processing to a number
+
+ ntpd/cmd_args.c@1.39, 2006-06-06 08:45:49+00:00, kardel@pogo.udel.edu +5 -5
+ adjust argument processing to a number
+
+ ntpd/ntpdbase-opts.def@1.2.1.1, 2006-06-06 08:46:25+00:00, kardel@pogo.udel.edu +13 -0
+ add U option for update interval for
+ interface scan
+
+ChangeSet@1.1347.1.3, 2006-06-06 04:44:33-04:00, stenn@deacon.udel.edu +1 -0
+ Mention autogen in NEWS
+
+ NEWS@1.51, 2006-06-06 04:44:26-04:00, stenn@deacon.udel.edu +2 -0
+ Mention autogen in NEWS
+
+ChangeSet@1.1347.1.2, 2006-06-06 04:21:52-04:00, stenn@deacon.udel.edu +14 -0
+ Copyright cleanup
+
+ clockstuff/Makefile.am@1.5, 2006-06-06 04:14:26-04:00, stenn@deacon.udel.edu +2 -0
+ Copyright cleanup
+
+ clockstuff/clktest-opts.def@1.3, 2006-06-06 04:14:26-04:00, stenn@deacon.udel.edu +0 -22
+ Copyright cleanup
+
+ include/copyright.def@1.3, 2006-06-06 04:14:33-04:00, stenn@deacon.udel.edu +3 -2
+ Copyright cleanup
+
+ ntpd/Makefile.am@1.48, 2006-06-06 04:14:58-04:00, stenn@deacon.udel.edu +6 -6
+ Copyright cleanup
+
+ ntpd/ntpd-opts.def@1.3, 2006-06-06 04:14:58-04:00, stenn@deacon.udel.edu +1 -28
+ Copyright cleanup
+
+ ntpd/ntpdbase-opts.def@1.3, 2006-06-06 04:14:58-04:00, stenn@deacon.udel.edu +0 -13
+ Copyright cleanup
+
+ ntpd/ntpdsim-opts.def@1.3, 2006-06-06 04:14:58-04:00, stenn@deacon.udel.edu +1 -28
+ Copyright cleanup
+
+ ntpdc/Makefile.am@1.30, 2006-06-06 04:15:06-04:00, stenn@deacon.udel.edu +3 -3
+ Copyright cleanup
+
+ ntpdc/ntpdc-opts.def@1.9, 2006-06-06 04:15:06-04:00, stenn@deacon.udel.edu +0 -22
+ Copyright cleanup
+
+ ntpq/Makefile.am@1.22, 2006-06-06 04:15:10-04:00, stenn@deacon.udel.edu +3 -3
+ Copyright cleanup
+
+ ntpq/ntpq-opts.def@1.6, 2006-06-06 04:15:10-04:00, stenn@deacon.udel.edu +1 -42
+ Copyright cleanup
+
+ sntp/sntp-opts.def@1.3, 2006-06-06 04:15:29-04:00, stenn@deacon.udel.edu +3 -24
+ Copyright cleanup
+
+ util/Makefile.am@1.31, 2006-06-06 04:15:34-04:00, stenn@deacon.udel.edu +3 -3
+ Copyright cleanup
+
+ util/ntp-keygen-opts.def@1.3, 2006-06-06 04:15:34-04:00, stenn@deacon.udel.edu +3 -32
+ Copyright cleanup
+
+ChangeSet@1.1347.1.1, 2006-06-06 03:06:10-04:00, stenn@whimsy.udel.edu +2 -0
+ re-enable auto-gen
+
+ bootstrap@1.5, 2006-06-06 03:05:34-04:00, stenn@whimsy.udel.edu +14 -14
+ Re-enable autogen now that we need it.
+
+ ntpd/ntpd.c@1.77.1.1, 2006-06-06 03:03:16-04:00, stenn@whimsy.udel.edu +0 -2
+ lose some old debug output
+
+ChangeSet@1.1251.80.72, 2006-06-05 21:31:04-04:00, stenn@whimsy.udel.edu +1 -0
+ ntp-4.2.3
+
+ packageinfo.sh@1.28, 2006-06-05 21:30:39-04:00, stenn@whimsy.udel.edu +1 -1
+ ntp-4.2.3
+
+ChangeSet@1.1251.80.71, 2006-06-05 19:53:12-04:00, stenn@whimsy.udel.edu +3 -0
+ ntp-4.2.2
+
+ packageinfo.sh@1.27, 2006-06-05 19:22:00-04:00, stenn@whimsy.udel.edu +4 -4
+ Release ntp-4.2.2
+
+ NEWS@1.50, 2006-06-05 19:21:53-04:00, stenn@whimsy.udel.edu +6 -1
+ Release ntp-4.2.2
+
+ scripts/VersionName@1.3, 2006-06-05 19:51:58-04:00, stenn@whimsy.udel.edu +1 -0
+ clean up a corner case
+
+ChangeSet@1.1251.80.70, 2006-05-29 07:02:40-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P257_RC
+ TAG: NTP_4_2_1P257_RC
+
+ packageinfo.sh@1.26, 2006-05-29 07:02:30-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P257_RC
+
+ChangeSet@1.1251.72.45, 2006-05-27 11:04:43+00:00, kardel@pogo.udel.edu +6 -0
+ monopt.html:
+ document conditional nature of process timing debugging
+ ntpd.c:
+ make process timing debug conditional
+ cleanup conditional compilation
+ ntp_util.c, ntp_io.c:
+ make process timing debug conditional
+ ntpd.h:
+ cleanup conditional compile cruft in ntpd.c by defining a macro
+ configure.ac:
+ make process timing debug code conditional (default off)
+
+ configure.ac@1.359.1.30, 2006-05-27 10:59:02+00:00, kardel@pogo.udel.edu +9 -0
+ make process timing debug code conditional (default off)
+
+ html/monopt.html@1.22, 2006-05-27 11:02:54+00:00, kardel@pogo.udel.edu +1 -1
+ document conditional nature of process timing debugging
+
+ include/ntpd.h@1.82.1.16, 2006-05-27 10:59:44+00:00, kardel@pogo.udel.edu +5 -0
+ cleanup conditional compile cruft in ntpd.c by defining a macro
+
+ ntpd/ntp_io.c@1.217, 2006-05-27 11:00:51+00:00, kardel@pogo.udel.edu +9 -7
+ make process timing debug conditional
+
+ ntpd/ntp_util.c@1.41, 2006-05-27 11:01:08+00:00, kardel@pogo.udel.edu +3 -3
+ make process timing debug conditional
+
+ ntpd/ntpd.c@1.61.1.26, 2006-05-27 11:01:15+00:00, kardel@pogo.udel.edu +11 -21
+ make process timing debug conditional
+ cleanup conditional compilation
+
+ChangeSet@1.1251.80.68, 2006-05-27 07:02:40-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P256_RC
+ TAG: NTP_4_2_1P256_RC
+
+ packageinfo.sh@1.25, 2006-05-27 07:02:32-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P256_RC
+
+ChangeSet@1.1251.93.1, 2006-05-26 17:08:21+00:00, kardel@pogo.udel.edu +2 -0
+ ntpdc.h:
+ bug 621
+ change arg_v to struct, add type field
+ ntpdc.c:
+ bug 621
+ change arg_v to struct, add type field, initialize string member
+ always as the 'new' parsing code seems to make that previously
+ unfounded assumption.
+
+ ntpdc/ntpdc.c@1.40.2.6, 2006-05-26 17:05:10+00:00, kardel@pogo.udel.edu +9 -2
+ bug 621
+ change arg_v to struct, add type field, initialize string member
+ always as the 'new' parsing code seems to make that previously
+ unfounded assumption.
+
+ ntpdc/ntpdc.h@1.7, 2006-05-26 17:07:45+00:00, kardel@pogo.udel.edu +4 -2
+ bug 621
+ change arg_v to struct, add type field
+
+ChangeSet@1.1251.80.67, 2006-05-26 14:40:03+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_parse.c:
+ bug 619
+ delay io_addclock() even further as suggested by Ronan Flood
+
+ ntpd/refclock_parse.c@1.35.1.11, 2006-05-26 14:38:20+00:00, kardel@pogo.udel.edu +25 -19
+ bug 619
+ delay io_addclock() even further as suggested by Ronan Flood
+
+ChangeSet@1.1251.80.66, 2006-05-26 07:02:46-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P255_RC
+ TAG: NTP_4_2_1P255_RC
+
+ packageinfo.sh@1.24, 2006-05-26 07:02:38-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P255_RC
+
+ChangeSet@1.1251.92.3, 2006-05-25 18:25:23+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_parse.c:
+ bug #619
+ terminate parse io engine after de-registering
+ from refclock io engine
+
+ ntpd/refclock_parse.c@1.35.3.3, 2006-05-25 18:24:49+00:00, kardel@pogo.udel.edu +12 -7
+ bug #619
+ terminate parse io engine after de-registering
+ from refclock io engine
+
+ChangeSet@1.1251.92.2, 2006-05-25 18:08:49+00:00, kardel@pogo.udel.edu +2 -0
+ ntp_io.c:
+ add missing BLOCKIO()/UNBLOCKIO() calls in refclock io
+ handling found during analysis for bug #619
+ refclock_parse.c:
+ bug #619
+ complete refclock io structure initialization *before* inserting it into the
+ refclock input machine (avoids null pointer deref)
+
+ ntpd/ntp_io.c@1.187.1.14, 2006-05-25 17:47:54+00:00, kardel@pogo.udel.edu +4 -0
+ add missing BLOCKIO()/UNBLOCKIO() calls in refclock io
+ handling found during analysis for bug #619
+
+ ntpd/refclock_parse.c@1.35.3.2, 2006-05-25 17:44:26+00:00, kardel@pogo.udel.edu +19 -12
+ bug #619
+ complete refclock io structure initialization *before* inserting it into the
+ refclock input machine (avoids null pointer deref)
+
+ChangeSet@1.1251.92.1, 2006-05-25 07:02:50-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P254_RC
+ TAG: NTP_4_2_1P254_RC
+
+ packageinfo.sh@1.23, 2006-05-25 07:02:41-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P254_RC
+
+ChangeSet@1.1251.72.42, 2006-05-25 07:55:42+00:00, kardel@pogo.udel.edu +6 -0
+ monopt.html:
+ document timingstats (only available when daemon is compiled with DEBUG)
+ ntpd.h, ntpd.c, ntp_util.c:
+ support collection of timing data
+ ntp_io.c:
+ implement SO_TIMESTAMP for systems that have it
+ support collection of timing data
+ fix io signal blocking in refclock io handling functions
+ ntp_crypto.c:
+ return OK when interface is not bound
+
+ html/monopt.html@1.21, 2006-05-25 07:36:35+00:00, kardel@pogo.udel.edu +5 -1
+ document timingstats (only available when daemon is compiled with DEBUG)
+
+ include/ntpd.h@1.82.1.15, 2006-05-25 06:55:55+00:00, kardel@pogo.udel.edu +6 -0
+ support collection of timing data
+
+ ntpd/ntp_crypto.c@1.107, 2006-05-25 06:52:30+00:00, kardel@pogo.udel.edu +1 -1
+ return OK when interface is not bound
+
+ ntpd/ntp_io.c@1.215, 2006-05-25 06:53:01+00:00, kardel@pogo.udel.edu +119 -12
+ implement SO_TIMESTAMP for systems that have it
+ support collection of timing data
+ fix io signal blocking in refclock io handling functions
+
+ ntpd/ntp_util.c@1.40, 2006-05-25 06:54:36+00:00, kardel@pogo.udel.edu +39 -0
+ support collection of timing data
+
+ ntpd/ntpd.c@1.61.1.25, 2006-05-25 06:54:47+00:00, kardel@pogo.udel.edu +43 -17
+ support collection of timing data
+
+ChangeSet@1.1251.80.62, 2006-05-24 22:01:55-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #504 Allow forced DNS retry even on failure only if macro FORCE_DNSRETRY is defined
+
+ ntpd/ntp_intres.c@1.47, 2006-05-24 22:01:00-04:00, mayer@pogo.udel.edu +13 -0
+ Bug #504 Allow forced DNS retry even on failure only if macro FORCE_DNSRETRY is defined
+
+ChangeSet@1.1251.80.61, 2006-05-21 14:57:46-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #614 Remove errno manipulation from move_fd()
+
+ ntpd/ntp_io.c@1.187.1.13, 2006-05-21 14:57:23-04:00, mayer@pogo.udel.edu +1 -3
+ Bug #614 Remove errno manipulation from move_fd()
+
+ChangeSet@1.1251.91.1, 2006-05-21 12:10:13-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #614 Changed dup_fd to move_fd and remove for Windows
+
+ ntpd/ntp_io.c@1.187.1.12, 2006-05-21 12:09:34-04:00, mayer@pogo.udel.edu +5 -5
+ Bug #614 Changed dup_fd to move_fd and remove for Windows
+
+ChangeSet@1.1251.80.59, 2006-05-21 07:03:00-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P253_RC
+ TAG: NTP_4_2_1P253_RC
+
+ packageinfo.sh@1.22, 2006-05-21 07:02:52-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P253_RC
+
+ChangeSet@1.1251.80.57, 2006-05-20 19:15:50-04:00, mayer@pogo.udel.edu +2 -0
+ Fix Bug #612: Erroneous FAR macro
+
+ libntp/ntp_rfc2553.c@1.27.1.4, 2006-05-20 19:14:58-04:00, mayer@pogo.udel.edu +2 -5
+ Fix Bug #612: Erroneous FAR macro
+
+ ports/winnt/libntp/dnslookup.c@1.3, 2006-05-20 19:15:27-04:00, mayer@pogo.udel.edu +3 -3
+ Fix Bug #612: Erroneous FAR macro
+
+ChangeSet@1.1251.90.5, 2006-05-20 18:16:07-04:00, stenn@whimsy.udel.edu +2 -0
+ Update the UDel host lists and handle the PWD better
+
+ br-flock@1.9, 2006-05-20 18:15:44-04:00, stenn@whimsy.udel.edu +1 -1
+ Update the UDel host lists and handle the PWD better
+
+ flock-build@1.35, 2006-05-20 18:15:45-04:00, stenn@whimsy.udel.edu +2 -3
+ Update the UDel host lists and handle the PWD better
+
+ChangeSet@1.1251.80.56, 2006-05-20 17:01:51-04:00, mayer@pogo.udel.edu +3 -0
+ Bug fixes for #611, 612, 614 and 530
+
+ libntp/ntp_rfc2553.c@1.27.1.3, 2006-05-20 16:59:38-04:00, mayer@pogo.udel.edu +4 -2
+ Bug #612 Added include for netent structure
+
+ ntpd/ntp_intres.c@1.46, 2006-05-20 17:01:06-04:00, mayer@pogo.udel.edu +1 -1
+ Bug #611 Check for various EAI_* macros
+
+ ntpd/ntp_io.c@1.187.1.11, 2006-05-20 16:58:11-04:00, mayer@pogo.udel.edu +6 -4
+ Bug #530 and #614 fixes to add comments
+
+ChangeSet@1.1251.80.55, 2006-05-16 07:58:39-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #614 Add FOPEN_MAX as a parameter for dup_fd() usage. Also this is the fix for Bug #530
+
+ ntpd/ntp_io.c@1.187.1.10, 2006-05-16 07:58:06-04:00, mayer@pogo.udel.edu +5 -2
+ Bug #614 Add FOPEN_MAX as a parameter for dup_fd() usage. Also this is the fix for Bug #530
+
+ChangeSet@1.1251.80.54, 2006-05-15 19:45:34-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #611. Refix to add additional condition for Win32
+
+ ntpd/ntp_intres.c@1.45, 2006-05-15 19:44:22-04:00, mayer@pogo.udel.edu +2 -0
+ Bug #611. Refix to add additional condition for Win32
+
+ChangeSet@1.1251.80.53, 2006-05-15 19:30:22-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #614 Fix duplicate descriptor code and properly handle error conditions
+
+ ntpd/ntp_io.c@1.187.1.9, 2006-05-15 19:29:52-04:00, mayer@pogo.udel.edu +6 -1
+ Bug #614 Fix duplicate descriptor code and properly handle error conditions
+
+ChangeSet@1.1251.90.4, 2006-05-13 07:02:51-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P252_RC
+ TAG: NTP_4_2_1P252_RC
+
+ packageinfo.sh@1.21, 2006-05-13 07:02:38-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P252_RC
+
+ChangeSet@1.1251.90.3, 2006-05-12 14:57:38-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 611] Fix based on Danny's comment
+
+ ntpd/ntp_intres.c@1.44, 2006-05-12 14:57:20-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 611] Fix based on Danny's comment
+
+ChangeSet@1.1251.90.2, 2006-05-12 16:29:02+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_parse.c:
+ Bug 613: fix spelling
+
+ ntpd/refclock_parse.c@1.35.3.1, 2006-05-12 16:28:09+00:00, kardel@pogo.udel.edu +2 -2
+ Bug 613: fix spelling
+
+ChangeSet@1.1251.90.1, 2006-05-11 13:45:28-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P251_RC
+ TAG: NTP_4_2_1P251_RC
+
+ packageinfo.sh@1.20, 2006-05-11 13:45:21-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P251_RC
+
+ChangeSet@1.1251.89.1, 2006-05-11 15:07:05+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_parse.c:
+ fix spelling
+
+ ntpd/refclock_parse.c@1.35.1.8, 2006-05-11 15:05:06+00:00, kardel@pogo.udel.edu +2 -2
+ fix spelling
+
+ChangeSet@1.1251.80.51, 2006-05-10 23:55:45-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #611 Fix for EAI_* codes and netent definitions
+
+ libntp/ntp_rfc2553.c@1.27.1.2, 2006-05-10 23:55:08-04:00, mayer@pogo.udel.edu +3 -0
+ Bug #612 Fix for EAI_* codes and netent definitions - add netdb.h include
+
+ChangeSet@1.1251.80.50, 2006-05-10 15:05:24-04:00, stenn@whimsy.udel.edu +1 -0
+ allow the AUTORECONF envariable to supply the name of autoreconf
+
+ bootstrap@1.4, 2006-05-10 15:04:31-04:00, stenn@whimsy.udel.edu +4 -2
+ allow the AUTORECONF envariable to supply the name of autoreconf
+
+ChangeSet@1.1251.80.49, 2006-05-09 06:44:15-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P250_RC
+ TAG: NTP_4_2_1P250_RC
+
+ packageinfo.sh@1.19, 2006-05-09 06:44:03-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P250_RC
+
+ChangeSet@1.1251.80.48, 2006-05-09 09:56:16+00:00, kardel@pogo.udel.edu +1 -0
+ ntpd.c:
+ keep block/unblock calls balanced
+
+ ntpd/ntpd.c@1.61.1.24, 2006-05-09 09:55:06+00:00, kardel@pogo.udel.edu +4 -4
+ keep block/unblock calls balanced
+
+ChangeSet@1.1251.88.1, 2006-05-09 09:30:28+00:00, kardel@pogo.udel.edu +1 -0
+ ntpd.c:
+ refill of current buffer missing
+
+ ntpd/ntpd.c@1.61.1.23, 2006-05-09 09:29:43+00:00, kardel@pogo.udel.edu +1 -0
+ refill of current buffer missing
+
+ChangeSet@1.1251.87.1, 2006-05-09 03:22:02-04:00, stenn@whimsy.udel.edu +1 -0
+ prepare for RCs for -stable point releases
+
+ packageinfo.sh@1.18, 2006-05-09 03:21:41-04:00, stenn@whimsy.udel.edu +6 -0
+ prepare for RCs for -stable point releases
+
+ChangeSet@1.1251.80.45, 2006-05-09 07:12:14+00:00, kardel@pogo.udel.edu +1 -0
+ ntpd.c:
+ move freerecvbuf() into block io section
+ test receiver instead of just the rbuf pointer
+
+ ntpd/ntpd.c@1.61.1.22, 2006-05-09 07:11:09+00:00, kardel@pogo.udel.edu +2 -2
+ move freerecvbuf() into block io section
+ test receiver instead of just the rbuf pointer
+
+ChangeSet@1.1251.80.44, 2006-05-08 18:21:44-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P249_RC
+ TAG: NTP_4_2_1P249_RC
+
+ packageinfo.sh@1.17, 2006-05-08 18:21:33-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P249_RC
+
+ChangeSet@1.1251.80.43, 2006-05-08 10:52:36+00:00, burnicki@pogo.udel.edu +2 -0
+ Retrieve version info from packageinfo.sh also under Windows.
+
+ BitKeeper/etc/logging_ok@1.57.3.3, 2006-05-08 10:52:36+00:00, burnicki@pogo.udel.edu +1 -0
+ Logging to repologs@ntp.isc.org accepted
+
+ ports/winnt/scripts/mkver.bat@1.8, 2006-05-08 10:51:53+00:00, burnicki@pogo.udel.edu +45 -18
+ Retrieve version info from packageinfo.sh.
+
+ChangeSet@1.1251.80.42, 2006-05-08 05:34:00-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P248_RC
+ TAG: NTP_4_2_1P248_RC
+
+ packageinfo.sh@1.16, 2006-05-08 05:33:50-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P248_RC
+
+ChangeSet@1.1251.80.41, 2006-05-08 04:59:17-04:00, stenn@whimsy.udel.edu +1 -0
+ handle the initial case where no version files exist
+
+ scripts/genver@1.3, 2006-05-08 04:58:58-04:00, stenn@whimsy.udel.edu +8 -8
+ handle the initial case where no version files exist
+
+ChangeSet@1.1251.80.40, 2006-05-05 16:40:34-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #596/527 updates to remove [UN]BLOCKIO() and keep initialization for Windows
+
+ libntp/recvbuff.c@1.22, 2006-05-05 16:39:46-04:00, mayer@pogo.udel.edu +0 -10
+ Bug #596/527 updates to remove [UN]BLOCKIO() and keep initialization for Windows
+
+ChangeSet@1.1251.80.39, 2006-05-05 08:48:59-04:00, mayer@pogo.udel.edu +4 -0
+ Bug #504 Collection of changes to retry DNS in case unable to get definitive answer
+
+ libntp/ntp_rfc2553.c@1.27.1.1, 2006-05-05 08:42:45-04:00, mayer@pogo.udel.edu +43 -5
+ Bug #504 Move lookup call to dnslookup() function
+
+ ntpd/ntp_intres.c@1.43, 2006-05-05 08:45:32-04:00, mayer@pogo.udel.edu +22 -8
+ Bug Retry DNS lookups if DNS unable to give a definitive answer or is unreachable
+
+ ports/winnt/libntp/dnslookup.c@1.2, 2006-05-05 08:47:26-04:00, mayer@pogo.udel.edu +0 -1
+ Bug #504 Windows only special lookup to fix return error codes
+
+ ports/winnt/libntp/dnslookup.c@1.1, 2006-05-05 08:36:40-04:00, mayer@pogo.udel.edu +197 -0
+
+ ports/winnt/libntp/dnslookup.c@1.0, 2006-05-05 08:36:40-04:00, mayer@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/mayer/ntp-dev/ports/winnt/libntp/dnslookup.c
+
+ ports/winnt/libntp/libntp.dsp@1.28, 2006-05-05 08:44:04-04:00, mayer@pogo.udel.edu +4 -0
+ Bug #504 add Windows only dnslookup to dsp file
+
+ChangeSet@1.1251.85.14, 2006-05-05 00:52:13-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P247_RC
+ TAG: NTP_4_2_1P247_RC
+
+ packageinfo.sh@1.15, 2006-05-05 00:52:03-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P247_RC
+
+ChangeSet@1.1251.85.13, 2006-05-05 00:47:24-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P246_RC
+ TAG: NTP_4_2_1P246_RC
+
+ packageinfo.sh@1.14, 2006-05-05 00:47:15-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P246_RC
+
+ChangeSet@1.1251.85.12, 2006-05-05 00:42:27-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P245_RC
+ TAG: NTP_4_2_1P245_RC
+
+ packageinfo.sh@1.13, 2006-05-05 00:42:21-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P245_RC
+
+ChangeSet@1.1251.85.11, 2006-05-05 00:37:38-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P244_RC
+ TAG: NTP_4_2_1P244_RC
+
+ packageinfo.sh@1.12, 2006-05-05 00:37:32-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P244_RC
+
+ChangeSet@1.1251.85.10, 2006-05-04 22:28:16-04:00, stenn@whimsy.udel.edu +1 -0
+ Clean up/fix the force code
+
+ scripts/genver@1.2, 2006-05-04 22:27:40-04:00, stenn@whimsy.udel.edu +20 -12
+ Clean up/fix the force code
+
+ChangeSet@1.1251.85.9, 2006-05-04 19:50:54-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P243_RC
+ TAG: NTP_4_2_1P243_RC
+
+ packageinfo.sh@1.11, 2006-05-04 19:50:46-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P243_RC
+
+ChangeSet@1.1251.85.8, 2006-05-04 07:03:18-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P242_RC
+ TAG: NTP_4_2_1P242_RC
+
+ packageinfo.sh@1.10, 2006-05-04 07:03:08-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P242_RC
+
+ChangeSet@1.1251.85.7, 2006-05-04 05:54:17-04:00, stenn@deacon.udel.edu +1 -0
+ Re-enable signaled I/O
+
+ configure.ac@1.359.1.29, 2006-05-04 05:54:10-04:00, stenn@deacon.udel.edu +2 -6
+ Re-enable signaled I/O
+
+ChangeSet@1.1251.86.1, 2006-05-04 05:38:51-04:00, stenn@deacon.udel.edu +5 -0
+ clean up the version generation stuff.
+
+ Makefile.am@1.48.1.3, 2006-05-04 05:34:46-04:00, stenn@deacon.udel.edu +12 -2
+ Deal with packageinfo.sh, version.m4, and include/version.def
+
+ bootstrap@1.3, 2006-05-04 05:35:44-04:00, stenn@deacon.udel.edu +2 -6
+ Use the new scripts/genver to generate the version files
+
+ include/Makefile.am@1.19.1.2, 2006-05-04 05:36:21-04:00, stenn@deacon.udel.edu +1 -1
+ distribute inclue/version.def
+
+ scripts/Makefile.am@1.13, 2006-05-04 05:36:55-04:00, stenn@deacon.udel.edu +2 -2
+ Distribute VersionName and genver.
+
+ scripts/genver@1.1, 2006-05-04 05:33:24-04:00, stenn@deacon.udel.edu +59 -0
+
+ scripts/genver@1.0, 2006-05-04 05:33:24-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/scripts/genver
+
+ChangeSet@1.1251.85.5, 2006-05-02 09:13:40+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_crypto.c:
+ handle NULL return from d2i_X509() - NetBSD Run 21 Coverity CID 2979
+
+ ntpd/ntp_crypto.c@1.98.1.13, 2006-05-02 09:12:16+00:00, kardel@pogo.udel.edu +1 -1
+ handle NULL return from d2i_X509() - NetBSD Run 21 Coverity CID 2979
+
+ChangeSet@1.1251.85.4, 2006-05-01 18:27:54+00:00, kardel@pogo.udel.edu +3 -0
+ refclock_parse.c:
+ If an input buffer parses into more than one message do insert the
+ parsed message in a new input buffer instead of processing it
+ directly. This avoids deed complicated processing in signal
+ handling.
+ ntpd.c:
+ re-instate vital io blocking protocol to insure
+ that receive buffer queue is only manipulated when
+ io is blocked
+ recvbuff.c:
+ cleanup get_full_recvbuffer() to decide only the full queue head
+ and simplify code (remove multiple tests)
+
+ libntp/recvbuff.c@1.19.1.1, 2006-05-01 18:18:25+00:00, kardel@pogo.udel.edu +4 -11
+ cleanup get_full_recvbuffer() to decide only the full queue head
+ and simplify code (remove multiple tests)
+
+ ntpd/ntpd.c@1.61.5.1, 2006-05-01 18:21:28+00:00, kardel@pogo.udel.edu +25 -12
+ re-instate vital io blocking protocol to insure
+ that receive buffer queue is only manipulated when
+ io is blocked
+
+ ntpd/refclock_parse.c@1.35.1.7, 2006-05-01 18:22:34+00:00, kardel@pogo.udel.edu +33 -18
+ If an input buffer parses into more than one message do insert the
+ parsed message in a new input buffer instead of processing it
+ directly. This avoids deed complicated processing in signal
+ handling.
+
+ChangeSet@1.1251.85.3, 2006-04-21 00:09:43-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P241_RC
+ TAG: NTP_4_2_1P241_RC
+
+ packageinfo.sh@1.9, 2006-04-21 00:09:32-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P241_RC
+
+ChangeSet@1.1251.85.2, 2006-04-20 23:59:56-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 527] Lose signalled IO.
+
+ configure.ac@1.359.1.28, 2006-04-20 23:58:47-04:00, stenn@whimsy.udel.edu +7 -2
+ [Bug 527] Lose signalled IO.
+
+ChangeSet@1.1251.85.1, 2006-04-18 05:58:13-04:00, stenn@whimsy.udel.edu +1 -0
+ there are 240 ntp-dev patch releases so far
+
+ packageinfo.sh@1.8, 2006-04-18 05:57:50-04:00, stenn@whimsy.udel.edu +1 -1
+ there are 240 ntp-dev patch releases so far
+
+ChangeSet@1.1251.80.37, 2006-04-15 18:33:29-04:00, mayer@pogo.udel.edu +1 -0
+ Fix Bug #596 and #572 to deal with polling restrictions
+
+ libntp/recvbuff.c@1.20, 2006-04-15 18:33:18-04:00, mayer@pogo.udel.edu +20 -18
+ Fix Bug #596 and #572 to deal with polling restrictions
+
+ChangeSet@1.1251.80.36, 2006-04-15 18:32:57-04:00, mayer@pogo.udel.edu +1 -0
+ Fix Bug #596 and #572 to deal with polling restrictions
+
+ ntpd/ntpd.c@1.61.1.20, 2006-04-15 18:32:25-04:00, mayer@pogo.udel.edu +3 -1
+ Fix Bug #596 and #572 to deal with polling restrictions
+
+ChangeSet@1.1251.80.35, 2006-04-13 04:14:26-04:00, stenn@whimsy.udel.edu +2 -0
+ Use ./packageinfo.sh as . may not be in the PATH. Reported by Frank Kardel.
+
+ bootstrap@1.2, 2006-04-13 04:14:03-04:00, stenn@whimsy.udel.edu +1 -1
+ Use ./packageinfo.sh as . may not be in the PATH. Reported by Frank Kardel.
+
+ scripts/VersionName@1.2, 2006-04-13 04:14:03-04:00, stenn@whimsy.udel.edu +2 -1
+ Use ./packageinfo.sh as . may not be in the PATH. Reported by Frank Kardel.
+
+ChangeSet@1.1251.80.34, 2006-04-12 06:43:08-04:00, stenn@whimsy.udel.edu +1 -0
+ fix a typo
+
+ README.versions@1.4, 2006-04-12 06:42:47-04:00, stenn@whimsy.udel.edu +1 -1
+ fix a typo
+
+ChangeSet@1.1251.80.33, 2006-04-12 05:57:14-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P12_RC
+ TAG: NTP_4_2_1P12_RC
+
+ packageinfo.sh@1.7, 2006-04-12 05:57:06-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P12_RC
+
+ChangeSet@1.1251.80.32, 2006-04-12 05:27:53-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P11_RC
+ TAG: NTP_4_2_1P11_RC
+
+ packageinfo.sh@1.6, 2006-04-12 05:27:46-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P11_RC
+
+ChangeSet@1.1251.80.31, 2006-04-12 05:22:34-04:00, stenn@whimsy.udel.edu +1 -0
+ Update the NEWS file
+
+ NEWS@1.49, 2006-04-12 05:22:12-04:00, stenn@whimsy.udel.edu +2 -1
+ Update the NEWS file
+
+ChangeSet@1.1251.80.30, 2006-04-12 05:14:52-04:00, stenn@whimsy.udel.edu +1 -0
+ cleanup
+
+ packageinfo.sh@1.5, 2006-04-12 05:14:33-04:00, stenn@whimsy.udel.edu +1 -1
+ cleanup
+
+ChangeSet@1.1251.80.29, 2006-04-12 04:51:30-04:00, stenn@whimsy.udel.edu +1 -0
+ NTP_4_2_1P10_RC
+ TAG: NTP_4_2_1P10_RC
+
+ packageinfo.sh@1.4, 2006-04-12 04:51:23-04:00, stenn@whimsy.udel.edu +1 -1
+ NTP_4_2_1P10_RC
+
+ChangeSet@1.1251.80.28, 2006-04-12 04:44:14-04:00, stenn@whimsy.udel.edu +1 -0
+ use a reasonable value for "point".
+
+ packageinfo.sh@1.3, 2006-04-12 04:43:58-04:00, stenn@whimsy.udel.edu +1 -1
+ use a reasonable value for "point".
+
+ChangeSet@1.1251.80.27, 2006-04-12 04:39:22-04:00, stenn@whimsy.udel.edu +1 -0
+ update
+
+ packageinfo.sh@1.2, 2006-04-12 04:39:00-04:00, stenn@whimsy.udel.edu +3 -3
+ update
+
+ChangeSet@1.1342, 2006-04-11 18:05:00-07:00, bkorb@bach.veritas.com +5 -0
+ AutoOpt the clktest program.
+ Move copyright, version and config file stuff into a common file.
+
+ BitKeeper/etc/config@1.8, 2006-04-11 18:04:59-07:00, bkorb@bach.veritas.com +4 -0
+ New license
+
+ clockstuff/clktest-opts.def@1.2, 2006-04-11 18:00:39-07:00, bkorb@bach.veritas.com +228 -0
+ clktest option definition file.
+
+ clockstuff/clktest-opts.def@1.1, 2006-04-11 17:51:41-07:00, bkorb@bach.veritas.com +0 -0
+
+ clockstuff/clktest-opts.def@1.0, 2006-04-11 17:51:41-07:00, bkorb@bach.veritas.com +0 -0
+ BitKeeper file /home/bkorb/tools/ntp/ntp-dev-ag/clockstuff/clktest-opts.def
+
+ clockstuff/clktest.c@1.3, 2006-04-11 18:00:39-07:00, bkorb@bach.veritas.com +31 -148
+ Move includes to option definition file so the option code can use them, too.
+ Move option processing to option definition file. Use AutoOpts to parse.
+
+ include/copyright.def@1.2, 2006-04-11 18:00:39-07:00, bkorb@bach.veritas.com +24 -0
+ version, copyright and rc file stuff for all commands.
+
+ include/copyright.def@1.1, 2006-04-11 17:51:41-07:00, bkorb@bach.veritas.com +0 -0
+
+ include/copyright.def@1.0, 2006-04-11 17:51:41-07:00, bkorb@bach.veritas.com +0 -0
+ BitKeeper file /home/bkorb/tools/ntp/ntp-dev-ag/include/copyright.def
+
+ ntpdc/ntpdc-opts.def@1.8, 2006-04-11 18:00:39-07:00, bkorb@bach.veritas.com +1 -24
+ Move common copyright and ini file stuff to a common "copyright.def" file.
+
+ChangeSet@1.1251.84.1, 2006-04-11 04:49:33-04:00, stenn@whimsy.udel.edu +2 -0
+ release prep
+
+ packageinfo.sh@1.1, 2006-04-11 04:47:12-04:00, stenn@whimsy.udel.edu +19 -0
+
+ packageinfo.sh@1.0, 2006-04-11 04:47:12-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/packageinfo.sh
+
+ bootstrap@1.1, 2006-04-11 04:47:55-04:00, stenn@whimsy.udel.edu +59 -0
+
+ bootstrap@1.0, 2006-04-11 04:47:55-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/bootstrap
+
+ChangeSet@1.1251.80.25, 2006-04-09 05:25:08-04:00, stenn@whimsy.udel.edu +3 -0
+ README* updates
+
+ README@1.21, 2006-04-09 05:24:50-04:00, stenn@whimsy.udel.edu +1 -1
+ README* updates
+
+ README.bk@1.18, 2006-04-09 05:24:50-04:00, stenn@whimsy.udel.edu +3 -51
+ README* updates
+
+ README.versions@1.3, 2006-04-09 05:24:51-04:00, stenn@whimsy.udel.edu +10 -18
+ README* updates
+
+ChangeSet@1.1251.80.24, 2006-04-09 05:00:52-04:00, stenn@whimsy.udel.edu +5 -0
+ New release numbering style support
+
+ bootstrap@1.2, 2006-04-09 04:58:41-04:00, stenn@whimsy.udel.edu +13 -11
+ cleanup
+
+ bootstrap@1.1, 2006-04-09 04:07:34-04:00, stenn@whimsy.udel.edu +57 -0
+
+ bootstrap@1.0, 2006-04-09 04:07:34-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/bootstrap
+
+ packageinfo.sh@1.1, 2006-04-09 04:05:25-04:00, stenn@whimsy.udel.edu +17 -0
+
+ packageinfo.sh@1.0, 2006-04-09 04:05:25-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/packageinfo.sh
+
+ BitKeeper/deleted/.del-version.m4~4ef47e5fd0c38ddb@1.3.2.1, 2006-04-09 04:57:32-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: version.m4
+
+ BitKeeper/etc/ignore@1.35.1.1, 2006-04-09 04:57:51-04:00, stenn@whimsy.udel.edu +2 -0
+ added include/version.def version.m4
+
+ scripts/VersionName@1.1, 2006-04-09 04:51:47-04:00, stenn@whimsy.udel.edu +29 -0
+
+ scripts/VersionName@1.0, 2006-04-09 04:51:47-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/scripts/VersionName
+
+ChangeSet@1.1341, 2006-04-09 00:16:18-04:00, stenn@pogo.udel.edu +1 -0
+ update
+
+ packageinfo.sh@1.4, 2006-04-09 00:16:12-04:00, stenn@pogo.udel.edu +4 -1
+ update
+
+ChangeSet@1.1340, 2006-04-08 22:13:54-04:00, stenn@pogo.udel.edu +1 -0
+ update
+
+ packageinfo.sh@1.3, 2006-04-08 22:13:44-04:00, stenn@pogo.udel.edu +11 -1
+ update
+
+ChangeSet@1.1339, 2006-04-08 22:11:27-04:00, stenn@pogo.udel.edu +1 -0
+ update
+
+ bootstrap@1.9, 2006-04-08 22:11:08-04:00, stenn@pogo.udel.edu +1 -1
+ update
+
+ChangeSet@1.1338, 2006-04-08 00:50:08-04:00, stenn@pogo.udel.edu +2 -0
+ Test new release numbering and snapshot method
+
+ packageinfo.sh@1.2, 2006-04-08 00:49:59-04:00, stenn@pogo.udel.edu +4 -1
+ Test new release numbering and snapshot method
+
+ BitKeeper/etc/ignore@1.48, 2006-04-08 00:49:18-04:00, stenn@pogo.udel.edu +2 -0
+ added version.m4 include/version.def
+
+ChangeSet@1.1251.80.23, 2006-04-04 03:16:32-04:00, stenn@deacon.udel.edu +1 -0
+ [Bug 588] logfile documentation problems
+
+ html/miscopt.html@1.35, 2006-04-04 03:16:00-04:00, stenn@deacon.udel.edu +5 -5
+ [Bug 588] logfile documentation problems
+
+ChangeSet@1.1251.80.22, 2006-04-01 05:14:27-05:00, stenn@deacon.udel.edu +1 -0
+ Ignore control characters
+
+ ntpd/refclock_acts.c@1.25.1.1, 2006-04-01 05:13:53-05:00, stenn@deacon.udel.edu +1 -1
+ Ignore control characters
+
+ChangeSet@1.1251.80.21, 2006-03-30 01:43:28-05:00, stenn@deacon.udel.edu +1 -0
+ [Bug 584] quiet a coverity buffer overrun
+
+ ntpd/refclock_chu.c@1.37, 2006-03-30 01:42:56-05:00, stenn@deacon.udel.edu +1 -1
+ [Bug 584] quiet a coverity buffer overrun
+
+ChangeSet@1.1336, 2006-03-26 06:02:05-05:00, stenn@pogo.udel.edu +7 -0
+ debug-opts.def cleanup
+ Allow optional hostnames on the command line for ntpq and ntpdc.
+
+ BitKeeper/etc/ignore@1.47, 2006-03-26 06:02:00-05:00, stenn@pogo.udel.edu +1 -1
+ Fix the ignore for sntp/libopts/
+
+ BitKeeper/etc/ignore@1.46, 2006-03-26 05:52:13-05:00, stenn@pogo.udel.edu +1 -0
+ added sntp/libopts
+
+ ntpd/Makefile.am@1.47, 2006-03-26 06:01:59-05:00, stenn@pogo.udel.edu +7 -7
+ debug-opt.def cleanup
+
+ ntpdc/Makefile.am@1.29, 2006-03-26 06:02:00-05:00, stenn@pogo.udel.edu +4 -4
+ debug-opts.def cleanup
+
+ ntpdc/ntpdc-opts.def@1.7, 2006-03-26 06:02:00-05:00, stenn@pogo.udel.edu +1 -0
+ Allow hostnames on the command-line.
+
+ ntpq/Makefile.am@1.21, 2006-03-26 06:02:00-05:00, stenn@pogo.udel.edu +4 -4
+ debug-opts.def cleanup
+
+ ntpq/ntpq-opts.def@1.5, 2006-03-26 06:02:00-05:00, stenn@pogo.udel.edu +3 -25
+ Allow hostnames on the command-line.
+
+ util/Makefile.am@1.30, 2006-03-26 06:02:00-05:00, stenn@pogo.udel.edu +4 -4
+ debug-opts.def cleanup
+
+ChangeSet@1.1251.80.20, 2006-03-24 00:27:03-05:00, stenn@deacon.udel.edu +1 -0
+ [Bug 571] fix a typo that prevents ntpdate from working
+
+ ntpdate/ntpdate.c@1.58, 2006-03-24 00:26:29-05:00, stenn@deacon.udel.edu +1 -1
+ [Bug 571] fix a typo that prevents ntpdate from working
+
+ChangeSet@1.1251.80.18, 2006-03-21 10:43:26+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_restrict.c:
+ null deref: fix another case of incomplete list handling (Coverity NetBSD Scan 8: CID 986)
+
+ ntpd/ntp_restrict.c@1.17.1.4, 2006-03-21 10:38:33+00:00, kardel@pogo.udel.edu +12 -3
+ null deref: fix another case of incomplete list handling (Coverity NetBSD Scan 8: CID 986)
+
+ChangeSet@1.1251.83.1, 2006-03-21 05:41:41-05:00, stenn@deacon.udel.edu +1 -0
+ [Bug 584] Fix potential buffer overrun
+
+ ntpd/refclock_chu.c@1.36, 2006-03-21 05:41:07-05:00, stenn@deacon.udel.edu +2 -2
+ [Bug 584] Fix potential buffer overrun
+
+ChangeSet@1.1251.82.1, 2006-03-20 05:56:32+00:00, kardel@pogo.udel.edu +2 -0
+ refclock_oncore.c, ntp_restrict.c:
+ standardize pointer checks
+
+ ntpd/ntp_restrict.c@1.17.2.1, 2006-03-20 05:52:19+00:00, kardel@pogo.udel.edu +3 -3
+ standardize pointer checks
+
+ ntpd/refclock_oncore.c@1.59, 2006-03-20 05:54:36+00:00, kardel@pogo.udel.edu +2 -2
+ standardize pointer checks
+
+ChangeSet@1.1251.80.16, 2006-03-19 22:14:48-05:00, mayer@pogo.udel.edu +2 -0
+ Additional fixes for Coverity items
+
+ ntpd/ntp_restrict.c@1.17.1.2, 2006-03-19 22:14:26-05:00, mayer@pogo.udel.edu +2 -2
+ Additional fixes for Coverity items
+
+ ntpdc/ntpdc.c@1.40.2.5, 2006-03-19 22:14:25-05:00, mayer@pogo.udel.edu +4 -1
+ Additional fixes for Coverity items
+
+ChangeSet@1.1251.80.15, 2006-03-19 07:23:01+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_datum.c:
+ error handling: check success of open(2) - bail out early (Coverity CID 1282 NetBSD Scan 5)
+
+ ntpd/refclock_datum.c@1.9, 2006-03-19 07:18:17+00:00, kardel@pogo.udel.edu +13 -5
+ error handling: check success of open(2) - bail out early (Coverity CID 1282 NetBSD Scan 5)
+
+ChangeSet@1.1251.80.14, 2006-03-19 07:04:21+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_restrict.c:
+ null deref: complete linked list handling beginng condition (Coverity CID 986 NetBSD Scan 5)
+
+ ntpd/ntp_restrict.c@1.17.1.1, 2006-03-19 06:59:30+00:00, kardel@pogo.udel.edu +12 -3
+ null deref: complete linked list handling beginng condition (Coverity CID 986 NetBSD Scan 5)
+
+ChangeSet@1.1251.80.13, 2006-03-18 15:25:00+00:00, kardel@pogo.udel.edu +1 -0
+ ntpdc.c:
+ mem leak: unreachable code prevented freeing of allocated memory
+ (Coverity CID 612 NetBSD Scan 5)
+
+ ntpdc/ntpdc.c@1.40.2.4, 2006-03-18 15:22:52+00:00, kardel@pogo.udel.edu +1 -2
+ mem leak: unreachable code prevented freeing of allocated memory
+ (Coverity CID 612 NetBSD Scan 5)
+
+ChangeSet@1.1251.80.12, 2006-03-18 14:33:59+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_oncore.c:
+ null deref: avoid 0 deref (Coverity CID 987 NetBSD Scan 5)
+
+ ntpd/refclock_oncore.c@1.58, 2006-03-18 14:33:30+00:00, kardel@pogo.udel.edu +1 -1
+ null deref: avoid 0 deref (Coverity CID 987 NetBSD Scan 5)
+
+ChangeSet@1.1251.80.11, 2006-03-18 14:20:27+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_arc.c:
+ buffer bounds: buffer full condition wrong for bounds check (Coverity CID 1508 NetBSD Scan 5)
+
+ ntpd/refclock_arc.c@1.18, 2006-03-18 14:19:55+00:00, kardel@pogo.udel.edu +1 -1
+ buffer bounds: buffer full condition wrong for bounds check (Coverity CID 1508 NetBSD Scan 5)
+
+ChangeSet@1.1251.80.10, 2006-03-18 14:09:32+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_leitch.c:
+ buffer bounds: correct > - >= error for bounds check (Coverity CID 1511 NetBSD Scan 5)
+
+ ntpd/refclock_leitch.c@1.7, 2006-03-18 14:09:11+00:00, kardel@pogo.udel.edu +1 -1
+ buffer bounds: correct > - >= error for bounds check (Coverity CID 1511 NetBSD Scan 5)
+
+ChangeSet@1.1251.80.9, 2006-03-18 14:08:59+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_oncore.c:
+ mem leakage: free old malloced buffer on errors (Coverity CID 2056 NetBSD Scan 5)
+
+ ntpd/refclock_oncore.c@1.57, 2006-03-18 13:43:21+00:00, kardel@pogo.udel.edu +6 -0
+ mem leakage: free old malloced buffer on errors (Coverity CID 2056 NetBSD Scan 5)
+
+ChangeSet@1.1251.80.8, 2006-03-18 09:24:46+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_crypto.c:
+ resource leak (fd/mem): fclose() streams on error (Coverity NetBSD scan CID 2055)
+
+ ntpd/ntp_crypto.c@1.98.1.12, 2006-03-18 09:11:14+00:00, kardel@pogo.udel.edu +6 -0
+ resource leak (fd/mem): fclose() streams on error (Coverity NetBSD scan CID 2055)
+
+ChangeSet@1.1251.80.7, 2006-03-18 08:53:22+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_crypto.c:
+ close stream when error occur (Coverity NetBSD Scan CID 2054)
+
+ ntpd/ntp_crypto.c@1.98.1.11, 2006-03-18 08:52:18+00:00, kardel@pogo.udel.edu +3 -0
+ close stream when error occur (Coverity NetBSD Scan CID 2054)
+
+ChangeSet@1.1251.80.6, 2006-03-18 08:01:26+00:00, kardel@pogo.udel.edu +1 -0
+ ntptime.c:
+ resolve potential but not occurring 1-pointer deref (Coverity NetBSD scan, CID 808)
+
+ util/ntptime.c@1.19, 2006-03-18 07:57:43+00:00, kardel@pogo.udel.edu +1 -1
+ resolve potential but not occurring 1-pointer deref (Coverity NetBSD scan, CID 808)
+
+ChangeSet@1.1251.80.5, 2006-03-18 07:55:03+00:00, kardel@pogo.udel.edu +1 -0
+ ntptime.c:
+ resolve bounds issue (Coverity CID 1466, NetBSD scan)
+
+ util/ntptime.c@1.18, 2006-03-18 07:53:50+00:00, kardel@pogo.udel.edu +1 -1
+ resolve bounds issue (Coverity CID 1466, NetBSD scan)
+
+ChangeSet@1.1251.80.4, 2006-03-18 01:11:42+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_parse.c:
+ coverity fixes found in NetBSD coverity scan
+
+ ntpd/refclock_parse.c@1.35.1.6, 2006-03-18 01:11:00+00:00, kardel@pogo.udel.edu +14 -7
+ coverity fixes found in NetBSD coverity scan
+
+ChangeSet@1.1251.81.1, 2006-03-17 04:22:39-05:00, stenn@deacon.udel.edu +1 -0
+ Set c_iflag=0 for RAW mode
+
+ ntpd/ntp_refclock.c@1.75, 2006-03-17 04:22:20-05:00, stenn@deacon.udel.edu +2 -0
+ Set c_iflag=0 for RAW mode
+
+ChangeSet@1.1251.80.2, 2006-03-16 17:55:20-05:00, mayer@pogo.udel.edu +1 -0
+ [Bug 479] Fix Memory Leak
+
+ ntpd/ntp_io.c@1.187.1.8, 2006-03-16 17:55:03-05:00, mayer@pogo.udel.edu +14 -12
+ Fix Bug #479 Memory Leak
+
+ChangeSet@1.1251.80.1, 2006-03-15 02:29:27-05:00, stenn@deacon.udel.edu +6 -0
+ [Bug 472] configurable driftfile write frequency
+
+ html/miscopt.html@1.34, 2006-03-15 02:28:44-05:00, stenn@deacon.udel.edu +15 -3
+ [Bug 472] configurable driftfile write frequency
+
+ include/ntpd.h@1.82.4.5, 2006-03-15 02:28:44-05:00, stenn@deacon.udel.edu +3 -1
+ [Bug 472] configurable driftfile write frequency
+
+ ntpd/ntp_config.c@1.129.6.1, 2006-03-15 02:28:44-05:00, stenn@deacon.udel.edu +10 -0
+ [Bug 472] configurable driftfile write frequency
+
+ ntpd/ntp_timer.c@1.28.1.1, 2006-03-15 02:28:44-05:00, stenn@deacon.udel.edu +7 -6
+ [Bug 472] configurable driftfile write frequency
+
+ ntpd/ntp_util.c@1.36.2.1, 2006-03-15 02:28:44-05:00, stenn@deacon.udel.edu +10 -1
+ [Bug 472] configurable driftfile write frequency
+
+ ntpd/ntpd.c@1.61.1.19, 2006-03-15 02:28:45-05:00, stenn@deacon.udel.edu +1 -0
+ [Bug 472] configurable driftfile write frequency
+
+ChangeSet@1.1251.72.34, 2006-03-15 06:37:26+00:00, kardel@pogo.udel.edu +2 -0
+ ntp_peer.c:
+ speling fix
+ copyright.html:
+ obfuscate eMail address
+ document dynamic interface handling
+
+ html/copyright.html@1.34, 2006-03-15 06:35:31+00:00, kardel@pogo.udel.edu +2 -2
+ obfuscate eMail address
+ document dynamic interface handling
+
+ ntpd/ntp_peer.c@1.94, 2006-03-15 06:36:56+00:00, kardel@pogo.udel.edu +1 -1
+ speling fix
+
+ChangeSet@1.1251.72.33, 2006-03-14 23:09:12+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_proto.c:
+ peer.{first,last} gone
+
+ ntpd/ntp_proto.c@1.244, 2006-03-14 08:46:44+00:00, kardel@pogo.udel.edu +0 -3
+ peer.{first,last} gone
+
+ChangeSet@1.1333, 2006-03-14 00:51:12-05:00, stenn@pogo.udel.edu +1 -0
+ cleanup
+
+ Makefile.am@1.60, 2006-03-14 00:51:04-05:00, stenn@pogo.udel.edu +1 -1
+ cleanup
+
+ChangeSet@1.1251.79.2, 2006-03-05 16:34:07-05:00, stenn@deacon.udel.edu +1 -0
+ [Bug 553] QNX does not want adjtime.h
+
+ ntpdate/ntpdate.c@1.57, 2006-03-05 16:33:57-05:00, stenn@deacon.udel.edu +0 -4
+ [Bug 553] QNX does not want adjtime.h
+
+ChangeSet@1.1251.79.1, 2006-03-05 16:26:53-05:00, stenn@deacon.udel.edu +1 -0
+ [Bug 576] Use __adjtimex if we have it and not ntp_adjtime
+
+ include/ntp_machine.h@1.22, 2006-03-05 16:26:44-05:00, stenn@deacon.udel.edu +4 -0
+ [Bug 576] Use __adjtimex if we have it and not ntp_adjtime
+
+ChangeSet@1.1251.72.30, 2006-03-02 15:03:35-05:00, clemens@pogo.udel.edu +1 -0
+ Clean up on exit.
+
+ ntpd/refclock_oncore.c@1.56, 2006-03-02 15:03:32-05:00, clemens@pogo.udel.edu +6 -1
+ Clean up on exit.
+
+ChangeSet@1.1251.72.29, 2006-03-01 04:20:05-05:00, stenn@deacon.udel.edu +1 -0
+ AUTOMAKE_OPTIONS: We require automake 1.8 or later.
+
+ Makefile.am@1.48.1.2, 2006-03-01 04:19:58-05:00, stenn@deacon.udel.edu +1 -1
+ AUTOMAKE_OPTIONS: We require automake 1.8 or later.
+
+ChangeSet@1.1251.72.28, 2006-02-28 23:43:36-05:00, stenn@deacon.udel.edu +1 -0
+ RC1 for 4.2.1
+ TAG: ntp-dev
+ TAG: NTP_4_2_0B_RC1
+
+ version.m4@1.3.1.1, 2006-02-28 23:41:38-05:00, stenn@deacon.udel.edu +1 -1
+ RC1 for 4.2.1
+
+ChangeSet@1.1251.78.1, 2006-02-28 09:38:25-05:00, hilbrecht@pogo.udel.edu +2 -0
+ refclock_neoclock4x.c:
+ update driver to version 1.15
+ fix bug #499 and #574
+
+ BitKeeper/etc/logging_ok@1.57.5.1, 2006-02-28 09:38:24-05:00, hilbrecht@pogo.udel.edu +1 -0
+ Logging to repologs@ntp.isc.org accepted
+
+ ntpd/refclock_neoclock4x.c@1.13.1.1, 2006-02-28 09:36:19-05:00, hilbrecht@pogo.udel.edu +16 -30
+ update driver to version 1.15
+ fix bug #499 and #574
+
+ChangeSet@1.1251.77.3, 2006-02-25 19:18:31-05:00, clemens@pogo.udel.edu +2 -0
+ The following 5 changes were made.
+ (1) Fixes for warnings from the curreng gcc compiler.
+ (2) Fix for a possible segfault if restarting with a damaged shmem file.
+ (3) Change all possible fprintf's to record_clock_stats, to get all
+ output in the same place.
+ (4) [Bug 541] Apply a patch by Russell J. Yount <rjy@cmu.edu> for new (and
+ possibly old) M12+T: UTC not correct immediately after a new Almanac
+ read.
+ (5) Apply patch for new PPS implementation by Rodolfo Giometti
+ <giometti@linux.it>. The code can now useither the old
+ Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de> implementation, or
+ the new one, depending on the timepps.h seen.
+
+ BitKeeper/etc/logging_ok@1.57.4.1, 2006-02-25 19:18:30-05:00, clemens@pogo.udel.edu +1 -0
+ Logging to repologs@ntp.isc.org accepted
+
+ ntpd/refclock_oncore.c@1.55, 2006-02-25 19:17:10-05:00, clemens@pogo.udel.edu +214 -99
+ The following 5 changes were made.
+ (1) Fixes for warnings from the curreng gcc compiler.
+ (2) Fix for a possible segfault if restarting with a damaged shmem file.
+ (3) Change all possible fprintf's to record_clock_stats, to get all
+ output in the same place.
+ (4) [Bug 541] Apply a patch by Russell J. Yount <rjy@cmu.edu> for new (and
+ possibly old) M12+T: UTC not correct immediately after a new Almanac
+ read.
+ (5) Apply patch for new PPS implementation by Rodolfo Giometti
+ <giometti@linux.it>. The code can now useither the old
+ Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de> implementation, or
+ the new one, depending on the timepps.h seen.
+
+ChangeSet@1.1178.5.9, 2006-02-24 04:24:12-05:00, stenn@deacon.udel.edu +1 -0
+ mort is gone, replaced by macabre
+
+ br-flock@1.4.1.2, 2006-02-24 04:24:01-05:00, stenn@deacon.udel.edu +1 -1
+ mort is gone, replaced by macabre
+
+ChangeSet@1.1251.77.1, 2006-02-24 04:20:07-05:00, stenn@deacon.udel.edu +4 -0
+ Let there be fuzz. Make sure sys_precision is visible and present.
+
+ libntp/systime.c@1.38, 2006-02-24 04:19:02-05:00, stenn@deacon.udel.edu +9 -7
+ Let there be fuzz. Make sure sys_precision is visible and present.
+
+ ntpdate/ntpdate.c@1.56, 2006-02-24 04:19:02-05:00, stenn@deacon.udel.edu +5 -0
+ Let there be fuzz. Make sure sys_precision is visible and present.
+
+ ntpdc/ntpdc.c@1.40.3.1, 2006-02-24 04:19:02-05:00, stenn@deacon.udel.edu +5 -0
+ Let there be fuzz. Make sure sys_precision is visible and present.
+
+ ntpq/ntpq.c@1.55.1.5, 2006-02-24 04:19:02-05:00, stenn@deacon.udel.edu +5 -0
+ Let there be fuzz. Make sure sys_precision is visible and present.
+
+ChangeSet@1.1251.72.25, 2006-02-24 02:10:29+00:00, rayvt@pogo.udel.edu +3 -0
+ ntcdc options update
+
+ ntpd/ntp_request.c@1.58.1.2, 2006-02-24 02:10:25+00:00, rayvt@pogo.udel.edu +18 -3
+ ntcdc options update
+
+ ntpdc/ntpdc.h@1.6, 2006-02-24 02:10:25+00:00, rayvt@pogo.udel.edu +2 -1
+ ntcdc options update
+
+ ntpdc/ntpdc_ops.c@1.38.1.2, 2006-02-24 02:10:25+00:00, rayvt@pogo.udel.edu +132 -87
+ ntcdc options update
+
+ChangeSet@1.1251.72.24, 2006-02-24 02:08:52+00:00, rayvt@pogo.udel.edu +7 -0
+ ntpdc options update
+
+ BitKeeper/etc/logging_ok@1.57.3.1, 2006-02-24 02:08:51+00:00, rayvt@pogo.udel.edu +1 -0
+ Logging to repologs@ntp.isc.org accepted
+
+ html/ntpdc.html@1.20.1.3, 2006-02-24 02:08:16+00:00, rayvt@pogo.udel.edu +42 -11
+ ntcdc options update
+
+ include/ntp.h@1.120.1.7, 2006-02-24 02:08:16+00:00, rayvt@pogo.udel.edu +1 -0
+ ntcdc options update
+
+ include/ntp_request.h@1.23.1.1, 2006-02-24 02:08:16+00:00, rayvt@pogo.udel.edu +1 -0
+ ntcdc options update
+
+ ntpd/ntp_loopfilter.c@1.123, 2006-02-24 02:08:16+00:00, rayvt@pogo.udel.edu +18 -0
+ ntcdc options update
+
+ ntpd/ntp_peer.c@1.84.1.2, 2006-02-24 02:08:16+00:00, rayvt@pogo.udel.edu +6 -1
+ ntcdc options update
+
+ ntpdc/ntpdc.c@1.40.2.2, 2006-02-24 02:08:17+00:00, rayvt@pogo.udel.edu +8 -4
+ ntcdc options update
+
+ChangeSet@1.1251.72.23, 2006-02-22 20:01:03-05:00, stenn@deacon.udel.edu +1 -0
+ Fix a typo.
+
+ libntp/systime.c@1.37, 2006-02-22 20:00:33-05:00, stenn@deacon.udel.edu +1 -1
+ Fix a typo.
+
+ChangeSet@1.1251.72.22, 2006-02-22 19:58:12-05:00, stenn@deacon.udel.edu +1 -0
+ Copyright updates from Dave Mills
+
+ html/copyright.html@1.33, 2006-02-22 19:57:52-05:00, stenn@deacon.udel.edu +2 -2
+ Updates from Dave Mills
+
+ChangeSet@1.1251.72.21, 2006-02-17 23:50:33-05:00, stenn@deacon.udel.edu +1 -0
+ Only fuzz the time after we know sys_precision (gettimeofday only)
+
+ libntp/systime.c@1.36, 2006-02-17 23:50:24-05:00, stenn@deacon.udel.edu +10 -2
+ Only fuzz the time after we know sys_precision (gettimeofday only)
+
+ChangeSet@1.1251.72.20, 2006-02-15 23:21:06-05:00, mayer@pogo.udel.edu +1 -0
+ Fix next references for recvbuf
+
+ ntpd/ntpsim.c@1.11.1.1, 2006-02-15 23:20:23-05:00, mayer@pogo.udel.edu +4 -10
+ Fix next references for recvbuf
+
+ChangeSet@1.1251.72.18, 2006-01-31 21:40:26-05:00, stenn@deacon.udel.edu +1 -0
+ Added the new RFC4330 spec (SNTP)
+
+ sntp/RFC4330.TXT@1.1, 2006-01-31 21:39:46-05:00, stenn@deacon.udel.edu +1515 -0
+
+ sntp/RFC4330.TXT@1.0, 2006-01-31 21:39:46-05:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/sntp/RFC4330.TXT
+
+ChangeSet@1.1178.5.8, 2006-01-26 22:18:41-05:00, stenn@deacon.udel.edu +2 -0
+ Make --enable-simulator part of the flock build
+
+ br-flock@1.4.1.1, 2006-01-26 22:18:24-05:00, stenn@deacon.udel.edu +1 -1
+ Make --enable-simulator part of the flock build
+
+ flock-build@1.30.2.1, 2006-01-26 22:18:24-05:00, stenn@deacon.udel.edu +7 -7
+ Make --enable-simulator part of the flock build
+
+ChangeSet@1.1251.72.16, 2006-01-26 06:07:05+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_parse.c:
+ output errno on PPS setup failure
+
+ ntpd/refclock_parse.c@1.35.1.5, 2006-01-26 06:06:37+00:00, kardel@pogo.udel.edu +1 -1
+ output errno on PPS setup failure
+
+ChangeSet@1.1251.72.15, 2006-01-23 01:55:53-05:00, stenn@deacon.udel.edu +2 -0
+ configure.ac:
+ Cleanup from Ralf Wildenhues
+ authopt.html:
+ typo
+
+ configure.ac@1.359.1.27, 2006-01-23 01:55:36-05:00, stenn@deacon.udel.edu +4 -0
+ Cleanup from Ralf Wildenhues
+
+ html/authopt.html@1.39, 2006-01-23 01:54:55-05:00, stenn@deacon.udel.edu +2 -2
+ typo
+
+ChangeSet@1.1328, 2006-01-23 01:20:16-05:00, stenn@pogo.udel.edu +12 -0
+ Cleanup from Ralf Wildenhues
+
+ include/ntp_stdlib.h@1.24, 2006-01-23 01:14:40-05:00, stenn@pogo.udel.edu +1 -1
+ const cleanup from Ralf Wildenhues
+
+ include/ntpd.h@1.90, 2006-01-23 01:14:40-05:00, stenn@pogo.udel.edu +2 -2
+ const cleanup from Ralf Wildenhues
+
+ libntp/ntp_rfc2553.c@1.28, 2006-01-23 01:15:49-05:00, stenn@pogo.udel.edu +1 -1
+ lint cleanup from Ralf Wildenhues
+
+ ntpd/cmd_args.c@1.37, 2006-01-23 01:17:41-05:00, stenn@pogo.udel.edu +15 -15
+ const and lint cleanup from Ralf Wildenhues
+
+ ntpd/ntp_control.c@1.79.1.8, 2006-01-23 01:17:41-05:00, stenn@pogo.udel.edu +5 -1
+ const and lint cleanup from Ralf Wildenhues
+
+ ntpd/ntp_util.c@1.36.1.3, 2006-01-23 01:17:42-05:00, stenn@pogo.udel.edu +3 -3
+ const and lint cleanup from Ralf Wildenhues
+
+ ntpd/ntpd.c@1.74, 2006-01-23 01:17:43-05:00, stenn@pogo.udel.edu +8 -8
+ const and lint cleanup from Ralf Wildenhues
+
+ ntpd/refclock_acts.c@1.26, 2006-01-23 01:17:43-05:00, stenn@pogo.udel.edu +1 -1
+ const and lint cleanup from Ralf Wildenhues
+
+ ntpd/refclock_neoclock4x.c@1.14, 2006-01-23 01:17:44-05:00, stenn@pogo.udel.edu +1 -1
+ const and lint cleanup from Ralf Wildenhues
+
+ ntpdc/ntpdc.c@1.46, 2006-01-23 01:18:43-05:00, stenn@pogo.udel.edu +2 -2
+ const cleanup from Ralf Wildenhues
+
+ ntpq/ntpq.c@1.61, 2006-01-23 01:18:54-05:00, stenn@pogo.udel.edu +2 -2
+ const cleanup from Ralf Wildenhues
+
+ util/ntp-keygen.c@1.37, 2006-01-23 01:19:17-05:00, stenn@pogo.udel.edu +1 -1
+ lint cleanup from Ralf Wildenhues
+
+ChangeSet@1.1251.72.13, 2006-01-23 00:47:20-05:00, stenn@deacon.udel.edu +1 -0
+ Fix from Dave Mills: etemp gets min(), not max()
+
+ ntpd/ntp_loopfilter.c@1.122, 2006-01-23 00:47:11-05:00, stenn@deacon.udel.edu +1 -1
+ Fix from Dave Mills: etemp gets min(), not max()
+
+ChangeSet@1.1251.72.12, 2006-01-23 00:09:50-05:00, stenn@pogo.udel.edu +1 -0
+ Recover eaten patches
+
+ ntpd/ntpd.c@1.61.1.18, 2006-01-23 00:09:40-05:00, stenn@pogo.udel.edu +21 -0
+ Recover eaten patches
+
+ChangeSet@1.1251.74.11, 2006-01-22 15:58:25+00:00, kardel@pogo.udel.edu +1 -0
+ clk_rawdcf.c:
+ update version information
+
+ libparse/clk_rawdcf.c@1.13, 2006-01-22 15:56:43+00:00, kardel@pogo.udel.edu +6 -3
+ update version information
+
+ChangeSet@1.1251.74.10, 2006-01-22 15:49:38+00:00, kardel@pogo.udel.edu +1 -0
+ clk_rawdcf.c:
+ generate reasonable time code output on invalid input
+
+ libparse/clk_rawdcf.c@1.12, 2006-01-22 15:48:19+00:00, kardel@pogo.udel.edu +2 -2
+ generate reasonable time code output on invalid input
+
+ChangeSet@1.1251.74.9, 2006-01-14 17:42:21-05:00, stenn@deacon.udel.edu +1 -0
+ Fixes from Dave Mills
+
+ ntpd/refclock_wwv.c@1.59, 2006-01-14 17:42:08-05:00, stenn@deacon.udel.edu +7 -4
+ Fixes from Dave Mills
+
+ChangeSet@1.1325, 2006-01-12 18:52:24-05:00, stenn@pogo.udel.edu +2 -0
+ get libopts.m4 from libopts/m4
+
+ Makefile.am@1.58, 2006-01-12 18:52:12-05:00, stenn@pogo.udel.edu +1 -1
+ get libopts.m4 from libopts/m4
+
+ sntp/Makefile.am@1.12, 2006-01-12 18:52:13-05:00, stenn@pogo.udel.edu +1 -1
+ get libopts.m4 from libopts/m4
+
+ChangeSet@1.1324, 2006-01-12 18:23:36-05:00, stenn@pogo.udel.edu +3 -0
+ .del-libopts.m4~ebff9cfbfbe104c8:
+ Delete: sntp/m4/libopts.m4
+ bootstrap:
+ Leave libopts.m4 in sntp/
+ Makefile.am:
+ Get libopts.m4 from the sntp/m4 subdir
+
+ bootstrap@1.8, 2006-01-12 18:21:48-05:00, stenn@pogo.udel.edu +0 -1
+ Leave libopts.m4 in sntp/
+
+ BitKeeper/deleted/.del-libopts.m4~ebff9cfbfbe104c8@1.7, 2006-01-12 18:22:02-05:00, stenn@pogo.udel.edu +97 -88
+ Delete: sntp/m4/libopts.m4
+
+ Makefile.am@1.57, 2006-01-12 18:21:25-05:00, stenn@pogo.udel.edu +1 -1
+ Get libopts.m4 from the sntp/m4 subdir
+
+ChangeSet@1.1323, 2006-01-12 06:00:55-05:00, stenn@pogo.udel.edu +1 -0
+ libopts.m4 is in m4/ now
+
+ bootstrap@1.7, 2006-01-12 06:00:45-05:00, stenn@pogo.udel.edu +1 -1
+ libopts.m4 is in m4/ now
+
+ChangeSet@1.1319.1.1, 2006-01-12 04:36:58-05:00, stenn@pogo.udel.edu +1 -0
+ bootstrap wiggles
+
+ bootstrap@1.4.1.1, 2006-01-12 04:36:40-05:00, stenn@pogo.udel.edu +3 -1
+ autoreconf in sntp first, and avoid -f
+
+ChangeSet@1.1251.74.8, 2006-01-10 00:43:36-05:00, stenn@deacon.udel.edu +3 -0
+ doc changes from Dave Mills
+
+ html/authopt.html@1.38, 2006-01-10 00:43:14-05:00, stenn@deacon.udel.edu +4 -4
+ doc changes from Dave Mills
+
+ html/copyright.html@1.32, 2006-01-10 00:43:14-05:00, stenn@deacon.udel.edu +1 -1
+ doc changes from Dave Mills
+
+ html/miscopt.html@1.33, 2006-01-10 00:43:14-05:00, stenn@deacon.udel.edu +2 -3
+ doc changes from Dave Mills
+
+ChangeSet@1.1251.74.7, 2006-01-10 00:34:58-05:00, stenn@deacon.udel.edu +2 -0
+ Fixes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.121, 2006-01-10 00:34:48-05:00, stenn@deacon.udel.edu +72 -48
+ Fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.16, 2006-01-10 00:34:48-05:00, stenn@deacon.udel.edu +0 -1
+ Fixes from Dave Mills
+
+ChangeSet@1.1251.76.3, 2006-01-09 17:55:37-05:00, mayer@pogo.udel.edu +1 -0
+ Set multicast interface to ignore packets from self
+
+ ntpd/ntp_io.c@1.187.1.7, 2006-01-09 17:54:50-05:00, mayer@pogo.udel.edu +24 -0
+ Set multicast interface to ignore packets from self
+
+ChangeSet@1.1251.76.1, 2006-01-06 16:49:43-05:00, mayer@pogo.udel.edu +2 -0
+ Fix to have completion ports behave properly
+
+ ports/winnt/include/ntp_iocompletionport.h@1.12, 2006-01-06 16:47:39-05:00, mayer@pogo.udel.edu +0 -19
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.20, 2006-01-06 16:48:00-05:00, mayer@pogo.udel.edu +150 -115
+
+ChangeSet@1.1320, 2005-12-30 16:09:52-08:00, bkorb@bach.veritas.com +8 -0
+ Warning patrol, mostly. Also ensure that $(top_srcdir)/version is built
+ in those subdirectories that need it.
+
+ bootstrap@1.5, 2005-12-30 16:09:50-08:00, bkorb@bach.veritas.com +1 -1
+ Correct the directory where the libopts.m4 file is found
+
+ include/debug-opt.def@1.2, 2005-12-30 16:09:51-08:00, bkorb@bach.veritas.com +8 -0
+ The -D option requires "atoi(3C)". Ensure it is declared. Don't know if
+ ``#ifdef __windows'' is the right guard. Someone needs to correct it....
+
+ ntpd/Makefile.am@1.46, 2005-12-30 16:09:51-08:00, bkorb@bach.veritas.com +3 -0
+ The various subdirectories seem to need a rule for making ../version.
+ Provide it by invoking ``$(MAKE) version'' in that directory.
+
+ ntpd/cmd_args.c@1.36, 2005-12-30 16:09:51-08:00, bkorb@bach.veritas.com +1 -0
+ Declare global variable
+
+ ntpd/ntpd.c@1.72, 2005-12-30 16:09:51-08:00, bkorb@bach.veritas.com +11 -11
+ Correct "const char" usage.
+ Also, disambiguate local "ntp_optarg" from a global
+
+ ntpdate/Makefile.am@1.14, 2005-12-30 16:09:51-08:00, bkorb@bach.veritas.com +3 -0
+ The various subdirectories seem to need a rule for making ../version.
+ Provide it by invoking ``$(MAKE) version'' in that directory.
+
+ ntpdc/Makefile.am@1.28, 2005-12-30 16:09:51-08:00, bkorb@bach.veritas.com +3 -0
+ The various subdirectories seem to need a rule for making ../version.
+ Provide it by invoking ``$(MAKE) version'' in that directory.
+
+ ntpq/Makefile.am@1.20, 2005-12-30 16:09:51-08:00, bkorb@bach.veritas.com +3 -0
+ The various subdirectories seem to need a rule for making ../version.
+ Provide it by invoking ``$(MAKE) version'' in that directory.
+
+ChangeSet@1.1251.74.6, 2005-12-30 14:50:03-05:00, stenn@pogo.udel.edu +1 -0
+ [Bug 545] Provide needed headers to test for sys/timepps.h
+
+ configure.ac@1.359.1.26, 2005-12-30 14:49:50-05:00, stenn@pogo.udel.edu +16 -2
+ [Bug 545] Provide needed headers to test for sys/timepps.h
+
+ChangeSet@1.1319, 2005-12-30 14:07:38-05:00, stenn@pogo.udel.edu +2 -0
+ verbose bootstrap, lose m4/libopts.m4
+
+ bootstrap@1.4, 2005-12-30 14:07:15-05:00, stenn@pogo.udel.edu +3 -2
+ be verbose
+
+ BitKeeper/deleted/.del-libopts.m4~9f04cbceeedbd0cf@1.10, 2005-12-30 14:06:59-05:00, stenn@pogo.udel.edu +97 -88
+ Delete: m4/libopts.m4
+
+ChangeSet@1.1318, 2005-12-29 01:38:14-05:00, stenn@pogo.udel.edu +4 -0
+ wiggles
+
+ bootstrap@1.3, 2005-12-29 01:37:08-05:00, stenn@pogo.udel.edu +2 -20
+ wiggles
+
+ packageinfo.sh@1.1, 2005-12-29 01:35:53-05:00, stenn@pogo.udel.edu +1 -0
+
+ packageinfo.sh@1.0, 2005-12-29 01:35:53-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/packageinfo.sh
+
+ BitKeeper/deleted/.del-version.m4~4ef47e5fd0c38ddb@1.4, 2005-12-29 01:36:03-05:00, stenn@pogo.udel.edu +0 -0
+ Delete: version.m4
+
+ Makefile.am@1.56, 2005-12-29 01:37:08-05:00, stenn@pogo.udel.edu +16 -1
+ wiggles
+
+ChangeSet@1.1251.74.5, 2005-12-27 19:50:58-05:00, stenn@deacon.udel.edu +1 -0
+ [Bug 543] Leap second warning in ONCORE driver, from Luis Batanero Guerrero
+
+ ntpd/refclock_oncore.c@1.54, 2005-12-27 19:50:08-05:00, stenn@deacon.udel.edu +12 -12
+ [Bug 543] Leap second warning in ONCORE driver, from Luis Batanero Guerrero
+
+ChangeSet@1.1251.74.4, 2005-12-25 00:24:24-05:00, stenn@pogo.udel.edu +3 -0
+ [Bug 536] more filegen cleanup
+
+ include/ntp_filegen.h@1.3, 2005-12-25 00:23:31-05:00, stenn@pogo.udel.edu +1 -1
+ [Bug 536] more filegen cleanup
+
+ ntpd/ntp_filegen.c@1.11, 2005-12-25 00:23:38-05:00, stenn@pogo.udel.edu +24 -1
+ [Bug 536] more filegen cleanup
+
+ ntpd/ntp_util.c@1.36.1.2, 2005-12-25 00:23:39-05:00, stenn@pogo.udel.edu +6 -30
+ [Bug 536] more filegen cleanup
+
+ChangeSet@1.1316, 2005-12-23 13:56:31-08:00, bkorb@bach.veritas.com +51 -0
+ Extract the debug options into a separate file included by all the
+ option files. Place the file in the "include" directory. Modify
+ the makefiles so autogen adds that directory to its search list.
+
+ BitKeeper/deleted/.del-COPYING.lgpl~a697cd34fe132e8a@1.2, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/COPYING.lgpl
+
+ BitKeeper/deleted/.del-COPYING.mbsd~bfae58672feaeb37@1.2, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/COPYING.mbsd
+
+ BitKeeper/deleted/.del-MakeDefs.inc~5e2e772dad68df1a@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/MakeDefs.inc
+
+ BitKeeper/deleted/.del-Makefile.am~6d6a227df4a598ae@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/Makefile.am
+
+ BitKeeper/deleted/.del-README~e3d36052eb50258b@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/README
+
+ BitKeeper/deleted/.del-autoopts.c~85fbb1bcfe1504ac@1.4, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/autoopts.c
+
+ BitKeeper/deleted/.del-autoopts.h~4c10cd8f919f6342@1.5, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/autoopts.h
+
+ BitKeeper/deleted/.del-boolean.c~2a088bf49e080afe@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/boolean.c
+
+ bootstrap@1.2, 2005-12-23 12:17:54-08:00, bkorb@bach.veritas.com +12 -0
+ Add in the commands that were part of Makefile.am
+
+ bootstrap@1.1, 2005-12-23 10:56:19-08:00, bkorb@bach.veritas.com +61 -0
+
+ bootstrap@1.0, 2005-12-23 10:56:19-08:00, bkorb@bach.veritas.com +0 -0
+ BitKeeper file /home/bkorb/tools/ntp/ntp-dev-ag/bootstrap
+
+ BitKeeper/deleted/.del-compat.h~1cf561c3e113254d@1.7, 2005-12-23 12:11:25-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/compat/compat.h
+
+ BitKeeper/deleted/.del-configfile.c~bd820799c8dfa50e@1.2, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/configfile.c
+
+ BitKeeper/deleted/.del-cook.c~3fdbc751394ee14d@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/cook.c
+
+ BitKeeper/deleted/.del-enumeration.c~e0416dead0d88f06@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/enumeration.c
+
+ BitKeeper/deleted/.del-environment.c~abe99889ca57817e@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/environment.c
+
+ BitKeeper/deleted/.del-genshell.c~9d621c66b4bd754@1.5, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/genshell.c
+
+ BitKeeper/deleted/.del-genshell.h~f5d1af5bffb3ba@1.5, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/genshell.h
+
+ BitKeeper/deleted/.del-libopts.c~f2125365b6c69db9@1.4, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/libopts.c
+
+ BitKeeper/deleted/.del-libopts.m4~11b56b285499781a@1.5, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/libopts.m4
+
+ BitKeeper/deleted/.del-load.c~c55b985b7f4e79cc@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/load.c
+
+ BitKeeper/deleted/.del-makeshell.c~4e0d2f7e41c164dc@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/makeshell.c
+
+ BitKeeper/deleted/.del-nested.c~2ab62bdc3ff6240d@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/nested.c
+
+ BitKeeper/deleted/.del-numeric.c~6f61173230495e21@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/numeric.c
+
+ BitKeeper/deleted/.del-options.h~4ef9db18f2de6a59@1.4, 2005-12-23 12:11:19-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/autoopts/options.h
+
+ BitKeeper/deleted/.del-pathfind.c~4d249636f5082615@1.2, 2005-12-23 12:11:25-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/compat/pathfind.c
+
+ BitKeeper/deleted/.del-pgusage.c~7d50638aa3ccd579@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/pgusage.c
+
+ BitKeeper/deleted/.del-proto.h~93d0676a173a4b6e@1.5, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/proto.h
+
+ BitKeeper/deleted/.del-putshell.c~8fdade676545e0ad@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/putshell.c
+
+ BitKeeper/deleted/.del-restore.c~2d36a183c65e46b2@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/restore.c
+
+ BitKeeper/deleted/.del-save.c~1e35dba6263bdb0@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/save.c
+
+ BitKeeper/deleted/.del-snprintf.c~34bb5dbb6f424fa4@1.2, 2005-12-23 12:11:25-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/compat/snprintf.c
+
+ BitKeeper/deleted/.del-sort.c~f2dbbab8aecd13de@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/sort.c
+
+ BitKeeper/deleted/.del-stack.c~66471a39d92bf493@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/stack.c
+
+ BitKeeper/deleted/.del-strdup.c~1ff3ed47354b9cab@1.2, 2005-12-23 12:11:25-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/compat/strdup.c
+
+ BitKeeper/deleted/.del-streqvcmp.c~7d82b266e654e41f@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/streqvcmp.c
+
+ BitKeeper/deleted/.del-text_mmap.c~75102303341e937b@1.4, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/text_mmap.c
+
+ BitKeeper/deleted/.del-tokenize.c~f26cbe6a73d13566@1.2, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/tokenize.c
+
+ BitKeeper/deleted/.del-usage-txt.h~e22bfd18a5765c49@1.5, 2005-12-23 12:11:19-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/autoopts/usage-txt.h
+
+ BitKeeper/deleted/.del-usage.c~ce3b6af7dd1009cc@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/usage.c
+
+ BitKeeper/deleted/.del-version.c~bf32cf48f59dabf1@1.3, 2005-12-23 12:11:02-08:00, bkorb@bach.veritas.com +0 -0
+ Delete: sntp/libopts/version.c
+
+ BitKeeper/etc/logging_ok@1.57.2.1, 2005-12-23 13:56:31-08:00, bkorb@bach.veritas.com +1 -0
+ Logging to repologs@ntp.isc.org accepted
+
+ Makefile.am@1.55, 2005-12-23 12:17:32-08:00, bkorb@bach.veritas.com +1 -16
+ Move some commands out into the bootstrap script
+
+ include/debug-opt.def@1.1, 2005-12-23 10:56:50-08:00, bkorb@bach.veritas.com +24 -0
+
+ include/debug-opt.def@1.0, 2005-12-23 10:56:50-08:00, bkorb@bach.veritas.com +0 -0
+ BitKeeper file /home/bkorb/tools/ntp/ntp-dev-ag/include/debug-opt.def
+
+ ntpd/Makefile.am@1.45, 2005-12-23 13:55:50-08:00, bkorb@bach.veritas.com +7 -8
+ Option def files must include from the ntp/include directory.
+
+ ntpd/ntpdbase-opts.def@1.2, 2005-12-23 13:55:50-08:00, bkorb@bach.veritas.com +1 -24
+ Move debug options to common file.
+
+ ntpdc/Makefile.am@1.27, 2005-12-23 13:55:50-08:00, bkorb@bach.veritas.com +4 -5
+ Option def files must include from the ntp/include directory.
+
+ ntpdc/ntpdc-opts.def@1.6, 2005-12-23 13:55:50-08:00, bkorb@bach.veritas.com +1 -24
+ Move debug options to a common file.
+
+ ntpq/Makefile.am@1.19, 2005-12-23 13:55:50-08:00, bkorb@bach.veritas.com +4 -5
+ Option def files must include from the ntp/include directory.
+
+ sntp/Makefile.am@1.11, 2005-12-23 13:55:50-08:00, bkorb@bach.veritas.com +4 -4
+ Option def files must include from the ntp/include directory.
+
+ util/Makefile.am@1.29, 2005-12-23 13:55:50-08:00, bkorb@bach.veritas.com +4 -4
+ When building option source, be sure to look in the include file for
+ the debug option file.
+
+ util/ntp-keygen-opts.def@1.2, 2005-12-23 13:55:50-08:00, bkorb@bach.veritas.com +3 -27
+ Move debug options to a common file.
+
+ util/ntp-keygen.c@1.36, 2005-12-23 13:55:50-08:00, bkorb@bach.veritas.com +8 -39
+ Remove some confusing #ifdef's and replace "iffsw" with "HAVE_OPT(ID_KEY)".
+
+ChangeSet@1.1251.71.10, 2005-12-20 23:14:56-05:00, stenn@pogo.udel.edu +1 -0
+ bail early from get_full_recv_buffer() if there is nothing to do.
+
+ libntp/recvbuff.c@1.18, 2005-12-20 23:14:18-05:00, stenn@pogo.udel.edu +3 -0
+ bail early from get_full_recv_buffer() if there is nothing to do.
+
+ChangeSet@1.1251.72.5, 2005-12-20 22:09:09-05:00, mayer@pogo.udel.edu +1 -0
+ Fix recvbuff code with missing refetch when needing more buffers
+
+ libntp/recvbuff.c@1.13.1.2, 2005-12-20 22:08:49-05:00, mayer@pogo.udel.edu +10 -5
+ Fix recvbuff code with missing refetch when needing more buffers
+
+ChangeSet@1.1178.5.7, 2005-12-20 22:05:18-05:00, stenn@deacon.udel.edu +6 -0
+ Send email to ntp.isc.org now
+
+ BitKeeper/triggers/changelog@1.3, 2005-12-20 22:04:44-05:00, stenn@deacon.udel.edu +1 -1
+ Send email to ntp.isc.org now
+
+ BitKeeper/triggers/commitlogs@1.5, 2005-12-20 22:04:45-05:00, stenn@deacon.udel.edu +2 -1
+ Send email to ntp.isc.org now
+
+ BitKeeper/triggers/delta-changelog@1.7, 2005-12-20 22:04:45-05:00, stenn@deacon.udel.edu +2 -2
+ Send email to ntp.isc.org now
+
+ BitKeeper/triggers/notify@1.3, 2005-12-20 22:04:46-05:00, stenn@deacon.udel.edu +2 -1
+ Send email to ntp.isc.org now
+
+ BitKeeper/triggers/paranoid@1.3, 2005-12-20 22:04:46-05:00, stenn@deacon.udel.edu +1 -1
+ Send email to ntp.isc.org now
+
+ BitKeeper/triggers/send@1.5, 2005-12-20 22:04:46-05:00, stenn@deacon.udel.edu +1 -1
+ Send email to ntp.isc.org now
+
+ChangeSet@1.1251.74.2, 2005-12-20 21:46:45-05:00, stenn@pogo.udel.edu +2 -0
+ [Bug 536] Clean up the filegen initialization
+
+ ntpd/ntp_filegen.c@1.10, 2005-12-20 21:33:19-05:00, stenn@pogo.udel.edu +2 -1
+ reformat comment
+
+ ntpd/ntp_util.c@1.36.1.1, 2005-12-20 21:46:11-05:00, stenn@pogo.udel.edu +36 -71
+ [Bug 536] Clean up the filegen initialization
+
+ChangeSet@1.1251.74.1, 2005-12-20 18:30:52-05:00, stenn@pogo.udel.edu +1 -0
+ Tolerate leap second notifications in sntp
+
+ sntp/main.c@1.6, 2005-12-20 18:30:44-05:00, stenn@pogo.udel.edu +4 -3
+ Tolerate leap second notifications in sntp
+
+ChangeSet@1.1251.73.4, 2005-12-20 09:26:06-05:00, mayer@pogo.udel.edu +1 -0
+ Update the way packets are processed
+
+ ntpd/ntpd.c@1.61.4.1, 2005-12-20 09:25:53-05:00, mayer@pogo.udel.edu +8 -5
+ Update the way packets are processed
+
+ChangeSet@1.1251.73.3, 2005-12-20 09:25:05-05:00, mayer@pogo.udel.edu +2 -0
+ Bug #527 - Fix buffer problems when under load
+
+ ports/winnt/include/ntp_iocompletionport.h@1.11, 2005-12-20 09:23:36-05:00, mayer@pogo.udel.edu +1 -6
+ Bug #527 - Fix buffer problems when under load
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.19, 2005-12-20 09:23:36-05:00, mayer@pogo.udel.edu +150 -83
+ Bug #527 - Fix buffer problems when under load
+
+ChangeSet@1.1251.72.3, 2005-12-19 18:12:59-05:00, stenn@deacon.udel.edu +1 -0
+ leap change notification cleanup from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.120, 2005-12-19 18:11:24-05:00, stenn@deacon.udel.edu +0 -8
+ leap change notification cleanup from Dave Mills
+
+ChangeSet@1.1315, 2005-12-16 03:37:46-05:00, stenn@pogo.udel.edu +1 -0
+ Use AutoOpts
+
+ util/ntp-keygen.c@1.35, 2005-12-16 03:37:32-05:00, stenn@pogo.udel.edu +46 -172
+ Use AutoOpts
+
+ChangeSet@1.1314, 2005-12-15 06:34:59-05:00, stenn@pogo.udel.edu +9 -0
+ AutoGen stuff
+
+ sntp/libopts/compat/compat.h@1.6, 2005-12-15 06:33:51-05:00, stenn@pogo.udel.edu +1 -1
+ AutoGen stuff
+
+ m4/libopts.m4@1.9, 2005-12-15 06:33:50-05:00, stenn@pogo.udel.edu +15 -17
+ AutoGen stuff
+
+ sntp/m4/libopts.m4@1.6, 2005-12-15 06:33:51-05:00, stenn@pogo.udel.edu +15 -17
+ AutoGen stuff
+
+ sntp/libopts/compat/snprintf.c@1.1, 2005-12-15 06:32:56-05:00, stenn@pogo.udel.edu +36 -0
+
+ sntp/libopts/compat/snprintf.c@1.0, 2005-12-15 06:32:56-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/compat/snprintf.c
+
+ sntp/libopts/compat/strdup.c@1.1, 2005-12-15 06:32:56-05:00, stenn@pogo.udel.edu +19 -0
+
+ sntp/libopts/compat/strdup.c@1.0, 2005-12-15 06:32:56-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/compat/strdup.c
+
+ ntpd/Makefile.am@1.44, 2005-12-15 06:33:50-05:00, stenn@pogo.udel.edu +10 -10
+ AutoGen stuff
+
+ ntpdc/Makefile.am@1.26, 2005-12-15 06:33:50-05:00, stenn@pogo.udel.edu +5 -5
+ AutoGen stuff
+
+ ntpq/Makefile.am@1.18, 2005-12-15 06:33:51-05:00, stenn@pogo.udel.edu +4 -4
+ AutoGen stuff
+
+ sntp/Makefile.am@1.10, 2005-12-15 06:33:51-05:00, stenn@pogo.udel.edu +4 -4
+ AutoGen stuff
+
+ChangeSet@1.1312, 2005-12-15 06:27:57-05:00, stenn@pogo.udel.edu +3 -0
+ ntp-keygen conversion from Bruce Korb
+
+ BitKeeper/etc/ignore@1.45, 2005-12-15 06:25:25-05:00, stenn@pogo.udel.edu +1 -0
+ added util/ntp-keygen.1
+
+ util/Makefile.am@1.26.1.1, 2005-12-15 06:27:29-05:00, stenn@pogo.udel.edu +21 -4
+ ntp-keygen conversion from Bruce Korb
+
+ util/ntp-keygen-opts.def@1.1, 2005-12-15 06:23:17-05:00, stenn@pogo.udel.edu +263 -0
+
+ util/ntp-keygen-opts.def@1.0, 2005-12-15 06:23:17-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/util/ntp-keygen-opts.def
+
+ChangeSet@1.1251.71.9, 2005-12-13 05:22:27-05:00, stenn@pogo.udel.edu +2 -0
+ more full_recvbuf cleanup
+
+ libntp/recvbuff.c@1.17, 2005-12-13 05:22:14-05:00, stenn@pogo.udel.edu +2 -0
+ more full_recvbuf cleanup
+
+ ntpd/ntpd.c@1.61.1.16, 2005-12-13 05:22:03-05:00, stenn@pogo.udel.edu +2 -3
+ more full_recvbuf cleanup
+
+ChangeSet@1.1251.71.8, 2005-12-13 04:01:10-05:00, stenn@pogo.udel.edu +1 -0
+ Only call get_full_recv_buffer() if we have something
+
+ ntpd/ntpd.c@1.61.1.15, 2005-12-13 04:00:42-05:00, stenn@pogo.udel.edu +12 -8
+ Only call get_full_recv_buffer() if we have something
+
+ChangeSet@1.1251.73.2, 2005-12-12 23:35:01-05:00, mayer@pogo.udel.edu +2 -0
+ Fixes for buffer loss and DOS attacks
+
+ ports/winnt/include/ntp_iocompletionport.h@1.10, 2005-12-12 23:34:36-05:00, mayer@pogo.udel.edu +1 -1
+ Fixes for buffer loss and DOS attacks
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.18, 2005-12-12 23:34:36-05:00, mayer@pogo.udel.edu +5 -1
+ Fixes for buffer loss and DOS attacks
+
+ChangeSet@1.1251.73.1, 2005-12-12 23:32:47-05:00, mayer@pogo.udel.edu +2 -0
+ Make recvbuf unlimited and add check for full buffers
+
+ include/recvbuff.h@1.11, 2005-12-12 23:31:40-05:00, mayer@pogo.udel.edu +6 -0
+ Make recvbuf unlimited and add check for full buffers
+
+ libntp/recvbuff.c@1.13.1.1, 2005-12-12 23:31:40-05:00, mayer@pogo.udel.edu +24 -15
+ Make recvbuf unlimited and add check for full buffers
+
+ChangeSet@1.1251.72.2, 2005-12-11 18:54:45-05:00, stenn@deacon.udel.edu +5 -0
+ [Bug 531]: ntpdc limitations on addserver & addpeer (Ray Van Tassle)
+
+ html/ntpdc.html@1.20.1.2, 2005-12-11 18:51:32-05:00, stenn@deacon.udel.edu +27 -5
+ [Bug 531]: ntpdc limitations on addserver & addpeer (Ray Van Tassle)
+
+ ntpd/ntp_request.c@1.58.1.1, 2005-12-11 18:53:37-05:00, stenn@deacon.udel.edu +23 -5
+ [Bug 531]: ntpdc limitations on addserver & addpeer (Ray Van Tassle)
+
+ ntpdc/ntpdc.c@1.40.2.1, 2005-12-11 18:51:45-05:00, stenn@deacon.udel.edu +15 -0
+ [Bug 531]: ntpdc limitations on addserver & addpeer (Ray Van Tassle)
+
+ ntpdc/ntpdc.h@1.5, 2005-12-11 18:51:46-05:00, stenn@deacon.udel.edu +2 -2
+ [Bug 531]: ntpdc limitations on addserver & addpeer (Ray Van Tassle)
+
+ ntpdc/ntpdc_ops.c@1.38.1.1, 2005-12-11 18:51:47-05:00, stenn@deacon.udel.edu +4 -2
+ [Bug 531]: ntpdc limitations on addserver & addpeer (Ray Van Tassle)
+
+ChangeSet@1.1251.71.6, 2005-12-11 17:16:25-05:00, stenn@maccarony.ntp.org +1 -0
+ diagnostic cleanup
+
+ libntp/recvbuff.c@1.15, 2005-12-11 17:16:16-05:00, stenn@maccarony.ntp.org +2 -3
+ diagnostic cleanup
+
+ChangeSet@1.1251.71.5, 2005-12-11 17:04:21-05:00, stenn@maccarony.ntp.org +3 -0
+ recvbuf typo fix and diagnostics
+
+ BitKeeper/etc/logging_ok@1.55.1.2, 2005-12-11 17:04:20-05:00, stenn@maccarony.ntp.org +1 -0
+ Logging to repologs@ntp.isc.org accepted
+
+ libntp/recvbuff.c@1.14, 2005-12-11 17:02:36-05:00, stenn@maccarony.ntp.org +10 -2
+ full_recvbuf diagnostics
+
+ ntpd/ntpd.c@1.61.1.14, 2005-12-11 17:03:33-05:00, stenn@maccarony.ntp.org +1 -1
+ Danny's typo fix for checking tot_full_recvbufs
+
+ChangeSet@1.1251.71.4, 2005-12-10 23:49:14-05:00, mayer@pogo.udel.edu +2 -0
+ revbuf rewrite
+
+ libntp/recvbuff.c@1.13, 2005-12-10 23:48:53-05:00, mayer@pogo.udel.edu +26 -11
+ revbuf rewrite
+
+ ntpd/ntp_io.c@1.187.1.6, 2005-12-10 23:48:53-05:00, mayer@pogo.udel.edu +48 -8
+ revbuf rewrite
+
+ChangeSet@1.1251.72.1, 2005-12-07 23:23:03-05:00, stenn@deacon.udel.edu +2 -0
+ cleanup from Dave Mills
+
+ ntpd/refclock_irig.c@1.22, 2005-12-07 23:21:50-05:00, stenn@deacon.udel.edu +3 -4
+ cleanup from Dave Mills
+
+ ntpd/refclock_wwv.c@1.58, 2005-12-07 23:22:01-05:00, stenn@deacon.udel.edu +11 -0
+ cleanup from Dave Mills
+
+ChangeSet@1.1251.1.178, 2005-12-05 18:36:24-05:00, stenn@pogo.udel.edu +1 -0
+ tg cleanup
+
+ util/tg.c@1.3, 2005-12-05 18:35:58-05:00, stenn@pogo.udel.edu +1 -0
+ tg cleanup
+
+ChangeSet@1.1251.67.29, 2005-12-05 17:37:57-05:00, stenn@deacon.udel.edu +2 -0
+ Added 'tg'
+
+ util/Makefile.am@1.27, 2005-12-05 17:37:21-05:00, stenn@deacon.udel.edu +1 -1
+ Added 'tg'
+
+ util/tg.c@1.2, 2005-12-05 17:35:32-05:00, stenn@deacon.udel.edu +5 -4
+ cleanup
+
+ util/tg.c@1.1, 2005-12-05 16:03:46-05:00, stenn@deacon.udel.edu +650 -0
+
+ util/tg.c@1.0, 2005-12-05 16:03:46-05:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/util/tg.c
+
+ChangeSet@1.1251.67.28, 2005-12-05 04:55:50-05:00, stenn@deacon.udel.edu +2 -0
+ leap second stuff from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.119, 2005-12-05 03:43:10-05:00, stenn@deacon.udel.edu +11 -11
+ leap second stuff from Dave Mills
+
+ ntpd/refclock_wwv.c@1.57, 2005-12-05 03:43:34-05:00, stenn@deacon.udel.edu +8 -6
+ leap second stuff from Dave Mills
+
+ChangeSet@1.1251.67.27, 2005-11-28 20:54:35-05:00, stenn@deacon.udel.edu +1 -0
+ WWV doc updates from Dave Mills
+
+ html/drivers/driver36.html@1.27, 2005-11-28 20:54:02-05:00, stenn@deacon.udel.edu +14 -22
+ WWV doc updates from Dave Mills
+
+ChangeSet@1.1251.71.3, 2005-11-27 18:35:43-05:00, mayer@pogo.udel.edu +1 -0
+ Name the timer event
+
+ ports/winnt/ntpd/nt_clockstuff.c@1.19, 2005-11-27 18:35:26-05:00, mayer@pogo.udel.edu +2 -2
+ Name the timer event
+
+ChangeSet@1.1251.71.2, 2005-11-27 18:33:06-05:00, mayer@pogo.udel.edu +9 -0
+ Upgrade recvbuf and transmitbuf to use ISC_LIST_* lists
+
+ include/recvbuff.h@1.10, 2005-11-27 18:32:24-05:00, mayer@pogo.udel.edu +6 -4
+ Upgrade recvbuf and transmitbuf to use ISC_LIST_* lists
+
+ libntp/recvbuff.c@1.12, 2005-11-27 18:32:24-05:00, mayer@pogo.udel.edu +48 -137
+ Upgrade recvbuf and transmitbuf to use ISC_LIST_* lists
+
+ ntpd/ntpd.c@1.61.1.13, 2005-11-27 18:32:24-05:00, mayer@pogo.udel.edu +8 -35
+ Upgrade recvbuf and transmitbuf to use ISC_LIST_* lists
+
+ ntpd/refclock_parse.c@1.35.1.4, 2005-11-27 18:32:24-05:00, mayer@pogo.udel.edu +0 -1
+ Upgrade recvbuf and transmitbuf to use ISC_LIST_* lists
+
+ ntpdate/ntpdate.c@1.55, 2005-11-27 18:32:25-05:00, mayer@pogo.udel.edu +8 -8
+ Upgrade recvbuf and transmitbuf to use ISC_LIST_* lists
+
+ ntpdate/ntptimeset.c@1.13, 2005-11-27 18:32:25-05:00, mayer@pogo.udel.edu +7 -13
+ Upgrade recvbuf and transmitbuf to use ISC_LIST_* lists
+
+ ports/winnt/include/transmitbuff.h@1.5, 2005-11-27 18:32:25-05:00, mayer@pogo.udel.edu +7 -4
+ Upgrade recvbuf and transmitbuf to use ISC_LIST_* lists
+
+ ports/winnt/libntp/transmitbuff.c@1.6, 2005-11-27 18:32:25-05:00, mayer@pogo.udel.edu +56 -129
+ Upgrade recvbuf and transmitbuf to use ISC_LIST_* lists
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.17, 2005-11-27 18:32:25-05:00, mayer@pogo.udel.edu +45 -21
+ Upgrade recvbuf and transmitbuf to use ISC_LIST_* lists
+
+ChangeSet@1.1251.70.1, 2005-11-27 18:23:40-05:00, mayer@pogo.udel.edu +1 -0
+ Removed setting next variable in recvbuff
+
+ ntpd/refclock_parse.c@1.35.2.1, 2005-11-27 18:22:58-05:00, mayer@pogo.udel.edu +185 -222
+ Removed setting next variable in recvbuff
+
+ChangeSet@1.1251.67.26, 2005-11-27 17:38:02-05:00, stenn@deacon.udel.edu +1 -0
+ WWV updates from Dave Mills
+
+ ntpd/refclock_wwv.c@1.56, 2005-11-27 17:37:30-05:00, stenn@deacon.udel.edu +329 -479
+ WWV updates from Dave Mills
+
+ChangeSet@1.1251.67.25, 2005-11-15 04:55:14-05:00, stenn@deacon.udel.edu +1 -0
+ more tm_mon fixes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.118, 2005-11-15 04:55:02-05:00, stenn@deacon.udel.edu +3 -2
+ more tm_mon fixes from Dave Mills
+
+ChangeSet@1.1251.69.1, 2005-11-09 22:13:13+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_parse.c:
+ utilize full PPS timestamp resolution from PPS API
+
+ ntpd/refclock_parse.c@1.35.1.2, 2005-11-09 21:00:26+00:00, kardel@pogo.udel.edu +23 -13
+ utilize full PPS timestamp resolution from PPS API
+
+ChangeSet@1.1251.67.22, 2005-11-09 00:32:54-05:00, stenn@deacon.udel.edu +2 -0
+ Documentation fixes from Dave Mills
+
+ html/authopt.html@1.37, 2005-11-09 00:32:40-05:00, stenn@deacon.udel.edu +10 -10
+ Documentation fixes from Dave Mills
+
+ html/keygen.html@1.8, 2005-11-09 00:32:40-05:00, stenn@deacon.udel.edu +5 -5
+ Documentation fixes from Dave Mills
+
+ChangeSet@1.1251.68.1, 2005-11-08 09:15:35-05:00, mayer@pogo.udel.edu +1 -0
+ bug 495 - fix for multicasting and reuseaddr got lost
+
+ ntpd/ntp_io.c@1.187.1.5, 2005-11-08 09:15:02-05:00, mayer@pogo.udel.edu +6 -2
+ bug 495 - fix for multicasting and reuseaddr got lost
+
+ChangeSet@1.1251.67.21, 2005-11-07 22:11:10-05:00, stenn@deacon.udel.edu +1 -0
+ [Bug 481] do not check $build paths for openssl if cross-compiling. Other $build/$host cleanup, too.
+
+ configure.ac@1.359.1.25, 2005-11-07 22:11:02-05:00, stenn@deacon.udel.edu +35 -20
+ [Bug 481] do not check $build paths for openssl if cross-compiling. Other $build/$host cleanup, too.
+
+ChangeSet@1.1251.67.20, 2005-11-07 03:15:55-05:00, stenn@deacon.udel.edu +10 -0
+ Fixes from Dave Mills
+
+ html/authopt.html@1.36, 2005-11-07 03:15:21-05:00, stenn@deacon.udel.edu +3 -4
+ Fixes from Dave Mills
+
+ ntpd/ntp_config.c@1.129.4.2, 2005-11-07 03:13:23-05:00, stenn@deacon.udel.edu +4 -4
+ Fixes from Dave Mills
+
+ ntpd/ntp_control.c@1.79.1.7, 2005-11-07 03:13:23-05:00, stenn@deacon.udel.edu +2 -7
+ Fixes from Dave Mills
+
+ ntpd/ntp_crypto.c@1.98.1.10, 2005-11-07 03:13:23-05:00, stenn@deacon.udel.edu +12 -23
+ Fixes from Dave Mills
+
+ ntpd/ntp_refclock.c@1.74, 2005-11-07 03:13:24-05:00, stenn@deacon.udel.edu +2 -9
+ Fixes from Dave Mills
+
+ ntpd/refclock_atom.c@1.54, 2005-11-07 03:13:24-05:00, stenn@deacon.udel.edu +0 -5
+ Fixes from Dave Mills
+
+ ntpd/refclock_fg.c@1.10, 2005-11-07 03:13:24-05:00, stenn@deacon.udel.edu +0 -3
+ Fixes from Dave Mills
+
+ ntpd/refclock_local.c@1.15, 2005-11-07 03:13:24-05:00, stenn@deacon.udel.edu +1 -1
+ Fixes from Dave Mills
+
+ ntpd/refclock_wwv.c@1.55, 2005-11-07 03:13:24-05:00, stenn@deacon.udel.edu +36 -20
+ Fixes from Dave Mills
+
+ util/ntp-keygen.c@1.34, 2005-11-07 03:12:02-05:00, stenn@deacon.udel.edu +2 -2
+ Fixes from Dave Mills
+
+ChangeSet@1.1251.67.19, 2005-11-06 17:15:15-05:00, mayer@pogo.udel.edu +1 -0
+ Fixes from Heiko and Martin for ntpdate on Windows
+
+ ntpdate/ntpdate.c@1.54, 2005-11-06 17:14:04-05:00, mayer@pogo.udel.edu +47 -6
+ Fixes from Heiko and Martin for ntpdate on Windows
+
+ChangeSet@1.1251.67.17, 2005-11-02 06:54:06-05:00, stenn@deacon.udel.edu +1 -0
+ Updates from Dave Mills
+
+ html/authopt.html@1.35, 2005-11-02 06:53:56-05:00, stenn@deacon.udel.edu +5 -5
+ Updates from Dave Mills
+
+ChangeSet@1.1251.64.4, 2005-11-01 23:40:29-05:00, mayer@pogo.udel.edu +8 -0
+ Bug fixes to support IPv6 changes for non-IPv6 capable systems
+
+ include/isc/ipv6.h@1.7, 2005-11-01 23:40:06-05:00, mayer@pogo.udel.edu +2 -2
+ Bug fixes to support IPv6 changes for non-IPv6 capable systems
+
+ include/isc/net.h@1.8, 2005-11-01 23:40:06-05:00, mayer@pogo.udel.edu +2 -2
+ Bug fixes to support IPv6 changes for non-IPv6 capable systems
+
+ include/ntp_machine.h@1.21, 2005-11-01 23:40:06-05:00, mayer@pogo.udel.edu +1 -0
+ Bug fixes to support IPv6 changes for non-IPv6 capable systems
+
+ include/ntp_rfc2553.h@1.28, 2005-11-01 23:40:06-05:00, mayer@pogo.udel.edu +21 -16
+ Bug fixes to support IPv6 changes for non-IPv6 capable systems
+
+ libisc/net.c@1.7, 2005-11-01 23:40:06-05:00, mayer@pogo.udel.edu +0 -1
+ Bug fixes to support IPv6 changes for non-IPv6 capable systems
+
+ libisc/sockaddr.c@1.5, 2005-11-01 23:40:06-05:00, mayer@pogo.udel.edu +2 -2
+ Bug fixes to support IPv6 changes for non-IPv6 capable systems
+
+ libntp/ntp_rfc2553.c@1.27, 2005-11-01 23:40:06-05:00, mayer@pogo.udel.edu +7 -1
+ Bug fixes to support IPv6 changes for non-IPv6 capable systems
+
+ ntpdate/ntpdate.c@1.53, 2005-11-01 23:40:06-05:00, mayer@pogo.udel.edu +41 -18
+ Bug fixes to support IPv6 changes for non-IPv6 capable systems
+
+ChangeSet@1.1251.67.16, 2005-10-31 05:26:54-05:00, stenn@deacon.udel.edu +2 -0
+ fixes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.117, 2005-10-31 05:25:49-05:00, stenn@deacon.udel.edu +10 -5
+ MOD_NANO fixes from Dave Mills
+
+ ntpd/refclock_wwv.c@1.54, 2005-10-31 05:26:37-05:00, stenn@deacon.udel.edu +1 -1
+ Bump MAXFREQ from 125 to 187 PPM, from Dave Mills
+
+ChangeSet@1.1251.67.15, 2005-10-28 19:05:28-04:00, stenn@deacon.udel.edu +1 -0
+ Weed-whack NANO stuff from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.116, 2005-10-28 19:05:08-04:00, stenn@deacon.udel.edu +29 -22
+ Weed-whack NANO stuff from Dave Mills
+
+ChangeSet@1.1251.67.14, 2005-10-27 22:12:21-04:00, stenn@deacon.udel.edu +4 -0
+ [Bug 521] calleapwhen.c is obsolete
+
+ BitKeeper/deleted/.del-calleapwhen.c~3e480692@1.3, 2005-10-27 22:07:30-04:00, stenn@deacon.udel.edu +0 -0
+ Delete: libntp/calleapwhen.c
+
+ include/ntp_stdlib.h@1.23, 2005-10-27 22:11:51-04:00, stenn@deacon.udel.edu +0 -1
+ [Bug 521] calleapwhen.c is obsolete
+
+ libntp/Makefile.am@1.37, 2005-10-27 22:11:51-04:00, stenn@deacon.udel.edu +1 -1
+ [Bug 521] calleapwhen.c is obsolete
+
+ ports/winnt/libntp/libntp.dsp@1.27, 2005-10-27 22:11:51-04:00, stenn@deacon.udel.edu +0 -4
+ [Bug 521] calleapwhen.c is obsolete
+
+ChangeSet@1.1251.67.13, 2005-10-27 21:59:11-04:00, stenn@deacon.udel.edu +2 -0
+ More updates from Dave Mills
+
+ include/ntp.h@1.120.1.6, 2005-10-27 21:57:49-04:00, stenn@deacon.udel.edu +0 -4
+ More updates from Dave Mills
+
+ ntpd/ntp_crypto.c@1.98.1.9, 2005-10-27 21:57:52-04:00, stenn@deacon.udel.edu +64 -23
+ More updates from Dave Mills
+
+ChangeSet@1.1251.67.12, 2005-10-27 21:38:04-04:00, stenn@deacon.udel.edu +1 -0
+ [Bug 516] unprotected crypto_update() call fix from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.14, 2005-10-27 21:37:53-04:00, stenn@deacon.udel.edu +5 -7
+ [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 +2 -0
+ [Bug 517] Allow dynamic SSL libraries
+
+ configure.ac@1.359.1.24, 2005-10-25 20:15:34-04:00, stenn@deacon.udel.edu +3 -2
+ [Bug 517] Allow dynamic SSL libraries: also check /usr/sfw/{lib,include}
+
+ ntpd/ntpd.c@1.61.1.12, 2005-10-25 20:14:38-04:00, stenn@deacon.udel.edu +9 -0
+ [Bug 517] Allow dynamic SSL libraries: check SSLeay() for version info
+
+ChangeSet@1.1251.67.10, 2005-10-24 04:35:24-04:00, stenn@deacon.udel.edu +2 -0
+ Fixes from Dave Mills
+
+ ntpd/ntp_control.c@1.79.1.6, 2005-10-24 04:35:10-04:00, stenn@deacon.udel.edu +2 -2
+ More 0-11 -> 1-12 month stuff
+
+ ntpd/ntp_crypto.c@1.98.1.8, 2005-10-24 04:34:41-04:00, stenn@deacon.udel.edu +0 -5
+ Lose the coredumping cinfo-> tests
+
+ChangeSet@1.1251.67.9, 2005-10-23 16:43:06-04:00, stenn@deacon.udel.edu +3 -0
+ Crypto cleanup from Dave Mills
+
+ include/ntp.h@1.120.1.5, 2005-10-23 16:41:51-04:00, stenn@deacon.udel.edu +1 -1
+ member reorder from Dave Mills
+
+ ntpd/ntp_crypto.c@1.98.1.7, 2005-10-23 16:42:49-04:00, stenn@deacon.udel.edu +143 -157
+ Crypto cleanup from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.13, 2005-10-23 16:42:49-04:00, stenn@deacon.udel.edu +0 -1
+ Crypto cleanup from Dave Mills
+
+ChangeSet@1.1251.64.3, 2005-10-22 23:43:31-04:00, mayer@pogo.udel.edu +1 -0
+ Bug #411 fix from Marc
+
+ ntpd/ntp_intres.c@1.40.1.2, 2005-10-22 23:43:02-04:00, mayer@pogo.udel.edu +1 -1
+ Bug #411 fix from Marc
+
+ChangeSet@1.1251.67.8, 2005-10-22 00:26:41-04:00, stenn@deacon.udel.edu +3 -0
+ Crypto cleanup/changes from Dave Mills
+
+ include/ntp_crypto.h@1.38, 2005-10-22 00:22:40-04:00, stenn@deacon.udel.edu +0 -1
+ Lose CRYPTO_FLAG_INVLD. From Dave Mills
+
+ ntpd/ntp_crypto.c@1.98.1.6, 2005-10-22 00:26:03-04:00, stenn@deacon.udel.edu +72 -58
+ Crypto cleanup/changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.12, 2005-10-22 00:26:03-04:00, stenn@deacon.udel.edu +15 -7
+ Crypto cleanup/changes from Dave Mills
+
+ChangeSet@1.1251.67.7, 2005-10-21 23:39:36-04:00, stenn@deacon.udel.edu +1 -0
+ [Bug 515] ntp_set_tod() displays stale errno
+
+ libntp/machines.c@1.18, 2005-10-21 23:39:28-04:00, stenn@deacon.udel.edu +2 -0
+ [Bug 515] ntp_set_tod() displays stale errno
+
+ChangeSet@1.1251.67.6, 2005-10-21 23:23:52-04:00, stenn@deacon.udel.edu +1 -0
+ [Bug 512] Reintroduce -m to ntptrace. From Frederic Planchon
+
+ scripts/ntptrace.in@1.5, 2005-10-21 23:23:45-04:00, stenn@deacon.udel.edu +8 -2
+ [Bug 512] Reintroduce -m to ntptrace. From Frederic Planchon
+
+ChangeSet@1.1251.67.5, 2005-10-20 20:22:12-04:00, stenn@deacon.udel.edu +7 -0
+ Fixes from Dave Mills
+
+ include/ntp.h@1.120.1.4, 2005-10-20 20:14:25-04:00, stenn@deacon.udel.edu +4 -2
+ cleanup from Dave Mills
+
+ include/ntp_crypto.h@1.37, 2005-10-20 20:14:26-04:00, stenn@deacon.udel.edu +3 -1
+ cleanup from Dave Mills
+
+ include/ntpd.h@1.82.4.4, 2005-10-20 20:14:26-04:00, stenn@deacon.udel.edu +1 -1
+ cleanup from Dave Mills
+
+ libntp/statestr.c@1.10, 2005-10-20 20:15:27-04:00, stenn@deacon.udel.edu +2 -1
+ Dave Mills added "server certificate expired".
+
+ ntpd/ntp_crypto.c@1.98.1.5, 2005-10-20 20:21:17-04:00, stenn@deacon.udel.edu +71 -7
+ host and server certificate changes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.115, 2005-10-20 20:19:28-04:00, stenn@deacon.udel.edu +13 -5
+ leap second fix plus 0-11 -> 1-12 month fix from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.11, 2005-10-20 20:20:59-04:00, stenn@deacon.udel.edu +3 -3
+ test reorder from Dave Mills
+
+ChangeSet@1.1251.64.2, 2005-10-16 18:43:40-04:00, mayer@pogo.udel.edu +1 -0
+ Fixes from bug #411 Marc de la Gueronniere
+
+ ntpd/ntp_intres.c@1.40.1.1, 2005-10-16 18:43:09-04:00, mayer@pogo.udel.edu +44 -34
+ Fixes from bug #411 Marc de la Gueronniere
+
+ChangeSet@1.1251.67.4, 2005-10-16 03:18:13-04:00, stenn@deacon.udel.edu +1 -0
+ Fix (unused) reversed tests
+
+ ntpd/ntp_intres.c@1.41, 2005-10-16 03:18:05-04:00, stenn@deacon.udel.edu +2 -2
+ Fix (unused) reversed tests
+
+ChangeSet@1.1251.67.3, 2005-10-16 02:30:43-04:00, stenn@deacon.udel.edu +1 -0
+ fix quoting in ISC_PLATFORM_NEEDIN6ADDRANY test
+
+ configure.ac@1.359.1.23, 2005-10-16 02:30:33-04:00, stenn@deacon.udel.edu +1 -1
+ fix quoting in ISC_PLATFORM_NEEDIN6ADDRANY test
+
+ChangeSet@1.1251.67.2, 2005-10-15 23:35:54-04:00, stenn@deacon.udel.edu +1 -0
+ leap and orphan fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.10, 2005-10-15 23:35:37-04:00, stenn@deacon.udel.edu +86 -36
+ leap and orphan fixes from Dave Mills
+
+ChangeSet@1.1251.67.1, 2005-10-15 20:39:31-04:00, stenn@deacon.udel.edu +4 -0
+ Fixes from Dave Mills
+
+ ntpd/ntp_control.c@1.79.1.5, 2005-10-15 20:34:40-04:00, stenn@deacon.udel.edu +4 -4
+ hostkey->update and ctl_putfs() fixes from Dave Mills
+
+ ntpd/ntp_crypto.c@1.98.1.4, 2005-10-15 20:35:24-04:00, stenn@deacon.udel.edu +2 -3
+ Cleanup
+
+ ntpd/ntp_loopfilter.c@1.114, 2005-10-15 20:37:17-04:00, stenn@deacon.udel.edu +31 -11
+ leap second and pll_control/kern_enable fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.9, 2005-10-15 20:39:03-04:00, stenn@deacon.udel.edu +90 -41
+ Comment, crypto_update(), orphan, and leap second fixes from Dave Mills
+
+ChangeSet@1.1251.59.9, 2005-10-14 16:08:06-04:00, stenn@deacon.udel.edu +3 -0
+ Updates from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.113, 2005-10-14 16:05:18-04:00, stenn@deacon.udel.edu +13 -8
+ S_SPIK and kern_enable fixes from Dave Mills
+
+ ntpd/ntp_refclock.c@1.73, 2005-10-14 16:06:08-04:00, stenn@deacon.udel.edu +2 -2
+ cleanup from Dave Mills
+
+ ntpd/refclock_arbiter.c@1.13, 2005-10-14 16:06:41-04:00, stenn@deacon.udel.edu +4 -5
+ cleanup from Dave Mills
+
+ChangeSet@1.1251.59.8, 2005-10-14 15:52:35-04:00, stenn@deacon.udel.edu +1 -0
+ finish Frank's [] conversion to a block of code
+
+ configure.ac@1.359.1.22, 2005-10-14 15:52:20-04:00, stenn@deacon.udel.edu +1 -1
+ finish Frank's [] conversion to a block of code
+
+ChangeSet@1.1251.61.10, 2005-10-13 00:33:46-04:00, stenn@deacon.udel.edu +5 -0
+ documentation updates from Dave Mills
+
+ html/confopt.html@1.31.1.3, 2005-10-13 00:32:58-04:00, stenn@deacon.udel.edu +25 -35
+ documentation updates from Dave Mills
+
+ html/gadget.html@1.1, 2005-10-12 23:35:51-04:00, stenn@deacon.udel.edu +33 -0
+
+ html/gadget.html@1.0, 2005-10-12 23:35:50-04:00, stenn@deacon.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/gadget.html
+
+ html/manyopt.html@1.13, 2005-10-13 00:32:58-04:00, stenn@deacon.udel.edu +33 -26
+ documentation updates from Dave Mills
+
+ html/release.html@1.31, 2005-10-13 00:32:59-04:00, stenn@deacon.udel.edu +20 -9
+ documentation updates from Dave Mills
+
+ html/scripts/links11.txt@1.2, 2005-10-13 00:33:14-04:00, stenn@deacon.udel.edu +2 -0
+ documentation updates from Dave Mills
+
+ChangeSet@1.1251.61.9, 2005-10-09 23:38:00-04:00, stenn@deacon.udel.edu +2 -0
+ Fixes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.112, 2005-10-09 23:37:32-04:00, stenn@deacon.udel.edu +1 -1
+ calleapwhen() change from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.8, 2005-10-09 23:37:48-04:00, stenn@deacon.udel.edu +11 -3
+ crypto fixes from Dave Mills
+
+ChangeSet@1.1251.59.6, 2005-10-08 10:04:12+00:00, kardel@pogo.udel.edu +1 -0
+ dolfptoa.c:
+ safeguard against sign extensions and other mishaps on 64 bit platforms
+
+ libntp/dolfptoa.c@1.6, 2005-10-08 10:03:31+00:00, kardel@pogo.udel.edu +11 -0
+ safeguard against sign extensions and other mishaps on 64 bit platforms
+
+ChangeSet@1.1251.66.2, 2005-10-08 02:28:24-04:00, stenn@deacon.udel.edu +6 -0
+ documentation fixes from Dave Mills
+
+ html/authopt.html@1.34, 2005-10-08 02:28:12-04:00, stenn@deacon.udel.edu +24 -14
+ documentation fixes from Dave Mills
+
+ html/confopt.html@1.31.1.2, 2005-10-08 02:28:12-04:00, stenn@deacon.udel.edu +2 -2
+ documentation fixes from Dave Mills
+
+ html/keygen.html@1.7, 2005-10-08 02:28:12-04:00, stenn@deacon.udel.edu +1 -1
+ documentation fixes from Dave Mills
+
+ html/manyopt.html@1.12, 2005-10-08 02:28:12-04:00, stenn@deacon.udel.edu +4 -3
+ documentation fixes from Dave Mills
+
+ html/miscopt.html@1.32, 2005-10-08 02:28:12-04:00, stenn@deacon.udel.edu +22 -5
+ documentation fixes from Dave Mills
+
+ html/msyslog.html@1.5, 2005-10-08 02:28:12-04:00, stenn@deacon.udel.edu +49 -54
+ documentation fixes from Dave Mills
+
+ChangeSet@1.1251.59.4, 2005-10-08 06:06:03+00:00, kardel@pogo.udel.edu +4 -0
+ refclock_parse.c:
+ avoid unexpected buffer overflows due to sprintf("%f") on strange floats:
+ replace almost all str* and *printf functions by their buffer bounded
+ counterparts
+ data_mbg.c, mbg_gps166.h:
+ bounded buffer implementation
+ dcfd.c:
+ make dcfd.c compile on NetBSD 3.99.9 again (configure/sigvec compatibility fix)
+
+ include/mbg_gps166.h@1.5.1.1, 2005-10-07 23:02:16+00:00, kardel@pogo.udel.edu +10 -4
+ bounded buffer implementation
+
+ libparse/data_mbg.c@1.5.1.1, 2005-10-07 23:03:25+00:00, kardel@pogo.udel.edu +61 -49
+ bounded buffer implementation
+
+ ntpd/refclock_parse.c@1.35.1.1, 2005-10-07 23:03:44+00:00, kardel@pogo.udel.edu +221 -185
+ avoid unexpected buffer overflows due to sprintf("%f") on strange floats:
+ replace almost all str* and *printf functions be their buffer bounded
+ counterparts
+
+ parseutil/dcfd.c@1.18, 2005-10-07 23:02:47+00:00, kardel@pogo.udel.edu +25 -18
+ make dcfd.c compile on NetBSD 3.99.9 again (configure/sigvec compatibility fix)
+
+ChangeSet@1.1251.66.1, 2005-10-08 00:29:29-04:00, stenn@deacon.udel.edu +1 -0
+ orphan fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.7, 2005-10-08 00:29:21-04:00, stenn@deacon.udel.edu +11 -4
+ orphan fixes from Dave Mills
+
+ChangeSet@1.1251.65.1, 2005-10-05 01:38:06-07:00, murray@glypnod.example.com +5 -0
+ Add support for the HP Z3801 GPS clock. Needs 19200 buad, 7 bits, odd parity.
+
+ BitKeeper/etc/logging_ok@1.54.2.1, 2005-10-05 01:38:06-07:00, murray@glypnod.example.com +1 -0
+ Logging to repologs@ntp.isc.org accepted
+
+ html/drivers/driver26.html@1.10, 2005-10-05 01:37:37-07:00, murray@glypnod.example.com +12 -9
+ Add description of HP Z3801A
+
+ include/ntp_refclock.h@1.20, 2005-10-05 01:37:37-07:00, murray@glypnod.example.com +2 -1
+ Add LDISC_7O1 flag for 7 bit, odd parity
+
+ ntpd/ntp_refclock.c@1.72, 2005-10-05 01:37:37-07:00, murray@glypnod.example.com +4 -0
+ Add support for LDISC_7O1 flag - 7 bit, odd parity.
+
+ ntpd/refclock_hpgps.c@1.7, 2005-10-05 01:37:37-07:00, murray@glypnod.example.com +18 -3
+ Add support for HP Z3810A - 19200, 7bits, odd parity
+
+ChangeSet@1.1251.61.6, 2005-10-05 03:02:11-04:00, stenn@deacon.udel.edu +1 -0
+ orphan fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.6, 2005-10-05 03:01:54-04:00, stenn@deacon.udel.edu +18 -16
+ orphan fixes from Dave Mills
+
+ChangeSet@1.1251.64.1, 2005-10-04 12:22:54-04:00, mayer@pogo.udel.edu +1 -0
+ Fix extra y at beginning of file
+
+ ntpd/ntp_proto.c@1.232.2.1, 2005-10-04 12:22:23-04:00, mayer@pogo.udel.edu +1 -1
+ Fix extra y at beginning of file
+
+ChangeSet@1.1251.61.5, 2005-10-04 02:52:27-04:00, stenn@deacon.udel.edu +5 -0
+ fixes from Dave Mills
+
+ include/ntp.h@1.120.1.3, 2005-10-04 02:50:55-04:00, stenn@deacon.udel.edu +3 -1
+ fixes from Dave Mills
+
+ include/ntpd.h@1.82.4.3, 2005-10-04 02:50:55-04:00, stenn@deacon.udel.edu +0 -1
+ fixes from Dave Mills
+
+ ntpd/ntp_control.c@1.79.1.4, 2005-10-04 02:51:46-04:00, stenn@deacon.udel.edu +1 -1
+ fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.5, 2005-10-04 02:51:47-04:00, stenn@deacon.udel.edu +49 -29
+ fixes from Dave Mills
+
+ ntpd/refclock_local.c@1.14, 2005-10-04 02:51:47-04:00, stenn@deacon.udel.edu +2 -8
+ fixes from Dave Mills
+
+ChangeSet@1.1251.63.1, 2005-10-02 04:12:05-04:00, stenn@deacon.udel.edu +10 -0
+ NEWS update; orphan/revoke/expire stuff from Dave Mills
+
+ NEWS@1.48, 2005-10-02 04:11:28-04:00, stenn@deacon.udel.edu +2 -0
+ updated
+
+ include/ntp.h@1.120.1.2, 2005-10-02 03:57:42-04:00, stenn@deacon.udel.edu +3 -2
+ orphan and revoke stuff from Dave Mills
+
+ include/ntp_config.h@1.37.1.2, 2005-10-02 03:57:42-04:00, stenn@deacon.udel.edu +1 -0
+ orphan and revoke stuff from Dave Mills
+
+ include/ntp_control.h@1.29, 2005-10-02 03:57:42-04:00, stenn@deacon.udel.edu +2 -1
+ orphan and revoke stuff from Dave Mills
+
+ ntpd/ntp_config.c@1.129.4.1, 2005-10-02 04:08:11-04:00, stenn@deacon.udel.edu +5 -0
+ fixes, and orphan and expire stuff from Dave Mills
+
+ ntpd/ntp_control.c@1.79.1.3, 2005-10-02 04:08:11-04:00, stenn@deacon.udel.edu +50 -20
+ fixes, and orphan and expire stuff from Dave Mills
+
+ ntpd/ntp_crypto.c@1.98.1.3, 2005-10-02 04:08:11-04:00, stenn@deacon.udel.edu +114 -94
+ fixes, and orphan and expire stuff from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.111, 2005-10-02 04:08:12-04:00, stenn@deacon.udel.edu +1 -1
+ fixes, and orphan and expire stuff from Dave Mills
+
+ ntpd/ntp_peer.c@1.84.1.1, 2005-10-02 04:08:12-04:00, stenn@deacon.udel.edu +0 -1
+ fixes, and orphan and expire stuff from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.4, 2005-10-02 04:08:12-04:00, stenn@deacon.udel.edu +200 -124
+ fixes, and orphan and expire stuff from Dave Mills
+
+ChangeSet@1.1251.61.3, 2005-10-01 01:02:12-04:00, mayer@pogo.udel.edu +5 -0
+ Fixes for handling IPv6 issues and getaddrinfo()
+
+ include/isc/net.h@1.7, 2005-10-01 01:00:52-04:00, mayer@pogo.udel.edu +2 -2
+ Fixes for handling IPv6 issues and getaddrinfo)_
+
+ libisc/net.c@1.6, 2005-10-01 01:00:52-04:00, mayer@pogo.udel.edu +1 -0
+ Fixes for handling IPv6 issues and getaddrinfo)_
+
+ libntp/ntp_rfc2553.c@1.26, 2005-10-01 01:00:52-04:00, mayer@pogo.udel.edu +124 -21
+ Fixes for handling IPv6 issues and getaddrinfo)_
+
+ ports/winnt/include/isc/net.h@1.6, 2005-10-01 01:00:52-04:00, mayer@pogo.udel.edu +1 -1
+ Fixes for handling IPv6 issues and getaddrinfo)_
+
+ ports/winnt/libisc/net.c@1.7, 2005-10-01 01:00:52-04:00, mayer@pogo.udel.edu +1 -1
+ Fixes for handling IPv6 issues and getaddrinfo)_
+
+ChangeSet@1.1251.61.2, 2005-09-26 02:19:59-04:00, stenn@deacon.udel.edu +2 -0
+ sntp is now built by default.
+
+ configure.ac@1.359.4.1, 2005-09-26 02:19:47-04:00, stenn@deacon.udel.edu +2 -2
+ sntp is now built by default.
+
+ flock-build@1.33, 2005-09-26 02:19:47-04:00, stenn@deacon.udel.edu +6 -7
+ sntp is now built by default.
+
+ChangeSet@1.1251.60.4, 2005-09-25 12:21:08+00:00, kardel@pogo.udel.edu +3 -0
+ ntpdc_ops.c:
+ output broadcast address information when broadcast flag is set
+ ntp_peer.c:
+ re-bind broad and multi cast on re-fresh
+ ntp_io.c:
+ re-bind interfaces on re-scans
+
+ ntpd/ntp_io.c@1.211, 2005-09-25 12:10:52+00:00, kardel@pogo.udel.edu +90 -43
+ re-bind interfaces on re-scans
+
+ ntpd/ntp_peer.c@1.91, 2005-09-25 12:11:28+00:00, kardel@pogo.udel.edu +18 -1
+ re-bind broad and multi cast on re-fresh
+
+ ntpdc/ntpdc_ops.c@1.45, 2005-09-25 12:12:38+00:00, kardel@pogo.udel.edu +10 -9
+ output broadcast address information when broadcast flag is set
+
+ChangeSet@1.1251.60.3, 2005-09-25 12:10:35+00:00, kardel@pogo.udel.edu +4 -0
+ refclock_parse.c:
+ avoid unexpected buffer overflows due to sprintf("%f") on strange floats:
+ replace almost all str* and *printf functions be their buffer bounded
+ counterparts
+ limit re-set rate of trimble clocks
+ data_mbg.c:
+ support fully bounded buffers
+ clk_meinberg.c:
+ cleanup buffer bounds
+ mbg_gps166.h
+ support fully bounded buffers
+
+ include/mbg_gps166.h@1.6, 2005-09-25 12:06:41+00:00, kardel@pogo.udel.edu +7 -4
+
+ libparse/clk_meinberg.c@1.9, 2005-09-25 12:07:49+00:00, kardel@pogo.udel.edu +7 -4
+ cleanup buffer bounds
+
+ libparse/data_mbg.c@1.6, 2005-09-25 12:08:11+00:00, kardel@pogo.udel.edu +58 -49
+ support fully bounded buffers
+
+ ntpd/refclock_parse.c@1.36, 2005-09-25 12:08:50+00:00, kardel@pogo.udel.edu +204 -185
+ avoid unexpected buffer overflows due to sprintf("%f") on strange floats:
+ replace almost all str* and *printf functions be their buffer bounded
+ counterparts
+ limit re-set rate of trimble clocks
+
+ChangeSet@1.1251.61.1, 2005-09-25 04:17:34-04:00, stenn@deacon.udel.edu +1 -0
+ Add missing ISC_PLATFORM_HAVESCOPEID checks.
+
+ ntpd/ntp_io.c@1.187.1.4, 2005-09-25 04:17:25-04:00, stenn@deacon.udel.edu +12 -1
+ Add missing ISC_PLATFORM_HAVESCOPEID checks.
+
+ChangeSet@1.1251.58.1, 2005-09-25 05:54:32+00:00, stenn@ntp1.isc.org +2 -0
+ [Bug 467] Reorder #include order to avoid linux collision
+
+ BitKeeper/etc/logging_ok@1.54.1.1, 2005-09-25 05:54:32+00:00, stenn@ntp1.isc.org +1 -0
+ Logging to repologs@ntp.isc.org accepted
+
+ ntpd/ntp_config.c@1.129.3.4, 2005-09-25 05:54:11+00:00, stenn@ntp1.isc.org +8 -2
+ [Bug 467] Reorder #include order to avoid linux collision
+
+ChangeSet@1.1251.1.153, 2005-09-24 23:18:13-04:00, stenn@deacon.udel.edu +6 -0
+ [Bug 498] Patches from Miroslaw Pabich
+
+ include/adjtime.h@1.4, 2005-09-24 23:17:22-04:00, stenn@deacon.udel.edu +0 -6
+ [Bug 498] Patches from Miroslaw Pabich
+
+ libntp/iosignal.c@1.13, 2005-09-24 23:17:32-04:00, stenn@deacon.udel.edu +6 -6
+ [Bug 498] Patches from Miroslaw Pabich
+
+ ntpd/refclock_hopfser.c@1.9, 2005-09-24 23:17:43-04:00, stenn@deacon.udel.edu +5 -3
+ [Bug 498] Patches from Miroslaw Pabich
+
+ ntpd/refclock_neoclock4x.c@1.13, 2005-09-24 23:17:43-04:00, stenn@deacon.udel.edu +5 -3
+ [Bug 498] Patches from Miroslaw Pabich
+
+ ntpd/refclock_palisade.h@1.8, 2005-09-24 23:17:43-04:00, stenn@deacon.udel.edu +2 -0
+ [Bug 498] Patches from Miroslaw Pabich
+
+ ntpdate/ntpdate.c@1.52, 2005-09-24 23:17:53-04:00, stenn@deacon.udel.edu +0 -4
+ [Bug 498] Patches from Miroslaw Pabich
+
+ChangeSet@1.1251.53.6, 2005-09-24 17:39:29-04:00, mayer@pogo.udel.edu +1 -0
+ Revamped the code in getaddrinfo
+
+ libntp/ntp_rfc2553.c@1.25, 2005-09-24 17:39:04-04:00, mayer@pogo.udel.edu +31 -37
+ Revamped the code in getaddrinfo
+
+ChangeSet@1.1251.56.1, 2005-09-23 19:27:51-04:00, mayer@pogo.udel.edu +1 -0
+ Refix for memory leak. Some checks were incorrect
+
+ libntp/ntp_rfc2553.c@1.24, 2005-09-23 19:26:56-04:00, mayer@pogo.udel.edu +19 -15
+ Refix for memory leak. Some checks were incorrect
+
+ChangeSet@1.1251.53.4, 2005-09-22 22:07:15-04:00, stenn@deacon.udel.edu +1 -0
+ [Bug 496]: Updated adjtime for QNX from Miroslaw Pabich
+
+ libntp/adjtime.c@1.7, 2005-09-22 22:07:07-04:00, stenn@deacon.udel.edu +80 -17
+ [Bug 496]: Updated adjtime for QNX from Miroslaw Pabich
+
+ChangeSet@1.1251.55.1, 2005-09-21 23:23:47-04:00, gunturu@pogo.udel.edu +2 -0
+ timing.c:
+ unable settimeofday and adjtime as temporary fix until we port utmp.
+
+ BitKeeper/etc/logging_ok@1.55, 2005-09-21 23:23:47-04:00, gunturu@pogo.udel.edu +1 -0
+ Logging to repologs@ntp.isc.org accepted
+
+ sntp/timing.c@1.3, 2005-09-21 23:21:58-04:00, gunturu@pogo.udel.edu +4 -4
+ unable settimeofday and adjtime as temporary fix until we port utmp.
+
+ChangeSet@1.1305, 2005-09-21 00:31:27-04:00, stenn@pogo.udel.edu +1 -0
+ autoopts cleanup
+
+ ntpd/ntpd.c@1.70, 2005-09-21 00:31:17-04:00, stenn@pogo.udel.edu +2 -0
+ autoopts cleanup
+
+ChangeSet@1.1304, 2005-09-21 00:30:39-04:00, stenn@pogo.udel.edu +1 -0
+ libopts update
+
+ sntp/libopts/compat/compat.h@1.5, 2005-09-21 00:30:27-04:00, stenn@pogo.udel.edu +5 -4
+ libopts update
+
+ChangeSet@1.1303, 2005-09-21 00:28:47-04:00, stenn@pogo.udel.edu +10 -0
+ libopts upgrade
+
+ sntp/libopts/autoopts.c@1.3, 2005-09-21 00:26:36-04:00, stenn@pogo.udel.edu +9 -1
+ libopts upgrade
+
+ sntp/libopts/autoopts.h@1.4, 2005-09-21 00:26:36-04:00, stenn@pogo.udel.edu +1 -8
+ libopts upgrade
+
+ sntp/libopts/compat/compat.h@1.4, 2005-09-17 03:23:25-04:00, stenn@pogo.udel.edu +1 -1
+ libopts upgrade
+
+ sntp/libopts/genshell.c@1.4, 2005-09-17 03:23:25-04:00, stenn@pogo.udel.edu +1 -1
+ libopts upgrade
+
+ sntp/libopts/genshell.h@1.4, 2005-09-17 03:23:25-04:00, stenn@pogo.udel.edu +2 -2
+ libopts upgrade
+
+ sntp/libopts/libopts.c@1.3, 2005-09-21 00:26:37-04:00, stenn@pogo.udel.edu +0 -1
+ libopts upgrade
+
+ sntp/libopts/libopts.m4@1.4, 2005-09-21 00:26:37-04:00, stenn@pogo.udel.edu +15 -17
+ libopts upgrade
+
+ sntp/libopts/autoopts/options.h@1.3, 2005-09-17 03:23:25-04:00, stenn@pogo.udel.edu +30 -5
+ libopts upgrade
+
+ sntp/libopts/proto.h@1.4, 2005-09-21 00:26:37-04:00, stenn@pogo.udel.edu +1 -1
+ libopts upgrade
+
+ sntp/libopts/autoopts/usage-txt.h@1.4, 2005-09-17 03:23:25-04:00, stenn@pogo.udel.edu +1 -1
+ libopts upgrade
+
+ChangeSet@1.1251.53.3, 2005-09-20 23:35:55-04:00, mayer@pogo.udel.edu +1 -0
+ bug #486 and Fix memory leak and add heiko's change for hints
+
+ libntp/ntp_rfc2553.c@1.23, 2005-09-20 23:35:18-04:00, mayer@pogo.udel.edu +15 -5
+ bug #486 and Fix memory leak and add heiko's change for hints
+
+ChangeSet@1.1251.54.1, 2005-09-19 18:05:35-04:00, mayer@pogo.udel.edu +2 -0
+ Frank Kardel's fixes for the flags and broadcast address
+
+ libisc/ifiter_getifaddrs.c@1.5, 2005-09-19 18:04:58-04:00, mayer@pogo.udel.edu +2 -2
+ Frank Kardel's fixes for the flags and broadcast address
+
+ libisc/ifiter_sysctl.c@1.12, 2005-09-19 18:04:58-04:00, mayer@pogo.udel.edu +1 -1
+ Frank Kardel's fixes for the flags and broadcast address
+
+ChangeSet@1.1251.52.2, 2005-09-17 10:11:26+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ cleanup merge fallout
+
+ ntpd/ntp_io.c@1.209, 2005-09-17 10:10:39+00:00, kardel@pogo.udel.edu +6 -5
+ cleanup merge fallout
+
+ChangeSet@1.1301, 2005-09-17 00:45:06-04:00, stenn@pogo.udel.edu +14 -0
+ libopts upgrade
+
+ sntp/libopts/Makefile.am@1.2, 2005-09-17 00:40:04-04:00, stenn@pogo.udel.edu +1 -1
+ libopts upgrade
+
+ sntp/libopts/autoopts.h@1.3, 2005-09-17 00:40:04-04:00, stenn@pogo.udel.edu +1 -21
+ libopts upgrade
+
+ sntp/libopts/compat/compat.h@1.3, 2005-09-17 00:41:18-04:00, stenn@pogo.udel.edu +5 -4
+ libopts upgrade
+
+ sntp/libopts/genshell.c@1.3, 2005-09-11 23:12:24-04:00, stenn@pogo.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ sntp/libopts/genshell.c@1.2, 2005-09-11 23:09:38-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/genshell.h@1.3, 2005-09-11 23:12:25-04:00, stenn@pogo.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ sntp/libopts/genshell.h@1.2, 2005-09-11 23:09:38-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/libopts.c@1.2, 2005-09-17 00:40:05-04:00, stenn@pogo.udel.edu +1 -0
+ libopts upgrade
+
+ sntp/libopts/libopts.m4@1.3, 2005-09-17 00:40:05-04:00, stenn@pogo.udel.edu +36 -1
+ libopts upgrade
+
+ m4/libopts.m4@1.8, 2005-09-17 00:39:38-04:00, stenn@pogo.udel.edu +36 -1
+ libopts upgrade
+
+ sntp/m4/libopts.m4@1.5, 2005-09-17 00:39:52-04:00, stenn@pogo.udel.edu +36 -1
+ libopts upgrade
+
+ sntp/m4/libopts.m4@1.4, 2005-09-12 17:12:47-04:00, stenn@pogo.udel.edu +0 -0
+ Rename: sntp/libopts.m4 -> sntp/m4/libopts.m4
+
+ sntp/libopts/proto.h@1.3, 2005-09-17 00:40:05-04:00, stenn@pogo.udel.edu +1 -10
+ libopts upgrade
+
+ sntp/libopts/text_mmap.c@1.3, 2005-09-17 00:40:05-04:00, stenn@pogo.udel.edu +74 -33
+ libopts upgrade
+
+ sntp/libopts/autoopts/usage-txt.h@1.3, 2005-09-11 23:12:25-04:00, stenn@pogo.udel.edu +0 -0
+ Change mode to -rw-r--r--
+
+ sntp/libopts/autoopts/usage-txt.h@1.2, 2005-09-11 23:09:56-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/Makefile.am@1.9, 2005-09-17 00:39:46-04:00, stenn@pogo.udel.edu +1 -1
+ libopts upgrade
+
+ sntp/sntp-opts.def@1.2, 2005-09-17 00:39:47-04:00, stenn@pogo.udel.edu +2 -0
+ libopts upgrade
+
+ChangeSet@1.1251.51.6, 2005-09-17 00:34:07-04:00, stenn@deacon.udel.edu +5 -0
+ more leap stuff from Dave Mills
+
+ include/ntpd.h@1.82.4.2, 2005-09-17 00:33:27-04:00, stenn@deacon.udel.edu +1 -0
+ more leap stuff from Dave Mills
+
+ ntpd/ntp_control.c@1.79.1.2, 2005-09-17 00:33:17-04:00, stenn@deacon.udel.edu +1 -1
+ more leap stuff from Dave Mills
+
+ ntpd/ntp_crypto.c@1.98.1.2, 2005-09-17 00:33:17-04:00, stenn@deacon.udel.edu +2 -5
+ more leap stuff from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.110, 2005-09-17 00:33:17-04:00, stenn@deacon.udel.edu +11 -13
+ more leap stuff from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.3, 2005-09-17 00:33:17-04:00, stenn@deacon.udel.edu +4 -2
+ more leap stuff from Dave Mills
+
+ChangeSet@1.1251.51.5, 2005-09-16 22:47:54-04:00, mayer@pogo.udel.edu +1 -0
+ Fix wildcards to return valid socket interface structure addresses - for Heiko's fix bug #450
+
+ ntpd/ntp_io.c@1.187.1.3, 2005-09-16 22:47:16-04:00, mayer@pogo.udel.edu +10 -18
+ Fix wildcards to return valid socket interface structure addresses - for Heiko's fix bug #450
+
+ChangeSet@1.1251.51.4, 2005-09-15 02:37:45-04:00, stenn@whimsy.udel.edu +1 -0
+ strip quotes from filenames in the config file. From Heiko Gerstung
+
+ ntpd/ntp_config.c@1.129.3.3, 2005-09-15 02:37:30-04:00, stenn@whimsy.udel.edu +18 -0
+ strip quotes from filenames in the config file. From Heiko Gerstung
+
+ChangeSet@1.1251.51.3, 2005-09-15 02:26:33-04:00, stenn@whimsy.udel.edu +64 -0
+ Documentation changes from Dave Mills
+
+ html/accopt.html@1.24, 2005-09-15 02:22:25-04:00, stenn@whimsy.udel.edu +66 -61
+ Documentation changes from Dave Mills
+
+ html/assoc.html@1.21, 2005-09-15 02:22:25-04:00, stenn@whimsy.udel.edu +52 -51
+ Documentation changes from Dave Mills
+
+ html/audio.html@1.17, 2005-09-15 02:22:26-04:00, stenn@whimsy.udel.edu +48 -47
+ Documentation changes from Dave Mills
+
+ html/authopt.html@1.33, 2005-09-15 02:22:26-04:00, stenn@whimsy.udel.edu +139 -137
+ Documentation changes from Dave Mills
+
+ html/clockopt.html@1.18, 2005-09-15 02:22:26-04:00, stenn@whimsy.udel.edu +61 -60
+ Documentation changes from Dave Mills
+
+ html/confopt.html@1.31.1.1, 2005-09-15 02:22:27-04:00, stenn@whimsy.udel.edu +18 -15
+ Documentation changes from Dave Mills
+
+ html/copyright.html@1.31, 2005-09-15 02:22:27-04:00, stenn@whimsy.udel.edu +72 -71
+ Documentation changes from Dave Mills
+
+ html/debug.html@1.23, 2005-09-15 02:22:28-04:00, stenn@whimsy.udel.edu +119 -118
+ Documentation changes from Dave Mills
+
+ html/drivers/driver1.html@1.15, 2005-09-15 02:22:47-04:00, stenn@whimsy.udel.edu +59 -58
+ Documentation changes from Dave Mills
+
+ html/drivers/driver18.html@1.15, 2005-09-15 02:22:48-04:00, stenn@whimsy.udel.edu +56 -55
+ Documentation changes from Dave Mills
+
+ html/drivers/driver20.html@1.14, 2005-09-15 02:22:49-04:00, stenn@whimsy.udel.edu +59 -65
+ Documentation changes from Dave Mills
+
+ html/drivers/driver22.html@1.17, 2005-09-15 02:22:49-04:00, stenn@whimsy.udel.edu +47 -46
+ Documentation changes from Dave Mills
+
+ html/drivers/driver27.html@1.14, 2005-09-15 02:22:50-04:00, stenn@whimsy.udel.edu +198 -200
+ Documentation changes from Dave Mills
+
+ html/drivers/driver29.html@1.14, 2005-09-15 02:22:50-04:00, stenn@whimsy.udel.edu +769 -790
+ Documentation changes from Dave Mills
+
+ html/drivers/driver3.html@1.11, 2005-09-15 02:22:50-04:00, stenn@whimsy.udel.edu +47 -47
+ Documentation changes from Dave Mills
+
+ html/drivers/driver30.html@1.19, 2005-09-15 02:22:51-04:00, stenn@whimsy.udel.edu +77 -78
+ Documentation changes from Dave Mills
+
+ html/drivers/driver31.html@1.2, 2005-09-15 02:22:51-04:00, stenn@whimsy.udel.edu +52 -50
+ Documentation changes from Dave Mills
+
+ html/drivers/driver32.html@1.12, 2005-09-15 02:22:51-04:00, stenn@whimsy.udel.edu +23 -23
+ Documentation changes from Dave Mills
+
+ html/drivers/driver33.html@1.12, 2005-09-15 02:22:52-04:00, stenn@whimsy.udel.edu +23 -23
+ Documentation changes from Dave Mills
+
+ html/drivers/driver34.html@1.11, 2005-09-15 02:22:52-04:00, stenn@whimsy.udel.edu +44 -50
+ Documentation changes from Dave Mills
+
+ html/drivers/driver35.html@1.14, 2005-09-15 02:22:52-04:00, stenn@whimsy.udel.edu +41 -40
+ Documentation changes from Dave Mills
+
+ html/drivers/driver36.html@1.26, 2005-09-15 02:22:53-04:00, stenn@whimsy.udel.edu +162 -151
+ Documentation changes from Dave Mills
+
+ html/drivers/driver37.html@1.12, 2005-09-15 02:22:53-04:00, stenn@whimsy.udel.edu +44 -43
+ Documentation changes from Dave Mills
+
+ html/drivers/driver38.html@1.13, 2005-09-15 02:22:53-04:00, stenn@whimsy.udel.edu +124 -131
+ Documentation changes from Dave Mills
+
+ html/drivers/driver39.html@1.13, 2005-09-15 02:22:54-04:00, stenn@whimsy.udel.edu +106 -109
+ Documentation changes from Dave Mills
+
+ html/drivers/driver4.html@1.12, 2005-09-15 02:22:54-04:00, stenn@whimsy.udel.edu +59 -58
+ Documentation changes from Dave Mills
+
+ html/drivers/driver40.html@1.13, 2005-09-15 02:22:54-04:00, stenn@whimsy.udel.edu +129 -138
+ Documentation changes from Dave Mills
+
+ html/drivers/driver42.html@1.12, 2005-09-15 02:22:55-04:00, stenn@whimsy.udel.edu +23 -22
+ Documentation changes from Dave Mills
+
+ html/drivers/driver43.html@1.10, 2005-09-15 02:22:55-04:00, stenn@whimsy.udel.edu +35 -34
+ Documentation changes from Dave Mills
+
+ html/drivers/driver44.html@1.12, 2005-09-15 02:22:55-04:00, stenn@whimsy.udel.edu +81 -82
+ Documentation changes from Dave Mills
+
+ html/drivers/driver6.html@1.20, 2005-09-15 02:22:56-04:00, stenn@whimsy.udel.edu +73 -72
+ Documentation changes from Dave Mills
+
+ html/drivers/driver7.html@1.22, 2005-09-15 02:22:56-04:00, stenn@whimsy.udel.edu +207 -206
+ Documentation changes from Dave Mills
+
+ html/drivers/driver8.html@1.18, 2005-09-15 02:22:57-04:00, stenn@whimsy.udel.edu +230 -419
+ Documentation changes from Dave Mills
+
+ html/drivers/oncore-shmem.html@1.12, 2005-09-15 02:22:57-04:00, stenn@whimsy.udel.edu +58 -55
+ Documentation changes from Dave Mills
+
+ html/drivers/tf582_4.html@1.2, 2005-09-15 02:22:58-04:00, stenn@whimsy.udel.edu +57 -58
+ Documentation changes from Dave Mills
+
+ html/extern.html@1.14, 2005-09-15 02:22:28-04:00, stenn@whimsy.udel.edu +26 -25
+ Documentation changes from Dave Mills
+
+ html/howto.html@1.18, 2005-09-15 02:22:28-04:00, stenn@whimsy.udel.edu +89 -88
+ Documentation changes from Dave Mills
+
+ html/index.html@1.32, 2005-09-15 02:22:29-04:00, stenn@whimsy.udel.edu +1 -1
+ Documentation changes from Dave Mills
+
+ html/kern.html@1.14, 2005-09-15 02:22:29-04:00, stenn@whimsy.udel.edu +27 -26
+ Documentation changes from Dave Mills
+
+ html/keygen.html@1.6, 2005-09-15 02:22:29-04:00, stenn@whimsy.udel.edu +109 -105
+ Documentation changes from Dave Mills
+
+ html/ldisc.html@1.12, 2005-09-15 02:22:30-04:00, stenn@whimsy.udel.edu +35 -34
+ Documentation changes from Dave Mills
+
+ html/manyopt.html@1.11, 2005-09-15 02:22:30-04:00, stenn@whimsy.udel.edu +51 -50
+ Documentation changes from Dave Mills
+
+ html/measure.html@1.11, 2005-09-15 02:22:30-04:00, stenn@whimsy.udel.edu +16 -15
+ Documentation changes from Dave Mills
+
+ html/miscopt.html@1.31, 2005-09-15 02:22:31-04:00, stenn@whimsy.udel.edu +87 -83
+ Documentation changes from Dave Mills
+
+ html/monopt.html@1.20, 2005-09-15 02:22:31-04:00, stenn@whimsy.udel.edu +122 -117
+ Documentation changes from Dave Mills
+
+ html/msyslog.html@1.4, 2005-09-15 02:22:31-04:00, stenn@whimsy.udel.edu +120 -118
+ Documentation changes from Dave Mills
+
+ html/mx4200data.html@1.11, 2005-09-15 02:22:32-04:00, stenn@whimsy.udel.edu +1069 -1068
+ Documentation changes from Dave Mills
+
+ html/notes.html@1.17, 2005-09-15 02:22:32-04:00, stenn@whimsy.udel.edu +150 -149
+ Documentation changes from Dave Mills
+
+ html/ntpd.html@1.36.1.1, 2005-09-15 02:22:33-04:00, stenn@whimsy.udel.edu +167 -169
+ Documentation changes from Dave Mills
+
+ html/ntpdate.html@1.17, 2005-09-15 02:22:33-04:00, stenn@whimsy.udel.edu +63 -62
+ Documentation changes from Dave Mills
+
+ html/ntpdc.html@1.20.1.1, 2005-09-15 02:22:33-04:00, stenn@whimsy.udel.edu +153 -152
+ Documentation changes from Dave Mills
+
+ html/ntpdsim.html@1.4, 2005-09-15 02:22:34-04:00, stenn@whimsy.udel.edu +58 -57
+ Documentation changes from Dave Mills
+
+ html/ntpq.html@1.27, 2005-09-15 02:22:34-04:00, stenn@whimsy.udel.edu +1 -1
+ Documentation changes from Dave Mills
+
+ html/ntptime.html@1.15, 2005-09-15 02:22:34-04:00, stenn@whimsy.udel.edu +41 -40
+ Documentation changes from Dave Mills
+
+ html/ntptrace.html@1.13, 2005-09-15 02:22:35-04:00, stenn@whimsy.udel.edu +37 -36
+ Documentation changes from Dave Mills
+
+ html/parsedata.html@1.11, 2005-09-15 02:22:35-04:00, stenn@whimsy.udel.edu +77 -76
+ Documentation changes from Dave Mills
+
+ html/parsenew.html@1.10, 2005-09-15 02:22:35-04:00, stenn@whimsy.udel.edu +50 -47
+ Documentation changes from Dave Mills
+
+ html/pps.html@1.18, 2005-09-15 02:22:36-04:00, stenn@whimsy.udel.edu +34 -33
+ Documentation changes from Dave Mills
+
+ html/prefer.html@1.15, 2005-09-15 02:22:36-04:00, stenn@whimsy.udel.edu +65 -64
+ Documentation changes from Dave Mills
+
+ html/rdebug.html@1.15, 2005-09-15 02:22:36-04:00, stenn@whimsy.udel.edu +26 -25
+ Documentation changes from Dave Mills
+
+ html/refclock.html@1.32, 2005-09-15 02:22:37-04:00, stenn@whimsy.udel.edu +89 -89
+ Documentation changes from Dave Mills
+
+ html/release.html@1.30, 2005-09-15 02:22:37-04:00, stenn@whimsy.udel.edu +52 -50
+ Documentation changes from Dave Mills
+
+ html/sntp.html@1.4, 2005-09-15 02:22:37-04:00, stenn@whimsy.udel.edu +50 -49
+ Documentation changes from Dave Mills
+
+ html/tickadj.html@1.14, 2005-09-15 02:22:38-04:00, stenn@whimsy.udel.edu +36 -35
+ Documentation changes from Dave Mills
+
+ChangeSet@1.1251.51.2, 2005-09-15 01:59:15-04:00, stenn@whimsy.udel.edu +10 -0
+ "ident" changes from Dave Mills
+
+ include/ntp_config.h@1.37.1.1, 2005-09-15 01:57:52-04:00, stenn@whimsy.udel.edu +5 -4
+ "ident" changes from Dave Mills
+
+ include/ntp_control.h@1.28, 2005-09-15 01:57:53-04:00, stenn@whimsy.udel.edu +2 -1
+ "ident" changes from Dave Mills
+
+ include/ntp_crypto.h@1.36, 2005-09-15 01:57:53-04:00, stenn@whimsy.udel.edu +6 -4
+ "ident" changes from Dave Mills
+
+ include/ntpd.h@1.82.4.1, 2005-09-15 01:57:58-04:00, stenn@whimsy.udel.edu +8 -0
+ "ident" changes from Dave Mills
+
+ ntpd/ntp_config.c@1.129.3.2, 2005-09-15 01:58:05-04:00, stenn@whimsy.udel.edu +6 -0
+ "ident" changes from Dave Mills
+
+ ntpd/ntp_control.c@1.79.1.1, 2005-09-15 01:58:05-04:00, stenn@whimsy.udel.edu +21 -4
+ "ident" changes from Dave Mills
+
+ ntpd/ntp_crypto.c@1.98.1.1, 2005-09-15 01:58:06-04:00, stenn@whimsy.udel.edu +57 -63
+ "ident" changes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.109, 2005-09-15 01:58:07-04:00, stenn@whimsy.udel.edu +41 -8
+ "ident" changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.2, 2005-09-15 01:58:08-04:00, stenn@whimsy.udel.edu +4 -8
+ "ident" changes from Dave Mills
+
+ ntpd/refclock_wwvb.c@1.16, 2005-09-15 01:58:20-04:00, stenn@whimsy.udel.edu +1 -1
+ "ident" changes from Dave Mills
+
+ChangeSet@1.1298, 2005-09-11 22:43:01-04:00, stenn@pogo.udel.edu +35 -0
+ libopts updates
+
+ sntp/libopts/MakeDefs.inc@1.2, 2005-09-11 22:41:16-04:00, stenn@pogo.udel.edu +0 -5
+ libopts updates
+
+ sntp/libopts/README@1.2, 2005-09-11 22:41:16-04:00, stenn@pogo.udel.edu +9 -7
+ libopts updates
+
+ sntp/libopts/autoopts.c@1.2, 2005-09-11 22:41:16-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/autoopts.h@1.2, 2005-09-11 22:41:16-04:00, stenn@pogo.udel.edu +3 -5
+ libopts updates
+
+ sntp/libopts/boolean.c@1.2, 2005-09-11 22:41:16-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/compat/compat.h@1.2, 2005-09-11 22:41:19-04:00, stenn@pogo.udel.edu +51 -10
+ libopts updates
+
+ sntp/libopts/cook.c@1.2, 2005-09-11 22:41:16-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/enumeration.c@1.2, 2005-09-11 22:41:16-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/environment.c@1.2, 2005-09-11 22:41:16-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/libopts.m4@1.2, 2005-09-11 22:41:17-04:00, stenn@pogo.udel.edu +83 -56
+ libopts updates
+
+ m4/libopts.m4@1.7, 2005-09-11 22:41:00-04:00, stenn@pogo.udel.edu +79 -55
+ libopts updates
+
+ sntp/libopts.m4@1.3, 2005-09-11 22:41:15-04:00, stenn@pogo.udel.edu +79 -55
+ libopts updates
+
+ sntp/libopts/load.c@1.2, 2005-09-11 22:41:17-04:00, stenn@pogo.udel.edu +14 -10
+ libopts updates
+
+ sntp/libopts/makeshell.c@1.2, 2005-09-11 22:41:17-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/nested.c@1.2, 2005-09-11 22:41:17-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/numeric.c@1.2, 2005-09-11 22:41:17-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/autoopts/options.h@1.2, 2005-09-11 22:41:18-04:00, stenn@pogo.udel.edu +4 -4
+ libopts updates
+
+ sntp/libopts/pgusage.c@1.2, 2005-09-11 22:41:17-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/proto.h@1.2, 2005-09-11 22:41:18-04:00, stenn@pogo.udel.edu +1 -28
+ libopts updates
+
+ sntp/libopts/putshell.c@1.2, 2005-09-11 22:41:18-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/restore.c@1.2, 2005-09-11 22:41:18-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/save.c@1.2, 2005-09-11 22:41:18-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/sort.c@1.2, 2005-09-11 22:41:18-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/stack.c@1.2, 2005-09-11 22:41:18-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/streqvcmp.c@1.2, 2005-09-11 22:41:18-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/text_mmap.c@1.2, 2005-09-11 22:41:18-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/usage.c@1.2, 2005-09-11 22:41:18-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ sntp/libopts/version.c@1.2, 2005-09-11 22:41:18-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ build@1.22, 2005-09-11 22:40:14-04:00, stenn@pogo.udel.edu +6 -0
+ libopts updates
+
+ ntpd/Makefile.am@1.43, 2005-09-11 22:41:01-04:00, stenn@pogo.udel.edu +1 -1
+ libopts updates
+
+ ntpd/ntpd-opts.def@1.2, 2005-09-11 22:41:03-04:00, stenn@pogo.udel.edu +1 -0
+ libopts updates
+
+ ntpd/ntpdsim-opts.def@1.2, 2005-09-11 22:41:03-04:00, stenn@pogo.udel.edu +1 -0
+ libopts updates
+
+ ntpdc/ntpdc-opts.def@1.5, 2005-09-11 22:41:07-04:00, stenn@pogo.udel.edu +1 -0
+ libopts updates
+
+ ntpq/ntpq-opts.def@1.4, 2005-09-11 22:41:08-04:00, stenn@pogo.udel.edu +1 -0
+ libopts updates
+
+ sntp/configure.ac@1.10, 2005-09-11 22:41:15-04:00, stenn@pogo.udel.edu +3 -2
+ libopts updates
+
+ChangeSet@1.1251.50.1, 2005-09-06 22:16:23-04:00, mayer@pogo.udel.edu +1 -0
+ Revamped the input_handler code to separate the reading of packets from the selection process and logic
+
+ ntpd/ntp_io.c@1.187.2.1, 2005-09-06 22:15:55-04:00, mayer@pogo.udel.edu +250 -283
+ Revamped the input_handler code to separate the reading of packets from the selection process and logic
+
+ChangeSet@1.1251.38.40, 2005-09-06 19:34:59+00:00, kardel@pogo.udel.edu +3 -0
+ ntp_io.c:
+ remove address family agnostic port assignment
+ ntp_proto.c:
+ minor debug code cleanup
+ ntp_peer.c:
+ only call peer_crypto_clear() when disconnecting the interface
+
+ ntpd/ntp_io.c@1.207, 2005-09-06 19:33:08+00:00, kardel@pogo.udel.edu +0 -1
+ remove address family agnostic port assignment
+
+ ntpd/ntp_peer.c@1.90, 2005-09-04 10:28:53+00:00, kardel@pogo.udel.edu +15 -6
+ only call peer_crypto_clear() when disconnecting the interface
+
+ ntpd/ntp_proto.c@1.238, 2005-09-04 10:29:51+00:00, kardel@pogo.udel.edu +6 -5
+ minor debug code cleanup
+
+ChangeSet@1.1251.1.142, 2005-09-04 15:32:05-05:00, stenn@poog.il.thewrittenword.com +1 -0
+ scopeid and WANT_IPV6 cleanup
+
+ ntpd/ntp_io.c@1.187.1.1, 2005-09-04 15:31:35-05:00, stenn@poog.il.thewrittenword.com +18 -6
+ scopeid and WANT_IPV6 cleanup
+
+ChangeSet@1.1251.49.1, 2005-09-04 06:44:18+00:00, kardel@pogo.udel.edu +1 -0
+ configure.ac:
+ with NetBSD 3.99.8 the CTTY requirement has been lifted
+
+ configure.ac@1.359.3.1, 2005-09-04 06:42:31+00:00, kardel@pogo.udel.edu +3 -3
+ with NetBSD 3.99.8 the CTTY requirement has been lifted
+
+ChangeSet@1.1251.47.6, 2005-09-01 21:52:27-04:00, stenn@pogo.udel.edu +1 -0
+ net/route.h fixups
+
+ configure.ac@1.359.1.19, 2005-09-01 21:52:04-04:00, stenn@pogo.udel.edu +5 -1
+ net/route.h fixups
+
+ChangeSet@1.1251.47.5, 2005-09-01 05:11:00-04:00, stenn@pogo.udel.edu +1 -0
+ look for net/route.h and struct rt_msghdr
+
+ configure.ac@1.359.1.18, 2005-09-01 05:10:49-04:00, stenn@pogo.udel.edu +16 -0
+ look for net/route.h and struct rt_msghdr
+
+ChangeSet@1.1251.38.37, 2005-09-01 08:01:32+00:00, kardel@pogo.udel.edu +2 -0
+ ntp_proto.c:
+ avoid double free by cleaning up peer_crypto_clear() as
+ the clear_to_zero trick didn't work any more here and
+ also covered up some memory leaks.
+ ntp_crypto.c:
+ mark possible memleak - MUST be verified
+
+ ntpd/ntp_crypto.c@1.100, 2005-09-01 07:59:08+00:00, kardel@pogo.udel.edu +3 -0
+ mark possible memleak - MUST be verified
+
+ ntpd/ntp_proto.c@1.237, 2005-09-01 07:59:43+00:00, kardel@pogo.udel.edu +35 -7
+ avoid double free by cleaning up peer_crypto_clear() as
+ the clear_to_zero trick didn't work any more here and
+ also covered up some memory leaks.
+
+ChangeSet@1.1178.6.1, 2005-08-31 18:35:44-04:00, stenn@pogo.udel.edu +1 -0
+ lose snavely
+
+ flock-build@1.30.1.1, 2005-08-31 18:35:34-04:00, stenn@pogo.udel.edu +2 -2
+ lose snavely
+
+ChangeSet@1.1251.38.36, 2005-08-31 08:05:42+00:00, kardel@pogo.udel.edu +6 -0
+ ntpdc_ops.c, layout.std, ntp_request.c, ntp_io.c, ntp_request.h, ntp.h:
+ output interface life time in log and via ntpdc
+
+ include/ntp.h@1.125, 2005-08-31 08:04:57+00:00, kardel@pogo.udel.edu +1 -0
+ output interface life time in log and via ntpdc
+
+ include/ntp_request.h@1.28, 2005-08-31 08:04:58+00:00, kardel@pogo.udel.edu +1 -0
+ output interface life time in log and via ntpdc
+
+ ntpd/ntp_io.c@1.206, 2005-08-31 08:05:09+00:00, kardel@pogo.udel.edu +7 -2
+ output interface life time in log and via ntpdc
+
+ ntpd/ntp_request.c@1.64, 2005-08-31 08:05:10+00:00, kardel@pogo.udel.edu +1 -0
+ output interface life time in log and via ntpdc
+
+ ntpdc/layout.std@1.6, 2005-08-31 08:05:14+00:00, kardel@pogo.udel.edu +8 -7
+ output interface life time in log and via ntpdc
+
+ ntpdc/ntpdc_ops.c@1.44, 2005-08-31 08:05:15+00:00, kardel@pogo.udel.edu +6 -5
+ output interface life time in log and via ntpdc
+
+ChangeSet@1.1251.38.35, 2005-08-29 20:50:15+00:00, kardel@pogo.udel.edu +2 -0
+ ntp_peer.c:
+ just disconnect from interface when no interface can be found
+ ntp_io.c:
+ rename HAS_BSD_ROUTING_SOCKET to HAS_ROUTING_SOCKET
+
+ ntpd/ntp_io.c@1.205, 2005-08-29 20:48:09+00:00, kardel@pogo.udel.edu +9 -9
+ rename HAS_BSD_ROUTING_SOCKET to HAS_ROUTING_SOCKET
+
+ ntpd/ntp_peer.c@1.89, 2005-08-29 20:49:02+00:00, kardel@pogo.udel.edu +1 -15
+ just disconnect from interface when no interface can be found
+
+ChangeSet@1.1251.38.34, 2005-08-29 11:36:25+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ fix compile conditional for asyncio_readers
+ make RTM_IFINFO also optional
+ make RTM_IFANNOUNCE optional to compile on platforms that that have that message (Solaris)
+
+ ntpd/ntp_io.c@1.204, 2005-08-29 11:24:27+00:00, kardel@pogo.udel.edu +5 -5
+ fix compile conditional for asyncio_readers
+
+ ntpd/ntp_io.c@1.203, 2005-08-29 11:15:04+00:00, kardel@pogo.udel.edu +2 -0
+ make RTM_IFINFO also optional
+
+ ntpd/ntp_io.c@1.202, 2005-08-29 11:05:23+00:00, kardel@pogo.udel.edu +2 -0
+ make RTM_IFANNOUNCE optional to compile on platforms that that have that message (Solaris)
+
+ChangeSet@1.1251.38.33, 2005-08-29 10:23:15+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ cleanup compilation for HAS_BSD_ROUTING_SOCKET in undefined case
+ move on variable into corresponding conditional block
+
+ ntpd/ntp_io.c@1.201, 2005-08-29 10:19:59+00:00, kardel@pogo.udel.edu +18 -9
+ cleanup compilation for HAS_BSD_ROUTING_SOCKET in undefined case
+ move on variable into corresponding conditional block
+
+ChangeSet@1.1251.38.31, 2005-08-28 15:49:21-04:00, mayer@pogo.udel.edu +1 -0
+ Remove O/S Specific macro and add conditions for SUPPORT_ASYNCIO_READER that replaced it
+
+ ntpd/ntp_io.c@1.197.1.1, 2005-08-28 15:48:45-04:00, mayer@pogo.udel.edu +6 -3
+ Remove O/S Specific macro and add conditions for SUPPORT_ASYNCIO_READER that replaced it
+
+ChangeSet@1.1295, 2005-08-28 04:51:03-04:00, stenn@pogo.udel.edu +5 -0
+ libopts cleanup
+
+ m4/libopts.m4@1.6, 2005-08-28 04:49:38-04:00, stenn@pogo.udel.edu +8 -5
+ libopts cleanup
+
+ sntp/libopts.m4@1.2, 2005-08-28 04:49:51-04:00, stenn@pogo.udel.edu +8 -5
+ libopts cleanup
+
+ Makefile.am@1.54, 2005-08-28 04:48:59-04:00, stenn@pogo.udel.edu +0 -2
+ libopts cleanup
+
+ configure.ac@1.374, 2005-08-28 04:49:00-04:00, stenn@pogo.udel.edu +1 -1
+ libopts cleanup
+
+ sntp/Makefile.am@1.8, 2005-08-28 04:49:50-04:00, stenn@pogo.udel.edu +0 -1
+ libopts cleanup
+
+ChangeSet@1.1251.48.3, 2005-08-28 08:37:28+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ more enum cleanup
+
+ ntpd/ntp_io.c@1.199, 2005-08-28 08:36:06+00:00, kardel@pogo.udel.edu +1 -1
+ more enum cleanup
+
+ChangeSet@1.1251.48.2, 2005-08-28 07:37:24+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ add FreeBSD for routing socket notification
+
+ ntpd/ntp_io.c@1.198, 2005-08-28 07:36:29+00:00, kardel@pogo.udel.edu +3 -1
+ add FreeBSD for routing socket notification
+
+ChangeSet@1.1251.48.1, 2005-08-28 06:43:17+00:00, kardel@pogo.udel.edu +1 -0
+ ntpd.h:
+ typoe
+
+ include/ntpd.h@1.82.1.9, 2005-08-27 23:20:18+00:00, kardel@pogo.udel.edu +1 -1
+ typoe
+
+ChangeSet@1.1251.38.30, 2005-08-27 22:03:00-04:00, mayer@pogo.udel.edu +1 -0
+ Fixed mispelled function
+
+ include/ntpd.h@1.82.3.1, 2005-08-27 22:02:43-04:00, mayer@pogo.udel.edu +1 -1
+ Fixed mispelled function
+
+ChangeSet@1.1251.38.29, 2005-08-27 23:08:36+00:00, kardel@pogo.udel.edu +3 -0
+ add async io readers (non-refclock, non-socket input)
+ re-factor (simplify) descriptor handling
+ add routing socket listening for quick interface updates
+
+ include/ntpd.h@1.82.1.8, 2005-08-27 23:02:32+00:00, kardel@pogo.udel.edu +2 -0
+
+ ntpd/ntp_io.c@1.197, 2005-08-27 23:02:42+00:00, kardel@pogo.udel.edu +354 -249
+
+ ntpd/ntp_timer.c@1.30, 2005-08-27 23:02:44+00:00, kardel@pogo.udel.edu +7 -1
+
+ChangeSet@1.1251.47.2, 2005-08-26 17:47:52-04:00, mayer@pogo.udel.edu +1 -0
+ add ntp_random.h to include list
+
+ libntp/systime.c@1.35, 2005-08-26 17:47:29-04:00, mayer@pogo.udel.edu +1 -0
+ add ntp_random.h to include list
+
+ChangeSet@1.1251.47.1, 2005-08-26 17:12:27-04:00, mayer@pogo.udel.edu +2 -0
+ Additional changes to support ntp_random
+
+ include/Makefile.am@1.19.1.1, 2005-08-26 17:12:02-04:00, mayer@pogo.udel.edu +1 -0
+ Additional changes to support ntp_random
+
+ util/ntp-keygen.c@1.33, 2005-08-26 17:12:02-04:00, mayer@pogo.udel.edu +1 -0
+ Additional changes to support ntp_random
+
+ChangeSet@1.1251.38.26, 2005-08-26 09:17:19-04:00, mayer@pogo.udel.edu +1 -0
+ Added ntp_debug.h
+
+ include/Makefile.am@1.20, 2005-08-26 09:17:04-04:00, mayer@pogo.udel.edu +2 -0
+ Added ntp_debug.h
+
+ChangeSet@1.1293, 2005-08-26 04:40:05-04:00, stenn@pogo.udel.edu +9 -0
+ autogen stuff
+
+ m4/libopts.m4@1.5, 2005-08-26 04:38:44-04:00, stenn@pogo.udel.edu +1 -1
+ changes for 1 copy of libopts
+
+ m4/libopts.m4@1.4, 2005-08-26 04:20:13-04:00, stenn@pogo.udel.edu +147 -94
+ new libopts stuff
+
+ sntp/libopts.m4@1.1, 2005-08-26 04:20:29-04:00, stenn@pogo.udel.edu +418 -0
+
+ sntp/libopts.m4@1.0, 2005-08-26 04:20:29-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts.m4
+
+ BitKeeper/etc/ignore@1.44, 2005-08-26 04:39:02-04:00, stenn@pogo.udel.edu +40 -48
+ Update the ignore list
+
+ BitKeeper/etc/ignore@1.43, 2005-08-26 04:26:21-04:00, stenn@pogo.udel.edu +3 -0
+ added ntpd/ntpd.1 ntpd/ntpdsim.1 sntp/sntp.1
+
+ BitKeeper/etc/ignore@1.42, 2005-08-26 04:25:08-04:00, stenn@pogo.udel.edu +1 -0
+ added *-opts.texi
+
+ BitKeeper/etc/ignore@1.41, 2005-08-26 04:25:02-04:00, stenn@pogo.udel.edu +1 -0
+ added *-opts.menu
+
+ BitKeeper/etc/ignore@1.40, 2005-08-26 04:24:24-04:00, stenn@pogo.udel.edu +1 -0
+ added *-opts.h
+
+ BitKeeper/etc/ignore@1.39, 2005-08-26 04:24:21-04:00, stenn@pogo.udel.edu +1 -0
+ added *-opts.c
+
+ Makefile.am@1.53, 2005-08-26 04:20:12-04:00, stenn@pogo.udel.edu +3 -3
+ new libopts stuff
+
+ configure.ac@1.373, 2005-08-26 04:20:13-04:00, stenn@pogo.udel.edu +0 -1
+ new libopts stuff
+
+ ntpd/ntpd-opts.def@1.1, 2005-08-26 04:18:41-04:00, stenn@pogo.udel.edu +42 -0
+
+ ntpd/ntpd-opts.def@1.0, 2005-08-26 04:18:41-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/ntpd/ntpd-opts.def
+
+ ntpd/ntpdbase-opts.def@1.1, 2005-08-26 04:18:41-04:00, stenn@pogo.udel.edu +472 -0
+
+ ntpd/ntpdbase-opts.def@1.0, 2005-08-26 04:18:41-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/ntpd/ntpdbase-opts.def
+
+ ntpd/ntpdsim-opts.def@1.1, 2005-08-26 04:18:41-04:00, stenn@pogo.udel.edu +43 -0
+
+ ntpd/ntpdsim-opts.def@1.0, 2005-08-26 04:18:41-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/ntpd/ntpdsim-opts.def
+
+ sntp/sntp-opts.def@1.1, 2005-08-26 04:18:42-04:00, stenn@pogo.udel.edu +388 -0
+
+ sntp/sntp-opts.def@1.0, 2005-08-26 04:18:42-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/sntp-opts.def
+
+ChangeSet@1.1292, 2005-08-26 04:17:32-04:00, stenn@pogo.udel.edu +36 -0
+ New sntp/libopts/
+
+ sntp/libopts/COPYING.lgpl@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +502 -0
+
+ sntp/libopts/COPYING.lgpl@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/COPYING.lgpl
+
+ sntp/libopts/COPYING.mbsd@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +26 -0
+
+ sntp/libopts/COPYING.mbsd@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/COPYING.mbsd
+
+ sntp/libopts/MakeDefs.inc@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +5 -0
+
+ sntp/libopts/MakeDefs.inc@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/MakeDefs.inc
+
+ sntp/libopts/Makefile.am@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +19 -0
+
+ sntp/libopts/Makefile.am@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/Makefile.am
+
+ sntp/libopts/README@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +89 -0
+
+ sntp/libopts/README@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/README
+
+ sntp/libopts/autoopts.c@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +1033 -0
+
+ sntp/libopts/autoopts.c@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/autoopts.c
+
+ sntp/libopts/autoopts.h@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +350 -0
+
+ sntp/libopts/autoopts.h@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/autoopts.h
+
+ sntp/libopts/boolean.c@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +102 -0
+
+ sntp/libopts/boolean.c@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/boolean.c
+
+ sntp/libopts/compat/compat.h@1.1, 2005-08-26 04:16:36-04:00, stenn@pogo.udel.edu +249 -0
+
+ sntp/libopts/compat/compat.h@1.0, 2005-08-26 04:16:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/compat/compat.h
+
+ sntp/libopts/configfile.c@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +1277 -0
+
+ sntp/libopts/configfile.c@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/configfile.c
+
+ sntp/libopts/cook.c@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +355 -0
+
+ sntp/libopts/cook.c@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/cook.c
+
+ sntp/libopts/enumeration.c@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +449 -0
+
+ sntp/libopts/enumeration.c@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/enumeration.c
+
+ sntp/libopts/environment.c@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +261 -0
+
+ sntp/libopts/environment.c@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/environment.c
+
+ sntp/libopts/genshell.c@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +300 -0
+
+ sntp/libopts/genshell.c@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/genshell.c
+
+ sntp/libopts/genshell.h@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +143 -0
+
+ sntp/libopts/genshell.h@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/genshell.h
+
+ sntp/libopts/libopts.c@1.1, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +29 -0
+
+ sntp/libopts/libopts.c@1.0, 2005-08-26 04:16:19-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/libopts.c
+
+ sntp/libopts/libopts.m4@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +418 -0
+
+ sntp/libopts/libopts.m4@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/libopts.m4
+
+ sntp/libopts/load.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +516 -0
+
+ sntp/libopts/load.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/load.c
+
+ sntp/libopts/makeshell.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +1100 -0
+
+ sntp/libopts/makeshell.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/makeshell.c
+
+ sntp/libopts/nested.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +705 -0
+
+ sntp/libopts/nested.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/nested.c
+
+ sntp/libopts/numeric.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +89 -0
+
+ sntp/libopts/numeric.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/numeric.c
+
+ sntp/libopts/autoopts/options.h@1.1, 2005-08-26 04:16:29-04:00, stenn@pogo.udel.edu +864 -0
+
+ sntp/libopts/autoopts/options.h@1.0, 2005-08-26 04:16:29-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/autoopts/options.h
+
+ sntp/libopts/compat/pathfind.c@1.1, 2005-08-26 04:16:36-04:00, stenn@pogo.udel.edu +330 -0
+
+ sntp/libopts/compat/pathfind.c@1.0, 2005-08-26 04:16:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/compat/pathfind.c
+
+ sntp/libopts/pgusage.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +154 -0
+
+ sntp/libopts/pgusage.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/pgusage.c
+
+ sntp/libopts/proto.h@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +124 -0
+
+ sntp/libopts/proto.h@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/proto.h
+
+ sntp/libopts/putshell.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +333 -0
+
+ sntp/libopts/putshell.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/putshell.c
+
+ sntp/libopts/restore.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +207 -0
+
+ sntp/libopts/restore.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/restore.c
+
+ sntp/libopts/save.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +499 -0
+
+ sntp/libopts/save.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/save.c
+
+ sntp/libopts/sort.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +369 -0
+
+ sntp/libopts/sort.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/sort.c
+
+ sntp/libopts/stack.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +224 -0
+
+ sntp/libopts/stack.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/stack.c
+
+ sntp/libopts/streqvcmp.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +292 -0
+
+ sntp/libopts/streqvcmp.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/streqvcmp.c
+
+ sntp/libopts/text_mmap.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +312 -0
+
+ sntp/libopts/text_mmap.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/text_mmap.c
+
+ sntp/libopts/tokenize.c@1.1, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +322 -0
+
+ sntp/libopts/tokenize.c@1.0, 2005-08-26 04:16:20-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/tokenize.c
+
+ sntp/libopts/autoopts/usage-txt.h@1.1, 2005-08-26 04:16:29-04:00, stenn@pogo.udel.edu +479 -0
+
+ sntp/libopts/autoopts/usage-txt.h@1.0, 2005-08-26 04:16:29-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/autoopts/usage-txt.h
+
+ sntp/libopts/usage.c@1.1, 2005-08-26 04:16:21-04:00, stenn@pogo.udel.edu +651 -0
+
+ sntp/libopts/usage.c@1.0, 2005-08-26 04:16:21-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/usage.c
+
+ sntp/libopts/version.c@1.1, 2005-08-26 04:16:21-04:00, stenn@pogo.udel.edu +177 -0
+
+ sntp/libopts/version.c@1.0, 2005-08-26 04:16:21-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/sntp/libopts/version.c
+
+ChangeSet@1.1291, 2005-08-26 04:14:47-04:00, stenn@pogo.udel.edu +82 -0
+ Remove old libopts/
+
+ BitKeeper/deleted/.del-AUTHORS~919220bd6931acb6@1.2, 2005-08-26 04:10:25-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/AUTHORS
+
+ BitKeeper/deleted/.del-COPYING.lgpl~853519b5bad8e831@1.2, 2005-08-26 04:10:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/COPYING.lgpl
+
+ BitKeeper/deleted/.del-COPYING.mbsd~aff4e32ff033d919@1.2, 2005-08-26 04:10:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/COPYING.mbsd
+
+ BitKeeper/deleted/.del-COPYING~8c2b7b26f1103860@1.2, 2005-08-26 04:10:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/COPYING
+
+ BitKeeper/deleted/.del-ChangeLog~c979333e966b22d9@1.2, 2005-08-26 04:10:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/ChangeLog
+
+ BitKeeper/deleted/.del-INSTALL~ca12b1677cba0915@1.3, 2005-08-26 04:10:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/INSTALL
+
+ BitKeeper/deleted/.del-MakeDefs.inc~c24ab9f3f0dafc84@1.2, 2005-08-26 04:10:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/MakeDefs.inc
+
+ BitKeeper/deleted/.del-Makefile.am~11c11bf4e04c9fef@1.2, 2005-08-26 04:10:31-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/Makefile.am
+
+ BitKeeper/deleted/.del-Makefile.am~b09ab3b23945dc7d@1.2, 2005-08-26 04:10:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/Makefile.am
+
+ BitKeeper/deleted/.del-NEWS~e38f345aacec5424@1.2, 2005-08-26 04:10:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/NEWS
+
+ BitKeeper/deleted/.del-README~3d9dfae6a0b32f8f@1.2, 2005-08-26 04:10:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/README
+
+ BitKeeper/deleted/.del-aclocal.m4~a95cc6b1d68ce121@1.2, 2005-08-26 04:10:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/aclocal.m4
+
+ BitKeeper/deleted/.del-autoopts.c~4dc696de338cb6ff@1.2, 2005-08-26 04:10:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/autoopts.c
+
+ BitKeeper/deleted/.del-autoopts.c~7c82dc5b2088549a@1.2, 2005-08-26 04:10:32-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/autoopts.c
+
+ BitKeeper/deleted/.del-autoopts.h~173454953926d863@1.2, 2005-08-26 04:10:32-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/autoopts.h
+
+ BitKeeper/deleted/.del-autoopts.h~fd482d3a2757e6af@1.2, 2005-08-26 04:10:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/autoopts.h
+
+ BitKeeper/deleted/.del-boolean.c~2652efe8d27b68e9@1.2, 2005-08-26 04:10:32-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/boolean.c
+
+ BitKeeper/deleted/.del-boolean.c~9803ac347fdb027d@1.2, 2005-08-26 04:10:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/boolean.c
+
+ BitKeeper/deleted/.del-bootstrap~9952937cb65f4e1f@1.2, 2005-08-26 04:10:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/bootstrap
+
+ BitKeeper/deleted/.del-compat.h~cd9fa19720e0fe1c@1.2, 2005-08-26 04:10:31-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/compat/compat.h
+
+ BitKeeper/deleted/.del-compile~f47b1af5aede22b6@1.3, 2005-08-26 04:10:35-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/m4/compile
+
+ BitKeeper/deleted/.del-config-h.in~8d2fefd4275dba47@1.2, 2005-08-26 04:10:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/config-h.in
+
+ BitKeeper/deleted/.del-config-h.in~~fc94cec5e99b4813@1.2, 2005-08-26 04:10:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/config-h.in~
+
+ BitKeeper/deleted/.del-config.guess~8473c3316e92525f@1.3, 2005-08-26 04:10:35-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/m4/config.guess
+
+ BitKeeper/deleted/.del-config.sub~bf4f78cdfb8642b@1.3, 2005-08-26 04:10:35-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/m4/config.sub
+
+ BitKeeper/deleted/.del-configfile.c~87486f85c5694535@1.2, 2005-08-26 04:10:32-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/configfile.c
+
+ BitKeeper/deleted/.del-configfile.c~922a8f1381d4425f@1.2, 2005-08-26 04:10:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/configfile.c
+
+ BitKeeper/deleted/.del-configure.ac~1f0f0eec3e2cb683@1.2, 2005-08-26 04:10:28-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/configure.ac
+
+ BitKeeper/deleted/.del-configure~76f3b0b55a913ee5@1.2, 2005-08-26 04:10:28-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/configure
+
+ BitKeeper/deleted/.del-cook.c~288d493179287c2@1.2, 2005-08-26 04:10:28-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/cook.c
+
+ BitKeeper/deleted/.del-cook.c~513ed79970fc81b@1.2, 2005-08-26 04:10:32-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/cook.c
+
+ BitKeeper/deleted/.del-depcomp~40528c8625c2eb1f@1.3, 2005-08-26 04:10:35-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/m4/depcomp
+
+ BitKeeper/deleted/.del-enumeration.c~680ef3a6fda2472@1.2, 2005-08-26 04:10:32-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/enumeration.c
+
+ BitKeeper/deleted/.del-enumeration.c~741b004a8edc0491@1.2, 2005-08-26 04:10:28-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/enumeration.c
+
+ BitKeeper/deleted/.del-environment.c~886b51f1289ec004@1.2, 2005-08-26 04:10:28-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/environment.c
+
+ BitKeeper/deleted/.del-environment.c~cbea5891d018489b@1.2, 2005-08-26 04:10:32-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/environment.c
+
+ BitKeeper/deleted/.del-genshell.c~4665114445e930eb@1.2, 2005-08-26 04:10:32-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/genshell.c
+
+ BitKeeper/deleted/.del-genshell.c~d3404cb6e62977d2@1.2, 2005-08-26 04:10:28-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/genshell.c
+
+ BitKeeper/deleted/.del-genshell.h~4cbba4ca99e1ce0d@1.2, 2005-08-26 04:10:33-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/genshell.h
+
+ BitKeeper/deleted/.del-genshell.h~9fcd6a369b750dc@1.2, 2005-08-26 04:10:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/genshell.h
+
+ BitKeeper/deleted/.del-install-sh~5350b467a9780ac5@1.3, 2005-08-26 04:10:35-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/m4/install-sh
+
+ BitKeeper/deleted/.del-libopts.c~322a932038fac5bb@1.2, 2005-08-26 04:10:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts.c
+
+ BitKeeper/deleted/.del-libopts.c~a3b1fda2ee8709ec@1.2, 2005-08-26 04:10:33-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/libopts.c
+
+ BitKeeper/deleted/.del-libopts.m4~71eb82c61ddaa00e@1.2, 2005-08-26 04:10:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts.m4
+
+ BitKeeper/deleted/.del-libopts.m4~dba275de2f39a7f7@1.2, 2005-08-26 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/m4/libopts.m4
+
+ BitKeeper/deleted/.del-load.c~7f48d00d8b58104a@1.2, 2005-08-26 04:10:33-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/load.c
+
+ BitKeeper/deleted/.del-load.c~b61a8aee9ce882d5@1.2, 2005-08-26 04:10:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/load.c
+
+ BitKeeper/deleted/.del-ltmain.sh~1c7887b5d1c077fc@1.3, 2005-08-26 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/m4/ltmain.sh
+
+ BitKeeper/deleted/.del-makeshell.c~a1d60647811b3095@1.2, 2005-08-26 04:10:33-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/makeshell.c
+
+ BitKeeper/deleted/.del-makeshell.c~f8b9cf5964d39db3@1.2, 2005-08-26 04:10:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/makeshell.c
+
+ BitKeeper/deleted/.del-missing~f915814376b31ab6@1.3, 2005-08-26 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/m4/missing
+
+ BitKeeper/deleted/.del-nested.c~86ef6834b872d57@1.2, 2005-08-26 04:10:33-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/nested.c
+
+ BitKeeper/deleted/.del-nested.c~96ea01864b196d05@1.2, 2005-08-26 04:10:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/nested.c
+
+ BitKeeper/deleted/.del-numeric.c~e2c152233ded2202@1.2, 2005-08-26 04:10:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/numeric.c
+
+ BitKeeper/deleted/.del-numeric.c~f02f2a6d69035d0c@1.2, 2005-08-26 04:10:33-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/numeric.c
+
+ BitKeeper/deleted/.del-options.h~7de16fb1feb01fb9@1.2, 2005-08-26 04:10:31-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/autoopts/options.h
+
+ BitKeeper/deleted/.del-pathfind.c~4df984bf91869e5@1.2, 2005-08-26 04:10:31-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/compat/pathfind.c
+
+ BitKeeper/deleted/.del-pgusage.c~c9ca334462225a7a@1.2, 2005-08-26 04:10:33-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/pgusage.c
+
+ BitKeeper/deleted/.del-pgusage.c~ca33905e5c7aa1df@1.2, 2005-08-26 04:10:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/pgusage.c
+
+ BitKeeper/deleted/.del-proto.h~452f423c89ac200e@1.2, 2005-08-26 04:10:33-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/proto.h
+
+ BitKeeper/deleted/.del-proto.h~e8c7a2af94986c41@1.2, 2005-08-26 04:10:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/proto.h
+
+ BitKeeper/deleted/.del-putshell.c~229e9255825c2699@1.2, 2005-08-26 04:10:34-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/putshell.c
+
+ BitKeeper/deleted/.del-putshell.c~3f90a9637c1cb3f8@1.2, 2005-08-26 04:10:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/putshell.c
+
+ BitKeeper/deleted/.del-restore.c~786e9e008c497959@1.2, 2005-08-26 04:10:34-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/restore.c
+
+ BitKeeper/deleted/.del-restore.c~c5d1d1e9dde10cf6@1.2, 2005-08-26 04:10:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/restore.c
+
+ BitKeeper/deleted/.del-save.c~16cdb7b3a7320c91@1.2, 2005-08-26 04:10:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/save.c
+
+ BitKeeper/deleted/.del-save.c~9ac698c63285dcdf@1.2, 2005-08-26 04:10:34-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/save.c
+
+ BitKeeper/deleted/.del-sort.c~437339de5156edc@1.2, 2005-08-26 04:10:34-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/sort.c
+
+ BitKeeper/deleted/.del-sort.c~b07de2fbf0002b9e@1.2, 2005-08-26 04:10:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/sort.c
+
+ BitKeeper/deleted/.del-stack.c~23d824507da8a741@1.2, 2005-08-26 04:10:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/stack.c
+
+ BitKeeper/deleted/.del-stack.c~c65d211fa8d2c6d9@1.2, 2005-08-26 04:10:34-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/stack.c
+
+ BitKeeper/deleted/.del-streqvcmp.c~2b01ea402455a9d5@1.2, 2005-08-26 04:10:34-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/streqvcmp.c
+
+ BitKeeper/deleted/.del-streqvcmp.c~ecb35a72608d3d8c@1.2, 2005-08-26 04:10:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/streqvcmp.c
+
+ BitKeeper/deleted/.del-text_mmap.c~7e8b2fb878ad6465@1.2, 2005-08-26 04:10:34-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/text_mmap.c
+
+ BitKeeper/deleted/.del-text_mmap.c~8276cd532e35d7d@1.2, 2005-08-26 04:10:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/text_mmap.c
+
+ BitKeeper/deleted/.del-tokenize.c~994b2aafabe0643a@1.2, 2005-08-26 04:10:31-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/tokenize.c
+
+ BitKeeper/deleted/.del-tokenize.c~e1d05f5d9da9f103@1.2, 2005-08-26 04:10:34-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/tokenize.c
+
+ BitKeeper/deleted/.del-usage-txt.h~3f152e2762854446@1.2, 2005-08-26 04:10:31-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/autoopts/usage-txt.h
+
+ BitKeeper/deleted/.del-usage.c~35ccdb8f15358479@1.2, 2005-08-26 04:10:31-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/usage.c
+
+ BitKeeper/deleted/.del-usage.c~7218cbdb39fe114@1.2, 2005-08-26 04:10:35-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/usage.c
+
+ BitKeeper/deleted/.del-version.c~51a770ed71ec2abe@1.2, 2005-08-26 04:10:35-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts/version.c
+
+ BitKeeper/deleted/.del-version.c~f7d51067e17b5364@1.2, 2005-08-26 04:10:31-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/version.c
+
+ChangeSet@1.1251.45.17, 2005-08-25 21:01:42+00:00, kardel@pogo.udel.edu +5 -0
+ ntpdc_ops.c, ntp_request.c, ntp_peer.c, ntpd.h, ntp_request.h:
+ remove reset pollinterval feature
+
+ include/ntp_request.h@1.27, 2005-08-25 20:59:02+00:00, kardel@pogo.udel.edu +0 -1
+ remove reset pollinterval feature
+
+ include/ntpd.h@1.82.2.6, 2005-08-25 20:59:37+00:00, kardel@pogo.udel.edu +0 -1
+ remove reset pollinterval feature
+
+ ntpd/ntp_peer.c@1.82.1.6, 2005-08-25 21:00:06+00:00, kardel@pogo.udel.edu +0 -41
+ remove reset pollinterval feature
+
+ ntpd/ntp_request.c@1.63, 2005-08-25 21:00:30+00:00, kardel@pogo.udel.edu +0 -107
+ remove reset pollinterval feature
+
+ ntpdc/ntpdc_ops.c@1.43, 2005-08-25 21:00:51+00:00, kardel@pogo.udel.edu +0 -60
+ remove reset pollinterval feature
+
+ChangeSet@1.1251.45.16, 2005-08-24 21:42:33+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ fix interface number log output
+
+ ntpd/ntp_io.c@1.196, 2005-08-24 21:35:29+00:00, kardel@pogo.udel.edu +6 -5
+ fix interface number log output
+
+ChangeSet@1.1251.45.15, 2005-08-24 13:30:29+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ keep others out while rebuilding the environment
+
+ ntpd/ntp_io.c@1.195, 2005-08-24 13:29:28+00:00, kardel@pogo.udel.edu +2 -2
+ keep others out while rebuilding the environment
+
+ChangeSet@1.1251.45.14, 2005-08-24 13:09:54+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ paren missing
+
+ ntpd/ntp_io.c@1.194, 2005-08-24 13:09:07+00:00, kardel@pogo.udel.edu +1 -0
+ paren missing
+
+ChangeSet@1.1251.45.13, 2005-08-24 09:28:44+00:00, kardel@pogo.udel.edu +8 -0
+ layout.std:
+ ifnum introduced
+ ntpdc_ops.c:
+ list ifnum and ifindex
+ layout.std:
+ ifnum added
+ ntp_request.c, ntp_peer.c:
+ re-name interface_t to struct interface - _t collides with POSIX system namespaces
+ ntp_io.c:
+ change interface_t to struct interface ad _t typedef pollute POSIX system name space
+ use ifnum for interface numbers (ifindex seems often to be 0 on NetBSD)
+ re-arrange intialization
+ move setting of loopback interface variable out of conversion function to just before inserting the
+ interface structure into the lists
+ make ifindex be the original
+ ntpd.h:
+ change interface_t to struct interface as _t typdef pollute POSIX system name space
+ ntp_request.h:
+ add ifnum as interface instance generation number
+ ntp.h:
+ change interface_t to struct interface as _t typedef pollute POSIX system namespace
+ add ifnum as interface instance generation number
+
+ include/ntp.h@1.118.1.6, 2005-08-24 08:38:28+00:00, kardel@pogo.udel.edu +2 -3
+ change interface_t to struct interface as _t typedef pollute POSIX system namespace
+ add ifnum as interface instance generation number
+
+ include/ntp_request.h@1.26, 2005-08-24 08:39:48+00:00, kardel@pogo.udel.edu +2 -1
+ add ifnum as interface instance generation number
+
+ include/ntpd.h@1.82.2.5, 2005-08-24 08:39:56+00:00, kardel@pogo.udel.edu +7 -7
+ change interface_t to struct interface as _t typdef pollute POSIX system name space
+
+ ntpd/ntp_io.c@1.193, 2005-08-24 08:41:23+00:00, kardel@pogo.udel.edu +172 -179
+ change interface_t to struct interface ad _t typedef pollute POSIX system name space
+ use ifnum for interface numbers (ifindex seems often to be 0 on NetBSD)
+ re-arrange intialization
+ move setting of loopback interface variable out of conversion function to just before inserting the
+ interface structure into the lists
+ make ifindex be the original
+
+ ntpd/ntp_peer.c@1.82.1.5, 2005-08-24 08:43:26+00:00, kardel@pogo.udel.edu +1 -1
+ re-name interface_t to struct interface - _t collides with POSIX system namespaces
+
+ ntpd/ntp_request.c@1.62, 2005-08-24 08:43:36+00:00, kardel@pogo.udel.edu +2 -1
+ re-name interface_t to struct interface - _t collides with POSIX system namespaces
+
+ ntpdc/layout.std@1.5, 2005-08-24 09:14:07+00:00, kardel@pogo.udel.edu +1 -0
+ ifnum introduced
+
+ ntpdc/layout.std@1.4, 2005-08-24 08:44:08+00:00, kardel@pogo.udel.edu +4 -4
+ ifnum added
+
+ ntpdc/ntpdc_ops.c@1.42, 2005-08-24 08:44:19+00:00, kardel@pogo.udel.edu +6 -5
+ list ifnum and ifindex
+
+ChangeSet@1.1251.45.12, 2005-08-24 06:24:42+00:00, kardel@pogo.udel.edu +11 -0
+ ntpdc_ops.c, ntp_request.c:
+ support dynamic modifier
+ support pollreset request
+ ntpdc.c:
+ allow first argument to be optional
+ ntp_peer.c, ntp_config.c, ntp_config.h, ntp.h:
+ support dynamic modifier
+ ntpd.h:
+ support resetting of poll interval on interface changes and manually
+ ntp_request.h:
+ support dynamic modifier
+ add pollreset mode 7 request
+ ntpdc.html, confopt.html:
+ document "dynamic" modifier keyword for peer/server configuration
+
+ html/confopt.html@1.32, 2005-08-23 21:57:40+00:00, kardel@pogo.udel.edu +4 -2
+ document "dynamic" modifier keyword for peer/server configuration
+
+ html/ntpdc.html@1.22, 2005-08-23 21:58:22+00:00, kardel@pogo.udel.edu +4 -4
+ document "dynamic" modifier keyword for peer/server configuration
+
+ include/ntp.h@1.118.1.5, 2005-08-23 21:58:53+00:00, kardel@pogo.udel.edu +1 -0
+ support dynamic modifier
+
+ include/ntp_config.h@1.38, 2005-08-23 21:59:22+00:00, kardel@pogo.udel.edu +1 -0
+ support dynamic modifier
+
+ include/ntp_request.h@1.25, 2005-08-23 21:59:35+00:00, kardel@pogo.udel.edu +2 -0
+ support dynamic modifier
+ add pollreset mode 7 request
+
+ include/ntpd.h@1.82.2.4, 2005-08-23 22:00:13+00:00, kardel@pogo.udel.edu +2 -0
+ support resetting of poll interval on interface changes and manually
+
+ ntpd/ntp_config.c@1.129.2.4, 2005-08-23 22:01:04+00:00, kardel@pogo.udel.edu +6 -0
+ support dynamic modifier
+
+ ntpd/ntp_peer.c@1.82.1.4, 2005-08-23 22:01:20+00:00, kardel@pogo.udel.edu +96 -53
+ support dynamic modifier
+
+ ntpd/ntp_request.c@1.61, 2005-08-23 22:01:31+00:00, kardel@pogo.udel.edu +116 -5
+ support dynamic modifier
+ support pollreset request
+
+ ntpdc/ntpdc.c@1.40.1.3, 2005-08-23 22:02:13+00:00, kardel@pogo.udel.edu +1 -1
+ allow first argument to be optional
+
+ ntpdc/ntpdc_ops.c@1.41, 2005-08-23 22:02:29+00:00, kardel@pogo.udel.edu +62 -1
+ support dynamic modifier
+ support pollreset request
+
+ChangeSet@1.1251.45.11, 2005-08-23 06:45:17+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ cleanup debug output handling
+
+ ntpd/ntp_io.c@1.192, 2005-08-23 06:44:45+00:00, kardel@pogo.udel.edu +10 -5
+ cleanup debug output handling
+
+ChangeSet@1.1251.45.10, 2005-08-23 06:26:45+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ fixed crash in debug error message
+
+ ntpd/ntp_io.c@1.191, 2005-08-23 06:25:35+00:00, kardel@pogo.udel.edu +10 -5
+ fixed crash in debug error message
+
+ChangeSet@1.1251.46.1, 2005-08-22 19:45:14-04:00, stenn@whimsy.udel.edu +4 -0
+ beacon stuff from Dave Mills
+
+ include/ntp.h@1.118.2.1, 2005-08-22 19:44:08-04:00, stenn@whimsy.udel.edu +2 -1
+ beacon stuff from Dave Mills
+
+ include/ntp_config.h@1.37, 2005-08-22 19:44:09-04:00, stenn@whimsy.udel.edu +1 -0
+ beacon stuff from Dave Mills
+
+ ntpd/ntp_config.c@1.129.2.3, 2005-08-22 19:44:35-04:00, stenn@whimsy.udel.edu +9 -0
+ beacon stuff from Dave Mills
+
+ ntpd/ntp_proto.c@1.232.1.1, 2005-08-22 19:44:37-04:00, stenn@whimsy.udel.edu +26 -9
+ beacon stuff from Dave Mills
+
+ChangeSet@1.1251.45.8, 2005-08-22 22:43:21+00:00, kardel@pogo.udel.edu +3 -0
+ ntp_request.c:
+ return clean 0.0.0.0 addresses while a peer has no interface
+ ntp_control.c:
+ return clean 0.0.0.0 addresses while a peer has no interface
+ ntpd.h:
+ cleanup declarations
+
+ include/ntpd.h@1.82.2.3, 2005-08-22 22:41:56+00:00, kardel@pogo.udel.edu +1 -1
+ cleanup declarations
+
+ ntpd/ntp_control.c@1.81, 2005-08-22 22:42:21+00:00, kardel@pogo.udel.edu +3 -0
+ return clean 0.0.0.0 addresses while a peer has no interface
+
+ ntpd/ntp_request.c@1.60, 2005-08-22 22:42:49+00:00, kardel@pogo.udel.edu +2 -2
+ return clean 0.0.0.0 addresses while a peer has no interface
+
+ChangeSet@1.1251.45.7, 2005-08-22 21:57:08+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_proto.c:
+ don't attempt to transmit on peers that currently have not interface
+
+ ntpd/ntp_proto.c@1.235, 2005-08-22 21:56:14+00:00, kardel@pogo.udel.edu +3 -0
+ don't attempt to transmit on peers that currently have not interface
+
+ChangeSet@1.1251.45.6, 2005-08-22 16:19:29+00:00, kardel@pogo.udel.edu +4 -0
+ ntpdc_ops.c:
+ cleanup output format
+ add enable/disable output
+ ntp_proto.c:
+ as we are re-binding all interfaces on interface list changes a refresh on
+ transmit is not needed
+ ntp_peer.c:
+ re-bind all interfaces when the interface list changes
+ unbind interface when refclock configuration fails
+ correct setting of a new interface for a peer
+ ntp_io.c:
+ re-bind all interfaces when the interface list changes
+
+ ntpd/ntp_io.c@1.190, 2005-08-22 16:16:16+00:00, kardel@pogo.udel.edu +12 -6
+ re-bind all interfaces when the interface list changes
+
+ ntpd/ntp_peer.c@1.82.1.3, 2005-08-22 16:16:37+00:00, kardel@pogo.udel.edu +42 -21
+ re-bind all interfaces when the interface list changes
+ unbind interface when refclock configuration fails
+ correct setting of a new interface for a peer
+
+ ntpd/ntp_proto.c@1.234, 2005-08-22 16:17:21+00:00, kardel@pogo.udel.edu +0 -14
+ as we are re-binding all interfaces on interface list changes a refresh on
+ transmit is not needed
+
+ ntpdc/ntpdc_ops.c@1.40, 2005-08-22 16:18:50+00:00, kardel@pogo.udel.edu +4 -3
+ cleanup output format
+ add enable/disable output
+
+ChangeSet@1.1251.45.5, 2005-08-22 12:05:51+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_io.c:
+ fix list initialization for interface->peer
+ correct initizalization of loopback_interface global
+
+ ntpd/ntp_io.c@1.189, 2005-08-22 12:03:15+00:00, kardel@pogo.udel.edu +8 -0
+ fix list initialization for interface->peer
+ correct initizalization of loopback_interface global
+
+ChangeSet@1.1251.45.4, 2005-08-21 19:22:34+00:00, kardel@pogo.udel.edu +19 -0
+ ntpdc_ops.c:
+ add ifstats and ifreload commands
+ layout.std:
+ update with data structure used with ntpdc's ifstats and ifreload commands
+ ntp_debug.h:
+ new file
+ ntpd.h:
+ add support for dynamic interface updates
+ ntp_request.h:
+ define data structure needed for ntpdc's ifstats and ifreload command
+ ntp.h:
+ integrate dynamic interface update support
+ ntp_util.c:
+ prepare for exit logging - not active yet
+ ntp_timer.c:
+ add timeout routine to periodically update ntpd's interface list
+ ntp_restrict.c:
+ support forcefully removing an interface entry (dynamic interface update support)
+ ntp_request.c:
+ add ifstats and ifreload backend implementation
+ ntp_proto.c:
+ cope with peeers that have no interface
+ ntp_peer.c:
+ rework peer management to cope with dynamic interface list updates
+ ntp_monitor.c:
+ remove monitor information when an interface is removed
+ ntp_io.c:
+ rework to support dynamic interface updating
+ array inter_list[] is gone
+ reduce #ifdef DEBUG section with DPRINTF macro
+ ntp_crypto.c, ntp_control.c:
+ cope with peers having no current interface
+ cmd_args.c:
+ add "-U interface_update_interval" option
+ ntpdc.html:
+ document ifstats and ifreload commands
+ ntpd.html:
+ document dynamic interface update interval option (-U <value>)
+
+ html/ntpd.html@1.37, 2005-08-21 18:58:34+00:00, kardel@pogo.udel.edu +3 -1
+ document dynamic interface update interval option (-U <value>)
+
+ html/ntpdc.html@1.21, 2005-08-21 19:00:12+00:00, kardel@pogo.udel.edu +4 -0
+ document ifstats and ifreload commands
+
+ include/ntp.h@1.118.1.3, 2005-08-21 19:08:54+00:00, kardel@pogo.udel.edu +19 -10
+ integrate dynamic interface update support
+
+ include/ntp_debug.h@1.1, 2005-08-21 19:13:08+00:00, kardel@pogo.udel.edu +26 -0
+
+ include/ntp_debug.h@1.0, 2005-08-21 19:13:08+00:00, kardel@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/kardel/ntp-dev/include/ntp_debug.h
+
+ include/ntp_request.h@1.24, 2005-08-21 19:09:23+00:00, kardel@pogo.udel.edu +38 -0
+ define data structure needed for ntpdc's ifstats and ifreload command
+
+ include/ntpd.h@1.82.2.2, 2005-08-21 19:09:58+00:00, kardel@pogo.udel.edu +21 -7
+ add support for dynamic interface updates
+
+ ntpd/cmd_args.c@1.34.1.1, 2005-08-21 19:01:02+00:00, kardel@pogo.udel.edu +21 -2
+ add "-U interface_update_interval" option
+
+ ntpd/ntp_control.c@1.80, 2005-08-21 19:01:42+00:00, kardel@pogo.udel.edu +4 -2
+ cope with peers having no current interface
+
+ ntpd/ntp_crypto.c@1.97.1.1, 2005-08-21 19:02:16+00:00, kardel@pogo.udel.edu +6 -0
+ cope with peers having no current interface
+
+ ntpd/ntp_io.c@1.188, 2005-08-21 19:02:25+00:00, kardel@pogo.udel.edu +885 -557
+ rework to support dynamic interface updating
+ array inter_list[] is gone
+ reduce #ifdef DEBUG section with DPRINTF macro
+
+ ntpd/ntp_monitor.c@1.15.1.1, 2005-08-21 19:03:40+00:00, kardel@pogo.udel.edu +18 -0
+ remove monitor information when an interface is removed
+
+ ntpd/ntp_peer.c@1.82.1.2, 2005-08-21 19:04:10+00:00, kardel@pogo.udel.edu +159 -40
+ rework peer management to cope with dynamic interface list updates
+
+ ntpd/ntp_proto.c@1.233, 2005-08-21 19:05:07+00:00, kardel@pogo.udel.edu +117 -92
+ cope with peeers that have no interface
+
+ ntpd/ntp_request.c@1.59, 2005-08-21 19:06:16+00:00, kardel@pogo.udel.edu +145 -32
+ add ifstats and ifreload backend implementation
+
+ ntpd/ntp_restrict.c@1.18, 2005-08-21 19:06:45+00:00, kardel@pogo.udel.edu +4 -2
+ support forcefully removing an interface entry (dynamic interface update support)
+
+ ntpd/ntp_timer.c@1.29, 2005-08-21 19:07:17+00:00, kardel@pogo.udel.edu +16 -0
+ add timeout routine to periodically update ntpd's interface list
+
+ ntpd/ntp_util.c@1.37, 2005-08-21 19:08:06+00:00, kardel@pogo.udel.edu +15 -3
+ prepare for exit logging - not active yet
+
+ ntpdc/layout.std@1.3, 2005-08-21 19:13:42+00:00, kardel@pogo.udel.edu +19 -0
+ update with data structure used with ntpdc's ifstats and ifreload commands
+
+ ntpdc/ntpdc_ops.c@1.39, 2005-08-21 19:14:33+00:00, kardel@pogo.udel.edu +125 -0
+ add ifstats and ifreload commands
+
+ChangeSet@1.1251.45.3, 2005-08-16 20:49:01-04:00, stenn@whimsy.udel.edu +2 -0
+ preempt stuff from Dave Mills
+
+ include/ntp.h@1.118.1.2, 2005-08-16 20:47:23-04:00, stenn@whimsy.udel.edu +1 -2
+ preempt stuff from Dave Mills
+
+ ntpd/ntp_proto.c@1.232, 2005-08-16 20:48:26-04:00, stenn@whimsy.udel.edu +34 -45
+ preempt stuff from Dave Mills
+
+ChangeSet@1.1251.45.2, 2005-08-16 05:34:28-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 478] use "end" keyword to stop config file processing
+
+ include/ntp_config.h@1.36, 2005-08-16 05:34:09-04:00, stenn@whimsy.udel.edu +2 -1
+ [Bug 478] use "end" keyword to stop config file processing
+
+ ntpd/ntp_config.c@1.129.2.2, 2005-08-16 05:34:10-04:00, stenn@whimsy.udel.edu +9 -0
+ [Bug 478] use "end" keyword to stop config file processing
+
+ChangeSet@1.1251.45.1, 2005-08-16 02:49:46-04:00, stenn@whimsy.udel.edu +6 -0
+ preempt stuff from Dave Mills
+
+ include/ntp.h@1.118.1.1, 2005-08-16 02:49:21-04:00, stenn@whimsy.udel.edu +6 -5
+ preempt stuff from Dave Mills
+
+ include/ntp_config.h@1.35, 2005-08-16 02:49:22-04:00, stenn@whimsy.udel.edu +1 -1
+ preempt stuff from Dave Mills
+
+ include/ntpd.h@1.82.2.1, 2005-08-16 02:49:27-04:00, stenn@whimsy.udel.edu +0 -1
+ preempt stuff from Dave Mills
+
+ ntpd/ntp_config.c@1.129.2.1, 2005-08-16 02:48:22-04:00, stenn@whimsy.udel.edu +3 -3
+ preempt stuff from Dave Mills
+
+ ntpd/ntp_peer.c@1.82.1.1, 2005-08-16 02:48:24-04:00, stenn@whimsy.udel.edu +5 -32
+ preempt stuff from Dave Mills
+
+ ntpd/ntp_proto.c@1.231, 2005-08-16 02:48:25-04:00, stenn@whimsy.udel.edu +69 -70
+ preempt stuff from Dave Mills
+
+ChangeSet@1.1251.44.1, 2005-08-15 19:41:00-04:00, mayer@pogo.udel.edu +14 -0
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ include/ntp.h@1.119, 2005-08-15 17:50:32-04:00, mayer@pogo.udel.edu +1 -0
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ include/ntp_random.h@1.1, 2005-08-15 17:59:37-04:00, mayer@pogo.udel.edu +14 -0
+
+ include/ntp_random.h@1.0, 2005-08-15 17:59:37-04:00, mayer@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/mayer/ntp-dev/include/ntp_random.h
+
+ include/ntpd.h@1.82.1.2, 2005-08-15 17:50:34-04:00, mayer@pogo.udel.edu +0 -7
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ libntp/Makefile.am@1.36, 2005-08-15 17:50:35-04:00, mayer@pogo.udel.edu +1 -1
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ libntp/ntp_random.c@1.5, 2005-08-15 17:50:37-04:00, mayer@pogo.udel.edu +5 -2
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ libntp/ntp_random.c@1.4, 2005-08-14 15:51:54-04:00, mayer@pogo.udel.edu +0 -0
+ Rename: libntp/random.c -> libntp/ntp_random.c
+
+ ntpd/ntp_config.c@1.129.1.2, 2005-08-15 17:50:39-04:00, mayer@pogo.udel.edu +1 -0
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ ntpd/ntp_crypto.c@1.98, 2005-08-15 17:50:40-04:00, mayer@pogo.udel.edu +1 -0
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ ntpd/ntp_monitor.c@1.16, 2005-08-15 17:50:40-04:00, mayer@pogo.udel.edu +1 -0
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ ntpd/ntp_peer.c@1.83, 2005-08-15 17:50:41-04:00, mayer@pogo.udel.edu +1 -0
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ ntpd/ntpd.c@1.61.3.1, 2005-08-15 17:50:41-04:00, mayer@pogo.udel.edu +1 -0
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ ports/winnt/include/config.h@1.40, 2005-08-15 17:52:01-04:00, mayer@pogo.udel.edu +1 -0
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ ports/winnt/libntp/libntp.dsp@1.26, 2005-08-15 17:52:52-04:00, mayer@pogo.udel.edu +8 -20
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ ports/winnt/ntp-keygen/ntpkeygen.dsp@1.9, 2005-08-15 17:53:57-04:00, mayer@pogo.udel.edu +4 -0
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ ports/winnt/ntpd/ntpd.dsp@1.26, 2005-08-15 17:53:22-04:00, mayer@pogo.udel.edu +5 -1
+ Fixes to support ntp_random on Windows and miscellaneous fixes for all platforms to get everything in the right place
+
+ChangeSet@1.1178.5.6, 2005-08-15 04:01:26-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 477] Linux needs larger RLIM_MEMLOCK, from Cristoph Gysin
+
+ ntpd/ntpd.c@1.54.1.1, 2005-08-15 04:01:12-04:00, stenn@whimsy.udel.edu +12 -0
+ [Bug 477] Linux needs larger RLIM_MEMLOCK, from Cristoph Gysin
+
+ChangeSet@1.1288, 2005-08-15 01:27:24-04:00, stenn@pogo.udel.edu +0 -0
+ Merge pogo.udel.edu:/pogo/users/stenn/ntp-dev-ag
+ into pogo.udel.edu:/pogo/users/stenn/ntp-dev-ag+
+ [no longer a merge: surgery done]
+
+ChangeSet@1.1287, 2005-08-13 22:08:44-04:00, stenn@pogo.udel.edu +1 -0
+ add to gone file
+
+ BitKeeper/etc/gone@1.7, 2005-08-13 22:07:17-04:00, stenn@pogo.udel.edu +1 -0
+
+ChangeSet@1.1251.38.16, 2005-08-12 04:45:21-04:00, stenn@whimsy.udel.edu +3 -0
+ preempt stuff from Dave Mills
+
+ include/ntpd.h@1.82.1.1, 2005-08-12 04:45:04-04:00, stenn@whimsy.udel.edu +2 -2
+ preempt stuff from Dave Mills
+
+ ntpd/ntp_peer.c@1.82, 2005-08-12 04:44:31-04:00, stenn@whimsy.udel.edu +10 -6
+ preempt stuff from Dave Mills
+
+ ntpd/ntp_proto.c@1.230, 2005-08-12 04:44:31-04:00, stenn@whimsy.udel.edu +18 -17
+ preempt stuff from Dave Mills
+
+ChangeSet@1.1251.38.15, 2005-08-12 04:39:52-04:00, stenn@whimsy.udel.edu +1 -0
+ typo
+
+ ntpdate/Makefile.am@1.13, 2005-08-12 04:39:32-04:00, stenn@whimsy.udel.edu +1 -1
+ typo
+
+ChangeSet@1.1251.38.14, 2005-08-10 10:13:26+00:00, kardel@pogo.udel.edu +1 -0
+ dcfd.c:
+ output revision information
+
+ parseutil/dcfd.c@1.17, 2005-08-10 10:12:31+00:00, kardel@pogo.udel.edu +8 -3
+ output revision information
+
+ChangeSet@1.1251.38.12, 2005-08-10 06:50:23+00:00, kardel@pogo.udel.edu +1 -0
+ dcfd.c:
+ cleanup warnings
+ fix setting of baud rate
+
+ parseutil/dcfd.c@1.16, 2005-08-10 06:49:50+00:00, kardel@pogo.udel.edu +14 -4
+ cleanup warnings
+ fix setting of baud rate
+
+ChangeSet@1.1251.42.9, 2005-08-09 17:02:19-04:00, stenn@whimsy.udel.edu +5 -0
+ cleanup, added "preempt" and "maxclock". From Dave Mills.
+
+ include/ntp.h@1.118, 2005-08-09 16:59:29-04:00, stenn@whimsy.udel.edu +19 -16
+ cleanup, added "preempt". From Dave Mills.
+
+ include/ntp_config.h@1.34, 2005-08-09 16:59:30-04:00, stenn@whimsy.udel.edu +9 -7
+ cleanup, added "preempt". From Dave Mills.
+
+ ntpd/ntp_config.c@1.129.1.1, 2005-08-09 17:01:40-04:00, stenn@whimsy.udel.edu +11 -0
+ cleanup, added "preempt" and "maxclock". From Dave Mills.
+
+ ntpd/ntp_peer.c@1.81, 2005-08-09 17:01:42-04:00, stenn@whimsy.udel.edu +6 -8
+ cleanup, added "preempt" and "maxclock". From Dave Mills.
+
+ ntpd/ntp_proto.c@1.229, 2005-08-09 17:01:42-04:00, stenn@whimsy.udel.edu +102 -130
+ cleanup, added "preempt" and "maxclock". From Dave Mills.
+
+ChangeSet@1.1285, 2005-08-08 02:53:55-04:00, stenn@pogo.udel.edu +18 -0
+ autogen update and more conversion
+
+ libopts/INSTALL@1.2, 2005-08-08 02:53:06-04:00, stenn@pogo.udel.edu +8 -3
+ autogen update and more conversion
+
+ libopts/m4/compile@1.2, 2005-08-08 02:53:11-04:00, stenn@pogo.udel.edu +4 -4
+ autogen update and more conversion
+
+ libopts/m4/config.guess@1.2, 2005-08-08 02:53:11-04:00, stenn@pogo.udel.edu +234 -270
+ autogen update and more conversion
+
+ libopts/m4/config.sub@1.2, 2005-08-08 02:53:11-04:00, stenn@pogo.udel.edu +13 -17
+ autogen update and more conversion
+
+ libopts/m4/depcomp@1.2, 2005-08-08 02:53:11-04:00, stenn@pogo.udel.edu +30 -23
+ autogen update and more conversion
+
+ libopts/m4/install-sh@1.2, 2005-08-08 02:53:11-04:00, stenn@pogo.udel.edu +3 -3
+ autogen update and more conversion
+
+ libopts/m4/ltmain.sh@1.2, 2005-08-08 02:53:12-04:00, stenn@pogo.udel.edu +124 -222
+ autogen update and more conversion
+
+ libopts/m4/missing@1.2, 2005-08-08 02:53:12-04:00, stenn@pogo.udel.edu +10 -6
+ autogen update and more conversion
+
+ include/ntpd.h@1.78.2.1, 2005-08-08 02:52:58-04:00, stenn@pogo.udel.edu +0 -1
+ autogen update and more conversion
+
+ ntpd/Makefile.am@1.42, 2005-08-08 02:53:13-04:00, stenn@pogo.udel.edu +37 -6
+ autogen update and more conversion
+
+ ntpd/cmd_args.c@1.35, 2005-08-08 02:53:13-04:00, stenn@pogo.udel.edu +169 -216
+ autogen update and more conversion
+
+ ntpd/ntp_config.c@1.128.1.1, 2005-08-08 02:53:14-04:00, stenn@pogo.udel.edu +1 -3
+ autogen update and more conversion
+
+ ntpd/ntpd.c@1.66, 2005-08-08 02:53:16-04:00, stenn@pogo.udel.edu +129 -31
+ autogen update and more conversion
+
+ ntpd/ntpsim.c@1.9.1.1, 2005-08-08 02:53:16-04:00, stenn@pogo.udel.edu +9 -0
+ autogen update and more conversion
+
+ ntpdc/ntpdc-opts.def@1.4, 2005-08-08 02:53:20-04:00, stenn@pogo.udel.edu +3 -3
+ autogen update and more conversion
+
+ ntpq/ntpq-opts.def@1.3, 2005-08-08 02:53:20-04:00, stenn@pogo.udel.edu +25 -21
+ autogen update and more conversion
+
+ sntp/Makefile.am@1.7, 2005-08-08 02:53:27-04:00, stenn@pogo.udel.edu +28 -0
+ autogen update and more conversion
+
+ sntp/configure.ac@1.9, 2005-08-08 02:53:27-04:00, stenn@pogo.udel.edu +13 -6
+ autogen update and more conversion
+
+ChangeSet@1.1251.42.8, 2005-08-07 18:12:45-04:00, mayer@pogo.udel.edu +1 -0
+ Fix check for errors when recvfrom() is used
+
+ ntpd/ntp_io.c@1.187, 2005-08-07 18:12:07-04:00, mayer@pogo.udel.edu +4 -5
+ Fix check for errors when recvfrom() is used
+
+ChangeSet@1.1251.38.11, 2005-08-07 15:10:14+00:00, kardel@pogo.udel.edu +4 -0
+ testdcf.c:
+ cleanup warnings
+ document revision on startup
+ fix setting of baud rate
+ refclock_parse.c, parse.c:
+ cleanup size handling wrt/ to buffer boundaries
+ clk_rawdcf.c:
+ clean log output
+ cleanup size handling wrt/ to buffer boundaries
+
+ libparse/clk_rawdcf.c@1.11, 2005-08-07 15:05:50+00:00, kardel@pogo.udel.edu +44 -36
+ clean log output
+ cleanup size handling wrt/ to buffer boundaries
+
+ libparse/parse.c@1.11, 2005-08-07 15:06:09+00:00, kardel@pogo.udel.edu +8 -5
+ cleanup size handling wrt/ to buffer boundaries
+
+ ntpd/refclock_parse.c@1.35, 2005-08-07 15:06:49+00:00, kardel@pogo.udel.edu +7 -4
+ cleanup size handling wrt/ to buffer boundaries
+
+ parseutil/testdcf.c@1.7, 2005-08-07 15:07:56+00:00, kardel@pogo.udel.edu +24 -7
+ cleanup warnings
+ document revision on startup
+ fix setting of baud rate
+
+ChangeSet@1.1251.42.7, 2005-08-05 19:29:48-04:00, mayer@pogo.udel.edu +1 -0
+ Fix for systems that do not support MCAST
+
+ ntpd/ntp_io.c@1.186, 2005-08-05 19:29:28-04:00, mayer@pogo.udel.edu +2 -34
+ Fix for systems that do not support MCAST
+
+ChangeSet@1.1251.42.6, 2005-08-02 23:04:57-04:00, stenn@whimsy.udel.edu +4 -0
+ Lose UDP_WILDCARD_DELIVERY
+
+ TODO@1.8, 2005-08-02 23:04:37-04:00, stenn@whimsy.udel.edu +0 -2
+ Lose UDP_WILDCARD_DELIVERY
+
+ configure.ac@1.359.1.17, 2005-08-02 23:04:38-04:00, stenn@whimsy.udel.edu +0 -60
+ Lose UDP_WILDCARD_DELIVERY
+
+ include/ntp_machine.h@1.20, 2005-08-02 23:04:38-04:00, stenn@whimsy.udel.edu +0 -5
+ Lose UDP_WILDCARD_DELIVERY
+
+ ports/winnt/include/config.h@1.39, 2005-08-02 23:04:39-04:00, stenn@whimsy.udel.edu +0 -1
+ Lose UDP_WILDCARD_DELIVERY
+
+ChangeSet@1.1251.42.5, 2005-08-02 21:48:09-04:00, stenn@whimsy.udel.edu +1 -0
+ Another RANDOM -> ntp_random()
+
+ libntp/systime.c@1.34, 2005-08-02 21:47:51-04:00, stenn@whimsy.udel.edu +2 -1
+ Another RANDOM -> ntp_random()
+
+ChangeSet@1.1251.42.4, 2005-08-02 20:19:27-04:00, stenn@whimsy.udel.edu +17 -0
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ BitKeeper/deleted/.del-ranny.c~3e480692@1.4, 2005-08-02 19:36:07-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: libntp/ranny.c
+
+ configure.ac@1.359.1.16, 2005-08-02 20:18:13-04:00, stenn@whimsy.udel.edu +1 -11
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ include/l_stdlib.h@1.15, 2005-08-02 20:18:14-04:00, stenn@whimsy.udel.edu +0 -13
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ include/ntp.h@1.117, 2005-08-02 20:18:14-04:00, stenn@whimsy.udel.edu +1 -9
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ include/ntp_machine.h@1.19, 2005-08-02 20:18:15-04:00, stenn@whimsy.udel.edu +0 -2
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ include/ntpd.h@1.82, 2005-08-02 20:18:15-04:00, stenn@whimsy.udel.edu +3 -0
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ libntp/Makefile.am@1.35, 2005-08-02 20:18:16-04:00, stenn@whimsy.udel.edu +2 -2
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ libntp/random.c@1.3, 2005-08-02 20:18:16-04:00, stenn@whimsy.udel.edu +9 -9
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ ntpd/ntp_config.c@1.129, 2005-08-02 20:18:17-04:00, stenn@whimsy.udel.edu +1 -1
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ ntpd/ntp_crypto.c@1.97, 2005-08-02 20:18:17-04:00, stenn@whimsy.udel.edu +1 -1
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ ntpd/ntp_monitor.c@1.15, 2005-08-02 20:18:18-04:00, stenn@whimsy.udel.edu +2 -1
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ ntpd/ntp_peer.c@1.80, 2005-08-02 20:18:19-04:00, stenn@whimsy.udel.edu +1 -1
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ ntpd/ntp_proto.c@1.228, 2005-08-02 20:18:19-04:00, stenn@whimsy.udel.edu +1 -1
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ ntpd/ntpd.c@1.61.1.9, 2005-08-02 20:18:20-04:00, stenn@whimsy.udel.edu +1 -1
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ ntpd/ntpsim.c@1.11, 2005-08-02 20:18:21-04:00, stenn@whimsy.udel.edu +1 -1
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ util/Makefile.am@1.26, 2005-08-02 20:18:21-04:00, stenn@whimsy.udel.edu +1 -1
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ util/ntp-keygen.c@1.32, 2005-08-02 20:18:21-04:00, stenn@whimsy.udel.edu +2 -2
+ libntp/random.c now always provides ntp_[s]random(). Use them instead of RANDOM and SRANDOM.
+
+ChangeSet@1.1251.43.3, 2005-08-02 03:45:25-04:00, stenn@whimsy.udel.edu +1 -0
+ Make it easy to distinguish -stable and -dev snapshots
+
+ version.m4@1.3, 2005-08-02 03:45:00-04:00, stenn@whimsy.udel.edu +1 -1
+ Make it easy to distinguish -stable and -dev snapshots
+
+ChangeSet@1.1251.43.2, 2005-08-02 03:25:30-04:00, stenn@whimsy.udel.edu +6 -0
+ Lose libntp/ranny.c
+
+ include/ntp_stdlib.h@1.22, 2005-08-02 03:22:43-04:00, stenn@whimsy.udel.edu +0 -1
+ Lose libntp/ranny.c
+
+ libntp/Makefile.am@1.34, 2005-08-02 03:23:01-04:00, stenn@whimsy.udel.edu +1 -1
+ Lose libntp/ranny.c
+
+ libntp/systime.c@1.33, 2005-08-02 03:23:15-04:00, stenn@whimsy.udel.edu +3 -1
+ Lose libntp/ranny.c
+
+ ntpd/ntp_peer.c@1.76.1.2, 2005-08-02 03:23:26-04:00, stenn@whimsy.udel.edu +1 -3
+ Lose libntp/ranny.c
+
+ ntpd/ntpd.c@1.61.1.8, 2005-08-02 03:23:28-04:00, stenn@whimsy.udel.edu +0 -1
+ Lose libntp/ranny.c
+
+ ntpd/ntpsim.c@1.10, 2005-08-02 03:23:29-04:00, stenn@whimsy.udel.edu +0 -1
+ Lose libntp/ranny.c
+
+ChangeSet@1.1251.43.1, 2005-08-01 19:40:14-04:00, stenn@whimsy.udel.edu +3 -0
+ Dave Mills: change findpeer(), other cleanup
+
+ include/ntpd.h@1.79.1.1, 2005-08-01 19:36:40-04:00, stenn@whimsy.udel.edu +1 -1
+ Dave Mills: change findpeer()
+
+ ntpd/ntp_peer.c@1.76.1.1, 2005-08-01 19:37:38-04:00, stenn@whimsy.udel.edu +0 -4
+ Dave Mills: change findpeer()
+
+ ntpd/ntp_proto.c@1.227, 2005-08-01 19:37:50-04:00, stenn@whimsy.udel.edu +4 -4
+ Dave Mills: change findpeer(), other cleanup
+
+ChangeSet@1.1251.41.2, 2005-08-01 12:36:38-04:00, mayer@pogo.udel.edu +1 -0
+ Missing break in switch selection
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.16, 2005-08-01 12:36:22-04:00, mayer@pogo.udel.edu +1 -48
+ Missing break in switch selection
+
+ChangeSet@1.1251.41.1, 2005-08-01 12:34:24-04:00, mayer@pogo.udel.edu +3 -0
+ Enable IPv6 multicast interface
+
+ include/ntpd.h@1.78.1.1, 2005-08-01 12:34:07-04:00, mayer@pogo.udel.edu +1 -0
+ Enable IPv6 multicast interface
+
+ ntpd/ntp_io.c@1.185, 2005-08-01 12:34:07-04:00, mayer@pogo.udel.edu +61 -2
+ Enable IPv6 multicast interface
+
+ ntpd/ntp_peer.c@1.77, 2005-08-01 12:34:08-04:00, mayer@pogo.udel.edu +14 -3
+ Enable IPv6 multicast interface
+
+ChangeSet@1.1251.40.1, 2005-07-27 21:25:59+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_parse.c:
+ fix a long (> 11 years) misconfiguration wrt/ Meinberg cflag factory
+ default setup. CSTOPB was missing for the 7E2 default data format of
+ the DCF77 clocks.
+
+ ntpd/refclock_parse.c@1.34, 2005-07-27 21:24:36+00:00, kardel@pogo.udel.edu +9 -4
+ fix a long (> 11 years) misconfiguration wrt/ Meinberg cflag factory
+ default setup. CSTOPB was missing for the 7E2 default data format of
+ the DCF77 clocks.
+
+ChangeSet@1.1251.38.7, 2005-07-25 12:46:00-04:00, mayer@pogo.udel.edu +1 -0
+ Always provide the addr_ismulticast function
+
+ ntpd/ntp_io.c@1.184, 2005-07-25 12:45:27-04:00, mayer@pogo.udel.edu +1 -1
+ Always provide the addr_ismulticast function
+
+ChangeSet@1.1251.38.6, 2005-07-24 16:41:43-04:00, mayer@pogo.udel.edu +1 -0
+ Fix isaddr_multicast to not be dependent on whether or not MCAST is supported
+
+ ntpd/ntp_io.c@1.183, 2005-07-24 16:41:20-04:00, mayer@pogo.udel.edu +5 -5
+ Fix isaddr_multicast to not be dependent on whether or not MCAST is supported
+
+ChangeSet@1.1251.38.5, 2005-07-24 15:50:24-04:00, mayer@pogo.udel.edu +7 -0
+ Revamp of I/O Completion ports for Windows
+
+ include/recvbuff.h@1.9, 2005-07-24 15:48:34-04:00, mayer@pogo.udel.edu +0 -2
+ Revamp of I/O Completion ports for Windows
+
+ libntp/recvbuff.c@1.11, 2005-07-24 15:48:34-04:00, mayer@pogo.udel.edu +22 -17
+ Revamp of I/O Completion ports for Windows
+
+ ports/winnt/include/ntp_iocompletionport.h@1.9, 2005-07-24 15:48:34-04:00, mayer@pogo.udel.edu +16 -3
+ Revamp of I/O Completion ports for Windows
+
+ ports/winnt/include/transmitbuff.h@1.4, 2005-07-24 15:48:34-04:00, mayer@pogo.udel.edu +4 -14
+ Revamp of I/O Completion ports for Windows
+
+ ports/winnt/libntp/transmitbuff.c@1.5, 2005-07-24 15:48:34-04:00, mayer@pogo.udel.edu +113 -43
+ Revamp of I/O Completion ports for Windows
+
+ ports/winnt/ntpd/nt_clockstuff.c@1.18, 2005-07-24 15:48:34-04:00, mayer@pogo.udel.edu +1 -1
+ Revamp of I/O Completion ports for Windows
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.15, 2005-07-24 15:48:34-04:00, mayer@pogo.udel.edu +182 -61
+ Revamp of I/O Completion ports for Windows
+
+ChangeSet@1.1251.39.4, 2005-07-22 20:32:47-04:00, stenn@pogo.udel.edu +1 -0
+ Remove binio.c,gpstolfp.c,ieee754io.c,mfp_mul.c from libntp.a
+
+ libntp/Makefile.am@1.33, 2005-07-22 20:32:35-04:00, stenn@pogo.udel.edu +4 -4
+ Remove binio.c,gpstolfp.c,ieee754io.c,mfp_mul.c from libntp.a
+
+ChangeSet@1.1251.39.3, 2005-07-21 19:43:37+00:00, kardel@pogo.udel.edu +30 -0
+ Makefile.am:
+ support is gone - overaged files
+ .del-sun4.sun4m~3e480692:
+ Delete: scripts/support/conf/sun4.sun4m
+ .del-sun4.sun4m.faui45m~3e480692:
+ Delete: scripts/support/conf/sun4.sun4m.faui45m
+ .del-sun4.sun4m.faui42~3e480692:
+ Delete: scripts/support/conf/sun4.sun4m.faui42
+ .del-sun4.sun4c~3e480692:
+ Delete: scripts/support/conf/sun4.sun4c
+ .del-sun4.sun4c.Lucifer~3e480692:
+ Delete: scripts/support/conf/sun4.sun4c.Lucifer
+ .del-sun4.sun4.faui45~3e480692:
+ Delete: scripts/support/conf/sun4.sun4.faui45
+ .del-sun4.sun4.faui10~3e480692:
+ Delete: scripts/support/conf/sun4.sun4.faui10
+ .del-sun4.sun4.faui01~3e480692:
+ Delete: scripts/support/conf/sun4.sun4.faui01
+ .del-sun3.sun3~3e480692:
+ Delete: scripts/support/conf/sun3.sun3
+ .del-hp800.hp800~3e480692:
+ Delete: scripts/support/conf/hp800.hp800
+ .del-hp700.hp700~3e480692:
+ Delete: scripts/support/conf/hp700.hp700
+ .del-hp700.hp700.faui47~3e480692:
+ Delete: scripts/support/conf/hp700.hp700.faui47
+ .del-hp300.hp300~3e480692:
+ Delete: scripts/support/conf/hp300.hp300
+ refclock_parse.c:
+ fix bug 455: tripping over NULL pointer on cleanup
+ fix shadow storage logic for ppsphaseadjust and trustime wrt/ time2
+ fix compiler warnings for some platforms wrt/ printf formatstrings and
+ varying structure element sizes
+ reorder assignment in binding to avoid tripping over NULL pointers
+ change contents of version string to include the RCS/CVS Id
+ mfp_mul.c:
+ correct carry propagation implementation
+ Makefile.am:
+ move binio.c, ieee754io.c into libparse
+ .del-setup~3e480692:
+ Delete: scripts/support/etc/setup
+ .del-rc~3e480692:
+ Delete: scripts/support/etc/rc
+ .del-install~3e480692:
+ Delete: scripts/support/etc/install
+ .del-crontab~3e480692:
+ Delete: scripts/support/etc/crontab
+ .del-cron~3e480692:
+ Delete: scripts/support/etc/cron
+ .del-tickconf~3e480692:
+ Delete: scripts/support/conf/tickconf
+ .del-ntp.conf~3e480692:
+ Delete: scripts/support/conf/ntp.conf
+ .del-mvstats~3e480692:
+ Delete: scripts/support/bin/mvstats
+ .del-monl~3e480692:
+ Delete: scripts/support/bin/monl
+ .del-README~3e480692:
+ Delete: scripts/support/README
+ ieee754io.c:
+ Rename: libntp/ieee754io.c -> libparse/ieee754io.c
+ binio.c:
+ Rename: libntp/binio.c -> libparse/binio.c
+ gpstolfp.c:
+ Rename: libntp/gpstolfp.c -> libparse/gpstolfp.c
+ mfp_mul.c:
+ Rename: libntp/mfp_mul.c -> libparse/mfp_mul.c
+
+ BitKeeper/deleted/.del-README~3e480692@1.3, 2005-07-17 20:54:05+00:00, kardel@pogo.udel.edu +0 -73
+ Delete: scripts/support/README
+
+ BitKeeper/deleted/.del-crontab~3e480692@1.3, 2005-07-17 20:54:50+00:00, kardel@pogo.udel.edu +0 -8
+ Delete: scripts/support/etc/crontab
+
+ BitKeeper/deleted/.del-cron~3e480692@1.3, 2005-07-17 20:54:44+00:00, kardel@pogo.udel.edu +0 -18
+ Delete: scripts/support/etc/cron
+
+ BitKeeper/deleted/.del-hp300.hp300~3e480692@1.3, 2005-07-21 13:55:24+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/hp300.hp300
+
+ BitKeeper/deleted/.del-hp700.hp700.faui47~3e480692@1.3, 2005-07-21 13:55:24+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/hp700.hp700.faui47
+
+ BitKeeper/deleted/.del-hp700.hp700~3e480692@1.3, 2005-07-21 13:55:24+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/hp700.hp700
+
+ BitKeeper/deleted/.del-hp800.hp800~3e480692@1.3, 2005-07-21 13:55:24+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/hp800.hp800
+
+ BitKeeper/deleted/.del-install~3e480692@1.3, 2005-07-17 20:54:58+00:00, kardel@pogo.udel.edu +0 -67
+ Delete: scripts/support/etc/install
+
+ BitKeeper/deleted/.del-monl~3e480692@1.3, 2005-07-17 20:54:13+00:00, kardel@pogo.udel.edu +0 -213
+ Delete: scripts/support/bin/monl
+
+ BitKeeper/deleted/.del-mvstats~3e480692@1.3, 2005-07-17 20:54:20+00:00, kardel@pogo.udel.edu +0 -23
+ Delete: scripts/support/bin/mvstats
+
+ BitKeeper/deleted/.del-ntp.conf~3e480692@1.3, 2005-07-17 20:54:28+00:00, kardel@pogo.udel.edu +0 -3
+ Delete: scripts/support/conf/ntp.conf
+
+ BitKeeper/deleted/.del-rc~3e480692@1.3, 2005-07-17 20:55:05+00:00, kardel@pogo.udel.edu +0 -198
+ Delete: scripts/support/etc/rc
+
+ BitKeeper/deleted/.del-setup~3e480692@1.3, 2005-07-17 20:55:11+00:00, kardel@pogo.udel.edu +0 -72
+ Delete: scripts/support/etc/setup
+
+ BitKeeper/deleted/.del-sun3.sun3~3e480692@1.3, 2005-07-21 13:55:24+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/sun3.sun3
+
+ BitKeeper/deleted/.del-sun4.sun4.faui01~3e480692@1.3, 2005-07-21 13:55:25+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/sun4.sun4.faui01
+
+ BitKeeper/deleted/.del-sun4.sun4.faui10~3e480692@1.3, 2005-07-21 13:55:25+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/sun4.sun4.faui10
+
+ BitKeeper/deleted/.del-sun4.sun4.faui45~3e480692@1.3, 2005-07-21 13:55:25+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/sun4.sun4.faui45
+
+ BitKeeper/deleted/.del-sun4.sun4c.Lucifer~3e480692@1.3, 2005-07-21 13:55:25+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/sun4.sun4c.Lucifer
+
+ BitKeeper/deleted/.del-sun4.sun4c~3e480692@1.3, 2005-07-21 13:55:25+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/sun4.sun4c
+
+ BitKeeper/deleted/.del-sun4.sun4m.faui42~3e480692@1.3, 2005-07-21 13:55:25+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/sun4.sun4m.faui42
+
+ BitKeeper/deleted/.del-sun4.sun4m.faui45m~3e480692@1.3, 2005-07-21 13:55:25+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/sun4.sun4m.faui45m
+
+ BitKeeper/deleted/.del-sun4.sun4m~3e480692@1.3, 2005-07-21 13:55:25+00:00, kardel@pogo.udel.edu +0 -0
+ Delete: scripts/support/conf/sun4.sun4m
+
+ BitKeeper/deleted/.del-tickconf~3e480692@1.3, 2005-07-17 20:54:36+00:00, kardel@pogo.udel.edu +0 -19
+ Delete: scripts/support/conf/tickconf
+
+ libparse/Makefile.am@1.8, 2005-07-21 13:50:56+00:00, kardel@pogo.udel.edu +23 -2
+ move binio.c, ieee754io.c into libparse
+
+ libparse/binio.c@1.6, 2005-07-17 20:51:59+00:00, kardel@pogo.udel.edu +0 -0
+ Rename: libntp/binio.c -> libparse/binio.c
+
+ libparse/gpstolfp.c@1.8, 2005-07-17 20:51:38+00:00, kardel@pogo.udel.edu +0 -0
+ Rename: libntp/gpstolfp.c -> libparse/gpstolfp.c
+
+ libparse/ieee754io.c@1.8, 2005-07-17 20:52:13+00:00, kardel@pogo.udel.edu +0 -0
+ Rename: libntp/ieee754io.c -> libparse/ieee754io.c
+
+ libparse/mfp_mul.c@1.7, 2005-07-21 13:51:45+00:00, kardel@pogo.udel.edu +42 -11
+ correct carry propagation implementation
+
+ libparse/mfp_mul.c@1.6, 2005-07-17 20:51:19+00:00, kardel@pogo.udel.edu +0 -0
+ Rename: libntp/mfp_mul.c -> libparse/mfp_mul.c
+
+ ntpd/refclock_parse.c@1.33, 2005-07-21 13:53:00+00:00, kardel@pogo.udel.edu +41 -33
+ fix bug 455: tripping over NULL pointer on cleanup
+ fix shadow storage logic for ppsphaseadjust and trustime wrt/ time2
+ fix compiler warnings for some platforms wrt/ printf formatstrings and
+ varying structure element sizes
+ reorder assignment in binding to avoid tripping over NULL pointers
+ change contents of version string to include the RCS/CVS Id
+
+ scripts/Makefile.am@1.12, 2005-07-21 19:40:00+00:00, kardel@pogo.udel.edu +1 -1
+ support is gone - overaged files
+
+ChangeSet@1.1178.5.5, 2005-07-19 21:21:45-04:00, stenn@whimsy.udel.edu +3 -0
+ FreeBSD porting issues
+
+ Makefile.am@1.46.1.1, 2005-07-19 21:21:29-04:00, stenn@whimsy.udel.edu +5 -5
+ FreeBSD porting issues
+
+ ntpdc/ntpdc.c@1.33.2.1, 2005-07-19 21:21:29-04:00, stenn@whimsy.udel.edu +5 -1
+ FreeBSD porting issues
+
+ ntpq/ntpq.c@1.48.2.1, 2005-07-19 21:21:29-04:00, stenn@whimsy.udel.edu +5 -1
+ FreeBSD porting issues
+
+ChangeSet@1.1178.5.4, 2005-07-19 21:20:36-04:00, stenn@whimsy.udel.edu +4 -0
+ [Bug 466] Fix compilation under gcc4
+
+ include/ntp_control.h@1.25.1.1, 2005-07-19 21:20:00-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 466] Fix compilation under gcc4
+
+ include/ntp_refclock.h@1.15.1.1, 2005-07-19 21:20:01-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 466] Fix compilation under gcc4
+
+ include/ntp_stdlib.h@1.21, 2005-07-19 21:20:01-04:00, stenn@whimsy.udel.edu +0 -4
+ [Bug 466] Fix compilation under gcc4
+
+ include/ntpd.h@1.66.1.1, 2005-07-19 21:20:02-04:00, stenn@whimsy.udel.edu +0 -2
+ [Bug 466] Fix compilation under gcc4
+
+ChangeSet@1.1178.5.3, 2005-07-19 20:13:43-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 464] building ntp with debugging disabled fails
+
+ ntpd/ntp_proto.c@1.179.1.1, 2005-07-19 20:12:20-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 464] building ntp with debugging disabled fails
+
+ChangeSet@1.1251.38.4, 2005-07-16 17:30:55-04:00, mayer@pogo.udel.edu +1 -0
+ Add debug code to print the broadcast interface used
+
+ ntpd/ntp_peer.c@1.76, 2005-07-16 17:30:35-04:00, mayer@pogo.udel.edu +5 -0
+ Add debug code to print the broadcast interface used
+
+ChangeSet@1.1251.38.3, 2005-07-16 17:29:55-04:00, mayer@pogo.udel.edu +1 -0
+ Fix read loop to skip out if nothing to do and not complain about it
+
+ ntpd/ntp_io.c@1.182, 2005-07-16 17:29:39-04:00, mayer@pogo.udel.edu +143 -146
+ Fix read loop to skip out if nothing to do and not complain about it
+
+ChangeSet@1.1283, 2005-07-04 04:15:16-04:00, stenn@pogo.udel.edu +86 -0
+ New libopts
+
+ libopts/AUTHORS@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +2 -0
+
+ libopts/AUTHORS@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/AUTHORS
+
+ libopts/COPYING.lgpl@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +502 -0
+
+ libopts/COPYING.lgpl@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/COPYING.lgpl
+
+ libopts/COPYING.mbsd@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +26 -0
+
+ libopts/COPYING.mbsd@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/COPYING.mbsd
+
+ libopts/COPYING@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +502 -0
+
+ libopts/COPYING@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/COPYING
+
+ libopts/ChangeLog@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +4 -0
+
+ libopts/ChangeLog@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/ChangeLog
+
+ libopts/INSTALL@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +231 -0
+
+ libopts/INSTALL@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/INSTALL
+
+ libopts/MakeDefs.inc@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +5 -0
+
+ libopts/MakeDefs.inc@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/MakeDefs.inc
+
+ libopts/libopts/Makefile.am@1.1, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +12 -0
+
+ libopts/libopts/Makefile.am@1.0, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/Makefile.am
+
+ libopts/Makefile.am@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +4 -0
+
+ libopts/Makefile.am@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/Makefile.am
+
+ libopts/NEWS@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +6 -0
+
+ libopts/NEWS@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/NEWS
+
+ libopts/README@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +2 -0
+
+ libopts/README@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/README
+
+ libopts/aclocal.m4@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +6827 -0
+
+ libopts/aclocal.m4@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/aclocal.m4
+
+ libopts/autoopts.c@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +1033 -0
+
+ libopts/autoopts.c@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/autoopts.c
+
+ libopts/libopts/autoopts.c@1.1, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +1033 -0
+
+ libopts/libopts/autoopts.c@1.0, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/autoopts.c
+
+ libopts/libopts/autoopts.h@1.1, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +337 -0
+
+ libopts/libopts/autoopts.h@1.0, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/autoopts.h
+
+ libopts/autoopts.h@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +337 -0
+
+ libopts/autoopts.h@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/autoopts.h
+
+ libopts/libopts/boolean.c@1.1, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +102 -0
+
+ libopts/libopts/boolean.c@1.0, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/boolean.c
+
+ libopts/boolean.c@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +102 -0
+
+ libopts/boolean.c@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/boolean.c
+
+ libopts/bootstrap@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +34 -0
+
+ libopts/bootstrap@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/bootstrap
+
+ libopts/compat/compat.h@1.1, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +249 -0
+
+ libopts/compat/compat.h@1.0, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/compat/compat.h
+
+ libopts/m4/compile@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +142 -0
+
+ libopts/m4/compile@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/m4/compile
+
+ libopts/config-h.in@1.1, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +140 -0
+
+ libopts/config-h.in@1.0, 2005-07-04 04:10:36-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/config-h.in
+
+ libopts/config-h.in~@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +236 -0
+
+ libopts/config-h.in~@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/config-h.in~
+
+ libopts/m4/config.guess@1.1, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +1495 -0
+
+ libopts/m4/config.guess@1.0, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/m4/config.guess
+
+ libopts/m4/config.sub@1.1, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +1570 -0
+
+ libopts/m4/config.sub@1.0, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/m4/config.sub
+
+ libopts/libopts/configfile.c@1.1, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +1282 -0
+
+ libopts/libopts/configfile.c@1.0, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/configfile.c
+
+ libopts/configfile.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +1282 -0
+
+ libopts/configfile.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/configfile.c
+
+ libopts/configure.ac@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +54 -0
+
+ libopts/configure.ac@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/configure.ac
+
+ libopts/configure@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +23905 -0
+
+ libopts/configure@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/configure
+
+ libopts/cook.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +355 -0
+
+ libopts/cook.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/cook.c
+
+ libopts/libopts/cook.c@1.1, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +355 -0
+
+ libopts/libopts/cook.c@1.0, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/cook.c
+
+ libopts/m4/depcomp@1.1, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +522 -0
+
+ libopts/m4/depcomp@1.0, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/m4/depcomp
+
+ libopts/libopts/enumeration.c@1.1, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +449 -0
+
+ libopts/libopts/enumeration.c@1.0, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/enumeration.c
+
+ libopts/enumeration.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +449 -0
+
+ libopts/enumeration.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/enumeration.c
+
+ libopts/environment.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +261 -0
+
+ libopts/environment.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/environment.c
+
+ libopts/libopts/environment.c@1.1, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +261 -0
+
+ libopts/libopts/environment.c@1.0, 2005-07-04 04:12:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/environment.c
+
+ libopts/libopts/genshell.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +300 -0
+
+ libopts/libopts/genshell.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/genshell.c
+
+ libopts/genshell.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +300 -0
+
+ libopts/genshell.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/genshell.c
+
+ libopts/libopts/genshell.h@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +143 -0
+
+ libopts/libopts/genshell.h@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/genshell.h
+
+ libopts/genshell.h@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +143 -0
+
+ libopts/genshell.h@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/genshell.h
+
+ libopts/m4/install-sh@1.1, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +323 -0
+
+ libopts/m4/install-sh@1.0, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/m4/install-sh
+
+ libopts/libopts.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +29 -0
+
+ libopts/libopts.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts.c
+
+ libopts/libopts/libopts.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +29 -0
+
+ libopts/libopts/libopts.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/libopts.c
+
+ libopts/libopts.m4@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +387 -0
+
+ libopts/libopts.m4@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts.m4
+
+ libopts/m4/libopts.m4@1.1, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +331 -0
+
+ libopts/m4/libopts.m4@1.0, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/m4/libopts.m4
+
+ libopts/libopts/load.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +470 -0
+
+ libopts/libopts/load.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/load.c
+
+ libopts/load.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +470 -0
+
+ libopts/load.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/load.c
+
+ libopts/m4/ltmain.sh@1.1, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +6500 -0
+
+ libopts/m4/ltmain.sh@1.0, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/m4/ltmain.sh
+
+ libopts/libopts/makeshell.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +1100 -0
+
+ libopts/libopts/makeshell.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/makeshell.c
+
+ libopts/makeshell.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +1100 -0
+
+ libopts/makeshell.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/makeshell.c
+
+ libopts/m4/missing@1.1, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +353 -0
+
+ libopts/m4/missing@1.0, 2005-07-04 04:12:39-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/m4/missing
+
+ libopts/libopts/nested.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +707 -0
+
+ libopts/libopts/nested.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/nested.c
+
+ libopts/nested.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +707 -0
+
+ libopts/nested.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/nested.c
+
+ libopts/numeric.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +89 -0
+
+ libopts/numeric.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/numeric.c
+
+ libopts/libopts/numeric.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +89 -0
+
+ libopts/libopts/numeric.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/numeric.c
+
+ libopts/autoopts/options.h@1.1, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +864 -0
+
+ libopts/autoopts/options.h@1.0, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/autoopts/options.h
+
+ libopts/compat/pathfind.c@1.1, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +332 -0
+
+ libopts/compat/pathfind.c@1.0, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/compat/pathfind.c
+
+ libopts/libopts/pgusage.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +154 -0
+
+ libopts/libopts/pgusage.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/pgusage.c
+
+ libopts/pgusage.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +154 -0
+
+ libopts/pgusage.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/pgusage.c
+
+ libopts/libopts/proto.h@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +124 -0
+
+ libopts/libopts/proto.h@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/proto.h
+
+ libopts/proto.h@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +124 -0
+
+ libopts/proto.h@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/proto.h
+
+ libopts/libopts/putshell.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +333 -0
+
+ libopts/libopts/putshell.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/putshell.c
+
+ libopts/putshell.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +333 -0
+
+ libopts/putshell.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/putshell.c
+
+ libopts/libopts/restore.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +207 -0
+
+ libopts/libopts/restore.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/restore.c
+
+ libopts/restore.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +207 -0
+
+ libopts/restore.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/restore.c
+
+ libopts/save.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +499 -0
+
+ libopts/save.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/save.c
+
+ libopts/libopts/save.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +499 -0
+
+ libopts/libopts/save.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/save.c
+
+ libopts/libopts/sort.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +369 -0
+
+ libopts/libopts/sort.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/sort.c
+
+ libopts/sort.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +369 -0
+
+ libopts/sort.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/sort.c
+
+ libopts/stack.c@1.1, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +224 -0
+
+ libopts/stack.c@1.0, 2005-07-04 04:10:37-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/stack.c
+
+ libopts/libopts/stack.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +224 -0
+
+ libopts/libopts/stack.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/stack.c
+
+ libopts/libopts/streqvcmp.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +292 -0
+
+ libopts/libopts/streqvcmp.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/streqvcmp.c
+
+ libopts/streqvcmp.c@1.1, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +292 -0
+
+ libopts/streqvcmp.c@1.0, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/streqvcmp.c
+
+ libopts/libopts/text_mmap.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +312 -0
+
+ libopts/libopts/text_mmap.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/text_mmap.c
+
+ libopts/text_mmap.c@1.1, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +312 -0
+
+ libopts/text_mmap.c@1.0, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/text_mmap.c
+
+ libopts/tokenize.c@1.1, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +322 -0
+
+ libopts/tokenize.c@1.0, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/tokenize.c
+
+ libopts/libopts/tokenize.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +322 -0
+
+ libopts/libopts/tokenize.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/tokenize.c
+
+ libopts/autoopts/usage-txt.h@1.1, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +479 -0
+
+ libopts/autoopts/usage-txt.h@1.0, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/autoopts/usage-txt.h
+
+ libopts/usage.c@1.1, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +651 -0
+
+ libopts/usage.c@1.0, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/usage.c
+
+ libopts/libopts/usage.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +651 -0
+
+ libopts/libopts/usage.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/usage.c
+
+ libopts/libopts/version.c@1.1, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +177 -0
+
+ libopts/libopts/version.c@1.0, 2005-07-04 04:12:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts/version.c
+
+ libopts/version.c@1.1, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +177 -0
+
+ libopts/version.c@1.0, 2005-07-04 04:10:38-04:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/version.c
+
+ Makefile.am@1.51, 2005-07-04 04:09:28-04:00, stenn@pogo.udel.edu +2 -2
+ Cleanup
+
+ configure.ac@1.371, 2005-07-04 04:09:29-04:00, stenn@pogo.udel.edu +2 -0
+ Cleanup
+
+ ntpdc/ntpdc-opts.def@1.3, 2005-07-04 04:09:16-04:00, stenn@pogo.udel.edu +22 -7
+ Cleanup
+
+ ntpq/ntpq-opts.def@1.2, 2005-07-04 04:09:17-04:00, stenn@pogo.udel.edu +242 -5
+ Cleanup
+
+ChangeSet@1.1282, 2005-07-04 02:40:36-04:00, stenn@pogo.udel.edu +33 -0
+ Remove old libopts/
+
+ BitKeeper/deleted/.del-COPYING.lgpl~446c1c486f21fd2e@1.2, 2005-07-04 02:37:24-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/COPYING.lgpl
+
+ BitKeeper/deleted/.del-COPYING.mbsd~7a99797cacd53056@1.2, 2005-07-04 02:37:25-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/COPYING.mbsd
+
+ BitKeeper/deleted/.del-MakeDefs.inc~159b003e2ec363b5@1.2, 2005-07-04 02:37:25-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/MakeDefs.inc
+
+ BitKeeper/deleted/.del-Makefile.am~fbc0c90887a6abe1@1.3, 2005-07-04 02:37:25-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/Makefile.am
+
+ BitKeeper/deleted/.del-README~863ded79da7cd04e@1.2, 2005-07-04 02:37:25-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/README
+
+ BitKeeper/deleted/.del-autoopts.c~8d508a4c6d6337a8@1.3, 2005-07-04 02:37:25-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/autoopts.c
+
+ BitKeeper/deleted/.del-autoopts.h~24ccfda237b1a4e4@1.3, 2005-07-04 02:37:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/autoopts.h
+
+ BitKeeper/deleted/.del-boolean.c~76d65cce6791b639@1.3, 2005-07-04 02:37:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/boolean.c
+
+ BitKeeper/deleted/.del-compat.h~b5311be51765bbc8@1.3, 2005-07-04 02:37:50-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/compat/compat.h
+
+ BitKeeper/deleted/.del-enumeration.c~406a20f27bb1e70b@1.3, 2005-07-04 02:37:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/enumeration.c
+
+ BitKeeper/deleted/.del-environment.c~cb6a850da6dc34bd@1.3, 2005-07-04 02:37:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/environment.c
+
+ BitKeeper/deleted/.del-genshell.c~f2627aa3ed9ec273@1.3, 2005-07-04 02:37:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/genshell.c
+
+ BitKeeper/deleted/.del-genshell.h~e70a6981bf25d8d7@1.3, 2005-07-04 02:37:26-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/genshell.h
+
+ BitKeeper/deleted/.del-libopts.c~48986232bbeb4a0@1.2, 2005-07-04 02:37:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts.c
+
+ BitKeeper/deleted/.del-libopts.m4~b877c4d87dcb4b42@1.3, 2005-07-04 02:37:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/libopts.m4
+
+ BitKeeper/deleted/.del-load.c~ac03722a64c7070c@1.3, 2005-07-04 02:37:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/load.c
+
+ BitKeeper/deleted/.del-makeshell.c~83bda01ad08e7d2@1.3, 2005-07-04 02:37:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/makeshell.c
+
+ BitKeeper/deleted/.del-numeric.c~fb3a05758eeebb76@1.3, 2005-07-04 02:37:27-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/numeric.c
+
+ BitKeeper/deleted/.del-options.h~21d498cf4fa940d7@1.3, 2005-07-04 02:37:28-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/options.h
+
+ BitKeeper/deleted/.del-pathfind.c~f2717c337308e580@1.3, 2005-07-04 02:37:50-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/compat/pathfind.c
+
+ BitKeeper/deleted/.del-pgusage.c~a02c107578a438f@1.3, 2005-07-04 02:37:28-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/pgusage.c
+
+ BitKeeper/deleted/.del-putshell.c~cc1d047a2bea9716@1.3, 2005-07-04 02:37:28-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/putshell.c
+
+ BitKeeper/deleted/.del-restore.c~9b4b04133eb12966@1.3, 2005-07-04 02:37:28-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/restore.c
+
+ BitKeeper/deleted/.del-save.c~d8aaf91115194b06@1.3, 2005-07-04 02:37:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/save.c
+
+ BitKeeper/deleted/.del-sort.c~a3a8ea89587b8a4@1.3, 2005-07-04 02:37:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/sort.c
+
+ BitKeeper/deleted/.del-stack.c~b43aa38ab8b08c0d@1.3, 2005-07-04 02:37:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/stack.c
+
+ BitKeeper/deleted/.del-streqv.h~961ec0971a342cd6@1.3, 2005-07-04 02:37:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/streqv.h
+
+ BitKeeper/deleted/.del-streqvcmp.c~7ef8826c4cd9bd3f@1.3, 2005-07-04 02:37:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/streqvcmp.c
+
+ BitKeeper/deleted/.del-tokenize.c~7729f53ebb45f578@1.2, 2005-07-04 02:37:29-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/tokenize.c
+
+ BitKeeper/deleted/.del-tokenize.h~cabedf7f2026e66@1.2, 2005-07-04 02:37:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/tokenize.h
+
+ BitKeeper/deleted/.del-usage-txt.h~53df7a61187840e9@1.3, 2005-07-04 02:37:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/usage-txt.h
+
+ BitKeeper/deleted/.del-usage.c~d5db6221d54a6f45@1.3, 2005-07-04 02:37:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/usage.c
+
+ BitKeeper/deleted/.del-version.c~39f34e94894b40d2@1.3, 2005-07-04 02:37:30-04:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/version.c
+
+ChangeSet@1.1251.38.2, 2005-07-03 08:30:38-04:00, mayer@pogo.udel.edu +2 -0
+ Additional IPv6 multicasting fixes and fix for size of default_ai_family
+
+ ntpd/ntp_config.c@1.128, 2005-07-02 15:27:13-04:00, mayer@pogo.udel.edu +3 -7
+ Fix the size of default_ai_family which should have been short
+
+ ntpd/ntp_io.c@1.181, 2005-07-02 15:25:25-04:00, mayer@pogo.udel.edu +32 -10
+ Additional fixes for IPv6 multicasting
+
+ChangeSet@1.1178.5.2, 2005-07-03 01:54:05-04:00, stenn@whimsy.udel.edu +1 -0
+ Change from openlogging to a list at ntp.isc.org
+
+ BitKeeper/etc/config@1.7, 2005-07-03 01:53:43-04:00, stenn@whimsy.udel.edu +2 -1
+ Change from openlogging to a list at ntp.isc.org
+
+ChangeSet@1.1251.36.5, 2005-07-01 10:42:55+02:00, claas@nixfix.(none) +1 -0
+ refclock_neoclock4x.c:
+ solve AIX problems
+
+ ntpd/refclock_neoclock4x.c@1.12, 2005-07-01 10:41:47+02:00, claas@nixfix.(none) +65 -6
+ solve AIX problems
+
+ChangeSet@1.1251.36.4, 2005-06-29 04:31:59-04:00, stenn@whimsy.udel.edu +1 -0
+ VxWorks cleanup
+
+ ntpq/ntpq.c@1.55.1.3, 2005-06-29 04:31:37-04:00, stenn@whimsy.udel.edu +4 -3
+ VxWorks cleanup
+
+ChangeSet@1.1251.37.1, 2005-06-28 20:30:44-04:00, stenn@whimsy.udel.edu +1 -0
+ Cleanup from Dave Mills
+
+ ntpd/ntp_proto.c@1.225, 2005-06-28 20:30:25-04:00, stenn@whimsy.udel.edu +4 -2
+ Cleanup from Dave Mills
+
+ChangeSet@1.1251.36.1, 2005-06-28 04:28:30-04:00, stenn@whimsy.udel.edu +1 -0
+ Only look for sys/sched.h if sched.h is not found
+
+ configure.ac@1.359.1.15, 2005-06-28 04:28:06-04:00, stenn@whimsy.udel.edu +5 -1
+ Only look for sys/sched.h if sched.h is not found
+
+ChangeSet@1.1251.35.1, 2005-06-27 03:23:38-04:00, stenn@whimsy.udel.edu +2 -0
+ Fixes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.108, 2005-06-27 03:23:15-04:00, stenn@whimsy.udel.edu +2 -3
+ Fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.224, 2005-06-27 03:23:13-04:00, stenn@whimsy.udel.edu +1 -1
+ Fixes from Dave Mills
+
+ChangeSet@1.1251.1.129, 2005-06-26 12:34:11-04:00, mayer@pogo.udel.edu +1 -0
+ Added MULTICAST_NONEWSOCKET to configuration, Windows doesn't allow separate socket for multicast
+
+ ports/winnt/include/config.h@1.38, 2005-06-26 12:33:08-04:00, mayer@pogo.udel.edu +5 -3
+ Added MULTICAST_NONEWSOCKET to configuration, Windows doesn't allow separate socket for multicast
+
+ChangeSet@1.1251.1.127, 2005-06-25 22:13:01-04:00, mayer@pogo.udel.edu +1 -0
+ Fixes for IPv6 multicast at least for FreeBSD
+
+ ntpd/ntp_io.c@1.180, 2005-06-25 22:12:38-04:00, mayer@pogo.udel.edu +162 -34
+ Fixes for IPv6 multicast at least for FreeBSD
+
+ChangeSet@1.1251.33.8, 2005-06-25 21:28:14+00:00, kardel@pogo.udel.edu +7 -0
+ refclock_parse.c:
+ fix acceptance of clocks unsync clocks right at start
+ change status reporting to use fixed refclock_report()
+ clarify trust logic
+ collect samples only if samples are ok (sync or trusted flywheel)
+ propagate pps phase adjustment value to kernel via PPSAPI to help HARDPPS
+ en- and dis-able HARDPPS in correlation to receiver sync state
+ sort out log output sequence
+ ntp_refclock.c:
+ complete event to statistic mapping
+ make refclock_report to follow RFC1305 rules for clock.status
+ and event reporting
+ parsestreams.h:
+ update copyright
+ parse_conf.h, parse.h, mbg_gps166.h:
+ add missing log keywords
+ driver8.html:
+ anonymize version number in sample output
+
+ html/drivers/driver8.html@1.17, 2005-06-25 21:21:23+00:00, kardel@pogo.udel.edu +1 -1
+ anonymize version number in sample output
+
+ include/mbg_gps166.h@1.5, 2005-06-25 21:22:33+00:00, kardel@pogo.udel.edu +7 -2
+ add missing log keywords
+
+ include/parse.h@1.7, 2005-06-25 21:22:45+00:00, kardel@pogo.udel.edu +6 -3
+ add missing log keywords
+
+ include/parse_conf.h@1.5, 2005-06-25 21:22:49+00:00, kardel@pogo.udel.edu +12 -3
+ add missing log keywords
+
+ kernel/sys/parsestreams.h@1.7, 2005-06-25 21:23:23+00:00, kardel@pogo.udel.edu +33 -9
+ update copyright
+
+ ntpd/ntp_refclock.c@1.71, 2005-06-25 21:24:13+00:00, kardel@pogo.udel.edu +36 -8
+ complete event to statistic mapping
+ make refclock_report to follow RFC1305 rules for clock.status
+ and event reporting
+
+ ntpd/refclock_parse.c@1.32, 2005-06-25 21:25:42+00:00, kardel@pogo.udel.edu +152 -103
+ fix acceptance of clocks unsync clocks right at start
+ change status reporting to use fixed refclock_report()
+ clarify trust logic
+ collect samples only if samples are ok (sync or trusted flywheel)
+ propagate pps phase adjustment value to kernel via PPSAPI to help HARDPPS
+ en- and dis-able HARDPPS in correlation to receiver sync state
+ sort out log output sequence
+
+ChangeSet@1.1251.33.7, 2005-06-23 21:24:16-04:00, stenn@whimsy.udel.edu +1 -0
+ Fixes from Dave Mills
+
+ ntpd/ntp_refclock.c@1.70, 2005-06-23 21:23:55-04:00, stenn@whimsy.udel.edu +8 -2
+ Fixes from Dave Mills
+
+ChangeSet@1.1251.33.6, 2005-06-23 21:20:53-04:00, stenn@whimsy.udel.edu +1 -0
+ Bump NBUF to 80k. From Dave Mills
+
+ util/jitter.c@1.8, 2005-06-23 21:20:32-04:00, stenn@whimsy.udel.edu +1 -1
+ Bump NBUF to 80k. From Dave Mills
+
+ChangeSet@1.1251.33.5, 2005-06-14 00:56:12-04:00, stenn@whimsy.udel.edu +1 -0
+ Changes from Dave Mills
+
+ ntpd/ntp_refclock.c@1.69, 2005-06-14 00:55:52-04:00, stenn@whimsy.udel.edu +0 -1
+ Changes from Dave Mills
+
+ChangeSet@1.1251.33.4, 2005-06-11 02:35:12-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 448] want_getifaddrs typo fix (from Enrique Perez-Terron)
+
+ configure.ac@1.359.1.14, 2005-06-11 02:34:44-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 448] want_getifaddrs typo fix (from Enrique Perez-Terron)
+
+ChangeSet@1.1251.34.1, 2005-06-09 21:42:42-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 447] typo in ntpq.html
+
+ html/ntpq.html@1.26, 2005-06-09 21:42:23-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 447] typo in ntpq.html
+
+ChangeSet@1.1251.33.2, 2005-05-30 13:17:56+02:00, martin@pc-martin4. +2 -0
+ Added SIZEOF_TIME_T for Windows.
+
+ BitKeeper/etc/logging_ok@1.54, 2005-05-30 13:17:55+02:00, martin@pc-martin4. +1 -0
+ Logging to logging@openlogging.org accepted
+
+ ports/winnt/include/config.h@1.37, 2005-05-30 13:17:51+02:00, martin@pc-martin4. +1 -0
+ Added SIZEOF_TIME_T for Windows.
+
+ChangeSet@1.1251.33.1, 2005-05-30 01:02:52-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 434] Fix from Dave Mills
+
+ ntpd/ntp_refclock.c@1.68, 2005-05-30 01:02:23-04:00, stenn@whimsy.udel.edu +0 -3
+ [Bug 434] Fix from Dave Mills
+
+ChangeSet@1.1251.26.19, 2005-05-28 06:27:19-04:00, stenn@pogo.udel.edu +1 -0
+ Cleanup building of parse clocks
+
+ configure.ac@1.359.1.12, 2005-05-28 06:27:07-04:00, stenn@pogo.udel.edu +3 -2
+ Cleanup building of parse clocks
+
+ChangeSet@1.1251.26.18, 2005-05-28 10:13:03+00:00, kardel@pogo.udel.edu +1 -0
+ ntp_refclock.c:
+ We know that peer_leap can be LEAPNOTINSYNC from startup (peer_clear when
+ FLAG_REFCLOCK is not set yet) or when copied from pp->leap.
+ Thus interrogating peer->leap only gives a a false refclock_report from
+ initialization. False in that respect that new knowledge is available
+ (pp->leap) and will be the current information from then on.
+ See Bug 434
+
+ ntpd/ntp_refclock.c@1.67, 2005-05-28 10:07:44+00:00, kardel@pogo.udel.edu +1 -2
+ We know that peer_leap can be LEAPNOTINSYNC from startup (peer_clear when
+ FLAG_REFCLOCK is not set yet) or when copied from pp->leap.
+ Thus interrogating peer->leap only gives a a false reclock_report from
+ initialization. False in that respect that new knowledge is available
+ (pp->leap) and will be the current information from then on.
+
+ChangeSet@1.1251.32.1, 2005-05-28 04:45:19-04:00, stenn@whimsy.udel.edu +2 -0
+ sys_clocktime defn/decl cleanup
+
+ include/ntpd.h@1.78, 2005-05-28 04:44:42-04:00, stenn@whimsy.udel.edu +1 -0
+ sys_clocktime defn/decl cleanup
+
+ ntpd/ntp_proto.c@1.223, 2005-05-28 04:44:42-04:00, stenn@whimsy.udel.edu +0 -1
+ sys_clocktime defn/decl cleanup
+
+ChangeSet@1.1251.29.14, 2005-05-28 04:36:31-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 443] Remove duplicate LDISC_ #defines (from Brian Utterback)
+
+ include/ntp_tty.h@1.3, 2005-05-28 04:36:11-04:00, stenn@pogo.udel.edu +0 -13
+ [Bug 443] Remove duplicate LDISC_ #defines (from Brian Utterback)
+
+ChangeSet@1.1251.29.13, 2005-05-28 04:22:37-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 442] some constants should be UL
+
+ ntpd/ntp_control.c@1.79, 2005-05-28 04:22:21-04:00, stenn@pogo.udel.edu +3 -2
+ [Bug 442] some constants should be UL
+
+ChangeSet@1.1251.29.12, 2005-05-28 04:10:30-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 441] Treat *-*-solaris2* the same WRT AM_C_PROTOTYPES
+
+ configure.ac@1.359.2.2, 2005-05-28 04:10:16-04:00, stenn@pogo.udel.edu +6 -2
+ [Bug 441] Treat *-*-solaris2* the same WRT AM_C_PROTOTYPES
+
+ChangeSet@1.1251.29.11, 2005-05-27 05:39:09-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 437] Trailing comma in enumeration (fix from Brian Utterback)
+
+ ntpd/ntp_config.c@1.126, 2005-05-27 05:38:47-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 437] Trailing comma in enumeration (fix from Brian Utterback)
+
+ChangeSet@1.1251.31.3, 2005-05-26 20:51:10-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 432] More in6addr_any cleanup
+
+ libisc/ifiter_ioctl.c@1.22.1.2, 2005-05-26 20:50:37-04:00, stenn@pogo.udel.edu +2 -0
+ [Bug 432] More in6addr_any cleanup
+
+ChangeSet@1.1251.26.15, 2005-05-26 22:05:19+00:00, kardel@pogo.udel.edu +2 -0
+ refclock_parse.c:
+ cleanup status reporting
+ ntp_refclock.c:
+ initialize currentstatus to CEVNT_FAULT to avoid misleading
+ clk_fault report at first successful reception from
+ a refclock driver
+
+ ntpd/ntp_refclock.c@1.66, 2005-05-26 22:03:15+00:00, kardel@pogo.udel.edu +3 -1
+ initialize currentstatus to CEVNT_FAULT to avoid misleading
+ clk_fault report at first successful reception from
+ a refclock driver
+
+ ntpd/refclock_parse.c@1.31, 2005-05-26 22:04:31+00:00, kardel@pogo.udel.edu +17 -14
+ cleanup status reporting
+
+ChangeSet@1.1251.26.14, 2005-05-26 19:36:08+00:00, kardel@pogo.udel.edu +1 -0
+ refclock_parse.c:
+ implement fast refclock startup
+
+ ntpd/refclock_parse.c@1.30, 2005-05-26 19:35:31+00:00, kardel@pogo.udel.edu +9 -5
+ implement fast refclock startup
+
+ChangeSet@1.1251.31.2, 2005-05-26 06:28:54-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 432] More in6addr_any cleanup
+
+ libisc/ifiter_ioctl.c@1.22.1.1, 2005-05-26 06:28:40-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 432] More in6addr_any cleanup
+
+ChangeSet@1.1251.29.9, 2005-05-26 06:27:24-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 432] More in6addr_any cleanup
+
+ libisc/ifiter_ioctl.c@1.23, 2005-05-26 06:27:16-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 432] More in6addr_any cleanup
+
+ChangeSet@1.1251.31.1, 2005-05-26 06:23:51-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 432] More in6addr_any cleanup
+
+ libisc/ifiter_ioctl.c@1.22, 2005-05-26 06:23:34-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 432] More in6addr_any cleanup
+
+ChangeSet@1.1251.29.7, 2005-05-26 05:20:13-04:00, stenn@pogo.udel.edu +2 -0
+ [Bug 432] More in6addr_any cleanup
+
+ libisc/netaddr.c@1.4, 2005-05-26 05:18:57-04:00, stenn@pogo.udel.edu +2 -0
+ [Bug 432] More in6addr_any cleanup
+
+ libisc/sockaddr.c@1.4, 2005-05-26 05:18:57-04:00, stenn@pogo.udel.edu +2 -0
+ [Bug 432] More in6addr_any cleanup
+
+ChangeSet@1.1251.29.6, 2005-05-25 05:43:34-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 432] in6addr_any cleanup
+
+ libisc/sockaddr.c@1.3, 2005-05-25 05:43:19-04:00, stenn@pogo.udel.edu +2 -0
+ [Bug 432] in6addr_any cleanup
+
+ChangeSet@1.1251.29.4, 2005-05-25 05:01:29-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 433] Avoid epoch overflow on 32 bit systems
+
+ libntp/prettydate.c@1.5, 2005-05-25 05:01:11-04:00, stenn@whimsy.udel.edu +9 -0
+ [Bug 433] Avoid epoch overflow on 32 bit systems
+
+ChangeSet@1.1251.29.3, 2005-05-25 04:57:45-04:00, stenn@whimsy.udel.edu +1 -0
+ Try adding mort back in to the br-flock
+
+ br-flock@1.6, 2005-05-25 04:57:30-04:00, stenn@whimsy.udel.edu +1 -1
+ Try adding mort back in to the br-flock
+
+ChangeSet@1.1251.29.2, 2005-05-24 04:37:05-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 433] get SIZEOF_TIME_T
+
+ configure.ac@1.359.2.1, 2005-05-24 04:36:44-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 433] get SIZEOF_TIME_T
+
+ChangeSet@1.1251.28.2, 2005-05-24 03:36:59-04:00, stenn@pogo.udel.edu +3 -0
+ [Bug 432] clean up in6addrany usage
+
+ libisc/netaddr.c@1.3, 2005-05-24 03:36:39-04:00, stenn@pogo.udel.edu +2 -0
+ [Bug 432] clean up in6addrany usage
+
+ libntp/ntp_rfc2553.c@1.22, 2005-05-24 03:36:39-04:00, stenn@pogo.udel.edu +0 -12
+ [Bug 432] clean up in6addrany usage
+
+ ntpd/ntp_intres.c@1.40, 2005-05-24 03:36:39-04:00, stenn@pogo.udel.edu +2 -0
+ [Bug 432] clean up in6addrany usage
+
+ChangeSet@1.1251.28.1, 2005-05-24 03:11:09-04:00, stenn@pogo.udel.edu +1 -0
+ Added barnstable to the flock list
+
+ flock-build@1.31, 2005-05-24 03:10:56-04:00, stenn@pogo.udel.edu +1 -1
+ Added barnstable to the flock list
+
+ChangeSet@1.1251.27.2, 2005-05-24 01:06:58-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 431] More fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.222, 2005-05-24 01:06:32-04:00, stenn@whimsy.udel.edu +4 -3
+ [Bug 431] More fixes from Dave Mills
+
+ChangeSet@1.1251.27.1, 2005-05-22 04:21:05-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 431]: FLAG_AUTHENABLE/FLAG_AUTHENTIC fixes from Dave Mills
+
+ ntpd/ntp_config.c@1.125, 2005-05-22 04:20:45-04:00, stenn@whimsy.udel.edu +0 -1
+ FLAG_AUTHENABLE/FLAG_AUTHENTIC fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.221, 2005-05-22 04:20:45-04:00, stenn@whimsy.udel.edu +2 -0
+ FLAG_AUTHENABLE/FLAG_AUTHENTIC fixes from Dave Mills
+
+ChangeSet@1.1251.26.12, 2005-05-21 10:53:09+00:00, kardel@pogo.udel.edu +39 -0
+ refclock_parse.c:
+ add simple timstamp reading Meinberg clock (type 18)
+ for the sake of cooperation in a multi client environment
+ adjust to new pps setup
+ Many files:
+ copyright maintenance
+ driver8.html:
+ document new clock type (Meinberg only time reading)
+ copyright.html:
+ update eMail address
+ configure.ac:
+ NetBSD supports parse fully
+ ChangeLog-4.1.0:
+ obfuscate email addresses
+
+ BitKeeper/etc/logging_ok@1.53, 2005-05-21 10:53:09+00:00, kardel@pogo.udel.edu +1 -0
+ Logging to logging@openlogging.org accepted
+
+ ChangeLog-4.1.0@1.591, 2005-05-21 10:19:07+00:00, kardel@pogo.udel.edu +14 -14
+ obfuscate email addresses
+
+ configure.ac@1.359.1.10, 2005-05-21 10:19:24+00:00, kardel@pogo.udel.edu +4 -4
+ NetBSD supports parse fully
+
+ html/copyright.html@1.30, 2005-05-21 10:24:49+00:00, kardel@pogo.udel.edu +1 -1
+ update eMail address
+
+ html/drivers/driver8.html@1.16, 2005-05-21 10:26:00+00:00, kardel@pogo.udel.edu +414 -302
+ document new clock type (Meinberg only time reading)
+
+ include/ascii.h@1.4, 2005-05-21 10:27:17+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ include/binio.h@1.4, 2005-05-21 10:27:17+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ include/ieee754io.h@1.4, 2005-05-21 10:27:18+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ include/mbg_gps166.h@1.4, 2005-05-21 10:27:18+00:00, kardel@pogo.udel.edu +3 -3
+ copyright maintenance
+
+ include/parse.h@1.6, 2005-05-21 10:27:19+00:00, kardel@pogo.udel.edu +4 -4
+ copyright maintenance
+
+ include/parse_conf.h@1.4, 2005-05-21 10:27:19+00:00, kardel@pogo.udel.edu +4 -4
+ copyright maintenance
+
+ include/trimble.h@1.4, 2005-05-21 10:27:19+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ kernel/sys/parsestreams.h@1.6, 2005-05-21 10:28:50+00:00, kardel@pogo.udel.edu +1 -1
+ copyright maintenance
+
+ libntp/binio.c@1.5, 2005-05-21 10:29:41+00:00, kardel@pogo.udel.edu +3 -3
+ copyright maintenance
+
+ libparse/clk_computime.c@1.8, 2005-05-21 10:22:58+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libparse/clk_dcf7000.c@1.8, 2005-05-21 10:22:58+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libparse/clk_hopf6021.c@1.8, 2005-05-21 10:22:58+00:00, kardel@pogo.udel.edu +2 -2
+ copyright maintenance
+
+ libparse/clk_meinberg.c@1.8, 2005-05-21 10:22:58+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libparse/clk_rawdcf.c@1.10, 2005-05-21 10:22:58+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libparse/clk_rcc8000.c@1.8, 2005-05-21 10:22:58+00:00, kardel@pogo.udel.edu +2 -2
+ copyright maintenance
+
+ libparse/clk_schmid.c@1.8, 2005-05-21 10:22:58+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libparse/clk_trimtaip.c@1.8, 2005-05-21 10:22:59+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libparse/clk_trimtsip.c@1.8, 2005-05-21 10:22:59+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libparse/clk_varitext.c@1.7, 2005-05-21 10:22:59+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libparse/clk_wharton.c@1.6, 2005-05-21 10:22:59+00:00, kardel@pogo.udel.edu +2 -2
+ copyright maintenance
+
+ libparse/data_mbg.c@1.5, 2005-05-21 10:22:59+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libntp/gpstolfp.c@1.7, 2005-05-21 10:29:41+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libntp/ieee754io.c@1.7, 2005-05-21 10:29:42+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libparse/info_trimble.c@1.4, 2005-05-21 10:22:59+00:00, kardel@pogo.udel.edu +6 -4
+ copyright maintenance
+
+ libntp/mfp_mul.c@1.5, 2005-05-21 10:29:42+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libparse/parse.c@1.10, 2005-05-21 10:22:59+00:00, kardel@pogo.udel.edu +7 -4
+ copyright maintenance
+
+ libparse/parse_conf.c@1.9, 2005-05-21 10:22:59+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ libparse/parsesolaris.c@1.6, 2005-05-21 10:22:59+00:00, kardel@pogo.udel.edu +8 -5
+ copyright maintenance
+
+ libparse/parsestreams.c@1.6, 2005-05-21 10:22:59+00:00, kardel@pogo.udel.edu +9 -6
+ copyright maintenance
+
+ libparse/trim_info.c@1.4, 2005-05-21 10:22:59+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ ntpd/refclock_parse.c@1.29, 2005-05-21 10:31:59+00:00, kardel@pogo.udel.edu +71 -23
+ add simple timstamp reading Meinberg clock (type 18)
+ for the sake of cooperation in a multi client environment
+ adjust to new pps setup
+
+ parseutil/dcfd.c@1.15, 2005-05-21 10:30:39+00:00, kardel@pogo.udel.edu +6 -3
+ copyright maintenance
+
+ parseutil/testdcf.c@1.6, 2005-05-21 10:30:39+00:00, kardel@pogo.udel.edu +7 -4
+ copyright maintenance
+
+ scripts/monitoring/ntploopwatch@1.4, 2005-05-21 10:31:06+00:00, kardel@pogo.udel.edu +1 -1
+ copyright maintenance
+
+ChangeSet@1.1251.26.11, 2005-05-18 05:36:08-04:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 408] fix based on proposed patch from cipo
+
+ ntpq/ntpq_ops.c@1.20.2.1, 2005-05-18 05:35:39-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 408] fix based on proposed patch from cipo
+
+ ntpq/ntpq.c@1.55.1.2, 2005-05-18 05:35:39-04:00, stenn@whimsy.udel.edu +10 -4
+ [Bug 408] fix based on proposed patch from cipo
+
+ ntpq/ntpq.h@1.5, 2005-05-18 05:35:39-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 408] fix based on proposed patch from cipo
+
+ChangeSet@1.1251.26.10, 2005-05-17 01:17:18-04:00, stenn@whimsy.udel.edu +6 -0
+ Stuff from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.107, 2005-05-17 01:10:34-04:00, stenn@whimsy.udel.edu +4 -4
+ Fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.220, 2005-05-17 01:07:54-04:00, stenn@whimsy.udel.edu +26 -3
+ Stratum checks from Dave Mills
+
+ ntpd/refclock_arbiter.c@1.12, 2005-05-17 01:16:28-04:00, stenn@whimsy.udel.edu +6 -4
+ Dave Mills: Call refclock_receive() once a second for the first few seconds
+
+ ntpd/refclock_atom.c@1.53, 2005-05-17 01:09:52-04:00, stenn@whimsy.udel.edu +8 -0
+ Dave Mills: flag4 in atom driver records offset to clockstats
+
+ ntpd/refclock_pst.c@1.8, 2005-05-17 01:16:27-04:00, stenn@whimsy.udel.edu +2 -1
+ Dave Mills: Call refclock_receive() once a second for the first few seconds
+
+ ntpd/refclock_wwvb.c@1.15, 2005-05-17 01:16:27-04:00, stenn@whimsy.udel.edu +2 -0
+ Dave Mills: Call refclock_receive() once a second for the first few seconds
+
+ChangeSet@1.1251.26.9, 2005-05-06 00:23:53-04:00, stenn@whimsy.udel.edu +4 -0
+ Changes from Dave Mills
+
+ BitKeeper/deleted/.del-driver23.html~3aed0663@1.13, 2005-05-06 00:11:21-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: html/drivers/driver23.html
+
+ BitKeeper/deleted/.del-driver24.html~3e480692@1.10, 2005-05-06 00:11:21-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: html/drivers/driver24.html
+
+ BitKeeper/deleted/.del-footer.txt~29fb3ec8f08446d2@1.2, 2005-05-06 00:10:07-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: html/drivers/footer.txt
+
+ html/index.html@1.31, 2005-05-06 00:23:32-04:00, stenn@whimsy.udel.edu +94 -94
+ Changes from Dave Mills
+
+ChangeSet@1.1251.26.8, 2005-05-05 23:55:29-04:00, stenn@whimsy.udel.edu +5 -0
+ Changes from Dave Mills
+
+ include/ntp_refclock.h@1.18, 2005-05-05 23:55:12-04:00, stenn@whimsy.udel.edu +6 -5
+ Changes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.106, 2005-05-05 23:54:57-04:00, stenn@whimsy.udel.edu +2 -1
+ Changes from Dave Mills
+
+ ntpd/ntp_refclock.c@1.65, 2005-05-05 23:54:57-04:00, stenn@whimsy.udel.edu +1 -1
+ Changes from Dave Mills
+
+ ntpd/refclock_acts.c@1.25, 2005-05-05 23:54:57-04:00, stenn@whimsy.udel.edu +30 -18
+ Changes from Dave Mills
+
+ ntpd/refclock_heath.c@1.12, 2005-05-05 23:54:58-04:00, stenn@whimsy.udel.edu +4 -3
+ Changes from Dave Mills
+
+ChangeSet@1.1251.26.7, 2005-04-27 05:53:39-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 401] ntpdc: only ask for keyid once, from Jason Fountain
+
+ ntpdc/ntpdc.c@1.40.1.1, 2005-04-27 05:53:22-04:00, stenn@whimsy.udel.edu +10 -6
+ [Bug 401] ntpdc: only ask for keyid once, from Jason Fountain
+
+ChangeSet@1.1251.26.6, 2005-04-27 04:09:54-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 409] Add DNS-SD/Rendezvous to ntpd, from Andre Masella
+
+ configure.ac@1.359.1.9, 2005-04-27 04:09:12-04:00, stenn@whimsy.udel.edu +11 -1
+ [Bug 409] Add DNS-SD/Rendezvous to ntpd, from Andre Masella
+
+ ntpd/ntpd.c@1.61.2.1, 2005-04-27 04:09:12-04:00, stenn@whimsy.udel.edu +16 -0
+ [Bug 409] Add DNS-SD/Rendezvous to ntpd, from Andre Masella
+
+ChangeSet@1.1251.1.126, 2005-04-23 16:24:51-04:00, mayer@pogo.udel.edu +2 -0
+ Added support for -4 and -6 command line options
+
+ ntpd/cmd_args.c@1.34, 2005-04-23 16:24:18-04:00, mayer@pogo.udel.edu +9 -2
+ Added support for -4 and -6 command line options
+
+ ntpd/ntp_config.c@1.123.1.1, 2005-04-23 16:24:18-04:00, mayer@pogo.udel.edu +6 -21
+ Added support for -4 and -6 command line options
+
+ChangeSet@1.1251.26.5, 2005-04-21 00:27:25-04:00, stenn@whimsy.udel.edu +3 -0
+ Documentation changes from Dave Mills
+
+ html/drivers/driver18.html@1.14, 2005-04-21 00:27:12-04:00, stenn@whimsy.udel.edu +10 -11
+ Documentation changes from Dave Mills
+
+ html/drivers/driver36.html@1.25, 2005-04-21 00:27:11-04:00, stenn@whimsy.udel.edu +4 -88
+ Documentation changes from Dave Mills
+
+ html/drivers/driver6.html@1.19, 2005-04-21 00:27:12-04:00, stenn@whimsy.udel.edu +6 -2
+ Documentation changes from Dave Mills
+
+ChangeSet@1.1251.26.4, 2005-04-21 00:23:40-04:00, stenn@whimsy.udel.edu +4 -0
+ Documentation changes from Dave Mills
+
+ html/audio.html@1.16, 2005-04-21 00:23:03-04:00, stenn@whimsy.udel.edu +95 -3
+ Documentation changes from Dave Mills
+
+ html/confopt.html@1.31, 2005-04-21 00:23:06-04:00, stenn@whimsy.udel.edu +1 -1
+ Documentation changes from Dave Mills
+
+ html/ntpd.html@1.36, 2005-04-21 00:23:06-04:00, stenn@whimsy.udel.edu +4 -4
+ Documentation changes from Dave Mills
+
+ html/ntpq.html@1.25, 2005-04-21 00:23:06-04:00, stenn@whimsy.udel.edu +258 -255
+ Documentation changes from Dave Mills
+
+ChangeSet@1.1251.26.3, 2005-04-21 00:08:47-04:00, stenn@whimsy.udel.edu +4 -0
+ anti-clockhop changes from Dave Mills
+
+ include/ntp.h@1.116, 2005-04-21 00:07:57-04:00, stenn@whimsy.udel.edu +6 -6
+ anti-clockhop changes from Dave Mills
+
+ include/ntp_config.h@1.33, 2005-04-21 00:07:57-04:00, stenn@whimsy.udel.edu +1 -0
+ anti-clockhop changes from Dave Mills
+
+ ntpd/ntp_config.c@1.124, 2005-04-21 00:08:24-04:00, stenn@whimsy.udel.edu +5 -0
+ anti-clockhop changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.219, 2005-04-21 00:08:25-04:00, stenn@whimsy.udel.edu +17 -7
+ anti-clockhop changes from Dave Mills
+
+ChangeSet@1.1251.1.124, 2005-04-20 23:55:08-04:00, mayer@pogo.udel.edu +3 -0
+ Remove log.* from make files
+
+ BitKeeper/deleted/.del-log.c~3e480692@1.7, 2005-04-20 23:29:37-04:00, mayer@pogo.udel.edu +0 -0
+ Delete: libntp/log.c
+
+ BitKeeper/deleted/.del-log.h~3e480692@1.5, 2005-04-20 23:29:43-04:00, mayer@pogo.udel.edu +0 -0
+ Delete: libntp/log.h
+
+ libntp/Makefile.am@1.32, 2005-04-20 23:54:14-04:00, mayer@pogo.udel.edu +2 -2
+ Remove log.* from make files
+
+ChangeSet@1.1251.1.123, 2005-04-20 23:25:01-04:00, mayer@pogo.udel.edu +3 -0
+ Changes for multicasting
+
+ libntp/log.c@1.6, 2005-04-17 18:22:24-04:00, mayer@pogo.udel.edu +0 -0
+ Rename: BitKeeper/deleted/.del-log.c~3e480692 -> libntp/log.c
+
+ BitKeeper/deleted/.del-log.c~3e480692@1.5, 2005-04-17 18:18:17-04:00, mayer@pogo.udel.edu +0 -0
+ Delete: libntp/log.c
+
+ libntp/log.h@1.4, 2005-04-17 18:22:49-04:00, mayer@pogo.udel.edu +0 -0
+ Rename: BitKeeper/deleted/.del-log.h~3e480692 -> libntp/log.h
+
+ BitKeeper/deleted/.del-log.h~3e480692@1.3, 2005-04-17 18:18:20-04:00, mayer@pogo.udel.edu +0 -0
+ Delete: libntp/log.h
+
+ ntpd/ntp_io.c@1.179, 2005-04-20 23:24:43-04:00, mayer@pogo.udel.edu +35 -11
+ Changes for multicasting
+
+ChangeSet@1.1251.26.2, 2005-04-18 22:29:49-04:00, stenn@whimsy.udel.edu +2 -0
+ anti-clockhop changes from Dave Mills
+
+ include/ntp.h@1.115, 2005-04-18 22:29:19-04:00, stenn@whimsy.udel.edu +1 -3
+ anti-clockhop changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.218, 2005-04-18 22:29:27-04:00, stenn@whimsy.udel.edu +21 -25
+ anti-clockhop changes from Dave Mills
+
+ChangeSet@1.1251.26.1, 2005-04-18 01:01:32-04:00, stenn@whimsy.udel.edu +5 -0
+ Changes from Dave Mills
+
+ include/ntp.h@1.114, 2005-04-18 01:01:12-04:00, stenn@whimsy.udel.edu +2 -2
+ Changes from Dave Mills
+
+ include/ntp_control.h@1.26, 2005-04-18 01:01:13-04:00, stenn@whimsy.udel.edu +9 -10
+ Changes from Dave Mills
+
+ ntpd/ntp_control.c@1.78, 2005-04-18 01:01:02-04:00, stenn@whimsy.udel.edu +10 -15
+ Changes from Dave Mills
+
+ ntpd/ntp_peer.c@1.75, 2005-04-18 01:01:04-04:00, stenn@whimsy.udel.edu +0 -2
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.217, 2005-04-18 01:01:03-04:00, stenn@whimsy.udel.edu +37 -43
+ Changes from Dave Mills
+
+ChangeSet@1.1251.18.2, 2005-04-16 23:26:04-04:00, mayer@tecotoo. +10 -0
+ Martin Burnicki's cleanup of command line options and setting the registry for NTP
+
+ BitKeeper/deleted/.del-log.c~87fe33f8@1.3, 2005-04-16 23:11:57-04:00, mayer@tecotoo. +0 -0
+ Delete: ports/winnt/libntp/log.c
+
+ BitKeeper/deleted/.del-log.h~29080509@1.5, 2005-04-16 23:12:02-04:00, mayer@tecotoo. +0 -0
+ Delete: ports/winnt/libntp/log.h
+
+ include/ntp_cmdargs.h@1.3, 2005-04-16 23:15:27-04:00, mayer@tecotoo. +1 -0
+ Martin Burnicki's changes to fix ntpd usage message
+
+ libntp/msyslog.c@1.19, 2005-04-16 23:21:23-04:00, mayer@tecotoo. +0 -1
+ Martin Burnicki's changes to remove unnecessary log.h include
+
+ ntpd/cmd_args.c@1.33, 2005-04-16 23:15:35-04:00, mayer@tecotoo. +38 -42
+ Martin Burnicki's changes to fix ntpd usage message
+
+ ntpd/ntpd.c@1.61.1.6, 2005-04-16 23:22:57-04:00, mayer@tecotoo. +0 -1
+ Martin Burnicki's changes to remove unnecessary log.h include
+
+ ports/winnt/instsrv/Instsrv.dsp@1.6, 2005-04-16 23:25:00-04:00, mayer@tecotoo. +1 -1
+ Miscellaneous cleanup
+
+ ports/winnt/libntp/libntp.dsp@1.25, 2005-04-16 23:24:18-04:00, mayer@tecotoo. +0 -8
+ Remove references to log.c and log.h
+
+ ports/winnt/ntpd/nt_clockstuff.c@1.17, 2005-04-16 23:20:47-04:00, mayer@tecotoo. +0 -2
+ Martin Burnicki's changes to remove unnecessary registry call
+
+ ports/winnt/ntpd/ntservice.c@1.5, 2005-04-16 23:19:51-04:00, mayer@tecotoo. +11 -5
+ Martin Burnicki's changes to fix ntpd usage message
+
+ChangeSet@1.1251.1.121, 2005-04-12 17:43:36-04:00, stenn@whimsy.udel.edu +4 -0
+ Documentation changes from Dave Mills (including [Bug 412])
+
+ html/accopt.html@1.23, 2005-04-12 17:43:00-04:00, stenn@whimsy.udel.edu +3 -5
+ Documentation changes from Dave Mills
+
+ html/confopt.html@1.30, 2005-04-12 17:42:45-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 412] multicastclient requires an address (Dave Mills)
+
+ html/ntpq.html@1.24, 2005-04-12 17:43:03-04:00, stenn@whimsy.udel.edu +2 -3
+ Documentation changes from Dave Mills
+
+ html/refclock.html@1.31, 2005-04-12 17:43:01-04:00, stenn@whimsy.udel.edu +8 -10
+ Documentation changes from Dave Mills
+
+ChangeSet@1.1251.1.120, 2005-04-12 00:52:34-04:00, stenn@whimsy.udel.edu +2 -0
+ Changes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.105, 2005-04-12 00:52:23-04:00, stenn@whimsy.udel.edu +3 -4
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.216, 2005-04-12 00:52:21-04:00, stenn@whimsy.udel.edu +1 -1
+ Changes from Dave Mills
+
+ChangeSet@1.1251.1.119, 2005-04-07 20:36:24-04:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 405] and other fixes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.104, 2005-04-07 20:35:24-04:00, stenn@whimsy.udel.edu +0 -1
+ Fixes from Dave Mills
+
+ ntpd/ntp_peer.c@1.74, 2005-04-07 20:35:04-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 405] Fix from Dave Mills
+
+ ntpd/ntp_proto.c@1.215, 2005-04-07 20:35:22-04:00, stenn@whimsy.udel.edu +37 -44
+ Fixes from Dave Mills
+
+ChangeSet@1.1251.1.118, 2005-04-06 23:54:32-04:00, stenn@whimsy.udel.edu +1 -0
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.214, 2005-04-06 23:54:11-04:00, stenn@whimsy.udel.edu +1 -2
+ Changes from Dave Mills
+
+ChangeSet@1.1251.1.117, 2005-04-06 01:09:48-04:00, stenn@whimsy.udel.edu +2 -0
+ Changes from Dave Mills
+
+ ntpd/ntp_peer.c@1.73, 2005-04-06 01:08:29-04:00, stenn@whimsy.udel.edu +2 -3
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.213, 2005-04-06 01:08:28-04:00, stenn@whimsy.udel.edu +25 -24
+ Changes from Dave Mills
+
+ChangeSet@1.1251.1.116, 2005-04-04 18:15:45-04:00, stenn@whimsy.udel.edu +3 -0
+ Changes from Dave Mills
+
+ include/ntp.h@1.113, 2005-04-04 18:15:12-04:00, stenn@whimsy.udel.edu +4 -7
+ Changes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.103, 2005-04-04 18:15:05-04:00, stenn@whimsy.udel.edu +4 -1
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.212, 2005-04-04 18:15:04-04:00, stenn@whimsy.udel.edu +1 -0
+ Changes from Dave Mills
+
+ChangeSet@1.1251.1.115, 2005-04-04 00:22:10-04:00, stenn@whimsy.udel.edu +1 -0
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.211, 2005-04-04 00:21:25-04:00, stenn@whimsy.udel.edu +3 -3
+ Changes from Dave Mills
+
+ChangeSet@1.1251.1.114, 2005-04-03 20:41:23-04:00, stenn@whimsy.udel.edu +3 -0
+ Changes from Dave Mills
+
+ include/ntp.h@1.112, 2005-04-03 20:40:55-04:00, stenn@whimsy.udel.edu +1 -0
+ Changes from Dave Mills
+
+ ntpd/ntp_peer.c@1.72, 2005-04-03 20:40:27-04:00, stenn@whimsy.udel.edu +4 -3
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.210, 2005-04-03 20:40:26-04:00, stenn@whimsy.udel.edu +98 -93
+ Changes from Dave Mills
+
+ChangeSet@1.1251.25.1, 2005-04-02 19:05:57-05:00, mayer@pogo.udel.edu +1 -0
+ Use any for the IPv4 join interface for mcast
+
+ ntpd/ntp_io.c@1.178, 2005-04-02 19:05:32-05:00, mayer@pogo.udel.edu +1 -1
+ Use any for the IPv4 join interface for mcast
+
+ChangeSet@1.1251.24.1, 2005-04-02 18:47:52-05:00, stenn@whimsy.udel.edu +7 -0
+ Changes from Dave Mills
+
+ include/ntp.h@1.111, 2005-04-02 18:47:06-05:00, stenn@whimsy.udel.edu +6 -7
+ Changes from Dave Mills
+
+ include/ntp_crypto.h@1.35, 2005-04-02 18:47:09-05:00, stenn@whimsy.udel.edu +3 -2
+ Changes from Dave Mills
+
+ include/ntpd.h@1.77, 2005-04-02 18:47:06-05:00, stenn@whimsy.udel.edu +1 -1
+ Changes from Dave Mills
+
+ libntp/statestr.c@1.9, 2005-04-02 18:47:18-05:00, stenn@whimsy.udel.edu +4 -3
+ Changes from Dave Mills
+
+ ntpd/ntp_crypto.c@1.96, 2005-04-02 18:47:26-05:00, stenn@whimsy.udel.edu +47 -38
+ Changes from Dave Mills
+
+ ntpd/ntp_peer.c@1.71, 2005-04-02 18:47:25-05:00, stenn@whimsy.udel.edu +2 -2
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.209, 2005-04-02 18:47:25-05:00, stenn@whimsy.udel.edu +49 -81
+ Changes from Dave Mills
+
+ChangeSet@1.1251.1.111, 2005-04-02 18:36:32-05:00, mayer@pogo.udel.edu +1 -0
+ If unable to create a separate socket for multicast, find a local interface and use that instead of the wildcard sockets
+
+ ntpd/ntp_io.c@1.177, 2005-04-02 18:35:59-05:00, mayer@pogo.udel.edu +46 -25
+ If unable to create a separate socket for multicast, find a local interface and use that instead of the wildcard sockets
+
+ChangeSet@1.1251.1.110, 2005-04-02 03:28:33-05:00, stenn@whimsy.udel.edu +1 -0
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.208, 2005-04-02 03:28:12-05:00, stenn@whimsy.udel.edu +48 -44
+ Changes from Dave Mills
+
+ChangeSet@1.1251.1.109, 2005-03-31 23:03:22-05:00, stenn@whimsy.udel.edu +3 -0
+ Changes from Dave Mills
+
+ include/ntpd.h@1.76, 2005-03-31 23:02:22-05:00, stenn@whimsy.udel.edu +1 -1
+ Changes from Dave Mills
+
+ ntpd/ntp_peer.c@1.70, 2005-03-31 23:02:53-05:00, stenn@whimsy.udel.edu +7 -5
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.207, 2005-03-31 23:02:52-05:00, stenn@whimsy.udel.edu +140 -135
+ Changes from Dave Mills
+
+ChangeSet@1.1251.23.1, 2005-03-31 21:57:56-05:00, mayer@pogo.udel.edu +1 -0
+ Change ignore packet message to only print if debug > 3
+
+ ntpd/ntp_io.c@1.176, 2005-03-31 21:56:44-05:00, mayer@pogo.udel.edu +1 -1
+ Change ignore packet message to only print if debug > 3
+
+ChangeSet@1.1251.1.107, 2005-03-31 11:15:14+02:00, root@sonne. +1 -0
+ Remove quotes from tokens to handle paths with spaces correctly.
+
+ ntpd/ntp_config.c@1.123, 2005-03-31 11:15:07+02:00, root@sonne. +21 -0
+ Remove quotes from tokens to handle paths with spaces correctly.
+
+ChangeSet@1.1251.1.106, 2005-03-31 11:11:43+02:00, root@sonne. +2 -0
+ Fixed braces in conditional for OPENSSL.
+
+ BitKeeper/etc/logging_ok@1.52, 2005-03-31 11:11:43+02:00, root@sonne. +1 -0
+ Logging to logging@openlogging.org accepted
+
+ ntpd/ntp_proto.c@1.206, 2005-03-31 11:11:33+02:00, root@sonne. +2 -1
+ Fixed braces in conditional for OPENSSL.
+
+ChangeSet@1.1251.22.2, 2005-03-30 23:41:14-05:00, stenn@whimsy.udel.edu +3 -0
+ Changes from Dave Mills
+
+ include/ntp.h@1.108.1.1, 2005-03-30 23:40:58-05:00, stenn@whimsy.udel.edu +18 -8
+ Changes from Dave Mills
+
+ ntpd/ntp_peer.c@1.69, 2005-03-30 23:40:46-05:00, stenn@whimsy.udel.edu +9 -8
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.203.1.2, 2005-03-30 23:40:46-05:00, stenn@whimsy.udel.edu +205 -205
+ Changes from Dave Mills
+
+ChangeSet@1.1251.1.104, 2005-03-30 23:07:59-05:00, mayer@pogo.udel.edu +1 -0
+ Bug #396 Windows-only fix to ignore incoming packets if flag on socket is set
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.14, 2005-03-30 23:07:23-05:00, mayer@pogo.udel.edu +1 -1
+ Bug #396 Windows-only fix to ignore incoming packets if flag on socket is set
+
+ChangeSet@1.1251.22.1, 2005-03-27 18:39:02-05:00, stenn@whimsy.udel.edu +1 -0
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.203.1.1, 2005-03-27 18:38:48-05:00, stenn@whimsy.udel.edu +6 -6
+ Changes from Dave Mills
+
+ChangeSet@1.1251.21.3, 2005-03-27 16:29:59-05:00, mayer@pogo.udel.edu +1 -0
+ Change in configuration setup prevented multicast packets from being accepted
+
+ ntpd/ntp_proto.c@1.201.1.1, 2005-03-27 16:29:44-05:00, mayer@pogo.udel.edu +17 -16
+ Change in configuration setup prevented multicast packets from being accepted
+
+ChangeSet@1.1251.21.2, 2005-03-27 16:28:44-05:00, mayer@pogo.udel.edu +1 -0
+ Bug #396: Don't accept broadcast packets if they are not enabled. wildcard socket was accepting them. Bind all sockets but drop any packet arriving on socket not specifically enabled
+
+ ntpd/ntp_io.c@1.175, 2005-03-27 16:28:25-05:00, mayer@pogo.udel.edu +81 -50
+ Bug #396: Don't accept broadcast packets if they are not enabled. wildcard socket was accepting them. Bind all sockets but drop any packet arriving on socket not specifically enabled
+
+ChangeSet@1.1251.21.1, 2005-03-27 16:25:17-05:00, mayer@pogo.udel.edu +1 -0
+ Added ignore_packets to interface for sockets which will drop all requests
+
+ include/ntp.h@1.109, 2005-03-27 16:24:55-05:00, mayer@pogo.udel.edu +3 -0
+ Added ignore_packets to interface for sockets which will drop all requests
+
+ChangeSet@1.1251.1.102, 2005-03-24 00:54:17-05:00, stenn@whimsy.udel.edu +2 -0
+ Changes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.102, 2005-03-24 00:54:02-05:00, stenn@whimsy.udel.edu +1 -2
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.203, 2005-03-24 00:54:01-05:00, stenn@whimsy.udel.edu +6 -11
+ Changes from Dave Mills
+
+ChangeSet@1.1251.20.1, 2005-03-18 00:43:24-05:00, stenn@whimsy.udel.edu +1 -0
+ Updates from Dave Mills
+
+ ntpd/ntp_proto.c@1.202, 2005-03-18 00:43:10-05:00, stenn@whimsy.udel.edu +15 -15
+ Updates from Dave Mills
+
+ChangeSet@1.1251.1.100, 2005-03-17 15:35:36-05:00, mayer@pogo.udel.edu +1 -0
+ Bug #396 - Disable wildcards for now to prevent this happening
+
+ ntpd/ntp_io.c@1.174, 2005-03-17 15:35:07-05:00, mayer@pogo.udel.edu +8 -1
+ Bug #396 - Disable wildcards for now to prevent this happening
+
+ChangeSet@1.1251.1.99, 2005-03-15 23:31:42-05:00, stenn@whimsy.udel.edu +1 -0
+ ntp_proto.c fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.201, 2005-03-15 23:31:28-05:00, stenn@whimsy.udel.edu +111 -116
+ ntp_proto.c fixes from Dave Mills
+
+ChangeSet@1.1251.1.98, 2005-03-15 22:52:55-05:00, stenn@whimsy.udel.edu +1 -0
+ Only check OpenSSL Major/Minor/Fix/Status, not Patch
+
+ util/ntp-keygen.c@1.31, 2005-03-15 22:52:41-05:00, stenn@whimsy.udel.edu +5 -1
+ Only check OpenSSL Major/Minor/Fix/Status, not Patch
+
+ChangeSet@1.1251.19.1, 2005-03-14 19:11:49-05:00, stenn@whimsy.udel.edu +1 -0
+ Comment fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.200, 2005-03-14 19:08:56-05:00, stenn@whimsy.udel.edu +7 -2
+ Comment fixes from Dave Mills
+
+ChangeSet@1.1251.1.96, 2005-03-14 18:30:20-05:00, mayer@pogo.udel.edu +1 -0
+ Wrong Macro used should have been PROTO_MULTICAST_ADD instead of PROTO_BROADCLIENT
+
+ ntpd/ntp_config.c@1.122, 2005-03-14 18:30:00-05:00, mayer@pogo.udel.edu +1 -1
+ Wrong Macro used should have been PROTO_MULTICAST_ADD instead of PROTO_BROADCLIENT
+
+ChangeSet@1.1251.1.95, 2005-03-13 17:02:41-05:00, stenn@whimsy.udel.edu +7 -0
+ Changes from Dave Mills (flash TEST bits changed!)
+
+ include/ntp.h@1.108, 2005-03-13 17:01:30-05:00, stenn@whimsy.udel.edu +35 -24
+ Changes from Dave Mills (flashh TEST bits changed!)
+
+ include/ntpd.h@1.75, 2005-03-13 17:01:30-05:00, stenn@whimsy.udel.edu +1 -0
+ Changes from Dave Mills (flashh TEST bits changed!)
+
+ ntpd/ntp_control.c@1.77, 2005-03-13 17:01:47-05:00, stenn@whimsy.udel.edu +3 -1
+ Changes from Dave Mills (flash TEST bits changed!)
+
+ ntpd/ntp_crypto.c@1.95, 2005-03-13 17:01:49-05:00, stenn@whimsy.udel.edu +11 -11
+ Changes from Dave Mills (flash TEST bits changed!)
+
+ ntpd/ntp_peer.c@1.68, 2005-03-13 17:01:48-05:00, stenn@whimsy.udel.edu +6 -18
+ Changes from Dave Mills (flash TEST bits changed!)
+
+ ntpd/ntp_proto.c@1.199, 2005-03-13 17:01:48-05:00, stenn@whimsy.udel.edu +233 -293
+ Changes from Dave Mills (flash TEST bits changed!)
+
+ ntpq/ntpq.c@1.55.1.1, 2005-03-13 17:02:04-05:00, stenn@whimsy.udel.edu +14 -12
+ Changes from Dave Mills (flash TEST bits changed!)
+
+ChangeSet@1.1251.18.1, 2005-03-09 22:23:03-05:00, mayer@tecotoo. +1 -0
+ Update for UTC information version string - from Heiko Gerstung
+
+ ports/winnt/scripts/mkver.bat@1.7, 2005-03-09 22:22:30-05:00, mayer@tecotoo. +99 -23
+ Update for UTC information version string - from Heiko Gerstung
+
+ChangeSet@1.1251.1.93, 2005-03-09 01:04:51-05:00, stenn@whimsy.udel.edu +1 -0
+ Lose arbiter debug line. From Dave Mills.
+
+ ntpd/refclock_arbiter.c@1.11, 2005-03-09 01:04:29-05:00, stenn@whimsy.udel.edu +0 -2
+ Lose debug line. From Dave Mills.
+
+ChangeSet@1.1251.1.90, 2005-03-08 22:14:49-05:00, mayer@tecotoo. +1 -0
+ Fix to correctly create version string - from Heiko Gerstung
+
+ ports/winnt/scripts/mkver.bat@1.6, 2005-03-08 22:13:54-05:00, mayer@tecotoo. +265 -50
+ Fix to correctly create version string - from Heiko Gerstung
+
+ChangeSet@1.1251.17.1, 2005-03-07 23:18:40-05:00, mayer@pogo.udel.edu +1 -0
+ Check for max value of skips before adding
+
+ ntpd/ntp_io.c@1.169.1.6, 2005-03-07 23:18:23-05:00, mayer@pogo.udel.edu +7 -4
+ Check for max value of skips before adding
+
+ChangeSet@1.1271, 2005-03-05 02:03:58-05:00, stenn@pogo.udel.edu +1 -0
+ cleanup
+
+ configure.ac@1.366, 2005-03-05 02:03:38-05:00, stenn@pogo.udel.edu +0 -33
+
+ChangeSet@1.1251.15.11, 2005-03-05 01:40:18-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 390] Do not run check-layout if cross-compiling
+
+ configure.ac@1.359.1.8, 2005-03-05 01:39:53-05:00, stenn@whimsy.udel.edu +46 -33
+ [Bug 390] Do not run check-layout if cross-compiling
+
+ ntpdc/Makefile.am@1.23.1.1, 2005-03-05 01:39:53-05:00, stenn@whimsy.udel.edu +1 -6
+ [Bug 390] Do not run check-layout if cross-compiling
+
+ChangeSet@1.1251.1.88, 2005-03-02 20:52:53-05:00, mayer@tecotoo. +1 -0
+ Test code
+
+ ntpd/ntp_io.c@1.171, 2005-03-02 20:51:46-05:00, mayer@tecotoo. +1 -1
+ Test code
+
+ChangeSet@1.1178.5.1, 2005-03-02 16:18:07-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 389] Fix from Remi Demis-Courmont, via Loic Minier (http://bugs.debian.org/293793
+
+ ntpdate/ntpdate.c@1.47.1.1, 2005-03-02 16:17:50-05:00, stenn@whimsy.udel.edu +46 -16
+ [Bug 389] Fix from Remi Demis-Courmont, via Loic Minier (http://bugs.debian.org/293793
+
+ChangeSet@1.1251.15.9, 2005-03-02 15:50:06-05:00, stenn@whimsy.udel.edu +1 -0
+ Clock filter bugfix from Dave Mills
+
+ ntpd/ntp_proto.c@1.198, 2005-03-02 15:49:47-05:00, stenn@whimsy.udel.edu +3 -3
+ Clock filter bugfix from Dave Mills
+
+ChangeSet@1.1251.15.8, 2005-03-02 14:53:27-05:00, mayer@pogo.udel.edu +1 -0
+ Bug #392 fix group number
+
+ ntpd/ntpd.c@1.61.1.5, 2005-03-02 14:53:15-05:00, mayer@pogo.udel.edu +1 -1
+ Bug #392 fix group number
+
+ChangeSet@1.1251.16.1, 2005-03-02 14:37:49-05:00, mayer@pogo.udel.edu +1 -0
+ Fix to ignore 0 or less readlengths after the first one
+
+ ntpd/ntp_io.c@1.169.1.5, 2005-03-02 14:37:18-05:00, mayer@pogo.udel.edu +50 -6
+ Fix to ignore 0 or less readlengths after the first one
+
+ChangeSet@1.1251.15.6, 2005-03-01 22:32:42-05:00, stenn@whimsy.udel.edu +6 -0
+ Changes from Dave Mills
+
+ include/ntpd.h@1.74, 2005-03-01 22:30:11-05:00, stenn@whimsy.udel.edu +1 -0
+ Changes from Dave Mills
+
+ ntpd/ntp_crypto.c@1.94, 2005-03-01 22:32:16-05:00, stenn@whimsy.udel.edu +2 -1
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.197, 2005-03-01 22:32:16-05:00, stenn@whimsy.udel.edu +3 -1
+ Changes from Dave Mills
+
+ ntpd/ntp_util.c@1.36, 2005-03-01 22:32:18-05:00, stenn@whimsy.udel.edu +7 -5
+ Changes from Dave Mills
+
+ ntpd/ntpd.c@1.61.1.4, 2005-03-01 22:32:15-05:00, stenn@whimsy.udel.edu +2 -1
+ Changes from Dave Mills
+
+ ntpd/ntpsim.c@1.9, 2005-03-01 22:32:19-05:00, stenn@whimsy.udel.edu +1 -0
+ Changes from Dave Mills
+
+ChangeSet@1.1251.15.5, 2005-02-28 20:17:40-05:00, mayer@pogo.udel.edu +1 -0
+ Fixed input_handler loops
+
+ ntpd/ntp_io.c@1.169.1.4, 2005-02-28 20:17:10-05:00, mayer@pogo.udel.edu +29 -38
+ Fixed input_handler loops
+
+ChangeSet@1.1251.15.3, 2005-02-28 13:23:19-05:00, mayer@pogo.udel.edu +1 -0
+ fixes in input_handler - additional changes required
+
+ ntpd/ntp_io.c@1.169.1.2, 2005-02-28 13:22:50-05:00, mayer@pogo.udel.edu +16 -3
+ fixes in input_handler - additional changes required
+
+ChangeSet@1.1251.15.2, 2005-02-28 13:21:47-05:00, mayer@pogo.udel.edu +1 -0
+ Bug #392 - using wrong group id for account
+
+ ntpd/ntpd.c@1.61.1.3, 2005-02-28 13:21:29-05:00, mayer@pogo.udel.edu +1 -1
+ Bug #392 - using wrong group id for account
+
+ChangeSet@1.1251.13.3, 2005-02-28 12:52:33-05:00, stenn@whimsy.udel.edu +5 -0
+ Changes from Dave Mills
+
+ include/ntp.h@1.107, 2005-02-28 12:51:30-05:00, stenn@whimsy.udel.edu +1 -1
+ Changes from Dave Mills
+
+ ntpd/ntp_config.c@1.121, 2005-02-28 12:51:04-05:00, stenn@whimsy.udel.edu +1 -1
+ Changes from Dave Mills
+
+ ntpd/ntp_io.c@1.167.1.1, 2005-02-28 12:51:05-05:00, stenn@whimsy.udel.edu +1 -8
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.196, 2005-02-28 12:51:05-05:00, stenn@whimsy.udel.edu +18 -34
+ Changes from Dave Mills
+
+ ntpd/refclock_acts.c@1.21.1.3, 2005-02-28 12:51:06-05:00, stenn@whimsy.udel.edu +218 -207
+ Changes from Dave Mills
+
+ChangeSet@1.1251.15.1, 2005-02-22 18:10:26-05:00, mayer@pogo.udel.edu +1 -0
+ Fix loop limits
+
+ ntpd/ntp_io.c@1.169.1.1, 2005-02-22 18:10:10-05:00, mayer@pogo.udel.edu +3 -3
+ Fix loop limits
+
+ChangeSet@1.1251.14.1, 2005-02-21 00:34:25-05:00, mayer@tecotoo. +1 -0
+ ntp_io.c:
+ Make MAXZEROREADS 1
+
+ ntpd/ntp_io.c@1.168.1.1, 2005-02-21 00:33:05-05:00, mayer@tecotoo. +4 -4
+ Make MAXZEROREADS 1
+
+ChangeSet@1.1251.1.86, 2005-02-21 00:26:12-05:00, mayer@pogo.udel.edu +1 -0
+ Additional changes to input_handler() to correctly break in refclock read loop
+
+ ntpd/ntp_io.c@1.169, 2005-02-21 00:25:37-05:00, mayer@pogo.udel.edu +8 -7
+ Additional changes to input_handler() to correctly break in refclock read loop
+
+ChangeSet@1.1251.13.2, 2005-02-18 23:00:34-05:00, stenn@whimsy.udel.edu +4 -0
+ changes from Dave Mills
+
+ libntp/clocktypes.c@1.17, 2005-02-18 22:55:49-05:00, stenn@whimsy.udel.edu +8 -8
+ changes from Dave Mills
+
+ ntpd/ntp_control.c@1.76, 2005-02-18 22:55:58-05:00, stenn@whimsy.udel.edu +6 -6
+ changes from Dave Mills
+
+ ntpd/refclock_acts.c@1.21.1.2, 2005-02-18 22:55:59-05:00, stenn@whimsy.udel.edu +14 -32
+ changes from Dave Mills
+
+ ntpd/refclock_conf.c@1.25, 2005-02-18 22:56:02-05:00, stenn@whimsy.udel.edu +4 -4
+ changes from Dave Mills
+
+ChangeSet@1.1251.13.1, 2005-02-16 00:37:44-05:00, stenn@whimsy.udel.edu +8 -0
+ Updates from Dave Mills
+
+ include/ntp.h@1.106, 2005-02-16 00:37:11-05:00, stenn@whimsy.udel.edu +6 -3
+ Updates from Dave Mills
+
+ include/ntp_config.h@1.32, 2005-02-16 00:37:12-05:00, stenn@whimsy.udel.edu +3 -1
+ Updates from Dave Mills
+
+ ntpd/ntp_config.c@1.120, 2005-02-16 00:37:19-05:00, stenn@whimsy.udel.edu +9 -0
+ Updates from Dave Mills
+
+ ntpd/ntp_proto.c@1.195, 2005-02-16 00:37:20-05:00, stenn@whimsy.udel.edu +64 -59
+ Updates from Dave Mills
+
+ ntpd/ntp_refclock.c@1.64, 2005-02-16 00:37:21-05:00, stenn@whimsy.udel.edu +2 -6
+ Updates from Dave Mills
+
+ ntpd/refclock_acts.c@1.21.1.1, 2005-02-16 00:37:21-05:00, stenn@whimsy.udel.edu +1 -1
+ Updates from Dave Mills
+
+ ntpd/refclock_arbiter.c@1.10, 2005-02-16 00:37:24-05:00, stenn@whimsy.udel.edu +35 -26
+ Updates from Dave Mills
+
+ ntpd/refclock_atom.c@1.52, 2005-02-16 00:37:21-05:00, stenn@whimsy.udel.edu +12 -23
+ Updates from Dave Mills
+
+ChangeSet@1.1251.1.84, 2005-02-15 22:56:40-05:00, mayer@tecotoo. +1 -0
+ Make MAXZEROREADS 1 so that the first zero-length read causes code to break and go to next socket
+
+ ntpd/ntp_io.c@1.168, 2005-02-15 22:54:30-05:00, mayer@tecotoo. +1 -1
+ Make MAXZEROREADS 1 so that the first zero-length read causes code to break and go to next socket
+
+ChangeSet@1.1251.12.1, 2005-02-15 19:40:54-05:00, mayer@tecotoo. +1 -0
+ Refix SMAX to 256 and fix &C0/1 comment - per Greg Dowd's messages
+
+ ntpd/refclock_acts.c@1.22, 2005-02-15 19:40:21-05:00, mayer@tecotoo. +2 -2
+ Refix SMAX to 256 and fix &C0/1 comment - per Greg Dowd's messages
+
+ChangeSet@1.1251.1.82, 2005-02-15 19:31:10-05:00, stenn@whimsy.udel.edu +3 -0
+ Updates from Dave Mills
+
+ html/confopt.html@1.29, 2005-02-15 19:30:57-05:00, stenn@whimsy.udel.edu +3 -2
+ Updates from Dave Mills
+
+ html/manyopt.html@1.10, 2005-02-15 19:30:55-05:00, stenn@whimsy.udel.edu +22 -17
+ Updates from Dave Mills
+
+ html/miscopt.html@1.30, 2005-02-15 19:30:56-05:00, stenn@whimsy.udel.edu +5 -8
+ Updates from Dave Mills
+
+ChangeSet@1.1251.1.81, 2005-02-15 18:09:42-05:00, mayer@pogo.udel.edu +1 -0
+ Added while look to read the clock until error or number of consecutive 0 len reads exceeds MAXZEROREADS
+
+ ntpd/ntp_io.c@1.167, 2005-02-15 18:09:22-05:00, mayer@pogo.udel.edu +76 -52
+ Added while look to read the clock until error or number of consecutive 0 len reads exceeds MAXZEROREADS
+
+ChangeSet@1.1251.1.80, 2005-02-15 00:18:50-05:00, mayer@tecotoo. +2 -0
+ Martin Burnicki's fixes to allow Windows to pass command line arguments to a system service
+
+ ntpd/ntpd.c@1.61.1.2, 2005-02-15 00:18:06-05:00, mayer@tecotoo. +3 -1
+ Martin Burnicki's fixes to allow Windows to pass command line arguments to a system service
+
+ ports/winnt/ntpd/ntservice.c@1.4, 2005-02-15 00:18:08-05:00, mayer@tecotoo. +21 -64
+ Martin Burnicki's fixes to allow Windows to pass command line arguments to a system service
+
+ChangeSet@1.1251.1.79, 2005-02-14 01:15:09-05:00, mayer@tecotoo. +1 -0
+ Bug #214: Return ISC_FALSE on not equal
+
+ ntpd/ntp_io.c@1.166, 2005-02-14 01:14:42-05:00, mayer@tecotoo. +2 -0
+ Bug #214: Return ISC_FALSE on not equal
+
+ChangeSet@1.1251.1.78, 2005-02-14 00:38:25-05:00, mayer@tecotoo. +2 -0
+ Bug #214: Use strcasecmp and not stricmp
+
+ ntpd/ntp_io.c@1.165, 2005-02-14 00:36:35-05:00, mayer@tecotoo. +1 -1
+ Bug #214: Use strcasecmp and not stricmp
+
+ ports/winnt/include/config.h@1.36, 2005-02-14 00:36:37-05:00, mayer@tecotoo. +1 -0
+ Bug #214: Use strcasecmp and not stricmp
+
+ChangeSet@1.1251.1.77, 2005-02-14 00:26:43-05:00, mayer@tecotoo. +2 -0
+ Bug #214: Allow option on command line to specify specific interface only to be used
+
+ ntpd/cmd_args.c@1.32, 2005-02-14 00:26:24-05:00, mayer@tecotoo. +6 -1
+ Bug #214: Allow option on command line to specify specific interface only to be used
+
+ ntpd/ntp_io.c@1.164, 2005-02-14 00:26:24-05:00, mayer@tecotoo. +22 -4
+ Bug #214: Allow option on command line to specify specific interface only to be used
+
+ChangeSet@1.1251.1.76, 2005-02-14 00:24:26-05:00, mayer@tecotoo. +1 -0
+ add stricmp to mapped functions for win32
+
+ ports/winnt/include/config.h@1.35, 2005-02-14 00:23:20-05:00, mayer@tecotoo. +1 -0
+ add stricmp to mapped functions
+
+ChangeSet@1.1251.1.75, 2005-02-13 00:53:55-05:00, mayer@tecotoo. +1 -0
+ Clean up code and reorganize input_handler()
+
+ ntpd/ntp_io.c@1.163, 2005-02-13 00:53:15-05:00, mayer@tecotoo. +224 -251
+ Clean up code and reorganize input_handler()
+
+ChangeSet@1.1251.1.74, 2005-02-12 13:29:10-05:00, mayer@pogo.udel.edu +1 -0
+ Change from &C1 to &C0 for the modem setup
+
+ ntpd/refclock_acts.c@1.21, 2005-02-12 13:28:52-05:00, mayer@pogo.udel.edu +2 -2
+ Change from &C1 to &C0 for the modem setup
+
+ChangeSet@1.1251.1.73, 2005-02-12 13:27:15-05:00, mayer@pogo.udel.edu +1 -0
+ Remove double loop and continue reading sockets rather than skipping out
+
+ ntpd/ntp_io.c@1.162, 2005-02-12 13:26:36-05:00, mayer@pogo.udel.edu +6 -4
+ Remove double loop and continue reading sockets rather than skipping out
+
+ChangeSet@1.1251.1.72, 2005-02-10 23:28:14-05:00, mayer@tecotoo. +1 -0
+ Group ID was being obtained incorrectly. See message from Martin Pitt - Debian development
+
+ ntpd/ntpd.c@1.61.1.1, 2005-02-10 23:27:54-05:00, mayer@tecotoo. +1 -1
+ Group ID was being obtained incorrectly. See message from Martin Pitt - Debian development
+
+ChangeSet@1.1251.1.71, 2005-02-10 23:26:16-05:00, mayer@tecotoo. +1 -0
+ Fix input_handler code to not select again until other I/O read and free buffer if nothing read. (see Bug #341 and messages from cipo)
+
+ ntpd/ntp_io.c@1.161, 2005-02-10 23:25:01-05:00, mayer@tecotoo. +6 -6
+ Fix input_handler code to not select again until other I/O read and free buffer if nothing read. (see Bug #341 and messages from cipo)
+
+ChangeSet@1.1251.1.70, 2005-02-09 00:59:19-05:00, stenn@whimsy.udel.edu +3 -0
+ Cleanup from Dave Mills
+
+ ntpd/ntp_config.c@1.119, 2005-02-09 00:59:00-05:00, stenn@whimsy.udel.edu +1 -1
+ Cleanup from Dave Mills
+
+ ntpd/ntp_proto.c@1.194, 2005-02-09 00:59:01-05:00, stenn@whimsy.udel.edu +1 -1
+ Cleanup from Dave Mills
+
+ ntpd/refclock_acts.c@1.20, 2005-02-09 00:59:02-05:00, stenn@whimsy.udel.edu +1 -1
+ Cleanup from Dave Mills
+
+ChangeSet@1.1268, 2005-02-06 01:41:55-05:00, stenn@pogo.udel.edu +1 -0
+ ntpdc lint
+
+ ntpdc/ntpdc.c@1.42, 2005-02-06 01:41:42-05:00, stenn@pogo.udel.edu +0 -8
+ lint
+
+ChangeSet@1.1267, 2005-02-06 01:31:47-05:00, stenn@pogo.udel.edu +1 -0
+ start hacking the ntpdc docs...
+
+ ntpdc/ntpdc-opts.def@1.2, 2005-02-06 01:31:39-05:00, stenn@pogo.udel.edu +2 -5
+ start hacking the ntpdc docs...
+
+ChangeSet@1.1266, 2005-02-06 01:22:40-05:00, stenn@pogo.udel.edu +5 -0
+ Convert ntpdc to autogen; some cleanup in ntpq
+
+ BitKeeper/etc/ignore@1.38, 2005-02-06 01:19:27-05:00, stenn@pogo.udel.edu +5 -0
+ added ntpdc-opts.c ntpdc-opts.h ntpdc-opts.menu ntpdc-opts.texi ntpdc.1
+
+ ntpdc/Makefile.am@1.24, 2005-02-06 01:21:32-05:00, stenn@pogo.udel.edu +20 -4
+ Convert ntpdc to autogen; some cleanup in ntpq
+
+ ntpdc/ntpdc-opts.def@1.1, 2005-02-06 01:20:12-05:00, stenn@pogo.udel.edu +178 -0
+
+ ntpdc/ntpdc-opts.def@1.0, 2005-02-06 01:20:12-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/ntpdc/ntpdc-opts.def
+
+ ntpdc/ntpdc.c@1.41, 2005-02-06 01:21:32-05:00, stenn@pogo.udel.edu +54 -0
+ Convert ntpdc to autogen; some cleanup in ntpq
+
+ ntpq/Makefile.am@1.17, 2005-02-06 01:21:36-05:00, stenn@pogo.udel.edu +1 -1
+ Convert ntpdc to autogen; some cleanup in ntpq
+
+ChangeSet@1.1251.1.69, 2005-02-05 22:47:46-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 388] Update URLs
+
+ html/drivers/driver43.html@1.9, 2005-02-05 22:47:32-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 388] Update URLs
+
+ChangeSet@1.1251.1.68, 2005-02-05 22:44:47-05:00, stenn@whimsy.udel.edu +1 -0
+ Poll updates from Dave Mills.
+
+ ntpd/ntp_proto.c@1.193, 2005-02-05 22:44:32-05:00, stenn@whimsy.udel.edu +11 -8
+ Poll updates from Dave Mills.
+
+ChangeSet@1.1251.1.67, 2005-02-03 01:18:23-05:00, stenn@whimsy.udel.edu +4 -0
+ ntp_config.h, ntp.h, ntp_proto.c, ntp_config.c:
+ Fixes from Dave Mills. In particular, Dave writes:
+
+ After discovering the situation reported on the newsgroup where
+ misconfigured NTP had the Netgear disease, I put it through some
+ wickedly broken configuration tests and found and fixed a few minor
+ things in ntp-dev (not anything like the PPS oscillator).
+
+ 1. If a notrust error and iburst are configured, the client did not back
+ off the poll interval. It now does that under all circumstances where
+ the reply is absent or corrupt.
+
+ 2. An unresponsive server with iburst got hammered with eight messages
+ every poll interval until the unreach counter reaches 12, then backs off
+ sending only a single packet per burst. I changed that to send a burst
+ only the first time after initial start or loss of reach.
+
+ 3. By popular demand I put in "tos maxdist N", where N is the selection
+ threshold, normally 1. Set N to 16 and the clock will be set upon first
+ receiving a response from any server. Y'know, like SNTP.
+
+ include/ntp.h@1.105, 2005-02-03 01:16:38-05:00, stenn@whimsy.udel.edu +2 -1
+ Fixes from Dave Mills
+
+ include/ntp_config.h@1.31, 2005-02-03 01:16:38-05:00, stenn@whimsy.udel.edu +1 -0
+ Fixes from Dave Mills
+
+ ntpd/ntp_config.c@1.118, 2005-02-03 01:16:26-05:00, stenn@whimsy.udel.edu +5 -0
+ Fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.192, 2005-02-03 01:16:28-05:00, stenn@whimsy.udel.edu +85 -67
+ Fixes from Dave Mills
+
+ChangeSet@1.1251.1.66, 2005-01-23 18:54:35-05:00, mayer@tecotoo. +1 -0
+ Need reference to address for scope
+
+ ntpd/ntp_io.c@1.160, 2005-01-23 18:54:04-05:00, mayer@tecotoo. +2 -2
+ Need reference to address for scope
+
+ChangeSet@1.1251.1.65, 2005-01-23 14:37:56-05:00, mayer@tecotoo. +1 -0
+ Wasn't setting scopeid for IPv6 addresses
+
+ ntpd/ntp_io.c@1.159, 2005-01-23 14:36:52-05:00, mayer@tecotoo. +7 -9
+ Wasn't setting scopeid for IPv6 addresses
+
+ChangeSet@1.1251.1.64, 2005-01-18 00:48:54-05:00, mayer@tecotoo. +2 -0
+ Fix missing parenthesis and remove duplicate CONFIG_CDELAY
+
+ include/ntp_config.h@1.30, 2005-01-18 00:47:56-05:00, mayer@tecotoo. +1 -2
+ Remove duplicate CONFIG_CDELAY
+
+ ports/winnt/include/isc/ipv6.h@1.6, 2005-01-18 00:47:10-05:00, mayer@tecotoo. +1 -1
+ Missing parenthesis in Macro
+
+ChangeSet@1.1251.11.1, 2005-01-16 19:29:57-05:00, mayer@tecotoo. +1 -0
+ Added debug code findinterface to see if the connect() fails
+
+ ntpd/ntp_io.c@1.158, 2005-01-16 19:28:39-05:00, mayer@tecotoo. +6 -0
+
+ChangeSet@1.1251.1.62, 2005-01-11 16:15:03-05:00, mayer@pogo.udel.edu +1 -0
+ Added isc/region.h
+
+ include/isc/Makefile.am@1.4, 2005-01-11 16:14:48-05:00, mayer@pogo.udel.edu +1 -0
+ Added isc/region.h
+
+ChangeSet@1.1251.1.61, 2005-01-11 16:02:59-05:00, mayer@pogo.udel.edu +1 -0
+ Added isc/buffer.h and isc/netscope.h
+
+ include/isc/Makefile.am@1.3, 2005-01-11 16:00:10-05:00, mayer@pogo.udel.edu +2 -0
+ Added isc/buffer.h and isc/netscope.h
+
+ChangeSet@1.1261, 2005-01-10 04:19:21-05:00, stenn@pogo.udel.edu +2 -0
+ fixes
+
+ m4/libopts.m4@1.3, 2005-01-10 04:18:45-05:00, stenn@pogo.udel.edu +2 -5
+ fix from bkorb
+
+ configure.ac@1.364, 2005-01-10 04:19:11-05:00, stenn@pogo.udel.edu +7 -0
+ disable shared libraries on OSF4.0
+
+ChangeSet@1.1260, 2005-01-09 06:23:02-05:00, stenn@pogo.udel.edu +27 -0
+ autogen-5.6.5
+
+ libopts/Makefile.am@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/autoopts.c@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +36 -20
+ autogen-5.6.5
+
+ libopts/autoopts.h@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/boolean.c@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/compat/compat.h@1.2, 2005-01-09 06:19:27-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/enumeration.c@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/environment.c@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/genshell.c@1.2, 2005-01-09 06:22:16-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/genshell.h@1.2, 2005-01-09 06:22:16-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ m4/libopts.m4@1.2, 2005-01-09 06:18:07-05:00, stenn@pogo.udel.edu +2 -29
+ autogen-5.6.5
+
+ libopts/libopts.m4@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +2 -29
+ autogen-5.6.5
+
+ libopts/load.c@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +2 -2
+ autogen-5.6.5
+
+ libopts/makeshell.c@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/numeric.c@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/options.h@1.2, 2005-01-09 06:22:17-05:00, stenn@pogo.udel.edu +3 -3
+ autogen-5.6.5
+
+ libopts/compat/pathfind.c@1.2, 2005-01-09 06:19:27-05:00, stenn@pogo.udel.edu +2 -2
+ autogen-5.6.5
+
+ libopts/pgusage.c@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/putshell.c@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/restore.c@1.2, 2005-01-09 06:18:14-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/save.c@1.2, 2005-01-09 06:18:15-05:00, stenn@pogo.udel.edu +4 -3
+ autogen-5.6.5
+
+ libopts/sort.c@1.2, 2005-01-09 06:18:15-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/stack.c@1.2, 2005-01-09 06:18:15-05:00, stenn@pogo.udel.edu +1 -7
+ autogen-5.6.5
+
+ libopts/streqv.h@1.2, 2005-01-09 06:18:15-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/streqvcmp.c@1.2, 2005-01-09 06:18:15-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/usage-txt.h@1.2, 2005-01-09 06:22:17-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/usage.c@1.2, 2005-01-09 06:18:15-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ libopts/version.c@1.2, 2005-01-09 06:18:15-05:00, stenn@pogo.udel.edu +1 -1
+ autogen-5.6.5
+
+ChangeSet@1.1251.7.31, 2005-01-09 02:05:42-05:00, stenn@whimsy.udel.edu +1 -0
+ Happy New Year
+
+ html/copyright.html@1.29, 2005-01-09 02:05:28-05:00, stenn@whimsy.udel.edu +2 -2
+ Happy New Year
+
+ChangeSet@1.1251.8.12, 2005-01-08 02:23:27-05:00, stenn@whimsy.udel.edu +1 -0
+ Show more stability data.
+
+ ntpd/ntp_util.c@1.35, 2005-01-08 02:23:13-05:00, stenn@whimsy.udel.edu +1 -1
+ Show more stability data.
+
+ChangeSet@1.1251.8.11, 2005-01-08 01:13:32-05:00, stenn@whimsy.udel.edu +1 -0
+ fencepost error
+
+ libntp/systime.c@1.32, 2005-01-08 01:13:15-05:00, stenn@whimsy.udel.edu +1 -1
+ fencepost error
+
+ChangeSet@1.1259, 2005-01-05 16:47:10-05:00, stenn@pogo.udel.edu +2 -0
+ cleanup
+
+ configure.ac@1.363, 2005-01-05 16:46:01-05:00, stenn@pogo.udel.edu +44 -33
+ Reorder AC_ARG_WITH to avoid an apparent quoting/redirect problem
+
+ ntpq/Makefile.am@1.16, 2005-01-05 16:45:18-05:00, stenn@pogo.udel.edu +1 -1
+ Library reorder
+
+ChangeSet@1.1251.8.10, 2005-01-05 01:16:04-05:00, stenn@whimsy.udel.edu +1 -0
+ Don't log 'refclockio structure not found'. From Dave Mills
+
+ ntpd/ntp_io.c@1.148.1.1, 2005-01-05 01:15:49-05:00, stenn@whimsy.udel.edu +0 -7
+ Don't log 'refclockio structure not found'. From Dave Mills
+
+ChangeSet@1.1251.1.58, 2005-01-05 00:12:51-05:00, mayer@tecotoo. +1 -0
+ Rename index to idx
+
+ ntpd/ntp_io.c@1.156, 2005-01-05 00:12:07-05:00, mayer@tecotoo. +4 -4
+ Rename index to idx
+
+ChangeSet@1.1251.1.57, 2005-01-04 21:38:58-05:00, mayer@tecotoo. +1 -0
+ Remove unnecessary includes
+
+ ntpd/ntp_io.c@1.155, 2005-01-04 21:36:25-05:00, mayer@tecotoo. +7 -17
+ Remove unnecessary includes
+
+ChangeSet@1.1251.1.56, 2005-01-02 21:13:48-05:00, mayer@tecotoo. +1 -0
+ Remove unnecessary include ntp_if.h
+
+ ntpd/ntp_io.c@1.154, 2005-01-02 21:13:21-05:00, mayer@tecotoo. +0 -1
+ Remove unnecessary include ntp_if.h
+
+ChangeSet@1.1251.1.55, 2005-01-02 18:28:21-05:00, mayer@tecotoo. +1 -0
+ remove include net/if.h. Some O/S's don't prevent double inclusions. It is already included in isc/net.h
+
+ libisc/interfaceiter.c@1.15, 2005-01-02 18:27:51-05:00, mayer@tecotoo. +0 -1
+ remove include net/if.h. Some O/S's don't prevent double inclusions. It is already included in isc/net.h
+
+ChangeSet@1.1251.1.54, 2005-01-01 22:14:34-05:00, mayer@tecotoo. +3 -0
+ Remove reference to interface index. Remove isc_log_write references
+
+ libisc/ifiter_getifaddrs.c@1.4, 2005-01-01 22:14:04-05:00, mayer@tecotoo. +0 -1
+ Remove reference to interface index. Remove isc_log_write references
+
+ libisc/ifiter_ioctl.c@1.21, 2005-01-01 22:14:04-05:00, mayer@tecotoo. +4 -20
+ Remove reference to interface index. Remove isc_log_write references
+
+ libisc/ifiter_sysctl.c@1.11, 2005-01-01 22:14:03-05:00, mayer@tecotoo. +0 -1
+ Remove reference to interface index. Remove isc_log_write references
+
+ChangeSet@1.1251.1.53, 2005-01-01 18:10:09-05:00, mayer@tecotoo. +1 -0
+ Updated msg macros
+
+ include/isc/msgs.h@1.3, 2005-01-01 18:09:48-05:00, mayer@tecotoo. +12 -10
+ Updated msg macros
+
+ChangeSet@1.1251.8.9, 2005-01-01 06:17:25-05:00, stenn@pogo.udel.edu +1 -0
+ Library reorder
+
+ ntpd/Makefile.am@1.41, 2005-01-01 06:17:15-05:00, stenn@pogo.udel.edu +1 -2
+ Library reorder
+
+ChangeSet@1.1251.10.2, 2005-01-01 00:49:42-05:00, mayer@pogo.udel.edu +1 -0
+ Use macros in buffer routines
+
+ include/isc/buffer.h@1.2, 2005-01-01 00:49:28-05:00, mayer@pogo.udel.edu +1 -1
+ Use macros in buffer routines
+
+ChangeSet@1.1251.10.1, 2005-01-01 00:48:50-05:00, mayer@pogo.udel.edu +4 -0
+ First upgrade of interfaceiter routines
+
+ libisc/ifiter_getifaddrs.c@1.1.1.1, 2005-01-01 00:48:14-05:00, mayer@pogo.udel.edu +15 -1
+ First upgrade of interfaceiter routines
+
+ libisc/ifiter_ioctl.c@1.18.1.1, 2005-01-01 00:48:13-05:00, mayer@pogo.udel.edu +393 -157
+ First upgrade of interfaceiter routines
+
+ libisc/ifiter_sysctl.c@1.8.1.1, 2005-01-01 00:48:13-05:00, mayer@pogo.udel.edu +24 -16
+ First upgrade of interfaceiter routines
+
+ libisc/interfaceiter.c@1.12.1.1, 2005-01-01 00:48:13-05:00, mayer@pogo.udel.edu +79 -73
+ First upgrade of interfaceiter routines
+
+ChangeSet@1.1251.9.1, 2004-12-30 22:52:08-05:00, mayer@tecotoo. +4 -0
+ First upgrade of interfaceiter routines
+
+ libisc/ifiter_getifaddrs.c@1.2, 2004-12-30 22:51:28-05:00, mayer@tecotoo. +15 -1
+ First upgrade of interfaceiter routines
+
+ libisc/ifiter_ioctl.c@1.19, 2004-12-30 22:51:27-05:00, mayer@tecotoo. +393 -157
+ First upgrade of interfaceiter routines
+
+ libisc/ifiter_sysctl.c@1.9, 2004-12-30 22:51:27-05:00, mayer@tecotoo. +24 -16
+ First upgrade of interfaceiter routines
+
+ libisc/interfaceiter.c@1.13, 2004-12-30 22:51:26-05:00, mayer@tecotoo. +79 -73
+ First upgrade of interfaceiter routines
+
+ChangeSet@1.1256, 2004-12-30 20:06:10-05:00, stenn@pogo.udel.edu +2 -0
+ Cleanup
+
+ Makefile.am@1.50, 2004-12-30 20:05:27-05:00, stenn@pogo.udel.edu +3 -3
+ Fix typos
+
+ ntpq/Makefile.am@1.15, 2004-12-30 20:05:57-05:00, stenn@pogo.udel.edu +1 -1
+ Missed AM_CPPFLAGS in the merge
+
+ChangeSet@1.1255, 2004-12-30 19:47:48-05:00, stenn@pogo.udel.edu +4 -0
+ cleanup
+
+ BitKeeper/deleted/.del-Makefile.in~783ae447256d94af@1.2, 2004-12-30 19:45:00-05:00, stenn@pogo.udel.edu +0 -0
+ Delete: libopts/Makefile.in
+
+ BitKeeper/etc/ignore@1.37, 2004-12-30 19:46:58-05:00, stenn@pogo.udel.edu +1 -0
+ added ntpq/ntpq.1
+
+ BitKeeper/etc/ignore@1.36, 2004-12-30 19:46:28-05:00, stenn@pogo.udel.edu +5 -0
+ added ltmain.sh ntpq/ntpq-opts.c ntpq/ntpq-opts.h ntpq/ntpq-opts.menu ntpq/ntpq-opts.texi
+
+ configure.ac@1.362, 2004-12-30 19:44:17-05:00, stenn@pogo.udel.edu +0 -1
+ Lint removal
+
+ ntpq/Makefile.am@1.14, 2004-12-30 19:44:01-05:00, stenn@pogo.udel.edu +0 -1
+ Cleanup
+
+ChangeSet@1.1253, 2004-12-30 17:53:32-05:00, stenn@pogo.udel.edu +39 -0
+ AutoOpts conversion - starting with ntpq
+
+ libopts/COPYING.lgpl@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +504 -0
+
+ libopts/COPYING.lgpl@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/COPYING.lgpl
+
+ libopts/COPYING.mbsd@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +26 -0
+
+ libopts/COPYING.mbsd@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/COPYING.mbsd
+
+ libopts/MakeDefs.inc@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +5 -0
+
+ libopts/MakeDefs.inc@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/MakeDefs.inc
+
+ libopts/Makefile.am@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +11 -0
+
+ libopts/Makefile.am@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/Makefile.am
+
+ libopts/Makefile.in@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +496 -0
+
+ libopts/Makefile.in@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/Makefile.in
+
+ libopts/README@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +89 -0
+
+ libopts/README@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/README
+
+ libopts/autoopts.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +1136 -0
+
+ libopts/autoopts.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/autoopts.c
+
+ libopts/autoopts.h@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +322 -0
+
+ libopts/autoopts.h@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/autoopts.h
+
+ libopts/boolean.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +104 -0
+
+ libopts/boolean.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/boolean.c
+
+ libopts/compat/compat.h@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +265 -0
+
+ libopts/compat/compat.h@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/compat/compat.h
+
+ libopts/enumeration.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +448 -0
+
+ libopts/enumeration.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/enumeration.c
+
+ libopts/environment.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +264 -0
+
+ libopts/environment.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/environment.c
+
+ libopts/genshell.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +295 -0
+
+ libopts/genshell.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/genshell.c
+
+ libopts/genshell.h@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +122 -0
+
+ libopts/genshell.h@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/genshell.h
+
+ libopts/libopts.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +25 -0
+
+ libopts/libopts.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts.c
+
+ m4/libopts.m4@1.1, 2004-12-30 17:51:53-05:00, stenn@pogo.udel.edu +395 -0
+
+ m4/libopts.m4@1.0, 2004-12-30 17:51:53-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/m4/libopts.m4
+
+ libopts/libopts.m4@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +395 -0
+
+ libopts/libopts.m4@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/libopts.m4
+
+ libopts/load.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +553 -0
+
+ libopts/load.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/load.c
+
+ libopts/makeshell.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +1096 -0
+
+ libopts/makeshell.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/makeshell.c
+
+ libopts/numeric.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +96 -0
+
+ libopts/numeric.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/numeric.c
+
+ libopts/options.h@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +436 -0
+
+ libopts/options.h@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/options.h
+
+ libopts/compat/pathfind.c@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +278 -0
+
+ libopts/compat/pathfind.c@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/compat/pathfind.c
+
+ libopts/pgusage.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +156 -0
+
+ libopts/pgusage.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/pgusage.c
+
+ libopts/putshell.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +326 -0
+
+ libopts/putshell.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/putshell.c
+
+ libopts/restore.c@1.1, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +173 -0
+
+ libopts/restore.c@1.0, 2004-12-30 17:52:50-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/restore.c
+
+ libopts/save.c@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +478 -0
+
+ libopts/save.c@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/save.c
+
+ libopts/sort.c@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +357 -0
+
+ libopts/sort.c@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/sort.c
+
+ libopts/stack.c@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +238 -0
+
+ libopts/stack.c@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/stack.c
+
+ libopts/streqv.h@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +115 -0
+
+ libopts/streqv.h@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/streqv.h
+
+ libopts/streqvcmp.c@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +196 -0
+
+ libopts/streqvcmp.c@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/streqvcmp.c
+
+ libopts/tokenize.c@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +313 -0
+
+ libopts/tokenize.c@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/tokenize.c
+
+ libopts/tokenize.h@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +40 -0
+
+ libopts/tokenize.h@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/tokenize.h
+
+ libopts/usage-txt.h@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +503 -0
+
+ libopts/usage-txt.h@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/usage-txt.h
+
+ libopts/usage.c@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +646 -0
+
+ libopts/usage.c@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/usage.c
+
+ libopts/version.c@1.1, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +176 -0
+
+ libopts/version.c@1.0, 2004-12-30 17:52:51-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/libopts/version.c
+
+ Makefile.am@1.49, 2004-12-30 17:50:45-05:00, stenn@pogo.udel.edu +8 -1
+ AutoOpts conversion
+
+ ntpq/Makefile.am@1.11.1.1, 2004-12-30 17:51:34-05:00, stenn@pogo.udel.edu +18 -4
+ AutoOpts conversion
+
+ ntpq/ntpq-opts.def@1.1, 2004-12-30 17:51:53-05:00, stenn@pogo.udel.edu +156 -0
+
+ ntpq/ntpq-opts.def@1.0, 2004-12-30 17:51:53-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev-ag/ntpq/ntpq-opts.def
+
+ ntpq/ntpq.c@1.49.1.1, 2004-12-30 17:51:34-05:00, stenn@pogo.udel.edu +48 -8
+ AutoOpts conversion
+
+ChangeSet@1.1251.8.8, 2004-12-28 00:46:27-05:00, stenn@whimsy.udel.edu +3 -0
+ cleanup from Dave Mills
+
+ ntpd/refclock_acts.c@1.19, 2004-12-28 00:41:00-05:00, stenn@whimsy.udel.edu +3 -1
+ file descriptor close cleanup from Dave Mills
+
+ ntpd/refclock_atom.c@1.51, 2004-12-28 00:45:10-05:00, stenn@whimsy.udel.edu +2 -2
+ corner case cleanup from Dave Mills
+
+ ntpd/refclock_wwv.c@1.53, 2004-12-28 00:42:08-05:00, stenn@whimsy.udel.edu +9 -25
+ wwv cleanup from Dave Mills
+
+ChangeSet@1.1251.8.7, 2004-12-27 06:15:13-05:00, stenn@whimsy.udel.edu +1 -0
+ Added ISC_PLATFORM_{NEEDPORTT,FIXIN6ISADDR} for Danny
+
+ configure.ac@1.359.1.7, 2004-12-27 06:15:00-05:00, stenn@whimsy.udel.edu +36 -2
+ Added ISC_PLATFORM_{NEEDPORTT,FIXIN6ISADDR} for Danny
+
+ChangeSet@1.1251.1.49, 2004-12-24 18:25:12-05:00, mayer@tecotoo. +2 -0
+ IPv6 changes
+
+ libisc/netaddr.c@1.2, 2004-12-24 18:25:00-05:00, mayer@tecotoo. +2 -0
+ IPv6 changes
+
+ libisc/sockaddr.c@1.2, 2004-12-24 18:25:01-05:00, mayer@tecotoo. +2 -0
+ IPv6 changes
+
+ChangeSet@1.1251.1.48, 2004-12-24 18:21:09-05:00, mayer@tecotoo. +1 -0
+ IPv6 changes
+
+ libisc/interfaceiter.c@1.12, 2004-12-24 18:20:51-05:00, mayer@tecotoo. +2 -0
+ IPv6 changes
+
+ChangeSet@1.1251.1.47, 2004-12-24 18:16:16-05:00, mayer@tecotoo. +1 -0
+ IPv6 changes again
+
+ include/isc/ipv6.h@1.6, 2004-12-24 18:15:54-05:00, mayer@tecotoo. +2 -2
+ IPv6 changes again
+
+ChangeSet@1.1251.1.46, 2004-12-24 18:10:50-05:00, mayer@tecotoo. +1 -0
+ IPv6 changes
+
+ include/isc/ipv6.h@1.5, 2004-12-24 18:10:22-05:00, mayer@tecotoo. +12 -12
+ IPv6 changes
+
+ChangeSet@1.1251.1.45, 2004-12-23 22:59:14-05:00, mayer@tecotoo. +1 -0
+ Alternate method of getting interface addresses
+
+ libisc/ifiter_getifaddrs.c@1.1, 2004-12-23 22:58:38-05:00, mayer@tecotoo. +178 -0
+ Alternate method of getting interface addresses
+
+ libisc/ifiter_getifaddrs.c@1.0, 2004-12-23 22:58:38-05:00, mayer@tecotoo. +0 -0
+ BitKeeper file H:/ntpbk/ntp-dev/libisc/ifiter_getifaddrs.c
+
+ChangeSet@1.1251.1.44, 2004-12-23 22:41:22-05:00, mayer@tecotoo. +4 -0
+ Added new files to build and moved some macros
+
+ include/ntp_machine.h@1.18, 2004-12-23 22:40:38-05:00, mayer@tecotoo. +0 -2
+ Moved function defines for Win32 from ntp_machine.h to winnt/config.h
+
+ libntp/Makefile.am@1.31, 2004-12-23 22:38:13-05:00, mayer@tecotoo. +2 -1
+ Added new files to build
+
+ ports/winnt/include/config.h@1.34, 2004-12-23 22:40:38-05:00, mayer@tecotoo. +8 -2
+ Moved function defines for Win32 from ntp_machine.h to winnt/config.h
+
+ ports/winnt/libntp/libntp.dsp@1.24, 2004-12-23 22:38:34-05:00, mayer@tecotoo. +20 -0
+ Added new files to build
+
+ChangeSet@1.1251.1.43, 2004-12-23 15:24:48-05:00, mayer@pogo.udel.edu +2 -0
+ Miscellaneous compiler errors from port of BIND 9 code
+
+ include/isc/net.h@1.6, 2004-12-23 15:23:28-05:00, mayer@pogo.udel.edu +2 -3
+ missing #endifs
+
+ libisc/net.c@1.5, 2004-12-23 15:24:12-05:00, mayer@pogo.udel.edu +4 -16
+ Don't use the catalog like BIND 9
+
+ChangeSet@1.1251.1.41, 2004-12-23 00:16:06-05:00, mayer@tecotoo. +14 -0
+ ports from BIND 9.3.0 and reintegrated into ntp libisc xode
+
+ include/isc/buffer.h@1.1, 2004-12-22 23:55:44-05:00, mayer@tecotoo. +800 -0
+ isc_buffer header file
+
+ include/isc/buffer.h@1.0, 2004-12-22 23:55:44-05:00, mayer@tecotoo. +0 -0
+ BitKeeper file H:/ntpbk/ntp-dev/include/isc/buffer.h
+
+ include/isc/net.h@1.5, 2004-12-23 00:15:11-05:00, mayer@tecotoo. +56 -10
+ ports from BIND 9.3.0 and reintegrated into ntp libisc code
+
+ include/isc/netaddr.h@1.4, 2004-12-23 00:15:11-05:00, mayer@tecotoo. +22 -12
+ ports from BIND 9.3.0 and reintegrated into ntp libisc code
+
+ include/isc/netscope.h@1.1, 2004-12-22 23:56:31-05:00, mayer@tecotoo. +40 -0
+ isc_netscope header file
+
+ include/isc/netscope.h@1.0, 2004-12-22 23:56:31-05:00, mayer@tecotoo. +0 -0
+ BitKeeper file H:/ntpbk/ntp-dev/include/isc/netscope.h
+
+ include/isc/region.h@1.1, 2004-12-22 23:57:06-05:00, mayer@tecotoo. +95 -0
+ isc_region header file
+
+ include/isc/region.h@1.0, 2004-12-22 23:57:06-05:00, mayer@tecotoo. +0 -0
+ BitKeeper file H:/ntpbk/ntp-dev/include/isc/region.h
+
+ include/isc/result.h@1.3, 2004-12-23 00:15:12-05:00, mayer@tecotoo. +14 -11
+ ports from BIND 9.3.0 and reintegrated into ntp libisc code
+
+ include/isc/sockaddr.h@1.3, 2004-12-23 00:15:12-05:00, mayer@tecotoo. +6 -0
+ ports from BIND 9.3.0 and reintegrated into ntp libisc code
+
+ libisc/net.c@1.4, 2004-12-23 00:15:13-05:00, mayer@tecotoo. +210 -10
+ ports from BIND 9.3.0 and reintegrated into ntp libisc code
+
+ libisc/netaddr.c@1.1, 2004-12-22 23:58:40-05:00, mayer@tecotoo. +357 -0
+ isc_netaddr functions
+
+ libisc/netaddr.c@1.0, 2004-12-22 23:58:40-05:00, mayer@tecotoo. +0 -0
+ BitKeeper file H:/ntpbk/ntp-dev/libisc/netaddr.c
+
+ libisc/netscope.c@1.1, 2004-12-22 23:59:18-05:00, mayer@tecotoo. +74 -0
+
+ libisc/netscope.c@1.0, 2004-12-22 23:59:18-05:00, mayer@tecotoo. +0 -0
+ BitKeeper file H:/ntpbk/ntp-dev/libisc/netscope.c
+
+ libisc/sockaddr.c@1.1, 2004-12-23 00:00:01-05:00, mayer@tecotoo. +474 -0
+ isc_sockaddr functions
+
+ libisc/sockaddr.c@1.0, 2004-12-23 00:00:01-05:00, mayer@tecotoo. +0 -0
+ BitKeeper file H:/ntpbk/ntp-dev/libisc/sockaddr.c
+
+ ports/winnt/include/isc/ipv6.h@1.5, 2004-12-23 00:15:13-05:00, mayer@tecotoo. +16 -12
+ ports from BIND 9.3.0 and reintegrated into ntp libisc code
+
+ ports/winnt/include/isc/net.h@1.5, 2004-12-23 00:15:14-05:00, mayer@tecotoo. +60 -12
+ ports from BIND 9.3.0 and reintegrated into ntp libisc code
+
+ ports/winnt/libisc/net.c@1.6, 2004-12-23 00:15:14-05:00, mayer@tecotoo. +206 -10
+ ports from BIND 9.3.0 and reintegrated into ntp libisc code
+
+ChangeSet@1.1251.8.6, 2004-12-22 00:35:41-05:00, stenn@whimsy.udel.edu +1 -0
+ unused variable cleanup
+
+ ntpd/cmd_args.c@1.31, 2004-12-22 00:35:24-05:00, stenn@whimsy.udel.edu +0 -1
+ unused variable cleanup
+
+ChangeSet@1.1251.8.5, 2004-12-20 21:34:16-05:00, stenn@whimsy.udel.edu +1 -0
+ wwv cleanup from Dave Mills
+
+ ntpd/refclock_wwv.c@1.52, 2004-12-20 21:34:03-05:00, stenn@whimsy.udel.edu +6 -5
+ wwv cleanup from Dave Mills
+
+ChangeSet@1.1251.8.4, 2004-12-20 21:01:08-05:00, stenn@whimsy.udel.edu +1 -0
+ If "prefer" is set, only huffpuff to the preferred peer. From Dave Mills.
+
+ ntpd/ntp_loopfilter.c@1.101, 2004-12-20 21:00:54-05:00, stenn@whimsy.udel.edu +5 -1
+ If "prefer" is set, only huffpuff to the preferred peer. From Dave Mills.
+
+ChangeSet@1.1251.8.3, 2004-12-20 20:54:34-05:00, stenn@whimsy.udel.edu +1 -0
+ Lose -m from ntpd.html
+
+ html/ntpd.html@1.35, 2004-12-20 20:54:24-05:00, stenn@whimsy.udel.edu +6 -6
+ Lose -m from ntpd.html
+
+ChangeSet@1.1251.8.2, 2004-12-20 20:41:57-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 374] Always declare atom_shutdown().
+
+ ntpd/refclock_atom.c@1.50, 2004-12-20 20:41:44-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 374] Always declare atom_shutdown().
+
+ChangeSet@1.1251.8.1, 2004-12-20 20:36:18-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 378]: Added macros for Danny
+
+ configure.ac@1.359.1.6, 2004-12-20 20:36:06-05:00, stenn@whimsy.udel.edu +84 -1
+ [Bug 378]: Added macros for Danny
+
+ChangeSet@1.1251.7.26, 2004-12-18 04:55:09+00:00, abe@pogo.udel.edu +3 -0
+
+
+ BitKeeper/etc/logging_ok@1.51, 2004-12-18 04:55:08+00:00, abe@pogo.udel.edu +1 -0
+ Logging to logging@openlogging.org accepted
+
+ html/drivers/driver40.html@1.12, 2004-12-18 04:43:20+00:00, abe@pogo.udel.edu +46 -4
+
+ ntpd/refclock_jjy.c@1.12, 2004-12-18 04:42:11+00:00, abe@pogo.udel.edu +275 -21
+
+ChangeSet@1.1251.7.25, 2004-12-17 04:49:29-05:00, stenn@whimsy.udel.edu +1 -0
+ atom cleanup from Dave Mills
+
+ ntpd/refclock_atom.c@1.49, 2004-12-17 04:49:09-05:00, stenn@whimsy.udel.edu +52 -18
+ atom cleanup from Dave Mills
+
+ChangeSet@1.1251.7.24, 2004-12-17 04:28:23-05:00, stenn@whimsy.udel.edu +2 -0
+ cleanup
+
+ ntpdc/ntpdc.c@1.40, 2004-12-17 04:28:05-05:00, stenn@whimsy.udel.edu +2 -2
+ cleanup
+
+ ntpq/ntpq.c@1.55, 2004-12-17 04:28:06-05:00, stenn@whimsy.udel.edu +2 -4
+ cleanup
+
+ChangeSet@1.1178.4.1, 2004-12-17 03:49:20-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 373] ntpq and ntpdv help menu improvement, from Charles Maier
+
+ ntpdc/ntpdc.c@1.33.1.1, 2004-12-17 03:48:58-05:00, stenn@whimsy.udel.edu +33 -37
+ [Bug 373] ntpq and ntpdv help menu improvement
+
+ ntpq/ntpq.c@1.48.1.1, 2004-12-17 03:48:58-05:00, stenn@whimsy.udel.edu +33 -33
+ [Bug 373] ntpq and ntpdv help menu improvement
+
+ChangeSet@1.1251.7.22, 2004-12-17 03:28:27-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 368] Use config.h for jitter.c
+
+ util/jitter.c@1.7, 2004-12-17 03:28:08-05:00, stenn@whimsy.udel.edu +4 -0
+ [Bug 368] Use config.h
+
+ChangeSet@1.1251.7.21, 2004-12-17 00:15:55-05:00, stenn@whimsy.udel.edu +1 -0
+ Lose -m
+
+ ntpd/cmd_args.c@1.30, 2004-12-17 00:15:38-05:00, stenn@whimsy.udel.edu +3 -11
+ Lose -m
+
+ChangeSet@1.1251.7.20, 2004-12-16 00:38:18-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 367]: Bump CONNECT to 20, fix typo accessing sys_phone[].
+
+ ntpd/refclock_acts.c@1.18, 2004-12-16 00:38:03-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 367]: Bump CONNECT to 20, fix typo accessing sys_phone[].
+
+ChangeSet@1.1251.7.19, 2004-12-14 00:09:04-05:00, stenn@whimsy.udel.edu +1 -0
+ netdb.h isnow handled by ntp_rcf2553.h
+
+ libntp/ntp_rfc2553.c@1.21, 2004-12-14 00:08:51-05:00, stenn@whimsy.udel.edu +0 -1
+ netdb.h isnow handled by ntp_rcf2553.h
+
+ChangeSet@1.1251.7.18, 2004-12-13 13:53:13-05:00, stenn@whimsy.udel.edu +1 -0
+ refclock_atom fixes.
+
+ ntpd/refclock_atom.c@1.48, 2004-12-13 13:53:10-05:00, stenn@whimsy.udel.edu +28 -25
+ Call atom_shutdown at shutdown time (Dave Mills).
+ Isolate HAVE_PPSAPI-specific code in atom_shutdown (Dave Mills).
+
+ [Bug 366] Fix uninitialized pointer (Dave Mills, Martin Burnicki).
+
+ChangeSet@1.1251.7.17, 2004-12-13 02:11:09-05:00, stenn@whimsy.udel.edu +1 -0
+ more wwv cleanup from Dave Mills.
+
+ ntpd/refclock_wwv.c@1.51, 2004-12-13 02:10:59-05:00, stenn@whimsy.udel.edu +11 -17
+ more wwv cleanup from Dave Mills.
+
+ChangeSet@1.1251.7.16, 2004-12-11 22:42:45-05:00, stenn@whimsy.udel.edu +2 -0
+ New pps features from Dave Mills.
+
+ html/drivers/driver22.html@1.16, 2004-12-11 22:42:41-05:00, stenn@whimsy.udel.edu +10 -7
+ documentation updates
+
+ ntpd/refclock_atom.c@1.47, 2004-12-11 22:42:41-05:00, stenn@whimsy.udel.edu +42 -35
+ flag2 controls the on-time edge (assert/clear).
+
+ flag3 enables or disables kernel PPS support.
+
+ ppsapi-timepps header cleanup.
+
+ChangeSet@1.1251.7.15, 2004-12-11 22:28:49-05:00, stenn@whimsy.udel.edu +6 -0
+ ppsapi header cleanup
+
+ ntpd/refclock_jupiter.c@1.19, 2004-12-11 22:28:43-05:00, stenn@whimsy.udel.edu +3 -1
+ ppsapi header cleanup
+
+ ntpd/refclock_mx4200.c@1.21, 2004-12-11 22:28:44-05:00, stenn@whimsy.udel.edu +3 -7
+ ppsapi header cleanup
+
+ ntpd/refclock_nmea.c@1.25, 2004-12-11 22:28:44-05:00, stenn@whimsy.udel.edu +1 -7
+ ppsapi header cleanup
+
+ ntpd/refclock_oncore.c@1.53, 2004-12-11 22:28:44-05:00, stenn@whimsy.udel.edu +3 -1
+ ppsapi header cleanup
+
+ ntpd/refclock_parse.c@1.28, 2004-12-11 22:28:44-05:00, stenn@whimsy.udel.edu +3 -1
+ ppsapi header cleanup
+
+ ntpd/refclock_ripencc.c@1.6, 2004-12-11 22:28:45-05:00, stenn@whimsy.udel.edu +3 -1
+ ppsapi header cleanup
+
+ChangeSet@1.1251.7.14, 2004-12-11 22:22:10-05:00, stenn@whimsy.udel.edu +2 -0
+ Lose the "pps" stuff from ntp.conf. From Dave Mills.
+
+ include/ntp_config.h@1.29, 2004-12-11 22:22:06-05:00, stenn@whimsy.udel.edu +1 -8
+ Lose the PPS config stuff.
+
+ ntpd/ntp_config.c@1.117, 2004-12-11 22:22:06-05:00, stenn@whimsy.udel.edu +0 -1
+ Lose the "pps" configuration stuff.
+
+ChangeSet@1.1251.7.13, 2004-12-10 23:33:03-05:00, stenn@whimsy.udel.edu +1 -0
+ More WWV cleanup from Dave Mills.
+
+ ntpd/refclock_wwv.c@1.50, 2004-12-10 23:32:59-05:00, stenn@whimsy.udel.edu +2 -2
+ More wwv cleanup from Dave Mills.
+
+ChangeSet@1.1251.7.12, 2004-12-10 18:03:43-05:00, stenn@whimsy.udel.edu +1 -0
+ refclock_wwv.c fixes from Dave Mills
+
+ ntpd/refclock_wwv.c@1.49, 2004-12-10 18:03:28-05:00, stenn@whimsy.udel.edu +85 -129
+ refclock_wwv.c fixes from Dave Mills
+
+ChangeSet@1.1251.7.11, 2004-12-10 18:00:32-05:00, stenn@whimsy.udel.edu +1 -0
+ FIXPOLL fix from Dave Mills
+
+ ntpd/ntp_proto.c@1.191, 2004-12-10 18:00:19-05:00, stenn@whimsy.udel.edu +4 -3
+ FIXPOLL fix from Dave Mills
+
+ChangeSet@1.1251.7.10, 2004-12-09 14:36:18-05:00, stenn@whimsy.udel.edu +1 -0
+ cleanup
+
+ configure.ac@1.359.1.5, 2004-12-09 14:35:49-05:00, stenn@whimsy.udel.edu +2 -2
+ cleanup
+
+ChangeSet@1.1251.7.9, 2004-12-08 22:09:06-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 368] net/if.h needs sys/socket.h
+
+ configure.ac@1.359.1.4, 2004-12-08 22:08:52-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 368] net/if.h needs sys/socket.h
+
+ChangeSet@1.1251.7.8, 2004-12-08 21:49:05-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 368]: Distribute jitter.h, provide missing stdlib.h, fix LDADD
+
+ util/Makefile.am@1.25, 2004-12-08 21:48:52-05:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 368]: Distribute jitter.h, provide missing stdlib.h, fix LDADD
+
+ util/jitter.c@1.6, 2004-12-08 21:48:52-05:00, stenn@whimsy.udel.edu +5 -4
+ [Bug 368]: Distribute jitter.h, provide missing stdlib.h, fix LDADD
+
+ChangeSet@1.1251.1.39, 2004-12-07 20:31:52-05:00, mayer@tecotoo. +1 -0
+ Renable wildcard for testing
+
+ ntpd/ntp_io.c@1.153, 2004-12-07 20:31:36-05:00, mayer@tecotoo. +2 -1
+ Renable wildcard for testing
+
+ChangeSet@1.1251.1.38, 2004-12-07 19:44:54-05:00, mayer@tecotoo. +1 -0
+ Add debugging detail for adding mcast group membership- error fix
+
+ ntpd/ntp_io.c@1.152, 2004-12-07 19:44:30-05:00, mayer@tecotoo. +0 -1
+ Add debugging detail for adding mcast group membership- error fix
+
+ChangeSet@1.1251.1.37, 2004-12-07 19:40:34-05:00, mayer@tecotoo. +1 -0
+ Add debugging detail for adding mcast group membership
+
+ ntpd/ntp_io.c@1.151, 2004-12-07 19:39:51-05:00, mayer@tecotoo. +11 -6
+ Add debugging detail for adding mcast group membership
+
+ChangeSet@1.1251.7.7, 2004-12-06 14:07:32-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 366] Distribute the ppsapi_timepps.h header
+
+ ntpd/Makefile.am@1.40, 2004-12-06 14:07:10-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 366] Distribute the ppsapi_timepps.h header
+
+ChangeSet@1.1251.7.6, 2004-12-06 03:51:05-05:00, stenn@whimsy.udel.edu +1 -0
+ timepps.h header cleanup
+
+ configure.ac@1.359.1.3, 2004-12-06 03:50:52-05:00, stenn@whimsy.udel.edu +1 -0
+ timepps.h header cleanup
+
+ChangeSet@1.1251.7.5, 2004-12-06 03:41:48-05:00, stenn@whimsy.udel.edu +6 -0
+ timepps.h header cleanup
+
+ configure.ac@1.359.1.2, 2004-12-06 03:41:00-05:00, stenn@whimsy.udel.edu +12 -6
+ timepps.h header cleanup
+
+ ntpd/ppsapi_timepps.h@1.1, 2004-12-06 03:40:00-05:00, stenn@whimsy.udel.edu +26 -0
+
+ ntpd/ppsapi_timepps.h@1.0, 2004-12-06 03:40:00-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/ntpd/ppsapi_timepps.h
+
+ ntpd/refclock_jupiter.c@1.18, 2004-12-06 03:41:00-05:00, stenn@whimsy.udel.edu +1 -9
+ timepps.h header cleanup
+
+ ntpd/refclock_oncore.c@1.52, 2004-12-06 03:41:00-05:00, stenn@whimsy.udel.edu +1 -30
+ timepps.h header cleanup
+
+ ntpd/refclock_parse.c@1.27, 2004-12-06 03:41:01-05:00, stenn@whimsy.udel.edu +1 -30
+ timepps.h header cleanup
+
+ ntpd/refclock_ripencc.c@1.5, 2004-12-06 03:41:01-05:00, stenn@whimsy.udel.edu +1 -7
+ timepps.h header cleanup
+
+ChangeSet@1.1251.7.4, 2004-12-05 23:38:24-05:00, stenn@whimsy.udel.edu +2 -0
+ WWV improvements from Dave Mills.
+
+ html/drivers/driver36.html@1.24, 2004-12-05 23:38:05-05:00, stenn@whimsy.udel.edu +80 -67
+ WWV improvements from Dave Mills.
+
+ ntpd/refclock_wwv.c@1.48, 2004-12-05 23:38:06-05:00, stenn@whimsy.udel.edu +155 -103
+ WWV improvements from Dave Mills.
+
+ChangeSet@1.1251.7.3, 2004-12-05 23:33:36-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 357] Fixed and additional improvements from Dave Mills
+
+ html/drivers/driver18.html@1.13, 2004-12-05 23:33:24-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 357] Fixed and additional improvements from Dave Mills
+
+ChangeSet@1.1251.7.2, 2004-12-05 21:12:40-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 357] Fixed and additional improvements from Dave Mills
+
+ html/miscopt.html@1.29, 2004-12-05 21:12:25-05:00, stenn@whimsy.udel.edu +3 -2
+ [Bug 357] Fixed and additional improvements from Dave Mills
+
+ChangeSet@1.1251.7.1, 2004-12-05 21:06:26-05:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 357] Fixed and additional improvements from Dave Mills
+
+ include/ntpd.h@1.73, 2004-12-05 21:05:57-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 357] Fixed and additional improvements from Dave Mills
+
+ ntpd/ntp_config.c@1.116, 2004-12-05 21:05:57-05:00, stenn@whimsy.udel.edu +7 -7
+ [Bug 357] Fixed and additional improvements from Dave Mills
+
+ ntpd/refclock_acts.c@1.17, 2004-12-05 21:05:57-05:00, stenn@whimsy.udel.edu +11 -9
+ [Bug 357] Fixed and additional improvements from Dave Mills
+
+ChangeSet@1.1251.1.36, 2004-12-03 22:36:37-05:00, mayer@tecotoo. +1 -0
+ Undefine UDP_WILDCARD_DELIVERY for testing
+
+ ntpd/ntp_io.c@1.150, 2004-12-03 22:36:23-05:00, mayer@tecotoo. +5 -5
+ Undefine UDP_WILDCARD_DELIVERY for testing
+
+ChangeSet@1.1251.1.35, 2004-12-03 22:29:34-05:00, mayer@tecotoo. +1 -0
+ Undefine UDP_WILDCARD_DELIVERY for testing
+
+ ntpd/ntp_io.c@1.149, 2004-12-03 22:29:08-05:00, mayer@tecotoo. +5 -0
+ Undefine UDP_WILDCARD_DELIVERY for testing
+
+ChangeSet@1.1251.1.34, 2004-12-02 20:58:35-05:00, mayer@tecotoo. +1 -0
+ Add info on cast_flags in newpeer
+
+ ntpd/ntp_peer.c@1.67, 2004-12-02 20:58:08-05:00, mayer@tecotoo. +5 -0
+ Add info on cast_flags in newpeer
+
+ChangeSet@1.1251.1.33, 2004-11-30 05:20:17-05:00, stenn@pogo.udel.edu +16 -0
+ netdb.h cleanup
+
+ include/ntp_fp.h@1.12, 2004-11-30 05:18:39-05:00, stenn@pogo.udel.edu +1 -0
+ netdb.h cleanup
+
+ include/ntp_rfc2553.h@1.27, 2004-11-30 05:18:39-05:00, stenn@pogo.udel.edu +2 -0
+ netdb.h cleanup
+
+ libntp/decodenetnum.c@1.6, 2004-11-30 05:18:43-05:00, stenn@pogo.udel.edu +0 -1
+ netdb.h cleanup
+
+ libntp/numtohost.c@1.3, 2004-11-30 05:18:44-05:00, stenn@pogo.udel.edu +0 -1
+ netdb.h cleanup
+
+ libntp/socktoa.c@1.8, 2004-11-30 05:18:44-05:00, stenn@pogo.udel.edu +0 -1
+ netdb.h cleanup
+
+ libntp/socktohost.c@1.5, 2004-11-30 05:18:44-05:00, stenn@pogo.udel.edu +0 -1
+ netdb.h cleanup
+
+ ntpd/ntp_config.c@1.115, 2004-11-30 05:18:46-05:00, stenn@pogo.udel.edu +0 -2
+ netdb.h cleanup
+
+ ntpd/ntp_intres.c@1.39, 2004-11-30 05:18:46-05:00, stenn@pogo.udel.edu +0 -2
+ netdb.h cleanup
+
+ ntpd/ntp_resolver.c@1.18, 2004-11-30 05:18:47-05:00, stenn@pogo.udel.edu +0 -1
+ netdb.h cleanup
+
+ ntpd/refclock_nmea.c@1.24, 2004-11-30 05:18:49-05:00, stenn@pogo.udel.edu +0 -2
+ netdb.h cleanup
+
+ ntpdate/ntpdate.c@1.50, 2004-11-30 05:18:50-05:00, stenn@pogo.udel.edu +0 -1
+ netdb.h cleanup
+
+ ntpdate/ntptimeset.c@1.12, 2004-11-30 05:18:50-05:00, stenn@pogo.udel.edu +0 -1
+ netdb.h cleanup
+
+ ntpdc/ntpdc.c@1.38, 2004-11-30 05:18:50-05:00, stenn@pogo.udel.edu +0 -1
+ netdb.h cleanup
+
+ ntpdc/ntpdc_ops.c@1.38, 2004-11-30 05:18:53-05:00, stenn@pogo.udel.edu +0 -1
+ netdb.h cleanup
+
+ ntpq/ntpq_ops.c@1.20.1.2, 2004-11-30 05:18:54-05:00, stenn@pogo.udel.edu +0 -1
+ netdb.h cleanup
+
+ ntpq/ntpq.c@1.53, 2004-11-30 05:18:54-05:00, stenn@pogo.udel.edu +0 -1
+ netdb.h cleanup
+
+ChangeSet@1.1251.6.1, 2004-11-29 22:45:56-05:00, stenn@pogo.udel.edu +1 -0
+ findinterface() and findbcastinterf() should ignore wildcard sockets. From Danny Mayer.
+
+ ntpd/ntp_io.c@1.148, 2004-11-29 22:45:45-05:00, stenn@pogo.udel.edu +2 -2
+ findinterface() and findbcastinterf() should ignore wildcard sockets. From Danny Mayer.
+
+ChangeSet@1.1251.5.1, 2004-11-29 22:27:18-05:00, mayer@tecotoo. +1 -0
+ Fix winioctl warning messages
+
+ ports/winnt/ntpd/hopf_PCI_io.c@1.6, 2004-11-29 22:26:45-05:00, mayer@tecotoo. +5 -4
+ Fix winioctl warning messages
+
+ChangeSet@1.1251.1.30, 2004-11-29 01:09:27-05:00, stenn@whimsy.udel.edu +9 -0
+ FIXPOLL changes and cleanup from Dave Mills
+
+ include/ntp.h@1.104, 2004-11-29 01:06:29-05:00, stenn@whimsy.udel.edu +1 -0
+ FIXPOLL changes and cleanup from Dave Mills
+
+ ntpd/ntp_peer.c@1.66, 2004-11-29 01:06:45-05:00, stenn@whimsy.udel.edu +1 -2
+ FIXPOLL changes and cleanup from Dave Mills
+
+ ntpd/ntp_proto.c@1.190, 2004-11-29 01:06:45-05:00, stenn@whimsy.udel.edu +2 -6
+ FIXPOLL changes and cleanup from Dave Mills
+
+ ntpd/ntp_refclock.c@1.63, 2004-11-29 01:06:45-05:00, stenn@whimsy.udel.edu +1 -1
+ FIXPOLL changes and cleanup from Dave Mills
+
+ ntpd/refclock_acts.c@1.16, 2004-11-29 01:06:46-05:00, stenn@whimsy.udel.edu +1 -0
+ FIXPOLL changes and cleanup from Dave Mills
+
+ ntpd/refclock_arbiter.c@1.9, 2004-11-29 01:06:46-05:00, stenn@whimsy.udel.edu +48 -33
+ FIXPOLL changes and cleanup from Dave Mills
+
+ ntpd/refclock_atom.c@1.46, 2004-11-29 01:06:47-05:00, stenn@whimsy.udel.edu +36 -58
+ FIXPOLL changes and cleanup from Dave Mills
+
+ ntpd/refclock_wwv.c@1.47, 2004-11-29 01:06:50-05:00, stenn@whimsy.udel.edu +145 -139
+ FIXPOLL changes and cleanup from Dave Mills
+
+ ntpd/refclock_wwvb.c@1.14, 2004-11-29 01:06:50-05:00, stenn@whimsy.udel.edu +50 -28
+ FIXPOLL changes and cleanup from Dave Mills
+
+ChangeSet@1.1251.1.29, 2004-11-29 00:45:58-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 363] ntpdate: use -1 to represent an invalid fd (from Rainer Weikusat)
+
+ ntpdate/ntpdate.c@1.49, 2004-11-29 00:45:43-05:00, stenn@whimsy.udel.edu +2 -2
+ [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 +1 -0
+ [Bug 363] ntpdate: use -1 to represent an invalid fd.
+ Fix from Rainer Weikusat.
+
+ ntpdate/ntpdate.c@1.48, 2004-11-28 03:34:45-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 363] ntpdate: use -1 to represent an invalid fd
+ Fix from Rainer Weikusat.
+
+ChangeSet@1.1251.1.27, 2004-11-21 21:33:09-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 349] Patches from Takao Abe
+
+ html/drivers/driver40.html@1.11, 2004-11-21 21:32:56-05:00, stenn@whimsy.udel.edu +6 -4
+ [Bug 349] Patches from Takao Abe
+
+ ntpd/refclock_jjy.c@1.11, 2004-11-21 21:32:56-05:00, stenn@whimsy.udel.edu +57 -15
+ [Bug 349] Patches from Takao Abe
+
+ChangeSet@1.1251.1.26, 2004-11-21 05:31:43-05:00, stenn@pogo.udel.edu +1 -0
+ lint
+
+ ntpd/refclock_parse.c@1.26, 2004-11-21 05:31:32-05:00, stenn@pogo.udel.edu +2 -2
+ lint
+
+ChangeSet@1.1251.1.25, 2004-11-21 05:23:35-05:00, stenn@whimsy.udel.edu +2 -0
+ Stuff from Dave Mills
+
+ libntp/icom.c@1.9, 2004-11-21 05:07:05-05:00, stenn@whimsy.udel.edu +1 -0
+ cleanup
+
+ ntpd/refclock_wwv.c@1.46, 2004-11-21 05:10:47-05:00, stenn@whimsy.udel.edu +159 -148
+ Fixes from Dave Mills
+
+ ntpd/refclock_wwv.c@1.45, 2004-11-20 02:38:44-05:00, stenn@whimsy.udel.edu +90 -93
+ lint
+
+ChangeSet@1.1251.1.24, 2004-11-21 04:26:47-05:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 359] Fix qsort first-arg casting
+
+ ntpd/ntp_refclock.c@1.62, 2004-11-20 02:38:41-05:00, stenn@whimsy.udel.edu +7 -2
+ [Bug 359] Fix qsort first-arg casting
+
+ ntpd/refclock_msfees.c@1.11, 2004-11-20 02:38:43-05:00, stenn@whimsy.udel.edu +7 -1
+ [Bug 359] Fix qsort first-arg casting
+
+ util/hist.c@1.6, 2004-11-21 04:26:44-05:00, stenn@whimsy.udel.edu +7 -1
+ [Bug 359] Fix qsort first-arg casting
+
+ChangeSet@1.1251.1.23, 2004-11-21 03:55:29-05:00, stenn@whimsy.udel.edu +1 -0
+ Lint.
+
+ ntpd/refclock_mx4200.c@1.20, 2004-11-20 02:38:35-05:00, stenn@whimsy.udel.edu +3 -3
+ lint
+
+ChangeSet@1.1251.1.22, 2004-11-19 21:44:19-05:00, stenn@www.ntp.org +2 -0
+ qsort cast cleanup
+
+ ntpdc/ntpdc.c@1.37, 2004-11-19 21:44:09-05:00, stenn@www.ntp.org +4 -6
+ qsort cast cleanup
+
+ ntpq/ntpq.c@1.52, 2004-11-19 21:44:09-05:00, stenn@www.ntp.org +4 -6
+ qsort cast cleanup
+
+ChangeSet@1.1251.1.21, 2004-11-19 04:21:49-05:00, stenn@whimsy.udel.edu +1 -0
+ refclock_parse.c needs ntp_string.h now.
+
+ ntpd/refclock_parse.c@1.25, 2004-11-19 04:21:31-05:00, stenn@whimsy.udel.edu +1 -0
+ refclock_parse.c needs ntp_string.h now.
+
+ChangeSet@1.1251.4.1, 2004-11-19 03:04:35-05:00, stenn@whimsy.udel.edu +46 -0
+ [Bug 341] Patches from Frank Kardel
+
+ html/build/hints/parse@1.4, 2004-11-19 03:02:44-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 341] Patches from Frank Kardel
+
+ html/drivers/driver8.html@1.15, 2004-11-19 03:02:48-05:00, stenn@whimsy.udel.edu +306 -133
+ [Bug 341] Patches from Frank Kardel
+
+ html/parsenew.html@1.9, 2004-11-19 03:02:42-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 341] Patches from Frank Kardel
+
+ include/ascii.h@1.3, 2004-11-19 03:02:53-05:00, stenn@whimsy.udel.edu +34 -2
+ [Bug 341] Patches from Frank Kardel
+
+ include/binio.h@1.3, 2004-11-19 03:02:54-05:00, stenn@whimsy.udel.edu +34 -2
+ [Bug 341] Patches from Frank Kardel
+
+ include/ieee754io.h@1.3, 2004-11-19 03:02:54-05:00, stenn@whimsy.udel.edu +34 -2
+ [Bug 341] Patches from Frank Kardel
+
+ include/mbg_gps166.h@1.3, 2004-11-19 03:02:54-05:00, stenn@whimsy.udel.edu +33 -3
+ [Bug 341] Patches from Frank Kardel
+
+ include/parse.h@1.5, 2004-11-19 03:02:56-05:00, stenn@whimsy.udel.edu +34 -11
+ [Bug 341] Patches from Frank Kardel
+
+ include/parse_conf.h@1.3, 2004-11-19 03:02:57-05:00, stenn@whimsy.udel.edu +29 -9
+ [Bug 341] Patches from Frank Kardel
+
+ include/trimble.h@1.3, 2004-11-19 03:02:57-05:00, stenn@whimsy.udel.edu +34 -2
+ [Bug 341] Patches from Frank Kardel
+
+ kernel/chuinit.c@1.3, 2004-11-19 03:02:59-05:00, stenn@whimsy.udel.edu +0 -2
+ [Bug 341] Patches from Frank Kardel
+
+ kernel/clkinit.c@1.3, 2004-11-19 03:03:00-05:00, stenn@whimsy.udel.edu +0 -2
+ [Bug 341] Patches from Frank Kardel
+
+ kernel/sys/parsestreams.h@1.5, 2004-11-19 03:03:00-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 341] Patches from Frank Kardel
+
+ libntp/buftvtots.c@1.4, 2004-11-19 03:03:02-05:00, stenn@whimsy.udel.edu +12 -83
+ [Bug 341] Patches from Frank Kardel
+
+ libntp/mktime.c@1.8, 2004-11-19 03:03:05-05:00, stenn@whimsy.udel.edu +0 -1
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/README@1.3, 2004-11-19 03:03:08-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 341] Patches from Frank Kardel
+
+ libntp/binio.c@1.4, 2004-11-19 03:03:02-05:00, stenn@whimsy.udel.edu +29 -2
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/clk_computime.c@1.7, 2004-11-19 03:03:08-05:00, stenn@whimsy.udel.edu +32 -9
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/clk_dcf7000.c@1.7, 2004-11-19 03:03:08-05:00, stenn@whimsy.udel.edu +31 -8
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/clk_hopf6021.c@1.7, 2004-11-19 03:03:08-05:00, stenn@whimsy.udel.edu +5 -2
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/clk_meinberg.c@1.7, 2004-11-19 03:03:08-05:00, stenn@whimsy.udel.edu +31 -8
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/clk_rawdcf.c@1.9, 2004-11-19 03:03:08-05:00, stenn@whimsy.udel.edu +31 -8
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/clk_rcc8000.c@1.7, 2004-11-19 03:03:09-05:00, stenn@whimsy.udel.edu +5 -2
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/clk_schmid.c@1.7, 2004-11-19 03:03:09-05:00, stenn@whimsy.udel.edu +32 -8
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/clk_trimtaip.c@1.7, 2004-11-19 03:03:09-05:00, stenn@whimsy.udel.edu +33 -2
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/clk_trimtsip.c@1.7, 2004-11-19 03:03:09-05:00, stenn@whimsy.udel.edu +35 -3
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/clk_varitext.c@1.6, 2004-11-19 03:03:10-05:00, stenn@whimsy.udel.edu +40 -8
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/clk_wharton.c@1.5, 2004-11-19 03:03:10-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/data_mbg.c@1.4, 2004-11-19 03:03:10-05:00, stenn@whimsy.udel.edu +32 -2
+ [Bug 341] Patches from Frank Kardel
+
+ libntp/gpstolfp.c@1.6, 2004-11-19 03:03:04-05:00, stenn@whimsy.udel.edu +34 -2
+ [Bug 341] Patches from Frank Kardel
+
+ libntp/ieee754io.c@1.6, 2004-11-19 03:03:04-05:00, stenn@whimsy.udel.edu +34 -2
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/info_trimble.c@1.3, 2004-11-19 03:03:10-05:00, stenn@whimsy.udel.edu +0 -2
+ [Bug 341] Patches from Frank Kardel
+
+ libntp/mfp_mul.c@1.4, 2004-11-19 03:03:05-05:00, stenn@whimsy.udel.edu +34 -2
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/parse.c@1.9, 2004-11-19 03:03:10-05:00, stenn@whimsy.udel.edu +35 -9
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/parse_conf.c@1.8, 2004-11-19 03:03:10-05:00, stenn@whimsy.udel.edu +31 -8
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/parsesolaris.c@1.5, 2004-11-19 03:03:10-05:00, stenn@whimsy.udel.edu +36 -12
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/parsestreams.c@1.5, 2004-11-19 03:03:11-05:00, stenn@whimsy.udel.edu +37 -11
+ [Bug 341] Patches from Frank Kardel
+
+ libparse/trim_info.c@1.3, 2004-11-19 03:03:11-05:00, stenn@whimsy.udel.edu +33 -2
+ [Bug 341] Patches from Frank Kardel
+
+ ntpd/ntp_config.c@1.114, 2004-11-19 03:03:11-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 341] Patches from Frank Kardel
+
+ ntpd/ntp_refclock.c@1.61, 2004-11-19 03:03:13-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 341] Patches from Frank Kardel
+
+ ntpd/refclock_atom.c@1.45, 2004-11-19 03:03:14-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 341] Patches from Frank Kardel
+
+ ntpd/refclock_parse.c@1.24, 2004-11-19 03:03:16-05:00, stenn@whimsy.udel.edu +513 -121
+ [Bug 341] Patches from Frank Kardel
+
+ parseutil/dcfd.c@1.14, 2004-11-19 03:03:18-05:00, stenn@whimsy.udel.edu +37 -11
+ [Bug 341] Patches from Frank Kardel
+
+ parseutil/testdcf.c@1.5, 2004-11-19 03:03:18-05:00, stenn@whimsy.udel.edu +38 -11
+ [Bug 341] Patches from Frank Kardel
+
+ scripts/monitoring/lr.pl@1.4, 2004-11-19 03:03:25-05:00, stenn@whimsy.udel.edu +12 -12
+ [Bug 341] Patches from Frank Kardel
+
+ scripts/monitoring/ntploopwatch@1.3, 2004-11-19 03:03:25-05:00, stenn@whimsy.udel.edu +31 -31
+ [Bug 341] Patches from Frank Kardel
+
+ChangeSet@1.1251.1.19, 2004-11-18 23:20:44-05:00, mayer@tecotoo. +4 -0
+ Miscellaneous Win32 fixes
+
+ ntpdc/ntpdc.c@1.36, 2004-11-18 23:15:41-05:00, mayer@tecotoo. +4 -1
+ Win32 uses a slightly different prototype for qsort
+
+ ntpq/ntpq.c@1.51, 2004-11-18 23:15:40-05:00, mayer@tecotoo. +4 -1
+ Win32 uses a slightly different prototype for qsort
+
+ ports/winnt/include/config.h@1.33, 2004-11-18 23:13:26-05:00, mayer@tecotoo. +12 -18
+ Code cleanup - eliminate duplicate entries
+
+ ports/winnt/ntpd/ntservice.c@1.3, 2004-11-18 23:14:20-05:00, mayer@tecotoo. +3 -3
+ Use main instead of ntpmain for entry
+
+ChangeSet@1.1251.3.3, 2004-11-16 22:16:52-05:00, mayer@tecotoo. +1 -0
+ Recommit fix
+
+ ntpd/cmd_args.c@1.28, 2004-11-16 22:16:34-05:00, mayer@tecotoo. +1 -1
+ Recommit fix
+
+ ntpd/cmd_args.c@1.27, 2004-11-16 00:16:58-05:00, mayer@tecotoo. +0 -1
+ Remove obsolete windows specific code
+
+ChangeSet@1.1251.3.2, 2004-11-16 00:13:54-05:00, mayer@tecotoo. +1 -0
+ cmd_args.c, cmd_Args.c:
+ Remove obsolete windows specific code
+
+ ntpd/cmd_args.c@1.26, 2004-11-06 21:38:12-05:00, mayer@tecotoo. +0 -0
+ Remove obsolete windows specific code
+
+ ntpd/cmd_Args.c@1.25, 2004-11-06 21:36:28-05:00, mayer@tecotoo. +0 -0
+ Remove obsolete windows specific code
+
+ ntpd/cmd_args.c@1.24, 2004-11-06 21:34:23-05:00, mayer@tecotoo. +0 -7
+ Remove obsolete windows specific code
+
+ChangeSet@1.1251.1.17, 2004-11-15 23:32:18-05:00, mayer@pogo.udel.edu +1 -0
+ John Hays burst mode fix for multicast
+
+ ntpd/ntp_proto.c@1.187.1.1, 2004-11-15 23:32:00-05:00, mayer@pogo.udel.edu +2 -0
+ John Hays burst mode fix for multicast
+
+ChangeSet@1.1251.3.1, 2004-11-15 23:24:51-05:00, mayer@tecotoo. +1 -0
+ John Hays burst mode fix for multicast
+
+ ntpd/ntp_proto.c@1.188, 2004-11-15 23:24:20-05:00, mayer@tecotoo. +2 -0
+ John Hays burst mode fix for multicast
+
+ChangeSet@1.1251.1.16, 2004-11-15 23:14:53-05:00, mayer@pogo.udel.edu +1 -0
+ Force the update. Refuses on Windows. Remove NoWinService code
+
+ ntpd/cmd_args.c@1.23.1.1, 2004-11-15 23:14:24-05:00, mayer@pogo.udel.edu +0 -8
+ Force the update. Refuses on Windows. Remove NoWinService code
+
+ChangeSet@1.1251.1.15, 2004-11-15 20:45:45-05:00, mayer@tecotoo. +1 -0
+ findbcastinter should be using INT_BCASTOPEN flag
+
+ ntpd/ntp_io.c@1.147, 2004-11-15 20:45:12-05:00, mayer@tecotoo. +2 -2
+ findbcastinter should be using INT_BCASTOPEN flag
+
+ChangeSet@1.1251.1.14, 2004-11-14 22:42:23-05:00, mayer@tecotoo. +2 -0
+ Added debugging code to track multicast issues
+
+ ntpd/ntp_io.c@1.146, 2004-11-14 22:41:46-05:00, mayer@tecotoo. +15 -1
+ Added debugging code to track multicast issues
+
+ ntpd/ntp_peer.c@1.65, 2004-11-14 22:41:48-05:00, mayer@tecotoo. +6 -0
+ Added debugging code to track multicast issues
+
+ChangeSet@1.1251.1.13, 2004-11-12 20:39:57-05:00, mayer@tecotoo. +1 -0
+ Add debugging information
+
+ ntpd/ntp_proto.c@1.187, 2004-11-12 20:39:35-05:00, mayer@tecotoo. +3 -0
+ Add debugging information
+
+ChangeSet@1.1251.1.12, 2004-11-12 20:39:10-05:00, mayer@tecotoo. +1 -0
+ Only enable broadcast for servers
+
+ ntpd/ntp_peer.c@1.64, 2004-11-12 20:38:48-05:00, mayer@tecotoo. +1 -1
+ Only enable broadcast for servers
+
+ChangeSet@1.1251.1.11, 2004-11-12 20:34:52-05:00, mayer@tecotoo. +1 -0
+ Need both windows.h and winsock2.h for VC 6.0
+
+ ports/winnt/include/config.h@1.32, 2004-11-12 20:34:18-05:00, mayer@tecotoo. +1 -1
+ Need both windows.h and winsock2.h for VC 6.0
+
+ChangeSet@1.1251.2.2, 2004-11-09 22:05:28-05:00, mayer@tecotoo. +3 -0
+ Move code to windows specific files
+
+ ntpd/ntpd.c@1.59.1.1, 2004-11-09 22:02:06-05:00, mayer@tecotoo. +3 -56
+ Remove Windows code from ntpd.c into nt_clockstuff.c
+
+ ports/winnt/ntpd/nt_clockstuff.c@1.16, 2004-11-09 22:02:16-05:00, mayer@tecotoo. +15 -0
+ Remove Windows code from ntpd.c into nt_clockstuff.c
+
+ ports/winnt/ntpd/ntpd.dsp@1.25, 2004-11-09 22:01:05-05:00, mayer@tecotoo. +0 -5
+ Remove ntp_iopackets.c from compile list. Not ready
+
+ChangeSet@1.1251.1.9, 2004-11-09 04:38:42-05:00, stenn@whimsy.udel.edu +1 -0
+ re-enable the first call to getstartup()
+
+ ntpd/ntpd.c@1.60, 2004-11-09 04:38:29-05:00, stenn@whimsy.udel.edu +1 -1
+ re-enable the first call to getstartup()
+
+ChangeSet@1.1250.1.4, 2004-11-08 23:08:38-05:00, mayer@tecotoo. +3 -0
+ Fixes forInclude paths and extraneous windows code
+
+ ports/winnt/ntp-keygen/ntpkeygen.dsp@1.8, 2004-11-08 23:07:36-05:00, mayer@tecotoo. +1 -1
+ Fix include paths
+
+ ports/winnt/ntpdate/ntpdate.dsp@1.14, 2004-11-08 23:07:36-05:00, mayer@tecotoo. +2 -2
+ Fix include paths
+
+ ports/winnt/ntpq/ntpq.dsp@1.17, 2004-11-08 23:07:37-05:00, mayer@tecotoo. +1 -1
+ Fix include paths
+
+ChangeSet@1.1251.1.7, 2004-11-08 01:02:59-05:00, stenn@pogo.udel.edu +3 -0
+ [sntp] Lint removal
+
+ sntp/internet.c@1.4, 2004-11-08 01:02:36-05:00, stenn@pogo.udel.edu +10 -22
+ Lint removal
+
+ sntp/internet.h@1.3, 2004-11-08 01:02:36-05:00, stenn@pogo.udel.edu +2 -2
+ Lint removal
+
+ sntp/socket.c@1.5, 2004-11-08 01:02:36-05:00, stenn@pogo.udel.edu +4 -8
+ Lint removal
+
+ChangeSet@1.1251.1.5, 2004-11-07 17:14:12-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 344] Handle some corner cases better
+
+ bincheck.mf@1.2, 2004-11-07 17:14:00-05:00, stenn@whimsy.udel.edu +3 -2
+ [Bug 344] Handle some corner cases better
+
+ChangeSet@1.1251.1.4, 2004-11-07 04:13:44-05:00, stenn@whimsy.udel.edu +1 -0
+ AM_CPPFLAGS needed for nl.c
+
+ ntpdc/Makefile.am@1.23, 2004-11-07 04:13:14-05:00, stenn@whimsy.udel.edu +2 -2
+ AM_CPPFLAGS needed for nl.c
+
+ChangeSet@1.1251.1.3, 2004-11-07 03:01:26-05:00, stenn@pogo.udel.edu +9 -0
+ [Bug 344] Allow daemons to be installed in sbin
+
+ adjtimed/Makefile.am@1.3, 2004-11-07 03:00:37-05:00, stenn@pogo.udel.edu +10 -8
+ [Bug 344] Allow daemons to be installed in sbin
+
+ bincheck.mf@1.1, 2004-11-07 02:56:30-05:00, stenn@pogo.udel.edu +14 -0
+
+ bincheck.mf@1.0, 2004-11-07 02:56:30-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev/bincheck.mf
+
+ configure.ac@1.359.1.1, 2004-11-07 03:00:02-05:00, stenn@pogo.udel.edu +21 -2
+ [Bug 344] Allow daemons to be installed in sbin
+
+ ntpd/Makefile.am@1.39, 2004-11-07 03:00:02-05:00, stenn@pogo.udel.edu +17 -9
+ [Bug 344] Allow daemons to be installed in sbin
+
+ ntpdate/Makefile.am@1.12, 2004-11-07 03:00:02-05:00, stenn@pogo.udel.edu +15 -12
+ [Bug 344] Allow daemons to be installed in sbin
+
+ ntpdc/Makefile.am@1.22, 2004-11-07 03:00:02-05:00, stenn@pogo.udel.edu +6 -3
+ [Bug 344] Allow daemons to be installed in sbin
+
+ ntpq/Makefile.am@1.12, 2004-11-07 03:00:37-05:00, stenn@pogo.udel.edu +10 -10
+ [Bug 344] Allow daemons to be installed in sbin
+
+ sntp/Makefile.am@1.6, 2004-11-07 03:00:02-05:00, stenn@pogo.udel.edu +4 -1
+ [Bug 344] Allow daemons to be installed in sbin
+
+ sntp/configure.ac@1.8, 2004-11-07 03:00:02-05:00, stenn@pogo.udel.edu +18 -0
+ [Bug 344] Allow daemons to be installed in sbin
+
+ChangeSet@1.1249.1.11, 2004-11-06 21:43:44-05:00, mayer@tecotoo. +2 -0
+ Miscellaneous
+
+ include/recvbuff.h@1.8, 2004-11-06 21:42:39-05:00, mayer@tecotoo. +1 -0
+ Add flags about the received packet
+
+ ports/winnt/libntp/syslog.c@1.3, 2004-11-06 21:43:16-05:00, mayer@tecotoo. +2 -1
+ modifed variable definition
+
+ChangeSet@1.1249.1.10, 2004-11-06 21:36:41-05:00, mayer@tecotoo. +8 -0
+ Updates to move windows-specific code into the windows-specific files
+
+ ntpd/ntp_config.c@1.113, 2004-11-06 21:35:04-05:00, mayer@tecotoo. +1 -1
+ Remove obsolete windows specific code
+
+ ntpd/ntpd.c@1.57.1.1, 2004-11-06 21:26:26-05:00, mayer@tecotoo. +16 -155
+ Remove Windows specific code. Put in other files
+
+ ports/winnt/include/clockstuff.h@1.6, 2004-11-06 21:32:48-05:00, mayer@tecotoo. +1 -0
+ Move Console setup and service setup to nt_clockstuff.c
+
+ ports/winnt/include/ntp_iocompletionport.h@1.8, 2004-11-06 21:28:49-05:00, mayer@tecotoo. +2 -0
+ Move completion events from ntpd.c to ntp_iocompletionport.c
+
+ ports/winnt/include/ntservice.h@1.2, 2004-11-06 21:30:09-05:00, mayer@tecotoo. +1 -0
+ Move Console setup to ntservice
+
+ ports/winnt/ntpd/nt_clockstuff.c@1.15, 2004-11-06 21:32:49-05:00, mayer@tecotoo. +35 -15
+ Move Console setup and service setup to nt_clockstuff.c
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.13, 2004-11-06 21:28:49-05:00, mayer@tecotoo. +46 -0
+ Move completion events from ntpd.c to ntp_iocompletionport.c
+
+ ports/winnt/ntpd/ntservice.c@1.2, 2004-11-06 21:30:09-05:00, mayer@tecotoo. +70 -17
+ Move Console setup to ntservice
+
+ChangeSet@1.1250.1.2, 2004-11-06 04:13:33-05:00, stenn@whimsy.udel.edu +1 -0
+ lint
+
+ ntpd/ntpd.c@1.58, 2004-11-06 04:13:21-05:00, stenn@whimsy.udel.edu +0 -1
+ lint
+
+ChangeSet@1.1249.1.9, 2004-11-04 00:03:35-05:00, mayer@tecotoo. +6 -0
+ Prefix constants with NTP_ to avoid collisions with VS.NET
+
+ ntpdc/ntpdc.c@1.35, 2004-11-04 00:02:40-05:00, mayer@tecotoo. +9 -8
+ Prefix constants with NTP_ to avoid collisions with VS.NET
+
+ ntpdc/ntpdc.h@1.4, 2004-11-04 00:02:41-05:00, mayer@tecotoo. +7 -7
+ Prefix constants with NTP_ to avoid collisions with VS.NET
+
+ ntpdc/ntpdc_ops.c@1.37, 2004-11-04 00:02:42-05:00, mayer@tecotoo. +21 -21
+ Prefix constants with NTP_ to avoid collisions with VS.NET
+
+ ntpq/ntpq_ops.c@1.20.1.1, 2004-11-04 00:03:09-05:00, mayer@tecotoo. +17 -17
+ Prefix constants with NTP_ to avoid collisions with VS.NET
+
+ ntpq/ntpq.c@1.50, 2004-11-04 00:03:08-05:00, mayer@tecotoo. +18 -17
+ Prefix constants with NTP_ to avoid collisions with VS.NET
+
+ ntpq/ntpq.h@1.4, 2004-11-04 00:03:08-05:00, mayer@tecotoo. +10 -7
+ Prefix constants with NTP_ to avoid collisions with VS.NET
+
+ChangeSet@1.1202.1.47, 2004-11-03 02:43:58-05:00, stenn@pogo.udel.edu +2 -0
+ autogen
+
+ configure.ac@1.351.1.10, 2004-11-03 02:40:39-05:00, stenn@pogo.udel.edu +2 -0
+ autogen
+
+ ntpq/ntpq-subs.c@1.21, 2004-10-30 17:25:09-04:00, stenn@pogo.udel.edu +0 -0
+ Rename: ntpq/ntpq_ops.c -> ntpq/ntpq-subs.c
+
+ChangeSet@1.1251, 2004-11-03 01:51:42-05:00, stenn@pogo.udel.edu +1 -0
+ Disable mlockall() under linux for now - resolver problems.
+
+ configure.ac@1.359, 2004-11-03 01:51:29-05:00, stenn@pogo.udel.edu +3 -0
+ Disable mlockall() under linux for now - resolver problems.
+
+ChangeSet@1.1249.1.8, 2004-11-02 23:25:17-05:00, mayer@tecotoo. +1 -0
+ Moved NT Services to it's own file
+
+ ntpd/ntpd.c@1.57, 2004-11-02 23:24:59-05:00, mayer@tecotoo. +56 -151
+ Moved NT Services to it's own file
+
+ChangeSet@1.1249.1.7, 2004-11-02 23:23:49-05:00, mayer@tecotoo. +1 -0
+ Changes to support VS.NET
+
+ ports/winnt/ntp-keygen/ntpkeygen.dsp@1.7, 2004-11-02 23:23:25-05:00, mayer@tecotoo. +4 -4
+ Changes to support VS.NET
+
+ChangeSet@1.1249.1.6, 2004-11-02 23:22:53-05:00, mayer@tecotoo. +3 -0
+ Changes to support VS.NET
+
+ ports/winnt/include/isc/ipv6.h@1.4, 2004-11-02 23:22:24-05:00, mayer@tecotoo. +15 -3
+ Changes to support VS.NET
+
+ ports/winnt/include/isc/net.h@1.4, 2004-11-02 23:18:10-05:00, mayer@tecotoo. +4 -2
+ Changes to support VS.NET
+
+ ports/winnt/libisc/net.c@1.5, 2004-11-02 23:18:10-05:00, mayer@tecotoo. +2 -0
+ Changes to support VS.NET
+
+ChangeSet@1.1249.1.5, 2004-11-02 23:15:30-05:00, mayer@tecotoo. +1 -0
+ Changes to support VS.NET
+
+ ports/winnt/include/config.h@1.31, 2004-11-02 23:15:16-05:00, mayer@tecotoo. +44 -6
+ Changes to support VS.NET
+
+ChangeSet@1.1249.1.4, 2004-11-02 23:14:21-05:00, mayer@tecotoo. +2 -0
+ NT Services for NTP
+
+ ports/winnt/include/ntservice.h@1.1, 2004-11-02 23:13:56-05:00, mayer@tecotoo. +34 -0
+ NT Services for NTP
+
+ ports/winnt/include/ntservice.h@1.0, 2004-11-02 23:13:56-05:00, mayer@tecotoo. +0 -0
+ BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/include/ntservice.h
+
+ ports/winnt/ntpd/ntservice.c@1.1, 2004-11-02 23:13:56-05:00, mayer@tecotoo. +241 -0
+ NT Services for NTP
+
+ ports/winnt/ntpd/ntservice.c@1.0, 2004-11-02 23:13:56-05:00, mayer@tecotoo. +0 -0
+ BitKeeper file H:/ntpbk/ntp-dev/ports/winnt/ntpd/ntservice.c
+
+ChangeSet@1.1249.1.3, 2004-11-02 23:07:27-05:00, mayer@tecotoo. +1 -0
+ Redefine various error functions for win32
+
+ ports/winnt/libisc/isc_strerror.c@1.4, 2004-11-02 23:07:08-05:00, mayer@tecotoo. +8 -8
+ Redefine various error functions for win32
+
+ChangeSet@1.1249.1.2, 2004-11-02 23:05:22-05:00, mayer@tecotoo. +3 -0
+ Remove unnecessary time variable references
+
+ libntp/ranny.c@1.3, 2004-11-02 23:04:56-05:00, mayer@tecotoo. +0 -2
+ Remove unnecessary time variable references
+
+ libntp/mktime.c@1.7, 2004-11-02 23:04:56-05:00, mayer@tecotoo. +3 -5
+ Remove unnecessary time variable references
+
+ ports/winnt/ntpd/nt_clockstuff.c@1.14, 2004-11-02 23:04:57-05:00, mayer@tecotoo. +25 -27
+ Remove unnecessary time variable references
+
+ChangeSet@1.1249.1.1, 2004-11-02 23:02:31-05:00, mayer@tecotoo. +5 -0
+ Updates to support changes required for VS.NET
+
+ ports/winnt/libntp/libntp.dsp@1.23, 2004-11-02 23:01:14-05:00, mayer@tecotoo. +4 -7
+ Updates to support changes required for VS.NET
+
+ ports/winnt/ntpd/ntpd.dsp@1.24, 2004-11-02 23:01:25-05:00, mayer@tecotoo. +40 -4
+ Updates to support changes required for VS.NET
+
+ ports/winnt/ntpdate/ntpdate.dsp@1.13, 2004-11-02 23:01:44-05:00, mayer@tecotoo. +2 -2
+ Updates to support changes required for VS.NET
+
+ ports/winnt/ntpdc/ntpdc.dsp@1.16, 2004-11-02 23:01:33-05:00, mayer@tecotoo. +2 -2
+ Updates to support changes required for VS.NET
+
+ ports/winnt/ntpq/ntpq.dsp@1.16, 2004-11-02 23:01:54-05:00, mayer@tecotoo. +2 -2
+ Updates to support changes required for VS.NET
+
+ChangeSet@1.1249, 2004-11-01 23:46:20-05:00, mayer@tecotoo. +1 -0
+ Mulitcast IPv6 check
+
+ ntpd/ntp_io.c@1.145, 2004-11-01 23:46:00-05:00, mayer@tecotoo. +2 -3
+ Mulitcast IPv6 check
+
+ChangeSet@1.1247, 2004-11-01 23:03:40-05:00, mayer@tecotoo. +3 -0
+ IPv6 fixes and Added dump of interface function
+
+ include/ntpd.h@1.71, 2004-11-01 23:01:45-05:00, mayer@tecotoo. +1 -0
+ Added dump of interface function
+
+ ntpd/ntp_config.c@1.109.1.1, 2004-11-01 22:59:30-05:00, mayer@tecotoo. +41 -20
+ Fix for IPv6
+
+ ntpd/ntp_intres.c@1.35.1.1, 2004-11-01 22:59:29-05:00, mayer@tecotoo. +22 -2
+ Fix for IPv6
+
+ChangeSet@1.1246, 2004-11-01 22:55:10-05:00, mayer@tecotoo. +1 -0
+ Fix multicast to open it's own socket. Fall back on wildcard if it fails
+
+ ntpd/ntp_io.c@1.143, 2004-11-01 22:54:41-05:00, mayer@tecotoo. +287 -494
+ Fix multicast to open it's own socket. Fall back on wildcard if it fails
+
+ChangeSet@1.1202.5.10, 2004-10-31 16:23:23-05:00, stenn@whimsy.udel.edu +1 -0
+ PTB responses are 78 bytes long, not 40.
+
+ ntpd/refclock_acts.c@1.15, 2004-10-31 16:23:09-05:00, stenn@whimsy.udel.edu +1 -1
+ PTB responses are 78 bytes long, not 40.
+
+ChangeSet@1.1202.5.8, 2004-10-29 22:56:12-04:00, mayer@pogo.udel.edu +2 -0
+ Should have used ISC_R_SUCCESS and not ISC_TRUE for return from isc_net_probeipv6(). Don't allow IPv6 addreses when no IPv6 available
+
+ ntpd/ntp_config.c@1.111, 2004-10-29 22:55:08-04:00, mayer@pogo.udel.edu +36 -22
+ Should have used ISC_R_SUCCESS and not ISC_TRUE for return from isc_net_probeipv6(). Don't allow IPv6 addreses when no IPv6 available
+
+ ntpd/ntp_intres.c@1.37, 2004-10-29 22:54:13-04:00, mayer@pogo.udel.edu +4 -4
+ Should have used ISC_R_SUCCESS and not ISC_TRUE for return from isc_net_probeipv6()
+
+ChangeSet@1.1202.7.1, 2004-10-29 05:52:47-04:00, stenn@whimsy.udel.edu +10 -0
+ Updates from Dave Mills
+
+ html/build/hints.html@1.15, 2004-10-29 05:51:12-04:00, stenn@whimsy.udel.edu +1 -1
+ Updates from Dave Mills
+
+ html/build/hints/solaris-dosynctodr.html@1.5, 2004-10-29 05:51:13-04:00, stenn@whimsy.udel.edu +11 -11
+ Updates from Dave Mills
+
+ html/drivers/driver18.html@1.12, 2004-10-29 05:51:15-04:00, stenn@whimsy.udel.edu +44 -49
+ Updates from Dave Mills
+
+ html/drivers/driver29.html@1.13, 2004-10-29 05:51:15-04:00, stenn@whimsy.udel.edu +1 -1
+ Updates from Dave Mills
+
+ html/drivers/driver38.html@1.12, 2004-10-29 05:51:16-04:00, stenn@whimsy.udel.edu +3 -3
+ Updates from Dave Mills
+
+ html/drivers/driver39.html@1.12, 2004-10-29 05:51:16-04:00, stenn@whimsy.udel.edu +3 -3
+ Updates from Dave Mills
+
+ html/drivers/driver44.html@1.11, 2004-10-29 05:51:17-04:00, stenn@whimsy.udel.edu +3 -6
+ Updates from Dave Mills
+
+ html/drivers/driver5.html@1.12, 2004-10-29 05:51:17-04:00, stenn@whimsy.udel.edu +1 -1
+ Updates from Dave Mills
+
+ html/drivers/driver8.html@1.14, 2004-10-29 05:51:17-04:00, stenn@whimsy.udel.edu +1 -1
+ Updates from Dave Mills
+
+ html/ntpd.html@1.34, 2004-10-29 05:51:10-04:00, stenn@whimsy.udel.edu +5 -8
+ Updates from Dave Mills
+
+ChangeSet@1.1202.6.1, 2004-10-28 20:49:19-04:00, mayer@pogo.udel.edu +2 -0
+ Ensure that DNS lookups on IPv6-absent systems only look up IPv4 addresses
+
+ ntpd/ntp_config.c@1.110, 2004-10-28 20:48:42-04:00, mayer@pogo.udel.edu +7 -0
+ Ensure that DNS lookups on IPv6-absent systems only look up IPv4 addresses
+
+ ntpd/ntp_intres.c@1.36, 2004-10-28 20:48:43-04:00, mayer@pogo.udel.edu +21 -1
+ Ensure that DNS lookups on IPv6-absent systems only look up IPv4 addresses
+
+ChangeSet@1.1202.5.6, 2004-10-27 19:52:51-04:00, stenn@whimsy.udel.edu +6 -0
+ Updates from Dave Mills
+
+ html/drivers/footer.txt@1.1, 2004-10-27 19:50:59-04:00, stenn@whimsy.udel.edu +7 -0
+
+ html/drivers/footer.txt@1.0, 2004-10-27 19:50:59-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/drivers/footer.txt
+
+ html/copyright.html@1.28, 2004-10-27 19:52:28-04:00, stenn@whimsy.udel.edu +2 -2
+ Updates from Dave Mills
+
+ html/drivers/tf582_4.html@1.1, 2004-10-27 19:50:59-04:00, stenn@whimsy.udel.edu +72 -0
+
+ html/drivers/tf582_4.html@1.0, 2004-10-27 19:50:59-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/drivers/tf582_4.html
+
+ html/keygen.html@1.5, 2004-10-27 19:52:28-04:00, stenn@whimsy.udel.edu +1 -1
+ Updates from Dave Mills
+
+ html/ntpd.html@1.33, 2004-10-27 19:52:30-04:00, stenn@whimsy.udel.edu +1 -1
+ Updates from Dave Mills
+
+ html/refclock.html@1.30, 2004-10-27 19:52:28-04:00, stenn@whimsy.udel.edu +8 -6
+ Updates from Dave Mills
+
+ChangeSet@1.1202.5.5, 2004-10-26 20:25:31-04:00, stenn@whimsy.udel.edu +1 -0
+ Remove mort from the backroom auto-build list
+
+ br-flock@1.5, 2004-10-26 20:25:19-04:00, stenn@whimsy.udel.edu +1 -1
+ Remove mort from the backroom auto-build list
+
+ChangeSet@1.1202.4.5, 2004-10-24 22:46:38-04:00, mayer@pogo.udel.edu +1 -0
+ Add interface_dump functionality
+
+ include/ntpd.h@1.69.1.1, 2004-10-24 22:46:22-04:00, mayer@pogo.udel.edu +1 -0
+ Add interface_dump functionality
+
+ChangeSet@1.1202.4.4, 2004-10-24 22:45:54-04:00, mayer@pogo.udel.edu +1 -0
+ Add interface_dump functionality
+
+ ntpd/ntp_io.c@1.119.1.5, 2004-10-24 22:45:35-04:00, mayer@pogo.udel.edu +58 -0
+ Add interface_dump functionality
+
+ChangeSet@1.1202.4.3, 2004-10-24 22:44:25-04:00, mayer@pogo.udel.edu +1 -0
+ Remove interface_dump
+
+ ntpd/ntp_control.c@1.70.1.4, 2004-10-24 22:43:43-04:00, mayer@pogo.udel.edu +0 -1
+ Remove interface_dump
+
+ChangeSet@1.1202.4.2, 2004-10-24 22:42:51-04:00, mayer@pogo.udel.edu +1 -0
+ Don't allow null interfaces
+
+ ntpd/ntp_peer.c@1.60.1.1, 2004-10-24 22:42:12-04:00, mayer@pogo.udel.edu +8 -0
+ Don't allow null interfaces
+
+ChangeSet@1.1245, 2004-10-24 22:37:46-04:00, mayer@tecotoo. +1 -0
+ Don't allow null interfaces
+
+ ntpd/ntp_peer.c@1.62, 2004-10-24 22:37:27-04:00, mayer@tecotoo. +8 -0
+ Don't allow null interfaces
+
+ChangeSet@1.1202.5.3, 2004-10-23 03:25:29-04:00, stenn@whimsy.udel.edu +1 -0
+ sntp can be installed in sbin
+
+ sntp/Makefile.am@1.5, 2004-10-23 03:25:14-04:00, stenn@whimsy.udel.edu +1 -1
+ sntp can be installed in sbin
+
+ChangeSet@1.1202.5.2, 2004-10-23 03:09:05-04:00, stenn@whimsy.udel.edu +6 -0
+ Lose broadcast and server modes from sntp.
+
+ sntp/README@1.2, 2004-10-23 03:07:46-04:00, stenn@whimsy.udel.edu +28 -27
+ Lose broadcast and server modes.
+
+ sntp/draft-mills-sntp-v4-00.txt@1.1, 2004-10-23 00:12:58-04:00, stenn@whimsy.udel.edu +1514 -0
+
+ sntp/draft-mills-sntp-v4-00.txt@1.0, 2004-10-23 00:12:58-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/sntp/draft-mills-sntp-v4-00.txt
+
+ sntp/header.h@1.6, 2004-10-23 03:07:45-04:00, stenn@whimsy.udel.edu +1 -3
+ Lose broadcast and server modes.
+
+ sntp/main.c@1.5, 2004-10-23 03:07:45-04:00, stenn@whimsy.udel.edu +19 -115
+ Lose broadcast and server modes.
+
+ sntp/sntp.1@1.4, 2004-10-23 03:07:46-04:00, stenn@whimsy.udel.edu +0 -23
+ Lose broadcast and server modes.
+
+ sntp/socket.c@1.4, 2004-10-23 03:07:45-04:00, stenn@whimsy.udel.edu +6 -22
+ Lose broadcast and server modes.
+
+ChangeSet@1.1202.5.1, 2004-10-23 00:09:11-04:00, stenn@whimsy.udel.edu +2 -0
+ Fixes from Dave Mills
+
+ ntpd/ntp_util.c@1.34, 2004-10-23 00:07:18-04:00, stenn@whimsy.udel.edu +1 -1
+ loopstats output cleanup
+
+ ntpd/refclock_atom.c@1.44, 2004-10-23 00:08:19-04:00, stenn@whimsy.udel.edu +1 -0
+ Specify PPS_API_VERS_1
+
+ChangeSet@1.1202.1.42, 2004-10-19 21:26:34-04:00, stenn@pogo.udel.edu +2 -0
+ select() EINTR and mlockall() under linux problem avoidance.
+
+ configure.ac@1.351.1.9, 2004-10-19 21:25:15-04:00, stenn@pogo.udel.edu +3 -0
+ Stop using mlockall() under linux
+
+ ntpd/ntpd.c@1.55.1.1, 2004-10-19 21:23:14-04:00, stenn@pogo.udel.edu +1 -1
+ Only show the select() EINTR reports at debug >5
+
+ChangeSet@1.1202.1.41, 2004-10-18 00:37:02-04:00, stenn@whimsy.udel.edu +1 -0
+ lint fixes for refclock_mx4200.c
+
+ ntpd/refclock_mx4200.c@1.19, 2004-10-18 00:36:35-04:00, stenn@whimsy.udel.edu +3 -3
+ lint
+
+ChangeSet@1.1202.1.40, 2004-10-16 07:30:33-04:00, stenn@www.ntp.org +3 -0
+ Rename html2man.pl to html2man.in so we can use PATH_PERL.
+
+ configure.ac@1.351.1.8, 2004-10-16 07:28:54-04:00, stenn@www.ntp.org +1 -0
+ Rename html2man.pl to html2man.in so we can use PATH_PERL.
+
+ scripts/Makefile.am@1.11, 2004-10-16 07:28:38-04:00, stenn@www.ntp.org +2 -2
+ Rename html2man.pl to html2man.in so we can use PATH_PERL.
+
+ scripts/html2man.in@1.5, 2004-10-16 07:28:39-04:00, stenn@www.ntp.org +4 -6
+ Rename html2man.pl to html2man.in so we can use PATH_PERL.
+
+ scripts/html2man.in@1.4, 2004-10-16 06:50:52-04:00, stenn@www.ntp.org +0 -0
+ Rename: scripts/html2man.pl -> scripts/html2man.in
+
+ChangeSet@1.1202.1.39, 2004-10-16 06:19:50-04:00, stenn@www.ntp.org +1 -0
+ [Bug 348] genkeys -> keygen, and .htm -> .html
+
+ scripts/html2man.pl@1.3, 2004-10-16 06:19:02-04:00, stenn@www.ntp.org +2 -2
+ [Bug 348] genkeys -> keygen, and .htm -> .html
+
+ChangeSet@1.1202.3.1, 2004-10-14 00:35:10-04:00, mayer@pogo.udel.edu +1 -0
+ Fix to broadcast. broadcast address socket was not being opened
+
+ ntpd/ntp_io.c@1.119.1.4, 2004-10-14 00:34:40-04:00, mayer@pogo.udel.edu +27 -9
+ Fix to broadcast. broadcast address socket was not being opened
+
+ChangeSet@1.1202.1.37, 2004-10-12 21:08:44-04:00, stenn@whimsy.udel.edu +2 -0
+ Fixes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.100, 2004-10-12 21:08:25-04:00, stenn@whimsy.udel.edu +9 -15
+ Dave Mills: kernel cleanup
+
+ ntpd/ntp_proto.c@1.181.1.5, 2004-10-12 21:07:56-04:00, stenn@whimsy.udel.edu +1 -1
+ Dave Mills: If MCAST, turn off BURST as well.
+
+ChangeSet@1.1244, 2004-10-10 19:46:59-04:00, mayer@tecotoo. +1 -0
+ Fix for refclock_open for Windows due to signature change (Again)
+
+ ports/winnt/include/win32_io.h@1.7, 2004-10-10 19:46:39-04:00, mayer@tecotoo. +1 -2
+ Fix for refclock_open for Windows due to signature change (Again)
+
+ChangeSet@1.1243, 2004-10-10 19:46:22-04:00, mayer@tecotoo. +1 -0
+ Add support for enable_broadcast() call for servers (Again)
+
+ ntpd/ntp_io.c@1.142, 2004-10-10 19:45:28-04:00, mayer@tecotoo. +2 -1
+ Add support for enable_broadcast() call for servers (Again)
+
+ChangeSet@1.1241, 2004-10-10 19:10:18-04:00, mayer@tecotoo. +2 -0
+ Fix for refclock_open for Windows due to signature change
+
+ ports/winnt/include/win32_io.h@1.4.1.1, 2004-10-10 19:09:56-04:00, mayer@tecotoo. +1 -1
+ Fix for refclock_open for Windows due to signature change
+
+ ports/winnt/ntpd/win32_io.c@1.9.1.1, 2004-10-10 19:09:56-04:00, mayer@tecotoo. +2 -2
+ Fix for refclock_open for Windows due to signature change
+
+ChangeSet@1.1240, 2004-10-10 19:08:19-04:00, mayer@tecotoo. +3 -0
+ Add support for enable_broadcast() call for servers
+
+ include/ntpd.h@1.68.1.1, 2004-10-10 19:06:55-04:00, mayer@tecotoo. +4 -4
+ Add support for enable_broadcast() call for servers
+
+ ntpd/ntp_io.c@1.139.1.1, 2004-10-10 19:06:53-04:00, mayer@tecotoo. +21 -3
+ Add support for enable_broadcast() call for servers
+
+ ntpd/ntp_peer.c@1.59.1.1, 2004-10-10 19:06:54-04:00, mayer@tecotoo. +8 -0
+ Add support for enable_broadcast() call for servers
+
+ChangeSet@1.1202.1.36, 2004-10-08 22:24:44-04:00, stenn@whimsy.udel.edu +3 -0
+ Changes/cleanup from Dave Mills
+
+ ntpd/ntp_control.c@1.70.1.3, 2004-10-08 22:24:26-04:00, stenn@whimsy.udel.edu +1 -1
+ Changes/cleanup from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.99, 2004-10-08 22:24:27-04:00, stenn@whimsy.udel.edu +9 -12
+ Changes/cleanup from Dave Mills
+
+ ntpd/ntp_util.c@1.33, 2004-10-08 22:24:28-04:00, stenn@whimsy.udel.edu +2 -2
+ Changes/cleanup from Dave Mills
+
+ChangeSet@1.1202.1.35, 2004-10-08 19:43:05-04:00, stenn@whimsy.udel.edu +1 -0
+ Dave Mills: No autokey over the wildcard interface
+
+ ntpd/ntp_proto.c@1.181.1.4, 2004-10-08 19:42:51-04:00, stenn@whimsy.udel.edu +17 -15
+ Dave Mills: No autokey over the wildcard interface
+
+ChangeSet@1.1202.1.34, 2004-10-07 22:49:19-04:00, mayer@pogo.udel.edu +2 -0
+ Win32 fix for refclock_open() signature change
+
+ ports/winnt/include/win32_io.h@1.5, 2004-10-07 22:48:58-04:00, mayer@pogo.udel.edu +1 -1
+ Win32 fix for refclock_open() signature change
+
+ ports/winnt/ntpd/win32_io.c@1.7.1.2, 2004-10-07 22:48:59-04:00, mayer@pogo.udel.edu +2 -2
+ Win32 fix for refclock_open() signature change
+
+ChangeSet@1.1202.1.33, 2004-10-07 22:43:33-04:00, mayer@pogo.udel.edu +1 -0
+ Modification to have broadcast servers enable the socket for broadcast (missing argument)
+
+ ntpd/ntp_io.c@1.119.1.3, 2004-10-07 22:42:40-04:00, mayer@pogo.udel.edu +1 -1
+ Modification to have broadcast servers enable the socket for broadcast (missing argument)
+
+ChangeSet@1.1202.1.32, 2004-10-07 22:40:57-04:00, mayer@pogo.udel.edu +3 -0
+ Modification to have broadcast servers enable the socket for broadcast
+
+ include/ntpd.h@1.69, 2004-10-07 22:40:33-04:00, mayer@pogo.udel.edu +4 -4
+ Modification to have broadcast servers enable the socket for broadcast
+
+ ntpd/ntp_io.c@1.119.1.2, 2004-10-07 22:40:33-04:00, mayer@pogo.udel.edu +18 -0
+ Modification to have broadcast servers enable the socket for broadcast
+
+ ntpd/ntp_peer.c@1.60, 2004-10-07 22:40:33-04:00, mayer@pogo.udel.edu +8 -0
+ Modification to have broadcast servers enable the socket for broadcast
+
+ChangeSet@1.1202.1.31, 2004-10-06 22:21:10-04:00, stenn@whimsy.udel.edu +2 -0
+ Remove PTB and USNO lint
+
+ README.refclocks@1.3, 2004-10-06 22:20:56-04:00, stenn@whimsy.udel.edu +2 -2
+ Remove PTB and USNO lint
+
+ configure.ac@1.351.1.7, 2004-10-06 22:20:56-04:00, stenn@whimsy.udel.edu +0 -40
+ Remove PTB and USNO lint
+
+ChangeSet@1.1202.1.30, 2004-10-05 18:27:54-04:00, stenn@whimsy.udel.edu +4 -0
+ Cleanup from Dave Mills
+
+ ntpd/ntp_control.c@1.70.1.2, 2004-10-05 18:27:37-04:00, stenn@whimsy.udel.edu +2 -2
+ Cleanup from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.98, 2004-10-05 18:27:37-04:00, stenn@whimsy.udel.edu +4 -4
+ Cleanup from Dave Mills
+
+ ntpd/ntp_request.c@1.58, 2004-10-05 18:27:41-04:00, stenn@whimsy.udel.edu +1 -1
+ Cleanup from Dave Mills
+
+ ntpd/ntp_util.c@1.32, 2004-10-05 18:27:39-04:00, stenn@whimsy.udel.edu +2 -2
+ Cleanup from Dave Mills
+
+ChangeSet@1.1202.1.29, 2004-10-02 03:56:39-04:00, stenn@whimsy.udel.edu +9 -0
+ Cleanup from Dave Mills
+
+ include/ntp_refclock.h@1.17, 2004-10-02 03:54:54-04:00, stenn@whimsy.udel.edu +6 -4
+ Cleanup from Dave Mills
+
+ include/ntpd.h@1.68, 2004-10-02 03:54:55-04:00, stenn@whimsy.udel.edu +0 -1
+ Cleanup from Dave Mills
+
+ ntpd/ntp_config.c@1.109, 2004-10-02 03:55:07-04:00, stenn@whimsy.udel.edu +4 -1
+ Cleanup from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.97, 2004-10-02 03:55:08-04:00, stenn@whimsy.udel.edu +37 -31
+ Cleanup from Dave Mills
+
+ ntpd/ntp_proto.c@1.181.1.3, 2004-10-02 03:55:09-04:00, stenn@whimsy.udel.edu +2 -5
+ Cleanup from Dave Mills
+
+ ntpd/ntp_refclock.c@1.60, 2004-10-02 03:55:09-04:00, stenn@whimsy.udel.edu +205 -180
+ Cleanup from Dave Mills
+
+ ntpd/ntp_request.c@1.57, 2004-10-02 03:55:09-04:00, stenn@whimsy.udel.edu +2 -2
+ Cleanup from Dave Mills
+
+ ntpd/refclock_acts.c@1.14, 2004-10-02 03:55:10-04:00, stenn@whimsy.udel.edu +134 -72
+ Cleanup from Dave Mills
+
+ ntpd/refclock_wwvb.c@1.13, 2004-10-02 03:55:13-04:00, stenn@whimsy.udel.edu +4 -11
+ Cleanup from Dave Mills
+
+ChangeSet@1.1202.1.28, 2004-09-22 23:23:06-04:00, mayer@pogo.udel.edu +5 -0
+ Fix the precompiled header issue
+
+ ports/winnt/libntp/libntp.dsp@1.18.1.1, 2004-09-22 23:22:41-04:00, mayer@pogo.udel.edu +13 -1
+ Fix the precompiled header issue
+
+ ports/winnt/ntp-keygen/ntpkeygen.dsp@1.4.1.1, 2004-09-22 23:22:42-04:00, mayer@pogo.udel.edu +2 -2
+ Fix the precompiled header issue
+
+ ports/winnt/ntpd/ntpd.dsp@1.21.1.1, 2004-09-22 23:22:41-04:00, mayer@pogo.udel.edu +6 -2
+ Fix the precompiled header issue
+
+ ports/winnt/ntpdc/ntpdc.dsp@1.13.1.1, 2004-09-22 23:22:42-04:00, mayer@pogo.udel.edu +2 -2
+ Fix the precompiled header issue
+
+ ports/winnt/ntpq/ntpq.dsp@1.13.1.1, 2004-09-22 23:22:42-04:00, mayer@pogo.udel.edu +2 -2
+ Fix the precompiled header issue
+
+ChangeSet@1.1202.1.27, 2004-09-22 23:21:56-04:00, mayer@pogo.udel.edu +1 -0
+ Add support for VS.NET (aka V7) and finally fix the RPC Async header issues
+
+ ports/winnt/include/config.h@1.26.1.1, 2004-09-22 23:21:29-04:00, mayer@pogo.udel.edu +9 -6
+ Add support for VS.NET (aka V7) and finally fix the RPC Async header issues
+
+ChangeSet@1.1202.1.26, 2004-09-22 23:20:39-04:00, mayer@pogo.udel.edu +1 -0
+ total_buffs() and full_buffs() were returning the wrong value
+
+ libntp/recvbuff.c@1.8.1.1, 2004-09-22 23:20:07-04:00, mayer@pogo.udel.edu +2 -2
+ total_buffs() and full_buffs() were returning the wrong value
+
+ChangeSet@1.1238, 2004-09-22 23:19:14-04:00, mayer@tecotoo. +1 -0
+ total_buffs() and full_buffs() were returning the wrong value
+
+ libntp/recvbuff.c@1.9, 2004-09-22 23:18:57-04:00, mayer@tecotoo. +2 -2
+ total_buffs() and full_buffs() were returning the wrong value
+
+ChangeSet@1.1237, 2004-09-22 23:09:51-04:00, mayer@tecotoo. +1 -0
+ Add support for VS.NET (aka V7) and finally fix the RPC Async header issues
+
+ ports/winnt/include/config.h@1.29, 2004-09-22 23:09:16-04:00, mayer@tecotoo. +7 -6
+ Add support for VS.NET (aka V7) and finally fix the RPC Async header issues
+
+ChangeSet@1.1236, 2004-09-22 00:40:32-04:00, mayer@tecotoo. +5 -0
+ Fix the precompiled header issue
+
+ ports/winnt/libntp/libntp.dsp@1.21, 2004-09-22 00:40:02-04:00, mayer@tecotoo. +1 -1
+ Fix the precompiled header issue
+
+ ports/winnt/ntp-keygen/ntpkeygen.dsp@1.5, 2004-09-22 00:40:03-04:00, mayer@tecotoo. +2 -2
+ Fix the precompiled header issue
+
+ ports/winnt/ntpd/ntpd.dsp@1.22, 2004-09-22 00:40:02-04:00, mayer@tecotoo. +6 -2
+ Fix the precompiled header issue
+
+ ports/winnt/ntpdc/ntpdc.dsp@1.14, 2004-09-22 00:40:03-04:00, mayer@tecotoo. +2 -2
+ Fix the precompiled header issue
+
+ ports/winnt/ntpq/ntpq.dsp@1.14, 2004-09-22 00:40:03-04:00, mayer@tecotoo. +2 -2
+ Fix the precompiled header issue
+
+ChangeSet@1.1202.1.25, 2004-09-16 22:45:42-04:00, stenn@whimsy.udel.edu +1 -0
+ look for recvmsg()
+
+ configure.ac@1.351.1.6, 2004-09-16 22:45:32-04:00, stenn@whimsy.udel.edu +1 -1
+ look for recvmsg()
+
+ChangeSet@1.1202.1.24, 2004-09-13 22:31:34-04:00, stenn@whimsy.udel.edu +1 -0
+ Remove #undef UDP_WILDCARD_DELIVERY per Danny Mayer
+
+ ntpd/ntp_io.c@1.119.1.1, 2004-09-13 22:31:16-04:00, stenn@whimsy.udel.edu +0 -1
+ Remove #undef UDP_WILDCARD_DELIVERY per Danny Mayer
+
+ChangeSet@1.1202.1.23, 2004-09-13 04:09:52-04:00, stenn@whimsy.udel.edu +1 -0
+ Dave Mills: flag3 chooses 1200 or 9600 baud.
+
+ ntpd/refclock_acts.c@1.13, 2004-09-13 04:09:38-04:00, stenn@whimsy.udel.edu +9 -4
+ Dave Mills: flag3 chooses 1200 or 9600 baud.
+
+ChangeSet@1.1202.1.22, 2004-09-12 16:53:03-04:00, stenn@whimsy.udel.edu +5 -0
+ more modem cleanup stuff
+
+ BitKeeper/deleted/.del-refclock_ptbacts.c~3e480692@1.3, 2004-09-12 16:44:28-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: ntpd/refclock_ptbacts.c
+
+ BitKeeper/deleted/.del-refclock_usno.c~3aed0663@1.9, 2004-09-12 16:44:28-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: ntpd/refclock_usno.c
+
+ ntpd/Makefile.am@1.38, 2004-09-12 16:47:56-04:00, stenn@whimsy.udel.edu +2 -2
+ Remove the old ptbs and usno drivers
+
+ ntpd/refclock_acts.c@1.12, 2004-09-12 16:46:44-04:00, stenn@whimsy.udel.edu +23 -34
+ cleanup and fixes from Dave Mills
+
+ ports/winnt/ntpd/ntpd.dsp@1.21, 2004-09-12 16:47:57-04:00, stenn@whimsy.udel.edu +0 -10
+ Remove the old ptbs and usno drivers
+
+ChangeSet@1.1202.2.3, 2004-09-12 01:00:57-04:00, stenn@whimsy.udel.edu +10 -0
+ Changes from Dave Mills. Combine/simplify the modem driver to
+ handle ACTS, NIST, PTB, and USNO.
+
+ include/ntp.h@1.101.1.2, 2004-09-12 01:00:50-04:00, stenn@whimsy.udel.edu +5 -11
+ Combine the modem refclocks into a single driver.
+
+ Update the poll randomization stuff.
+
+ include/ntp_refclock.h@1.16, 2004-09-12 01:00:50-04:00, stenn@whimsy.udel.edu +2 -1
+ Added refclock_timer().
+
+ include/ntpd.h@1.67, 2004-09-12 01:00:50-04:00, stenn@whimsy.udel.edu +1 -0
+ added refclock_timeout().
+
+ libntp/clocktypes.c@1.16, 2004-09-12 01:00:51-04:00, stenn@whimsy.udel.edu +6 -6
+ Use the new refclock_acts for NIST, PTB, USNO
+
+ ntpd/ntp_config.c@1.108, 2004-09-12 01:00:51-04:00, stenn@whimsy.udel.edu +2 -1
+ phone numbers now need a \r appended.
+
+ ntpd/ntp_proto.c@1.181.2.1, 2004-09-12 01:00:51-04:00, stenn@whimsy.udel.edu +92 -99
+ Cleanup and fixes.
+
+ ntpd/ntp_refclock.c@1.59, 2004-09-12 01:00:52-04:00, stenn@whimsy.udel.edu +18 -0
+ Added refclock_timer().
+
+ ntpd/ntp_timer.c@1.28, 2004-09-12 01:00:52-04:00, stenn@whimsy.udel.edu +9 -0
+ Call refclock_timer().
+
+ ntpd/refclock_acts.c@1.11, 2004-09-12 01:00:52-04:00, stenn@whimsy.udel.edu +586 -705
+ Handle NIST/USNO/PTB/NPL over a modem.
+
+ ntpd/refclock_conf.c@1.24, 2004-09-12 01:00:52-04:00, stenn@whimsy.udel.edu +3 -15
+ PTB and USNO now use the common ACTS code.
+
+ChangeSet@1.1202.2.2, 2004-09-07 06:41:51-04:00, stenn@whimsy.udel.edu +1 -0
+ Use SNDCTL_DSP_SETFRAGMENT if available. From Tim Shoppa.
+
+ libntp/audio.c@1.23, 2004-09-07 06:41:36-04:00, stenn@whimsy.udel.edu +9 -0
+ Use SNDCTL_DSP_SETFRAGMENT if available. From Tim Shoppa.
+
+ChangeSet@1.1202.2.1, 2004-09-03 22:34:20-04:00, stenn@whimsy.udel.edu +1 -0
+ Comment improvement from Dave Mills
+
+ include/ntp.h@1.101.1.1, 2004-09-03 22:33:10-04:00, stenn@whimsy.udel.edu +1 -1
+ Comment improvement from Dave Mills
+
+ChangeSet@1.1202.1.20, 2004-09-03 22:04:08-04:00, mayer@pogo.udel.edu +2 -0
+ INT_MULTICAST now INT_MCASTOPEN
+
+ ntpd/ntp_monitor.c@1.12.1.1, 2004-09-03 22:03:45-04:00, mayer@pogo.udel.edu +1 -1
+ INT_MULTICAST now INT_MCASTOPEN
+
+ ntpd/ntp_proto.c@1.181.1.1, 2004-09-03 22:03:44-04:00, mayer@pogo.udel.edu +2 -2
+ INT_MULTICAST now INT_MCASTOPEN
+
+ChangeSet@1.1233, 2004-09-03 21:56:58-04:00, mayer@tecotoo. +2 -0
+ INT_MULTICAST now INT_MCASTOPEN
+
+ ntpd/ntp_monitor.c@1.13, 2004-09-03 21:56:28-04:00, mayer@tecotoo. +1 -1
+ INT_MULTICAST now INT_MCASTOPEN
+
+ ntpd/ntp_proto.c@1.182, 2004-09-03 21:56:27-04:00, mayer@tecotoo. +2 -2
+ INT_MULTICAST now INT_MCASTOPEN
+
+ChangeSet@1.1202.1.19, 2004-09-02 21:41:05-04:00, stenn@whimsy.udel.edu +1 -0
+ Dave Mills: RSTR kiss+iburst retried too often
+
+ ntpd/ntp_proto.c@1.181, 2004-09-02 21:40:49-04:00, stenn@whimsy.udel.edu +24 -33
+ Dave Mills: RSTR kiss+iburst retried too often
+
+ChangeSet@1.1202.1.18, 2004-08-30 04:27:54-04:00, stenn@www.ntp.org +1 -0
+ [Bug 153] Initial pass at framework to fix bug
+
+ ntpd/ntp_config.c@1.107, 2004-08-30 04:27:40-04:00, stenn@www.ntp.org +19 -9
+ [Bug 153] Initial pass at framework to fix bug
+
+ChangeSet@1.1202.1.17, 2004-08-25 21:27:18-04:00, stenn@www.ntp.org +1 -0
+ avoid overwriting self
+
+ util/ntp-keygen.c@1.30, 2004-08-25 21:27:06-04:00, stenn@www.ntp.org +5 -1
+ avoid overwriting self
+
+ChangeSet@1.1202.1.16, 2004-08-25 01:16:52-04:00, stenn@whimsy.udel.edu +4 -0
+ added sntp.1 and did a little cleanup
+
+ sntp/Makefile.am@1.4, 2004-08-25 01:16:12-04:00, stenn@whimsy.udel.edu +5 -1
+ added sntp.1 and did a little cleanup
+
+ sntp/header.h@1.5, 2004-08-25 01:16:12-04:00, stenn@whimsy.udel.edu +2 -2
+ added sntp.1 and did a little cleanup
+
+ sntp/main.c@1.4, 2004-08-25 01:16:11-04:00, stenn@whimsy.udel.edu +8 -8
+ added sntp.1 and did a little cleanup
+
+ sntp/sntp.1@1.3, 2004-08-25 01:16:12-04:00, stenn@whimsy.udel.edu +25 -15
+ added sntp.1 and did a little cleanup
+
+ sntp/sntp.1@1.2, 2004-08-25 00:51:55-04:00, stenn@whimsy.udel.edu +0 -0
+ Rename: sntp/msntp.1 -> sntp/sntp.1
+
+ sntp/msntp.1@1.1, 2004-08-25 00:46:59-04:00, stenn@whimsy.udel.edu +325 -0
+
+ sntp/msntp.1@1.0, 2004-08-25 00:46:59-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/sntp/msntp.1
+
+ChangeSet@1.1202.1.15, 2004-08-23 22:08:55-04:00, stenn@www.ntp.org +2 -0
+ make propdelay compile/link
+
+ clockstuff/Makefile.am@1.4, 2004-08-23 22:08:44-04:00, stenn@www.ntp.org +1 -1
+ make propdelay compile/link
+
+ clockstuff/propdelay.c@1.4, 2004-08-23 22:08:44-04:00, stenn@www.ntp.org +6 -6
+ make propdelay compile/link
+
+ChangeSet@1.1202.1.14, 2004-08-19 23:22:20-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 300] Properly report V3 reslist bits
+
+ ntpdc/ntpdc_ops.c@1.34.1.1, 2004-08-19 23:22:06-04:00, stenn@whimsy.udel.edu +25 -7
+ [Bug 300] Properly report V3 reslist bits
+
+ChangeSet@1.1202.1.13, 2004-08-19 23:15:44-04:00, stenn@whimsy.udel.edu +1 -0
+ typo fix
+
+ ntpd/ntp_loopfilter.c@1.96, 2004-08-19 23:15:26-04:00, stenn@whimsy.udel.edu +1 -1
+ typo fix
+
+ChangeSet@1.1229, 2004-08-19 18:34:48-04:00, mayer@pogo.udel.edu +1 -0
+ Change debug level of interrupted select to 5
+
+ ntpd/ntpd.c@1.56, 2004-08-19 18:34:22-04:00, mayer@pogo.udel.edu +3 -3
+ Change debug level of interrupted select to 5
+
+ChangeSet@1.1228, 2004-08-19 18:33:09-04:00, mayer@pogo.udel.edu +1 -0
+ Fixed IPv6 multicast to use correct scope for interface
+
+ ntpd/ntp_io.c@1.138, 2004-08-19 18:32:26-04:00, mayer@pogo.udel.edu +24 -12
+ Fixed IPv6 multicast to use correct scope for interface
+
+ChangeSet@1.1227, 2004-08-16 19:31:28-04:00, mayer@pogo.udel.edu +1 -0
+ Miscellaneous fixes for sitelocal and linklocal IPv6 addresses
+
+ ntpd/ntp_io.c@1.137, 2004-08-16 19:30:48-04:00, mayer@pogo.udel.edu +23 -6
+ Miscellaneous fixes for sitelocal and linklocal IPv6 addresses
+
+ChangeSet@1.1226, 2004-08-15 23:32:21-04:00, mayer@tecotoo. +1 -0
+ Typo, should have checked for INT_MULTICAST instead of INT_BROADCAST
+
+ ntpd/ntp_io.c@1.136, 2004-08-15 23:31:48-04:00, mayer@tecotoo. +1 -1
+ Typo should have checked for INT_MULTICAST instead of INT_BROADCAST
+
+ChangeSet@1.1225, 2004-08-15 23:16:22-04:00, mayer@tecotoo. +1 -0
+ In IPv6 when looking for a multicast address check if the remote address is multicast
+
+ ntpd/ntp_io.c@1.135, 2004-08-15 23:15:56-04:00, mayer@tecotoo. +21 -2
+ In IPv6 when looking for a multicast address check if the remote address is multicast
+
+ChangeSet@1.1224, 2004-08-15 21:45:50-04:00, mayer@tecotoo. +1 -0
+ Added more detailed debug print statements
+
+ ntpd/ntp_io.c@1.134, 2004-08-15 21:45:25-04:00, mayer@tecotoo. +18 -18
+ Added more detailed debug print statements
+
+ChangeSet@1.1223, 2004-08-15 12:14:57-04:00, mayer@tecotoo. +1 -0
+ rewrote adding multicast client and added find_interface_index
+
+ ntpd/ntp_io.c@1.133, 2004-08-15 12:14:33-04:00, mayer@tecotoo. +44 -54
+ rewrote adding multicast client and added find_interface_index
+
+ChangeSet@1.1222, 2004-08-15 01:34:53-04:00, mayer@tecotoo. +1 -0
+ Use Id of the interface when printing join multicast group failures
+
+ ntpd/ntp_io.c@1.132, 2004-08-15 01:34:33-04:00, mayer@tecotoo. +3 -3
+ Use Id of the interface when printing join multicast group failures
+
+ChangeSet@1.1221, 2004-08-15 01:20:41-04:00, mayer@tecotoo. +1 -0
+ Added debug print statements
+
+ ntpd/ntp_io.c@1.131, 2004-08-15 01:20:19-04:00, mayer@tecotoo. +12 -6
+ Added debug print statements
+
+ChangeSet@1.1220, 2004-08-14 23:33:00-04:00, mayer@tecotoo. +2 -0
+ Redid findinterface and findbcastinter to properly find appropriate interface and use the family member from the interface struct
+
+ include/ntp.h@1.102, 2004-08-14 23:30:57-04:00, mayer@tecotoo. +14 -13
+ Added family to interface struct
+
+ ntpd/ntp_io.c@1.130, 2004-08-14 23:32:23-04:00, mayer@tecotoo. +86 -97
+ Redid findinterface and findbcastinter to properly find appropriate interface and use the family member from the interface struct
+
+ChangeSet@1.1202.1.12, 2004-08-13 05:48:21-04:00, stenn@pogo.udel.edu +1 -0
+ [Bug 301] ntp-keygen has no usage statement
+
+ util/ntp-keygen.c@1.29, 2004-08-13 05:47:54-04:00, stenn@pogo.udel.edu +44 -4
+ [Bug 301] ntp-keygen has no usage statement
+
+ChangeSet@1.1218, 2004-08-12 16:54:31-04:00, mayer@pogo.udel.edu +1 -0
+ findbcastinter needs to find a proper broadcast interface
+
+ ntpd/ntp_io.c@1.129, 2004-08-12 16:52:29-04:00, mayer@pogo.udel.edu +236 -5
+ findbcastinter needs to find a proper broadcast interface
+
+ChangeSet@1.1202.1.11, 2004-08-12 05:12:15-04:00, stenn@whimsy.udel.edu +1 -0
+ Use AC_HELP_STRING in configure.ac
+
+ configure.ac@1.351.1.5, 2004-08-12 05:12:06-04:00, stenn@whimsy.udel.edu +35 -20
+ Use AC_HELP_STRING in configure.ac
+
+ChangeSet@1.1217, 2004-08-11 23:06:43-04:00, mayer@tecotoo. +1 -0
+ Added files for inet_*ton functions
+
+ ports/winnt/libntp/libntp.dsp@1.20, 2004-08-11 23:06:27-04:00, mayer@tecotoo. +4 -0
+ Added files for inet_*ton functions
+
+ChangeSet@1.1202.1.10, 2004-08-11 22:28:30-04:00, stenn@whimsy.udel.edu +3 -0
+ FreeBSD lint
+
+ Makefile.am@1.48, 2004-08-11 22:28:10-04:00, stenn@whimsy.udel.edu +5 -5
+ FreeBSD lint
+
+ ntpdc/ntpdc.c@1.34, 2004-08-11 22:28:11-04:00, stenn@whimsy.udel.edu +5 -1
+ FreeBSD lint
+
+ ntpq/ntpq.c@1.49, 2004-08-11 22:28:11-04:00, stenn@whimsy.udel.edu +5 -1
+ FreeBSD lint
+
+ChangeSet@1.1216, 2004-08-11 18:04:11-04:00, mayer@pogo.udel.edu +1 -0
+ interfaces are not TCP-specific
+
+ ports/winnt/libisc/interfaceiter.c@1.4.1.1, 2004-08-11 18:03:09-04:00, mayer@pogo.udel.edu +1 -1
+ interfaces are not TCP-specific
+
+ChangeSet@1.1202.1.9, 2004-08-11 18:00:52-04:00, mayer@pogo.udel.edu +1 -0
+ interfaces are not TCP-specific
+
+ ports/winnt/libisc/interfaceiter.c@1.5, 2004-08-11 18:00:16-04:00, mayer@pogo.udel.edu +1 -1
+ interfaces are not TCP-specific
+
+ChangeSet@1.1202.1.8, 2004-08-10 19:36:31-04:00, mayer@pogo.udel.edu +1 -0
+ Fix to emit error strings when getting errors from system
+
+ ports/winnt/ntpd/win32_io.c@1.7.1.1, 2004-08-10 19:36:17-04:00, mayer@pogo.udel.edu +8 -8
+ Fix to emit error strings when getting errors from system
+
+ChangeSet@1.1214, 2004-08-10 19:25:24-04:00, mayer@pogo.udel.edu +1 -0
+ Fix to emit error strings when getting errors from system
+
+ ports/winnt/ntpd/win32_io.c@1.8, 2004-08-10 19:24:38-04:00, mayer@pogo.udel.edu +8 -8
+ Fix to emit error strings when getting errors from system
+
+ChangeSet@1.1202.1.7, 2004-08-10 01:24:58-04:00, stenn@www.ntp.org +1 -0
+ [Bug 208] Use -R in LDFLAGS when needed. (some other cleanup, too)
+
+ configure.ac@1.351.1.4, 2004-08-10 01:24:48-04:00, stenn@www.ntp.org +34 -12
+ [Bug 208] Use -R in LDFLAGS when needed. (some other cleanup, too)
+
+ChangeSet@1.1202.1.6, 2004-08-09 05:39:43-05:00, stenn@poog.il.thewrittenword.com +1 -0
+ OSF needs sys/time.h to test for sys/timex.h
+
+ configure.ac@1.351.1.3, 2004-08-09 05:39:22-05:00, stenn@poog.il.thewrittenword.com +7 -1
+ OSF needs sys/time.h to test for sys/timex.h
+
+ChangeSet@1.1202.1.5, 2004-08-09 05:38:32-05:00, stenn@poog.il.thewrittenword.com +2 -0
+ OSF cflags cleanup
+
+ BitKeeper/etc/logging_ok@1.50, 2004-08-09 05:38:31-05:00, stenn@poog.il.thewrittenword.com +1 -0
+ Logging to logging@openlogging.org accepted
+
+ m4/os_cflags.m4@1.2, 2004-08-09 05:38:03-05:00, stenn@poog.il.thewrittenword.com +23 -22
+ OSF cflags cleanup
+
+ChangeSet@1.1202.1.4, 2004-08-07 07:22:03-04:00, stenn@whimsy.udel.edu +6 -0
+ [Bug 166] Clean up Irix compile/link flags for 32/64 bits
+
+ BitKeeper/deleted/.del-acinclude.m4~457f12ef@1.13, 2004-08-07 06:27:18-04:00, stenn@whimsy.udel.edu +0 -0
+ Delete: acinclude.m4
+
+ Makefile.am@1.47, 2004-08-07 07:20:57-04:00, stenn@whimsy.udel.edu +5 -2
+ [Bug 166] Clean up Irix compile/link flags for 32/64 bits
+
+ configure.ac@1.351.1.2, 2004-08-07 07:20:58-04:00, stenn@whimsy.udel.edu +1 -19
+ [Bug 166] Clean up Irix compile/link flags for 32/64 bits
+
+ configure.ac@1.351.1.1, 2004-08-07 05:41:16-04:00, stenn@whimsy.udel.edu +0 -0
+ Rename: configure.in -> configure.ac
+
+ m4/define_dir.m4@1.1, 2004-08-07 06:28:00-04:00, stenn@whimsy.udel.edu +26 -0
+
+ m4/define_dir.m4@1.0, 2004-08-07 06:28:00-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/m4/define_dir.m4
+
+ m4/hs_ulong_const.m4@1.1, 2004-08-07 06:28:00-04:00, stenn@whimsy.udel.edu +11 -0
+
+ m4/hs_ulong_const.m4@1.0, 2004-08-07 06:28:00-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/m4/hs_ulong_const.m4
+
+ m4/os_cflags.m4@1.1, 2004-08-07 06:28:00-04:00, stenn@whimsy.udel.edu +86 -0
+
+ m4/os_cflags.m4@1.0, 2004-08-07 06:28:00-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev-hms/m4/os_cflags.m4
+
+ChangeSet@1.1202.1.3, 2004-08-06 03:42:21-04:00, stenn@www.ntp.org +2 -0
+ [Bug 321] Fix some alpha alignment issues and avoid a possibile DOS
+
+ BitKeeper/etc/logging_ok@1.49, 2004-08-06 03:42:20-04:00, stenn@www.ntp.org +1 -0
+ Logging to logging@openlogging.org accepted
+
+ ntpd/ntp_control.c@1.70.1.1, 2004-08-06 03:42:03-04:00, stenn@www.ntp.org +7 -4
+ [Bug 321] Fix some alpha alignment issues and avoid a possibile DOS
+
+ChangeSet@1.1202.1.2, 2004-08-05 23:40:16-04:00, stenn@whimsy.udel.edu +1 -0
+ No more autokey/rsa for mkver, just openssl now.
+
+ scripts/mkver.in@1.11, 2004-08-05 23:40:02-04:00, stenn@whimsy.udel.edu +5 -8
+ No more autokey/rsa for mkver, just openssl now.
+
+ChangeSet@1.1202.1.1, 2004-08-05 23:33:23-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 326] handle MAXTOKEN overflow better.
+
+ ntpd/ntp_config.c@1.106, 2004-08-05 23:33:09-04:00, stenn@whimsy.udel.edu +27 -10
+ [Bug 326] handle MAXTOKEN overflow better.
+
+ChangeSet@1.1212, 2004-08-05 00:14:18-04:00, mayer@tecotoo. +1 -0
+ Look for PPP for interface to the outside
+
+ ntpd/ntp_io.c@1.128, 2004-08-05 00:13:51-04:00, mayer@tecotoo. +18 -0
+ Look for PPP for interface to the outside
+
+ChangeSet@1.1211, 2004-08-04 18:41:17-04:00, mayer@pogo.udel.edu +1 -0
+ Fix cast in ntohl
+
+ ntpdc/ntpdc_ops.c@1.35, 2004-08-04 18:35:01-04:00, mayer@pogo.udel.edu +23 -23
+ Fix cast in ntohl
+
+ChangeSet@1.1210, 2004-08-04 18:10:22-04:00, mayer@pogo.udel.edu +2 -0
+ Fixes for scope ID
+
+ libisc/interfaceiter.c@1.11, 2004-08-04 18:09:36-04:00, mayer@pogo.udel.edu +6 -1
+ Fixes for scope ID
+
+ ntpd/ntp_io.c@1.127, 2004-08-04 18:09:36-04:00, mayer@pogo.udel.edu +3 -2
+ Fixes for scope ID
+
+ChangeSet@1.1209, 2004-08-04 02:28:09-04:00, mayer@tecotoo. +1 -0
+ Fix setting of only interface code
+
+ ntpd/ntp_io.c@1.126, 2004-08-04 02:27:41-04:00, mayer@tecotoo. +2 -2
+ Fix setting of only interface code
+
+ChangeSet@1.1208, 2004-08-03 18:39:54-04:00, mayer@pogo.udel.edu +2 -0
+ Linklocal and sitelocal IPv6 changes
+
+ include/ntp_rfc2553.h@1.26, 2004-08-03 18:38:57-04:00, mayer@pogo.udel.edu +14 -0
+ Add link-local and site-local IPv6 macros
+
+ ntpd/ntp_io.c@1.125, 2004-08-03 18:38:07-04:00, mayer@pogo.udel.edu +18 -0
+ Add check for link-local and site-local for IPv6 addresses when looking for interfaces
+
+ChangeSet@1.1207, 2004-08-02 22:36:39-04:00, mayer@tecotoo. +1 -0
+ findbcastinter should look for INT_BROADCAST flag
+
+ ntpd/ntp_io.c@1.124, 2004-08-02 22:36:20-04:00, mayer@tecotoo. +1 -1
+ findbcastinter should look for INT_BROADCAST flag
+
+ChangeSet@1.1206, 2004-08-02 22:19:13-04:00, mayer@tecotoo. +3 -0
+ findinterface cleanup and IPv4/IPv6 fixes
+
+ configure.in@1.352, 2004-08-02 22:15:55-04:00, mayer@tecotoo. +2 -0
+ Add check for inet_pton and inet_aton
+
+ libntp/ntp_rfc2553.c@1.20, 2004-08-02 22:16:44-04:00, mayer@tecotoo. +8 -2
+ fix port assignment
+
+ ntpd/ntp_io.c@1.123, 2004-08-02 22:18:20-04:00, mayer@tecotoo. +1 -2
+ Ongoing findinterface cleanup
+
+ChangeSet@1.1205, 2004-08-02 20:44:31-04:00, mayer@pogo.udel.edu +5 -0
+ Changes for proper IPv4 and IPv6 support
+
+ libisc/inet_aton.c@1.2, 2004-08-02 17:25:20-04:00, mayer@pogo.udel.edu +0 -3
+ Remove temporary changes to support Winnt
+
+ libntp/Makefile.am@1.30, 2004-08-02 18:27:20-04:00, mayer@pogo.udel.edu +3 -1
+ Added inet_pton and inet_aton to libisc
+
+ libntp/ntp_rfc2553.c@1.19, 2004-08-02 17:58:55-04:00, mayer@pogo.udel.edu +2 -2
+ Reorder the includes to prevent warnings
+
+ libntp/ntp_rfc2553.c@1.18, 2004-08-02 17:28:33-04:00, mayer@pogo.udel.edu +20 -15
+ Change to use inet_pton and cleanly support at least IPv6 addresses
+
+ ntpd/ntp_io.c@1.122, 2004-08-02 17:29:31-04:00, mayer@pogo.udel.edu +2 -15
+ changes to find the right local interface for outgoing packets
+
+ ports/winnt/include/config.h@1.28, 2004-08-02 17:23:51-04:00, mayer@pogo.udel.edu +1 -0
+ Added isascii, required for inet_aton
+
+ChangeSet@1.1204, 2004-08-02 00:35:56-04:00, mayer@tecotoo. +7 -0
+ Updates to support finding interfaces and address lookups
+
+ libisc/inet_aton.c@1.1, 2004-08-02 00:35:48-04:00, mayer@tecotoo. +198 -0
+
+ libisc/inet_aton.c@1.0, 2004-08-02 00:35:48-04:00, mayer@tecotoo. +0 -0
+ BitKeeper file H:/ntpbk/ntp-dev/libisc/inet_aton.c
+
+ libisc/inet_pton.c@1.1, 2004-08-02 00:35:49-04:00, mayer@tecotoo. +211 -0
+
+ libisc/inet_pton.c@1.0, 2004-08-02 00:35:49-04:00, mayer@tecotoo. +0 -0
+ BitKeeper file H:/ntpbk/ntp-dev/libisc/inet_pton.c
+
+ libntp/ntp_rfc2553.c@1.17, 2004-08-02 00:35:44-04:00, mayer@tecotoo. +15 -74
+ fix the code to properly handle addresses.
+
+ ntpd/ntp_control.c@1.71, 2004-08-02 00:35:45-04:00, mayer@tecotoo. +0 -1
+ no change
+
+ ntpd/ntp_io.c@1.121, 2004-08-02 00:35:46-04:00, mayer@tecotoo. +82 -3
+ changes to properly find outgoing interfaces
+
+ ports/winnt/include/config.h@1.27, 2004-08-02 00:35:47-04:00, mayer@tecotoo. +1 -0
+ Need inet_pton
+
+ ports/winnt/libntp/libntp.dsp@1.19, 2004-08-02 00:35:47-04:00, mayer@tecotoo. +8 -0
+ Add inet_pton and inet_aton
+
+ChangeSet@1.1203, 2004-07-28 23:44:06-04:00, mayer@tecotoo. +1 -0
+ clean up finding addresses and interfaces
+
+ ntpd/ntp_io.c@1.120, 2004-07-28 23:43:44-04:00, mayer@tecotoo. +37 -50
+ clean up finding addresses and interfaces
+
+ChangeSet@1.1202, 2004-07-27 19:24:53-04:00, mayer@pogo.udel.edu +1 -0
+ Changes for conditional support of broadcast and multicast on some platforms
+
+ ntpd/ntp_io.c@1.119, 2004-07-27 19:24:10-04:00, mayer@pogo.udel.edu +3 -2
+ Changes for conditional support of broadcast and multicast on some platforms
+
+ChangeSet@1.1201, 2004-07-26 23:12:26-04:00, mayer@tecotoo. +1 -0
+ Code cleanup and simplification
+
+ ntpd/ntp_io.c@1.118, 2004-07-26 23:11:58-04:00, mayer@tecotoo. +104 -101
+ Code cleanup and simplification
+
+ChangeSet@1.1200, 2004-07-26 10:18:16-04:00, mayer@pogo.udel.edu +1 -0
+ Not all O/S's support broadcast. Conditionally build the socket_broadcast_* code
+
+ ntpd/ntp_io.c@1.117, 2004-07-26 10:17:29-04:00, mayer@pogo.udel.edu +6 -4
+ Not all O/S's support broadcast. Conditionally build the socket_broadcast_* code
+
+ChangeSet@1.1199, 2004-07-25 23:28:14-04:00, mayer@tecotoo. +1 -0
+ Not all platforms support Multicast
+
+ ntpd/ntp_io.c@1.116, 2004-07-25 23:27:58-04:00, mayer@tecotoo. +6 -0
+ Not all platforms support Multicast
+
+ChangeSet@1.1198, 2004-07-25 23:07:04-04:00, mayer@tecotoo. +1 -0
+ Minor bugs in IPv6 codes. Remove unused variables
+
+ ntpd/ntp_io.c@1.115, 2004-07-25 23:06:44-04:00, mayer@tecotoo. +3 -6
+ Minor bugs in IPv6 codes. Remove unused variables
+
+ChangeSet@1.1197, 2004-07-25 22:44:57-04:00, mayer@tecotoo. +1 -0
+ Rewrite multicast and broadcast routines to remove wildcard requirements, improve flexibility and general code improvements
+
+ ntpd/ntp_io.c@1.114, 2004-07-25 22:44:21-04:00, mayer@tecotoo. +328 -245
+ Rewrite multicast and broadcast routines to remove wildcard requirements, improve flexibility and general code improvements
+
+ChangeSet@1.1192.1.2, 2004-07-22 00:20:36-04:00, mayer@tecotoo. +1 -0
+ If we can't figure out the address type assume it's IPv4
+
+ libntp/socktoa.c@1.7, 2004-07-22 00:20:18-04:00, mayer@tecotoo. +3 -0
+ If we can't figure out the address type assume it's IPv4
+
+ChangeSet@1.1189.1.2, 2004-07-22 00:11:05-04:00, mayer@tecotoo. +1 -0
+ For Multicast make sure socket can handle multicast
+
+ ntpd/ntp_io.c@1.113, 2004-07-22 00:10:36-04:00, mayer@tecotoo. +16 -10
+ For Multicast make sure socket can handle multicast
+
+ChangeSet@1.1195, 2004-07-20 02:42:59-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 307] Typo fix from Volkmar Grote
+
+ html/monopt.html@1.19, 2004-07-20 02:42:38-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 307] Typo fix from Volkmar Grote
+
+ChangeSet@1.1194, 2004-07-20 02:26:12-04:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 233] Apply rest of patch from Matthias Drochner
+
+ ntpd/refclock_shm.c@1.16, 2004-07-20 02:25:58-04:00, stenn@whimsy.udel.edu +4 -1
+ [Bug 233] Apply rest of patch from Matthias Drochner
+
+ ntpdc/ntpdc_ops.c@1.34, 2004-07-20 02:25:58-04:00, stenn@whimsy.udel.edu +5 -5
+ [Bug 233] Apply rest of patch from Matthias Drochner
+
+ChangeSet@1.1193, 2004-07-16 01:20:38-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 315] Provide prereq headers for configure.in
+
+ configure.in@1.351, 2004-07-16 01:20:22-04:00, stenn@whimsy.udel.edu +28 -2
+ [Bug 315] Provide prereq headers for configure.in
+
+ChangeSet@1.1189.1.1, 2004-07-12 21:57:57-04:00, mayer@tecotoo. +1 -0
+ IPv6 addresses caused the resultant refid to get it's values swapped on some machines
+
+ libntp/a_md5encrypt.c@1.18, 2004-07-12 21:57:30-04:00, mayer@tecotoo. +1 -1
+ IPv6 addresses caused the resultant refid to get it's values swapped on some machines
+
+ChangeSet@1.1191, 2004-07-12 19:36:51-04:00, stenn@whimsy.udel.edu +1 -0
+ Use UTC for the date in the version string for mkver.in
+
+ scripts/mkver.in@1.10, 2004-07-12 19:36:32-04:00, stenn@whimsy.udel.edu +1 -1
+ Use UTC for the date in the version string
+
+ChangeSet@1.1178.1.13, 2004-07-07 00:52:39-04:00, stenn@whimsy.udel.edu +1 -0
+ Fix from Dave Mills
+
+ libntp/systime.c@1.31, 2004-07-07 00:52:22-04:00, stenn@whimsy.udel.edu +2 -7
+ Fix from Dave Mills
+
+ChangeSet@1.1189, 2004-07-05 23:36:39-04:00, mayer@tecotoo. +3 -0
+ Multicast modifications and extraneous macro definition removal
+
+ include/ntp.h@1.101, 2004-07-05 23:36:31-04:00, mayer@tecotoo. +2 -1
+ Flags change to differentiate between mulitcast capable and multicast in use
+
+ ntpd/ntp_io.c@1.112, 2004-07-05 23:36:32-04:00, mayer@tecotoo. +8 -6
+ Add multicast capable flags when available.
+ Change multicast flag to show socket is being used for multicast
+
+ ntpd/ntpd.c@1.55, 2004-07-05 23:36:33-04:00, mayer@tecotoo. +2 -4
+ Remove unnecessary macro condition
+
+ChangeSet@1.1188, 2004-07-03 18:30:24-04:00, mayer@tecotoo. +2 -0
+ include updates for winnt
+
+ ports/winnt/libntp/libntp.dsp@1.18, 2004-07-03 18:08:42-04:00, mayer@tecotoo. +4 -0
+ Added ntp_rfc2553.h to list of includes
+
+ ports/winnt/ntpd/ntpd.dsp@1.20, 2004-07-03 18:08:42-04:00, mayer@tecotoo. +0 -4
+ map_vme.c not used.
+
+ChangeSet@1.1187, 2004-07-03 17:54:02-04:00, mayer@tecotoo. +1 -0
+ Removed unreachable code
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.12, 2004-07-03 17:53:47-04:00, mayer@tecotoo. +0 -1
+ Removed unreachable code
+
+ChangeSet@1.1186, 2004-07-03 17:52:50-04:00, mayer@tecotoo. +1 -0
+ #endif was in wrong place
+
+ ntpd/ntp_proto.c@1.180, 2004-07-03 17:52:29-04:00, mayer@tecotoo. +1 -1
+ #endif was in wrong place
+
+ChangeSet@1.1183, 2004-07-03 16:56:20-04:00, mayer@tecotoo. +1 -0
+ handle empty sockets and unknown address family
+
+ libntp/socktoa.c@1.6, 2004-07-03 16:55:09-04:00, mayer@tecotoo. +8 -2
+ handle empty sockets and unknown address family
+
+ChangeSet@1.1178.1.12, 2004-05-06 01:39:49-04:00, stenn@whimsy.udel.edu +5 -0
+ Cleanup from Dave Mills
+
+ html/drivers/driver36.html@1.23, 2004-05-06 01:39:06-04:00, stenn@whimsy.udel.edu +0 -2
+ Cleanup from Dave Mills
+
+ html/drivers/driver6.html@1.18, 2004-05-06 01:39:06-04:00, stenn@whimsy.udel.edu +0 -2
+ Cleanup from Dave Mills
+
+ html/drivers/driver7.html@1.21, 2004-05-06 01:39:07-04:00, stenn@whimsy.udel.edu +0 -2
+ Cleanup from Dave Mills
+
+ html/drivers/scripts/footer.txt@1.1, 2004-05-06 01:37:41-04:00, stenn@whimsy.udel.edu +7 -0
+
+ html/drivers/scripts/footer.txt@1.0, 2004-05-06 01:37:41-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/drivers/scripts/footer.txt
+
+ html/drivers/scripts/style.css@1.1, 2004-05-06 01:37:41-04:00, stenn@whimsy.udel.edu +64 -0
+
+ html/drivers/scripts/style.css@1.0, 2004-05-06 01:37:41-04:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/drivers/scripts/style.css
+
+ChangeSet@1.1178.1.11, 2004-05-04 03:43:00-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 305] More lint
+
+ ntpd/ntp_refclock.c@1.58, 2004-05-04 03:42:37-04:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 305] More lint
+
+ChangeSet@1.1178.3.1, 2004-05-04 01:01:59-04:00, stenn@whimsy.udel.edu +3 -0
+ Cleanup/fixes from Dave Mills.
+
+ include/ntpd.h@1.66, 2004-05-04 01:01:25-04:00, stenn@whimsy.udel.edu +1 -0
+ Cleanup/fixes from Dave Mills.
+
+ ntpd/ntp_filegen.c@1.9, 2004-05-04 01:01:25-04:00, stenn@whimsy.udel.edu +5 -0
+ Cleanup/fixes from Dave Mills.
+
+ ntpd/ntp_loopfilter.c@1.95, 2004-05-04 01:01:32-04:00, stenn@whimsy.udel.edu +5 -3
+ Cleanup/fixes from Dave Mills.
+
+ChangeSet@1.1181, 2004-04-25 10:35:51-04:00, mayer@tecotoo. +1 -0
+ Bug fix
+
+ ports/winnt/include/config.h@1.24.1.1, 2004-04-25 10:35:16-04:00, mayer@tecotoo. +1 -1
+
+ChangeSet@1.1178.1.8, 2004-04-23 19:23:39-04:00, mayer@pogo.udel.edu +3 -0
+ Modification to correct for type errors
+
+ include/ntp_rfc2553.h@1.25, 2004-04-23 19:21:15-04:00, mayer@pogo.udel.edu +16 -16
+ Move u_int*_t types to ntp_* to avoid conflicts
+
+ include/ntp_types.h@1.8, 2004-04-23 19:21:15-04:00, mayer@pogo.udel.edu +3 -5
+ Move u_int*_t types to ntp_* to avoid conflicts
+
+ ntpd/ntp_io.c@1.110, 2004-04-23 19:22:36-04:00, mayer@pogo.udel.edu +4 -0
+ Modified to add hex value of network address to output for Multicast errors
+
+ChangeSet@1.1178.2.3, 2004-04-19 20:20:20-04:00, stenn@whimsy.udel.edu +1 -0
+ manycast poll bugfix from Dave Mills.
+
+ ntpd/ntp_proto.c@1.178, 2004-04-19 20:19:55-04:00, stenn@whimsy.udel.edu +1 -1
+ manycast poll bugfix from Dave Mills.
+
+ChangeSet@1.1178.2.2, 2004-04-17 17:33:32-04:00, stenn@pogo.udel.edu +1 -0
+ Always see if we need in6addr_any
+
+ configure.in@1.350, 2004-04-17 17:33:17-04:00, stenn@pogo.udel.edu +6 -5
+ Always see if we need in6addr_any
+
+ChangeSet@1.1178.2.1, 2004-04-17 17:32:38-04:00, stenn@pogo.udel.edu +1 -0
+ Added cowbird to the flock-build
+
+ flock-build@1.30, 2004-04-17 17:32:22-04:00, stenn@pogo.udel.edu +1 -1
+ Added cowbird to the flock-build
+
+ChangeSet@1.1178.1.5, 2004-04-16 20:42:21-04:00, mayer@pogo.udel.edu +2 -0
+ Fix for AIX to initialize in6addr_any
+
+ libntp/ntp_rfc2553.c@1.16, 2004-04-16 20:40:05-04:00, mayer@pogo.udel.edu +4 -1
+ Fix for AIX to initialize in6addr_any
+
+ ports/winnt/include/config.h@1.25, 2004-04-16 20:41:27-04:00, mayer@pogo.udel.edu +2 -0
+ Fix for AIX to initialize in6addr_any
+
+ChangeSet@1.1152.34.1, 2004-04-11 18:53:56+01:00, mbrett@rgs16.fordson.demon.co.uk +7 -0
+ Many files:
+ Changes for type-paranoid MIPSpro compiler.
+
+ ntpd/ntp_config.c@1.100.1.1, 2004-04-11 18:52:24+01:00, mbrett@rgs16.fordson.demon.co.uk +1 -1
+ Changes for type-paranoid MIPSpro compiler.
+
+ ntpd/ntp_intres.c@1.32.1.1, 2004-04-11 18:52:33+01:00, mbrett@rgs16.fordson.demon.co.uk +1 -1
+ Changes for type-paranoid MIPSpro compiler.
+
+ ntpd/ntp_io.c@1.105.2.1, 2004-04-11 18:52:36+01:00, mbrett@rgs16.fordson.demon.co.uk +4 -4
+ Changes for type-paranoid MIPSpro compiler.
+
+ ntpd/ntp_proto.c@1.172.1.1, 2004-04-11 18:52:40+01:00, mbrett@rgs16.fordson.demon.co.uk +3 -3
+ Changes for type-paranoid MIPSpro compiler.
+
+ ntpdc/ntpdc_ops.c@1.29.1.1, 2004-04-11 18:51:44+01:00, mbrett@rgs16.fordson.demon.co.uk +17 -17
+ Changes for type-paranoid MIPSpro compiler.
+
+ ntpq/ntpq_ops.c@1.20, 2004-04-11 18:52:47+01:00, mbrett@rgs16.fordson.demon.co.uk +1 -1
+ Changes for type-paranoid MIPSpro compiler.
+
+ ntpq/ntpq.c@1.45.1.1, 2004-04-11 18:52:43+01:00, mbrett@rgs16.fordson.demon.co.uk +2 -2
+ Changes for type-paranoid MIPSpro compiler.
+
+ChangeSet@1.1178.1.4, 2004-04-07 20:45:38-04:00, stenn@whimsy.udel.edu +1 -0
+ refclock_oncore.c cleanup from Reg Clemens
+
+ ntpd/refclock_oncore.c@1.51, 2004-04-07 20:45:29-04:00, stenn@whimsy.udel.edu +0 -11
+ refclock_oncore.c cleanup from Reg Clemens
+
+ChangeSet@1.1177.1.5, 2004-04-07 20:38:47-04:00, stenn@whimsy.udel.edu +8 -0
+ Cleanup from Dave Mills
+
+ include/ntp.h@1.100, 2004-04-07 20:38:35-04:00, stenn@whimsy.udel.edu +2 -0
+ Cleanup from Dave Mills
+
+ include/ntp_control.h@1.25, 2004-04-07 20:38:36-04:00, stenn@whimsy.udel.edu +7 -6
+ Cleanup from Dave Mills
+
+ include/ntp_crypto.h@1.34, 2004-04-07 20:38:36-04:00, stenn@whimsy.udel.edu +2 -3
+ Cleanup from Dave Mills
+
+ ntpd/ntp_control.c@1.70, 2004-04-07 20:38:36-04:00, stenn@whimsy.udel.edu +20 -10
+ Cleanup from Dave Mills
+
+ ntpd/ntp_crypto.c@1.93, 2004-04-07 20:38:36-04:00, stenn@whimsy.udel.edu +21 -18
+ Cleanup from Dave Mills
+
+ ntpd/ntp_proto.c@1.177, 2004-04-07 20:38:37-04:00, stenn@whimsy.udel.edu +9 -5
+ Cleanup from Dave Mills
+
+ ntpd/refclock_chu.c@1.35, 2004-04-07 20:38:37-04:00, stenn@whimsy.udel.edu +1 -1
+ Cleanup from Dave Mills
+
+ ntpq/ntpq.c@1.47, 2004-04-07 20:38:37-04:00, stenn@whimsy.udel.edu +1 -1
+ Cleanup from Dave Mills
+
+ChangeSet@1.1178.1.1, 2004-04-07 16:48:52-04:00, mayer@pogo.udel.edu +1 -0
+ Fix for Windows select timeout
+
+ ntpdate/ntpdate.c@1.47, 2004-04-07 16:48:07-04:00, mayer@pogo.udel.edu +17 -0
+ Fix for Windows select timeout
+
+ChangeSet@1.1177.1.4, 2004-04-07 15:48:32-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 275] Expose needed glue in ntp-keygen
+
+ util/ntp-keygen.c@1.28, 2004-04-07 15:48:18-04:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 275] Expose needed glue in ntp-keygen
+
+ChangeSet@1.1177.1.3, 2004-04-06 00:56:17-04:00, stenn@whimsy.udel.edu +1 -0
+ cleanup
+
+ include/timepps-Solaris.h@1.4, 2004-04-06 00:55:43-04:00, stenn@whimsy.udel.edu +0 -1
+ cleanup
+
+ChangeSet@1.1177.2.1, 2004-04-06 00:36:24-04:00, stenn@whimsy.udel.edu +2 -0
+ Cleanup from Reg Clemens
+
+ include/timepps-Solaris.h@1.3, 2004-04-06 00:36:03-04:00, stenn@whimsy.udel.edu +5 -0
+ Cleanup from Reg Clemens
+
+ include/timepps-SunOS.h@1.3, 2004-04-06 00:36:03-04:00, stenn@whimsy.udel.edu +1 -4
+ Cleanup from Reg Clemens
+
+ChangeSet@1.1177.1.1, 2004-04-05 14:11:34-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 299] Distribute timepps-*.h
+
+ include/Makefile.am@1.19, 2004-04-05 14:11:11-04:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 299] Distribute timepps-*.h
+
+ChangeSet@1.1177, 2004-04-04 23:00:44-04:00, stenn@whimsy.udel.edu +2 -0
+ Cleanup from Dave Mills
+
+ include/ntp_crypto.h@1.33, 2004-04-04 23:00:29-04:00, stenn@whimsy.udel.edu +1 -0
+ Cleanup from Dave Mills
+
+ ntpd/ntp_crypto.c@1.92, 2004-04-04 23:00:29-04:00, stenn@whimsy.udel.edu +65 -42
+ Cleanup from Dave Mills
+
+ChangeSet@1.1176, 2004-04-04 22:44:03-04:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 241] Dave agrees the patch is correct.
+
+ ntpd/ntp_config.c@1.102.1.2, 2004-04-04 22:43:48-04:00, stenn@whimsy.udel.edu +0 -5
+ [Bug 241] Dave agrees the patch is correct.
+
+ChangeSet@1.1175, 2004-04-03 21:18:24-05:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 275] Build ntp-keygen even if no OPENSSL.
+
+ configure.in@1.349, 2004-04-03 21:18:09-05:00, stenn@whimsy.udel.edu +0 -3
+ [Bug 275] Build ntp-keygen even if no OPENSSL.
+
+ util/Makefile.am@1.24, 2004-04-03 21:18:09-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 275] Build ntp-keygen even if no OPENSSL.
+
+ util/ntp-keygen.c@1.27, 2004-04-03 21:18:09-05:00, stenn@whimsy.udel.edu +49 -5
+ [Bug 275] Build ntp-keygen even if no OPENSSL.
+
+ChangeSet@1.1174, 2004-04-03 02:48:23-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 241] Fix from Matthias Drochner
+
+ ntpd/ntp_config.c@1.102.1.1, 2004-04-03 02:48:10-05:00, stenn@whimsy.udel.edu +2 -1
+ [Bug 241] Fix from Matthias Drochner
+
+ChangeSet@1.1152.33.2, 2004-04-03 02:17:22-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 277] Ultralink 325 support from Frank Migge
+
+ ntpd/refclock_ulink.c@1.13, 2004-04-03 02:17:05-05:00, stenn@whimsy.udel.edu +161 -69
+ [Bug 277] Ultralink 325 support from Frank Migge
+
+ChangeSet@1.1152.33.1, 2004-04-03 01:56:25-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 217] Typo in ntptrace
+
+ scripts/ntptrace.in@1.4, 2004-04-03 01:56:06-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 217] Typo in ntptrace
+
+ChangeSet@1.1152.1.98, 2004-04-02 16:07:14-05:00, mayer@pogo.udel.edu +1 -0
+ remove pps_device[] array that crept back in
+
+ ntpd/ntp_config.c@1.103, 2004-04-02 16:06:37-05:00, mayer@pogo.udel.edu +0 -1
+ remove pps_device[] array that crept back in
+
+ChangeSet@1.1152.1.97, 2004-04-02 15:20:54-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 298] Fix typos in configure.in
+
+ configure.in@1.348, 2004-04-02 15:20:37-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 298] Fix typos in configure.in
+
+ChangeSet@1.1152.32.5, 2004-04-01 15:23:22-05:00, mayer@pogo.udel.edu +8 -0
+ ntpdc_ops.c:
+ undo all of the changes to the header include order as some systems in the flock had trouble with the reordering
+ ntpdc_ops.c, ntp_intres.c:
+ Undo some of the reordering of includes
+ Many files:
+ reorder includes to make sure that the AI_* macros don't get defined before the system has a chance to define them
+ ntp_fp.h:
+ change inclusion order of netinet/in.h and ntp_rfc2553.h
+
+ include/ntp_fp.h@1.11, 2004-03-30 18:09:26-05:00, mayer@pogo.udel.edu +1 -1
+ change inclusion order of netinet/in.h and ntp_rfc2553.h
+
+ ntpd/ntp_config.c@1.102, 2004-03-30 18:41:19-05:00, mayer@pogo.udel.edu +3 -2
+ reorder includes to make sure that the AI_* macros don't get defined before the system has a chance to define them
+
+ ntpd/ntp_intres.c@1.34, 2004-03-30 20:12:11-05:00, mayer@pogo.udel.edu +9 -8
+ Undo some of the reordering of includes
+
+ ntpd/ntp_intres.c@1.33, 2004-03-30 18:41:20-05:00, mayer@pogo.udel.edu +7 -7
+ reorder includes to make sure that the AI_* macros don't get defined before the system has a chance to define them
+
+ ntpd/ntp_resolver.c@1.17, 2004-03-30 18:41:20-05:00, mayer@pogo.udel.edu +7 -7
+ reorder includes to make sure that the AI_* macros don't get defined before the system has a chance to define them
+
+ ntpd/refclock_nmea.c@1.23, 2004-03-30 18:42:44-05:00, mayer@pogo.udel.edu +5 -5
+ reorder includes to make sure that the AI_* macros don't get defined before the system has a chance to define them
+
+ ntpdc/ntpdc.c@1.33, 2004-03-30 18:26:37-05:00, mayer@pogo.udel.edu +5 -5
+ reorder includes to make sure that the AI_* macros don't get defined before the system has a chance to define them
+
+ ntpdc/ntpdc_ops.c@1.32, 2004-04-01 15:02:55-05:00, mayer@pogo.udel.edu +6 -7
+ undo all of the changes to the header include order as some systems in the flock had trouble with the reordering
+
+ ntpdc/ntpdc_ops.c@1.31, 2004-03-30 20:12:11-05:00, mayer@pogo.udel.edu +5 -4
+ Undo some of the reordering of includes
+
+ ntpdc/ntpdc_ops.c@1.30, 2004-03-30 18:43:04-05:00, mayer@pogo.udel.edu +8 -8
+ reorder includes to make sure that the AI_* macros don't get defined before the system has a chance to define them
+
+ ntpq/ntpq.c@1.46, 2004-03-30 18:26:45-05:00, mayer@pogo.udel.edu +7 -6
+ reorder includes to make sure that the AI_* macros don't get defined before the system has a chance to define them
+
+ChangeSet@1.1152.1.95, 2004-03-29 21:57:51-05:00, stenn@whimsy.udel.edu +1 -0
+ New irig notes from Dave Mills
+
+ ntpd/refclock_irig.c@1.21, 2004-03-29 21:57:12-05:00, stenn@whimsy.udel.edu +14 -14
+ New notes from Dave Mills
+
+ChangeSet@1.1152.32.4, 2004-03-26 20:10:51-05:00, mayer@pogo.udel.edu +1 -0
+ remove reference to include netdb.h. porkypine doesn't protect itself against multiple includes
+
+ include/ntp_rfc2553.h@1.24, 2004-03-26 20:09:03-05:00, mayer@pogo.udel.edu +0 -1
+ remove reference to include netdb.h. porkypine doesn't protect itself against multiple includes
+
+ChangeSet@1.1152.32.3, 2004-03-26 19:39:33-05:00, mayer@pogo.udel.edu +1 -0
+ Remove some includes as porkypine complained
+
+ include/ntp_rfc2553.h@1.23, 2004-03-26 19:38:13-05:00, mayer@pogo.udel.edu +1 -13
+ Remove some includes as porkypine complained
+
+ChangeSet@1.1152.32.2, 2004-03-26 17:53:26-05:00, mayer@pogo.udel.edu +2 -0
+ Fix the macros in ntp_rfc2553.h by including network headers and make ntp_io.c conditionally allow IPv6 multicast only if the macros are defined
+
+ include/ntp_rfc2553.h@1.22, 2004-03-26 17:49:45-05:00, mayer@pogo.udel.edu +13 -0
+ add includes to ntp_rfc2553.h to ensure that macros are defined in case they don't need to be defined
+
+ ntpd/ntp_io.c@1.109, 2004-03-26 17:50:53-05:00, mayer@pogo.udel.edu +2 -2
+ Make IPV6 multicast conditional on the inclusion of the IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP
+
+ChangeSet@1.1152.32.1, 2004-03-26 09:46:49-05:00, mayer@pogo.udel.edu +1 -0
+ #endif for DEBUG was one line too far down, causing problems with release builds
+
+ ntpd/ntp_proto.c@1.176, 2004-03-26 09:44:50-05:00, mayer@pogo.udel.edu +1 -1
+ #endif for DEBUG was one line too far down, causing problems with release builds
+
+ChangeSet@1.1152.31.6, 2004-03-25 21:20:54-05:00, stenn@whimsy.udel.edu +1 -0
+ Fixed from Dave Mills.
+
+ ntpd/ntp_loopfilter.c@1.94, 2004-03-25 21:20:41-05:00, stenn@whimsy.udel.edu +3 -3
+ Fixed from Dave Mills.
+
+ChangeSet@1.1152.31.5, 2004-03-25 21:17:21-05:00, stenn@whimsy.udel.edu +1 -0
+ jitter.c fixes from Dave Mills.
+
+ util/jitter.c@1.5, 2004-03-25 21:17:03-05:00, stenn@whimsy.udel.edu +67 -5
+ fixes from Dave Mills.
+
+ChangeSet@1.1152.31.4, 2004-03-25 21:13:54-05:00, stenn@whimsy.udel.edu +46 -0
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver23.html@1.12, 2004-03-25 21:12:21-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver24.html@1.9, 2004-03-25 21:12:21-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/build/build.html@1.20, 2004-03-25 21:12:17-05:00, stenn@whimsy.udel.edu +12 -12
+ Documentation cleanup/resync with Dave.
+
+ html/build/config.html@1.18, 2004-03-25 21:12:17-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/build/hints.html@1.14, 2004-03-25 21:12:17-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/build/hints/solaris.html@1.8, 2004-03-25 21:12:18-05:00, stenn@whimsy.udel.edu +1 -1
+ Documentation cleanup/resync with Dave.
+
+ html/build/hints/vxworks.html@1.7, 2004-03-25 21:12:19-05:00, stenn@whimsy.udel.edu +5 -5
+ Documentation cleanup/resync with Dave.
+
+ html/build/hints/winnt.html@1.15, 2004-03-25 21:12:19-05:00, stenn@whimsy.udel.edu +4 -4
+ Documentation cleanup/resync with Dave.
+
+ html/build/patches.html@1.17, 2004-03-25 21:12:17-05:00, stenn@whimsy.udel.edu +3 -3
+ Documentation cleanup/resync with Dave.
+
+ html/build/porting.html@1.13, 2004-03-25 21:12:17-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/build/quick.html@1.16, 2004-03-25 21:12:17-05:00, stenn@whimsy.udel.edu +6 -6
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver1.html@1.14, 2004-03-25 21:12:20-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver10.html@1.11, 2004-03-25 21:12:20-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver11.html@1.11, 2004-03-25 21:12:20-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver12.html@1.11, 2004-03-25 21:12:20-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver16.html@1.10, 2004-03-25 21:12:20-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver18.html@1.11, 2004-03-25 21:12:21-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver19.html@1.10, 2004-03-25 21:12:21-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver2.html@1.11, 2004-03-25 21:12:21-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver20.html@1.13, 2004-03-25 21:12:21-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver22.html@1.15, 2004-03-25 21:12:21-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver26.html@1.9, 2004-03-25 21:12:22-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver27.html@1.13, 2004-03-25 21:12:22-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver28.html@1.10, 2004-03-25 21:12:22-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver29.html@1.12, 2004-03-25 21:12:22-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver3.html@1.10, 2004-03-25 21:12:22-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver30.html@1.18, 2004-03-25 21:12:22-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver32.html@1.11, 2004-03-25 21:12:23-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver33.html@1.11, 2004-03-25 21:12:23-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver34.html@1.10, 2004-03-25 21:12:23-05:00, stenn@whimsy.udel.edu +80 -45
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver35.html@1.13, 2004-03-25 21:12:23-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver36.html@1.22, 2004-03-25 21:12:23-05:00, stenn@whimsy.udel.edu +3 -3
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver37.html@1.11, 2004-03-25 21:12:23-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver38.html@1.11, 2004-03-25 21:12:24-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver39.html@1.11, 2004-03-25 21:12:24-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver4.html@1.11, 2004-03-25 21:12:24-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver40.html@1.10, 2004-03-25 21:12:24-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver42.html@1.11, 2004-03-25 21:12:24-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver43.html@1.8, 2004-03-25 21:12:24-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver44.html@1.10, 2004-03-25 21:12:24-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver5.html@1.11, 2004-03-25 21:12:25-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver6.html@1.17, 2004-03-25 21:12:25-05:00, stenn@whimsy.udel.edu +3 -3
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver7.html@1.20, 2004-03-25 21:12:25-05:00, stenn@whimsy.udel.edu +3 -3
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver8.html@1.13, 2004-03-25 21:12:25-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/driver9.html@1.13, 2004-03-25 21:12:25-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ html/drivers/oncore-shmem.html@1.11, 2004-03-25 21:12:25-05:00, stenn@whimsy.udel.edu +2 -2
+ Documentation cleanup/resync with Dave.
+
+ChangeSet@1.1152.1.90, 2004-03-25 20:04:11-05:00, mayer@pogo.udel.edu +2 -0
+ Added conditional macro for scope_id
+
+ libisc/interfaceiter.c@1.10, 2004-03-25 20:03:21-05:00, mayer@pogo.udel.edu +5 -1
+ Added conditional macro for scope_id
+
+ ntpd/ntp_io.c@1.108, 2004-03-25 20:03:21-05:00, mayer@pogo.udel.edu +4 -0
+ Added conditional macro for scope_id
+
+ChangeSet@1.1152.31.3, 2004-03-24 23:31:23-05:00, stenn@whimsy.udel.edu +49 -0
+ Resync html/ with the master copy from Dave.
+
+ html/authopt.html@1.32, 2004-03-24 23:25:13-05:00, stenn@whimsy.udel.edu +5 -5
+ Resync html/ with the master copy from Dave.
+
+ html/build/build.html@1.19, 2004-03-24 23:19:36-05:00, stenn@whimsy.udel.edu +0 -0
+ Rename: html/build.html -> html/build/build.html
+
+ html/build/config.html@1.17, 2004-03-24 23:19:36-05:00, stenn@whimsy.udel.edu +0 -0
+ Rename: html/config.html -> html/build/config.html
+
+ html/build/hints.html@1.13, 2004-03-24 23:19:36-05:00, stenn@whimsy.udel.edu +0 -0
+ Rename: html/hints.html -> html/build/hints.html
+
+ html/build/hints/a-ux@1.3, 2004-03-24 23:10:45-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/aix@1.3, 2004-03-24 23:10:45-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/bsdi@1.3, 2004-03-24 23:10:46-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/changes@1.3, 2004-03-24 23:10:46-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/decosf1@1.3, 2004-03-24 23:10:46-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/decosf2@1.3, 2004-03-24 23:10:46-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/freebsd@1.3, 2004-03-24 23:10:46-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/hpux@1.3, 2004-03-24 23:10:46-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/linux@1.3, 2004-03-24 23:10:46-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/mpeix@1.3, 2004-03-24 23:10:46-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/netbsd@1.2, 2004-03-24 23:10:47-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/notes-xntp-v3@1.3, 2004-03-24 23:10:47-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/parse@1.3, 2004-03-24 23:10:47-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/refclocks@1.3, 2004-03-24 23:10:47-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/rs6000@1.3, 2004-03-24 23:10:47-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/sco.html@1.7, 2004-03-24 23:10:47-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/sgi@1.3, 2004-03-24 23:10:47-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/solaris-dosynctodr.html@1.4, 2004-03-24 23:10:47-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/solaris.html@1.7, 2004-03-24 23:10:48-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/solaris.xtra.4023118@1.3, 2004-03-24 23:10:48-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/solaris.xtra.4095849@1.3, 2004-03-24 23:10:48-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/solaris.xtra.S99ntpd@1.4, 2004-03-24 23:10:48-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/solaris.xtra.patchfreq@1.3, 2004-03-24 23:10:48-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/sun4@1.3, 2004-03-24 23:10:48-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/svr4-dell@1.3, 2004-03-24 23:10:48-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/svr4_package@1.3, 2004-03-24 23:10:48-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/todo@1.3, 2004-03-24 23:10:49-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/vxworks.html@1.6, 2004-03-24 23:10:49-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/hints/winnt.html@1.14, 2004-03-24 23:10:49-05:00, stenn@whimsy.udel.edu +0 -0
+ mvdir
+
+ html/build/patches.html@1.16, 2004-03-24 23:19:37-05:00, stenn@whimsy.udel.edu +0 -0
+ Rename: html/patches.html -> html/build/patches.html
+
+ html/build/porting.html@1.12, 2004-03-24 23:19:37-05:00, stenn@whimsy.udel.edu +0 -0
+ Rename: html/porting.html -> html/build/porting.html
+
+ html/build/quick.html@1.15, 2004-03-24 23:22:11-05:00, stenn@whimsy.udel.edu +0 -0
+ Rename: html/quick.html -> html/build/quick.html
+
+ html/build/scripts/footer.txt@1.1, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +7 -0
+
+ html/build/scripts/footer.txt@1.0, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/build/scripts/footer.txt
+
+ html/build/scripts/links10.txt@1.1, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +5 -0
+
+ html/build/scripts/links10.txt@1.0, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/build/scripts/links10.txt
+
+ html/build/scripts/links11.txt@1.1, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +5 -0
+
+ html/build/scripts/links11.txt@1.0, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/build/scripts/links11.txt
+
+ html/build/scripts/links12.txt@1.1, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +5 -0
+
+ html/build/scripts/links12.txt@1.0, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/build/scripts/links12.txt
+
+ html/build/scripts/links7.txt@1.1, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +5 -0
+
+ html/build/scripts/links7.txt@1.0, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/build/scripts/links7.txt
+
+ html/build/scripts/links8.txt@1.1, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +6 -0
+
+ html/build/scripts/links8.txt@1.0, 2004-03-24 23:29:11-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/build/scripts/links8.txt
+
+ html/build/scripts/links9.txt@1.1, 2004-03-24 23:29:12-05:00, stenn@whimsy.udel.edu +7 -0
+
+ html/build/scripts/links9.txt@1.0, 2004-03-24 23:29:12-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/build/scripts/links9.txt
+
+ html/build/scripts/style.css@1.1, 2004-03-24 23:29:12-05:00, stenn@whimsy.udel.edu +64 -0
+
+ html/build/scripts/style.css@1.0, 2004-03-24 23:29:12-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/build/scripts/style.css
+
+ html/drivers/driver31.html@1.1, 2004-03-24 23:28:57-05:00, stenn@whimsy.udel.edu +56 -0
+
+ html/drivers/driver31.html@1.0, 2004-03-24 23:28:57-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /deacon/backroom/ntp-dev/html/drivers/driver31.html
+
+ html/howto.html@1.17, 2004-03-24 23:25:14-05:00, stenn@whimsy.udel.edu +2 -2
+ Resync html/ with the master copy from Dave.
+
+ html/index.html@1.30, 2004-03-24 23:25:14-05:00, stenn@whimsy.udel.edu +9 -9
+ Resync html/ with the master copy from Dave.
+
+ html/notes.html@1.16, 2004-03-24 23:25:15-05:00, stenn@whimsy.udel.edu +2 -2
+ Resync html/ with the master copy from Dave.
+
+ html/release.html@1.29, 2004-03-24 23:25:16-05:00, stenn@whimsy.udel.edu +1 -1
+ Resync html/ with the master copy from Dave.
+
+ChangeSet@1.1152.31.2, 2004-03-24 22:04:57-05:00, stenn@whimsy.udel.edu +5 -0
+ PPS cleanup from Dave Mills.
+
+ include/ntpd.h@1.65, 2004-03-24 22:04:41-05:00, stenn@whimsy.udel.edu +1 -2
+ PPS cleanup from Dave Mills.
+
+ ntpd/ntp_config.c@1.101, 2004-03-24 22:04:41-05:00, stenn@whimsy.udel.edu +0 -1
+ PPS cleanup from Dave Mills.
+
+ ntpd/ntp_loopfilter.c@1.93, 2004-03-24 22:04:41-05:00, stenn@whimsy.udel.edu +8 -1
+ PPS cleanup from Dave Mills.
+
+ ntpd/ntp_refclock.c@1.57, 2004-03-24 22:04:42-05:00, stenn@whimsy.udel.edu +7 -15
+ PPS cleanup from Dave Mills.
+
+ ntpd/refclock_atom.c@1.43, 2004-03-24 22:04:42-05:00, stenn@whimsy.udel.edu +11 -13
+ PPS cleanup from Dave Mills.
+
+ChangeSet@1.1152.31.1, 2004-03-24 21:55:36-05:00, stenn@whimsy.udel.edu +1 -0
+ Have configure look for struct sockaddr_in6.sin6_scope_id
+
+ configure.in@1.347, 2004-03-24 21:55:23-05:00, stenn@whimsy.udel.edu +9 -0
+ Have configure look for struct sockaddr_in6.sin6_scope_id
+
+ChangeSet@1.1152.29.3, 2004-03-24 17:27:43-05:00, mayer@pogo.udel.edu +2 -0
+ Change u_int64_t to ntp_int64_t to avoid O/S problems
+
+ include/ntp_rfc2553.h@1.21, 2004-03-24 17:26:57-05:00, mayer@pogo.udel.edu +2 -2
+ Change u_int64_t to ntp_int64_t to avoid O/S problems
+
+ include/ntp_types.h@1.7, 2004-03-24 17:26:57-05:00, mayer@pogo.udel.edu +1 -3
+ Change u_int64_t to ntp_int64_t to avoid O/S problems
+
+ChangeSet@1.1152.1.88, 2004-03-24 00:57:20-05:00, stenn@pogo.udel.edu +1 -0
+ No parse clocks if we disable all clocks
+
+ flock-build@1.29, 2004-03-24 00:57:07-05:00, stenn@pogo.udel.edu +2 -1
+ No parse clocks if we disable all clocks
+
+ChangeSet@1.1152.1.87, 2004-03-23 00:26:24-05:00, stenn@whimsy.udel.edu +2 -0
+ Do --disable-all-clocks in flock-build, too.
+
+ build@1.21, 2004-03-23 00:26:15-05:00, stenn@whimsy.udel.edu +6 -0
+ Do --disable-all-clocks in flock-build, too.
+
+ flock-build@1.28, 2004-03-23 00:26:15-05:00, stenn@whimsy.udel.edu +3 -1
+ Do --disable-all-clocks in flock-build, too.
+
+ChangeSet@1.1152.1.86, 2004-03-23 00:07:02-05:00, stenn@whimsy.udel.edu +2 -0
+ no refclock fixes from Dave Mills
+
+ ntpd/ntp_control.c@1.69, 2004-03-23 00:06:49-05:00, stenn@whimsy.udel.edu +2 -0
+ no refclock fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.175, 2004-03-23 00:06:50-05:00, stenn@whimsy.udel.edu +4 -1
+ no refclock fixes from Dave Mills
+
+ChangeSet@1.1152.1.85, 2004-03-22 23:59:43-05:00, stenn@whimsy.udel.edu +1 -0
+ From Dave Mills: remove legacy local_refclock/prefer wrinkle.
+
+ ntpd/ntp_loopfilter.c@1.92, 2004-03-22 23:59:30-05:00, stenn@whimsy.udel.edu +0 -13
+ From Dave Mills: remove legacy local_refclock/prefer wrinkle.
+
+ChangeSet@1.1152.1.84, 2004-03-20 01:20:11-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 293] - out of bounds array write: Nathan Hintz
+
+ util/ntp-keygen.c@1.26, 2004-03-20 01:19:59-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 293] - out of bounds array write: Nathan Hintz
+
+ChangeSet@1.1152.29.2, 2004-03-19 19:11:17-05:00, mayer@pogo.udel.edu +1 -0
+ Move AI_NUMERICHOST outside of the ISC_PLATFORM_HAVEIPV6 macro to conditionally include it if it's not defined
+
+ include/ntp_rfc2553.h@1.20, 2004-03-19 19:10:40-05:00, mayer@pogo.udel.edu +14 -14
+ Move AI_NUMERICHOST outside of the ISC_PLATFORM_HAVEIPV6 macro to conditionally include it if it's not defined
+
+ChangeSet@1.1152.1.82, 2004-03-19 01:48:58-05:00, stenn@deacon.udel.edu +2 -0
+ Oncore: Remove obsolete checks
+
+ BitKeeper/etc/logging_ok@1.48, 2004-03-19 01:48:57-05:00, stenn@deacon.udel.edu +1 -0
+ Logging to logging@openlogging.org accepted
+
+ ntpd/refclock_oncore.c@1.50, 2004-03-19 01:48:32-05:00, stenn@deacon.udel.edu +0 -4
+ Remove obsolete checks
+
+ChangeSet@1.1152.1.81, 2004-03-18 23:54:58-05:00, stenn@whimsy.udel.edu +3 -0
+ Use "inline" instead of "__inline" so configure can DTRT.
+
+ include/timepps-SCO.h@1.2, 2004-03-18 23:54:40-05:00, stenn@whimsy.udel.edu +7 -7
+ Use "inline" instead of "__inline" so configure can DTRT.
+
+ include/timepps-Solaris.h@1.2, 2004-03-18 23:54:40-05:00, stenn@whimsy.udel.edu +7 -7
+ Use "inline" instead of "__inline" so configure can DTRT.
+
+ include/timepps-SunOS.h@1.2, 2004-03-18 23:54:40-05:00, stenn@whimsy.udel.edu +7 -7
+ Use "inline" instead of "__inline" so configure can DTRT.
+
+ChangeSet@1.1152.1.80, 2004-03-18 23:38:17-05:00, stenn@whimsy.udel.edu +5 -0
+ Documentation updates from Dave Mills
+
+ html/authopt.html@1.31, 2004-03-18 23:37:51-05:00, stenn@whimsy.udel.edu +3 -3
+ Updates from Dave Mills
+
+ html/howto.html@1.16, 2004-03-18 23:37:52-05:00, stenn@whimsy.udel.edu +1 -1
+ Updates from Dave Mills
+
+ html/index.html@1.29, 2004-03-18 23:37:52-05:00, stenn@whimsy.udel.edu +3 -3
+ Updates from Dave Mills
+
+ html/monopt.html@1.18, 2004-03-18 23:37:52-05:00, stenn@whimsy.udel.edu +2 -2
+ Updates from Dave Mills
+
+ html/refclock.html@1.29, 2004-03-18 23:37:52-05:00, stenn@whimsy.udel.edu +2 -2
+ Updates from Dave Mills
+
+ChangeSet@1.1152.1.79, 2004-03-18 23:24:57-05:00, stenn@whimsy.udel.edu +10 -0
+ Cleanup and fixed from Dave Mills
+
+ include/ntp.h@1.99, 2004-03-18 23:24:41-05:00, stenn@whimsy.udel.edu +2 -2
+ Cleanup and fixed from Dave Mills
+
+ include/ntpd.h@1.64, 2004-03-18 23:24:41-05:00, stenn@whimsy.udel.edu +2 -1
+ Cleanup and fixed from Dave Mills
+
+ libntp/systime.c@1.30, 2004-03-18 23:24:41-05:00, stenn@whimsy.udel.edu +7 -4
+ Cleanup and fixed from Dave Mills
+
+ ntpd/ntp_control.c@1.68, 2004-03-18 23:24:42-05:00, stenn@whimsy.udel.edu +3 -4
+ Cleanup and fixed from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.91, 2004-03-18 23:24:42-05:00, stenn@whimsy.udel.edu +26 -43
+ Cleanup and fixed from Dave Mills
+
+ ntpd/ntp_proto.c@1.174, 2004-03-18 23:24:42-05:00, stenn@whimsy.udel.edu +128 -126
+ Cleanup and fixed from Dave Mills
+
+ ntpd/ntp_refclock.c@1.56, 2004-03-18 23:24:43-05:00, stenn@whimsy.udel.edu +72 -36
+ Cleanup and fixed from Dave Mills
+
+ ntpd/ntp_request.c@1.56, 2004-03-18 23:24:43-05:00, stenn@whimsy.udel.edu +0 -18
+ Cleanup and fixed from Dave Mills
+
+ ntpd/refclock_arbiter.c@1.8, 2004-03-18 23:24:43-05:00, stenn@whimsy.udel.edu +20 -20
+ Cleanup and fixed from Dave Mills
+
+ ntpd/refclock_wwvb.c@1.12, 2004-03-18 23:24:43-05:00, stenn@whimsy.udel.edu +4 -3
+ Cleanup and fixed from Dave Mills
+
+ChangeSet@1.1152.1.78, 2004-03-18 23:15:06-05:00, stenn@whimsy.udel.edu +2 -0
+ Driver36 cleanup from Dave Mills
+
+ html/drivers/driver36.html@1.21, 2004-03-18 23:14:38-05:00, stenn@whimsy.udel.edu +4 -3
+ Cleanup from Dave Mills
+
+ html/scripts/links8.txt@1.2, 2004-03-18 23:14:38-05:00, stenn@whimsy.udel.edu +3 -3
+ Cleanup from Dave Mills
+
+ChangeSet@1.1152.1.77, 2004-03-17 17:11:42-05:00, stenn@pogo.udel.edu +1 -0
+ Pedantic compiler lint
+
+ sntp/header.h@1.4, 2004-03-17 17:11:29-05:00, stenn@pogo.udel.edu +2 -2
+ Pedantic compiler lint
+
+ChangeSet@1.1152.1.76, 2004-03-17 17:10:30-05:00, stenn@pogo.udel.edu +4 -0
+ oncore fixes from Reg Clemens
+
+ include/timepps-SCO.h@1.1, 2004-03-17 17:03:57-05:00, stenn@pogo.udel.edu +503 -0
+
+ include/timepps-SCO.h@1.0, 2004-03-17 17:03:57-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev/include/timepps-SCO.h
+
+ include/timepps-Solaris.h@1.1, 2004-03-17 17:03:58-05:00, stenn@pogo.udel.edu +497 -0
+
+ include/timepps-Solaris.h@1.0, 2004-03-17 17:03:58-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev/include/timepps-Solaris.h
+
+ include/timepps-SunOS.h@1.1, 2004-03-17 17:03:58-05:00, stenn@pogo.udel.edu +507 -0
+
+ include/timepps-SunOS.h@1.0, 2004-03-17 17:03:58-05:00, stenn@pogo.udel.edu +0 -0
+ BitKeeper file /pogo/users/stenn/ntp-dev/include/timepps-SunOS.h
+
+ ntpd/refclock_oncore.c@1.49, 2004-03-17 17:09:39-05:00, stenn@pogo.udel.edu +85 -132
+ Patches/cleanup from Reg Clemens.
+ Header realignment from Harlan.
+
+ChangeSet@1.1152.29.1, 2004-03-15 21:04:56-05:00, mayer@tecotoo. +1 -0
+ Update to ensure the I/O Completion Ports code checks the various error states and sets the return status correctly
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.11, 2004-03-15 21:04:28-05:00, mayer@tecotoo. +20 -6
+ Update to ensure the I/O Completion Ports code checks the various error states and sets the return status correctly
+
+ChangeSet@1.1152.1.72, 2004-03-14 22:04:31-05:00, mayer@tecotoo. +1 -0
+ LIB_GETBUF only has space for 20 entries and does not zero out the contents. Change the limit to 200 and zero out the contents before returning it
+
+ libntp/lib_strbuf.h@1.3, 2004-03-14 22:04:03-05:00, mayer@tecotoo. +2 -1
+ LIB_GETBUF only has space for 20 entries and does not zero out the contents. Change the limit to 200 and zero out the contents before returning it
+
+ChangeSet@1.1152.1.71, 2004-03-13 22:06:42-05:00, mayer@tecotoo. +2 -0
+ ntp_types.h needs to include sys/types.h
+
+ include/ntp_rfc2553.h@1.19, 2004-03-13 22:06:13-05:00, mayer@tecotoo. +0 -1
+ ntp_types.h needs to include sys/types.h
+
+ include/ntp_types.h@1.6, 2004-03-13 22:06:14-05:00, mayer@tecotoo. +1 -0
+ ntp_types.h needs to include sys/types.h
+
+ChangeSet@1.1152.28.1, 2004-03-12 22:17:41-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 283] fix (md5.h header check)
+
+ configure.in@1.346, 2004-03-12 22:17:29-05:00, stenn@whimsy.udel.edu +5 -1
+ [Bug 283] fix (md5.h header check)
+
+ChangeSet@1.1152.1.70, 2004-03-11 23:47:33-05:00, mayer@tecotoo. +1 -0
+ move some conditionals back inside ISC_PLATFORM_HAVEIPV6 to reduce warnings if already defined elsewhere
+
+ include/ntp_rfc2553.h@1.18, 2004-03-11 23:47:05-05:00, mayer@tecotoo. +2 -2
+ move some conditionals back inside ISC_PLATFORM_HAVEIPV6 to reduce warnings if already defined elsewhere
+
+ChangeSet@1.1152.1.69, 2004-03-11 22:55:24-05:00, mayer@tecotoo. +2 -0
+ move integer type definitions from ntp_rfc2553.h into ntp_types.h where they belong
+
+ include/ntp_rfc2553.h@1.17, 2004-03-11 22:54:56-05:00, mayer@tecotoo. +0 -10
+ move integer type definitions from ntp_rfc2553.h into ntp_types.h where they belong
+
+ include/ntp_types.h@1.5, 2004-03-11 22:54:56-05:00, mayer@tecotoo. +10 -0
+ move integer type definitions from ntp_rfc2553.h into ntp_types.h where they belong
+
+ChangeSet@1.1152.1.68, 2004-03-10 17:51:29-05:00, mayer@pogo.udel.edu +1 -0
+ Move some macros outside of ISC_PLATFORM_HAVEIPV6 conditional macro and check for inclusion
+
+ include/ntp_rfc2553.h@1.16, 2004-03-10 17:50:19-05:00, mayer@pogo.udel.edu +16 -8
+ Move some macros outside of ISC_PLATFORM_HAVEIPV6 conditional macro and check for inclusion
+
+ChangeSet@1.1152.1.67, 2004-03-09 22:24:49-05:00, mayer@tecotoo. +1 -0
+ Fix order of variable declarations to ensure required types are declared first for the following structures
+
+ include/ntp_rfc2553.h@1.15, 2004-03-09 22:24:24-05:00, mayer@tecotoo. +15 -15
+ Fix order of variable declarations to ensure required types are declared first for the following structures
+
+ChangeSet@1.1172, 2004-03-05 12:45:00-08:00, gnu@ring.wraith.sf.ca.us +1 -0
+ add Ross Alexander's fixes for /etc/ntp.audioX
+
+ libntp/audio.c@1.22, 2004-03-05 12:45:00-08:00, gnu@ring.wraith.sf.ca.us +15 -9
+ add Ross Alexander's fixes for /etc/ntp.audioX
+
+ChangeSet@1.1152.1.64, 2004-03-03 00:57:05-05:00, stenn@whimsy.udel.edu +2 -0
+ More cleanup/fixes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.90, 2004-03-03 00:56:51-05:00, stenn@whimsy.udel.edu +139 -141
+ More cleanup/fixes from Dave Mills
+
+ ntpd/ntp_proto.c@1.173, 2004-03-03 00:56:52-05:00, stenn@whimsy.udel.edu +27 -11
+ More cleanup/fixes from Dave Mills
+
+ChangeSet@1.1152.1.63, 2004-03-03 00:49:55-05:00, stenn@whimsy.udel.edu +1 -0
+ Fix the sockaddr_storage check
+
+ configure.in@1.345, 2004-03-03 00:49:41-05:00, stenn@whimsy.udel.edu +1 -2
+ Fix the sockaddr_storage check
+
+ChangeSet@1.1152.1.62, 2004-03-02 22:21:11-05:00, stenn@whimsy.udel.edu +1 -0
+ Re-enable support for Reliant & SCO
+
+ libntp/systime.c@1.29, 2004-03-02 22:20:46-05:00, stenn@whimsy.udel.edu +5 -1
+ Re-enable support for Reliant & SCO
+
+ChangeSet@1.1152.1.61, 2004-02-18 19:56:01-05:00, stenn@whimsy.udel.edu +3 -0
+ More cleanup from Dave Mills
+
+ include/ntpd.h@1.63, 2004-02-18 19:55:47-05:00, stenn@whimsy.udel.edu +1 -1
+ More cleanup from Dave Mills
+
+ ntpd/ntp_proto.c@1.172, 2004-02-18 19:55:47-05:00, stenn@whimsy.udel.edu +40 -37
+ More cleanup from Dave Mills
+
+ ntpd/ntp_refclock.c@1.55, 2004-02-18 19:55:48-05:00, stenn@whimsy.udel.edu +1 -1
+ More cleanup from Dave Mills
+
+ChangeSet@1.1152.1.60, 2004-02-18 00:56:22-05:00, stenn@whimsy.udel.edu +2 -0
+ Revert the change that required Recent auto*, to fix bug 230.
+
+ I will still roll tarballs with these recent releases so folks who
+ get tarballs won't see that bug. Only folks otherwise affected by
+ bug 230 will need the latest auto*.
+
+ Makefile.am@1.46, 2004-02-18 00:56:17-05:00, stenn@whimsy.udel.edu +1 -1
+ Revert the change that required Recent auto*, to fix bug 230.
+
+ I will still roll tarballs with these recent releases so folks who
+ get tarballs won't see that bug. Only folks otherwise affected by
+ bug 230 will need the latest auto*.
+
+ configure.in@1.344, 2004-02-18 00:56:18-05:00, stenn@whimsy.udel.edu +1 -1
+ Revert the change that required Recent auto*, to fix bug 230.
+
+ I will still roll tarballs with these recent releases so folks who
+ get tarballs won't see that bug. Only folks otherwise affected by
+ bug 230 will need the latest auto*.
+
+ChangeSet@1.1152.26.1, 2004-02-17 01:43:41-05:00, stenn@whimsy.udel.edu +8 -0
+ Cleanup from Dave Mills.
+
+ include/ntp.h@1.98, 2004-02-17 01:43:25-05:00, stenn@whimsy.udel.edu +0 -1
+ Cleanup from Dave Mills.
+
+ include/ntpd.h@1.62, 2004-02-17 01:43:25-05:00, stenn@whimsy.udel.edu +1 -1
+ Cleanup from Dave Mills.
+
+ ntpd/ntp_crypto.c@1.91, 2004-02-17 01:43:25-05:00, stenn@whimsy.udel.edu +9 -9
+ Cleanup from Dave Mills.
+
+ ntpd/ntp_loopfilter.c@1.89, 2004-02-17 01:43:26-05:00, stenn@whimsy.udel.edu +0 -4
+ Cleanup from Dave Mills.
+
+ ntpd/ntp_peer.c@1.59, 2004-02-17 01:43:26-05:00, stenn@whimsy.udel.edu +1 -2
+ Cleanup from Dave Mills.
+
+ ntpd/ntp_proto.c@1.171, 2004-02-17 01:43:27-05:00, stenn@whimsy.udel.edu +98 -84
+ Cleanup from Dave Mills.
+
+ ntpd/ntp_refclock.c@1.54, 2004-02-17 01:43:27-05:00, stenn@whimsy.udel.edu +1 -1
+ Cleanup from Dave Mills.
+
+ ntpd/refclock_arbiter.c@1.7, 2004-02-17 01:43:28-05:00, stenn@whimsy.udel.edu +2 -1
+ Cleanup from Dave Mills.
+
+ChangeSet@1.1152.25.6, 2004-02-16 22:35:20-05:00, stenn@whimsy.udel.edu +3 -0
+ Let the ONCORE refclock build without PPS. From Reg Clemens.
+
+ html/drivers/driver30.html@1.17, 2004-02-16 22:34:32-05:00, stenn@whimsy.udel.edu +2 -2
+ Let the ONCORE refclock build without PPS. From Reg Clemens.
+
+ ntpd/refclock_conf.c@1.23, 2004-02-16 22:34:33-05:00, stenn@whimsy.udel.edu +1 -1
+ Let the ONCORE refclock build without PPS. From Reg Clemens.
+
+ ntpd/refclock_oncore.c@1.48, 2004-02-16 22:34:33-05:00, stenn@whimsy.udel.edu +89 -53
+ Let the ONCORE refclock build without PPS. From Reg Clemens.
+
+ChangeSet@1.1152.25.5, 2004-02-14 22:05:42-05:00, stenn@whimsy.udel.edu +1 -0
+ Disable check_y2k for now (34 year bug?)
+
+ configure.in@1.343, 2004-02-14 22:05:29-05:00, stenn@whimsy.udel.edu +2 -1
+ Disable check_y2k for now (34 year bug?)
+
+ChangeSet@1.1152.25.4, 2004-02-13 23:54:07-05:00, stenn@whimsy.udel.edu +1 -0
+ Dave's recent patch assumed we had OPENSSL. Handle the other case.
+
+ ntpd/ntp_proto.c@1.170, 2004-02-13 23:53:52-05:00, stenn@whimsy.udel.edu +2 -0
+ Dave's recent patch assumed we had OPENSSL. Handle the other case.
+
+ChangeSet@1.1152.25.3, 2004-02-12 04:27:25-05:00, stenn@whimsy.udel.edu +4 -0
+ Changes from Dave Mills:
+
+ 1. Servers presented with key IDs they don't have (a common mistake)
+ return a crypt-NAK. This also happens when the server rolls new private
+ values daily without telling the clients. To protect against bad guys
+ tossing an old duplicate over the wall, the client doesn't believe this
+ unless the timestamps pass the loopback check. If the server was
+ previously reachable, the client simply restarts the association without
+ missing a beat. If not, and to protect against a restart loop or later
+ server restart, the client disregards the NAK and continues (while
+ disabling burst mode). If really invalid, the association timeout will
+ eventually expire following which a persistent association is marked
+ permanently disabled or an ephemeral association is demobilized.
+
+ 2. One of the most common mistakes is to goof up the identity
+ credentials. If the client received these credentials via mail, the
+ script in the message installs the file and link automatically. If done
+ by hand and done wrong, either the server or client will find the error
+ and disable the association. As in all such cases, a server or client
+ ephemeral association is demobilized and the resources recovered.
+
+ 3. Symmetric modes have always been tricky, much more so with Autokey,
+ and even more so with misconfigured identity keys. It gets even wilder
+ when either peer is restarted in the middle of negotiations. All the
+ evil scenarios I can thing of seem to come out on the other side,
+ although there are a few that have to wait the association timeout to
+ properly close down and recover resources.
+
+ 4. The association is permanently disabled upon kiss-o'-death or
+ unrecoverable crypto error. So, I re-enabled log reporting for these
+ smooches. At least the offender is notified.
+
+ 5. When a really tenacious clogger shows up and lights the call-gap, the
+ server puts it in the restrict list. He stays there until the server is
+ restarted. Not only does this discourage the terriot, but evidence is
+ collected for possible further action.
+
+ What more do we have to do to turn this stuff into a real Secure
+ Timestamping Service? I think the security model, protocols, abuse
+ hardening and time performance are consistent with a bulletproof service
+ assuming, that is, PGP mail is used to get the keys and the server
+ certificates are properly signed.
+
+ include/ntp.h@1.97, 2004-02-12 04:22:55-05:00, stenn@whimsy.udel.edu +7 -5
+ Changes from Dave Mills
+
+ ntpd/ntp_crypto.c@1.90, 2004-02-12 04:22:56-05:00, stenn@whimsy.udel.edu +16 -17
+ Changes from Dave Mills
+
+ ntpd/ntp_proto.c@1.169, 2004-02-12 04:22:56-05:00, stenn@whimsy.udel.edu +200 -199
+ Changes from Dave Mills
+
+ ntpd/ntp_refclock.c@1.53, 2004-02-12 04:22:57-05:00, stenn@whimsy.udel.edu +1 -2
+ Changes from Dave Mills
+
+ChangeSet@1.1152.14.12, 2004-02-11 20:02:55-05:00, stenn@whimsy.udel.edu +7 -0
+ Prepare for move from whimsy to deacon.
+
+ BitKeeper/triggers/2mirrors@1.2, 2004-02-11 20:01:56-05:00, stenn@whimsy.udel.edu +1 -0
+ Prepare for move from whimsy to deacon.
+
+ BitKeeper/triggers/changelog@1.2, 2004-02-11 20:01:56-05:00, stenn@whimsy.udel.edu +1 -0
+ Prepare for move from whimsy to deacon.
+
+ BitKeeper/triggers/commitlogs@1.4, 2004-02-11 20:01:57-05:00, stenn@whimsy.udel.edu +1 -0
+ Prepare for move from whimsy to deacon.
+
+ BitKeeper/triggers/delta-changelog@1.6, 2004-02-11 20:01:57-05:00, stenn@whimsy.udel.edu +2 -1
+ Prepare for move from whimsy to deacon.
+
+ BitKeeper/triggers/notify@1.2, 2004-02-11 20:01:57-05:00, stenn@whimsy.udel.edu +2 -1
+ Prepare for move from whimsy to deacon.
+
+ BitKeeper/triggers/paranoid@1.2, 2004-02-11 20:01:57-05:00, stenn@whimsy.udel.edu +4 -1
+ Prepare for move from whimsy to deacon.
+
+ BitKeeper/triggers/send@1.4, 2004-02-11 20:01:58-05:00, stenn@whimsy.udel.edu +1 -0
+ Prepare for move from whimsy to deacon.
+
+ChangeSet@1.1152.14.11, 2004-02-10 20:05:16-05:00, stenn@whimsy.udel.edu +1 -0
+ Cleanup
+
+ README.bk@1.17, 2004-02-10 20:05:04-05:00, stenn@whimsy.udel.edu +3 -11
+ Cleanup
+
+ChangeSet@1.1152.22.10, 2004-02-10 16:42:03-05:00, mayer@pogo.udel.edu +1 -0
+ Move NT specific add to completion ports inside of the open_socket code
+
+ ntpd/ntp_io.c@1.105.1.1, 2004-02-10 16:41:39-05:00, mayer@pogo.udel.edu +18 -20
+ Move NT specific add to completion ports inside of the open_socket code
+
+ChangeSet@1.1152.24.3, 2004-02-07 17:53:39+00:00, mbrett@rgs16.fordson.demon.co.uk +4 -0
+ humandate.c, caljulian.c, ntp_fp.h:
+ Syntax changes to allow K&R compilers
+
+ BitKeeper/etc/logging_ok@1.42.1.2, 2004-02-07 17:53:38+00:00, mbrett@rgs16.fordson.demon.co.uk +1 -0
+ Logging to logging@openlogging.org accepted
+
+ include/ntp_fp.h@1.7.1.1, 2004-02-07 17:46:59+00:00, mbrett@rgs16.fordson.demon.co.uk +2 -0
+ Syntax changes to allow K&R compilers
+
+ libntp/caljulian.c@1.6, 2004-02-07 17:47:52+00:00, mbrett@rgs16.fordson.demon.co.uk +2 -3
+ Syntax changes to allow K&R compilers
+
+ libntp/humandate.c@1.6, 2004-02-07 17:48:04+00:00, mbrett@rgs16.fordson.demon.co.uk +0 -2
+ Syntax changes to allow K&R compilers
+
+ChangeSet@1.1152.22.8, 2004-02-05 19:46:43-05:00, mayer@pogo.udel.edu +1 -0
+ Fix for sockaddr_storage includes
+
+ include/ntp_rfc2553.h@1.12.1.1, 2004-02-05 19:46:02-05:00, mayer@pogo.udel.edu +45 -31
+ Fix for sockaddr_storage includes
+
+ChangeSet@1.1152.24.2, 2004-01-26 21:43:00-05:00, stenn@whimsy.udel.edu +2 -0
+ struct sockaddr_storage progress
+
+ configure.in@1.342, 2004-01-26 21:42:46-05:00, stenn@whimsy.udel.edu +0 -2
+ struct sockaddr_storage progress
+
+ include/ntp_rfc2553.h@1.13, 2004-01-26 21:42:47-05:00, stenn@whimsy.udel.edu +0 -2
+ struct sockaddr_storage progress
+
+ChangeSet@1.1152.24.1, 2004-01-25 22:14:09-05:00, stenn@whimsy.udel.edu +1 -0
+ Don't use IPv6 on AIX4.
+
+ configure.in@1.341, 2004-01-25 22:13:57-05:00, stenn@whimsy.udel.edu +10 -5
+ Don't use IPv6 on AIX4.
+
+ChangeSet@1.1152.22.6, 2004-01-22 20:59:27-05:00, stenn@whimsy.udel.edu +1 -0
+ Postpone the stuct sockaddr_storage test for now.
+
+ configure.in@1.340, 2004-01-22 20:59:18-05:00, stenn@whimsy.udel.edu +2 -0
+ Postpone the stuct sockaddr_storage test for now.
+
+ChangeSet@1.1152.22.5, 2004-01-22 17:49:57-05:00, stenn@whimsy.udel.edu +1 -0
+ Use doubles instead of NTP timestamps to work around the 34 year problem. From Dave Mills.
+
+ ntpd/ntp_proto.c@1.168, 2004-01-22 17:49:28-05:00, stenn@whimsy.udel.edu +32 -21
+ Use doubles instead of NTP timestamps to work around the 34 year problem. From Dave Mills.
+
+ChangeSet@1.1152.22.4, 2004-01-22 17:45:13-05:00, stenn@whimsy.udel.edu +2 -0
+ jitter utility fixes from Dave Mills.
+
+ util/jitter.c@1.4, 2004-01-22 17:42:39-05:00, stenn@whimsy.udel.edu +15 -16
+ Fixes from Dave Mills.
+
+ util/jitter.h@1.1, 2004-01-22 17:42:50-05:00, stenn@whimsy.udel.edu +412 -0
+
+ util/jitter.h@1.0, 2004-01-22 17:42:50-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /backroom/ntp-dev/util/jitter.h
+
+ChangeSet@1.1152.23.2, 2004-01-22 17:35:01-05:00, mayer@pogo.udel.edu +1 -0
+ L_RSHIFTU was mapped to M_RSHIFT instead of M_RSHIFTU
+
+ include/ntp_fp.h@1.8, 2004-01-22 17:34:04-05:00, mayer@pogo.udel.edu +1 -1
+ L_RSHIFTU was mapped to M_RSHIFT instead of M_RSHIFTU
+
+ChangeSet@1.1152.22.3, 2004-01-22 04:07:41+01:00, blk@frobozz.local +2 -0
+ nl.pl.in:
+ Better accounting for possible whitespace at the end of C routines (Bug 210).
+
+ BitKeeper/etc/logging_ok@1.42.1.1, 2004-01-22 04:07:34+01:00, blk@frobozz.local +1 -0
+ Logging to logging@openlogging.org accepted
+
+ ntpdc/nl.pl.in@1.8, 2004-01-22 04:05:55+01:00, blk@frobozz.local +1 -1
+ Better accounting for possible whitespace at the end of C routines (Bug 210).
+
+ChangeSet@1.1152.23.1, 2004-01-21 19:35:11-05:00, mayer@pogo.udel.edu +1 -0
+ eliminate no error select reporting
+
+ ntpdate/ntpdate.c@1.46, 2004-01-21 19:34:29-05:00, mayer@pogo.udel.edu +4 -7
+ eliminate no error select reporting
+
+ChangeSet@1.1152.22.2, 2004-01-10 21:10:11-05:00, stenn@whimsy.udel.edu +2 -0
+ initial attempt at more rfc2553 cleanup
+
+ configure.in@1.339, 2004-01-10 21:09:59-05:00, stenn@whimsy.udel.edu +87 -1
+ initial attempt at more rfc2553 cleanup
+
+ include/ntp_rfc2553.h@1.12, 2004-01-10 21:10:00-05:00, stenn@whimsy.udel.edu +2 -0
+ initial attempt at more rfc2553 cleanup
+
+ChangeSet@1.1152.14.10, 2004-01-10 02:27:07-05:00, stenn@pogo.udel.edu +2 -0
+ Fixes from Reg Clemens:
+
+ Cleanup.
+ [Bug 233]
+ [Bug 246]
+ [Bug 260]
+
+ html/drivers/driver30.html@1.16, 2004-01-10 02:27:01-05:00, stenn@pogo.udel.edu +8 -8
+ Fixes from Reg Clemens:
+
+ I have changed the documentation page for the ONCORE so it no longer
+ references Flag2/Flag3.
+
+ ntpd/refclock_oncore.c@1.47, 2004-01-10 02:27:01-05:00, stenn@pogo.udel.edu +104 -137
+ Fixes from Reg Clemens:
+
+ some (minor) changes:
+ (a) some changes to messages printed.
+ (b) can now find config file in /etc/ntp/ as well as /etc/
+
+ Bug 233: New LP64 Patches
+ patch imported from original author
+
+ Bug 246: 3 issues with the ONCORE driver
+ (1) You can reset the ONCORE driver back to defaults by *reading*
+ the variables from across the net.
+
+ This bug was introduced when I (foolishly) 'fixed' the code so it
+ would understand the FLAG variables that corresponded to its own
+ input variables from the ntp.ONCORE.x file. Since I do NOT understand
+ all the implications of ntp_control, I will remove this 'fix'.
+ The variables can now only be set in ntp.ONCORE. They can NOT be
+ changed dynamically. The documentation will be changed back. Perhaps
+ at some time in the future I will dig through the ntp code to
+ understand ntp_control.
+
+ (2) Fudge acted upon AFTER ntp.ONCORE.
+
+ Fixed by (1) the FUDGE flag/time variables are ignored, use the
+ ntp.ONCORE file.
+
+ (3) In the driver, ONCORE_start and a few other procedures do not
+ produce any output in the clockstats file.
+
+ The originator of the bug is running FreeBSD 5.1.
+ I have looked at the output from MY copy of FreeBSD 5.1, and several
+ Linux versions (7.3 -> 9), and Fedora and do NOT see any missing
+ messages. The messages start with an "ONCORE DRIVER -- CONFIGURING"
+ message written when the driver is first entered, and contain all the
+ messages I would expect after that.
+
+ I have no idea why he is not seeing the messages.
+
+ No action.
+
+ Bug 260, Patches for item (1) in the above.
+
+ The patch purports to fix the problem in Bug 246.
+
+ As noted I don't understand the details of what is going on behind the
+ curtain, so I would rather remove the offending code, than try to fix it.
+
+ There is also an increase buffer size so that longer messages can be
+ sent to the clockstats file. Ill leave that for the user to do on his
+ own if he wants to change the messages, but with slightly more effort
+ he could do the same using SHMEM.
+
+ He found an error in determining the ONCORE M12/M12+T. (thanks)
+ Rather than his #ifdef, I have corrected the code.
+
+
+ChangeSet@1.1152.19.3, 2004-01-08 18:21:43-05:00, mayer@pogo.udel.edu +1 -0
+ Make call to get_scopeid conditional
+
+ libisc/ifiter_ioctl.c@1.18, 2004-01-08 18:20:39-05:00, mayer@pogo.udel.edu +2 -1
+ Make call to get_scopeid conditional
+
+ChangeSet@1.1152.19.2, 2004-01-08 16:07:57-05:00, mayer@pogo.udel.edu +1 -0
+ Make fetch of broadcast address conditional on existence of macro
+
+ libisc/ifiter_ioctl.c@1.17, 2004-01-08 16:07:23-05:00, mayer@pogo.udel.edu +2 -1
+ Make fetch of broadcast address conditional on existence of macro
+
+ChangeSet@1.1152.1.56, 2004-01-08 17:55:23+00:00, mbrett@rgs16.fordson.demon.co.uk +1 -0
+ Makefile.am:
+ Remove $(NULL). It has no effect.
+
+ util/Makefile.am@1.23, 2004-01-08 17:54:24+00:00, mbrett@rgs16.fordson.demon.co.uk +1 -2
+ Remove $(NULL). It has no effect.
+
+ChangeSet@1.1152.1.55, 2004-01-08 13:36:54+00:00, mbrett@rgs16.fordson.demon.co.uk +2 -0
+ refclock_arc.c:
+ gcc lint for isdigit()
+
+ BitKeeper/etc/logging_ok@1.43, 2004-01-08 13:36:52+00:00, mbrett@rgs16.fordson.demon.co.uk +1 -0
+ Logging to logging@openlogging.org accepted
+
+ ntpd/refclock_arc.c@1.17, 2004-01-08 13:34:44+00:00, mbrett@rgs16.fordson.demon.co.uk +1 -1
+ gcc lint for isdigit()
+
+ChangeSet@1.1152.19.1, 2004-01-06 20:55:01-05:00, mayer@pogo.udel.edu +1 -0
+ Broadcast addresses were not being set for systems with IPv6 capability
+
+ libisc/ifiter_ioctl.c@1.16, 2004-01-06 20:54:15-05:00, mayer@pogo.udel.edu +21 -0
+ Broadcast addresses were not being set for systems with IPv6 capability
+
+ChangeSet@1.1152.18.1, 2004-01-06 21:19:51+01:00, a115350@y3111429.nh.ad.hydro.com +4 -0
+ Fix for NTP Epoch rollover
+
+ BitKeeper/etc/logging_ok@1.42, 2004-01-06 21:19:51+01:00, a115350@y3111429.nh.ad.hydro.com +1 -0
+ Logging to logging@openlogging.org accepted
+
+ libntp/caljulian.c@1.5, 2004-01-06 21:14:58+01:00, a115350@y3111429.nh.ad.hydro.com +32 -0
+ Fix for NTP epoch rollover: Uses time_t and
+ localtime/gmtime for conversion
+
+ libntp/humandate.c@1.5, 2004-01-06 21:14:58+01:00, a115350@y3111429.nh.ad.hydro.com +5 -4
+ Fix for NTP epoch rollover: Uses time_t and
+ localtime/gmtime for conversion
+
+ libntp/prettydate.c@1.4, 2004-01-06 21:14:58+01:00, a115350@y3111429.nh.ad.hydro.com +64 -9
+ Use common helper function
+
+ChangeSet@1.1152.1.51, 2004-01-02 16:01:53-05:00, stenn@whimsy.udel.edu +1 -0
+ manycast fix from Dave Mills.
+
+ ntpd/ntp_proto.c@1.167, 2004-01-02 16:01:41-05:00, stenn@whimsy.udel.edu +1 -1
+ manycast fix from Dave Mills.
+
+ChangeSet@1.1152.15.6, 2003-12-31 18:04:38-05:00, mayer@tecotoo.myibg.com +1 -0
+ Test Changes
+
+ ntpd/ntp_io.c@1.101.1.4, 2003-12-31 17:58:04-05:00, mayer@tecotoo.myibg.com +8 -4
+ Test Changes
+
+ChangeSet@1.1152.17.1, 2003-12-31 13:44:43-05:00, mayer@pogo.udel.edu +2 -0
+ Fix Broadcast support for those systems that support IPv6
+
+ libisc/ifiter_ioctl.c@1.15, 2003-12-31 13:43:31-05:00, mayer@pogo.udel.edu +3 -4
+ Fix Broadcast support for IPv6 capable queries to ioctl
+
+ ntpd/ntp_io.c@1.105, 2003-12-31 13:41:54-05:00, mayer@pogo.udel.edu +11 -10
+ Fix io_setbclient to properly use MACROS and add proper error information
+
+ChangeSet@1.1152.1.50, 2003-12-26 19:00:43-05:00, stenn@whimsy.udel.edu +1 -0
+ Dave Mills: Update EOV offset comment.
+
+ ntpd/ntp_control.c@1.65.1.1, 2003-12-26 19:00:31-05:00, stenn@whimsy.udel.edu +1 -1
+ Dave Mills: Update EOV offset comment.
+
+ChangeSet@1.1152.15.5, 2003-12-25 18:46:06-05:00, mayer@tecotoo.myibg.com +1 -0
+ EOV value was not updated when error was added
+
+ ntpd/ntp_control.c@1.66, 2003-12-25 18:44:52-05:00, mayer@tecotoo.myibg.com +1 -1
+ EOV value was not updated when error was added
+
+ChangeSet@1.1152.14.9, 2003-12-24 00:41:50-05:00, stenn@whimsy.udel.edu +4 -0
+ Cleanups, fix [Bug 320]
+
+ acinclude.m4@1.12, 2003-12-24 00:39:20-05:00, stenn@whimsy.udel.edu +2 -2
+ Quote auto* stuff properly.
+
+ version.m4@1.2, 2003-12-24 00:40:05-05:00, stenn@whimsy.udel.edu +1 -1
+ 4.2.0a
+
+ version.m4@1.1, 2003-12-24 00:10:17-05:00, stenn@whimsy.udel.edu +1 -0
+
+ version.m4@1.0, 2003-12-24 00:10:17-05:00, stenn@whimsy.udel.edu +0 -0
+ BitKeeper file /backroom/ntp-stable/version.m4
+
+ Makefile.am@1.45, 2003-12-24 00:38:57-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 230] Require automake-1.8.
+
+ configure.in@1.336.1.1, 2003-12-24 00:40:35-05:00, stenn@whimsy.udel.edu +5 -4
+ Require autoconf-2.58. Use version.m4. Cleanup.
+
+ChangeSet@1.1152.14.8, 2003-12-20 20:28:35-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 259] Marc Brett: lint
+
+ ntpd/refclock_arc.c@1.16, 2003-12-20 20:28:24-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 259] Marc Brett: lint
+
+ ntpd/refclock_neoclock4x.c@1.11, 2003-12-20 20:28:24-05:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 259] Marc Brett: lint
+
+ChangeSet@1.1152.14.7, 2003-12-20 20:18:51-05:00, stenn@whimsy.udel.edu +4 -0
+ [Bug 258] sntp cleanup
+
+ sntp/internet.c@1.3, 2003-12-20 20:15:55-05:00, stenn@whimsy.udel.edu +0 -2
+ [Bug 258] Matthias Drochner: sntp lint cleanup (plus IPv6 patch from HMS)
+
+ sntp/main.c@1.3, 2003-12-20 20:15:55-05:00, stenn@whimsy.udel.edu +18 -1
+ [Bug 258] Matthias Drochner: sntp lint cleanup (plus IPv6 patch from HMS)
+
+ sntp/socket.c@1.3, 2003-12-20 20:15:56-05:00, stenn@whimsy.udel.edu +7 -1
+ [Bug 258] Matthias Drochner: sntp lint cleanup (plus IPv6 patch from HMS)
+
+ sntp/timing.c@1.2, 2003-12-20 20:17:33-05:00, stenn@whimsy.udel.edu +2 -0
+ [Bug 258] Marc Brett: more sntp lint cleanup.
+
+ChangeSet@1.1152.14.6, 2003-12-20 18:44:12-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 262] Petter Reinholdtsen: Fix gcc3/Mac OS X output regexp for ntpdc/nl.pl
+
+ ntpdc/nl.pl.in@1.7, 2003-12-20 18:44:00-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 262] Petter Reinholdtsen: Fix gcc3/Mac OS X output regexp for ntpdc/nl.pl
+
+ChangeSet@1.1152.14.5, 2003-12-20 01:03:29-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 263] (NetBSD PR bin/23707)
+
+ ntpdate/ntpdate.c@1.45, 2003-12-20 01:02:39-05:00, stenn@whimsy.udel.edu +82 -78
+ Use #ifdef DEBUG where appropriate.
+
+ ntpdate/ntpdate.c@1.44, 2003-12-20 00:49:05-05:00, stenn@whimsy.udel.edu +69 -68
+ [Bug 263] Mattias Karlsson: ntpdate -s is not silent. From NetBSD PR bin/23707
+
+ChangeSet@1.1152.16.1, 2003-12-19 15:44:14-05:00, stenn@whimsy.udel.edu +5 -0
+ [Bug 251] Timo Felbinger: Drop root under Linux
+
+ configure.in@1.337, 2003-12-19 15:43:27-05:00, stenn@whimsy.udel.edu +20 -2
+ [Bug 251] Timo Felbinger: Drop root under Linux
+
+ html/ntpd.html@1.32, 2003-12-19 15:43:27-05:00, stenn@whimsy.udel.edu +5 -1
+ [Bug 251] Timo Felbinger: Drop root under Linux
+
+ include/ntpd.h@1.61, 2003-12-19 15:43:27-05:00, stenn@whimsy.udel.edu +2 -1
+ [Bug 251] Timo Felbinger: Drop root under Linux
+
+ ntpd/cmd_args.c@1.23, 2003-12-19 15:43:28-05:00, stenn@whimsy.udel.edu +18 -10
+ [Bug 251] Timo Felbinger: Drop root under Linux
+
+ ntpd/ntpd.c@1.54, 2003-12-19 15:43:28-05:00, stenn@whimsy.udel.edu +106 -59
+ [Bug 251] Timo Felbinger: Drop root under Linux
+
+ChangeSet@1.1152.1.43, 2003-12-18 02:50:14-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 256] Fix misleading diagnostic message.
+
+ ntpd/ntp_config.c@1.100, 2003-12-18 02:49:58-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 256] Fix misleading diagnostic message.
+
+ChangeSet@1.1152.1.42, 2003-12-18 00:36:05-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 158] Alter header inclusion to avoid linux header braindamage.
+
+ libntp/iosignal.c@1.12, 2003-12-18 00:35:52-05:00, stenn@whimsy.udel.edu +19 -6
+ [Bug 158] Alter header inclusion to avoid linux header braindamage.
+
+ChangeSet@1.1152.1.41, 2003-12-17 23:35:26-05:00, stenn@whimsy.udel.edu +2 -0
+ Updates from Dave Mills.
+
+ html/confopt.html@1.28, 2003-12-17 23:35:12-05:00, stenn@whimsy.udel.edu +5 -6
+ Updates from Dave Mills.
+
+ html/ntpdc.html@1.20, 2003-12-17 23:35:12-05:00, stenn@whimsy.udel.edu +2 -2
+ Updates from Dave Mills.
+
+ChangeSet@1.1152.1.40, 2003-12-17 23:24:17-05:00, stenn@whimsy.udel.edu +2 -0
+ Dave Mills: novolley subcommand to the broadcast command.
+
+ ntpd/ntp_config.c@1.99, 2003-12-17 23:24:02-05:00, stenn@whimsy.udel.edu +8 -4
+ Dave Mills: novolley subcommand to the broadcast command.
+
+ ntpd/ntp_proto.c@1.166, 2003-12-17 23:24:02-05:00, stenn@whimsy.udel.edu +15 -18
+ Dave Mills: novolley subcommand to the broadcast command.
+
+ChangeSet@1.1152.1.39, 2003-12-16 16:22:11-05:00, stenn@whimsy.udel.edu +1 -0
+ Typo fix from Marc Brett
+
+ ntpd/ntp_io.c@1.104, 2003-12-16 16:21:57-05:00, stenn@whimsy.udel.edu +1 -1
+ Typo fix from Marc Brett
+
+ChangeSet@1.1152.15.4, 2003-12-14 21:45:10-05:00, mayer@tecotoo.myibg.com +1 -0
+ Unix didn't recognize BOOL in create_wildcard, use isc_boolean_t instead
+
+ ntpd/ntp_io.c@1.101.1.3, 2003-12-14 21:44:05-05:00, mayer@tecotoo.myibg.com +4 -3
+ Unix didn't recognize BOOL in create_wildcar, use isc_boolean_t instead
+
+ChangeSet@1.1152.15.3, 2003-12-14 11:50:12-05:00, mayer@tecotoo.myibg.com +1 -0
+ Print no interfaces message if debug is on
+
+ ntpd/ntp_io.c@1.101.1.2, 2003-12-14 11:49:13-05:00, mayer@tecotoo.myibg.com +7 -3
+ Print no interfaces message if debug is on
+
+ChangeSet@1.1152.15.2, 2003-12-13 22:02:59-05:00, mayer@tecotoo.myibg.com +1 -0
+ Clean up the open_socket code
+
+ ntpd/ntp_io.c@1.101.1.1, 2003-12-13 22:01:55-05:00, mayer@tecotoo.myibg.com +13 -8
+ Clean up the open_socket code
+
+ChangeSet@1.1152.15.1, 2003-12-13 21:38:39-05:00, mayer@tecotoo.myibg.com +1 -0
+ define lifr_index if platform uses if_laddrreq
+
+ libisc/ifiter_ioctl.c@1.14, 2003-12-13 20:28:38-05:00, mayer@tecotoo.myibg.com +1 -0
+ define lifr_index if platform uses if_laddrreq
+
+ChangeSet@1.1152.1.37, 2003-12-10 01:52:46-05:00, stenn@whimsy.udel.edu +1 -0
+ *ix doesn't do BOOL.
+
+ ntpd/ntp_io.c@1.102, 2003-12-10 01:52:27-05:00, stenn@whimsy.udel.edu +1 -1
+ *ix doesn't do BOOL.
+
+ChangeSet@1.1152.1.36, 2003-12-09 09:59:50-05:00, mayer@tecotoo.myibg.com +1 -0
+ IPV6_V6ONLY not dependent on IPTOS_LOWDELAY, etc
+
+ ntpd/ntp_io.c@1.101, 2003-12-09 09:58:45-05:00, mayer@tecotoo.myibg.com +1 -2
+ IPV6_V6ONLY not dependent on IPTOS_LOWDELAY, etc
+
+ChangeSet@1.1152.1.35, 2003-12-08 17:49:41-05:00, mayer@tecotoo.myibg.com +1 -0
+ Fix to only conditionally create a wildcard socket for IPv4 if IPV6_V6ONLY defined and no IPv4 stack
+
+ ntpd/ntp_io.c@1.100, 2003-12-08 15:00:51-05:00, mayer@tecotoo.myibg.com +25 -18
+ Fix to only conditionally create a wildcard socket for IPv4 if IPV6_V6ONLY defined
+
+ChangeSet@1.1152.1.34, 2003-12-07 19:09:45-05:00, mayer@tecotoo.myibg.com +2 -0
+ Fix to only get scope and zero address if Link-local Multicast address. Add scope information for interfaces
+
+ libisc/interfaceiter.c@1.9, 2003-12-07 19:04:48-05:00, mayer@tecotoo.myibg.com +7 -4
+ Fix to only get scope and zero address if Link-local Multicast address
+
+ ntpd/ntp_io.c@1.99, 2003-12-07 19:07:55-05:00, mayer@tecotoo.myibg.com +3 -2
+ Print scope information so we see it for interfaces we are handling
+
+ChangeSet@1.1152.1.33, 2003-12-03 23:33:46-05:00, mayer@tecotoo.myibg.com +1 -0
+ For KAME we need to fix the zeroing out of a couple of bytes. Fix to do it properly
+
+ libisc/interfaceiter.c@1.8, 2003-12-03 23:32:30-05:00, mayer@tecotoo.myibg.com +9 -2
+ For KAME we need to fix the zeroing out of a couple of bytes. Fix to do it properly
+
+ChangeSet@1.1152.1.32, 2003-12-03 22:24:47-05:00, mayer@tecotoo.myibg.com +1 -0
+ For KAME we need to fix the zeroing out of a couple of bytes. The wrong variable name got used
+
+ libisc/interfaceiter.c@1.7, 2003-12-03 22:23:28-05:00, mayer@tecotoo.myibg.com +2 -2
+ For KAME we need to fix the zeroing out of a couple of bytes. The wrong variable got used
+
+ChangeSet@1.1152.12.7, 2003-12-02 23:46:54-05:00, mayer@tecotoo.myibg.com +1 -0
+ if_index should have been ifindex
+
+ libisc/ifiter_sysctl.c@1.8, 2003-12-02 23:45:32-05:00, mayer@tecotoo.myibg.com +1 -1
+ if_index should have been ifindex
+
+ChangeSet@1.1152.1.29, 2003-12-01 04:09:21-05:00, stenn@whimsy.udel.edu +6 -0
+ Improvements from Dave Mills.
+
+ include/ntp_control.h@1.24, 2003-12-01 04:09:02-05:00, stenn@whimsy.udel.edu +15 -14
+ Improvements from Dave Mills.
+
+ include/ntpd.h@1.60, 2003-12-01 04:09:02-05:00, stenn@whimsy.udel.edu +3 -3
+ Improvements from Dave Mills.
+
+ ntpd/ntp_control.c@1.65, 2003-12-01 04:09:03-05:00, stenn@whimsy.udel.edu +20 -14
+ Improvements from Dave Mills.
+
+ ntpd/ntp_loopfilter.c@1.88, 2003-12-01 04:09:03-05:00, stenn@whimsy.udel.edu +24 -30
+ Improvements from Dave Mills.
+
+ ntpd/ntp_proto.c@1.165, 2003-12-01 04:09:03-05:00, stenn@whimsy.udel.edu +6 -6
+ Improvements from Dave Mills.
+
+ ntpd/ntp_refclock.c@1.52, 2003-12-01 04:09:04-05:00, stenn@whimsy.udel.edu +2 -3
+ Improvements from Dave Mills.
+
+ChangeSet@1.1152.12.6, 2003-11-30 22:23:45-05:00, mayer@tecotoo.myibg.com +1 -0
+ For KAME we need to zero out a couple of bytes in the address
+
+ libisc/interfaceiter.c@1.6, 2003-11-30 22:22:34-05:00, mayer@tecotoo.myibg.com +2 -0
+ For KAME we need to zero out a couple of bytes in the address
+
+ChangeSet@1.1152.12.5, 2003-11-29 21:24:54-05:00, mayer@tecotoo.myibg.com +2 -0
+ Fixes for older platforms not returning the interface index and not supporting IPv6
+
+ libisc/ifiter_ioctl.c@1.13, 2003-11-29 21:21:54-05:00, mayer@tecotoo.myibg.com +9 -0
+ Fix complaints about not finding ifr_index on older platforms
+
+ libisc/interfaceiter.c@1.5, 2003-11-29 21:23:06-05:00, mayer@tecotoo.myibg.com +2 -0
+ Fix warning on machines not supporting IPv6 to ignore the get_scopeid() function
+
+ChangeSet@1.1152.12.4, 2003-11-29 20:52:42-05:00, mayer@tecotoo.myibg.com +1 -0
+ Use scope id when address is link-local for IPv6 multicast IPV6_JOIN_GROUP
+
+ ntpd/ntp_io.c@1.98, 2003-11-29 20:51:08-05:00, mayer@tecotoo.myibg.com +9 -2
+ Use scope id when address is link-local for IPv6 multicast IPV6_JOIN_GROUP
+
+ChangeSet@1.1152.14.4, 2003-11-29 20:22:38-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 255] Lint cleanup
+
+ ntpd/ntp_loopfilter.c@1.87, 2003-11-29 20:22:22-05:00, stenn@whimsy.udel.edu +5 -1
+ [Bug 255] Lint cleanup
+
+ChangeSet@1.1152.14.3, 2003-11-29 19:18:51-05:00, stenn@whimsy.udel.edu +4 -0
+ [Bug 255] Lint cleanup
+
+ ntpd/refclock_hopfpci.c@1.10, 2003-11-29 19:09:20-05:00, stenn@whimsy.udel.edu +0 -8
+ [Bug 255] Lint clenaup in hopfpci.c
+
+ ntpd/refclock_neoclock4x.c@1.10, 2003-11-29 19:10:42-05:00, stenn@whimsy.udel.edu +0 -2
+ [Bug 255] Lint cleanup in neoclock4x
+
+ ntpdc/ntpdc.c@1.32, 2003-11-29 19:14:57-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 255] Lint cleanup in ntpdc.c
+
+ ntpq/ntpq.c@1.45, 2003-11-29 19:16:56-05:00, stenn@whimsy.udel.edu +2 -3
+ [Bug 255] Lint cleanup in ntpq.c
+
+ChangeSet@1.1152.14.2, 2003-11-29 18:53:20-05:00, stenn@whimsy.udel.edu +8 -0
+ [Bug 255] Lint cleanup (avoid HASH_* name collision)
+
+ include/ntp.h@1.95, 2003-11-29 18:52:38-05:00, stenn@whimsy.udel.edu +3 -3
+ [Bug 255] Lint cleanup (avoid HASH_* name collision)
+
+ include/ntp_request.h@1.23, 2003-11-29 18:52:42-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 255] Lint cleanup (avoid HASH_* name collision)
+
+ ntpd/ntp_control.c@1.64, 2003-11-29 18:52:54-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 255] Lint cleanup (avoid HASH_* name collision)
+
+ ntpd/ntp_peer.c@1.58, 2003-11-29 18:52:56-05:00, stenn@whimsy.udel.edu +17 -17
+ [Bug 255] Lint cleanup (avoid HASH_* name collision)
+
+ ntpd/ntp_proto.c@1.162.1.1, 2003-11-29 18:52:55-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 255] Lint cleanup (avoid HASH_* name collision)
+
+ ntpd/ntp_request.c@1.55, 2003-11-29 18:52:56-05:00, stenn@whimsy.udel.edu +4 -4
+ [Bug 255] Lint cleanup (avoid HASH_* name collision)
+
+ ntpd/ntp_timer.c@1.27, 2003-11-29 18:52:57-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 255] Lint cleanup (avoid HASH_* name collision)
+
+ ntpdc/ntpdc_ops.c@1.29, 2003-11-29 18:52:50-05:00, stenn@whimsy.udel.edu +2 -2
+ [Bug 255] Lint cleanup (avoid HASH_* name collision)
+
+ChangeSet@1.1152.14.1, 2003-11-29 18:07:18-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 254] Frederick Bruckman: Avoid the OSS emulation layer on NetBSD.
+
+ configure.in@1.336, 2003-11-29 18:07:00-05:00, stenn@whimsy.udel.edu +5 -1
+ [Bug 254] Frederick Bruckman: Avoid the OSS emulation layer on NetBSD.
+
+ChangeSet@1.1152.1.25, 2003-11-29 03:43:39-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 241] Dave Mills: Do not respond to multicast if not a manycast server.
+
+ ntpd/ntp_proto.c@1.163, 2003-11-29 03:43:26-05:00, stenn@whimsy.udel.edu +9 -3
+ [Bug 241] Dave Mills: Do not respond to multicast if not a manycast server.
+
+ChangeSet@1.1152.1.24, 2003-11-29 03:28:17-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 200] Apparently, variance data is stored squared, so we want to SQRT() it when we report it.
+
+ ntpd/ntp_request.c@1.54, 2003-11-29 03:27:53-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 200] Apparently, variance data is stored squared, so we want to SQRT() it when we report it.
+
+ChangeSet@1.1152.1.23, 2003-11-29 03:17:47-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 252] Matthias Drochner: uninitialized memory in ntp-keygen can lead to crashes.
+
+ util/ntp-keygen.c@1.25, 2003-11-29 03:17:22-05:00, stenn@whimsy.udel.edu +8 -7
+ [Bug 252] Matthias Drochner: uninitialized memory in ntp-keygen can lead to crashes.
+
+ChangeSet@1.1152.1.22, 2003-11-29 03:03:13-05:00, stenn@pogo.udel.edu +1 -0
+ Use our portable way of getting socklen
+
+ ntpd/refclock_nmea.c@1.22, 2003-11-29 03:03:01-05:00, stenn@pogo.udel.edu +1 -2
+ Use our portable way of getting socklen
+
+ChangeSet@1.1152.12.3, 2003-11-27 22:34:47-05:00, mayer@tecotoo.myibg.com +7 -0
+ Added support for scopeid and interface index in support of IPV6 multicasting.
+
+ include/isc/interfaceiter.h@1.3, 2003-11-27 22:33:40-05:00, mayer@tecotoo.myibg.com +2 -0
+ Added interface index and scope id to interface structure
+
+ include/ntp.h@1.92.1.2, 2003-11-27 22:33:44-05:00, mayer@tecotoo.myibg.com +2 -0
+ Added interface index and scope id to interface structure
+
+ libisc/ifiter_ioctl.c@1.12, 2003-11-27 22:33:46-05:00, mayer@tecotoo.myibg.com +4 -0
+ Added interface index and scope id to interface structure
+
+ libisc/ifiter_sysctl.c@1.7, 2003-11-27 22:33:49-05:00, mayer@tecotoo.myibg.com +3 -0
+ Added interface index and scope id to interface structure
+
+ libisc/interfaceiter.c@1.4, 2003-11-27 22:33:52-05:00, mayer@tecotoo.myibg.com +31 -0
+ Added get_scopeid function to fetch the scope and take care of KAME issues.
+
+ ntpd/ntp_io.c@1.97, 2003-11-27 22:33:58-05:00, mayer@tecotoo.myibg.com +6 -1
+ Copy the interface index and scope id into the interface structure. Use the scope d
+ to specify the scope and te interface index to join the group.
+
+ ports/winnt/libisc/interfaceiter.c@1.4, 2003-11-27 22:34:02-05:00, mayer@tecotoo.myibg.com +5 -0
+ Added interface index and scope id to interface. Zero for now.
+
+ChangeSet@1.1152.1.21, 2003-11-26 19:52:29-05:00, stenn@whimsy.udel.edu +1 -0
+ Document nmead support
+
+ html/drivers/driver20.html@1.12, 2003-11-26 19:52:15-05:00, stenn@whimsy.udel.edu +1 -0
+ Document nmead support
+
+ChangeSet@1.1152.13.5, 2003-11-26 19:21:41-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 202] From Jon Miner: nmead support
+
+ ntpd/refclock_nmea.c@1.21, 2003-11-26 19:21:26-05:00, stenn@whimsy.udel.edu +50 -2
+ [Bug 202] From Jon Miner: nmead support
+
+ChangeSet@1.1152.13.4, 2003-11-26 19:06:31-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 248] From Nigel Roles: Fix use of tcsetattr() and parsing.
+
+ ntpd/refclock_arc.c@1.15, 2003-11-26 19:06:18-05:00, stenn@whimsy.udel.edu +45 -5
+ [Bug 248] From Nigel Roles: Fix use of tcsetattr() and parsing.
+
+ChangeSet@1.1152.13.2, 2003-11-25 04:26:12-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 250] msec->nsec conversion bug to refclock_palisade.c (From Neil Burn)
+
+ ntpd/refclock_palisade.c@1.16.1.1, 2003-11-25 04:25:55-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 250] msec->nsec conversion bug to refclock_palisade.c (From Neil Burn)
+
+ChangeSet@1.1152.13.1, 2003-11-25 04:17:29-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 243] error handling bug in ntpdc (from Matthias Drochner)
+
+ ntpdc/ntpdc_ops.c@1.28, 2003-11-25 04:17:14-05:00, stenn@whimsy.udel.edu +18 -18
+ [Bug 243] error handling bug in ntpdc (from Matthias Drochner)
+
+ChangeSet@1.1152.12.2, 2003-11-24 09:24:33-05:00, mayer@tecotoo.myibg.com +1 -0
+ Time is in nsecs and not usecs. Multiplier was incorrect
+
+ ntpd/refclock_palisade.c@1.17, 2003-11-24 09:23:34-05:00, mayer@tecotoo.myibg.com +1 -1
+ Time is in nsecs and not usecs. Multiplier was incorrect
+
+ChangeSet@1.1152.12.1, 2003-11-24 09:18:06-05:00, mayer@tecotoo.myibg.com +1 -0
+ Fix structure name to use the generic name
+
+ include/ntp.h@1.92.1.1, 2003-11-24 09:16:55-05:00, mayer@tecotoo.myibg.com +1 -1
+ Fix structure name to use the generic name
+
+ChangeSet@1.1152.11.2, 2003-11-20 04:41:32-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 238] check for vsnprintf
+
+ configure.in@1.335, 2003-11-20 04:41:18-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 238] check for vsnprintf
+
+ChangeSet@1.1152.9.13, 2003-11-20 03:58:27-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 220] (Frederick Bruckman) The linux resolver needs more stack space.
+
+ ntpd/ntpd.c@1.53, 2003-11-20 03:58:05-05:00, stenn@whimsy.udel.edu +1 -1
+ [Bug 220] (Frederick Bruckman) The linux resolver needs more stack space.
+
+ChangeSet@1.1152.9.12, 2003-11-20 03:44:29-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 217] ntptrace should show sync distance, not rootdelay.
+
+ scripts/ntptrace.in@1.3, 2003-11-20 03:44:11-05:00, stenn@whimsy.udel.edu +6 -3
+ [Bug 217] ntptrace should show sync distance, not rootdelay.
+
+ChangeSet@1.1152.9.11, 2003-11-20 03:28:03-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 215] Stop looking when we hit a refclock.
+
+ scripts/ntptrace.in@1.2, 2003-11-20 03:27:44-05:00, stenn@whimsy.udel.edu +1 -0
+ [Bug 215] Stop looking when we hit a refclock.
+
+ChangeSet@1.1152.9.10, 2003-11-19 21:12:51-05:00, stenn@whimsy.udel.edu +1 -0
+ Sledgehammer bug 230
+
+ util/Makefile.am@1.22, 2003-11-19 21:12:35-05:00, stenn@whimsy.udel.edu +4 -1
+ Sledgehammer bug 230
+
+ChangeSet@1.1152.9.9, 2003-11-19 10:07:45+00:00, harlanst@time.usno.navy.mil +4 -0
+ gpsvme updates from USNO
+
+ BitKeeper/deleted/.del-map_vme.c~3aed0663@1.5, 2003-11-19 10:04:09+00:00, harlanst@time.usno.navy.mil +0 -133
+ Delete: ntpd/map_vme.c
+
+ BitKeeper/etc/logging_ok@1.41, 2003-11-19 10:07:39+00:00, harlanst@time.usno.navy.mil +1 -0
+ Logging to logging@openlogging.org accepted
+
+ ntpd/Makefile.am@1.37, 2003-11-19 10:04:45+00:00, harlanst@time.usno.navy.mil +1 -1
+ map_vme.c is no more...
+
+ ntpd/refclock_gpsvme.c@1.7, 2003-11-19 10:06:43+00:00, harlanst@time.usno.navy.mil +244 -612
+ updated version from the USNO folks
+
+ChangeSet@1.1152.9.8, 2003-11-18 22:58:33-05:00, stenn@whimsy.udel.edu +2 -0
+ autoconf cleanup
+
+ configure.in@1.334, 2003-11-18 22:58:17-05:00, stenn@whimsy.udel.edu +2 -2
+ autoconf cleanup
+
+ sntp/configure.ac@1.7, 2003-11-18 22:58:18-05:00, stenn@whimsy.udel.edu +1 -1
+ autoconf cleanup
+
+ChangeSet@1.1152.10.2, 2003-11-11 02:55:22-05:00, stenn@whimsy.udel.edu +3 -0
+ [Bug 177] Fixes from Dave Mills.
+
+ libntp/systime.c@1.28, 2003-11-11 02:35:43-05:00, stenn@whimsy.udel.edu +6 -1
+ [Bug 177] Fixes from Dave Mills
+
+ ntpd/ntp_loopfilter.c@1.86, 2003-11-11 02:54:11-05:00, stenn@whimsy.udel.edu +20 -26
+ [Bug 177] Fixes from Dave Mills: state machine improvements.
+
+ ntpd/ntp_proto.c@1.162, 2003-11-11 02:52:25-05:00, stenn@whimsy.udel.edu +15 -7
+ [Bug 177] Fixes from Dave Mills: freq mgt and poll interval fixes.
+
+ChangeSet@1.1152.10.1, 2003-11-10 23:53:42-05:00, stenn@whimsy.udel.edu +2 -0
+ Stuff from Dave Mills
+
+ NEWS@1.47, 2003-11-10 01:08:47-05:00, stenn@whimsy.udel.edu +1 -0
+ Separate -dev news from -stable news.
+
+ include/ntp.h@1.93, 2003-11-10 01:28:10-05:00, stenn@whimsy.udel.edu +5 -5
+ Cleanup from Dave Mills
+
+ChangeSet@1.1152.9.6, 2003-11-08 20:32:39-05:00, mayer@tecotoo.myibg.com +1 -0
+ Ensure config.h is included in ntp_rfx2553.h before testing macros
+
+ include/ntp_rfc2553.h@1.11, 2003-11-08 20:30:05-05:00, mayer@tecotoo.myibg.com +6 -0
+ Ensure config.h is included before testing macros
+
+ChangeSet@1.1152.9.5, 2003-11-08 16:49:43-05:00, mayer@tecotoo.myibg.com +5 -0
+ Fixes to properly support platforms that do not have IPv6 support.
+
+ include/isc/ipv6.h@1.4, 2003-11-08 16:48:51-05:00, mayer@tecotoo.myibg.com +4 -2
+ Make IPv6 Macro definitions only if not previously defined.
+
+ include/ntp_rfc2553.h@1.10, 2003-11-08 16:48:56-05:00, mayer@tecotoo.myibg.com +2 -4
+ Change to only use the definitions if IPv6 not defined on the platform. This uses the
+ Macros defined during the config process which defines the Macro
+ ISC_PLATFORM_HAVEIPV6 if the platform properly supports IPv6
+
+ libntp/ntp_rfc2553.c@1.15, 2003-11-08 16:49:00-05:00, mayer@tecotoo.myibg.com +2 -2
+ Use ISC_PLATFORM_HAVEIPV6 instead of HAVE_IPV6 which was previously
+ defined in the ntp_rfc2553.h file based on the erroneously assumption about a
+ macro.
+
+ ports/winnt/include/isc/ipv6.h@1.3, 2003-11-08 16:49:04-05:00, mayer@tecotoo.myibg.com +4 -2
+ Make IPv6 Macro definitions only if not previously defined.
+
+ ports/winnt/include/isc/platform.h@1.3, 2003-11-08 16:49:06-05:00, mayer@tecotoo.myibg.com +5 -0
+ The ISC_PLATFORM_HAVEIPV6 macro should not have been defined here.
+ This was a vestige of the work being done to scan for IPv6 interfaces on
+ Windows platforms.
+
+ChangeSet@1.1152.9.4, 2003-11-07 21:27:53-05:00, mayer@pogo.udel.edu +1 -0
+ Change HAVE_IPV6 macro to ISC_PLATFORM_HAVEIPV6 since BIND 9 does a better job of figuring out what's needed for IPv6
+
+ ntpd/ntp_io.c@1.96, 2003-11-07 21:25:26-05:00, mayer@pogo.udel.edu +26 -26
+ Change HAVE_IPV6 macro to ISC_PLATFORM_HAVEIPV6 since BIND 9 does a better job of figuring out what's needed for IPv6
+
+ChangeSet@1.1152.9.3, 2003-11-02 23:18:29-05:00, mayer@tecotoo.myibg.com +1 -0
+ Fix setsockopt arguments to conform to standard declarations for various arguments
+
+ ntpd/ntp_io.c@1.95, 2003-11-02 23:17:43-05:00, mayer@tecotoo.myibg.com +4 -2
+ Fix setsockopt arguments to conform to standard declarations for various arguments
+
+ChangeSet@1.1152.9.2, 2003-10-31 23:23:43-05:00, mayer@tecotoo.myibg.com +2 -0
+ Fix for number of bytes and error message fixes (see Bugs #226 and 227)
+
+ ntpd/ntp_intres.c@1.32, 2003-10-31 23:22:50-05:00, mayer@tecotoo.myibg.com +13 -3
+ Need to use GetOverlapped result to get the number of bytes.
+
+ ports/winnt/ntpd/ntp_iocompletionport.c@1.10, 2003-10-31 23:22:56-05:00, mayer@tecotoo.myibg.com +9 -3
+ Error message fixes.
+
+ChangeSet@1.1152.9.1, 2003-10-26 10:20:36-05:00, mayer@tecotoo.myibg.com +7 -0
+ Update to OpenSSL 0.9.7c
+
+ BitKeeper/etc/ignore@1.35, 2003-10-26 10:19:50-05:00, mayer@tecotoo.myibg.com +7 -0
+ Added {ntpd/ntp_io.c.$$$} {ports/winnt/libntp/libntp.dsp.$$$} {ports/winnt/ntp-keygen/ntpkeygen.dsp.$$$} {ports/winnt/ntpd/ntpd.dsp.$$$} {ports/winnt/ntpdate/ntpdate.dsp.$$$} {ports/winnt/ntpdc/ntpdc.dsp.$$$} {ports/winnt/ntpq/ntpq.dsp.$$$} to the ignore list
+
+ ports/winnt/libntp/libntp.dsp@1.17, 2003-10-26 10:19:32-05:00, mayer@tecotoo.myibg.com +2 -2
+ Update to OpenSSL 0.9.7c
+
+ ports/winnt/ntp-keygen/ntpkeygen.dsp@1.4, 2003-10-26 10:19:35-05:00, mayer@tecotoo.myibg.com +4 -4
+ Update to OpenSSL 0.9.7c
+
+ ports/winnt/ntpd/ntpd.dsp@1.19, 2003-10-26 10:19:38-05:00, mayer@tecotoo.myibg.com +4 -4
+ Update to OpenSSL 0.9.7c
+
+ ports/winnt/ntpdate/ntpdate.dsp@1.12, 2003-10-26 10:19:40-05:00, mayer@tecotoo.myibg.com +2 -2
+ Update to OpenSSL 0.9.7c
+
+ ports/winnt/ntpdc/ntpdc.dsp@1.13, 2003-10-26 10:19:43-05:00, mayer@tecotoo.myibg.com +2 -2
+ Update to OpenSSL 0.9.7c
+
+ ports/winnt/ntpq/ntpq.dsp@1.13, 2003-10-26 10:19:46-05:00, mayer@tecotoo.myibg.com +2 -2
+ Update to OpenSSL 0.9.7c
+
+ChangeSet@1.1152.8.1, 2003-10-22 11:13:33-04:00, blu@corwin. +2 -0
+ ntpq_ops.c, ntpq.c:
+ Change formatting for multiple servers and add assID for multiple association output.
+
+ ntpq/ntpq_ops.c@1.19, 2003-10-22 11:12:55-04:00, blu@corwin. +38 -4
+ Change formatting for multiple servers and add assID for multiple association output.
+
+ ntpq/ntpq.c@1.44, 2003-10-22 11:12:09-04:00, blu@corwin. +2 -0
+ Change formatting for multiple servers and add assID for multiple association output.
+
+ChangeSet@1.1152.1.13, 2003-10-22 13:16:39+02:00, peda@sectra.se +1 -0
+ Fixes the bug for big endian machines, instead of killing the warning.
+
+ ntpd/refclock_jupiter.c@1.17, 2003-10-22 13:16:36+02:00, peda@sectra.se +5 -5
+ Fixes the bug for big endian machines, instead of killing the warning.
+
+ChangeSet@1.1152.1.12, 2003-10-22 13:12:10+02:00, peda@sectra.se +1 -0
+ Clean up PPS handling in jupiter driver.
+ Easier to modify source to get hardpps.
+
+ ntpd/refclock_jupiter.c@1.16, 2003-10-22 13:12:08+02:00, peda@sectra.se +13 -12
+ Clean up PPS handling.
+ Easier to modify source to get hardpps.
+
+ChangeSet@1.1152.1.11, 2003-10-22 13:08:28+02:00, peda@sectra.se +1 -0
+ Remove annying newline from syslog in the jupiter refclock.
+
+ ntpd/refclock_jupiter.c@1.15, 2003-10-22 13:08:26+02:00, peda@sectra.se +1 -1
+ Remove annying newline from syslog.
+
+ChangeSet@1.1152.1.10, 2003-10-20 15:10:02-04:00, stenn@whimsy.udel.edu +1 -0
+ Added IPv6 to NEWS file.
+
+ NEWS@1.46, 2003-10-20 15:08:18-04:00, stenn@whimsy.udel.edu +1 -0
+ Added IPv6
+
+ChangeSet@1.1140.1.4, 2003-08-13 10:00:10-07:00, gnu@ring.wraith.sf.ca.us +1 -0
+ dot-in-path fix
+
+ ntpdc/Makefile.am@1.16.1.1, 2003-08-11 14:44:20-07:00, gnu@ring.wraith.sf.ca.us +1 -1
+ no-dot-in-path fix for ntpdc-layout
+
+ChangeSet@1.1140.1.1, 2003-08-10 00:13:06-07:00, gnu@ring.wraith.sf.ca.us +1 -0
+ Merge bk://ntp.bkbits.net/ntp-dev
+ into ring.wraith.sf.ca.us:/home/gnu/src/ntp/ntp-dev
+
+ BitKeeper/etc/gone@1.6, 2003-08-10 00:07:52-07:00, gnu@ring.wraith.sf.ca.us +1 -0
+
+ BitKeeper/etc/gone@1.5, 2003-08-10 00:06:29-07:00, gnu@ring.wraith.sf.ca.us +1 -0
+
diff --git a/contrib/ntp/ChangeLog-4.1.0 b/contrib/ntp/CommitLog-4.1.0
index b748b80..c0ce2d8 100644
--- a/contrib/ntp/ChangeLog-4.1.0
+++ b/contrib/ntp/CommitLog-4.1.0
@@ -3192,7 +3192,7 @@
1999-12-07 Harlan Stenn <stenn@whimsy.udel.edu>
* libparse/clk_rawdcf.c (cvt_rawdcf): Buglet.
- From: Frank Kardel <kardel@acm.org>
+ From: Frank Kardel <kardel <AT> acm.org>
1999-12-06 Harlan Stenn <stenn@whimsy.udel.edu>
@@ -3324,7 +3324,7 @@
* libparse/parsestreams.c:
* ntpd/refclock_parse.c:
Mods and updates
- From: Frank Kardel <kardel@acm.org>
+ From: Frank Kardel <kardel <AT> acm.org>
* acconfig.h: PCF refclock
* configure.in:
@@ -4748,7 +4748,7 @@ Sun Apr 4 03:23:53 1999 Harlan Stenn <stenn@whimsy.udel.edu>
* configure.in: 4.0.92e
Dave redesigned the clock state machine.
-1999-02-28 Frank Kardel <kardel@acm.org>
+1999-02-28 Frank Kardel <kardel <AT> acm.org>
* parseutil/dcfd.c: added DCF77 module powersetup
@@ -4805,7 +4805,7 @@ Tue Feb 23 23:37:44 1999 Harlan Stenn <stenn@whimsy.udel.edu>
with bug in sys/systm.h .
Suggested by: Chaim Frenkel <chaimf@pobox.com>
-Tue Feb 23 20:46:31 1999 Frank Kardel <kardel@acm.org>
+Tue Feb 23 20:46:31 1999 Frank Kardel <kardel <AT> acm.org>
* ntpd/refclock_parse.c: fixed #endifs
(stream_receive): fixed formats
@@ -4849,7 +4849,7 @@ Mon Feb 22 00:35:06 1999 Harlan Stenn <stenn@whimsy.udel.edu>
after getconfig().
From: Kamal A Mostafa <kamal@whence.com>
-1999-02-21 Frank Kardel <kardel@acm.org>
+1999-02-21 Frank Kardel <kardel <AT> acm.org>
* ntpd/ntp_util.c (hourly_stats): removed unused variable
@@ -5409,11 +5409,11 @@ Sun Sep 13 19:19:09 1998 Harlan Stenn <stenn@whimsy.udel.edu>
parse clocks by default.
Reported by: Marion Hakanson <hakanson@cse.ogi.edu>
-Sat Aug 22 23:58:14 1998 Frank Kardel <kardel@acm.org>
+Sat Aug 22 23:58:14 1998 Frank Kardel <kardel <AT> acm.org>
* ntpd/refclock_parse.c (local_input): fixed IO handling for non-STREAM IO
-Sun Aug 16 20:13:32 1998 Frank Kardel <kardel@acm.org>
+Sun Aug 16 20:13:32 1998 Frank Kardel <kardel <AT> acm.org>
* libntp/ieee754io.c: debug information only compile for LIBDEBUG case
@@ -5570,7 +5570,7 @@ Wed Jun 10 21:16:01 1998 Harlan Stenn <stenn@whimsy.udel.edu>
* ntpd/ntp_refclock.c (refclock_gtlin): Patch...
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
-Sun Jun 28 18:43:30 1998 Frank Kardel <kardel@acm.org>
+Sun Jun 28 18:43:30 1998 Frank Kardel <kardel <AT> acm.org>
* libntp/buftvtots.c (buftvtots): using WORD_BIGENDIAN instead of XNTP_BIG_ENDIAN
@@ -5587,7 +5587,7 @@ Sun Jun 28 18:43:30 1998 Frank Kardel <kardel@acm.org>
* include/binio.h: added binio MSB prototypes
-Sat Jun 13 13:48:17 1998 Frank Kardel <kardel@acm.org>
+Sat Jun 13 13:48:17 1998 Frank Kardel <kardel <AT> acm.org>
* parseutil/testdcf.c: signed/unsigned
SYSV clock name clash fixed
@@ -5683,7 +5683,7 @@ Sat Jun 13 13:48:17 1998 Frank Kardel <kardel@acm.org>
* include/parse.h: STREAM macro gone in favor of HAVE_SYS_STREAM_H
-Fri Jun 12 11:08:53 1998 Frank Kardel <kardel@acm.org>
+Fri Jun 12 11:08:53 1998 Frank Kardel <kardel <AT> acm.org>
* ntpd/ntp_timer.c: prototype fixes (ansi2knr/knr compiler)
@@ -5732,7 +5732,7 @@ Fri Jun 12 11:08:53 1998 Frank Kardel <kardel@acm.org>
* clk_computime.c: conditional compile macros fixed
printf prototype
-Sat Jun 6 07:41:54 1998 Frank Kardel <kardel@acm.org>
+Sat Jun 6 07:41:54 1998 Frank Kardel <kardel <AT> acm.org>
* ntpd/refclock_palisade.c: fixed termio.h / termios.h inclusion
@@ -5746,7 +5746,7 @@ Sat Jun 6 07:41:54 1998 Frank Kardel <kardel@acm.org>
* libparse/clk_rawdcf.c: simplified condidional compile expression
-Wed May 27 08:10:43 1998 Frank Kardel <kardel@acm.org>
+Wed May 27 08:10:43 1998 Frank Kardel <kardel <AT> acm.org>
* include/Makefile.am (noinst_HEADERS): added new header files
mbg_gps166.h binio.h ascii.h ieee754io.h
@@ -5754,7 +5754,7 @@ Wed May 27 08:10:43 1998 Frank Kardel <kardel@acm.org>
* ntpdc/ntpdc.c (sendrequest): fixed info_auth_keyid setting it
got accidentally trashed every other round
-Mon May 25 22:55:07 1998 Frank Kardel <kardel@acm.org>
+Mon May 25 22:55:07 1998 Frank Kardel <kardel <AT> acm.org>
* configure.in: PARSE clocks are enabled by default whenever
possible (termio.h or termios.h present)
@@ -5769,7 +5769,7 @@ Mon May 25 22:55:07 1998 Frank Kardel <kardel@acm.org>
* libparse/clk_meinberg.c (cvt_meinberg): support current standard
Meinberg data formats
-Sun May 24 09:43:19 1998 Frank Kardel <kardel@acm.org>
+Sun May 24 09:43:19 1998 Frank Kardel <kardel <AT> acm.org>
* libparse/clk_rawdcf.c (pps_rawdcf): trigger pps on zero going
edge - that is simpler wiring (Rx->DCD).
diff --git a/contrib/ntp/INSTALL b/contrib/ntp/INSTALL
index 7483e00..0d95578 100644
--- a/contrib/ntp/INSTALL
+++ b/contrib/ntp/INSTALL
@@ -3,7 +3,7 @@ Basic Installation
These are generic *nix installation instructions.
- For Windows/NT, please see ports/winnt and html/hints/winnt.htm.
+ For Windows/NT, please see ports/winnt and html/build/hints/winnt.html.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
diff --git a/contrib/ntp/Makefile.am b/contrib/ntp/Makefile.am
index 96918fc..4db3a09 100644
--- a/contrib/ntp/Makefile.am
+++ b/contrib/ntp/Makefile.am
@@ -1,82 +1,102 @@
#AUTOMAKE_OPTIONS = util/ansi2knr foreign dist-tarZ no-dependencies
-AUTOMAKE_OPTIONS = util/ansi2knr foreign 1.5
-
-SUBDIRS = \
- scripts \
- include \
+AUTOMAKE_OPTIONS = util/ansi2knr foreign 1.8
+ACLOCAL_AMFLAGS= -I m4 -I libopts/m4
+
+NULL=
+
+SUBDIRS=
+if NEED_LIBOPTS
+SUBDIRS+= libopts
+endif
+SUBDIRS+= \
+ scripts \
+ include \
ElectricFence \
- @ARLIB_DIR@ \
- libntp \
+ @ARLIB_DIR@ \
+ libntp \
libparse \
- ntpd \
- ntpdate \
- ntpdc \
- ntpq \
+ ntpd \
+ ntpdate \
+ ntpdc \
+ ntpq \
parseutil \
adjtimed \
clockstuff \
- kernel \
- @MAKE_SNTP@ \
- util
-
-DIST_SUBDIRS= \
- scripts \
- include \
+ kernel \
+ sntp \
+ util \
+ $(NULL)
+
+DIST_SUBDIRS= \
+ scripts \
+ include \
ElectricFence \
- arlib \
- libntp \
+ arlib \
+ libntp \
+ libopts \
libparse \
- ntpd \
- ntpdate \
- ntpdc \
- ntpq \
+ ntpd \
+ ntpdate \
+ ntpdc \
+ ntpq \
parseutil \
adjtimed \
clockstuff \
- kernel \
- sntp \
- util
-DISTCHECK_CONFIGURE_FLAGS= --with-arlib --with-sntp
-
-EXTRA_DIST = \
- COPYRIGHT \
- ChangeLog \
- ChangeLog-4.1.0 \
- NEWS \
- NOTES.y2kfixes \
- README.bk \
- README.hackers \
- README.patches \
+ kernel \
+ sntp \
+ util \
+ $(NULL)
+
+DISTCHECK_CONFIGURE_FLAGS= --with-arlib --enable-local-libopts
+
+EXTRA_DIST = \
+ COPYRIGHT \
+ ChangeLog \
+ CommitLog \
+ CommitLog-4.1.0 \
+ NEWS \
+ NOTES.y2kfixes \
+ README.bk \
+ README.hackers \
+ README.patches \
README.refclocks \
- README.versions \
- TODO \
- WHERE-TO-START \
- build \
- config.guess \
- config.h.in \
- config.sub \
- dot.emacs \
- excludes \
- flock-build \
- install-sh \
- readme.y2kfixes \
- results.y2kfixes \
- conf \
- html \
- libisc \
- ports \
- version
-
-DISTCLEANFILES = .warning
-
-#ETAGS_ARGS = $(srcdir)/Makefile.am $(srcdir)/configure.in
-ETAGS_ARGS = Makefile.am configure.in
+ README.versions \
+ TODO \
+ WHERE-TO-START \
+ bootstrap \
+ build \
+ config.guess \
+ config.h.in \
+ config.sub \
+ dot.emacs \
+ excludes \
+ flock-build \
+ install-sh \
+ packageinfo.sh \
+ readme.y2kfixes \
+ results.y2kfixes \
+ \
+ conf \
+ html \
+ libisc \
+ ports \
+ \
+ bincheck.mf \
+ version \
+ version.m4 \
+ \
+ $(NULL)
+
+DISTCLEANFILES = .gcc-warning
+
+#ETAGS_ARGS = $(srcdir)/Makefile.am $(srcdir)/configure.ac
+ETAGS_ARGS = Makefile.am configure.ac
# HMS: make ports be the last directory...
# DIST_HOOK_DIRS = conf html scripts ports
-# HMS: Keep .warning first, as that way it gets printed first.
-BUILT_SOURCES = .warning $(srcdir)/COPYRIGHT $(srcdir)/version
+# HMS: Keep .gcc-warning first, as that way it gets printed first.
+BUILT_SOURCES = .gcc-warning $(srcdir)/COPYRIGHT $(srcdir)/version $(srcdir)/version.m4 $(srcdir)/include/version.def
$(srcdir)/COPYRIGHT: $(srcdir)/html/copyright.html
( echo "This file is automatically generated from html/copyright.html" ; lynx -dump $(srcdir)/html/copyright.html ) > $(srcdir)/COPYRIGHT.new && mv $(srcdir)/COPYRIGHT.new $(srcdir)/COPYRIGHT
@@ -93,6 +113,14 @@ $(srcdir)/version: FRC.version
y=`cat version 2>/dev/null` || true && \
case "$$x" in ''|$$y) ;; *) echo $$x > version ;; esac
+$(srcdir)/version.m4: $(srcdir)/packageinfo.sh
+ cd $(srcdir) && \
+ ./scripts/genver version.m4
+
+$(srcdir)/include/version.def: $(srcdir)/packageinfo.sh
+ cd $(srcdir) && \
+ ./scripts/genver include/version.def
+
dist-hook:
@find $(distdir) -type d -name CVS -print | xargs rm -rf
@find $(distdir) -type d -name SCCS -print | xargs rm -rf
@@ -100,7 +128,7 @@ dist-hook:
@for i in `find $(distdir)/ports/winnt -type f -name '*.ds*' -print`; \
do chmod u+w $$i ; unix2dos $$i $$i; done
-.warning:
+.gcc-warning:
@echo "Compiling with GCC now generates lots of new warnings."
@echo " "
@echo "Don't be concerned. They're just warnings."
@@ -110,7 +138,13 @@ dist-hook:
@echo "Feel free to send patches that fix these warnings, though."
@echo " "
@sleep 1
- @touch .warning
+ @touch $@
+
+CommitLog: FRC.CommitLog
+ cd $(srcdir) \
+ && /bin/test -e CommitLog \
+ -a SCCS/s.ChangeSet -ot CommitLog \
+ || scripts/genCommitLog
# HMS: The following seems to be a work-in-progress...
@@ -137,7 +171,7 @@ BHOST=`(hostname || uname -n)`
echo " "; \
fi
-FRC.distwarn FRC.checkcvo FRC.checkhost FRC.version:
+FRC.CommitLog FRC.distwarn FRC.checkcvo FRC.checkhost FRC.version:
# HMS: what was I trying to do with this?
#dot.emacs: FRC.distwarn
diff --git a/contrib/ntp/Makefile.in b/contrib/ntp/Makefile.in
index 9cf55d2..beb6200 100644
--- a/contrib/ntp/Makefile.in
+++ b/contrib/ntp/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -13,7 +13,6 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
-
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -21,7 +20,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +35,57 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+@NEED_LIBOPTS_TRUE@am__append_1 = libopts
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(top_srcdir)/configure ChangeLog INSTALL NEWS TODO compile \
+ config.guess config.sub depcomp install-sh ltmain.sh missing
+subdir = .
+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/hs_ulong_const.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)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +93,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +109,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +164,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +199,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,135 +207,124 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
#AUTOMAKE_OPTIONS = util/ansi2knr foreign dist-tarZ no-dependencies
-AUTOMAKE_OPTIONS = util/ansi2knr foreign 1.5
-
-SUBDIRS = \
- scripts \
- include \
- ElectricFence \
- @ARLIB_DIR@ \
- libntp \
- libparse \
- ntpd \
- ntpdate \
- ntpdc \
- ntpq \
- parseutil \
- adjtimed \
- clockstuff \
- kernel \
- @MAKE_SNTP@ \
- util
-
-
+AUTOMAKE_OPTIONS = util/ansi2knr foreign 1.8
+ACLOCAL_AMFLAGS = -I m4 -I libopts/m4
+NULL =
+SUBDIRS = $(am__append_1) scripts include ElectricFence @ARLIB_DIR@ \
+ libntp libparse ntpd ntpdate ntpdc ntpq parseutil adjtimed \
+ clockstuff kernel sntp util $(NULL)
DIST_SUBDIRS = \
- scripts \
- include \
+ scripts \
+ include \
ElectricFence \
- arlib \
- libntp \
+ arlib \
+ libntp \
+ libopts \
libparse \
- ntpd \
- ntpdate \
- ntpdc \
- ntpq \
+ ntpd \
+ ntpdate \
+ ntpdc \
+ ntpq \
parseutil \
adjtimed \
clockstuff \
- kernel \
- sntp \
- util
-
-DISTCHECK_CONFIGURE_FLAGS = --with-arlib --with-sntp
+ kernel \
+ sntp \
+ util \
+ $(NULL)
+DISTCHECK_CONFIGURE_FLAGS = --with-arlib --enable-local-libopts
EXTRA_DIST = \
- COPYRIGHT \
- ChangeLog \
- ChangeLog-4.1.0 \
- NEWS \
- NOTES.y2kfixes \
- README.bk \
- README.hackers \
- README.patches \
+ COPYRIGHT \
+ ChangeLog \
+ CommitLog \
+ CommitLog-4.1.0 \
+ NEWS \
+ NOTES.y2kfixes \
+ README.bk \
+ README.hackers \
+ README.patches \
README.refclocks \
- README.versions \
- TODO \
- WHERE-TO-START \
- build \
- config.guess \
- config.h.in \
- config.sub \
- dot.emacs \
- excludes \
- flock-build \
- install-sh \
- readme.y2kfixes \
- results.y2kfixes \
- conf \
- html \
- libisc \
- ports \
- version
-
-
-DISTCLEANFILES = .warning
-
-#ETAGS_ARGS = $(srcdir)/Makefile.am $(srcdir)/configure.in
-ETAGS_ARGS = Makefile.am configure.in
+ README.versions \
+ TODO \
+ WHERE-TO-START \
+ bootstrap \
+ build \
+ config.guess \
+ config.h.in \
+ config.sub \
+ dot.emacs \
+ excludes \
+ flock-build \
+ install-sh \
+ packageinfo.sh \
+ readme.y2kfixes \
+ results.y2kfixes \
+ \
+ conf \
+ html \
+ libisc \
+ ports \
+ \
+ bincheck.mf \
+ version \
+ version.m4 \
+ \
+ $(NULL)
+
+DISTCLEANFILES = .gcc-warning
+
+#ETAGS_ARGS = $(srcdir)/Makefile.am $(srcdir)/configure.ac
+ETAGS_ARGS = Makefile.am configure.ac
# HMS: make ports be the last directory...
# DIST_HOOK_DIRS = conf html scripts ports
-# HMS: Keep .warning first, as that way it gets printed first.
-BUILT_SOURCES = .warning $(srcdir)/COPYRIGHT $(srcdir)/version
-
+# HMS: Keep .gcc-warning first, as that way it gets printed first.
+BUILT_SOURCES = .gcc-warning $(srcdir)/COPYRIGHT $(srcdir)/version $(srcdir)/version.m4 $(srcdir)/include/version.def
# HMS: The following seems to be a work-in-progress...
CVO = `$(srcdir)/config.guess`
-
BHOST = `(hostname || uname -n)`
-subdir = .
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-
-RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
- ps-recursive install-info-recursive uninstall-info-recursive \
- all-recursive install-data-recursive install-exec-recursive \
- installdirs-recursive install-recursive uninstall-recursive \
- check-recursive installcheck-recursive
-DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure \
- ChangeLog INSTALL Makefile.am NEWS TODO acinclude.m4 aclocal.m4 \
- compile config.guess config.h.in config.sub configure \
- configure.in depcomp install-sh missing mkinstalldirs
all: $(BUILT_SOURCES) config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
-
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
+ cd $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
-
-$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
-$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
- cd $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): configure.in acinclude.m4
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@@ -286,13 +336,22 @@ config.h: stamp-h1
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
-
-$(srcdir)/config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
- touch $(srcdir)/config.h.in
+ rm -f stamp-h1
+ touch $@
distclean-hdr:
-rm -f config.h stamp-h1
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
@@ -302,7 +361,13 @@ uninstall-info-am:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
- @set fnord $$MAKEFLAGS; amf=$$2; \
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -314,7 +379,7 @@ $(RECURSIVE_TARGETS):
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -322,7 +387,13 @@ $(RECURSIVE_TARGETS):
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
- @set fnord $$MAKEFLAGS; amf=$$2; \
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -343,7 +414,7 @@ maintainer-clean-recursive:
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -354,14 +425,6 @@ ctags-recursive:
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -370,19 +433,22 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
- if (etags --etags-include --version) >/dev/null 2>&1; then \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
+ empty_fix=.; \
else \
include_option=--include; \
+ empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -f $$subdir/TAGS && \
+ test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
@@ -392,10 +458,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -418,24 +485,11 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = .
-distdir = $(PACKAGE)-$(VERSION)
-
-am__remove_distdir = \
- { test ! -d $(distdir) \
- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr $(distdir); }; }
-
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
- $(mkinstalldirs) $(distdir)/ntpdc $(distdir)/scripts
+ $(mkdir_p) $(distdir)/libopts/m4 $(distdir)/m4 $(distdir)/ntpdc $(distdir)/scripts
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@@ -447,7 +501,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -464,13 +518,15 @@ distdir: $(DISTFILES)
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d $(distdir)/$$subdir \
- || mkdir $(distdir)/$$subdir \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$(top_distdir)" \
- distdir=../$(distdir)/$$subdir \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
@@ -484,19 +540,46 @@ distdir: $(DISTFILES)
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
- $(am__remove_distdir)
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
@@ -516,19 +599,20 @@ distcheck: dist
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
- (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
- && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
- && rm -f $(distdir).tar.gz \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
- @echo "$(distdir).tar.gz is ready for distribution" | \
- sed 'h;s/./=/g;p;x;p;x'
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
@@ -553,7 +637,6 @@ check: $(BUILT_SOURCES)
all-am: Makefile config.h
installdirs: installdirs-recursive
installdirs-am:
-
install: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-recursive
install-exec: install-exec-recursive
@@ -566,7 +649,7 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -574,7 +657,7 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@@ -583,18 +666,20 @@ maintainer-clean-generic:
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
clean: clean-recursive
-clean-am: clean-generic mostlyclean-am
+clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-
-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
+distclean-am: clean-am distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
+html: html-recursive
+
info: info-recursive
info-am:
@@ -612,13 +697,12 @@ installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
-mostlyclean-am: mostlyclean-generic
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
@@ -632,22 +716,20 @@ uninstall-am: uninstall-info-am
uninstall-info: uninstall-info-recursive
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
- clean-generic clean-recursive ctags ctags-recursive dist \
- dist-all dist-gzip distcheck distclean distclean-generic \
- distclean-hdr distclean-recursive distclean-tags distcleancheck \
- distdir distuninstallcheck dvi dvi-am dvi-recursive info \
- info-am info-recursive install install-am install-data \
- install-data-am install-data-recursive install-exec \
- install-exec-am install-exec-recursive install-info \
- install-info-am install-info-recursive install-man \
- install-recursive install-strip installcheck installcheck-am \
- installdirs installdirs-am installdirs-recursive \
- maintainer-clean maintainer-clean-generic \
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+ check-am clean clean-generic clean-libtool clean-recursive \
+ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
+ dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \
+ distclean-generic distclean-hdr distclean-libtool \
+ distclean-recursive distclean-tags distcleancheck distdir \
+ distuninstallcheck 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 \
+ installdirs-am maintainer-clean maintainer-clean-generic \
maintainer-clean-recursive mostlyclean mostlyclean-generic \
- mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \
- ps-recursive tags tags-recursive uninstall uninstall-am \
- uninstall-info-am uninstall-info-recursive uninstall-recursive
+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am uninstall-info-am
$(srcdir)/COPYRIGHT: $(srcdir)/html/copyright.html
@@ -665,6 +747,14 @@ $(srcdir)/version: FRC.version
y=`cat version 2>/dev/null` || true && \
case "$$x" in ''|$$y) ;; *) echo $$x > version ;; esac
+$(srcdir)/version.m4: $(srcdir)/packageinfo.sh
+ cd $(srcdir) && \
+ ./scripts/genver version.m4
+
+$(srcdir)/include/version.def: $(srcdir)/packageinfo.sh
+ cd $(srcdir) && \
+ ./scripts/genver include/version.def
+
dist-hook:
@find $(distdir) -type d -name CVS -print | xargs rm -rf
@find $(distdir) -type d -name SCCS -print | xargs rm -rf
@@ -672,7 +762,7 @@ dist-hook:
@for i in `find $(distdir)/ports/winnt -type f -name '*.ds*' -print`; \
do chmod u+w $$i ; unix2dos $$i $$i; done
-.warning:
+.gcc-warning:
@echo "Compiling with GCC now generates lots of new warnings."
@echo " "
@echo "Don't be concerned. They're just warnings."
@@ -682,7 +772,13 @@ dist-hook:
@echo "Feel free to send patches that fix these warnings, though."
@echo " "
@sleep 1
- @touch .warning
+ @touch $@
+
+CommitLog: FRC.CommitLog
+ cd $(srcdir) \
+ && /bin/test -e CommitLog \
+ -a SCCS/s.ChangeSet -ot CommitLog \
+ || scripts/genCommitLog
.buildcvo:
echo "$(CVO)" > .buildcvo
@@ -703,7 +799,7 @@ dist-hook:
echo " "; \
fi
-FRC.distwarn FRC.checkcvo FRC.checkhost FRC.version:
+FRC.CommitLog FRC.distwarn FRC.checkcvo FRC.checkhost FRC.version:
# HMS: what was I trying to do with this?
#dot.emacs: FRC.distwarn
diff --git a/contrib/ntp/NEWS b/contrib/ntp/NEWS
index 0d5bead..6290fb5 100644
--- a/contrib/ntp/NEWS
+++ b/contrib/ntp/NEWS
@@ -1,154 +1,69 @@
-(4.2.0)
-* More stuff than I have time to document
-* Bugfixes
-* call-gap filtering
-* wwv and chu refclock improvements
-* OpenSSL integration
-
-(4.1.2)
-* clock state machine bugfix
-* Lose the source port check on incoming packets
-* (x)ntpdc compatibility patch
-* Virtual IP improvements
-* ntp_loopfilter fixes and improvements
-* ntpdc improvements
-* GOES refclock fix
-* JJY driver
-* Jupiter refclock fixes
-* Neoclock4X refclock fixes
-* AIX 5 port
-* bsdi port fixes
-* Cray unicos port upgrade
-* HP MPE/iX port
-* Win/NT port upgrade
-* Dynix PTX port fixes
-* Document conversion from CVS to BK
-* readline support for ntpq
-
-(4.1.0)
-* CERT problem fixed (99k23)
-* Huff-n-Puff filter
-* Preparation for OpenSSL support
-* Resolver changes/improvements are not backward compatible with mode 7
- requests (which are implementation-specific anyway)
-* leap second stuff
-* manycast should work now
-* ntp-genkeys does new good things.
-* scripts/ntp-close
-* PPS cleanup and improvements
-* readline support for ntpdc
-* Crypto/authentication rewrite
-* WINNT builds with MD5 by default
-* WINNT no longer requires Perl for building with Visual C++ 6.0
-* algorithmic improvements, bugfixes
-* Solaris dosynctodr info update
-* html/pic/* is *lots* smaller
-* New/updated drivers: Forum Graphic GPS, WWV/H, Heath GC-100 II, HOPF
- serial and PCI, ONCORE, ulink331
-* Rewrite of the audio drivers
-
-(4.0.99)
-* Driver updates: CHU, DCF, GPS/VME, Oncore, PCF, Ulink, WWVB, burst
- If you use the ONCORE driver with a HARDPPS kernel module,
- you *must* have a properly specified:
- pps <filename> [assert/clear] [hardpps]
- line in the /etc/ntp.conf file.
-* PARSE cleanup
-* PPS cleanup
-* ntpd, ntpq, ntpdate cleanup and fixes
-* NT port improvements
-* AIX, BSDI, DEC OSF, FreeBSD, NetBSD, Reliant, SCO, Solaris port improvements
-
-(4.0.98)
-* Solaris kernel FLL bug is fixed in 106541-07
-* Bug/lint cleanup
-* PPS cleanup
-* ReliantUNIX patches
-* NetInfo support
-* Ultralink driver
-* Trimble OEM Ace-II support
-* DCF77 power choices
-* Oncore improvements
-
-(4.0.97)
-* NT patches
-* AIX,SunOS,IRIX portability
-* NeXT portability
-* ntptimeset utility added
-* cygwin portability patches
-
-(4.0.96)
-* -lnsl, -lsocket, -lgen configuration patches
-* Y2K patches from AT&T
-* Linux portability cruft
-
-(4.0.95)
-* NT port cleanup/replacement
-* a few portability fixes
-* VARITEXT Parse clock added
-
-(4.0.94)
-* PPS updates (including ntp.config options)
-* Lose the old DES stuff in favor of the (optional) RSAREF stuff
-* html cleanup/updates
-* numerous drivers cleaned up
-* numerous portability patches and code cleanup
-
-(4.0.93)
-* Oncore refclock needs PPS or one of two ioctls.
-* Don't make ntptime under Linux. It doesn't compile for too many folks.
-* Autokey cleanup
-* ReliantUnix patches
-* html cleanup
-* tickadj cleanup
-* PARSE cleanup
-* IRIX -n32 cleanup
-* byte order cleanup
-* ntptrace improvements and patches
-* ntpdc improvements and patches
-* PPS cleanup
-* mx4200 cleanup
-* New clock state machine
-* SCO cleanup
-* Skip alias interfaces
-
-(4.0.92)
-* chronolog and dumbclock refclocks
-* SCO updates
-* Cleanup/bugfixes
-* Y2K patches
-* Updated palisade driver
-* Plug memory leak
-* wharton kernel clock
-* Oncore clock upgrades
-* NMEA clock improvements
-* PPS improvements
-* AIX portability patches
-
-(4.0.91)
-* New ONCORE driver
-* New MX4200 driver
-* Palisade improvements
-* config file bugfixes and problem reporting
-* autoconf upgrade and cleanup
-* HP-UX, IRIX lint cleanup
-* AIX portability patches
-* NT cleanup
-
-(4.0.90)
-* Nanoseconds
-* New palisade driver
-* New Oncore driver
-
-(4.0.73)
-* README.hackers added
-* PARSE driver is working again
-* Solaris 2.6 has nasty kernel bugs. DO NOT enable pll!
-* DES is out of the distribution.
-
-(4.0.72)
-* K&R C compiling should work again.
-* IRIG patches.
-* MX4200 driver patches.
-* Jupiter driver added.
-* Palisade driver added. Needs work (ANSI, ntoh/hton, sizeof double, ???)
+NTP 4.2.4p5 (Harlan Stenn <stenn@ntp.org>, 2008/08/17)
+
+Focus: Minor Bugfixes
+
+This release fixes a number of Windows-specific ntpd bugs and
+platform-independent ntpdate bugs. A logging bugfix has been applied
+to the ONCORE driver.
+
+The "dynamic" keyword and is now obsolete and deferred binding to local
+interfaces is the new default. The minimum time restriction for the
+interface update interval has been dropped.
+
+A number of minor build system and documentation fixes are included.
+
+This is a recommended upgrade for Windows.
+
+---
+NTP 4.2.4p4 (Harlan Stenn <stenn@ntp.org>, 2007/09/10)
+
+Focus: Minor Bugfixes
+
+This release updates certain copyright information, fixes several display
+bugs in ntpdc, avoids SIGIO interrupting malloc(), cleans up file descriptor
+shutdown in the parse refclock driver, removes some lint from the code,
+stops accessing certain buffers immediately after they were freed, fixes
+a problem with non-command-line specification of -6, and allows the loopback
+interface to share addresses with other interfaces.
+
+---
+NTP 4.2.4p3 (Harlan Stenn <stenn@ntp.org>, 2007/06/29)
+
+Focus: Minor Bugfixes
+
+This release fixes a bug in Windows that made it difficult to
+terminate ntpd under windows.
+This is a recommended upgrade for Windows.
+
+---
+NTP 4.2.4p2 (Harlan Stenn <stenn@ntp.org>, 2007/06/19)
+
+Focus: Minor Bugfixes
+
+This release fixes a multicast mode authentication problem,
+an error in NTP packet handling on Windows that could lead to
+ntpd crashing, and several other minor bugs. Handling of
+multicast interfaces and logging configuration were improved.
+The required versions of autogen and libopts were incremented.
+This is a recommended upgrade for Windows and multicast users.
+
+---
+NTP 4.2.4 (Harlan Stenn <stenn@ntp.org>, 2006/12/31)
+
+Focus: enhancements and bug fixes.
+
+Dynamic interface rescanning was added to simplify the use of ntpd in
+conjunction with DHCP. GNU AutoGen is used for its command-line options
+processing. Separate PPS devices are supported for PARSE refclocks, MD5
+signatures are now provided for the release files. Drivers have been
+added for some new ref-clocks and have been removed for some older
+ref-clocks. This release also includes other improvements, documentation
+and bug fixes.
+
+K&R C is no longer supported as of NTP-4.2.4. We are now aiming for ANSI
+C support.
+
+---
+NTP 4.2.0 (Harlan Stenn <stenn@ntp.org>, 2003/10/15)
+
+Focus: enhancements and bug fixes.
diff --git a/contrib/ntp/README b/contrib/ntp/README
index f9eeabc..daa8582 100644
--- a/contrib/ntp/README
+++ b/contrib/ntp/README
@@ -1,7 +1,7 @@
Submit patches, bug reports, and enhancement requests via
- http://bugzilla.ntp.org
+ http://bugs.ntp.isc.org
The ntp Distribution Base Directory
@@ -17,7 +17,7 @@ well as setting up an NTP subnet, is in the HTML pages in the ./html/
directory. For more information on NTP and how to get a working setup,
read WHERE-TO-START.
-For Windows/NT, visit html/hints/winnt .
+For Windows/NT, visit html/build/hints/winnt.html .
The base directory ./ contains the autoconfiguration files, source
directories and related stuff:
@@ -28,7 +28,7 @@ COPYRIGHT Excerpt from the HTML file ./html/copyright.html. This file
INSTALL Generic installation instructions for autoconf-based programs.
Unless you really know what you are doing, you should read the
- directions in the HTML pages, starting with ./html/index.htm.
+ directions in the HTML pages, starting with ./html/index.html.
NEWS What's new in this release.
@@ -78,7 +78,7 @@ config.h.in Configuration file generated automatically from
configure.in. Do not edit.
configure Script used to configure the distribution. See the HTML pages
- (./html/index.htm) for a complete description of the options
+ (./html/index.html) for a complete description of the options
available.
configure.in Master configuration template. Edit only if you have the
diff --git a/contrib/ntp/README.bk b/contrib/ntp/README.bk
index 2b840c4..dc867b5 100644
--- a/contrib/ntp/README.bk
+++ b/contrib/ntp/README.bk
@@ -1,63 +1,7 @@
-In order to use the BitKeeper repository version of NTP you will have
-to have the following tools installed:
+In order to use the BitKeeper repository version of NTP you should visit
- autoconf 2.53 or later
- automake 1.5 or later
- lynx
+ http://ntp.isc.org/Main/SoftwareDevelopment
-Lynx is used to generate the COPYRIGHT file. Don't ask.
-
-You can get bitkeeper by visiting:
-
- http://www.bitkeeper.com/
-
-We are using bitkeeper under their free license program. You can use
-bitkeeper for free to access NTP, too. If you have questions about this,
-please ask. The license is pretty easy to read.
-
-Once you have installed bitkeeper, you can clone any NTP repository.
-
- Note: as of 2002-05, ntp.bkserver.net and ntp.bkbits.net are
- being upgraded. Depending on the "phase" of the upgrade, one
- of the two machines may not answer.
-
-You can get the ntp-stable repository by either of the following commands:
-
- bk clone bk://www.ntp.org/home/bk/ntp-stable ntp-stable
-
- bk clone bk://ntp.bkserver.net/ntp-stable ntp-stable
-
- bk clone bk://ntp.bkbits.net/ntp-stable ntp-stable
-
-You can get the ntp-dev repository by either of the following commands:
-
- bk clone bk://www.ntp.org/home/bk/ntp-dev ntp-dev
-
- bk clone bk://ntp.bkserver.net/ntp-dev ntp-dev
-
- bk clone bk://ntp.bkbits.net/ntp-dev ntp-dev
-
-If you are stuck behind a firewall that blocks access to the default port
-used by bitkeeper (14690) but you can use port 80 instead, you can use
-http as a bk transport mechanism. Just use:
-
- bk clone http://ntp.bkserver.net/REPO REPO
-
-Finally, it's possible to use SMTP as a bk transport mechanism. So far, we
-haven't tried this.
-
-Once you have obtained the sources, do the following:
-
- cd REPO
- bk -r edit to check out the files
- autoreconf -f -i generates configure and Makefile.in's
-
-and you should be ready to go. You will get some warning messages from
-autoreconf. Ignore these messages.
-
-You can update your repository by incanting:
-
- cd REPO
- bk pull
+for important information.
If you want to submit patches, please see the README.hackers file.
diff --git a/contrib/ntp/README.patches b/contrib/ntp/README.patches
index d59345e..476bc69 100644
--- a/contrib/ntp/README.patches
+++ b/contrib/ntp/README.patches
@@ -1,5 +1,9 @@
See README.hackers for notes on coding styles.
+The master copy of this information can be found at:
+
+ http://ntp.isc.org/bin/view/Dev/MaintainerIssues#How_to_work_on_a_bug_using_BitKe
+
If you are going to patch both ntp-stable and ntp-dev
please do it this way:
@@ -20,12 +24,18 @@ it will be trivial to apply your patches.
Otherwise, it will be much more difficult to apply your patches.
+You are pretty much done now if your repos are on pogo.udel.edu.
+
+If these patches are for a bugzilla issue, mark the issue as Resolved/READY
+with a comment of "Please pick up the patches in pogo:/wherever"
+
---
Please read (and follow) the previous section if you want to submit
patches for both ntp-stable and ntp-dev.
-To submit patches please use the 'bk send' command:
+If you cannot easily get your patches to pogo, you may submit patches
+via the 'bk send' command:
> cd REPO
> bk citool (or bk ci ... ; bk commit ... )
diff --git a/contrib/ntp/README.refclocks b/contrib/ntp/README.refclocks
index 38eecc8..99a2815 100644
--- a/contrib/ntp/README.refclocks
+++ b/contrib/ntp/README.refclocks
@@ -27,8 +27,8 @@ WWV_HEATH 19 /* Heath GC1000 WWV/WWVH Receiver */
GPS_NMEA 20 /* NMEA based GPS clock */
GPS_VME 21 /* TrueTime GPS-VME Interface */
ATOM_PPS 22 /* 1-PPS Clock Discipline */
-PTB_ACTS 23 /* PTB Auto Computer Time Service */
-USNO 24 /* Naval Observatory dialup */
+PTB_ACTS NIST_ACTS
+USNO NIST_ACTS
GPS_HP 26 /* HP 58503A Time/Frequency Receiver */
ARCRON_MSF 27 /* ARCRON MSF radio clock. */
SHM 28 /* clock attached thru shared memory */
diff --git a/contrib/ntp/README.versions b/contrib/ntp/README.versions
index 5509250..018d59d 100644
--- a/contrib/ntp/README.versions
+++ b/contrib/ntp/README.versions
@@ -1,35 +1,27 @@
NTP uses A.B.C - style release numbers.
-The third (C) part of the version number can be:
-
- 0-69 for patches/bugfixes to the A.B.C series.
- 70-79 for alpha releases of the A.B+1.0 series.
- 80+ for beta releases of the A.B+1.0 series.
-
At the moment:
A is 4, for ntp V4.
- B is the minor release number.
- C is the patch/bugfix number, and may have extra cruft in it.
+ B is the major release number.
+ C is the minor release number. Even numbers are 'stable' releases and
+ odd numbers are "development" releases.
-Any extra cruft in the C portion of the number indicates an "interim" release.
+Following the release number may be the letter 'p' followed by a number.
+This indicates a point (or patch) release.
-Interim releases almost always have a C portion consisting of a number
-followed by an increasing letter, optionally followed by -rcX, where X
-is an increasing number. The -rcX indicates a "release candidate".
+Release candidates have -RC in the release number.
Here are some recent versions numbers as an example:
- 4.1.0 A production release (from the ntp-stable repository)
- 4.1.0b-rc1 A release candidate for 4.1.1 (from the ntp-stable repo)
- 4.1.71 An alpha release of 4.2.0, from the ntp-dev repo
+ 4.2.2 A production release (from the ntp-stable repository)
+ 4.2.2p2 A production release (from the ntp-stable repository)
+ 4.2.3p12 A development release
+ 4.2.3p15-rc1 A release candidate for 4.2.4
Note that after the ntp-dev repo produces a production release it will
be copied into the ntp-stable and the cycle will repeat.
-The goal of this scheme is to produce version numbers that collate
-"properly" with the output of the "ls" command.
-
Feel free to suggest improvements...
diff --git a/contrib/ntp/TODO b/contrib/ntp/TODO
index c9f81fa..e72ee7b 100644
--- a/contrib/ntp/TODO
+++ b/contrib/ntp/TODO
@@ -114,8 +114,6 @@ Problems that need to be fixed:
Can we identify DomainOS with *-apollo-* ?
Do we catch all Unixware machines with *-univel-sysv* ?
-- How can we test if UDP_WILDCARD_DELIVERY should be used?
-
- Combine enable-step-slew and enable-ntpdate-step
- Make sure enable-hourly-todr-sync is always disabled
diff --git a/contrib/ntp/WHERE-TO-START b/contrib/ntp/WHERE-TO-START
index 2e3e77b..0814557 100644
--- a/contrib/ntp/WHERE-TO-START
+++ b/contrib/ntp/WHERE-TO-START
@@ -13,16 +13,16 @@ You are welcome to the lot, with due consideration of the copyright
information in the COPYRIGHT file. You are also invited to contribute
bugfixes and drivers for new and exotic radios, telephones and sundials.
This distribution is normally available by anonymous ftp as the
-compressed tar archive ntp-<version>.tar.Z in the pub/ntp directory on
-louie.udel.edu and <version> is the version number. The current version
-number can be found on the NTP web page <http://www.eecis.udel.edu/~ntp>.
+compressed tar archive ntp-<version>.tar.gz in the pub/ntp directory on
+huey.udel.edu and <version> is the version number. The current stable
+and development version numbers can be found at <http://ntp.isc.org>.
A considerable amount of documentation, including build instructions,
configuration advice, program usage and miscellaneous information is
included in the ./html directory of this distribution. The intended
access method is using a web browser such as netscape; however, the
pages have been formatted so that viewing with an ordinary text editor
-is practical. Start the browser on the ./html/index.htm page, which
+is practical. Start the browser on the ./html/index.html page, which
contains additional instructions and hotlinks to the remaining pages.
Some hotlinks for the larger documents, such as related technical
memoranda, reports and papers, lead to other web sites where this
@@ -35,7 +35,7 @@ files in the base directory of this distribution is in the README file.
A list of "significant" changes for the release is in the NEWS file.
If you're interested in helping us test pre-release versions of ntpd,
-please look in <ftp://louie.udel.edu/pub/ntp/testing/>.
+please look in <ftp://huey.udel.edu/pub/ntp/testing/>.
David L. Mills (mills@udel.edu)
21 June 1998
diff --git a/contrib/ntp/aclocal.m4 b/contrib/ntp/aclocal.m4
index c4e624e..b90f615 100644
--- a/contrib/ntp/aclocal.m4
+++ b/contrib/ntp/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.7.7 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005 Free Software Foundation, Inc.
# This file 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.
@@ -11,396 +11,6196 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-AC_DEFUN(hs_ULONG_CONST,
-[ AH_TEMPLATE(ULONG_CONST, [How do we create unsigned long constants?])
-AC_EGREP_CPP(Circus,
- [#define ACAT(a,b)a ## b
-ACAT(Cir,cus)
-], AC_DEFINE([ULONG_CONST(a)], [a ## UL]),
- AC_EGREP_CPP(Reiser,
-[#define RCAT(a,b)a/**/b
-RCAT(Rei,ser)
-], AC_DEFINE([ULONG_CONST(a)], [a/**/L]),
- AC_MSG_ERROR([How do we create an unsigned long constant?])))])
-dnl @synopsis AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
-dnl
-dnl This macro defines (with AC_DEFINE) VARNAME to the expansion of the DIR
-dnl variable, taking care of fixing up ${prefix} and such.
-dnl
-dnl Note that the 3 argument form is only supported with autoconf 2.13 and
-dnl later (i.e. only where AC_DEFINE supports 3 arguments).
-dnl
-dnl Examples:
-dnl
-dnl AC_DEFINE_DIR(DATADIR, datadir)
-dnl AC_DEFINE_DIR(PROG_PATH, bindir, [Location of installed binaries])
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 47 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+ [],
+ [m4_define([AC_PROVIDE_IFELSE],
+ [m4_ifdef([AC_PROVIDE_$1],
+ [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+ AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [AC_LIBTOOL_CXX],
+ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+ ])])
+dnl And a similar setup for Fortran 77 support
+ AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [AC_LIBTOOL_F77],
+ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [ifdef([AC_PROG_GCJ],
+ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([A][M_PROG_GCJ],
+ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([LT_AC_PROG_GCJ],
+ [define([LT_AC_PROG_GCJ],
+ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
dnl
-dnl @version $Id: acinclude.m4,v 1.3 2000/08/04 03:26:22 stenn Exp $
-dnl @author Alexandre Oliva <oliva@lsd.ic.unicamp.br>
-
-AC_DEFUN(AC_DEFINE_DIR, [
- ac_expanded=`(
- test "x$prefix" = xNONE && prefix="$ac_default_prefix"
- test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
- eval echo \""[$]$2"\"
- )`
- ifelse($3, ,
- AC_DEFINE_UNQUOTED($1, "$ac_expanded"),
- AC_DEFINE_UNQUOTED($1, "$ac_expanded", $3))
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+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 to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ AC_PATH_MAGIC
+ fi
+ ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+ [AC_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+AC_DEFUN([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
])
-# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*-
-# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_COMPILER_BOILERPLATE
-# 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.
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+AC_DEFUN([_LT_LINKER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_LINKER_BOILERPLATE
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
-AC_PREREQ([2.52])
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+[$]*
+EOF
+ exit 0
+fi
-# serial 6
+# 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
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
-# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
-AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
-# Do all the work for Automake. -*- Autoconf -*-
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
-# This macro actually does too much some checks are only needed if
-# your package does certain things. But this isn't really a big deal.
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+ ])
+esac
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+])
-# 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.
+if test x"[$]$2" = xyes; then
+ ifelse([$5], , :, [$5])
+else
+ ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
-# 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.
+if test x"[$]$2" = xyes; then
+ ifelse([$4], , :, [$4])
+else
+ ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
+ esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-# serial 10
+# _LT_AC_CHECK_DLFCN
+# --------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
-AC_PREREQ([2.54])
-# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow
-# the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out. PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition. After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
- AC_REQUIRE([AC_PROG_INSTALL])dnl
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
- test -f $srcdir/config.status; then
- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}]
+EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_unknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
else
- CYGPATH_W=echo
+ enable_dlopen=no
fi
-fi
-AC_SUBST([CYGPATH_W])
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_MISSING_PROG(AMTAR, tar)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES(CC)],
- [define([AC_PROG_CC],
- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES(CXX)],
- [define([AC_PROG_CXX],
- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-])
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+ $SED '/^$/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated. The stamp files are numbered to have different names.
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_AC_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_stamp_count=1
-for _am_header in $config_headers :; do
- case $_am_header in
- $1 | $1:* )
- break ;;
- * )
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
esac
-done
-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[123]]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
-# Copyright 2002 Free Software Foundation, Inc.
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+ [include additional configurations @<:@automatic@:>@])],
+ [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ AC_MSG_WARN([output file `$ofile' does not exist])
+ fi
-# 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.
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+ else
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
-# 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.
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+ "") ;;
+ *) AC_MSG_ERROR([invalid tag name: $tagname])
+ ;;
+ esac
-# 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., 59 Temple Place - Suite 330, Boston, MA
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ AC_MSG_ERROR([tag name \"$tagname\" already exists])
+ fi
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+ AC_LIBTOOL_LANG_F77_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+ AC_LIBTOOL_LANG_GCJ_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+ AC_LIBTOOL_LANG_RC_CONFIG
+ ;;
+
+ *)
+ AC_MSG_ERROR([Unsupported tag name: $tagname])
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION so it can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
- [AM_AUTOMAKE_VERSION([1.7.7])])
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ AC_MSG_ERROR([unable to update list of available tagged configurations.])
+ fi
+fi
+])# _LT_AC_TAGCONFIG
-# Helper functions for option handling. -*- Autoconf -*-
-# Copyright 2001, 2002 Free Software Foundation, Inc.
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 DLLs
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
-# 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.
+# AC_DISABLE_SHARED
+# -----------------
+#- set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-# serial 2
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
-# _AM_MANGLE_OPTION(NAME)
+
+# AC_DISABLE_FAST_INSTALL
# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME. Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="ifelse([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+ [AC_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sco3.2v5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# it is assumed to be `libltdl'. LIBLTDL will be prefixed with
+# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+# (note the single quotes!). If your package is not flat and you're not
+# using automake, define top_builddir and top_srcdir appropriately in
+# the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+ "") enable_ltdl_convenience=yes
+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+ esac
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# and an installed libltdl is not found, it is assumed to be `libltdl'.
+# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+# '${top_srcdir}/' (note the single quotes!). If your package is not
+# flat and you're not using automake, define top_builddir and top_srcdir
+# appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_CHECK_LIB(ltdl, lt_dlinit,
+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+ [if test x"$enable_ltdl_install" = xno; then
+ AC_MSG_WARN([libltdl not installed, but installation disabled])
+ else
+ enable_ltdl_install=yes
+ fi
+ ])
+ if test x"$enable_ltdl_install" = x"yes"; then
+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ else
+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+ LIBLTDL="-lltdl"
+ LTDLINCL=
+ fi
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ---------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([AC_PROG_CXX])
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+fi
+])# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# --------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
#
-# Check to make sure that the build environment is sane.
+# Check for any special shared library compilation flags.
#
+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
+if test "$GCC" = no; then
+ case $host_os in
+ sco3.2v5*)
+ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
+ ;;
+ esac
+fi
+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
+ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
+ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then :
+ else
+ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
+ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
+ fi
+fi
-# Copyright 1996, 1997, 2000, 2001 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.
+#
+# Check to make sure the static flag actually works.
+#
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
+ [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+# Report which librarie types wil actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
-# 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.
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+ unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
-# serial 3
+ AC_PROG_LD
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t $srcdir/configure conftest.file`
- fi
- rm -f conftest.file
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
- test "$[2]" = conftest.file
- )
-then
- # Ok.
- :
else
- AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
fi
-AC_MSG_RESULT(yes)])
-# -*- Autoconf -*-
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ fi
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ freebsd[[12]]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ ia64*|hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc*)
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+ $rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ sco*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker. We must also pass each convience library through
+ # to the system linker between allextract/defaultextract.
+ # The C++ compiler will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+ _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+ _LT_AC_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+ _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
-# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
+ esac
+ done
-# 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.
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
-# 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.
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+ifelse([$1],[CXX],
+[case $host_os in
+solaris*)
+ case $cc_basename in
+ CC*)
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+ ;;
+ esac
+esac
+])
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars. Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ _LT_AC_TAGVAR(compiler, $1) \
+ _LT_AC_TAGVAR(CC, $1) \
+ _LT_AC_TAGVAR(LD, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+ _LT_AC_TAGVAR(old_archive_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+ _LT_AC_TAGVAR(predep_objects, $1) \
+ _LT_AC_TAGVAR(postdep_objects, $1) \
+ _LT_AC_TAGVAR(predeps, $1) \
+ _LT_AC_TAGVAR(postdeps, $1) \
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+ _LT_AC_TAGVAR(archive_cmds, $1) \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(postinstall_cmds, $1) \
+ _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+ _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+ _LT_AC_TAGVAR(no_undefined_flag, $1) \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+ _LT_AC_TAGVAR(hardcode_automatic, $1) \
+ _LT_AC_TAGVAR(module_cmds, $1) \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(exclude_expsyms, $1) \
+ _LT_AC_TAGVAR(include_expsyms, $1); do
+
+ case $var in
+ _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(module_cmds, $1) | \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\[$]0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+ ;;
+ esac
+
+ifelse([$1], [],
+ [cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ AC_MSG_NOTICE([creating $ofile])],
+ [cfgfile="$ofile"])
+
+ cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# 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.
-# serial 3
+# A sed program that does not truncate output.
+SED=$lt_SED
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+# 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
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+])
else
- am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDGIRSTW]]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris* | sysv5*)
+ symcode='[[BDRT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ icpc* | ecpc*)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler.
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ sco*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ unixware*)
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
-# AM_AUX_DIR_EXPAND
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
-# Copyright 2001 Free Software Foundation, Inc.
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
-# 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.
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
-# 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.
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ unicos*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+],[
+ runpath_var=
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)=
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_AC_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ _LT_CC_BASENAME([$compiler])
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ # see comment about different semantics on the GNU ld section
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ bsdi[[45]]*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ sco3.2v5*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ *)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv5*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_AC_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# # ifdef __CYGWIN32__
+# # define __CYGWIN__ __CYGWIN32__
+# # endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+# __hDllInstance_base = hInst;
+# return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD], [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_MSG_RESULT([$SED])
+])
+
+# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+ [AM_AUTOMAKE_VERSION([1.9.6])])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
@@ -440,131 +6240,55 @@ fi
# absolute PATH. The drawback is that using absolute paths prevent a
# configured tree to be moved without reconfiguration.
-# Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])
-
-AC_DEFUN([AM_AUX_DIR_EXPAND], [
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
# expand $ac_aux_dir to an absolute path
am_aux_dir=`cd $ac_aux_dir && pwd`
])
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-
-# Copyright 2001 Free Software Foundation, Inc.
+# AM_CONDITIONAL -*- Autoconf -*-
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
-AC_SUBST(install_sh)])
-
-# AM_PROG_INSTALL_STRIP
-
-# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# One issue with vendor `install' (even GNU) is that you can't
-# specify the program used to strip binaries. This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-if test "$cross_compiling" != no; then
- AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# -*- Autoconf -*-
-# Copyright (C) 2003 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-# serial 1
+# serial 7
-# Check whether the underlying file-system supports filenames
-# with a leading dot. For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
else
- am__leading_dot=_
+ $1_TRUE='#'
+ $1_FALSE=
fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# serial 5 -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003 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.
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
+# serial 8
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
@@ -573,7 +6297,6 @@ AC_SUBST([am__leading_dot])])
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
@@ -632,7 +6355,9 @@ AC_CACHE_CHECK([dependency style of $depcc],
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- : > sub/conftst$i.h
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
@@ -660,9 +6385,14 @@ AC_CACHE_CHECK([dependency style of $depcc],
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
- # (even with -Werror). So we grep stderr for any message
- # that says an option was ignored.
- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_$1_dependencies_compiler_type=$depmode
break
fi
@@ -696,8 +6426,8 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
# ------------
AC_DEFUN([AM_DEP_TRACK],
[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking Speeds up one-time builds
- --enable-dependency-tracking Do not reject slow dependency extractors])
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
@@ -706,26 +6436,16 @@ AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])
])
-# Generate code to set up dependency tracking. -*- Autoconf -*-
-
-# Copyright 1999, 2000, 2001, 2002 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.
+# Generate code to set up dependency tracking. -*- Autoconf -*-
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-#serial 2
+#serial 3
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
@@ -744,27 +6464,21 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
else
continue
fi
- grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
- # Extract the definition of DEP_FILES from the Makefile without
- # running `make'.
- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n -e '/^U = / s///p' < "$mf"`
- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
- # We invoke sed twice because it is the simplest approach to
- # changing $(DEPDIR) to its actual value in the expansion.
- for file in `sed -n -e '
- /^DEP_FILES = .*\\\\$/ {
- s/^DEP_FILES = //
- :loop
- s/\\\\$//
- p
- n
- /\\\\$/ b loop
- p
- }
- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
@@ -790,27 +6504,177 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
-# Check to see how 'make' treats includes. -*- Autoconf -*-
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+# serial 8
-# 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.
+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
-# 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.
+# Do all the work for Automake. -*- Autoconf -*-
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 12
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.58])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
# serial 2
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 3
+
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
@@ -853,84 +6717,155 @@ AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
-# AM_CONDITIONAL -*- Autoconf -*-
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright 1997, 2000, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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 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.
+# serial 4
-# 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.
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-# serial 5
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
-AC_PREREQ(2.52)
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])
-AC_SUBST([$1_FALSE])
-if $2; then
- $1_TRUE=
- $1_FALSE='#'
+# AM_PROG_MKDIR_P
+# ---------------
+# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+#
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake. There are at least two reasons why we must not
+# use `-m 0755':
+# - it causes special bits like SGID to be ignored,
+# - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out. Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
else
- $1_TRUE='#'
- $1_FALSE=
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
- AC_MSG_ERROR([conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.])
-fi])])
+AC_SUBST([mkdir_p])])
+# Helper functions for option handling. -*- Autoconf -*-
-# Copyright 1996, 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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 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.
+# serial 3
-# 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.
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-# serial 2
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 4
AC_DEFUN([AM_C_PROTOTYPES],
-[AC_REQUIRE([AM_PROG_CC_STDC])
-AC_REQUIRE([AC_PROG_CPP])
-AC_MSG_CHECKING([for function prototypes])
-if test "$am_cv_prog_cc_stdc" != no; then
- AC_MSG_RESULT(yes)
- AC_DEFINE(PROTOTYPES,1,[Define if compiler has function prototypes])
+[AC_REQUIRE([AC_C_PROTOTYPES])
+if test "$ac_cv_prog_cc_stdc" != no; then
U= ANSI2KNR=
else
- AC_MSG_RESULT(no)
U=_ ANSI2KNR=./ansi2knr
fi
# Ensure some checks needed by ansi2knr itself.
-AC_HEADER_STDC
+AC_REQUIRE([AC_HEADER_STDC])
AC_CHECK_HEADERS(string.h)
AC_SUBST(U)dnl
AC_SUBST(ANSI2KNR)dnl
@@ -938,111 +6873,183 @@ AC_SUBST(ANSI2KNR)dnl
AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
-# Copyright 1996, 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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 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.
+# serial 4
-# 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.
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
# serial 2
-# @defmac AC_PROG_CC_STDC
-# @maindex PROG_CC_STDC
-# @ovindex CC
-# If the C compiler in not in ANSI C mode by default, try to add an option
-# to output variable @code{CC} to make it so. This macro tries various
-# options that select ANSI C on some system or another. It considers the
-# compiler to be in ANSI C mode if it handles function prototypes correctly.
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
#
-# If you use this macro, you should check after calling it whether the C
-# compiler has been set to accept ANSI C; if not, the shell variable
-# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source
-# code in ANSI C, you can make an un-ANSIfied copy of it by using the
-# program @code{ansi2knr}, which comes with Ghostscript.
-# @end defmac
-
-AC_DEFUN([AM_PROG_CC_STDC],
-[AC_REQUIRE([AC_PROG_CC])
-AC_BEFORE([$0], [AC_C_INLINE])
-AC_BEFORE([$0], [AC_C_CONST])
-dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require
-dnl a magic option to avoid problems with ANSI preprocessor commands
-dnl like #elif.
-dnl FIXME: can't do this because then AC_AIX won't work due to a
-dnl circular dependency.
-dnl AC_BEFORE([$0], [AC_PROG_CPP])
-AC_MSG_CHECKING([for ${CC-cc} option to accept ANSI C])
-AC_CACHE_VAL(am_cv_prog_cc_stdc,
-[am_cv_prog_cc_stdc=no
-ac_save_CC="$CC"
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX -qlanglvl=ansi
-# Ultrix and OSF/1 -std1
-# HP-UX 10.20 and later -Ae
-# HP-UX older versions -Aa -D_HPUX_SOURCE
-# SVR4 -Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
do
- CC="$ac_save_CC $ac_arg"
- AC_TRY_COMPILE(
-[#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-], [
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
-],
-[am_cv_prog_cc_stdc="$ac_arg"; break])
-done
-CC="$ac_save_CC"
-])
-if test -z "$am_cv_prog_cc_stdc"; then
- AC_MSG_RESULT([none needed])
-else
- AC_MSG_RESULT([$am_cv_prog_cc_stdc])
-fi
-case "x$am_cv_prog_cc_stdc" in
- x|xno) ;;
- *) CC="$CC $am_cv_prog_cc_stdc" ;;
-esac
-])
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
-AU_DEFUN([fp_PROG_CC_STDC], [AM_PROG_CC_STDC])
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([libopts/m4/libopts.m4])
+m4_include([m4/define_dir.m4])
+m4_include([m4/hs_ulong_const.m4])
+m4_include([m4/os_cflags.m4])
diff --git a/contrib/ntp/adjtimed/Makefile.am b/contrib/ntp/adjtimed/Makefile.am
index 14a44c6..9605d1f 100644
--- a/contrib/ntp/adjtimed/Makefile.am
+++ b/contrib/ntp/adjtimed/Makefile.am
@@ -1,8 +1,10 @@
-#AUTOMAKE_OPTIONS = ../ansi2knr #no-dependencies
-AUTOMAKE_OPTIONS = ../util/ansi2knr
-bin_PROGRAMS = @MAKE_ADJTIMED@
-EXTRA_PROGRAMS = adjtimed
-INCLUDES = -I$(top_srcdir)/include
-LDADD = ../libntp/libntp.a
-#EXTRA_DIST = TAGS
-ETAGS_ARGS = Makefile.am
+AUTOMAKE_OPTIONS= ../util/ansi2knr
+
+bindir= ${exec_prefix}/${BINSUBDIR}
+bin_PROGRAMS= @MAKE_ADJTIMED@
+EXTRA_PROGRAMS= adjtimed
+AM_CPPFLAGS= -I$(top_srcdir)/include
+LDADD= ../libntp/libntp.a
+ETAGS_ARGS= Makefile.am
+
+include ../bincheck.mf
diff --git a/contrib/ntp/adjtimed/Makefile.in b/contrib/ntp/adjtimed/Makefile.in
index b411260..7c16deb 100644
--- a/contrib/ntp/adjtimed/Makefile.in
+++ b/contrib/ntp/adjtimed/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -14,6 +14,10 @@
@SET_MAKE@
+# we traditionally installed software in bindir, while it should have gone
+# in sbindir. Now that we offer a choice, look in the "other" installation
+# subdir to warn folks if there is another version there.
+
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -21,7 +25,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +40,57 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+ANSI2KNR = ../util/ansi2knr
+bin_PROGRAMS = @MAKE_ADJTIMED@
+EXTRA_PROGRAMS = adjtimed$(EXEEXT)
+DIST_COMMON = README $(srcdir)/../bincheck.mf $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+subdir = adjtimed
+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/hs_ulong_const.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 =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+adjtimed_SOURCES = adjtimed.c
+adjtimed_OBJECTS = adjtimed$U.$(OBJEXT)
+adjtimed_LDADD = $(LDADD)
+adjtimed_DEPENDENCIES = ../libntp/libntp.a
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = adjtimed.c
+DIST_SOURCES = adjtimed.c
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +98,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +114,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,15 +169,22 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
-bindir = @bindir@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = ${exec_prefix}/${BINSUBDIR}
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
@@ -139,6 +204,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,67 +212,55 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-
-#AUTOMAKE_OPTIONS = ../ansi2knr #no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
-bin_PROGRAMS = @MAKE_ADJTIMED@
-EXTRA_PROGRAMS = adjtimed
-INCLUDES = -I$(top_srcdir)/include
+AM_CPPFLAGS = -I$(top_srcdir)/include
LDADD = ../libntp/libntp.a
-#EXTRA_DIST = TAGS
ETAGS_ARGS = Makefile.am
-subdir = adjtimed
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-EXTRA_PROGRAMS = adjtimed$(EXEEXT)
-bin_PROGRAMS = @MAKE_ADJTIMED@
-PROGRAMS = $(bin_PROGRAMS)
-
-adjtimed_SOURCES = adjtimed.c
-adjtimed_OBJECTS = adjtimed$U.$(OBJEXT)
-adjtimed_LDADD = $(LDADD)
-adjtimed_DEPENDENCIES = ../libntp/libntp.a
-adjtimed_LDFLAGS =
-
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/adjtimed$U.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = adjtimed.c
-DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am
-SOURCES = adjtimed.c
-
all: all-am
.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../bincheck.mf $(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 adjtimed/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu adjtimed/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ $(AUTOMAKE) --foreign adjtimed/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
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
+ || test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
@@ -214,23 +268,25 @@ uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
- rm -f $(DESTDIR)$(bindir)/$$f; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
adjtimed$(EXEEXT): $(adjtimed_OBJECTS) $(adjtimed_DEPENDENCIES)
@rm -f adjtimed$(EXEEXT)
$(LINK) $(adjtimed_LDFLAGS) $(adjtimed_OBJECTS) $(adjtimed_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-
-ANSI2KNR = ../util/ansi2knr
../util/ansi2knr:
cd ../util && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
@@ -240,38 +296,38 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adjtimed$U.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
adjtimed_.c: adjtimed.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/adjtimed.c; then echo $(srcdir)/adjtimed.c; else echo adjtimed.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-adjtimed_.$(OBJEXT) : $(ANSI2KNR)
-uninstall-info-am:
+adjtimed_.$(OBJEXT) adjtimed_.lo : $(ANSI2KNR)
-ETAGS = etags
-ETAGSFLAGS =
+mostlyclean-libtool:
+ -rm -f *.lo
-CTAGS = ctags
-CTAGSFLAGS =
+clean-libtool:
+ -rm -rf .libs _libs
-tags: TAGS
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -281,6 +337,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -292,10 +349,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -318,12 +376,9 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/..
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@@ -335,7 +390,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -353,9 +408,10 @@ distdir: $(DISTFILES)
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
-
installdirs:
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@@ -367,7 +423,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -375,26 +431,27 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -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-binPROGRAMS clean-generic mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+ distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
@@ -402,6 +459,8 @@ info-am:
install-data-am:
install-exec-am: install-binPROGRAMS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
install-info: install-info-am
@@ -412,12 +471,12 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool
pdf: pdf-am
@@ -430,16 +489,29 @@ ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am info \
- info-am install install-am install-binPROGRAMS 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-compile \
- mostlyclean-generic mostlyclean-kr pdf pdf-am ps ps-am tags \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-exec \
+ install-exec-am install-exec-hook install-info install-info-am \
+ install-man install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-kr mostlyclean-libtool pdf pdf-am ps ps-am tags \
uninstall uninstall-am uninstall-binPROGRAMS uninstall-info-am
+
+install-exec-hook:
+ @case ${BINSUBDIR} in \
+ bin) ODIR=${exec_prefix}/sbin ;; \
+ sbin) ODIR=${exec_prefix}/bin ;; \
+ esac; \
+ test -z "${bin_PROGRAMS}${bin_SCRIPTS}" \
+ || for i in ${bin_PROGRAMS} ${bin_SCRIPTS} " "; do \
+ test ! -f $$ODIR/$$i || echo "*** $$i is also in $$ODIR!"; \
+ done
+
+#
# 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/contrib/ntp/arlib/Makefile.in b/contrib/ntp/arlib/Makefile.in
index 728a9fc..ad2e1c4 100644
--- a/contrib/ntp/arlib/Makefile.in
+++ b/contrib/ntp/arlib/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -14,6 +14,8 @@
@SET_MAKE@
+
+
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -21,7 +23,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -35,6 +36,54 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
+noinst_PROGRAMS = example$(EXEEXT)
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(top_srcdir)/configure COPYING INSTALL depcomp install-sh \
+ missing
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libares_a_AR = $(AR) $(ARFLAGS)
+libares_a_LIBADD =
+am_libares_a_OBJECTS = arlib.$(OBJEXT)
+libares_a_OBJECTS = $(am_libares_a_OBJECTS)
+PROGRAMS = $(noinst_PROGRAMS)
+am_example_OBJECTS = sample.$(OBJEXT)
+example_OBJECTS = $(am_example_OBJECTS)
+example_DEPENDENCIES = libares.a
+DEFAULT_INCLUDES = -I. -I$(srcdir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libares_a_SOURCES) $(example_SOURCES)
+DIST_SOURCES = $(libares_a_SOURCES) $(example_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
@@ -84,6 +133,8 @@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
datadir = @datadir@
@@ -96,6 +147,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -110,71 +162,50 @@ noinst_LIBRARIES = libares.a
libares_a_SOURCES = arlib.c arplib.h
#include_HEADERS = arlib.h
noinst_HEADERS = arlib.h
-
-noinst_PROGRAMS = example
example_SOURCES = sample.c
example_LDADD = libares.a
#man_MANS = arlib.3
#EXTRA_DIST = $(man_MANS) UNSHAR.HDR
noinst_MANS = arlib.3
EXTRA_DIST = $(noinst_MANS) UNSHAR.HDR
-subdir = .
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_CLEAN_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
-
-libares_a_AR = $(AR) cru
-libares_a_LIBADD =
-am_libares_a_OBJECTS = arlib.$(OBJEXT)
-libares_a_OBJECTS = $(am_libares_a_OBJECTS)
-noinst_PROGRAMS = example$(EXEEXT)
-PROGRAMS = $(noinst_PROGRAMS)
-
-am_example_OBJECTS = sample.$(OBJEXT)
-example_OBJECTS = $(am_example_OBJECTS)
-example_DEPENDENCIES = libares.a
-example_LDFLAGS =
-
-DEFAULT_INCLUDES = -I. -I$(srcdir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/arlib.Po ./$(DEPDIR)/sample.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = $(libares_a_SOURCES) $(example_SOURCES)
-HEADERS = $(noinst_HEADERS)
-
-DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.in \
- $(srcdir)/configure COPYING INSTALL Makefile.am aclocal.m4 \
- configure configure.in depcomp install-sh missing mkinstalldirs
-SOURCES = $(libares_a_SOURCES) $(example_SOURCES)
-
all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
-
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
+ cd $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
-
-$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
-$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
- cd $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): configure.in
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-AR = ar
-
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
libares.a: $(libares_a_OBJECTS) $(libares_a_DEPENDENCIES)
@@ -189,7 +220,7 @@ example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES)
$(LINK) $(example_LDFLAGS) $(example_OBJECTS) $(example_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@@ -198,36 +229,20 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sample.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
uninstall-info-am:
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -236,6 +251,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -247,10 +263,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -273,19 +290,6 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = .
-distdir = $(PACKAGE)-$(VERSION)
-
-am__remove_distdir = \
- { test ! -d $(distdir) \
- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr $(distdir); }; }
-
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
distdir: $(DISTFILES)
$(am__remove_distdir)
@@ -301,7 +305,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -322,19 +326,46 @@ distdir: $(DISTFILES)
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
- $(am__remove_distdir)
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
@@ -354,19 +385,20 @@ distcheck: dist
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
- (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
- && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
- && rm -f $(distdir).tar.gz \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
- @echo "$(distdir).tar.gz is ready for distribution" | \
- sed 'h;s/./=/g;p;x;p;x'
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
@@ -388,7 +420,6 @@ distcleancheck: distclean
check-am: all-am
check: check-am
all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS)
-
installdirs:
install: install-am
install-exec: install-exec-am
@@ -401,7 +432,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -409,7 +440,7 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -423,7 +454,6 @@ distclean: distclean-am
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -431,6 +461,8 @@ dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
@@ -450,7 +482,6 @@ maintainer-clean: maintainer-clean-am
-rm -rf $(top_srcdir)/autom4te.cache
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
@@ -467,17 +498,18 @@ ps-am:
uninstall-am: uninstall-info-am
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES clean-noinstPROGRAMS ctags dist dist-all \
- dist-gzip distcheck distclean distclean-compile \
+.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \
+ clean-generic clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \
+ dist dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ \
+ dist-zip distcheck distclean distclean-compile \
distclean-generic distclean-tags distcleancheck distdir \
- distuninstallcheck dvi dvi-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-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
- uninstall-am uninstall-info-am
+ distuninstallcheck 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-compile mostlyclean-generic 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.
diff --git a/contrib/ntp/arlib/aclocal.m4 b/contrib/ntp/arlib/aclocal.m4
index fb76c3d..aef181a 100644
--- a/contrib/ntp/arlib/aclocal.m4
+++ b/contrib/ntp/arlib/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.7.7 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005 Free Software Foundation, Inc.
# This file 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.
@@ -11,332 +11,32 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-# Do all the work for Automake. -*- Autoconf -*-
-
-# This macro actually does too much some checks are only needed if
-# your package does certain things. But this isn't really a big deal.
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 10
-
-AC_PREREQ([2.54])
-
-# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow
-# the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
-
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out. PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition. After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
- AC_REQUIRE([AC_PROG_INSTALL])dnl
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
- test -f $srcdir/config.status; then
- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-fi
-
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
- else
- CYGPATH_W=echo
- fi
-fi
-AC_SUBST([CYGPATH_W])
-
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
-
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
-
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_MISSING_PROG(AMTAR, tar)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
-
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES(CC)],
- [define([AC_PROG_CC],
- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES(CXX)],
- [define([AC_PROG_CXX],
- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
-])
-])
-
-
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated. The stamp files are numbered to have different names.
-
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_stamp_count=1
-for _am_header in $config_headers :; do
- case $_am_header in
- $1 | $1:* )
- break ;;
- * )
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
- esac
-done
-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
-
-# Copyright 2002 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., 59 Temple Place - Suite 330, Boston, MA
+# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
# AM_SET_CURRENT_AUTOMAKE_VERSION
# -------------------------------
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
- [AM_AUTOMAKE_VERSION([1.7.7])])
-
-# Helper functions for option handling. -*- Autoconf -*-
-
-# Copyright 2001, 2002 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 2
+ [AM_AUTOMAKE_VERSION([1.9.6])])
-# _AM_MANGLE_OPTION(NAME)
-# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
-
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME. Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
-
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
#
-# Check to make sure that the build environment is sane.
-#
-
-# Copyright 1996, 1997, 2000, 2001 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 3
-
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t $srcdir/configure conftest.file`
- fi
- rm -f conftest.file
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
-
- test "$[2]" = conftest.file
- )
-then
- # Ok.
- :
-else
- AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
-fi
-AC_MSG_RESULT(yes)])
-
-# -*- Autoconf -*-
-
-
-# Copyright 1997, 1999, 2000, 2001 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# serial 3
-
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
-
-
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
-else
- am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
-fi
-])
-
-# AM_AUX_DIR_EXPAND
-
-# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# This file 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.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
@@ -376,131 +76,55 @@ fi
# absolute PATH. The drawback is that using absolute paths prevent a
# configured tree to be moved without reconfiguration.
-# Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])
-
-AC_DEFUN([AM_AUX_DIR_EXPAND], [
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
# expand $ac_aux_dir to an absolute path
am_aux_dir=`cd $ac_aux_dir && pwd`
])
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-
-# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
-AC_SUBST(install_sh)])
-
-# AM_PROG_INSTALL_STRIP
-
-# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# One issue with vendor `install' (even GNU) is that you can't
-# specify the program used to strip binaries. This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-if test "$cross_compiling" != no; then
- AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# -*- Autoconf -*-
-# Copyright (C) 2003 Free Software Foundation, Inc.
+# AM_CONDITIONAL -*- Autoconf -*-
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-# serial 1
+# serial 7
-# Check whether the underlying file-system supports filenames
-# with a leading dot. For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
else
- am__leading_dot=_
+ $1_TRUE='#'
+ $1_FALSE=
fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# serial 5 -*- Autoconf -*-
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003 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.
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
+# serial 8
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
@@ -509,7 +133,6 @@ AC_SUBST([am__leading_dot])])
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
@@ -568,7 +191,9 @@ AC_CACHE_CHECK([dependency style of $depcc],
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- : > sub/conftst$i.h
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
@@ -596,9 +221,14 @@ AC_CACHE_CHECK([dependency style of $depcc],
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
- # (even with -Werror). So we grep stderr for any message
- # that says an option was ignored.
- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_$1_dependencies_compiler_type=$depmode
break
fi
@@ -632,8 +262,8 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
# ------------
AC_DEFUN([AM_DEP_TRACK],
[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking Speeds up one-time builds
- --enable-dependency-tracking Do not reject slow dependency extractors])
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
@@ -642,26 +272,16 @@ AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])
])
-# Generate code to set up dependency tracking. -*- Autoconf -*-
-
-# Copyright 1999, 2000, 2001, 2002 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.
+# Generate code to set up dependency tracking. -*- Autoconf -*-
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-#serial 2
+#serial 3
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
@@ -680,27 +300,21 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
else
continue
fi
- grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
- # Extract the definition of DEP_FILES from the Makefile without
- # running `make'.
- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n -e '/^U = / s///p' < "$mf"`
- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
- # We invoke sed twice because it is the simplest approach to
- # changing $(DEPDIR) to its actual value in the expansion.
- for file in `sed -n -e '
- /^DEP_FILES = .*\\\\$/ {
- s/^DEP_FILES = //
- :loop
- s/\\\\$//
- p
- n
- /\\\\$/ b loop
- p
- }
- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
@@ -726,27 +340,165 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
-# Check to see how 'make' treats includes. -*- Autoconf -*-
+# Do all the work for Automake. -*- Autoconf -*-
-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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 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.
+# serial 12
-# 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.
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.58])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
# serial 2
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 3
+
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
@@ -789,47 +541,310 @@ AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
-# AM_CONDITIONAL -*- Autoconf -*-
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright 1997, 2000, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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 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.
+# serial 4
-# 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.
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-# serial 5
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
-AC_PREREQ(2.52)
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])
-AC_SUBST([$1_FALSE])
-if $2; then
- $1_TRUE=
- $1_FALSE='#'
+# AM_PROG_MKDIR_P
+# ---------------
+# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+#
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake. There are at least two reasons why we must not
+# use `-m 0755':
+# - it causes special bits like SGID to be ignored,
+# - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out. Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
else
- $1_TRUE='#'
- $1_FALSE=
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
- AC_MSG_ERROR([conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.])
-fi])])
+AC_SUBST([mkdir_p])])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
diff --git a/contrib/ntp/arlib/configure b/contrib/ntp/arlib/configure
index 7d85a60..1ab6826 100755
--- a/contrib/ntp/arlib/configure
+++ b/contrib/ntp/arlib/configure
@@ -1,9 +1,8 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.57.
+# Generated by GNU Autoconf 2.59.
#
-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-# Free Software Foundation, Inc.
+# Copyright (C) 2003 Free Software Foundation, Inc.
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
## --------------------- ##
@@ -20,9 +19,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
set -o posix
fi
+DUALCASE=1; export DUALCASE # for MKS sh
# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
as_unset=unset
else
as_unset=false
@@ -41,7 +41,7 @@ for as_var in \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
LC_TELEPHONE LC_TIME
do
- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
eval $as_var=C; export $as_var
else
$as_unset $as_var
@@ -218,16 +218,17 @@ rm -f conf$$ conf$$.exe conf$$.file
if mkdir -p . 2>/dev/null; then
as_mkdir_p=:
else
+ test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
as_executable_p="test -f"
# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
# IFS
@@ -271,7 +272,7 @@ PACKAGE_STRING=
PACKAGE_BUGREPORT=
ac_unique_file="arlib.c"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -630,7 +631,7 @@ done
# Be sure to have absolute paths.
for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
- localstatedir libdir includedir oldincludedir infodir mandir
+ localstatedir libdir includedir oldincludedir infodir mandir
do
eval ac_val=$`echo $ac_var`
case $ac_val in
@@ -670,10 +671,10 @@ if test -z "$srcdir"; then
# Try the directory containing this script, then its parent.
ac_confdir=`(dirname "$0") 2>/dev/null ||
$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$0" : 'X\(//\)[^/]' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$0" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -761,9 +762,9 @@ _ACEOF
cat <<_ACEOF
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
+ [$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
+ [PREFIX]
By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
@@ -803,8 +804,8 @@ if test -n "$ac_init_help"; then
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --disable-dependency-tracking Speeds up one-time builds
- --enable-dependency-tracking Do not reject slow dependency extractors
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
Some influential environment variables:
CC C compiler command
@@ -850,12 +851,45 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
cd $ac_dir
# Check for guested configure; otherwise get Cygnus style configure.
@@ -866,7 +900,7 @@ ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
echo
$SHELL $ac_srcdir/configure --help=recursive
elif test -f $ac_srcdir/configure.ac ||
- test -f $ac_srcdir/configure.in; then
+ test -f $ac_srcdir/configure.in; then
echo
$ac_configure --help
else
@@ -880,8 +914,7 @@ test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-Free Software Foundation, Inc.
+Copyright (C) 2003 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -893,7 +926,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
-generated by GNU Autoconf 2.57. Invocation command line was
+generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -970,19 +1003,19 @@ do
2)
ac_configure_args1="$ac_configure_args1 '$ac_arg'"
if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
+ ac_must_keep_next=false # Got value, back to normal.
else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
fi
ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
# Get rid of the leading space.
@@ -1016,12 +1049,12 @@ _ASBOX
case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
*ac_space=\ *)
sed -n \
- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
;;
*)
sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
;;
esac;
}
@@ -1050,7 +1083,7 @@ _ASBOX
for ac_var in $ac_subst_files
do
eval ac_val=$`echo $ac_var`
- echo "$ac_var='"'"'$ac_val'"'"'"
+ echo "$ac_var='"'"'$ac_val'"'"'"
done | sort
echo
fi
@@ -1069,7 +1102,7 @@ _ASBOX
echo "$as_me: caught signal $ac_signal"
echo "$as_me: exit $exit_status"
} >&5
- rm -f core core.* *.core &&
+ rm -f core *.core &&
rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
exit $exit_status
' 0
@@ -1149,7 +1182,7 @@ fi
# value.
ac_cache_corrupted=false
for ac_var in `(set) 2>&1 |
- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
eval ac_old_set=\$ac_cv_env_${ac_var}_set
eval ac_new_set=\$ac_env_${ac_var}_set
eval ac_old_val="\$ac_cv_env_${ac_var}_value"
@@ -1166,13 +1199,13 @@ echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
+ ac_cache_corrupted=:
fi;;
esac
# Pass precious variables to config.status.
@@ -1220,7 +1253,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-am__api_version="1.7"
+am__api_version="1.9"
ac_aux_dir=
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
if test -f $ac_dir/install-sh; then
@@ -1257,6 +1290,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
@@ -1273,6 +1307,7 @@ do
case $as_dir/ in
./ | .// | /cC/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
/usr/ucb/* ) ;;
*)
# OSF1 and SCO ODT 3.0 have their own names for install.
@@ -1280,20 +1315,20 @@ case $as_dir/ in
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
done
done
;;
@@ -1381,7 +1416,6 @@ _ACEOF
program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
rm conftest.sed
-
# expand $ac_aux_dir to an absolute path
am_aux_dir=`cd $ac_aux_dir && pwd`
@@ -1395,6 +1429,39 @@ else
echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
fi
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -1437,7 +1504,7 @@ done
echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
@@ -1473,7 +1540,7 @@ else
fi
rmdir .tst 2>/dev/null
- # test to see if srcdir already configured
+# test to see if srcdir already configured
if test "`cd $srcdir && pwd`" != "`pwd`" &&
test -f $srcdir/config.status; then
{ { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
@@ -1521,9 +1588,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
install_sh=${install_sh-"$am_aux_dir/install-sh"}
# Installed binaries are usually stripped using `strip' when the user
@@ -1616,6 +1680,13 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
@@ -1959,7 +2030,6 @@ ac_compiler=`set X $ac_compile; echo $2`
(exit $ac_status); }
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -1979,8 +2049,8 @@ ac_clean_files="$ac_clean_files a.out a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-echo "$as_me:$LINENO: checking for C compiler default output" >&5
-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
(eval $ac_link_default) 2>&5
@@ -2000,23 +2070,23 @@ do
test -f "$ac_file" || continue
case $ac_file in
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
- ;;
+ ;;
conftest.$ac_ext )
- # This is the source file.
- ;;
+ # This is the source file.
+ ;;
[ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
*.* )
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- # FIXME: I believe we export ac_cv_exeext for Libtool,
- # but it would be cool to find out if it's true. Does anybody
- # maintain Libtool? --akim.
- export ac_cv_exeext
- break;;
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool,
+ # but it would be cool to find out if it's true. Does anybody
+ # maintain Libtool? --akim.
+ export ac_cv_exeext
+ break;;
* )
- break;;
+ break;;
esac
done
else
@@ -2090,8 +2160,8 @@ for ac_file in conftest.exe conftest conftest.*; do
case $ac_file in
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
*.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- export ac_cv_exeext
- break;;
+ export ac_cv_exeext
+ break;;
* ) break;;
esac
done
@@ -2116,7 +2186,6 @@ if test "${ac_cv_objext+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2167,7 +2236,6 @@ if test "${ac_cv_c_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2187,11 +2255,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2204,7 +2282,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_compiler_gnu=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
@@ -2220,7 +2298,6 @@ if test "${ac_cv_prog_cc_g+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2237,11 +2314,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2254,7 +2341,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_prog_cc_g=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
@@ -2281,7 +2368,6 @@ else
ac_cv_prog_cc_stdc=no
ac_save_CC=$CC
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2309,6 +2395,16 @@ static char *f (char * (*g) (char **, int), char **p, ...)
va_end (v);
return s;
}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std1. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
int test (int i, double x);
struct s1 {int (*f) (int a);};
struct s2 {int (*f) (double a);};
@@ -2335,11 +2431,21 @@ do
CC="$ac_save_CC $ac_arg"
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2352,7 +2458,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext
+rm -f conftest.err conftest.$ac_objext
done
rm -f conftest.$ac_ext conftest.$ac_objext
CC=$ac_save_CC
@@ -2380,19 +2486,28 @@ cat >conftest.$ac_ext <<_ACEOF
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
for ac_declaration in \
- ''\
- '#include <stdlib.h>' \
+ '' \
'extern "C" void std::exit (int) throw (); using std::exit;' \
'extern "C" void std::exit (int); using std::exit;' \
'extern "C" void exit (int) throw ();' \
@@ -2400,14 +2515,13 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
'void exit (int);'
do
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <stdlib.h>
$ac_declaration
+#include <stdlib.h>
int
main ()
{
@@ -2418,11 +2532,21 @@ exit (42);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2435,9 +2559,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
continue
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2454,11 +2577,21 @@ exit (42);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2470,7 +2603,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
rm -f conftest*
if test -n "$ac_declaration"; then
@@ -2484,7 +2617,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f 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'
@@ -2597,7 +2730,9 @@ else
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- : > sub/conftst$i.h
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
@@ -2625,9 +2760,14 @@ else
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
- # (even with -Werror). So we grep stderr for any message
- # that says an option was ignored.
- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_CC_dependencies_compiler_type=$depmode
break
fi
@@ -2746,21 +2886,28 @@ if test "${ac_cv_func_gethostent+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define gethostent to an innocuous variant, in case <limits.h> declares gethostent.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define gethostent innocuous_gethostent
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostent (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef gethostent
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -2791,11 +2938,21 @@ return f != gethostent;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2808,7 +2965,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_gethostent=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_gethostent" >&5
echo "${ECHO_T}$ac_cv_func_gethostent" >&6
@@ -2825,7 +2983,6 @@ else
LIBS="-lnsl -lsocket $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2849,11 +3006,21 @@ gethostent ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2866,7 +3033,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_nsl_gethostent=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostent" >&5
@@ -2888,21 +3056,28 @@ if test "${ac_cv_func_setsockopt+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define setsockopt to an innocuous variant, in case <limits.h> declares setsockopt.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define setsockopt innocuous_setsockopt
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char setsockopt (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef setsockopt
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -2933,11 +3108,21 @@ return f != setsockopt;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2950,7 +3135,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_setsockopt=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_setsockopt" >&5
echo "${ECHO_T}$ac_cv_func_setsockopt" >&6
@@ -2966,7 +3152,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsocket $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2990,11 +3175,21 @@ setsockopt ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3007,7 +3202,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_socket_setsockopt=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_socket_setsockopt" >&5
@@ -3029,21 +3225,28 @@ if test "${ac_cv_func_res_init+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define res_init to an innocuous variant, in case <limits.h> declares res_init.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define res_init innocuous_res_init
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char res_init (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef res_init
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -3074,11 +3277,21 @@ return f != res_init;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3091,7 +3304,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_res_init=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_res_init" >&5
echo "${ECHO_T}$ac_cv_func_res_init" >&6
@@ -3107,7 +3321,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lresolv $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3131,11 +3344,21 @@ res_init ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3148,7 +3371,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_resolv_res_init=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_resolv_res_init" >&5
@@ -3175,7 +3399,6 @@ if test "${ac_cv_type_u_int32_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3198,11 +3421,21 @@ if (sizeof (u_int32_t))
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3215,7 +3448,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_u_int32_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_u_int32_t" >&5
echo "${ECHO_T}$ac_cv_type_u_int32_t" >&6
@@ -3238,7 +3471,6 @@ else
ans=''
# Normal
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3259,11 +3491,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3276,7 +3518,6 @@ sed 's/^/| /' conftest.$ac_ext >&5
# Ultrix
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3297,11 +3538,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3313,9 +3564,9 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
case "$ans" in
'') echo "$as_me:$LINENO: result: ???" >&5
echo "${ECHO_T}???" >&6
@@ -3366,13 +3617,13 @@ _ACEOF
# `set' does not quote correctly, so add quotes (double-quote
# substitution turns \\\\ into \\, and sed turns \\ into \).
sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
;;
*)
# `set' quotes correctly as required by POSIX, so do not add quotes.
sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
;;
esac;
} |
@@ -3402,13 +3653,13 @@ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
# trailing colons and then remove the whole line if VPATH becomes empty
# (actually we leave an empty line to preserve line numbers).
if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
s/:*\$(srcdir):*/:/;
s/:*\${srcdir}:*/:/;
s/:*@srcdir@:*/:/;
-s/^\([^=]*=[ ]*\):*/\1/;
+s/^\([^=]*=[ ]*\):*/\1/;
s/:*$//;
-s/^[^=]*=[ ]*$//;
+s/^[^=]*=[ ]*$//;
}'
fi
@@ -3422,13 +3673,13 @@ fi
cat >confdef2opt.sed <<\_ACEOF
t clear
: clear
-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
t quote
-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
t quote
d
: quote
-s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
+s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
s,\[,\\&,g
s,\],\\&,g
s,\$,$$,g
@@ -3450,7 +3701,7 @@ ac_ltlibobjs=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_i=`echo "$ac_i" |
- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
# 2. Add them.
ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
@@ -3508,9 +3759,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
set -o posix
fi
+DUALCASE=1; export DUALCASE # for MKS sh
# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
as_unset=unset
else
as_unset=false
@@ -3529,7 +3781,7 @@ for as_var in \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
LC_TELEPHONE LC_TIME
do
- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
eval $as_var=C; export $as_var
else
$as_unset $as_var
@@ -3708,16 +3960,17 @@ rm -f conf$$ conf$$.exe conf$$.file
if mkdir -p . 2>/dev/null; then
as_mkdir_p=:
else
+ test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
as_executable_p="test -f"
# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
# IFS
@@ -3744,7 +3997,7 @@ _ASBOX
cat >&5 <<_CSEOF
This file was extended by $as_me, which was
-generated by GNU Autoconf 2.57. Invocation command line was
+generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -3788,7 +4041,7 @@ Usage: $0 [OPTIONS] [FILE]...
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
--file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
+ instantiate the configuration file FILE
Configuration files:
$config_files
@@ -3802,11 +4055,10 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
config.status
-configured by $0, generated by GNU Autoconf 2.57,
+configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
+Copyright (C) 2003 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
srcdir=$srcdir
@@ -4009,14 +4261,17 @@ s,@AUTOCONF@,$AUTOCONF,;t t
s,@AUTOMAKE@,$AUTOMAKE,;t t
s,@AUTOHEADER@,$AUTOHEADER,;t t
s,@MAKEINFO@,$MAKEINFO,;t t
-s,@AMTAR@,$AMTAR,;t t
s,@install_sh@,$install_sh,;t t
s,@STRIP@,$STRIP,;t t
s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s,@mkdir_p@,$mkdir_p,;t t
s,@AWK@,$AWK,;t t
s,@SET_MAKE@,$SET_MAKE,;t t
s,@am__leading_dot@,$am__leading_dot,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@am__tar@,$am__tar,;t t
+s,@am__untar@,$am__untar,;t t
s,@CC@,$CC,;t t
s,@CFLAGS@,$CFLAGS,;t t
s,@LDFLAGS@,$LDFLAGS,;t t
@@ -4066,9 +4321,9 @@ _ACEOF
(echo ':t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
fi
ac_sed_frag=`expr $ac_sed_frag + 1`
ac_beg=$ac_end
@@ -4086,21 +4341,21 @@ for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case $ac_file in
- | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
*:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
* ) ac_file_in=$ac_file.in ;;
esac
# Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
ac_dir=`(dirname "$ac_file") 2>/dev/null ||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -4116,10 +4371,10 @@ echo X"$ac_file" |
as_dirs="$as_dir $as_dirs"
as_dir=`(dirname "$as_dir") 2>/dev/null ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -4157,12 +4412,45 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
case $INSTALL in
@@ -4184,7 +4472,7 @@ echo "$as_me: creating $ac_file" >&6;}
configure_input="$ac_file. "
fi
configure_input=$configure_input"Generated from `echo $ac_file_in |
- sed 's,.*/,,'` by configure."
+ sed 's,.*/,,'` by configure."
# First look for the input files in the build tree, otherwise in the
# src tree.
@@ -4193,24 +4481,24 @@ echo "$as_me: creating $ac_file" >&6;}
case $f in
-) echo $tmp/stdin ;;
[\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
- echo $f;;
+ echo "$f";;
*) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
- fi;;
+ fi;;
esac
done` || { (exit 1); exit 1; }
_ACEOF
@@ -4252,16 +4540,41 @@ for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_dest" : 'X\(//\)[^/]' \| \
- X"$ac_dest" : 'X\(//\)$' \| \
- X"$ac_dest" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$ac_dest" : 'X\(//\)[^/]' \| \
+ X"$ac_dest" : 'X\(//\)$' \| \
+ X"$ac_dest" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$ac_dest" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
ac_builddir=.
if test "$ac_dir" != .; then
@@ -4287,12 +4600,45 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
{ echo "$as_me:$LINENO: executing $ac_dest commands" >&5
@@ -4310,10 +4656,10 @@ echo "$as_me: executing $ac_dest commands" >&6;}
if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
dirpart=`(dirname "$mf") 2>/dev/null ||
$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
- X"$mf" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$mf" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -4323,36 +4669,30 @@ echo X"$mf" |
else
continue
fi
- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
- # Extract the definition of DEP_FILES from the Makefile without
- # running `make'.
- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n -e '/^U = / s///p' < "$mf"`
- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
- # We invoke sed twice because it is the simplest approach to
- # changing $(DEPDIR) to its actual value in the expansion.
- for file in `sed -n -e '
- /^DEP_FILES = .*\\\\$/ {
- s/^DEP_FILES = //
- :loop
- s/\\\\$//
- p
- n
- /\\\\$/ b loop
- p
- }
- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`(dirname "$file") 2>/dev/null ||
$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
- X"$file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -4368,10 +4708,10 @@ echo X"$file" |
as_dirs="$as_dir $as_dirs"
as_dir=`(dirname "$as_dir") 2>/dev/null ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
diff --git a/contrib/ntp/arlib/depcomp b/contrib/ntp/arlib/depcomp
index aea3d00..04701da 100755
--- a/contrib/ntp/arlib/depcomp
+++ b/contrib/ntp/arlib/depcomp
@@ -1,7 +1,9 @@
#! /bin/sh
-
# depcomp - compile a program generating dependencies as side-effects
-# Copyright 1999, 2000 Free Software Foundation, Inc.
+
+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
@@ -15,8 +17,8 @@
# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# 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
@@ -25,22 +27,45 @@
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+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 <bug-automake@gnu.org>.
+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
-# `libtool' can also be set to `yes' or `no'.
-
-if test -z "$depfile"; then
- base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
- dir=`echo "$object" | sed 's,/.*$,/,'`
- if test "$dir" = "$object"; then
- dir=
- fi
- # FIXME: should be _deps on DOS.
- depfile="$dir.deps/$base"
-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"
@@ -172,19 +197,25 @@ sgi)
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
- # in a .u file. 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.
- stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
+ # 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"
- outname="$stripped.o"
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"
@@ -192,6 +223,7 @@ aix)
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:'.
@@ -255,31 +287,47 @@ tru64)
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
- tmpdepfile1="$dir.libs/$base.lo.d"
- tmpdepfile2="$dir.libs/$base.d"
+ # 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"
+ 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"
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
- if test -f "$tmpdepfile1"; then
- tmpdepfile="$tmpdepfile1"
- else
- tmpdepfile="$tmpdepfile2"
- 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 space and a tab in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$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
@@ -292,7 +340,7 @@ tru64)
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout, regardless of -o.
+ # always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
@@ -388,7 +436,7 @@ makedepend)
cpp)
# Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout.
+ # always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
@@ -419,7 +467,8 @@ cpp)
done
"$@" -E |
- sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ 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"
@@ -430,7 +479,7 @@ cpp)
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout, regardless of -o,
+ # always write the preprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
@@ -470,3 +519,12 @@ none)
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/contrib/ntp/arlib/install-sh b/contrib/ntp/arlib/install-sh
index 6ce63b9..4d4a951 100755
--- a/contrib/ntp/arlib/install-sh
+++ b/contrib/ntp/arlib/install-sh
@@ -1,7 +1,8 @@
#!/bin/sh
-#
# install - install a program, script, or datafile
-#
+
+scriptversion=2005-05-14.22
+
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
@@ -41,13 +42,11 @@
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
-
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
-
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
@@ -59,236 +58,266 @@ stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
+chowncmd=
+chgrpcmd=
+stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd=$cpprog
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd=$stripprog
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "$0: no input file specified" >&2
- exit 1
-else
- :
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d "$dst" ]; then
- instcmd=:
- chmodcmd=""
- else
- instcmd=$mkdirprog
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f "$src" ] || [ -d "$src" ]
- then
- :
- else
- echo "$0: $src does not exist" >&2
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "$0: no destination specified" >&2
- exit 1
- else
- :
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d "$dst" ]
- then
- dst=$dst/`basename "$src"`
- else
- :
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
- '
-IFS="${IFS-$defaultIFS}"
-
-oIFS=$IFS
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS=$oIFS
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp=$pathcomp$1
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c (ignored)
+-d create directories instead of installing files.
+-g GROUP $chgrpprog installed files to GROUP.
+-m MODE $chmodprog installed files to MODE.
+-o USER $chownprog installed files to USER.
+-s $stripprog installed files.
+-t DIRECTORY install into DIRECTORY.
+-T report an error if DSTFILE is a directory.
+--help display this help and exit.
+--version display version info and exit.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+ case $1 in
+ -c) shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd=$stripprog
+ shift
+ continue;;
+
+ -t) dstarg=$2
shift
+ shift
+ continue;;
- if [ ! -d "$pathcomp" ] ;
- then
- $mkdirprog "$pathcomp"
- else
- :
- fi
-
- pathcomp=$pathcomp/
+ -T) no_target_directory=true
+ shift
+ continue;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ *) # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ test -n "$dir_arg$dstarg" && break
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dstarg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dstarg"
+ shift # fnord
+ fi
+ shift # arg
+ dstarg=$arg
+ done
+ break;;
+ esac
done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd "$dst" &&
- if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename "$dst"`
- else
- dstfile=`basename "$dst" $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename "$dst"`
- else
- :
- fi
-
-# Make a couple of temp file names in the proper directory.
-
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
-
-# Trap to clean up temp files at exit.
-
- trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
- trap '(exit $?); exit' 1 2 13 15
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd "$src" "$dsttmp" &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
-
-# Now remove or move aside any old file at destination location. We try this
-# two ways since rm can't unlink itself on some systems and the destination
-# file might be busy for other reasons. In this case, the final cleanup
-# might fail but the new file should still install successfully.
-
-{
- if [ -f "$dstdir/$dstfile" ]
- then
- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
- $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
- {
- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
- (exit 1); exit
- }
- else
- :
- fi
-} &&
-
-# Now rename the file to the real destination.
+if test -z "$1"; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src ;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ src=
+
+ if test -d "$dst"; then
+ mkdircmd=:
+ chmodcmd=
+ else
+ mkdircmd=$mkdirprog
+ fi
+ else
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dstarg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dstarg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst ;;
+ esac
-fi &&
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dstarg: Is a directory" >&2
+ exit 1
+ fi
+ dst=$dst/`basename "$src"`
+ fi
+ fi
+
+ # This sed command emulates the dirname command.
+ dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+
+ # Make sure that the destination directory exists.
+
+ # Skip lots of stat calls in the usual case.
+ if test ! -d "$dstdir"; then
+ defaultIFS='
+ '
+ IFS="${IFS-$defaultIFS}"
+
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+ set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ shift
+ IFS=$oIFS
+
+ pathcomp=
+
+ while test $# -ne 0 ; do
+ pathcomp=$pathcomp$1
+ shift
+ if test ! -d "$pathcomp"; then
+ $mkdirprog "$pathcomp"
+ # mkdir can fail with a `File exist' error in case several
+ # install-sh are creating the directory concurrently. This
+ # is OK.
+ test -d "$pathcomp" || exit
+ fi
+ pathcomp=$pathcomp/
+ done
+ fi
+
+ if test -n "$dir_arg"; then
+ $doit $mkdircmd "$dst" \
+ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+ else
+ dstfile=`basename "$dst"`
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Copy the file name to the temp name.
+ $doit $cpprog "$src" "$dsttmp" &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+ # Now rename the file to the real destination.
+ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+ || {
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ if test -f "$dstdir/$dstfile"; then
+ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ || {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+ (exit 1); exit 1
+ }
+ else
+ :
+ fi
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+ }
+ }
+ fi || { (exit 1); exit 1; }
+done
# The final little trick to "correctly" pass the exit status to the exit trap.
-
{
- (exit 0); exit
+ (exit 0); 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/contrib/ntp/arlib/missing b/contrib/ntp/arlib/missing
index 6a37006..894e786 100755
--- a/contrib/ntp/arlib/missing
+++ b/contrib/ntp/arlib/missing
@@ -1,6 +1,10 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
+
+scriptversion=2005-06-08.21
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
@@ -15,8 +19,8 @@
# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# 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
@@ -38,18 +42,24 @@ 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
;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
-h|--h|--he|--hel|--help)
echo "\
@@ -74,11 +84,15 @@ Supported PROGRAM values:
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]"
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
- echo "missing 0.4 - GNU automake"
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
;;
-*)
@@ -87,14 +101,44 @@ Supported PROGRAM values:
exit 1
;;
- aclocal*)
+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 missing on your system. You should only need it if
+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."
@@ -102,13 +146,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
autoconf)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -116,13 +155,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
autoheader)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -140,13 +174,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
automake*)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -156,16 +185,11 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
autom4te)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
- system. You might have modified some files without having the
+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 \`$1Help2man' as part of \`Autoconf' from any GNU
+ You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
@@ -185,7 +209,7 @@ WARNING: \`$1' is needed, and you do not seem to have it handy on your
bison|yacc)
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -215,7 +239,7 @@ WARNING: \`$1' is missing on your system. You should only need it if
lex|flex)
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -237,13 +261,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
help2man)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -262,32 +281,30 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
makeinfo)
- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
- # We have makeinfo, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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
- file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+ # ... 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
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- fi
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
@@ -323,10 +340,10 @@ WARNING: I can't seem to be able to run \`tar' with the given arguments.
*)
echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
- system. You might have modified some files without having the
+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 prerequirements for installing
+ 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
@@ -334,3 +351,10 @@ WARNING: \`$1' is needed, and you do not seem to have it handy on your
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/contrib/ntp/arlib/mkinstalldirs b/contrib/ntp/arlib/mkinstalldirs
deleted file mode 100755
index d2d5f21..0000000
--- a/contrib/ntp/arlib/mkinstalldirs
+++ /dev/null
@@ -1,111 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
-
-errstatus=0
-dirmode=""
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
-
-# process command line arguments
-while test $# -gt 0 ; do
- case $1 in
- -h | --help | --h*) # -h for help
- echo "$usage" 1>&2
- exit 0
- ;;
- -m) # -m PERM arg
- shift
- test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
- dirmode=$1
- shift
- ;;
- --) # stop option processing
- shift
- break
- ;;
- -*) # unknown option
- echo "$usage" 1>&2
- exit 1
- ;;
- *) # first non-opt arg
- break
- ;;
- esac
-done
-
-for file
-do
- if test -d "$file"; then
- shift
- else
- break
- fi
-done
-
-case $# in
- 0) exit 0 ;;
-esac
-
-case $dirmode in
- '')
- if mkdir -p -- . 2>/dev/null; then
- echo "mkdir -p -- $*"
- exec mkdir -p -- "$@"
- fi
- ;;
- *)
- if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
- echo "mkdir -m $dirmode -p -- $*"
- exec mkdir -m "$dirmode" -p -- "$@"
- fi
- ;;
-esac
-
-for file
-do
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
- shift
-
- pathcomp=
- for d
- do
- pathcomp="$pathcomp$d"
- case $pathcomp in
- -*) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- else
- if test ! -z "$dirmode"; then
- echo "chmod $dirmode $pathcomp"
- lasterr=""
- chmod "$dirmode" "$pathcomp" || lasterr=$?
-
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
- fi
- fi
-
- pathcomp="$pathcomp/"
- done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# End:
-# mkinstalldirs ends here
diff --git a/contrib/ntp/bincheck.mf b/contrib/ntp/bincheck.mf
new file mode 100644
index 0000000..c67827d
--- /dev/null
+++ b/contrib/ntp/bincheck.mf
@@ -0,0 +1,15 @@
+# we traditionally installed software in bindir, while it should have gone
+# in sbindir. Now that we offer a choice, look in the "other" installation
+# subdir to warn folks if there is another version there.
+
+install-exec-hook:
+ @case ${BINSUBDIR} in \
+ bin) ODIR=${exec_prefix}/sbin ;; \
+ sbin) ODIR=${exec_prefix}/bin ;; \
+ esac; \
+ test -z "${bin_PROGRAMS}${bin_SCRIPTS}" \
+ || for i in ${bin_PROGRAMS} ${bin_SCRIPTS} " "; do \
+ test ! -f $$ODIR/$$i || echo "*** $$i is also in $$ODIR!"; \
+ done
+
+#
diff --git a/contrib/ntp/bootstrap b/contrib/ntp/bootstrap
new file mode 100755
index 0000000..1a5aff0
--- /dev/null
+++ b/contrib/ntp/bootstrap
@@ -0,0 +1,120 @@
+#! /bin/sh
+
+# This "bootstrap" script performs various pre-autoreconf actions
+# that are required after pulling fresh sources from the repository.
+#
+# NOTE: THE NTP VERSION NUMBER COMES FROM packageinfo.sh
+#
+# all other instances of it anywhere in the source base have propagated
+# from this one source.
+#
+# To use the raw sources from the repository, you must have the following
+# tools available to you:
+#
+# 1. Autoconf and Automake.
+#
+# 2. lynx. This is used to extract the COPYRIGHT file extracted from
+# the html documentation.
+#
+# *** The following are no longer needed for simple builds from the repo
+# 3. AutoGen. The repository does *not* contain the files generated from
+# the option definition files and it does not contain the libopts
+# tear-off/redistributable library.
+#
+# Note: AutoGen needs GNU Guile.
+#
+# 4. gunzip. The tear-off library is a gzipped tarball.
+
+set -e
+
+scripts/genver
+
+# autoreconf says:
+# The environment variables AUTOCONF, AUTOHEADER, AUTOMAKE, ACLOCAL,
+# AUTOPOINT, LIBTOOLIZE, M4 are honored.
+
+AUTORECONF=${AUTORECONF:-autoreconf}
+
+case `hostname` in
+ pogo.udel.edu)
+ if fgrep -q 4.2.4 version.m4; then
+ AUTOCONF=autoconf-2.59
+ AUTOHEADER=autoheader-2.59
+ AUTOMAKE=automake-1.9
+ ACLOCAL=aclocal-1.9
+ export AUTOCONF AUTOHEADER AUTOMAKE ACLOCAL
+ fi
+ ;;
+esac
+
+# 20060629: HMS: Let's try checking in libopts and the autogen-generated files
+## The copy for ntp...
+#rm -rf libopts*
+#gunzip -c $(autoopts-config --libsrc) | (
+# tar -xvf -
+# mv libopts-*.*.* libopts )
+
+## The copy for sntp...
+#rm -rf sntp/libopts*
+#gunzip -c $(autoopts-config --libsrc) | (
+# cd sntp
+# tar -xvf -
+# mv libopts-*.*.* libopts )
+
+def_files=`find [B-Za-z]* -type f -name '*.def' -print | fgrep -v /SCCS/`
+prog_opt_files=`grep -l '^prog.name' $def_files`
+
+## AutoGen stuff
+
+#incdir=${PWD}/include
+
+#for f in ${prog_opt_files}
+#do
+# ( cd $(dirname ${f})
+# echo "Running autogen on $f..."
+# autogen -L${incdir} $(basename ${f})
+# ) || exit 1
+#done
+
+## Non-AutoGen stuff
+
+for i in autogen-version.def version.def
+do
+ cmp -s include/$i sntp/$i || cp -p include/$i sntp/$i
+done
+
+# touch the stuff generated by the opt files
+
+for f in ${prog_opt_files}
+do
+ f=`echo $f | sed -e 's/-opts.def//'`
+ l=
+ for i in `ls -1 $f*`
+ do
+ case "$i" in
+ *.c|*.h|*.1|*.texi|*.menu)
+ l="$l $i"
+ ;;
+ esac
+ done
+ case "$l" in
+ '') ;;
+ *) touch $l
+ ;;
+ esac
+done
+
+## EOAutoGen stuff
+
+cp bincheck.mf sntp/
+
+${AUTORECONF} -i -v
+
+# HMS: 20060618: Now that we use separate copies of libopts
+# we should only need the previous line.
+#
+## HMS: 20060615: the next line seems to be needed to make sure
+## we get the correct srcdir path in sntp/libopts/Makefile.in
+#rm -rf sntp/autom4te.cache
+#
+#(cd sntp && ${AUTORECONF} -i -v)
diff --git a/contrib/ntp/build b/contrib/ntp/build
index 58551fd..4eab58e 100755
--- a/contrib/ntp/build
+++ b/contrib/ntp/build
@@ -41,6 +41,12 @@ MYNAME=`IFS=. ; set $IAM ; echo $1`
case "$IAM" in
*.udel.edu)
BDIR=A.$MYNAME
+ CONFIG_ARGS="$CONFIG_ARGS --enable-local-libopts"
+ case "$CVO" in
+ *-*-ultrix*)
+ CONFIG_ARGS="$CONFIG_ARGS --with-libregex=/usr/local"
+ ;;
+ esac
;;
*)
BDIR=A.$CVO
@@ -58,6 +64,18 @@ case "$CONFIG_ARGS" in
;;
esac
+case "$CONFIG_ARGS" in
+ *--disable-all-clocks*)
+ KEYSUF="$KEYSUF-no-refclocks"
+ ;;
+esac
+
+case "$CONFIG_ARGS" in
+ *--disable-debugging*)
+ KEYSUF="$KEYSUF-nodebug"
+ ;;
+esac
+
CCSUF=""
case "$CC" in
diff --git a/contrib/ntp/clockstuff/Makefile.am b/contrib/ntp/clockstuff/Makefile.am
index ebfd74e..2a2ec4e 100644
--- a/contrib/ntp/clockstuff/Makefile.am
+++ b/contrib/ntp/clockstuff/Makefile.am
@@ -5,12 +5,14 @@ EXTRA_PROGRAMS = propdelay chutest clktest
INCLUDES = -I$(top_srcdir)/include
# We need -lm (and perhaps $(COMPAT) for propdelay, -lntp for {chu,clk}test
-propdelay_LDADD = -lm
+propdelay_LDADD = -lm ../libntp/libntp.a
chutest_LDADD = ../libntp/libntp.a
clktest_LDADD = ../libntp/libntp.a
ETAGS_ARGS = Makefile.am
#EXTRA_DIST = TAGS
+# clktest-opts.def wants ../include/copyright.def ../include/homerc.def
+
chutest$(EXEEXT): ../libntp/libntp.a
clktest$(EXEEXT): ../libntp/libntp.a
diff --git a/contrib/ntp/clockstuff/Makefile.in b/contrib/ntp/clockstuff/Makefile.in
index d02dbd4..4ee3a5b 100644
--- a/contrib/ntp/clockstuff/Makefile.in
+++ b/contrib/ntp/clockstuff/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -21,7 +21,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +36,59 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+ANSI2KNR = ../util/ansi2knr
+noinst_PROGRAMS = @PROPDELAY@ @CHUTEST@ @CLKTEST@
+EXTRA_PROGRAMS = propdelay$(EXEEXT) chutest$(EXEEXT) clktest$(EXEEXT)
+subdir = clockstuff
+DIST_COMMON = README $(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/hs_ulong_const.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 =
+PROGRAMS = $(noinst_PROGRAMS)
+chutest_SOURCES = chutest.c
+chutest_OBJECTS = chutest$U.$(OBJEXT)
+chutest_DEPENDENCIES = ../libntp/libntp.a
+clktest_SOURCES = clktest.c
+clktest_OBJECTS = clktest$U.$(OBJEXT)
+clktest_DEPENDENCIES = ../libntp/libntp.a
+propdelay_SOURCES = propdelay.c
+propdelay_OBJECTS = propdelay$U.$(OBJEXT)
+propdelay_DEPENDENCIES = ../libntp/libntp.a
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = chutest.c clktest.c propdelay.c
+DIST_SOURCES = chutest.c clktest.c propdelay.c
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +96,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +112,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +167,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +202,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,81 +210,65 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
#AUTOMAKE_OPTIONS = ../ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
-noinst_PROGRAMS = @PROPDELAY@ @CHUTEST@ @CLKTEST@
-EXTRA_PROGRAMS = propdelay chutest clktest
-
INCLUDES = -I$(top_srcdir)/include
# We need -lm (and perhaps $(COMPAT) for propdelay, -lntp for {chu,clk}test
-propdelay_LDADD = -lm
+propdelay_LDADD = -lm ../libntp/libntp.a
chutest_LDADD = ../libntp/libntp.a
clktest_LDADD = ../libntp/libntp.a
ETAGS_ARGS = Makefile.am
-subdir = clockstuff
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-EXTRA_PROGRAMS = propdelay$(EXEEXT) chutest$(EXEEXT) clktest$(EXEEXT)
-noinst_PROGRAMS = @PROPDELAY@ @CHUTEST@ @CLKTEST@
-PROGRAMS = $(noinst_PROGRAMS)
-
-chutest_SOURCES = chutest.c
-chutest_OBJECTS = chutest$U.$(OBJEXT)
-chutest_DEPENDENCIES = ../libntp/libntp.a
-chutest_LDFLAGS =
-clktest_SOURCES = clktest.c
-clktest_OBJECTS = clktest$U.$(OBJEXT)
-clktest_DEPENDENCIES = ../libntp/libntp.a
-clktest_LDFLAGS =
-propdelay_SOURCES = propdelay.c
-propdelay_OBJECTS = propdelay$U.$(OBJEXT)
-propdelay_DEPENDENCIES =
-propdelay_LDFLAGS =
-
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/chutest$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clktest$U.Po ./$(DEPDIR)/propdelay$U.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = chutest.c clktest.c propdelay.c
-DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am
-SOURCES = chutest.c clktest.c propdelay.c
-
all: all-am
.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+.SUFFIXES: .c .lo .o .obj
+$(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 clockstuff/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu clockstuff/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+ $(AUTOMAKE) --foreign clockstuff/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
clean-noinstPROGRAMS:
- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
propdelay$(EXEEXT): $(propdelay_OBJECTS) $(propdelay_DEPENDENCIES)
@rm -f propdelay$(EXEEXT)
$(LINK) $(propdelay_LDFLAGS) $(propdelay_OBJECTS) $(propdelay_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-
-ANSI2KNR = ../util/ansi2knr
../util/ansi2knr:
cd ../util && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
@@ -232,43 +280,43 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/propdelay$U.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
chutest_.c: chutest.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/chutest.c; then echo $(srcdir)/chutest.c; else echo chutest.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
clktest_.c: clktest.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/clktest.c; then echo $(srcdir)/clktest.c; else echo clktest.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
propdelay_.c: propdelay.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/propdelay.c; then echo $(srcdir)/propdelay.c; else echo propdelay.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-chutest_.$(OBJEXT) clktest_.$(OBJEXT) propdelay_.$(OBJEXT) : \
-$(ANSI2KNR)
-uninstall-info-am:
+chutest_.$(OBJEXT) chutest_.lo clktest_.$(OBJEXT) clktest_.lo \
+propdelay_.$(OBJEXT) propdelay_.lo : $(ANSI2KNR)
-ETAGS = etags
-ETAGSFLAGS =
+mostlyclean-libtool:
+ -rm -f *.lo
-CTAGS = ctags
-CTAGSFLAGS =
+clean-libtool:
+ -rm -rf .libs _libs
-tags: TAGS
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -278,6 +326,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -289,10 +338,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -315,10 +365,6 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -332,7 +378,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -350,7 +396,6 @@ distdir: $(DISTFILES)
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
-
installdirs:
install: install-am
install-exec: install-exec-am
@@ -363,7 +408,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -371,26 +416,28 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -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-noinstPROGRAMS mostlyclean-am
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+ mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+ distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
@@ -408,12 +455,12 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool
pdf: pdf-am
@@ -426,18 +473,21 @@ ps-am:
uninstall-am: uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-noinstPROGRAMS ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-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-compile mostlyclean-generic \
- mostlyclean-kr pdf pdf-am ps ps-am tags uninstall uninstall-am \
- uninstall-info-am
+ clean-libtool clean-noinstPROGRAMS ctags distclean \
+ distclean-compile 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-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-info-am
#EXTRA_DIST = TAGS
+# clktest-opts.def wants ../include/copyright.def ../include/homerc.def
+
chutest$(EXEEXT): ../libntp/libntp.a
clktest$(EXEEXT): ../libntp/libntp.a
diff --git a/contrib/ntp/clockstuff/clktest.c b/contrib/ntp/clockstuff/clktest.c
index 86edf59d..04df4b9 100644
--- a/contrib/ntp/clockstuff/clktest.c
+++ b/contrib/ntp/clockstuff/clktest.c
@@ -4,20 +4,7 @@
* usage: clktest -b bps -f -t timeo -s cmd -c char1 -a char2 /dev/whatever
*/
-#include <stdio.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <signal.h>
-#include <netinet/in.h>
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#include <sys/file.h>
-#include <sgtty.h>
-
-#include "../include/ntp_fp.h"
-#include "../include/ntp.h"
-#include "../include/ntp_unixtime.h"
+#include "clktest-opts.h"
#define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0)
@@ -28,9 +15,13 @@
#endif
#ifndef STREAM
-#ifndef CLKLDISC
-CLOCK_LINE_DISCIPLINE_NEEDED_BY_THIS_PROGRAM;
-#endif
+# ifndef CLKLDISC
+ CLOCK_LINE_DISCIPLINE_NEEDED_BY_THIS_PROGRAM;
+# endif
+#else
+# ifdef CLKLDISC
+ ONLY_ONE_CLOCK_LINE_DISCIPLINE_FOR_THIS_PROGRAM;
+# endif
#endif
/*
@@ -38,51 +29,17 @@ CLOCK_LINE_DISCIPLINE_NEEDED_BY_THIS_PROGRAM;
*/
#define BLOCKSIGMASK (sigmask(SIGIO)|sigmask(SIGALRM))
-/*
- * speed table
- */
-struct speeds {
- int bps;
- int rate;
-} speedtab[] = {
- { 300, B300 },
- { 1200, B1200 },
- { 2400, B2400 },
- { 4800, B4800 },
- { 9600, B9600 },
- { 19200, EXTA },
- { 38400, EXTB },
- { 0, 0 }
-};
-
-char *progname;
-int debug;
-
-#ifdef CLKLDISC
-#define DEFMAGIC '\r'
-#endif
+#define progname clktestOptions.pzProgName
-#ifdef CLKLDISC
-# ifdef STREAM
-# include <stropts.h>
-# ifdef HAVE_SYS_CLKDEFS_H
-# include <sys/clkdefs.h>
-# endif
-# define DEFMAGIC "\r"
-# endif
-#endif
-
struct timeval timeout = { 0 };
char *cmd = NULL;
int cmdlen;
-int docmd = 0;
+
#ifdef CLKLDISC
u_long magic1 = DEFMAGIC;
u_long magic2 = DEFMAGIC;
#endif
-#ifdef STREAM
-char magic[32];
-#endif
+
int speed = B9600;
int ttflags = RAW|EVENP|ODDP;
@@ -95,6 +52,9 @@ extern u_long ustotslo[];
extern u_long ustotsmid[];
extern u_long ustotshi[];
+int alarming();
+int ioready();
+
/*
* main - parse arguments and handle options
*/
@@ -104,113 +64,35 @@ main(
char *argv[]
)
{
- int c;
- int errflg = 0;
- struct speeds *spd;
- u_long tmp;
int fd;
struct sgttyb ttyb;
struct itimerval itimer;
- extern int ntp_optind;
- extern char *ntp_optarg;
- int alarming();
- int ioready();
- progname = argv[0];
#ifdef STREAM
magic[0] = 0;
#endif
- while ((c = ntp_getopt(argc, argv, "a:b:c:dfs:t:")) != EOF)
- switch (c) {
-#ifdef CLKLDISC
- case 'a':
-#endif
- case 'c':
- if (!atouint(ntp_optarg, &tmp)) {
- (void) fprintf(stderr,
- "%s: argument for -%c must be integer\n",
- progname, c);
- errflg++;
- break;
- }
-#ifdef CLKLDISC
- if (c == 'c')
- magic1 = tmp;
- else
- magic2 = tmp;
-#endif
-#ifdef STREAM
- magic[strlen(magic)+1] = '\0';
- magic[strlen(magic)] = tmp;
-#endif
- break;
- case 'b':
- if (!atouint(ntp_optarg, &tmp)) {
- errflg++;
- break;
- }
- spd = speedtab;
- while (spd->bps != 0)
- if ((int)tmp == spd->bps)
- break;
- if (spd->bps == 0) {
- (void) fprintf(stderr,
- "%s: speed %lu is unsupported\n",
- progname, tmp);
- errflg++;
- } else {
- speed = spd->rate;
- }
- break;
- case 'd':
- ++debug;
- break;
- case 'f':
- ttflags |= CRMOD;
- break;
- case 's':
- cmdlen = strlen(ntp_optarg);
- if (cmdlen == 0)
- errflg++;
- else
- cmd = ntp_optarg;
- break;
- case 't':
- if (!atouint(ntp_optarg, &tmp))
- errflg++;
- else {
- timeout.tv_sec = (long)tmp;
- docmd = 1;
- }
- break;
- default:
- errflg++;
- break;
+
+ {
+ int ct = optionProcess( &clktestOptions, argc, argv );
+ if (HAVE_OPT(COMMAND) && (strlen(OPT_ARG(COMMAND)) == 0)) {
+ fputs( "The command option string must not be empty\n", stderr );
+ USAGE( EXIT_FAILURE );
}
- if (errflg || ntp_optind+1 != argc) {
- (void) fprintf(stderr,
-#ifdef CLKLDISC
- "usage: %s [-b bps] [-c magic1] [-a magic2] [-f] [-s cmd] [-t timeo] tty_device\n",
-#endif
-#ifdef STREAM
- "usage: %s [-b bps] [-c magic1] [-c magic2]... [-f] [-s cmd] [-t timeo] tty_device\n",
-#endif
- progname);
- exit(2);
- }
+ if ((argc -= ct) != 1) {
+ fputs( "Missing tty device name\n", stderr );
+ USAGE( EXIT_FAILURE );
+ }
+ argv += ct;
+ }
#ifdef STREAM
if (!strlen(magic))
strcpy(magic,DEFMAGIC);
#endif
- if (docmd)
- fd = open(argv[ntp_optind], O_RDWR, 0777);
- else
- fd = open(argv[ntp_optind], O_RDONLY, 0777);
+ fd = open(*argv, HAVE_OPT(TIMEOUT) ? O_RDWR : O_RDONLY, 0777);
if (fd == -1) {
- (void) fprintf(stderr, "%s: open(%s): ", progname,
- argv[ntp_optind]);
+ fprintf(stderr, "%s: open(%s): ", progname, *argv);
perror("");
exit(1);
}
@@ -270,7 +152,7 @@ main(
(void) gettimeofday(&lasttv, (struct timezone *)0);
- if (docmd) {
+ if (HAVE_OPT(TIMEOUT)) {
/*
* set non-blocking, async I/O on the descriptor
*/
@@ -288,6 +170,7 @@ main(
*/
wasalarmed = 0;
(void) signal(SIGALRM, alarming);
+ timeout.tv_sec = OPT_VALUE_TIMEOUT;
itimer.it_interval = itimer.it_value = timeout;
setitimer(ITIMER_REAL, &itimer, (struct itimerval *)0);
doboth(fd);
@@ -495,7 +378,7 @@ doalarm(
{
int n;
- if (cmd == NULL || cmdlen <= 0)
+ if (! HAVE_OPT(COMMAND))
return;
n = write(fd, cmd, cmdlen);
diff --git a/contrib/ntp/clockstuff/propdelay.c b/contrib/ntp/clockstuff/propdelay.c
index 3ce571c..c8df686 100644
--- a/contrib/ntp/clockstuff/propdelay.c
+++ b/contrib/ntp/clockstuff/propdelay.c
@@ -115,7 +115,7 @@ int Gflag = 0;
int height;
char *progname;
-int debug;
+volatile int debug;
static void doit (double, double, double, double, double, char *);
static double latlong (char *, int);
@@ -298,7 +298,7 @@ latlong(
register char *cp;
register char *bp;
double arg;
- double div;
+ double divby;
int isneg;
char buf[32];
char *colon;
@@ -340,7 +340,7 @@ latlong(
*bp = '\0';
cp++;
arg = atof(buf);
- div = 60.0;
+ divby = 60.0;
colon = strchr(cp, ':');
if (colon != NULL) {
bp = buf;
@@ -348,11 +348,11 @@ latlong(
*bp++ = *cp++;
*bp = '\0';
cp++;
- arg += atof(buf) / div;
- div = 3600.0;
+ arg += atof(buf) / divby;
+ divby = 3600.0;
}
if (*cp != '\0')
- arg += atof(cp) / div;
+ arg += atof(cp) / divby;
} else {
arg = atof(str);
}
diff --git a/contrib/ntp/compile b/contrib/ntp/compile
index 9bb997a..1b1d232 100755
--- a/contrib/ntp/compile
+++ b/contrib/ntp/compile
@@ -1,8 +1,9 @@
#! /bin/sh
-
# Wrapper for compilers which do not understand `-c -o'.
-# Copyright 1999, 2000 Free Software Foundation, Inc.
+scriptversion=2005-05-14.22
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
@@ -17,83 +18,125 @@
#
# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 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.
-# Usage:
-# compile PROGRAM [ARGS]...
-# `-o FOO.o' is removed from the args passed to the actual compile.
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+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.
-prog=$1
-shift
+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 <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "compile $scriptversion"
+ exit $?
+ ;;
+esac
ofile=
cfile=
-args=
-while test $# -gt 0; do
- case "$1" in
- -o)
- # configure might choose to run compile as `compile cc -o foo foo.c'.
- # So we do something ugly here.
- ofile=$2
- shift
- case "$ofile" in
- *.o | *.obj)
- ;;
- *)
- args="$args -o $ofile"
- ofile=
- ;;
- esac
- ;;
- *.c)
- cfile=$1
- args="$args $1"
- ;;
- *)
- args="$args $1"
- ;;
- esac
- shift
+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 "$prog" $args
+ # 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/'`
+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
+lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
while true; do
- if mkdir $lockdir > /dev/null 2>&1; then
- break
- fi
- sleep 1
+ 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
+trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
-"$prog" $args
-status=$?
+"$@"
+ret=$?
if test -f "$cofile"; then
- mv "$cofile" "$ofile"
+ mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ mv "${cofile}bj" "$ofile"
fi
-rmdir $lockdir
-exit $status
+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/contrib/ntp/config.guess b/contrib/ntp/config.guess
index 0e30d56..917bbc5 100755
--- a/contrib/ntp/config.guess
+++ b/contrib/ntp/config.guess
@@ -1,9 +1,9 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-timestamp='2003-07-02'
+timestamp='2005-07-08'
# 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
@@ -17,13 +17,15 @@ timestamp='2003-07-02'
#
# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 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 <per@bothner.com>.
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
@@ -53,7 +55,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -66,11 +68,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -123,7 +125,7 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ;'
+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)
@@ -196,50 +198,29 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- macppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvmeppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- pmax:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mipseb-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- wgrisc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ 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 ;;
+ macppc:MirBSD:*:*)
+ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
alpha:OSF1:*:*)
- if test $UNAME_RELEASE = "V4.0"; then
+ case $UNAME_RELEASE in
+ *4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
+ ;;
+ *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
@@ -277,42 +258,49 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
"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/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
- Alpha*:OpenVMS:*:*)
- echo alpha-hp-vms
- exit 0 ;;
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
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 0 ;;
+ exit ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
- exit 0 ;;
+ exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
- exit 0;;
+ exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
+ exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
+ exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
- exit 0 ;;
+ 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 0;;
+ 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 0;;
+ 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
@@ -320,32 +308,32 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
else
echo pyramid-pyramid-bsd
fi
- exit 0 ;;
+ exit ;;
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
- exit 0 ;;
+ exit ;;
DRS?6000:unix:4.0:6*)
echo sparc-icl-nx6
- exit 0 ;;
- DRS?6000:UNIX_SV:4.2*:7*)
+ 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 0 ;;
+ sparc) echo sparc-icl-nx7; exit ;;
esac ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
i86pc:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
Series*|S4*)
@@ -354,10 +342,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
+ exit ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
+ 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
@@ -369,10 +357,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo sparc-sun-sunos${UNAME_RELEASE}
;;
esac
- exit 0 ;;
+ exit ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
+ 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
@@ -383,37 +371,40 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
echo m68k-milan-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
echo m68k-hades-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
- exit 0 ;;
+ exit ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -437,32 +428,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
exit (-1);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c \
- && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && exit 0
+ $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 0 ;;
+ exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
- exit 0 ;;
+ exit ;;
Motorola:*:4.3:PL8-*)
echo powerpc-harris-powermax
- exit 0 ;;
+ exit ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
echo powerpc-harris-powermax
- exit 0 ;;
+ exit ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
- exit 0 ;;
+ exit ;;
m88k:CX/UX:7*:*)
echo m88k-harris-cxux7
- exit 0 ;;
+ exit ;;
m88k:*:4*:R4*)
echo m88k-motorola-sysv4
- exit 0 ;;
+ exit ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
@@ -478,29 +470,29 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit 0 ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
- exit 0 ;;
+ exit ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
echo m88k-tektronix-sysv3
- exit 0 ;;
+ exit ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
echo m68k-tektronix-bsd
- exit 0 ;;
+ exit ;;
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
+ 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 0 ;; # Note that: echo "'`uname -s`'" gives '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 0 ;;
+ exit ;;
ia64:AIX:*:*)
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
@@ -508,7 +500,7 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
eval $set_cc_for_build
@@ -523,14 +515,18 @@ EOF
exit(0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo rs6000-ibm-aix3.2.5
+ 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 0 ;;
+ exit ;;
*:AIX:*:[45])
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
@@ -544,28 +540,28 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
- exit 0 ;;
+ exit ;;
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
- exit 0 ;;
+ exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
+ exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
- exit 0 ;;
+ exit ;;
DPX/2?00:B.O.S.:*:*)
echo m68k-bull-sysv3
- exit 0 ;;
+ exit ;;
9000/[34]??:4.3bsd:1.*:*)
echo m68k-hp-bsd
- exit 0 ;;
+ exit ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
- exit 0 ;;
+ exit ;;
9000/[34678]??:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
case "${UNAME_MACHINE}" in
@@ -627,9 +623,19 @@ EOF
esac
if [ ${HP_ARCH} = "hppa2.0w" ]
then
- # avoid double evaluation of $set_cc_for_build
- test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ 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 __LP64__ >/dev/null
then
HP_ARCH="hppa2.0w"
else
@@ -637,11 +643,11 @@ EOF
fi
fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
ia64:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ia64-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
3050*:HI-UX:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -669,153 +675,166 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
- exit 0 ;;
+ exit ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
echo hppa1.1-hp-bsd
- exit 0 ;;
+ exit ;;
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
- exit 0 ;;
+ exit ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
- exit 0 ;;
+ exit ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
- exit 0 ;;
+ exit ;;
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
- exit 0 ;;
+ exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
- exit 0 ;;
+ exit ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
- exit 0 ;;
+ exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*T3E:*:*:*)
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
*:UNICOS/mp:*:*)
- echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ 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 0 ;;
+ 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 0 ;;
+ exit ;;
sparc*:BSD/OS:*:*)
echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:BSD/OS:*:*)
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
- # Determine whether the default compiler uses glibc.
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #if __GLIBC__ >= 2
- LIBC=gnu
- #else
- LIBC=
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- # GNU/FreeBSD systems have a "k" prefix to indicate we are using
- # FreeBSD's kernel, but not the complete OS.
- case ${LIBC} in gnu) kernel_only='k' ;; esac
- echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
- exit 0 ;;
+ exit ;;
+ *:FreeBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
+ exit ;;
i*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
- exit 0 ;;
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
- exit 0 ;;
+ exit ;;
x86:Interix*:[34]*)
echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
- exit 0 ;;
+ exit ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
+ exit ;;
+ amd64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin
- exit 0 ;;
+ exit ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
*:GNU:*:*)
+ # the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
arm*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
cris:Linux:*:*)
echo cris-axis-linux-gnu
- exit 0 ;;
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
mips:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -833,7 +852,7 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
mips64:Linux:*:*)
eval $set_cc_for_build
@@ -852,14 +871,14 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
@@ -873,7 +892,7 @@ EOF
objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit 0 ;;
+ exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
@@ -881,25 +900,25 @@ EOF
PA8*) echo hppa2.0-unknown-linux-gnu ;;
*) echo hppa-unknown-linux-gnu ;;
esac
- exit 0 ;;
+ exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
echo hppa64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
- exit 0 ;;
+ exit ;;
sh64*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
# first see if it will tell us. cd to the root directory to prevent
@@ -917,15 +936,15 @@ EOF
;;
a.out-i386-linux)
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0 ;;
+ exit ;;
coff-i386)
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit 0 ;;
+ exit ;;
"")
# Either a pre-BFD a.out linker (linux-gnuoldld) or
# one that does not give us useful --help.
echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit 0 ;;
+ exit ;;
esac
# Determine whether the default compiler is a.out or elf
eval $set_cc_for_build
@@ -948,17 +967,23 @@ EOF
LIBC=gnuaout
#endif
#endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; 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 0 ;;
+ 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...
@@ -966,24 +991,27 @@ EOF
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
i*86:XTS-300:*:STOP)
echo ${UNAME_MACHINE}-unknown-stop
- exit 0 ;;
+ exit ;;
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
- exit 0 ;;
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
i*86:*DOS:*:*)
echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
+ 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
@@ -991,15 +1019,16 @@ EOF
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
fi
- exit 0 ;;
- i*86:*:5:[78]*)
+ 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 0 ;;
+ exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
@@ -1017,73 +1046,73 @@ EOF
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
- exit 0 ;;
+ 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 i386.
echo i386-pc-msdosdjgpp
- exit 0 ;;
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
- exit 0 ;;
+ exit ;;
paragon:*:*:*)
echo i860-intel-osf1
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
echo m68010-convergent-sysv
- exit 0 ;;
+ exit ;;
mc68k:UNIX:SYSTEM5:3.51m)
echo m68k-convergent-sysv
- exit 0 ;;
+ exit ;;
M680?0:D-NIX:5.3:*)
echo m68k-diab-dnix
- exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*: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)
+ 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 0
+ && { 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 0 ;;
+ && { 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 0 ;;
+ && { echo i486-ncr-sysv4; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
- exit 0 ;;
+ exit ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
@@ -1091,68 +1120,73 @@ EOF
else
echo ns32k-sni-sysv
fi
- exit 0 ;;
+ exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
- exit 0 ;;
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
- exit 0 ;;
+ exit ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
- exit 0 ;;
+ exit ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
echo powerpc-apple-beos
- exit 0 ;;
+ exit ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
- exit 0 ;;
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Rhapsody:*:*)
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Darwin:*:*)
- case `uname -p` in
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
*86) UNAME_PROCESSOR=i686 ;;
- powerpc) UNAME_PROCESSOR=powerpc ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = "x86"; then
@@ -1160,22 +1194,25 @@ EOF
UNAME_MACHINE=pc
fi
echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
- exit 0 ;;
- NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
- exit 0 ;;
+ exit ;;
BS2000:POSIX*:*:*)
echo bs2000-siemens-sysv
- exit 0 ;;
+ exit ;;
DS/*:UNIX_System_V:*:*)
echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
@@ -1186,28 +1223,44 @@ EOF
UNAME_MACHINE="$cputype"
fi
echo ${UNAME_MACHINE}-unknown-plan9
- exit 0 ;;
+ exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
- exit 0 ;;
+ exit ;;
*:TENEX:*:*)
echo pdp10-unknown-tenex
- exit 0 ;;
+ exit ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
echo pdp10-dec-tops20
- exit 0 ;;
+ exit ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
echo pdp10-xkl-tops20
- exit 0 ;;
+ exit ;;
*:TOPS-20:*:*)
echo pdp10-unknown-tops20
- exit 0 ;;
+ exit ;;
*:ITS:*:*)
echo pdp10-unknown-its
- exit 0 ;;
+ exit ;;
SEI:*:*:SEIUX)
echo mips-sei-seiux${UNAME_RELEASE}
- exit 0 ;;
+ 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 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1239,7 +1292,7 @@ main ()
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
+ printf ("arm-acorn-riscix\n"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
@@ -1328,11 +1381,12 @@ main ()
}
EOF
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+$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 0; }
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
# Convex versions that predate uname can use getsysinfo(1)
@@ -1341,22 +1395,22 @@ then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
c34*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
c38*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
c4*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
esac
fi
@@ -1367,7 +1421,9 @@ This script, last modified $timestamp, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
- ftp://ftp.gnu.org/pub/gnu/config/
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
If the version you run ($0) is already up to date, please
send the following data and any information you think might be
diff --git a/contrib/ntp/config.h.in b/contrib/ntp/config.h.in
index b7f95a4..c8bfb41 100644
--- a/contrib/ntp/config.h.in
+++ b/contrib/ntp/config.h.in
@@ -1,4 +1,4 @@
-/* config.h.in. Generated from configure.in by autoheader. */
+/* config.h.in. Generated from configure.ac by autoheader. */
/* Is adjtime() accurate? */
#undef ADJTIME_IS_ACCURATE
@@ -84,9 +84,6 @@
/* Meinberg clocks */
#undef CLOCK_MEINBERG
-/* EES M201 MSF receiver */
-#undef CLOCK_MSFEES
-
/* Magnavox MX4200 GPS receiver */
#undef CLOCK_MX4200
@@ -114,9 +111,6 @@
/* PST/Traconex 1020 WWV/WWVH receiver */
#undef CLOCK_PST
-/* PTB modem service */
-#undef CLOCK_PTBACTS
-
/* DCF77 raw time code */
#undef CLOCK_RAWDCF
@@ -138,9 +132,6 @@
/* KSI/Odetics TPRO/S GPS receiver/IRIG interface */
#undef CLOCK_TPRO
-/* TRAK 8810 GPS receiver */
-#undef CLOCK_TRAK
-
/* Trimble GPS receiver/TAIP protocol */
#undef CLOCK_TRIMTAIP
@@ -156,9 +147,6 @@
/* Ultralink M320 WWVB receiver? */
#undef CLOCK_ULINK
-/* USNO modem service */
-#undef CLOCK_USNO
-
/* VARITEXT protocol */
#undef CLOCK_VARITEXT
@@ -174,6 +162,9 @@
/* Enable debugging? */
#undef DEBUG
+/* Enable processing time debugging? */
+#undef DEBUG_TIMING
+
/* Declaration style */
#undef DECL_ADJTIME_0
@@ -214,9 +205,6 @@
#undef DECL_MKTEMP_0
/* Declaration style */
-#undef DECL_MRAND48_0
-
-/* Declaration style */
#undef DECL_NLIST_0
/* Declaration style */
@@ -241,9 +229,6 @@
#undef DECL_SIGVEC_0
/* Declaration style */
-#undef DECL_SRAND48_0
-
-/* Declaration style */
#undef DECL_STDIO_0
/* Declaration style */
@@ -285,9 +270,21 @@
/* The number of minutes in a DST adjustment */
#undef DSTMINUTES
+/* fopen(3) accepts a 'b' in the mode flag */
+#undef FOPEN_BINARY_FLAG
+
+/* fopen(3) accepts a 't' in the mode flag */
+#undef FOPEN_TEXT_FLAG
+
/* force ntpdate to step the clock if !defined(STEP_SLEW) ? */
#undef FORCE_NTPDATE_STEP
+/* What is getsockname()'s socklen type? */
+#undef GETSOCKNAME_SOCKLEN_TYPE
+
+/* Do we have a routing socket (struct rt_msghdr)? */
+#undef HAS_ROUTING_SOCKET
+
/* Define to 1 if you have the <arpa/nameser.h> header file. */
#undef HAVE_ARPA_NAMESER_H
@@ -297,12 +294,12 @@
/* Define to 1 if you have the <bstring.h> header file. */
#undef HAVE_BSTRING_H
+/* Define to 1 if you have the `canonicalize_file_name' function. */
+#undef HAVE_CANONICALIZE_FILE_NAME
+
/* Do we have the CIOGETEV ioctl (SunOS, Linux)? */
#undef HAVE_CIOGETEV
-/* [Use], [/dev/clockctl?] */
-#undef HAVE_CLOCKCTL
-
/* Define to 1 if you have the `clock_gettime' function. */
#undef HAVE_CLOCK_GETTIME
@@ -312,6 +309,25 @@
/* Define to 1 if you have the `daemon' function. */
#undef HAVE_DAEMON
+/* Define this if /dev/zero is readable device */
+#undef HAVE_DEV_ZERO
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Use Rendezvous/DNS-SD registration */
+#undef HAVE_DNSREGISTRATION
+
+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+#undef HAVE_DOPRNT
+
+/* Can we drop root privileges? */
+#undef HAVE_DROPROOT
+
/* Define to 1 if you have the <errno.h> header file. */
#undef HAVE_ERRNO_H
@@ -336,6 +352,9 @@
/* Define to 1 if you have the `getdtablesize' function. */
#undef HAVE_GETDTABLESIZE
+/* Define to 1 if you have the `getifaddrs' function. */
+#undef HAVE_GETIFADDRS
+
/* Define to 1 if you have the `getrusage' function. */
#undef HAVE_GETRUSAGE
@@ -354,6 +373,18 @@
/* ISC: Use iflist_sysctl? */
#undef HAVE_IFLIST_SYSCTL
+/* Define to 1 if the system has the type `int16_t'. */
+#undef HAVE_INT16_T
+
+/* Define to 1 if the system has the type `int32_t'. */
+#undef HAVE_INT32_T
+
+/* Define to 1 if the system has the type `int8_t'. */
+#undef HAVE_INT8_T
+
+/* Define to 1 if the system has the type `intptr_t'. */
+#undef HAVE_INTPTR_T
+
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
@@ -381,6 +412,9 @@
/* Define to 1 if you have the `gen' library (-lgen). */
#undef HAVE_LIBGEN
+/* Define to 1 if you have the <libgen.h> header file. */
+#undef HAVE_LIBGEN_H
+
/* Define to 1 if you have the `kvm' library (-lkvm). */
#undef HAVE_LIBKVM
@@ -414,6 +448,15 @@
/* Define to 1 if you have the `syslog' library (-lsyslog). */
#undef HAVE_LIBSYSLOG
+/* Define to 1 if you have the `xnet' library (-lxnet). */
+#undef HAVE_LIBXNET
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Do we have Linux capabilities? */
+#undef HAVE_LINUX_CAPABILITIES
+
/* Define to 1 if you have the <machine/inline.h> header file. */
#undef HAVE_MACHINE_INLINE_H
@@ -453,8 +496,11 @@
/* Define to 1 if you have the `mlockall' function. */
#undef HAVE_MLOCKALL
-/* Define to 1 if you have the `mrand48' function. */
-#undef HAVE_MRAND48
+/* Define to 1 if you have the `mmap' function. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
/* Define to 1 if you have the <netdb.h> header file. */
#undef HAVE_NETDB_H
@@ -483,6 +529,9 @@
/* Define to 1 if you have the <net/if.h> header file. */
#undef HAVE_NET_IF_H
+/* Define to 1 if you have the <net/route.h> header file. */
+#undef HAVE_NET_ROUTE_H
+
/* Define to 1 if you have the `nice' function. */
#undef HAVE_NICE
@@ -495,6 +544,9 @@
/* Define to 1 if you have the `ntp_gettime' function. */
#undef HAVE_NTP_GETTIME
+/* Define this if pathfind(3) works */
+#undef HAVE_PATHFIND
+
/* Define to 1 if you have the `plock' function. */
#undef HAVE_PLOCK
@@ -513,9 +565,6 @@
/* Define to 1 if you have the `pututxline' function. */
#undef HAVE_PUTUTXLINE
-/* Define to 1 if you have the `random' function. */
-#undef HAVE_RANDOM
-
/* Define to 1 if you have the <readline/history.h> header file. */
#undef HAVE_READLINE_HISTORY_H
@@ -525,6 +574,12 @@
/* Define to 1 if you have the `readlink' function. */
#undef HAVE_READLINK
+/* Define this if we have a functional realpath(3C) */
+#undef HAVE_REALPATH
+
+/* Define to 1 if you have the `recvmsg' function. */
+#undef HAVE_RECVMSG
+
/* Define to 1 if you have the <resolv.h> header file. */
#undef HAVE_RESOLV_H
@@ -543,6 +598,9 @@
/* Define to 1 if you have the `sched_setscheduler' function. */
#undef HAVE_SCHED_SETSCHEDULER
+/* Define to 1 if you have the <setjmp.h> header file. */
+#undef HAVE_SETJMP_H
+
/* Define to 1 if you have the `setlinebuf' function. */
#undef HAVE_SETLINEBUF
@@ -588,12 +646,15 @@
/* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF
-/* Define to 1 if you have the `srand48' function. */
-#undef HAVE_SRAND48
-
/* Does struct sockaddr_storage have ss_family? */
#undef HAVE_SS_FAMILY_IN_SS
+/* Does struct sockaddr_storage have ss_len? */
+#undef HAVE_SS_LEN_IN_SS
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
+
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
@@ -612,12 +673,18 @@
/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
+/* Define this if strftime() works */
+#undef HAVE_STRFTIME
+
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
+/* Define to 1 if you have the `strrchr' function. */
+#undef HAVE_STRRCHR
+
/* Define to 1 if you have the `strstr' function. */
#undef HAVE_STRSTR
@@ -633,6 +700,12 @@
/* Do we have struct snd_size? */
#undef HAVE_STRUCT_SND_SIZE
+/* Define to 1 if `sin6_scope_id' is member of `struct sockaddr_in6'. */
+#undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID
+
+/* Does a system header define struct sockaddr_storage? */
+#undef HAVE_STRUCT_SOCKADDR_STORAGE
+
/* Do we have struct timespec? */
#undef HAVE_STRUCT_TIMESPEC
@@ -645,15 +718,25 @@
/* Define to 1 if you have the `sysctl' function. */
#undef HAVE_SYSCTL
+/* Define to 1 if you have the <sysexits.h> header file. */
+#undef HAVE_SYSEXITS_H
+
/* Define to 1 if you have the <sys/audioio.h> header file. */
#undef HAVE_SYS_AUDIOIO_H
+/* Define to 1 if you have the <sys/capability.h> header file. */
+#undef HAVE_SYS_CAPABILITY_H
+
/* Define to 1 if you have the <sys/clkdefs.h> header file. */
#undef HAVE_SYS_CLKDEFS_H
/* Define to 1 if you have the <sys/clockctl.h> header file. */
#undef HAVE_SYS_CLOCKCTL_H
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
/* Define to 1 if you have the <sys/file.h> header file. */
#undef HAVE_SYS_FILE_H
@@ -666,6 +749,9 @@
/* Define to 1 if you have the <sys/ipc.h> header file. */
#undef HAVE_SYS_IPC_H
+/* Define to 1 if you have the <sys/limits.h> header file. */
+#undef HAVE_SYS_LIMITS_H
+
/* Define to 1 if you have the <sys/lock.h> header file. */
#undef HAVE_SYS_LOCK_H
@@ -675,18 +761,31 @@
/* Define to 1 if you have the <sys/modem.h> header file. */
#undef HAVE_SYS_MODEM_H
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
/* Define to 1 if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
/* Define to 1 if you have the <sys/pcl720.h> header file. */
#undef HAVE_SYS_PCL720_H
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#undef HAVE_SYS_POLL_H
+
/* Define to 1 if you have the <sys/ppsclock.h> header file. */
#undef HAVE_SYS_PPSCLOCK_H
/* Define to 1 if you have the <sys/ppstime.h> header file. */
#undef HAVE_SYS_PPSTIME_H
+/* Define to 1 if you have the <sys/prctl.h> header file. */
+#undef HAVE_SYS_PRCTL_H
+
+/* Define to 1 if you have the <sys/procset.h> header file. */
+#undef HAVE_SYS_PROCSET_H
+
/* Define to 1 if you have the <sys/proc.h> header file. */
#undef HAVE_SYS_PROC_H
@@ -708,6 +807,9 @@
/* Define to 1 if you have the <sys/sio.h> header file. */
#undef HAVE_SYS_SIO_H
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
/* Define to 1 if you have the <sys/sockio.h> header file. */
#undef HAVE_SYS_SOCKIO_H
@@ -753,6 +855,12 @@
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
+/* Use sys/uio.h for struct iovec help */
+#undef HAVE_SYS_UIO_H
+
+/* Define to 1 if you have the <sys/un.h> header file. */
+#undef HAVE_SYS_UN_H
+
/* Define to 1 if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H
@@ -792,12 +900,27 @@
/* Do we have the TIO serial stuff? */
#undef HAVE_TIO_SERIAL_STUFF
-/* Does u_int64_t exist */
+/* Does u_int64_t exist? */
#undef HAVE_TYPE_U_INT64_T
-/* Does u_int8_t exist */
+/* Does u_int8_t exist? */
#undef HAVE_TYPE_U_INT8_T
+/* Define to 1 if the system has the type `uint16_t'. */
+#undef HAVE_UINT16_T
+
+/* Define to 1 if the system has the type `uint32_t'. */
+#undef HAVE_UINT32_T
+
+/* Define to 1 if the system has the type `uint8_t'. */
+#undef HAVE_UINT8_T
+
+/* Define to 1 if the system has the type `uintptr_t'. */
+#undef HAVE_UINTPTR_T
+
+/* Define to 1 if the system has the type `uint_t'. */
+#undef HAVE_UINT_T
+
/* Define to 1 if you have the `umask' function. */
#undef HAVE_UMASK
@@ -813,12 +936,27 @@
/* Define to 1 if you have the `updwtmpx' function. */
#undef HAVE_UPDWTMPX
+/* Define to 1 if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
+
/* Define to 1 if you have the <utmpx.h> header file. */
#undef HAVE_UTMPX_H
/* Define to 1 if you have the <utmp.h> header file. */
#undef HAVE_UTMP_H
+/* Define to 1 if you have the <values.h> header file. */
+#undef HAVE_VALUES_H
+
+/* Define to 1 if you have the <varargs.h> header file. */
+#undef HAVE_VARARGS_H
+
+/* Define to 1 if you have the `vprintf' function. */
+#undef HAVE_VPRINTF
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
+
/* Define to 1 if you have the `vsprintf' function. */
#undef HAVE_VSPRINTF
@@ -837,9 +975,18 @@
/* Does struct sockaddr_storage have __ss_family? */
#undef HAVE___SS_FAMILY_IN_SS
+/* Does struct sockaddr_storage have __ss_len? */
+#undef HAVE___SS_LEN_IN_SS
+
/* Should we use the IRIG sawtooth filter? */
#undef IRIG_SUCKS
+/* Do we need to fix in6isaddr? */
+#undef ISC_PLATFORM_FIXIN6ISADDR
+
+/* ISC: do we have if_nametoindex()? */
+#undef ISC_PLATFORM_HAVEIFNAMETOINDEX
+
/* ISC: have struct if_laddrconf? */
#undef ISC_PLATFORM_HAVEIF_LADDRCONF
@@ -855,12 +1002,24 @@
/* ISC: struct sockaddr as sa_len? */
#undef ISC_PLATFORM_HAVESALEN
+/* ISC: Have sin6_scope_id? */
+#undef ISC_PLATFORM_HAVESCOPEID
+
+/* ISC: provide inet_aton() */
+#undef ISC_PLATFORM_NEEDATON
+
/* ISC: Need in6addr_any? */
#undef ISC_PLATFORM_NEEDIN6ADDRANY
/* ISC: provide inet_ntop() */
#undef ISC_PLATFORM_NEEDNTOP
+/* Do we need our own in_port_t? */
+#undef ISC_PLATFORM_NEEDPORTT
+
+/* ISC: provide inet_pton() */
+#undef ISC_PLATFORM_NEEDPTON
+
/* Does the kernel have an FLL bug? */
#undef KERNEL_FLL_BUG
@@ -915,6 +1074,15 @@
/* Should we NOT read /dev/kmem? */
#undef NOKMEM
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Define this if optional arguments are disallowed */
+#undef NO_OPTIONAL_OPT_ARGS
+
+/* Should we avoid #warning on option name collisions? */
+#undef NO_OPTION_NAME_WARNINGS
+
/* Is there a problem using PARENB and IGNPAR (IRIX)? */
#undef NO_PARENB_IGNPAR
@@ -936,6 +1104,13 @@
/* Should we open the broadcast socket? */
#undef OPEN_BCAST_SOCKET
+/* need to recreate sockets on changed routing? */
+#undef OS_MISSES_SPECIFIC_ROUTE_UPDATES
+
+/* wildcard socket needs to set REUSEADDR when binding to interface addresses
+ */
+#undef OS_NEEDS_REUSEADDR_FOR_IFADDRBIND
+
/* Do we need to override the system's idea of HZ? */
#undef OVERRIDE_HZ
@@ -972,7 +1147,7 @@
/* Preset a value for 'tickadj'? */
#undef PRESET_TICKADJ
-/* Define if compiler has function prototypes */
+/* Define to 1 if the C compiler supports function prototypes. */
#undef PROTOTYPES
/* Does qsort expect to work on "void *" stuff? */
@@ -984,6 +1159,9 @@
/* Basic refclock support? */
#undef REFCLOCK
+/* name of regex header file */
+#undef REGEX_HEADER
+
/* Do we want the ReliantUNIX clock hacks? */
#undef RELIANTUNIX_CLOCK
@@ -993,15 +1171,24 @@
/* Do we want the SCO clock hacks? */
#undef SCO5_CLOCK
+/* The size of a `char*', as computed by sizeof. */
+#undef SIZEOF_CHARP
+
/* The size of a `int', as computed by sizeof. */
#undef SIZEOF_INT
/* The size of a `long', as computed by sizeof. */
#undef SIZEOF_LONG
+/* The size of a `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
/* The size of a `signed char', as computed by sizeof. */
#undef SIZEOF_SIGNED_CHAR
+/* The size of a `time_t', as computed by sizeof. */
+#undef SIZEOF_TIME_T
+
/* Does SIOCGIFCONF return size in the buffer? */
#undef SIZE_RETURNED_IN_BUFFER
@@ -1017,10 +1204,7 @@
/* Step, then slew the clock? */
#undef STEP_SLEW
-/* Do we have STREAMS/TLI? (Can we replace this with HAVE_SYS_STROPTS_H?) */
-#undef STREAMS_TLI
-
-/* canonical system (cpu-vendor-os) string */
+/* canonical system (cpu-vendor-os) of where we should run */
#undef STR_SYSTEM
/* Buggy syscall() (Solaris2.4)? */
@@ -1047,12 +1231,18 @@
/* Do we have the tty_clk line discipline/streams module? */
#undef TTYCLK
+/* Provide a typedef for uintptr_t? */
+#ifndef HAVE_UINTPTR_T
+typedef unsigned int uintptr_t;
+#define HAVE_UINTPTR_T 1
+#endif
+
+/* What type to use for setsockopt */
+#undef TYPEOF_IP_MULTICAST_LOOP
+
/* Do we set process groups with -pid? */
#undef UDP_BACKWARDS_SETOWN
-/* use UDP Wildcard Delivery? */
-#undef UDP_WILDCARD_DELIVERY
-
/* How do we create unsigned long constants? */
#undef ULONG_CONST
@@ -1071,6 +1261,9 @@
/* ISC: Want IPv6? */
#undef WANT_IPV6
+/* Define this if a working libregex can be found */
+#undef WITH_LIBREGEX
+
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN
@@ -1078,9 +1271,13 @@
/* Handle ss_family */
#if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS)
# define ss_family __ss_family
-# define ss_len __ss_len
#endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */
+/* Handle ss_len */
+#if !defined(HAVE_SS_LEN_IN_SS) && defined(HAVE___SS_LEN_IN_SS)
+# define ss_len __ss_len
+#endif /* !defined(HAVE_SS_LEN_IN_SS) && defined(HAVE_SA_LEN_IN_SS) */
+
/* Define to 1 if on AIX 3.
System headers sometimes define this.
We just want to avoid a redefinition error message. */
@@ -1103,15 +1300,20 @@
# undef __CHAR_UNSIGNED__
#endif
+/* Define like PROTOTYPES; this can be used by system headers. */
+#undef __PROTOTYPES
+
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t
-/* Define as `__inline' if that's what the C compiler calls it, or to nothing
- if it is not supported. */
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
#undef inline
+#endif
/* Define to `long' if <sys/types.h> does not define. */
#undef off_t
@@ -1125,5 +1327,8 @@
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
+/* Alternate uintptr_t for systems without it. */
+#undef uintptr_t
+
/* Does the compiler like "volatile"? */
#undef volatile
diff --git a/contrib/ntp/config.sub b/contrib/ntp/config.sub
index c8a01be..1c366df 100755
--- a/contrib/ntp/config.sub
+++ b/contrib/ntp/config.sub
@@ -1,9 +1,9 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-timestamp='2003-07-04'
+timestamp='2005-07-08'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -21,14 +21,15 @@ timestamp='2003-07-04'
#
# 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., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
+# 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 <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
#
@@ -70,7 +71,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -83,11 +84,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -99,7 +100,7 @@ while test $# -gt 0 ; do
*local*)
# First pass through any local machine types.
echo $1
- exit 0;;
+ exit ;;
* )
break ;;
@@ -118,7 +119,8 @@ esac
# 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* | kfreebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -144,7 +146,7 @@ case $os in
-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)
+ -apple | -axis | -knuth | -cray)
os=
basic_machine=$1
;;
@@ -228,14 +230,16 @@ case $basic_machine in
| 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 \
+ | bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
| fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
- | ip2k \
- | m32r | m68000 | m68k | m88k | mcore \
+ | ip2k | iq2000 \
+ | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -244,30 +248,37 @@ case $basic_machine in
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
+ | ms1 \
| msp430 \
| ns16k | ns32k \
- | openrisc | or32 \
+ | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
- | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+ | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b \
| strongarm \
| tahoe | thumb | tic4x | tic80 | tron \
| v850 | v850e \
| we32k \
- | x86 | xscale | xstormy16 | xtensa \
+ | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k)
basic_machine=$basic_machine-unknown
;;
+ m32c)
+ basic_machine=$basic_machine-unknown
+ ;;
m6811 | m68hc11 | m6812 | m68hc12)
# Motorola 68HC11/12.
basic_machine=$basic_machine-unknown
@@ -295,19 +306,19 @@ case $basic_machine in
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* \
- | bs2000-* \
+ | bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | cydra-* \
+ | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* \
- | m32r-* \
+ | ip2k-* | iq2000-* \
+ | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | mcore-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -316,33 +327,40 @@ case $basic_machine in
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | ms1-* \
| msp430-* \
- | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
- | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
- | xtensa-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa-* \
| ymp-* \
| z8k-*)
;;
+ m32c-*)
+ ;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd)
@@ -359,6 +377,9 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
adobe68k)
basic_machine=m68010-adobe
os=-scout
@@ -376,6 +397,9 @@ case $basic_machine in
amd64)
basic_machine=x86_64-pc
;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
amdahl)
basic_machine=580-amdahl
os=-sysv
@@ -435,12 +459,27 @@ case $basic_machine in
basic_machine=j90-cray
os=-unicos
;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16c)
+ basic_machine=cr16c-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
;;
@@ -463,6 +502,10 @@ case $basic_machine in
basic_machine=m88k-motorola
os=-sysv3
;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
@@ -641,10 +684,6 @@ case $basic_machine in
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
- mmix*)
- basic_machine=mmix-knuth
- os=-mmixware
- ;;
monitor)
basic_machine=m68k-rom68k
os=-coff
@@ -725,10 +764,6 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
- nv1)
- basic_machine=nv1-cray
- os=-unicosmp
- ;;
nsr-tandem)
basic_machine=nsr-tandem
;;
@@ -736,9 +771,12 @@ case $basic_machine in
basic_machine=hppa1.1-oki
os=-proelf
;;
- or32 | or32-*)
+ openrisc | openrisc-*)
basic_machine=or32-unknown
- os=-coff
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
@@ -960,6 +998,10 @@ case $basic_machine in
tower | tower-32)
basic_machine=m68k-ncr
;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
udi29k)
basic_machine=a29k-amd
os=-udi
@@ -1003,6 +1045,10 @@ case $basic_machine in
basic_machine=hppa1.1-winbond
os=-proelf
;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
xps | xps100)
basic_machine=xps100-honeywell
;;
@@ -1033,6 +1079,9 @@ case $basic_machine in
romp)
basic_machine=romp-ibm
;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
rs6000)
basic_machine=rs6000-ibm
;;
@@ -1049,13 +1098,10 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
- sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparc | sparcv9 | sparcv9b)
+ sparc | sparcv8 | sparcv9 | sparcv9b)
basic_machine=sparc-sun
;;
cydra)
@@ -1128,19 +1174,21 @@ case $os in
| -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -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* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -mingw32* | -linux-gnu* | -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*)
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1158,12 +1206,15 @@ case $os in
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -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|'`
;;
@@ -1176,6 +1227,9 @@ case $os in
-opened*)
os=-openedition
;;
+ -os400*)
+ os=-os400
+ ;;
-wince*)
os=-wince
;;
@@ -1197,6 +1251,9 @@ case $os in
-atheos*)
os=-atheos
;;
+ -syllable*)
+ os=-syllable
+ ;;
-386bsd)
os=-bsd
;;
@@ -1219,6 +1276,9 @@ case $os in
-sinix*)
os=-sysv4
;;
+ -tpf*)
+ os=-tpf
+ ;;
-triton*)
os=-sysv3
;;
@@ -1255,6 +1315,9 @@ case $os in
-kaos*)
os=-kaos
;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
-none)
;;
*)
@@ -1332,9 +1395,15 @@ case $basic_machine in
*-be)
os=-beos
;;
+ *-haiku)
+ os=-haiku
+ ;;
*-ibm)
os=-aix
;;
+ *-knuth)
+ os=-mmixware
+ ;;
*-wec)
os=-proelf
;;
@@ -1467,9 +1536,15 @@ case $basic_machine in
-mvs* | -opened*)
vendor=ibm
;;
+ -os400*)
+ vendor=ibm
+ ;;
-ptx*)
vendor=sequent
;;
+ -tpf*)
+ vendor=ibm
+ ;;
-vxsim* | -vxworks* | -windiss*)
vendor=wrs
;;
@@ -1494,7 +1569,7 @@ case $basic_machine in
esac
echo $basic_machine$os
-exit 0
+exit
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/contrib/ntp/configure b/contrib/ntp/configure
index 64f6df8..03c099a 100755
--- a/contrib/ntp/configure
+++ b/contrib/ntp/configure
@@ -1,9 +1,8 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.57.
+# Generated by GNU Autoconf 2.59 for ntp 4.2.4p5.
#
-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-# Free Software Foundation, Inc.
+# Copyright (C) 2003 Free Software Foundation, Inc.
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
## --------------------- ##
@@ -20,9 +19,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
set -o posix
fi
+DUALCASE=1; export DUALCASE # for MKS sh
# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
as_unset=unset
else
as_unset=false
@@ -41,7 +41,7 @@ for as_var in \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
LC_TELEPHONE LC_TIME
do
- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
eval $as_var=C; export $as_var
else
$as_unset $as_var
@@ -218,16 +218,17 @@ rm -f conf$$ conf$$.exe conf$$.file
if mkdir -p . 2>/dev/null; then
as_mkdir_p=:
else
+ test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
as_executable_p="test -f"
# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
# IFS
@@ -240,6 +241,160 @@ IFS=" $as_nl"
$as_unset CDPATH
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit 0
+fi
+
+# 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
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "$0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
# Name of the host.
# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
# so uname gets run too.
@@ -264,13 +419,12 @@ SHELL=${CONFIG_SHELL-/bin/sh}
: ${ac_max_here_lines=38}
# Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
+PACKAGE_NAME='ntp'
+PACKAGE_TARNAME='ntp'
+PACKAGE_VERSION='4.2.4p5'
+PACKAGE_STRING='ntp 4.2.4p5'
+PACKAGE_BUGREPORT=''
-ac_unique_file="ntpd/ntp_refclock.c"
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
@@ -309,8 +463,7 @@ ac_includes_default="\
#endif"
ac_subdirs_all="$ac_subdirs_all arlib"
-ac_subdirs_all="$ac_subdirs_all sntp"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP LN_S RANLIB ac_ct_RANLIB PATH_SH PATH_PERL READLINE_LIBS U ANSI2KNR LIBOBJS LIBPARSE MAKE_LIBPARSE MAKE_LIBPARSE_KERNEL MAKE_CHECK_Y2K OPENSSL OPENSSL_INC OPENSSL_LIB MAKE_NTP_KEYGEN LCRYPTO EF_PROGS EF_LIBS MAKE_SNTP TESTDCF DCFD MAKE_PARSEKMODULE PROPDELAY CHUTEST CLKTEST MAKE_ADJTIMED MAKE_NTPTIME MAKE_TICKADJ MAKE_TIMETRIM MAKE_LIBNTPSIM MAKE_NTPDSIM ARLIB_DIR subdirs LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP LIBOPTS_DIR INSTALL_LIBOPTS_TRUE INSTALL_LIBOPTS_FALSE NEED_LIBOPTS_TRUE NEED_LIBOPTS_FALSE LIBOPTS_LDADD LIBOPTS_CFLAGS BINSUBDIR subdirs ARLIB_DIR LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL PATH_SH PATH_PERL READLINE_LIBS U ANSI2KNR LIBPARSE MAKE_LIBPARSE MAKE_LIBPARSE_KERNEL MAKE_CHECK_Y2K OPENSSL OPENSSL_INC OPENSSL_LIB LCRYPTO EF_PROGS EF_LIBS MAKE_CHECK_LAYOUT TESTDCF DCFD MAKE_PARSEKMODULE PROPDELAY CHUTEST CLKTEST MAKE_ADJTIMED MAKE_NTPTIME MAKE_TICKADJ MAKE_TIMETRIM MAKE_LIBNTPSIM MAKE_NTPDSIM LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -669,7 +822,7 @@ done
# Be sure to have absolute paths.
for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
- localstatedir libdir includedir oldincludedir infodir mandir
+ localstatedir libdir includedir oldincludedir infodir mandir
do
eval ac_val=$`echo $ac_var`
case $ac_val in
@@ -709,10 +862,10 @@ if test -z "$srcdir"; then
# Try the directory containing this script, then its parent.
ac_confdir=`(dirname "$0") 2>/dev/null ||
$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$0" : 'X\(//\)[^/]' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$0" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -771,6 +924,26 @@ ac_env_CPP_set=${CPP+set}
ac_env_CPP_value=$CPP
ac_cv_env_CPP_set=${CPP+set}
ac_cv_env_CPP_value=$CPP
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
#
# Report the --help message.
@@ -779,7 +952,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 this package to adapt to many kinds of systems.
+\`configure' configures ntp 4.2.4p5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -804,9 +977,9 @@ _ACEOF
cat <<_ACEOF
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
+ [$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
+ [PREFIX]
By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
@@ -840,21 +1013,39 @@ Program names:
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
- --target=TARGET configure for building compilers for TARGET [HOST]
_ACEOF
fi
if test -n "$ac_init_help"; then
-
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of ntp 4.2.4p5:";;
+ esac
cat <<\_ACEOF
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --disable-dependency-tracking Speeds up one-time builds
- --enable-dependency-tracking Do not reject slow dependency extractors
- --enable-clockctl Use /dev/clockctl for non-root time control
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-local-libopts Force using the supplied libopts tearoff code
+ --disable-libopts-install
+ Do not install libopts with client installation
+ --disable-optional-args not wanting optional option args
+ --enable-clockctl s Use /dev/clockctl for non-root clock control
+ --enable-linuxcaps s Use Linux capabilities for non-root clock control
+ --enable-shared[=PKGS]
+ build shared libraries [default=no]
+ --enable-static[=PKGS]
+ build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+ --enable-getifaddrs s Enable the use of getifaddrs() [yes|no|glibc].
+ glibc: Use getifaddrs() in glibc if you know it
+ supports IPv6.
--enable-debugging + include debugging code
+ --enable-debug-timing - include processing time debugging code (costs
+ performance)
--enable-dst-minutes=60 + minutes per DST adjustment
--enable-BANCOMM - Datum/Bancomm bc635/VME interface
--enable-GPSVME - TrueTime GPS receiver/VME interface
@@ -879,7 +1070,6 @@ Optional Features:
--enable-JUPITER s Rockwell Jupiter GPS receiver
--enable-LEITCH + Leitch CSD 5300 Master Clock System Driver
--enable-LOCAL-CLOCK + local clock reference
- --enable-MSFEES + EES M201 MSF receiver
--enable-MX4200 s Magnavox MX4200 GPS receiver
--enable-NEOCLOCK4X + NeoClock4X DCF77 / TDF receiver
--enable-NMEA + NMEA GPS receiver
@@ -887,16 +1077,13 @@ Optional Features:
--enable-PALISADE s Palisade clock
--enable-PCF + Conrad parallel port radio clock
--enable-PST + PST/Traconex 1020 WWV/WWVH receiver
- --enable-PTBACTS s PTB modem service
--enable-RIPENCC - RIPENCC specific Trimble driver
--enable-SHM s SHM clock attached thru shared memory
--enable-SPECTRACOM + Spectracom 8170/Netclock/2 WWVB receiver
--enable-TPRO s KSI/Odetics TPRO/S GPS receiver/IRIG interface
- --enable-TRAK + TRAK 8810 GPS receiver
--enable-TRUETIME s Kinemetrics/TrueTime receivers
--enable-TT560 - TrueTime 560 IRIG-B decoder
--enable-ULINK + Ultralink WWVB receiver
- --enable-USNO s USNO modem service
--enable-WWV s WWV Audio receiver
--enable-ZYFER + Zyfer GPStarplus receiver
--enable-parse-clocks - include all suitable PARSE clocks:
@@ -917,7 +1104,6 @@ Optional Features:
--enable-tick=VALUE s force a value for 'tick'
--enable-tickadj=VALUE s force a value for 'tickadj'
--enable-simulator - build/install the NTPD simulator?
- --enable-udp-wildcard s use UDP wildcard delivery
--enable-slew-always s always slew the time
--enable-step-slew s step and slew the time
--enable-ntpdate-step s if ntpdate should step the time
@@ -926,16 +1112,29 @@ Optional Features:
--enable-kernel-fll-bug s if we should avoid a kernel FLL bug
--enable-irig-sawtooth s if we should enable the IRIG sawtooth filter
--enable-nist - if we should enable the NIST lockclock scheme
+ --enable-ipv6 s use IPv6?
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-autoopts-config specify the config-info script
+ --with-regex-header a reg expr header is specified
+ --with-libregex libregex installation prefix
+ --with-libregex-cflags libregex compile flags
+ --with-libregex-libs libregex link command arguments
+ --with-binsubdir bin ={bin,sbin}
+ --with-arlib - Compile the async resolver library?
+ --without-rpath s Disable auto-added -R linker paths
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-tags[=TAGS]
+ include additional configurations [automatic]
--with-openssl-libdir + =/something/reasonable
--with-openssl-incdir + =/something/reasonable
--with-crypto + =openssl
--with-electricfence - compile with ElectricFence malloc debugger
- --with-sntp - Build SNTP?
- --with-arlib - Compile the async resolver library?
+ --with-kame - =/usr/local/v6
Some influential environment variables:
CC C compiler command
@@ -945,6 +1144,11 @@ Some influential environment variables:
CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
headers in a nonstandard directory <include dir>
CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+ F77 Fortran 77 compiler command
+ FFLAGS Fortran 77 compiler flags
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -982,12 +1186,45 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
cd $ac_dir
# Check for guested configure; otherwise get Cygnus style configure.
@@ -998,7 +1235,7 @@ ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
echo
$SHELL $ac_srcdir/configure --help=recursive
elif test -f $ac_srcdir/configure.ac ||
- test -f $ac_srcdir/configure.in; then
+ test -f $ac_srcdir/configure.in; then
echo
$ac_configure --help
else
@@ -1011,9 +1248,10 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
+ntp configure 4.2.4p5
+generated by GNU Autoconf 2.59
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-Free Software Foundation, Inc.
+Copyright (C) 2003 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1024,8 +1262,8 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by $as_me, which was
-generated by GNU Autoconf 2.57. Invocation command line was
+It was created by ntp $as_me 4.2.4p5, which was
+generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -1102,19 +1340,19 @@ do
2)
ac_configure_args1="$ac_configure_args1 '$ac_arg'"
if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
+ ac_must_keep_next=false # Got value, back to normal.
else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
fi
ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
# Get rid of the leading space.
@@ -1148,12 +1386,12 @@ _ASBOX
case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
*ac_space=\ *)
sed -n \
- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
;;
*)
sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
;;
esac;
}
@@ -1182,7 +1420,7 @@ _ASBOX
for ac_var in $ac_subst_files
do
eval ac_val=$`echo $ac_var`
- echo "$ac_var='"'"'$ac_val'"'"'"
+ echo "$ac_var='"'"'$ac_val'"'"'"
done | sort
echo
fi
@@ -1201,7 +1439,7 @@ _ASBOX
echo "$as_me: caught signal $ac_signal"
echo "$as_me: exit $exit_status"
} >&5
- rm -f core core.* *.core &&
+ rm -f core *.core &&
rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
exit $exit_status
' 0
@@ -1281,7 +1519,7 @@ fi
# value.
ac_cache_corrupted=false
for ac_var in `(set) 2>&1 |
- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
eval ac_old_set=\$ac_cv_env_${ac_var}_set
eval ac_new_set=\$ac_env_${ac_var}_set
eval ac_old_val="\$ac_cv_env_${ac_var}_value"
@@ -1298,13 +1536,13 @@ echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
+ ac_cache_corrupted=:
fi;;
esac
# Pass precious variables to config.status.
@@ -1352,6 +1590,15 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+am__api_version="1.9"
ac_aux_dir=
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
if test -f $ac_dir/install-sh; then
@@ -1377,109 +1624,6 @@ ac_config_guess="$SHELL $ac_aux_dir/config.guess"
ac_config_sub="$SHELL $ac_aux_dir/config.sub"
ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
-# Make sure we can run config.sub.
-$ac_config_sub sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
- { (exit 1); exit 1; }; }
-
-echo "$as_me:$LINENO: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6
-if test "${ac_cv_build+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_build_alias=$build_alias
-test -z "$ac_cv_build_alias" &&
- ac_cv_build_alias=`$ac_config_guess`
-test -z "$ac_cv_build_alias" &&
- { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
- { (exit 1); exit 1; }; }
-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6
-build=$ac_cv_build
-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-
-echo "$as_me:$LINENO: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6
-if test "${ac_cv_host+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_host_alias=$host_alias
-test -z "$ac_cv_host_alias" &&
- ac_cv_host_alias=$ac_cv_build_alias
-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6
-host=$ac_cv_host
-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-
-echo "$as_me:$LINENO: checking target system type" >&5
-echo $ECHO_N "checking target system type... $ECHO_C" >&6
-if test "${ac_cv_target+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_target_alias=$target_alias
-test "x$ac_cv_target_alias" = "x" &&
- ac_cv_target_alias=$ac_cv_host_alias
-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_target" >&5
-echo "${ECHO_T}$ac_cv_target" >&6
-target=$ac_cv_target
-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
- test "$program_prefix$program_suffix$program_transform_name" = \
- NONENONEs,x,x, &&
- program_prefix=${target_alias}-
-
-cat >>confdefs.h <<_ACEOF
-#define STR_SYSTEM "$host"
-_ACEOF
-
- ac_config_headers="$ac_config_headers config.h"
-
-test "$program_prefix" != NONE &&
- program_transform_name="s,^,$program_prefix,;$program_transform_name"
-# Use a double $ so make ignores it.
-test "$program_suffix" != NONE &&
- program_transform_name="s,\$,$program_suffix,;$program_transform_name"
-# Double any \ or $. echo might interpret backslashes.
-# By default was `s,x,x', remove it if useless.
-cat <<\_ACEOF >conftest.sed
-s/[\\$]/&&/g;s/;s,x,x,$//
-_ACEOF
-program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
-rm conftest.sed
-
-am__api_version="1.7"
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
# incompatible versions:
@@ -1491,6 +1635,7 @@ am__api_version="1.7"
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
@@ -1507,6 +1652,7 @@ do
case $as_dir/ in
./ | .// | /cC/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
/usr/ucb/* ) ;;
*)
# OSF1 and SCO ODT 3.0 have their own names for install.
@@ -1514,20 +1660,20 @@ case $as_dir/ in
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
done
done
;;
@@ -1602,6 +1748,18 @@ Check your system clock" >&2;}
fi
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
+test "$program_prefix" != NONE &&
+ program_transform_name="s,^,$program_prefix,;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+ program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $. echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
# expand $ac_aux_dir to an absolute path
am_aux_dir=`cd $ac_aux_dir && pwd`
@@ -1616,6 +1774,39 @@ else
echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
fi
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -1658,7 +1849,7 @@ done
echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
@@ -1694,7 +1885,7 @@ else
fi
rmdir .tst 2>/dev/null
- # test to see if srcdir already configured
+# test to see if srcdir already configured
if test "`cd $srcdir && pwd`" != "`pwd`" &&
test -f $srcdir/config.status; then
{ { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
@@ -1713,8 +1904,8 @@ fi
# Define the identity of the package.
- PACKAGE=ntp
- VERSION=4.2.0
+ PACKAGE='ntp'
+ VERSION='4.2.4p5'
cat >>confdefs.h <<_ACEOF
@@ -1742,9 +1933,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
install_sh=${install_sh-"$am_aux_dir/install-sh"}
# Installed binaries are usually stripped using `strip' when the user
@@ -1837,13 +2025,82 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+ { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+ ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+ ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+cat >>confdefs.h <<_ACEOF
+#define STR_SYSTEM "$host"
+_ACEOF
+
+ ac_config_headers="$ac_config_headers config.h"
+
+
ac_cv_var_atom_ok=no
ac_cv_var_oncore_ok=no
+ac_cv_var_parse_ok=no
ac_cv_var_ripe_ncc_ok=no
ac_cv_var_jupiter_ok=no
@@ -2250,7 +2507,6 @@ ac_compiler=`set X $ac_compile; echo $2`
(exit $ac_status); }
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2270,8 +2526,8 @@ ac_clean_files="$ac_clean_files a.out a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-echo "$as_me:$LINENO: checking for C compiler default output" >&5
-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
(eval $ac_link_default) 2>&5
@@ -2291,23 +2547,23 @@ do
test -f "$ac_file" || continue
case $ac_file in
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
- ;;
+ ;;
conftest.$ac_ext )
- # This is the source file.
- ;;
+ # This is the source file.
+ ;;
[ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
*.* )
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- # FIXME: I believe we export ac_cv_exeext for Libtool,
- # but it would be cool to find out if it's true. Does anybody
- # maintain Libtool? --akim.
- export ac_cv_exeext
- break;;
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool,
+ # but it would be cool to find out if it's true. Does anybody
+ # maintain Libtool? --akim.
+ export ac_cv_exeext
+ break;;
* )
- break;;
+ break;;
esac
done
else
@@ -2381,8 +2637,8 @@ for ac_file in conftest.exe conftest conftest.*; do
case $ac_file in
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
*.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- export ac_cv_exeext
- break;;
+ export ac_cv_exeext
+ break;;
* ) break;;
esac
done
@@ -2407,7 +2663,6 @@ if test "${ac_cv_objext+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2458,7 +2713,6 @@ if test "${ac_cv_c_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2478,11 +2732,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2495,7 +2759,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_compiler_gnu=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
@@ -2511,7 +2775,6 @@ if test "${ac_cv_prog_cc_g+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2528,11 +2791,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2545,7 +2818,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_prog_cc_g=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
@@ -2572,7 +2845,6 @@ else
ac_cv_prog_cc_stdc=no
ac_save_CC=$CC
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2600,6 +2872,16 @@ static char *f (char * (*g) (char **, int), char **p, ...)
va_end (v);
return s;
}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std1. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
int test (int i, double x);
struct s1 {int (*f) (int a);};
struct s2 {int (*f) (double a);};
@@ -2626,11 +2908,21 @@ do
CC="$ac_save_CC $ac_arg"
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2643,7 +2935,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext
+rm -f conftest.err conftest.$ac_objext
done
rm -f conftest.$ac_ext conftest.$ac_objext
CC=$ac_save_CC
@@ -2671,19 +2963,28 @@ cat >conftest.$ac_ext <<_ACEOF
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
for ac_declaration in \
- ''\
- '#include <stdlib.h>' \
+ '' \
'extern "C" void std::exit (int) throw (); using std::exit;' \
'extern "C" void std::exit (int); using std::exit;' \
'extern "C" void exit (int) throw ();' \
@@ -2691,14 +2992,13 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
'void exit (int);'
do
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <stdlib.h>
$ac_declaration
+#include <stdlib.h>
int
main ()
{
@@ -2709,11 +3009,21 @@ exit (42);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2726,9 +3036,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
continue
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2745,11 +3054,21 @@ exit (42);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2761,7 +3080,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
rm -f conftest*
if test -n "$ac_declaration"; then
@@ -2775,7 +3094,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f 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'
@@ -2823,7 +3142,9 @@ else
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- : > sub/conftst$i.h
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
@@ -2851,9 +3172,14 @@ else
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
- # (even with -Werror). So we grep stderr for any message
- # that says an option was ignored.
- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_CC_dependencies_compiler_type=$depmode
break
fi
@@ -2913,7 +3239,6 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2924,7 +3249,7 @@ cat >>conftest.$ac_ext <<_ACEOF
#else
# include <assert.h>
#endif
- Syntax error
+ Syntax error
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
@@ -2936,6 +3261,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -2956,7 +3282,6 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2974,6 +3299,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -3020,7 +3346,6 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3031,7 +3356,7 @@ cat >>conftest.$ac_ext <<_ACEOF
#else
# include <assert.h>
#endif
- Syntax error
+ Syntax error
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
@@ -3043,6 +3368,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -3063,7 +3389,6 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3081,6 +3406,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -3139,7 +3465,6 @@ echo "${ECHO_T}$ac_cv_prog_egrep" >&6
echo "$as_me:$LINENO: checking for AIX" >&5
echo $ECHO_N "checking for AIX... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3171,7 +3496,6 @@ if test "${ac_cv_header_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3192,11 +3516,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3209,12 +3543,11 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_stdc=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3236,7 +3569,6 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3261,7 +3593,6 @@ if test $ac_cv_header_stdc = yes; then
:
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3273,9 +3604,9 @@ cat >>conftest.$ac_ext <<_ACEOF
# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#else
# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
#endif
@@ -3286,7 +3617,7 @@ main ()
int i;
for (i = 0; i < 256; i++)
if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
+ || toupper (i) != TOUPPER (i))
exit(2);
exit (0);
}
@@ -3311,7 +3642,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
ac_cv_header_stdc=no
fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
fi
@@ -3336,7 +3667,7 @@ fi
for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
+ inttypes.h stdint.h unistd.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_header" >&5
@@ -3345,7 +3676,6 @@ if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3357,11 +3687,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3374,7 +3714,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_Header=no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -3401,7 +3741,6 @@ else
echo "$as_me:$LINENO: checking minix/config.h usability" >&5
echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3412,11 +3751,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3429,7 +3778,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -3437,7 +3786,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking minix/config.h presence" >&5
echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3455,6 +3803,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -3474,33 +3823,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5
echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -3884,7 +4232,6 @@ if test "${ac_cv_c_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3904,11 +4251,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3921,7 +4278,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_compiler_gnu=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
@@ -3937,7 +4294,6 @@ if test "${ac_cv_prog_cc_g+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3954,11 +4310,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3971,7 +4337,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_prog_cc_g=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
@@ -3998,7 +4364,6 @@ else
ac_cv_prog_cc_stdc=no
ac_save_CC=$CC
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4026,6 +4391,16 @@ static char *f (char * (*g) (char **, int), char **p, ...)
va_end (v);
return s;
}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std1. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
int test (int i, double x);
struct s1 {int (*f) (int a);};
struct s2 {int (*f) (double a);};
@@ -4052,11 +4427,21 @@ do
CC="$ac_save_CC $ac_arg"
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4069,7 +4454,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext
+rm -f conftest.err conftest.$ac_objext
done
rm -f conftest.$ac_ext conftest.$ac_objext
CC=$ac_save_CC
@@ -4097,19 +4482,28 @@ cat >conftest.$ac_ext <<_ACEOF
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
for ac_declaration in \
- ''\
- '#include <stdlib.h>' \
+ '' \
'extern "C" void std::exit (int) throw (); using std::exit;' \
'extern "C" void std::exit (int); using std::exit;' \
'extern "C" void exit (int) throw ();' \
@@ -4117,14 +4511,13 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
'void exit (int);'
do
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <stdlib.h>
$ac_declaration
+#include <stdlib.h>
int
main ()
{
@@ -4135,11 +4528,21 @@ exit (42);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4152,9 +4555,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
continue
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4171,11 +4573,21 @@ exit (42);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4187,7 +4599,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
rm -f conftest*
if test -n "$ac_declaration"; then
@@ -4201,7 +4613,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f 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'
@@ -4249,7 +4661,9 @@ else
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- : > sub/conftst$i.h
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
@@ -4277,9 +4691,14 @@ else
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
- # (even with -Werror). So we grep stderr for any message
- # that says an option was ignored.
- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_CC_dependencies_compiler_type=$depmode
break
fi
@@ -4310,6 +4729,97 @@ else
fi
+# Ralf Wildenhues: With per-target flags we need CC_C_O
+if test "x$CC" != xcc; then
+ echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
+echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5
+echo $ECHO_N "checking whether cc understands -c and -o together... $ECHO_C" >&6
+fi
+set dummy $CC; ac_cc=`echo $2 |
+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+# Make sure it works both with $CC and with simple cc.
+# We do the test twice because some compilers refuse to overwrite an
+# existing .o file with -o, though they will create one.
+ac_try='$CC -c conftest.$ac_ext -o conftest.$ac_objext >&5'
+if { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); };
+then
+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes
+ if test "x$CC" != xcc; then
+ # Test first that cc exists at all.
+ if { ac_try='cc -c conftest.$ac_ext >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_try='cc -c conftest.$ac_ext -o conftest.$ac_objext >&5'
+ if { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); };
+ then
+ # cc works too.
+ :
+ else
+ # cc exists but doesn't like -o.
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+ fi
+ fi
+ fi
+else
+ eval ac_cv_prog_cc_${ac_cc}_c_o=no
+fi
+rm -f conftest*
+
+fi
+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_MINUS_C_MINUS_O 1
+_ACEOF
+
+fi
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -4339,7 +4849,6 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4350,7 +4859,7 @@ cat >>conftest.$ac_ext <<_ACEOF
#else
# include <assert.h>
#endif
- Syntax error
+ Syntax error
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
@@ -4362,6 +4871,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -4382,7 +4892,6 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4400,6 +4909,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -4446,7 +4956,6 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4457,7 +4966,7 @@ cat >>conftest.$ac_ext <<_ACEOF
#else
# include <assert.h>
#endif
- Syntax error
+ Syntax error
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
@@ -4469,6 +4978,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -4489,7 +4999,6 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4507,6 +5016,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -4546,10 +5056,19 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+# HMS: These need to be moved to AM_CPPFLAGS and/or AM_CFLAGS
case "$host" in
*-*-amigaos)
CFLAGS="$CFLAGS -Dfork=vfork -DSYS_AMIGA"
;;
+ *-*-hpux10.*) # at least for hppa2.0-hp-hpux10.20
+ case "$GCC" in
+ yes)
+ ;;
+ *) CFLAGS="$CFLAGS -Wp,-H18816"
+ ;;
+ esac
+ ;;
*-pc-cygwin*)
CFLAGS="$CFLAGS -DSYS_CYGWIN32"
;;
@@ -4565,6 +5084,8927 @@ case "$host" in
LDFLAGS="$LDFLAGS -L/SYSLOG/PUB"
LIBS="$LIBS -lcurses"
;;
+ *-*-solaris*)
+ # see "man standards".
+ # -D_XOPEN_SOURCE=500 is probably OK for c89 and before
+ # -D_XOPEN_SOURCE=600 seems OK for c99
+ #CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500 -D__EXTENSIONS__"
+ CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
+ libxnet=-lxnet
+ ;;
+esac
+
+
+echo "$as_me:$LINENO: checking additional compiler flags" >&5
+echo $ECHO_N "checking additional compiler flags... $ECHO_C" >&6
+if test "${ac_cv_os_cflags+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+case "${host_os}" in
+ irix6* )
+ case "${CC}" in
+ cc )
+ # do not use 64-bit compiler
+ ac_cv_os_cflags="-n32 -mips3 -Wl,-woff,84"
+ ;;
+ esac
+ ;;
+# HMS: am-utils needed this but we don't (apparently)
+# osf[[1-3]]* )
+# # get the right version of struct sockaddr
+# case "${CC}" in
+# cc )
+# ac_cv_os_cflags="-std -D_SOCKADDR_LEN -D_NO_PROTO"
+# ;;
+# * )
+# ac_cv_os_cflags="-D_SOCKADDR_LEN -D_NO_PROTO"
+# ;;
+# esac
+# ;;
+# osf* )
+# # get the right version of struct sockaddr
+# case "${CC}" in
+# cc )
+# ac_cv_os_cflags="-std -D_SOCKADDR_LEN"
+# ;;
+# * )
+# ac_cv_os_cflags="-D_SOCKADDR_LEN"
+# ;;
+# esac
+# ;;
+ aix[1-3]* )
+ ac_cv_os_cflags="" ;;
+ aix4.[0-2]* )
+ # turn on additional headers
+ ac_cv_os_cflags="-D_XOPEN_EXTENDED_SOURCE"
+ ;;
+ aix* )
+ # avoid circular dependencies in yp headers
+ ac_cv_os_cflags="-DHAVE_BAD_HEADERS -D_XOPEN_EXTENDED_SOURCE"
+ ;;
+ OFF-sunos4* )
+ # make sure passing whole structures is handled in gcc
+ case "${CC}" in
+ gcc )
+ ac_cv_os_cflags="-fpcc-struct-return"
+ ;;
+ esac
+ ;;
+ sunos[34]* | solaris1* | solaris2.[0-5]* | sunos5.[0-5]* )
+ ac_cv_os_cflags="" ;;
+ solaris* | sunos* )
+ # turn on 64-bit file offset interface
+ case "${CC}" in
+ * )
+ ac_cv_os_cflags="-D_LARGEFILE64_SOURCE"
+ ;;
+ esac
+ ;;
+ hpux* )
+ # use Ansi compiler on HPUX
+ case "${CC}" in
+ cc )
+ ac_cv_os_cflags="-Ae"
+ ;;
+ esac
+ ;;
+ darwin* | rhapsody* )
+ ac_cv_os_cflags="-D_P1003_1B_VISIBLE"
+ ;;
+ * )
+ ac_cv_os_cflags=""
+ ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_os_cflags" >&5
+echo "${ECHO_T}$ac_cv_os_cflags" >&6
+CFLAGS="$CFLAGS $ac_cv_os_cflags"
+
+
+# NTP has (so far) been relying on leading-edge autogen.
+# Therefore, by default:
+# - use the version we ship with
+# - do not install it
+# - build a static copy (AC_DISABLE_SHARED - done earlier)
+case "${enable_local_libopts+set}" in
+ set) ;;
+ *) enable_local_libopts=yes ;;
+esac
+case "${enable_libopts_install+set}" in
+ set) ;;
+ *) enable_libopts_install=no ;;
+esac
+
+ NEED_LIBOPTS_DIR=''
+
+ LIBOPTS_DIR=libopts
+
+ # Check whether --enable-local-libopts or --disable-local-libopts was given.
+if test "${enable_local_libopts+set}" = set; then
+ enableval="$enable_local_libopts"
+
+ if test x$enableval = xyes ; then
+ { echo "$as_me:$LINENO: Using supplied libopts tearoff" >&5
+echo "$as_me: Using supplied libopts tearoff" >&6;}
+ LIBOPTS_LDADD='$(top_builddir)/libopts/libopts.la'
+ LIBOPTS_CFLAGS='-I$(top_srcdir)/libopts'
+ NEED_LIBOPTS_DIR=true
+ fi
+fi;
+
+ # Check whether --enable-libopts-install or --disable-libopts-install was given.
+if test "${enable_libopts_install+set}" = set; then
+ enableval="$enable_libopts_install"
+
+fi;
+
+
+if test "X${enable_libopts_install}" != Xno; then
+ INSTALL_LIBOPTS_TRUE=
+ INSTALL_LIBOPTS_FALSE='#'
+else
+ INSTALL_LIBOPTS_TRUE='#'
+ INSTALL_LIBOPTS_FALSE=
+fi
+
+
+ if test -z "${NEED_LIBOPTS_DIR}" ; then
+ echo "$as_me:$LINENO: checking whether autoopts-config can be found" >&5
+echo $ECHO_N "checking whether autoopts-config can be found... $ECHO_C" >&6
+
+# Check whether --with-autoopts-config or --without-autoopts-config was given.
+if test "${with_autoopts_config+set}" = set; then
+ withval="$with_autoopts_config"
+ lo_cv_with_autoopts_config=${with_autoopts_config}
+else
+ echo "$as_me:$LINENO: checking whether autoopts-config is specified" >&5
+echo $ECHO_N "checking whether autoopts-config is specified... $ECHO_C" >&6
+if test "${lo_cv_with_autoopts_config+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if autoopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=autoopts-config
+ elif libopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=libopts-config
+ else lo_cv_with_autoopts_config=no ; fi
+fi
+echo "$as_me:$LINENO: result: $lo_cv_with_autoopts_config" >&5
+echo "${ECHO_T}$lo_cv_with_autoopts_config" >&6
+
+fi; # end of AC_ARG_WITH
+
+ if test "${lo_cv_test_autoopts+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test -z "${lo_cv_with_autoopts_config}" \
+ -o X"${lo_cv_with_autoopts_config}" = Xno
+ then
+ if autoopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=autoopts-config
+ elif libopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=libopts-config
+ else lo_cv_with_autoopts_config=false ; fi
+ fi
+ lo_cv_test_autoopts=`
+ ${lo_cv_with_autoopts_config} --libs` 2> /dev/null
+ if test $? -ne 0 -o -z "${lo_cv_test_autoopts}"
+ then lo_cv_test_autoopts=no ; fi
+
+fi
+ # end of CACHE_VAL
+ echo "$as_me:$LINENO: result: ${lo_cv_test_autoopts}" >&5
+echo "${ECHO_T}${lo_cv_test_autoopts}" >&6
+
+ if test "X${lo_cv_test_autoopts}" != Xno
+ then
+ LIBOPTS_LDADD="${lo_cv_test_autoopts}"
+ LIBOPTS_CFLAGS="`${lo_cv_with_autoopts_config} --cflags`"
+ else
+ LIBOPTS_LDADD='$(top_builddir)/libopts/libopts.la'
+ LIBOPTS_CFLAGS='-I$(top_srcdir)/libopts'
+ NEED_LIBOPTS_DIR=true
+ fi
+ fi # end of if test -z "${NEED_LIBOPTS_DIR}"
+
+
+
+if test -n "${NEED_LIBOPTS_DIR}"; then
+ NEED_LIBOPTS_TRUE=
+ NEED_LIBOPTS_FALSE='#'
+else
+ NEED_LIBOPTS_TRUE='#'
+ NEED_LIBOPTS_FALSE=
+fi
+
+
+
+ LIBOPTS_DIR=libopts
+
+ ac_config_files="$ac_config_files libopts/Makefile"
+
+
+
+ if test -n "${NEED_LIBOPTS_DIR}" ; then
+
+
+if test X${INVOKE_LIBOPTS_MACROS_FIRST_done} != Xyes ; then
+ # =================
+ # AC_HEADER_STDC
+ # =================
+ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+ # =================
+ # AC_HEADER_DIRENT
+ # =================
+
+
+
+
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+ as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
+echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <$ac_hdr>
+
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+_ACEOF
+
+ac_header_dirent=$ac_hdr; break
+fi
+
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+ echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
+if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_opendir=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_opendir" = no; then
+ for ac_lib in dir; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6
+if test "$ac_cv_search_opendir" != no; then
+ test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+
+fi
+
+else
+ echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
+if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_opendir=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_opendir" = no; then
+ for ac_lib in x; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6
+if test "$ac_cv_search_opendir" != no; then
+ test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+
+fi
+
+fi
+
+
+ # =================
+ # AC_CHECK_HEADERS
+ # =================
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_header in dlfcn.h errno.h fcntl.h libgen.h memory.h netinet/in.h \
+ setjmp.h sys/mman.h sys/param.h sys/poll.h sys/procset.h sys/select.h \
+ sys/socket.h sys/stropts.h sys/time.h sys/un.h sys/wait.h unistd.h \
+ utime.h sysexits.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ # --------------------------------------------
+ # Verify certain entries from AC_CHECK_HEADERS
+ # --------------------------------------------
+ for f in sys_types sys_mman sys_param sys_stat sys_wait \
+ string errno stdlib memory setjmp
+ do eval as_ac_var=\${ac_cv_header_${f}_h+set}
+ test "${as_ac_var}" = set || \
+ { { echo "$as_me:$LINENO: error: You must have ${f}.h on your system" >&5
+echo "$as_me: error: You must have ${f}.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ done
+
+ # ================================================
+ # AC_CHECK_HEADERS: stdarg.h is present define HAVE_STDARG_H, otherwise
+ # if varargs.h is present define HAVE_VARARGS_H.
+ # ================================================
+
+
+for ac_header in stdarg.h varargs.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have stdarg.h or varargs.h on your system" >&5
+echo "$as_me: error: You must have stdarg.h or varargs.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # ================================================
+ # Similarly for the string.h and strings.h headers
+ # ================================================
+
+
+for ac_header in string.h strings.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have string.h or strings.h on your system" >&5
+echo "$as_me: error: You must have string.h or strings.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # =====================
+ # ...and limits headers
+ # =====================
+
+
+
+for ac_header in limits.h sys/limits.h values.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have one of limits.h, sys/limits.h or values.h" >&5
+echo "$as_me: error: You must have one of limits.h, sys/limits.h or values.h" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # ========================
+ # ...and int types headers
+ # ========================
+
+
+for ac_header in stdint.h inttypes.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ echo "$as_me:$LINENO: checking for int8_t" >&5
+echo $ECHO_N "checking for int8_t... $ECHO_C" >&6
+if test "${ac_cv_type_int8_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int8_t *) 0)
+ return 0;
+if (sizeof (int8_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int8_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int8_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5
+echo "${ECHO_T}$ac_cv_type_int8_t" >&6
+if test $ac_cv_type_int8_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT8_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint8_t" >&5
+echo $ECHO_N "checking for uint8_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint8_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint8_t *) 0)
+ return 0;
+if (sizeof (uint8_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint8_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint8_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint8_t" >&6
+if test $ac_cv_type_uint8_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT8_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for int16_t" >&5
+echo $ECHO_N "checking for int16_t... $ECHO_C" >&6
+if test "${ac_cv_type_int16_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int16_t *) 0)
+ return 0;
+if (sizeof (int16_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int16_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int16_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5
+echo "${ECHO_T}$ac_cv_type_int16_t" >&6
+if test $ac_cv_type_int16_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT16_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint16_t" >&5
+echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint16_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint16_t *) 0)
+ return 0;
+if (sizeof (uint16_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint16_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint16_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint16_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint16_t" >&6
+if test $ac_cv_type_uint16_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT16_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for int32_t" >&5
+echo $ECHO_N "checking for int32_t... $ECHO_C" >&6
+if test "${ac_cv_type_int32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int32_t *) 0)
+ return 0;
+if (sizeof (int32_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int32_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int32_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5
+echo "${ECHO_T}$ac_cv_type_int32_t" >&6
+if test $ac_cv_type_int32_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT32_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint32_t" >&5
+echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint32_t *) 0)
+ return 0;
+if (sizeof (uint32_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint32_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint32_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint32_t" >&6
+if test $ac_cv_type_uint32_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT32_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for intptr_t" >&5
+echo $ECHO_N "checking for intptr_t... $ECHO_C" >&6
+if test "${ac_cv_type_intptr_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((intptr_t *) 0)
+ return 0;
+if (sizeof (intptr_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_intptr_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_intptr_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_intptr_t" >&5
+echo "${ECHO_T}$ac_cv_type_intptr_t" >&6
+if test $ac_cv_type_intptr_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INTPTR_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint_t" >&5
+echo $ECHO_N "checking for uint_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint_t *) 0)
+ return 0;
+if (sizeof (uint_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint_t" >&6
+if test $ac_cv_type_uint_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT_T 1
+_ACEOF
+
+
+fi
+
+
+ # ====================
+ # uintptr type & sizes
+ # ====================
+ echo "$as_me:$LINENO: checking for uintptr_t" >&5
+echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6
+if test "${ac_cv_type_uintptr_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uintptr_t *) 0)
+ return 0;
+if (sizeof (uintptr_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uintptr_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uintptr_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5
+echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6
+if test $ac_cv_type_uintptr_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINTPTR_T 1
+_ACEOF
+
+
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define uintptr_t unsigned long
+_ACEOF
+
+fi
+
+ echo "$as_me:$LINENO: checking for char*" >&5
+echo $ECHO_N "checking for char*... $ECHO_C" >&6
+if test "${ac_cv_type_charp+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((char* *) 0)
+ return 0;
+if (sizeof (char*))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_charp=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_charp=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_charp" >&5
+echo "${ECHO_T}$ac_cv_type_charp" >&6
+
+echo "$as_me:$LINENO: checking size of char*" >&5
+echo $ECHO_N "checking size of char*... $ECHO_C" >&6
+if test "${ac_cv_sizeof_charp+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_charp" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_charp=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (char*)); }
+unsigned long ulongval () { return (long) (sizeof (char*)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (char*))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (char*))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (char*))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_charp=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_charp=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_charp" >&5
+echo "${ECHO_T}$ac_cv_sizeof_charp" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_CHARP $ac_cv_sizeof_charp
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for int" >&5
+echo $ECHO_N "checking for int... $ECHO_C" >&6
+if test "${ac_cv_type_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int *) 0)
+ return 0;
+if (sizeof (int))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
+echo "${ECHO_T}$ac_cv_type_int" >&6
+
+echo "$as_me:$LINENO: checking size of int" >&5
+echo $ECHO_N "checking size of int... $ECHO_C" >&6
+if test "${ac_cv_sizeof_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_int" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_int=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (int)); }
+unsigned long ulongval () { return (long) (sizeof (int)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (int))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_int=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_int=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
+echo "${ECHO_T}$ac_cv_sizeof_int" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for long" >&5
+echo $ECHO_N "checking for long... $ECHO_C" >&6
+if test "${ac_cv_type_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((long *) 0)
+ return 0;
+if (sizeof (long))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_long=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_long=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
+echo "${ECHO_T}$ac_cv_type_long" >&6
+
+echo "$as_me:$LINENO: checking size of long" >&5
+echo $ECHO_N "checking size of long... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_long" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (long)); }
+unsigned long ulongval () { return (long) (sizeof (long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (long))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_long=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_long=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for short" >&5
+echo $ECHO_N "checking for short... $ECHO_C" >&6
+if test "${ac_cv_type_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((short *) 0)
+ return 0;
+if (sizeof (short))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_short=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_short=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
+echo "${ECHO_T}$ac_cv_type_short" >&6
+
+echo "$as_me:$LINENO: checking size of short" >&5
+echo $ECHO_N "checking size of short... $ECHO_C" >&6
+if test "${ac_cv_sizeof_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_short" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_short=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (short)); }
+unsigned long ulongval () { return (long) (sizeof (short)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (short))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_short=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_short=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
+echo "${ECHO_T}$ac_cv_sizeof_short" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+_ACEOF
+
+
+
+ # ----------------------------------------------------------------------
+ # AC_CHECK_LIB for SVR4 libgen, and use it if it defines pathfind.
+ # ----------------------------------------------------------------------
+
+echo "$as_me:$LINENO: checking for pathfind in -lgen" >&5
+echo $ECHO_N "checking for pathfind in -lgen... $ECHO_C" >&6
+if test "${ac_cv_lib_gen_pathfind+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgen $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char pathfind ();
+int
+main ()
+{
+pathfind ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_gen_pathfind=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_gen_pathfind=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_gen_pathfind" >&5
+echo "${ECHO_T}$ac_cv_lib_gen_pathfind" >&6
+if test $ac_cv_lib_gen_pathfind = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBGEN 1
+_ACEOF
+
+ LIBS="-lgen $LIBS"
+
+fi
+
+
+for ac_func in vprintf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+echo "$as_me:$LINENO: checking for _doprnt" >&5
+echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6
+if test "${ac_cv_func__doprnt+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define _doprnt to an innocuous variant, in case <limits.h> declares _doprnt.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define _doprnt innocuous__doprnt
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char _doprnt (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef _doprnt
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char _doprnt ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub__doprnt) || defined (__stub____doprnt)
+choke me
+#else
+char (*f) () = _doprnt;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != _doprnt;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func__doprnt=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func__doprnt=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5
+echo "${ECHO_T}$ac_cv_func__doprnt" >&6
+if test $ac_cv_func__doprnt = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DOPRNT 1
+_ACEOF
+
+fi
+
+fi
+done
+
+
+
+
+
+
+
+
+for ac_func in mmap canonicalize_file_name snprintf strdup strchr strrchr
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ INVOKE_LIBOPTS_MACROS_FIRST_done=yes
+fi
+ # Check to see if a reg expr header is specified.
+
+
+# Check whether --with-regex-header or --without-regex-header was given.
+if test "${with_regex_header+set}" = set; then
+ withval="$with_regex_header"
+ libopts_cv_with_regex_header=${with_regex_header}
+else
+ echo "$as_me:$LINENO: checking whether a reg expr header is specified" >&5
+echo $ECHO_N "checking whether a reg expr header is specified... $ECHO_C" >&6
+if test "${libopts_cv_with_regex_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ libopts_cv_with_regex_header=no
+fi
+echo "$as_me:$LINENO: result: $libopts_cv_with_regex_header" >&5
+echo "${ECHO_T}$libopts_cv_with_regex_header" >&6
+
+fi; # end of AC_ARG_WITH
+
+ if test "X${libopts_cv_with_regex_header}" != Xno
+ then
+ cat >>confdefs.h <<_ACEOF
+#define REGEX_HEADER <${libopts_cv_with_regex_header}>
+_ACEOF
+
+ else
+
+cat >>confdefs.h <<\_ACEOF
+#define REGEX_HEADER <regex.h>
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if a working libregex can be found.
+
+
+# Check whether --with-libregex or --without-libregex was given.
+if test "${with_libregex+set}" = set; then
+ withval="$with_libregex"
+ libopts_cv_with_libregex_root=${with_libregex}
+else
+ echo "$as_me:$LINENO: checking whether with-libregex was specified" >&5
+echo $ECHO_N "checking whether with-libregex was specified... $ECHO_C" >&6
+if test "${libopts_cv_with_libregex_root+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ libopts_cv_with_libregex_root=no
+fi
+echo "$as_me:$LINENO: result: $libopts_cv_with_libregex_root" >&5
+echo "${ECHO_T}$libopts_cv_with_libregex_root" >&6
+
+fi; # end of AC_ARG_WITH libregex
+
+ if test "${with_libguile+set}" = set && \
+ test "${withval}" = no
+ then ## disabled by request
+ libopts_cv_with_libregex_root=no
+ libopts_cv_with_libregex_cflags=no
+ libopts_cv_with_libregex_libs=no
+ else
+
+
+# Check whether --with-libregex-cflags or --without-libregex-cflags was given.
+if test "${with_libregex_cflags+set}" = set; then
+ withval="$with_libregex_cflags"
+ libopts_cv_with_libregex_cflags=${with_regex_cflags}
+else
+ echo "$as_me:$LINENO: checking whether with-libregex-cflags was specified" >&5
+echo $ECHO_N "checking whether with-libregex-cflags was specified... $ECHO_C" >&6
+if test "${libopts_cv_with_libregex_cflags+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ libopts_cv_with_libregex_cflags=no
+fi
+echo "$as_me:$LINENO: result: $libopts_cv_with_libregex_cflags" >&5
+echo "${ECHO_T}$libopts_cv_with_libregex_cflags" >&6
+
+fi; # end of AC_ARG_WITH libregex-cflags
+
+
+# Check whether --with-libregex-libs or --without-libregex-libs was given.
+if test "${with_libregex_libs+set}" = set; then
+ withval="$with_libregex_libs"
+ libopts_cv_with_libregex_libs=${with_regex_libs}
+else
+ echo "$as_me:$LINENO: checking whether with-libregex-libs was specified" >&5
+echo $ECHO_N "checking whether with-libregex-libs was specified... $ECHO_C" >&6
+if test "${libopts_cv_with_libregex_libs+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ libopts_cv_with_libregex_libs=no
+fi
+echo "$as_me:$LINENO: result: $libopts_cv_with_libregex_libs" >&5
+echo "${ECHO_T}$libopts_cv_with_libregex_libs" >&6
+
+fi; # end of AC_ARG_WITH libregex-libs
+
+ case "X${libopts_cv_with_libregex_cflags}" in
+ Xyes|Xno|X )
+ case "X${libopts_cv_with_libregex_root}" in
+ Xyes|Xno|X ) libopts_cv_with_libregex_cflags=no ;;
+ * ) libopts_cv_with_libregex_cflags=-I${libopts_cv_with_libregex_root}/include ;;
+ esac
+ esac
+ case "X${libopts_cv_with_libregex_libs}" in
+ Xyes|Xno|X )
+ case "X${libopts_cv_with_libregex_root}" in
+ Xyes|Xno|X ) libopts_cv_with_libregex_libs=no ;;
+ * ) libopts_cv_with_libregex_libs="-L${libopts_cv_with_libregex_root}/lib -lregex";;
+ esac
+ esac
+ libopts_save_CPPFLAGS="${CPPFLAGS}"
+ libopts_save_LIBS="${LIBS}"
+ fi ## disabled by request
+
+ case "X${libopts_cv_with_libregex_cflags}" in
+ Xyes|Xno|X )
+ libopts_cv_with_libregex_cflags="" ;;
+ * ) CPPFLAGS="${CPPFLAGS} ${libopts_cv_with_libregex_cflags}" ;;
+ esac
+ case "X${libopts_cv_with_libregex_libs}" in
+ Xyes|Xno|X )
+ libopts_cv_with_libregex_libs="" ;;
+ * )
+ LIBS="${LIBS} ${libopts_cv_with_libregex_libs}" ;;
+ esac
+ LIBREGEX_CFLAGS=""
+ LIBREGEX_LIBS=""
+ echo "$as_me:$LINENO: checking whether libregex functions properly" >&5
+echo $ECHO_N "checking whether libregex functions properly... $ECHO_C" >&6
+ if test "${libopts_cv_with_libregex+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_with_libregex=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include REGEX_HEADER
+static regex_t re;
+void comp_re( char const* pzPat ) {
+ int res = regcomp( &re, pzPat, REG_EXTENDED|REG_ICASE|REG_NEWLINE );
+ if (res == 0) return;
+ exit( res ); }
+int main() {
+ regmatch_t m[2];
+ comp_re( "^.*\$" );
+ comp_re( "()|no.*" );
+ comp_re( "." );
+ if (regexec( &re, "X", 2, m, 0 ) != 0) return 1;
+ if ((m[0].rm_so != 0) || (m[0].rm_eo != 1)) {
+ fputs( "error: regex -->.<-- did not match\n", stderr );
+ return 1;
+ }
+ return 0; }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_with_libregex=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_with_libregex=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of AC_TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_with_libregex
+ echo "$as_me:$LINENO: result: ${libopts_cv_with_libregex}" >&5
+echo "${ECHO_T}${libopts_cv_with_libregex}" >&6
+
+ if test "X${libopts_cv_with_libregex}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define WITH_LIBREGEX 1
+_ACEOF
+
+ else
+ CPPFLAGS="${libopts_save_CPPFLAGS}"
+ LIBS="${libopts_save_LIBS}"
+ fi
+
+
+
+ # Check to see if pathfind(3) works.
+
+ echo "$as_me:$LINENO: checking whether pathfind(3) works" >&5
+echo $ECHO_N "checking whether pathfind(3) works... $ECHO_C" >&6
+ if test "${libopts_cv_run_pathfind+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_run_pathfind=no
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+#include <stdlib.h>
+int main (int argc, char** argv) {
+ char* pz = pathfind( getenv( "PATH" ), "sh", "x" );
+ return (pz == 0) ? 1 : 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_run_pathfind=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_run_pathfind=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_run_pathfind
+ echo "$as_me:$LINENO: result: ${libopts_cv_run_pathfind}" >&5
+echo "${ECHO_T}${libopts_cv_run_pathfind}" >&6
+
+ if test "X${libopts_cv_run_pathfind}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PATHFIND 1
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if /dev/zero is readable device.
+
+ echo "$as_me:$LINENO: checking whether /dev/zero is readable device" >&5
+echo $ECHO_N "checking whether /dev/zero is readable device... $ECHO_C" >&6
+ if test "${libopts_cv_test_dev_zero+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ libopts_cv_test_dev_zero=`exec 2> /dev/null
+dzero=\`ls -lL /dev/zero | egrep ^c......r\`
+test -z "${dzero}" && exit 1
+echo ${dzero}`
+ if test $? -ne 0
+ then libopts_cv_test_dev_zero=no
+ elif test -z "$libopts_cv_test_dev_zero"
+ then libopts_cv_test_dev_zero=no
+ fi
+
+fi
+ # end of CACHE_VAL of libopts_cv_test_dev_zero
+ echo "$as_me:$LINENO: result: ${libopts_cv_test_dev_zero}" >&5
+echo "${ECHO_T}${libopts_cv_test_dev_zero}" >&6
+
+ if test "X${libopts_cv_test_dev_zero}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DEV_ZERO 1
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if we have a functional realpath(3C).
+
+ echo "$as_me:$LINENO: checking whether we have a functional realpath(3C)" >&5
+echo $ECHO_N "checking whether we have a functional realpath(3C)... $ECHO_C" >&6
+ if test "${libopts_cv_run_realpath+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_run_realpath=no
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <limits.h>
+#include <stdlib.h>
+int main (int argc, char** argv) {
+#ifndef PATH_MAX
+choke me!!
+#else
+ char zPath[PATH_MAX+1];
+#endif
+ char *pz = realpath(argv[0], zPath);
+ return (pz == zPath) ? 0 : 1;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_run_realpath=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_run_realpath=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_run_realpath
+ echo "$as_me:$LINENO: result: ${libopts_cv_run_realpath}" >&5
+echo "${ECHO_T}${libopts_cv_run_realpath}" >&6
+
+ if test "X${libopts_cv_run_realpath}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_REALPATH 1
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if strftime() works.
+
+ echo "$as_me:$LINENO: checking whether strftime() works" >&5
+echo $ECHO_N "checking whether strftime() works... $ECHO_C" >&6
+ if test "${libopts_cv_run_strftime+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_run_strftime=no
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+#include <string.h>
+char t_buf[ 64 ];
+int main() {
+ static char const z[] = "Thursday Aug 28 240";
+ struct tm tm;
+ tm.tm_sec = 36; /* seconds after the minute [0, 61] */
+ tm.tm_min = 44; /* minutes after the hour [0, 59] */
+ tm.tm_hour = 12; /* hour since midnight [0, 23] */
+ tm.tm_mday = 28; /* day of the month [1, 31] */
+ tm.tm_mon = 7; /* months since January [0, 11] */
+ tm.tm_year = 86; /* years since 1900 */
+ tm.tm_wday = 4; /* days since Sunday [0, 6] */
+ tm.tm_yday = 239; /* days since January 1 [0, 365] */
+ tm.tm_isdst = 1; /* flag for daylight savings time */
+ strftime( t_buf, sizeof( t_buf ), "%A %b %d %j", &tm );
+ return (strcmp( t_buf, z ) != 0); }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_run_strftime=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_run_strftime=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_run_strftime
+ echo "$as_me:$LINENO: result: ${libopts_cv_run_strftime}" >&5
+echo "${ECHO_T}${libopts_cv_run_strftime}" >&6
+
+ if test "X${libopts_cv_run_strftime}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRFTIME 1
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if fopen accepts "b" mode.
+
+ echo "$as_me:$LINENO: checking whether fopen accepts \"b\" mode" >&5
+echo $ECHO_N "checking whether fopen accepts \"b\" mode... $ECHO_C" >&6
+ if test "${libopts_cv_run_fopen_binary+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_run_fopen_binary=no
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+int main (int argc, char** argv) {
+FILE* fp = fopen("conftest.$ac_ext", "rb");
+return (fp == NULL) ? 1 : fclose(fp); }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_run_fopen_binary=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_run_fopen_binary=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_run_fopen_binary
+ echo "$as_me:$LINENO: result: ${libopts_cv_run_fopen_binary}" >&5
+echo "${ECHO_T}${libopts_cv_run_fopen_binary}" >&6
+
+ if test "X${libopts_cv_run_fopen_binary}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define FOPEN_BINARY_FLAG "b"
+_ACEOF
+
+ else
+
+cat >>confdefs.h <<\_ACEOF
+#define FOPEN_BINARY_FLAG ""
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if fopen accepts "t" mode.
+
+ echo "$as_me:$LINENO: checking whether fopen accepts \"t\" mode" >&5
+echo $ECHO_N "checking whether fopen accepts \"t\" mode... $ECHO_C" >&6
+ if test "${libopts_cv_run_fopen_text+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_run_fopen_text=no
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+int main (int argc, char** argv) {
+FILE* fp = fopen("conftest.$ac_ext", "rt");
+return (fp == NULL) ? 1 : fclose(fp); }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_run_fopen_text=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_run_fopen_text=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_run_fopen_text
+ echo "$as_me:$LINENO: result: ${libopts_cv_run_fopen_text}" >&5
+echo "${ECHO_T}${libopts_cv_run_fopen_text}" >&6
+
+ if test "X${libopts_cv_run_fopen_text}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define FOPEN_TEXT_FLAG "t"
+_ACEOF
+
+ else
+
+cat >>confdefs.h <<\_ACEOF
+#define FOPEN_TEXT_FLAG ""
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if not wanting optional option args.
+
+ # Check whether --enable-optional-args or --disable-optional-args was given.
+if test "${enable_optional_args+set}" = set; then
+ enableval="$enable_optional_args"
+ libopts_cv_enable_optional_args=${enable_optional_args}
+else
+ echo "$as_me:$LINENO: checking whether not wanting optional option args" >&5
+echo $ECHO_N "checking whether not wanting optional option args... $ECHO_C" >&6
+if test "${libopts_cv_enable_optional_args+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ libopts_cv_enable_optional_args=yes
+fi
+echo "$as_me:$LINENO: result: $libopts_cv_enable_optional_args" >&5
+echo "${ECHO_T}$libopts_cv_enable_optional_args" >&6
+
+fi; # end of AC_ARG_ENABLE
+
+ if test "X${libopts_cv_enable_optional_args}" = Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_OPTIONAL_OPT_ARGS 1
+_ACEOF
+
+ fi
+
+
+
+
+ else
+
+if test X${INVOKE_LIBOPTS_MACROS_FIRST_done} != Xyes ; then
+ # =================
+ # AC_HEADER_STDC
+ # =================
+ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+ # =================
+ # AC_HEADER_DIRENT
+ # =================
+
+
+
+
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+ as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
+echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <$ac_hdr>
+
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+_ACEOF
+
+ac_header_dirent=$ac_hdr; break
+fi
+
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+ echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
+if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_opendir=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_opendir" = no; then
+ for ac_lib in dir; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6
+if test "$ac_cv_search_opendir" != no; then
+ test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+
+fi
+
+else
+ echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
+if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_opendir=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_opendir" = no; then
+ for ac_lib in x; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6
+if test "$ac_cv_search_opendir" != no; then
+ test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+
+fi
+
+fi
+
+
+ # =================
+ # AC_CHECK_HEADERS
+ # =================
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_header in dlfcn.h errno.h fcntl.h libgen.h memory.h netinet/in.h \
+ setjmp.h sys/mman.h sys/param.h sys/poll.h sys/procset.h sys/select.h \
+ sys/socket.h sys/stropts.h sys/time.h sys/un.h sys/wait.h unistd.h \
+ utime.h sysexits.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ # --------------------------------------------
+ # Verify certain entries from AC_CHECK_HEADERS
+ # --------------------------------------------
+ for f in sys_types sys_mman sys_param sys_stat sys_wait \
+ string errno stdlib memory setjmp
+ do eval as_ac_var=\${ac_cv_header_${f}_h+set}
+ test "${as_ac_var}" = set || \
+ { { echo "$as_me:$LINENO: error: You must have ${f}.h on your system" >&5
+echo "$as_me: error: You must have ${f}.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ done
+
+ # ================================================
+ # AC_CHECK_HEADERS: stdarg.h is present define HAVE_STDARG_H, otherwise
+ # if varargs.h is present define HAVE_VARARGS_H.
+ # ================================================
+
+
+for ac_header in stdarg.h varargs.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have stdarg.h or varargs.h on your system" >&5
+echo "$as_me: error: You must have stdarg.h or varargs.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # ================================================
+ # Similarly for the string.h and strings.h headers
+ # ================================================
+
+
+for ac_header in string.h strings.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have string.h or strings.h on your system" >&5
+echo "$as_me: error: You must have string.h or strings.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # =====================
+ # ...and limits headers
+ # =====================
+
+
+
+for ac_header in limits.h sys/limits.h values.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have one of limits.h, sys/limits.h or values.h" >&5
+echo "$as_me: error: You must have one of limits.h, sys/limits.h or values.h" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # ========================
+ # ...and int types headers
+ # ========================
+
+
+for ac_header in stdint.h inttypes.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ echo "$as_me:$LINENO: checking for int8_t" >&5
+echo $ECHO_N "checking for int8_t... $ECHO_C" >&6
+if test "${ac_cv_type_int8_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int8_t *) 0)
+ return 0;
+if (sizeof (int8_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int8_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int8_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5
+echo "${ECHO_T}$ac_cv_type_int8_t" >&6
+if test $ac_cv_type_int8_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT8_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint8_t" >&5
+echo $ECHO_N "checking for uint8_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint8_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint8_t *) 0)
+ return 0;
+if (sizeof (uint8_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint8_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint8_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint8_t" >&6
+if test $ac_cv_type_uint8_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT8_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for int16_t" >&5
+echo $ECHO_N "checking for int16_t... $ECHO_C" >&6
+if test "${ac_cv_type_int16_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int16_t *) 0)
+ return 0;
+if (sizeof (int16_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int16_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int16_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5
+echo "${ECHO_T}$ac_cv_type_int16_t" >&6
+if test $ac_cv_type_int16_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT16_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint16_t" >&5
+echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint16_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint16_t *) 0)
+ return 0;
+if (sizeof (uint16_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint16_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint16_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint16_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint16_t" >&6
+if test $ac_cv_type_uint16_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT16_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for int32_t" >&5
+echo $ECHO_N "checking for int32_t... $ECHO_C" >&6
+if test "${ac_cv_type_int32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int32_t *) 0)
+ return 0;
+if (sizeof (int32_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int32_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int32_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5
+echo "${ECHO_T}$ac_cv_type_int32_t" >&6
+if test $ac_cv_type_int32_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT32_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint32_t" >&5
+echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint32_t *) 0)
+ return 0;
+if (sizeof (uint32_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint32_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint32_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint32_t" >&6
+if test $ac_cv_type_uint32_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT32_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for intptr_t" >&5
+echo $ECHO_N "checking for intptr_t... $ECHO_C" >&6
+if test "${ac_cv_type_intptr_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((intptr_t *) 0)
+ return 0;
+if (sizeof (intptr_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_intptr_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_intptr_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_intptr_t" >&5
+echo "${ECHO_T}$ac_cv_type_intptr_t" >&6
+if test $ac_cv_type_intptr_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INTPTR_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint_t" >&5
+echo $ECHO_N "checking for uint_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint_t *) 0)
+ return 0;
+if (sizeof (uint_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint_t" >&6
+if test $ac_cv_type_uint_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT_T 1
+_ACEOF
+
+
+fi
+
+
+ # ====================
+ # uintptr type & sizes
+ # ====================
+ echo "$as_me:$LINENO: checking for uintptr_t" >&5
+echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6
+if test "${ac_cv_type_uintptr_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uintptr_t *) 0)
+ return 0;
+if (sizeof (uintptr_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uintptr_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uintptr_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5
+echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6
+if test $ac_cv_type_uintptr_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINTPTR_T 1
+_ACEOF
+
+
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define uintptr_t unsigned long
+_ACEOF
+
+fi
+
+ echo "$as_me:$LINENO: checking for char*" >&5
+echo $ECHO_N "checking for char*... $ECHO_C" >&6
+if test "${ac_cv_type_charp+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((char* *) 0)
+ return 0;
+if (sizeof (char*))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_charp=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_charp=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_charp" >&5
+echo "${ECHO_T}$ac_cv_type_charp" >&6
+
+echo "$as_me:$LINENO: checking size of char*" >&5
+echo $ECHO_N "checking size of char*... $ECHO_C" >&6
+if test "${ac_cv_sizeof_charp+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_charp" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_charp=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (char*)); }
+unsigned long ulongval () { return (long) (sizeof (char*)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (char*))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (char*))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (char*))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_charp=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_charp=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_charp" >&5
+echo "${ECHO_T}$ac_cv_sizeof_charp" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_CHARP $ac_cv_sizeof_charp
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for int" >&5
+echo $ECHO_N "checking for int... $ECHO_C" >&6
+if test "${ac_cv_type_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int *) 0)
+ return 0;
+if (sizeof (int))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
+echo "${ECHO_T}$ac_cv_type_int" >&6
+
+echo "$as_me:$LINENO: checking size of int" >&5
+echo $ECHO_N "checking size of int... $ECHO_C" >&6
+if test "${ac_cv_sizeof_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_int" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_int=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (int)); }
+unsigned long ulongval () { return (long) (sizeof (int)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (int))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_int=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_int=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
+echo "${ECHO_T}$ac_cv_sizeof_int" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for long" >&5
+echo $ECHO_N "checking for long... $ECHO_C" >&6
+if test "${ac_cv_type_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((long *) 0)
+ return 0;
+if (sizeof (long))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_long=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_long=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
+echo "${ECHO_T}$ac_cv_type_long" >&6
+
+echo "$as_me:$LINENO: checking size of long" >&5
+echo $ECHO_N "checking size of long... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_long" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (long)); }
+unsigned long ulongval () { return (long) (sizeof (long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (long))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_long=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_long=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for short" >&5
+echo $ECHO_N "checking for short... $ECHO_C" >&6
+if test "${ac_cv_type_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((short *) 0)
+ return 0;
+if (sizeof (short))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_short=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_short=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
+echo "${ECHO_T}$ac_cv_type_short" >&6
+
+echo "$as_me:$LINENO: checking size of short" >&5
+echo $ECHO_N "checking size of short... $ECHO_C" >&6
+if test "${ac_cv_sizeof_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_short" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_short=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (short)); }
+unsigned long ulongval () { return (long) (sizeof (short)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (short))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_short=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_short=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
+echo "${ECHO_T}$ac_cv_sizeof_short" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+_ACEOF
+
+
+
+ # ----------------------------------------------------------------------
+ # AC_CHECK_LIB for SVR4 libgen, and use it if it defines pathfind.
+ # ----------------------------------------------------------------------
+
+echo "$as_me:$LINENO: checking for pathfind in -lgen" >&5
+echo $ECHO_N "checking for pathfind in -lgen... $ECHO_C" >&6
+if test "${ac_cv_lib_gen_pathfind+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgen $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char pathfind ();
+int
+main ()
+{
+pathfind ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_gen_pathfind=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_gen_pathfind=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_gen_pathfind" >&5
+echo "${ECHO_T}$ac_cv_lib_gen_pathfind" >&6
+if test $ac_cv_lib_gen_pathfind = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBGEN 1
+_ACEOF
+
+ LIBS="-lgen $LIBS"
+
+fi
+
+
+for ac_func in vprintf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+echo "$as_me:$LINENO: checking for _doprnt" >&5
+echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6
+if test "${ac_cv_func__doprnt+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define _doprnt to an innocuous variant, in case <limits.h> declares _doprnt.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define _doprnt innocuous__doprnt
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char _doprnt (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef _doprnt
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char _doprnt ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub__doprnt) || defined (__stub____doprnt)
+choke me
+#else
+char (*f) () = _doprnt;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != _doprnt;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func__doprnt=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func__doprnt=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5
+echo "${ECHO_T}$ac_cv_func__doprnt" >&6
+if test $ac_cv_func__doprnt = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DOPRNT 1
+_ACEOF
+
+fi
+
+fi
+done
+
+
+
+
+
+
+
+
+for ac_func in mmap canonicalize_file_name snprintf strdup strchr strrchr
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ INVOKE_LIBOPTS_MACROS_FIRST_done=yes
+fi
+ fi
+# end of AC_DEFUN of LIBOPTS_CHECK
+
+
+echo "$as_me:$LINENO: checking if $CC can handle #warning" >&5
+echo $ECHO_N "checking if $CC can handle #warning... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#warning foo
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_cpp_warning=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_cpp_warning=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_cv_cpp_warning" >&5
+echo "${ECHO_T}$ac_cv_cpp_warning" >&6
+
+case "$ac_cv_cpp_warning" in
+ no)
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_OPTION_NAME_WARNINGS 1
+_ACEOF
+
+ echo "$as_me:$LINENO: result: Enabling NO_OPTION_NAME_WARNINGS as #warning does not work" >&5
+echo "${ECHO_T}Enabling NO_OPTION_NAME_WARNINGS as #warning does not work" >&6
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking for bin subdirectory" >&5
+echo $ECHO_N "checking for bin subdirectory... $ECHO_C" >&6
+
+# Check whether --with-binsubdir or --without-binsubdir was given.
+if test "${with_binsubdir+set}" = set; then
+ withval="$with_binsubdir"
+ use_binsubdir="$withval"
+else
+ use_binsubdir="bin"
+fi;
+
+case "$use_binsubdir" in
+ bin)
+ ;;
+ sbin)
+ ;;
+ *)
+ { { echo "$as_me:$LINENO: error: <$use_binsubdir> is illegal - must be \"bin\" or \"sbin\"" >&5
+echo "$as_me: error: <$use_binsubdir> is illegal - must be \"bin\" or \"sbin\"" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+esac
+echo "$as_me:$LINENO: result: $use_binsubdir" >&5
+echo "${ECHO_T}$use_binsubdir" >&6
+BINSUBDIR=$use_binsubdir
+
+
+echo "$as_me:$LINENO: checking if we want to use arlib" >&5
+echo $ECHO_N "checking if we want to use arlib... $ECHO_C" >&6
+
+# Check whether --with-arlib or --without-arlib was given.
+if test "${with_arlib+set}" = set; then
+ withval="$with_arlib"
+ ans=$withval
+else
+ ans=no
+fi;
+echo "$as_me:$LINENO: result: $ans" >&5
+echo "${ECHO_T}$ans" >&6
+
+if test -d $srcdir/arlib
+then
+ case "$ans" in
+ yes)
+ ARLIB_DIR=arlib
+
+
+subdirs="$subdirs arlib"
+
+ ;;
+ esac
+fi
+
+
+
+# Check whether --with-rpath or --without-rpath was given.
+if test "${with_rpath+set}" = set; then
+ withval="$with_rpath"
+ ans=$withval
+else
+ ans=x
+fi;
+case "$ans" in
+ no)
+ need_dash_r=
+ ;;
+ yes)
+ need_dash_r=1
+ ;;
+esac
+# HMS: Why isn't this $build?
+# Well, that depends on if we need this for the build toolchain or
+# for info in the host executable...
+# I still have no idea which way this should go, but nobody has complained.
+case "$host" in
+ *-*-netbsd*)
+ case "$need_dash_r" in
+ no) ;;
+ *) need_dash_r=1
+ ;;
+ esac
+ ;;
+ *-*-solaris*)
+ case "$need_dash_r" in
+ no) ;;
+ *) need_dash_r=1
+ ;;
+ esac
+ ;;
esac
echo "$as_me:$LINENO: checking if we should use /dev/clockctl" >&5
@@ -4577,7 +14017,7 @@ if test "${enable_clockctl+set}" = set; then
enableval="$enable_clockctl"
ans=$enableval
else
- case "$target" in
+ case "$host" in
*-*-netbsd*)
ans=yes
;;
@@ -4608,7 +14048,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4619,11 +14058,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4636,7 +14085,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -4644,7 +14093,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4662,6 +14110,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -4681,33 +14130,209 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
;;
- no:yes )
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+case "$ac_clockctl$ac_cv_header_sys_clockctl_h" in
+ yesyes)
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DROPROOT
+_ACEOF
+
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if we have linux capabilities (libcap)" >&5
+echo $ECHO_N "checking if we have linux capabilities (libcap)... $ECHO_C" >&6
+if test "${ac_linuxcaps+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Check whether --enable-linuxcaps or --disable-linuxcaps was given.
+if test "${enable_linuxcaps+set}" = set; then
+ enableval="$enable_linuxcaps"
+ ans=$enableval
+else
+ ans=no
+fi;
+ac_linuxcaps=$ans
+fi
+echo "$as_me:$LINENO: result: $ac_linuxcaps" >&5
+echo "${ECHO_T}$ac_linuxcaps" >&6
+# End of AC_CACHE_CHECK for linuxcaps
+
+for ac_header in sys/capability.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -4718,7 +14343,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -4733,13 +14358,169 @@ fi
done
-case "$ac_clockctl$ac_cv_header_sys_clockctl_h" in
- yesyes)
+
+for ac_header in sys/prctl.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+case "$ac_linuxcaps$ac_cv_header_sys_capability_h$ac_cv_header_sys_prctl_h" in
+ yesyesyes)
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LINUX_CAPABILITIES
+_ACEOF
+
cat >>confdefs.h <<\_ACEOF
-#define HAVE_CLOCKCTL
+#define HAVE_DROPROOT
_ACEOF
+ LIBS="$LIBS -lcap"
;;
esac
@@ -4750,8 +14531,8 @@ case "$build" in
*-*-vxworks*)
# Quick and dirty sanity check
case "$VX_KERNEL" in
- '') { { echo "$as_me:$LINENO: error: Please follow the directions in html/vxworks.html!" >&5
-echo "$as_me: error: Please follow the directions in html/vxworks.html!" >&2;}
+ '') { { echo "$as_me:$LINENO: error: Please follow the directions in html/build/hints/vxworks.html!" >&5
+echo "$as_me: error: Please follow the directions in html/build/hints/vxworks.html!" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
@@ -4803,7 +14584,7 @@ done
echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
@@ -4840,6 +14621,8 @@ case "$GCC" in
CFLAGS="$CFLAGS -Wcast-qual"
# CFLAGS="$CFLAGS -Wconversion"
# CFLAGS="$CFLAGS -Werror"
+ # CFLAGS="$CFLAGS -Wextra"
+ # CFLAGS="$CFLAGS -Wfloat-equal"
CFLAGS="$CFLAGS -Wmissing-prototypes"
CFLAGS="$CFLAGS -Wpointer-arith"
CFLAGS="$CFLAGS -Wshadow"
@@ -4850,36 +14633,20 @@ case "$GCC" in
;;
esac
-ac_busted_vpath_in_make=no
-
case "$host" in
*-next-nextstep3)
CFLAGS="$CFLAGS -posix"
;;
+esac
+
+ac_busted_vpath_in_make=no
+
+case "$build" in
*-*-irix6.1*) # 64 bit only
# busted vpath?
;;
*-*-irix6*) # 6.2 (and later?)
ac_busted_vpath_in_make=yes
- # don't pass -n32 to gcc, it cannot handle and doesn't need it
- if test "$GCC" != yes; then
- case "$CFLAGS" in
- *-n32*) ;;
- *-n64*) ;;
- *-64*) ;;
- *) case "$iCFLAGS" in
- '') CFLAGS="-O2 -g3 -n32" ;;
- *) CFLAGS="$CFLAGS -n32" ;;
- esac
- ;;
- esac
- case "$LDFLAGS" in
- *-n32*) ;;
- *-n64*) ;;
- *-64*) ;;
- *) LDFLAGS="$LDFLAGS -n32" ;;
- esac
- fi
;;
*-*-solaris2.5.1)
ac_busted_vpath_in_make=yes
@@ -4904,6 +14671,348 @@ echo "$as_me: error: building outside of the main directory requires GNU make" >
esac
+# HMS: From bunnylou/cowbird
+case "$host" in
+ alpha-dec-osf4.0)
+ # Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=no
+fi;
+
+
+ ;;
+ *) # So far, the only shared library we might use is libopts.
+ # It's a small library - we might as well use a static version of it.
+ # Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=no
+fi;
+
+
+ ;;
+esac
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+ enableval="$enable_static"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi;
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+ enableval="$enable_fast_install"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi;
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+
+fi
+
+SED=$lt_cv_path_SED
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
echo "$as_me:$LINENO: checking whether ln -s works" >&5
echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
LN_S=$as_ln_s
@@ -4915,65 +15024,655 @@ else
echo "${ECHO_T}no, using $LN_S" >&6
fi
-if test $ac_cv_c_compiler_gnu = yes; then
- echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5
-echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
-if test "${ac_cv_prog_gcc_traditional+set}" = set; then
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sco3.2v5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line 15245 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- ac_pattern="Autoconf.*'x'"
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
+ 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 >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <sgtty.h>
-Autoconf TIOCGETP
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then
- ac_cv_prog_gcc_traditional=yes
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ lt_cv_cc_needs_belf=yes
else
- ac_cv_prog_gcc_traditional=no
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext 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
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+esac
- if test $ac_cv_prog_gcc_traditional = no; then
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
+need_locks="$enable_libtool_lock"
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <termio.h>
-Autoconf TCGETA
+$ac_includes_default
+#include <$ac_header>
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then
- ac_cv_prog_gcc_traditional=yes
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
fi
+else
+ ac_cpp_err=yes
fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5
-echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
- if test $ac_cv_prog_gcc_traditional = yes; then
- CC="$CC -traditional"
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
-echo "$as_me:$LINENO: checking for working volatile" >&5
-echo $ECHO_N "checking for working volatile... $ECHO_C" >&6
-if test "${ac_cv_c_volatile+set}" = set; then
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+ CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4983,148 +15682,1269 @@ cat >>conftest.$ac_ext <<_ACEOF
int
main ()
{
+#ifndef __GNUC__
+ choke me
+#endif
-volatile int x;
-int * volatile y;
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_c_volatile=yes
+ ac_compiler_gnu=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_c_volatile=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+ac_compiler_gnu=no
fi
-echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
-echo "${ECHO_T}$ac_cv_c_volatile" >&6
-if test $ac_cv_c_volatile = no; then
-
-cat >>confdefs.h <<\_ACEOF
-#define volatile
-_ACEOF
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
fi
-
-echo "$as_me:$LINENO: checking for library containing strerror" >&5
-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
-if test "${ac_cv_search_strerror+set}" = set; then
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- ac_func_search_save_LIBS=$LIBS
-ac_cv_search_strerror=no
-cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char strerror ();
int
main ()
{
-strerror ();
+
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_search_strerror="none required"
+ ac_cv_prog_cxx_g=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
+ac_cv_prog_cxx_g=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_strerror" = no; then
- for ac_lib in cposix; do
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char strerror ();
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
int
main ()
{
-strerror ();
+exit (42);
;
return 0;
}
_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_search_strerror="-l$ac_lib"
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+depcc="$CXX" am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
+ # Passes both tests.
+ac_preproc_ok=:
+break
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$F77"; then
+ ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+ echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$F77" && break
done
fi
-LIBS=$ac_func_search_save_LIBS
+if test -z "$F77"; then
+ ac_ct_F77=$F77
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_F77"; then
+ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_F77="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
fi
-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
-echo "${ECHO_T}$ac_cv_search_strerror" >&6
-if test "$ac_cv_search_strerror" != no; then
- test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+ echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_F77" && break
+done
+ F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:16351:" \
+ "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file. (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+#ifndef __GNUC__
+ choke me
+#endif
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_f77_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-g -O2"
+ else
+ FFLAGS="-g"
+ fi
+else
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-O2"
+ else
+ FFLAGS=
+ fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+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
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+ echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDGIRSTW]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris* | sysv5*)
+ symcode='[BDRT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+ echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+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 to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ AR=$ac_ct_AR
+else
+ AR="$ac_cv_prog_AR"
fi
if test -n "$ac_tool_prefix"; then
@@ -5207,289 +17027,6389 @@ else
RANLIB="$ac_cv_prog_RANLIB"
fi
-# Extract the first word of "sh", so it can be a program name with args.
-set dummy sh; ac_word=$2
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_PATH_SH+set}" = set; then
+if test "${ac_cv_prog_STRIP+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- case $PATH_SH in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PATH_SH="$PATH_SH" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PATH_SH="$as_dir/$ac_word$ac_exec_ext"
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
- ;;
-esac
fi
-PATH_SH=$ac_cv_path_PATH_SH
-
-if test -n "$PATH_SH"; then
- echo "$as_me:$LINENO: result: $PATH_SH" >&5
-echo "${ECHO_T}$PATH_SH" >&6
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
else
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-# Extract the first word of "perl", so it can be a program name with args.
-set dummy perl; ac_word=$2
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_PATH_PERL+set}" = set; then
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- case $PATH_PERL in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_PATH_PERL="$PATH_PERL" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PATH_PERL="$as_dir/$ac_word$ac_exec_ext"
+ ac_cv_prog_ac_ct_STRIP="strip"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ STRIP=$ac_ct_STRIP
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
;;
esac
fi
-PATH_PERL=$ac_cv_path_PATH_PERL
-if test -n "$PATH_PERL"; then
- echo "$as_me:$LINENO: result: $PATH_PERL" >&5
-echo "${ECHO_T}$PATH_PERL" >&6
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+ withval="$with_pic"
+ pic_mode="$withval"
+else
+ pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+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
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+#
+# Check for any special shared library compilation flags.
+#
+lt_prog_cc_shlib=
+if test "$GCC" = no; then
+ case $host_os in
+ sco3.2v5*)
+ lt_prog_cc_shlib='-belf'
+ ;;
+ esac
+fi
+if test -n "$lt_prog_cc_shlib"; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
+ if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then :
+ else
+ { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+ lt_cv_prog_cc_can_build_shared=no
+ fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works=yes
+ fi
+ else
+ lt_prog_compiler_static_works=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:17449: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:17453: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic='-qnocommon'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic='-Kpic'
+ lt_prog_compiler_static='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:17711: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:17715: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:17773: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:17777: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+ $SED '/^$/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag=
+ enable_shared_with_static_runtimes=no
+ archive_cmds=
+ archive_expsym_cmds=
+ old_archive_From_new_cmds=
+ old_archive_from_expsyms_cmds=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ thread_safe_flag_spec=
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_direct=no
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ link_all_deplibs=unknown
+ hardcode_automatic=no
+ module_cmds=
+ module_expsym_cmds=
+ always_export_symbols=no
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct=yes
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec=' '
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ whole_archive_flag_spec=''
+ link_all_deplibs=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ link_all_deplibs=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ openbsd*)
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ hardcode_libdir_flag_spec=
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc=no
+ else
+ archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+ test -n "$runpath_var" || \
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#define ACAT(a,b)a ## b
-ACAT(Cir,cus)
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Circus" >/dev/null 2>&1; then
- cat >>confdefs.h <<\_ACEOF
-#define ULONG_CONST(a) a ## UL
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#define RCAT(a,b)a/**/b
-RCAT(Rei,ser)
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Reiser" >/dev/null 2>&1; then
- cat >>confdefs.h <<\_ACEOF
-#define ULONG_CONST(a) a/**/L
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
else
- { { echo "$as_me:$LINENO: error: How do we create an unsigned long constant?" >&5
-echo "$as_me: error: How do we create an unsigned long constant?" >&2;}
- { (exit 1); exit 1; }; }
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
-case "$host" in
- *-*-vxworks*)
- ac_link="$ac_link $VX_KERNEL"
;;
-esac
+ esac
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
- ./ | .// | /cC/* | \
- /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
- /usr/ucb/* ) ;;
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 20021 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 20119 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+# Report which librarie types wil actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler \
+ CC \
+ LD \
+ lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
+ lt_prog_compiler_static \
+ lt_prog_compiler_no_builtin_flag \
+ export_dynamic_flag_spec \
+ thread_safe_flag_spec \
+ whole_archive_flag_spec \
+ enable_shared_with_static_runtimes \
+ old_archive_cmds \
+ old_archive_from_new_cmds \
+ predep_objects \
+ postdep_objects \
+ predeps \
+ postdeps \
+ compiler_lib_search_path \
+ archive_cmds \
+ archive_expsym_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ old_archive_from_expsyms_cmds \
+ allow_undefined_flag \
+ no_undefined_flag \
+ export_symbols_cmds \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+ hardcode_automatic \
+ module_cmds \
+ module_expsym_cmds \
+ lt_cv_prog_compiler_c_o \
+ exclude_expsyms \
+ include_expsyms; do
+
+ case $var in
+ old_archive_cmds | \
+ old_archive_from_new_cmds | \
+ archive_cmds | \
+ archive_expsym_cmds | \
+ module_cmds | \
+ module_expsym_cmds | \
+ old_archive_from_expsyms_cmds | \
+ export_symbols_cmds | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+ cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# 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
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+ withval="$with_tags"
+ tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+ else
+ { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+ fi
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+ "") ;;
+ *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+ unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+ lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
*)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_CXX=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_CXX=''
+ hardcode_direct_CXX=yes
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_CXX=yes
+ else
+ # We have old collect2
+ hardcode_direct_CXX=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_CXX=yes
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ hardcode_libdir_separator_CXX=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_CXX=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_CXX='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_CXX="-z nodefs"
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_CXX=' ${wl}-bernotok'
+ allow_undefined_flag_CXX=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_CXX=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_CXX=' '
+ archive_cmds_need_lc_CXX=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ allow_undefined_flag_CXX=unsupported
+ always_export_symbols_CXX=no
+ enable_shared_with_static_runtimes_CXX=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_direct_CXX=no
+ hardcode_automatic_CXX=yes
+ hardcode_shlibpath_var_CXX=unsupported
+ whole_archive_flag_spec_CXX=''
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ fi
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
else
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
fi
- fi
- done
- done
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ ld_shlibs_CXX=no
+ ;;
+ freebsd-elf*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ ;;
+ ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ *)
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ ia64*|hppa*64*)
+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ link_all_deplibs_CXX=yes
+ ;;
+ esac
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc*)
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ ld_shlibs_CXX=no
+ ;;
+ openbsd*)
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ allow_undefined_flag_CXX=' -expect_unresolved \*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+ $rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ sco*)
+ archive_cmds_need_lc_CXX=no
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ archive_cmds_need_lc_CXX=yes
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_shlibpath_var_CXX=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker. We must also pass each convience library through
+ # to the system linker between allextract/defaultextract.
+ # The C++ compiler will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
;;
esac
-done
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$compiler_lib_search_path_CXX"; then
+ compiler_lib_search_path_CXX="${prev}${p}"
+ else
+ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$postdeps_CXX"; then
+ postdeps_CXX="${prev}${p}"
+ else
+ postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$predep_objects_CXX"; then
+ predep_objects_CXX="$p"
+ else
+ predep_objects_CXX="$predep_objects_CXX $p"
+ fi
+ else
+ if test -z "$postdep_objects_CXX"; then
+ postdep_objects_CXX="$p"
+ else
+ postdep_objects_CXX="$postdep_objects_CXX $p"
+ fi
+ fi
+ ;;
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling CXX test program"
fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL=$ac_cv_path_install
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+solaris*)
+ case $cc_basename in
+ CC*)
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ postdeps_CXX='-lCstd -lCrun'
+ ;;
+ esac
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_CXX='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ lt_prog_compiler_pic_CXX=
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_CXX=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL=$ac_install_sh
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ else
+ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_CXX='-qnocommon'
+ lt_prog_compiler_wl_CXX='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+ aCC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ icpc* | ecpc*)
+ # Intel C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler.
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-fpic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ sco*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ lt_prog_compiler_pic_CXX='-pic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ unixware*)
+ ;;
+ vxworks*)
+ ;;
+ *)
+ lt_prog_compiler_can_build_shared_CXX=no
+ ;;
+ esac
fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_CXX=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:22374: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:22378: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+
fi
-echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+ case $lt_prog_compiler_pic_CXX in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+ esac
+else
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_can_build_shared_CXX=no
+fi
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_CXX=
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+ ;;
+esac
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_CXX=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:22436: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:22440: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+ $SED '/^$/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
-case "$host" in
- *-pc-cygwin*)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ export_symbols_cmds_CXX="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
-echo "$as_me:$LINENO: checking for main in -ladvapi32" >&5
-echo $ECHO_N "checking for main in -ladvapi32... $ECHO_C" >&6
-if test "${ac_cv_lib_advapi32_main+set}" = set; then
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_CXX=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_CXX in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_CXX
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+ allow_undefined_flag_CXX=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_CXX=no
+ else
+ archive_cmds_need_lc_CXX=yes
+ fi
+ allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+ test -n "$runpath_var_CXX" || \
+ test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_CXX" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+ test "$hardcode_minus_L_CXX" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_CXX=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_CXX=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_CXX=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-ladvapi32 $LIBS"
+LIBS="-ldl $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
int
main ()
{
-main ();
+dlopen ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_lib_advapi32_main=yes
+ ac_cv_lib_dl_dlopen=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_lib_advapi32_main=no
+ac_cv_lib_dl_dlopen=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_advapi32_main" >&5
-echo "${ECHO_T}$ac_cv_lib_advapi32_main" >&6
-if test $ac_cv_lib_advapi32_main = yes; then
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBADVAPI32 1
-_ACEOF
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
- LIBS="-ladvapi32 $LIBS"
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
fi
- ;;
-esac
+ ;;
-echo "$as_me:$LINENO: checking for nlist in -lelf" >&5
-echo $ECHO_N "checking for nlist in -lelf... $ECHO_C" >&6
-if test "${ac_cv_lib_elf_nlist+set}" = set; then
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lelf $LIBS"
+LIBS="-ldld $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -5502,114 +23422,5571 @@ extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char nlist ();
+char shl_load ();
int
main ()
{
-nlist ();
+shl_load ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_lib_elf_nlist=yes
+ ac_cv_lib_dld_shl_load=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_lib_elf_nlist=no
+ac_cv_lib_dld_shl_load=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_elf_nlist" >&5
-echo "${ECHO_T}$ac_cv_lib_elf_nlist" >&6
-if test $ac_cv_lib_elf_nlist = yes; then
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBELF 1
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
- LIBS="-lelf $LIBS"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
-echo "$as_me:$LINENO: checking for main in -lkvm" >&5
-echo $ECHO_N "checking for main in -lkvm... $ECHO_C" >&6
-if test "${ac_cv_lib_kvm_main+set}" = set; then
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lkvm $LIBS"
+LIBS="-lsvld $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
int
main ()
{
-main ();
+dld_link ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_lib_kvm_main=yes
+ ac_cv_lib_dld_dld_link=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_lib_kvm_main=no
+ac_cv_lib_dld_dld_link=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_kvm_main" >&5
-echo "${ECHO_T}$ac_cv_lib_kvm_main" >&6
-if test $ac_cv_lib_kvm_main = yes; then
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBKVM 1
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 23813 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 23911 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_CXX \
+ CC_CXX \
+ LD_CXX \
+ lt_prog_compiler_wl_CXX \
+ lt_prog_compiler_pic_CXX \
+ lt_prog_compiler_static_CXX \
+ lt_prog_compiler_no_builtin_flag_CXX \
+ export_dynamic_flag_spec_CXX \
+ thread_safe_flag_spec_CXX \
+ whole_archive_flag_spec_CXX \
+ enable_shared_with_static_runtimes_CXX \
+ old_archive_cmds_CXX \
+ old_archive_from_new_cmds_CXX \
+ predep_objects_CXX \
+ postdep_objects_CXX \
+ predeps_CXX \
+ postdeps_CXX \
+ compiler_lib_search_path_CXX \
+ archive_cmds_CXX \
+ archive_expsym_cmds_CXX \
+ postinstall_cmds_CXX \
+ postuninstall_cmds_CXX \
+ old_archive_from_expsyms_cmds_CXX \
+ allow_undefined_flag_CXX \
+ no_undefined_flag_CXX \
+ export_symbols_cmds_CXX \
+ hardcode_libdir_flag_spec_CXX \
+ hardcode_libdir_flag_spec_ld_CXX \
+ hardcode_libdir_separator_CXX \
+ hardcode_automatic_CXX \
+ module_cmds_CXX \
+ module_expsym_cmds_CXX \
+ lt_cv_prog_compiler_c_o_CXX \
+ exclude_expsyms_CXX \
+ include_expsyms_CXX; do
+
+ case $var in
+ old_archive_cmds_CXX | \
+ old_archive_from_new_cmds_CXX | \
+ archive_cmds_CXX | \
+ archive_expsym_cmds_CXX | \
+ module_cmds_CXX | \
+ module_expsym_cmds_CXX | \
+ old_archive_from_expsyms_cmds_CXX | \
+ export_symbols_cmds_CXX | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+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
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_static_F77='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_F77='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared_F77=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_F77=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ else
+ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_F77='-qnocommon'
+ lt_prog_compiler_wl_F77='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-fpic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic_F77='-Kpic'
+ lt_prog_compiler_static_F77='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl_F77='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl_F77='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_F77='-Qoption ld '
+ lt_prog_compiler_pic_F77='-PIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_F77='-Kconform_pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_F77='-pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_F77=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_F77"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:24796: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:24800: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+ case $lt_prog_compiler_pic_F77 in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+ esac
+else
+ lt_prog_compiler_pic_F77=
+ lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_F77=
+ ;;
+ *)
+ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_F77=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:24858: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:24862: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+ $SED '/^$/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_F77=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_F77=
+ enable_shared_with_static_runtimes_F77=no
+ archive_cmds_F77=
+ archive_expsym_cmds_F77=
+ old_archive_From_new_cmds_F77=
+ old_archive_from_expsyms_cmds_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ thread_safe_flag_spec_F77=
+ hardcode_libdir_flag_spec_F77=
+ hardcode_libdir_flag_spec_ld_F77=
+ hardcode_libdir_separator_F77=
+ hardcode_direct_F77=no
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=unsupported
+ link_all_deplibs_F77=unknown
+ hardcode_automatic_F77=no
+ module_cmds_F77=
+ module_expsym_cmds_F77=
+ always_export_symbols_F77=no
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_F77=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_F77=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_F77=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_F77=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_F77=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=no
+ enable_shared_with_static_runtimes_F77=yes
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ sunos4*)
+ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_F77" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=yes
+ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_F77=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_F77=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_F77=''
+ hardcode_direct_F77=yes
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_F77=yes
+ else
+ # We have old collect2
+ hardcode_direct_F77=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_F77=yes
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_libdir_separator_F77=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_F77=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_F77='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
- LIBS="-lkvm $LIBS"
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-echo "$as_me:$LINENO: checking for nlist in -lld" >&5
-echo $ECHO_N "checking for nlist in -lld... $ECHO_C" >&6
-if test "${ac_cv_lib_ld_nlist+set}" = set; then
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_F77="-z nodefs"
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_F77=' ${wl}-bernotok'
+ allow_undefined_flag_F77=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_F77=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_F77=' '
+ archive_cmds_need_lc_F77=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_F77=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_F77=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_F77=' '
+ allow_undefined_flag_F77=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_F77='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_F77=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_F77=no
+ hardcode_direct_F77=no
+ hardcode_automatic_F77=yes
+ hardcode_shlibpath_var_F77=unsupported
+ whole_archive_flag_spec_F77=''
+ link_all_deplibs_F77=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_F77=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ link_all_deplibs_F77=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ newsos6)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ allow_undefined_flag_F77=unsupported
+ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag_F77=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_shlibpath_var_F77=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs_F77=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_F77='$CC -r -o $output$reload_objs'
+ hardcode_direct_F77=no
+ ;;
+ motorola)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_F77=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag_F77='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag_F77=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ hardcode_libdir_flag_spec_F77=
+ hardcode_shlibpath_var_F77=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_F77=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_F77 in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_F77
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+ allow_undefined_flag_F77=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_F77=no
+ else
+ archive_cmds_need_lc_F77=yes
+ fi
+ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+ test -n "$runpath_var_F77" || \
+ test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_F77" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+ test "$hardcode_minus_L_F77" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_F77=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_F77=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_F77 \
+ CC_F77 \
+ LD_F77 \
+ lt_prog_compiler_wl_F77 \
+ lt_prog_compiler_pic_F77 \
+ lt_prog_compiler_static_F77 \
+ lt_prog_compiler_no_builtin_flag_F77 \
+ export_dynamic_flag_spec_F77 \
+ thread_safe_flag_spec_F77 \
+ whole_archive_flag_spec_F77 \
+ enable_shared_with_static_runtimes_F77 \
+ old_archive_cmds_F77 \
+ old_archive_from_new_cmds_F77 \
+ predep_objects_F77 \
+ postdep_objects_F77 \
+ predeps_F77 \
+ postdeps_F77 \
+ compiler_lib_search_path_F77 \
+ archive_cmds_F77 \
+ archive_expsym_cmds_F77 \
+ postinstall_cmds_F77 \
+ postuninstall_cmds_F77 \
+ old_archive_from_expsyms_cmds_F77 \
+ allow_undefined_flag_F77 \
+ no_undefined_flag_F77 \
+ export_symbols_cmds_F77 \
+ hardcode_libdir_flag_spec_F77 \
+ hardcode_libdir_flag_spec_ld_F77 \
+ hardcode_libdir_separator_F77 \
+ hardcode_automatic_F77 \
+ module_cmds_F77 \
+ module_expsym_cmds_F77 \
+ lt_cv_prog_compiler_c_o_F77 \
+ exclude_expsyms_F77 \
+ include_expsyms_F77; do
+
+ case $var in
+ old_archive_cmds_F77 | \
+ old_archive_from_new_cmds_F77 | \
+ archive_cmds_F77 | \
+ archive_expsym_cmds_F77 | \
+ module_cmds_F77 | \
+ module_expsym_cmds_F77 | \
+ old_archive_from_expsyms_cmds_F77 | \
+ export_symbols_cmds_F77 | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:26988: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:26992: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_static_GCJ='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_GCJ='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared_GCJ=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_GCJ=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ else
+ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_GCJ='-qnocommon'
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-fpic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic_GCJ='-Kpic'
+ lt_prog_compiler_static_GCJ='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl_GCJ='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld '
+ lt_prog_compiler_pic_GCJ='-PIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_GCJ='-Kconform_pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_GCJ='-pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_GCJ=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:27250: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:27254: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+ case $lt_prog_compiler_pic_GCJ in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+ esac
+else
+ lt_prog_compiler_pic_GCJ=
+ lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_GCJ=
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_GCJ=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:27312: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:27316: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+ $SED '/^$/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_GCJ=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_GCJ=
+ enable_shared_with_static_runtimes_GCJ=no
+ archive_cmds_GCJ=
+ archive_expsym_cmds_GCJ=
+ old_archive_From_new_cmds_GCJ=
+ old_archive_from_expsyms_cmds_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ thread_safe_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_ld_GCJ=
+ hardcode_libdir_separator_GCJ=
+ hardcode_direct_GCJ=no
+ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=unsupported
+ link_all_deplibs_GCJ=unknown
+ hardcode_automatic_GCJ=no
+ module_cmds_GCJ=
+ module_expsym_cmds_GCJ=
+ always_export_symbols_GCJ=no
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_GCJ=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_GCJ=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_GCJ=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_GCJ=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_GCJ=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=no
+ enable_shared_with_static_runtimes_GCJ=yes
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ sunos4*)
+ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_GCJ" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=yes
+ archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_GCJ=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_GCJ=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_GCJ=''
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_GCJ=yes
+ else
+ # We have old collect2
+ hardcode_direct_GCJ=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_libdir_separator_GCJ=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_GCJ=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_GCJ='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_GCJ="-z nodefs"
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_GCJ=' ${wl}-bernotok'
+ allow_undefined_flag_GCJ=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_GCJ=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_GCJ=' '
+ archive_cmds_need_lc_GCJ=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_GCJ=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_GCJ=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ=' '
+ allow_undefined_flag_GCJ=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_GCJ='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_GCJ=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_GCJ=no
+ hardcode_direct_GCJ=no
+ hardcode_automatic_GCJ=yes
+ hardcode_shlibpath_var_GCJ=unsupported
+ whole_archive_flag_spec_GCJ=''
+ link_all_deplibs_GCJ=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_GCJ=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ newsos6)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ allow_undefined_flag_GCJ=unsupported
+ archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag_GCJ=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+ hardcode_direct_GCJ=no
+ ;;
+ motorola)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ export_dynamic_flag_spec_GCJ='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_GCJ=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag_GCJ='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag_GCJ=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ hardcode_libdir_flag_spec_GCJ=
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_GCJ=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_GCJ in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_GCJ
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+ allow_undefined_flag_GCJ=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_GCJ=no
+ else
+ archive_cmds_need_lc_GCJ=yes
+ fi
+ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+ test -n "$runpath_var_GCJ" || \
+ test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_GCJ" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+ test "$hardcode_minus_L_GCJ" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_GCJ=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_GCJ=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lld $LIBS"
+LIBS="-ldl $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -5622,58 +28999,324 @@ extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char nlist ();
+char dlopen ();
int
main ()
{
-nlist ();
+dlopen ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_lib_ld_nlist=yes
+ ac_cv_lib_dl_dlopen=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_lib_ld_nlist=no
+ac_cv_lib_dl_dlopen=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_ld_nlist" >&5
-echo "${ECHO_T}$ac_cv_lib_ld_nlist" >&6
-if test $ac_cv_lib_ld_nlist = yes; then
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBLD 1
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
- LIBS="-lld $LIBS"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
-echo "$as_me:$LINENO: checking for nlist in -lmld" >&5
-echo $ECHO_N "checking for nlist in -lmld... $ECHO_C" >&6
-if test "${ac_cv_lib_mld_nlist+set}" = set; then
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lmld $LIBS"
+LIBS="-ldl $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -5686,69 +29329,1944 @@ extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char nlist ();
+char dlopen ();
int
main ()
{
-nlist ();
+dlopen ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 29560 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 29658 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_GCJ \
+ CC_GCJ \
+ LD_GCJ \
+ lt_prog_compiler_wl_GCJ \
+ lt_prog_compiler_pic_GCJ \
+ lt_prog_compiler_static_GCJ \
+ lt_prog_compiler_no_builtin_flag_GCJ \
+ export_dynamic_flag_spec_GCJ \
+ thread_safe_flag_spec_GCJ \
+ whole_archive_flag_spec_GCJ \
+ enable_shared_with_static_runtimes_GCJ \
+ old_archive_cmds_GCJ \
+ old_archive_from_new_cmds_GCJ \
+ predep_objects_GCJ \
+ postdep_objects_GCJ \
+ predeps_GCJ \
+ postdeps_GCJ \
+ compiler_lib_search_path_GCJ \
+ archive_cmds_GCJ \
+ archive_expsym_cmds_GCJ \
+ postinstall_cmds_GCJ \
+ postuninstall_cmds_GCJ \
+ old_archive_from_expsyms_cmds_GCJ \
+ allow_undefined_flag_GCJ \
+ no_undefined_flag_GCJ \
+ export_symbols_cmds_GCJ \
+ hardcode_libdir_flag_spec_GCJ \
+ hardcode_libdir_flag_spec_ld_GCJ \
+ hardcode_libdir_separator_GCJ \
+ hardcode_automatic_GCJ \
+ module_cmds_GCJ \
+ module_expsym_cmds_GCJ \
+ lt_cv_prog_compiler_c_o_GCJ \
+ exclude_expsyms_GCJ \
+ include_expsyms_GCJ; do
+
+ case $var in
+ old_archive_cmds_GCJ | \
+ old_archive_from_new_cmds_GCJ | \
+ archive_cmds_GCJ | \
+ archive_expsym_cmds_GCJ | \
+ module_cmds_GCJ | \
+ module_expsym_cmds_GCJ | \
+ old_archive_from_expsyms_cmds_GCJ | \
+ export_symbols_cmds_GCJ | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_RC \
+ CC_RC \
+ LD_RC \
+ lt_prog_compiler_wl_RC \
+ lt_prog_compiler_pic_RC \
+ lt_prog_compiler_static_RC \
+ lt_prog_compiler_no_builtin_flag_RC \
+ export_dynamic_flag_spec_RC \
+ thread_safe_flag_spec_RC \
+ whole_archive_flag_spec_RC \
+ enable_shared_with_static_runtimes_RC \
+ old_archive_cmds_RC \
+ old_archive_from_new_cmds_RC \
+ predep_objects_RC \
+ postdep_objects_RC \
+ predeps_RC \
+ postdeps_RC \
+ compiler_lib_search_path_RC \
+ archive_cmds_RC \
+ archive_expsym_cmds_RC \
+ postinstall_cmds_RC \
+ postuninstall_cmds_RC \
+ old_archive_from_expsyms_cmds_RC \
+ allow_undefined_flag_RC \
+ no_undefined_flag_RC \
+ export_symbols_cmds_RC \
+ hardcode_libdir_flag_spec_RC \
+ hardcode_libdir_flag_spec_ld_RC \
+ hardcode_libdir_separator_RC \
+ hardcode_automatic_RC \
+ module_cmds_RC \
+ module_expsym_cmds_RC \
+ lt_cv_prog_compiler_c_o_RC \
+ exclude_expsyms_RC \
+ include_expsyms_RC; do
+
+ case $var in
+ old_archive_cmds_RC | \
+ old_archive_from_new_cmds_RC | \
+ archive_cmds_RC | \
+ archive_expsym_cmds_RC | \
+ module_cmds_RC | \
+ module_expsym_cmds_RC | \
+ old_archive_from_expsyms_cmds_RC | \
+ export_symbols_cmds_RC | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+ ;;
+
+ *)
+ { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+if test $ac_cv_c_compiler_gnu = yes; then
+ echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5
+echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
+if test "${ac_cv_prog_gcc_traditional+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_pattern="Autoconf.*'x'"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sgtty.h>
+Autoconf TIOCGETP
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "$ac_pattern" >/dev/null 2>&1; then
+ ac_cv_prog_gcc_traditional=yes
+else
+ ac_cv_prog_gcc_traditional=no
+fi
+rm -f conftest*
+
+
+ if test $ac_cv_prog_gcc_traditional = no; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <termio.h>
+Autoconf TCGETA
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "$ac_pattern" >/dev/null 2>&1; then
+ ac_cv_prog_gcc_traditional=yes
+fi
+rm -f conftest*
+
+ fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5
+echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
+ if test $ac_cv_prog_gcc_traditional = yes; then
+ CC="$CC -traditional"
+ fi
+fi
+
+echo "$as_me:$LINENO: checking for working volatile" >&5
+echo $ECHO_N "checking for working volatile... $ECHO_C" >&6
+if test "${ac_cv_c_volatile+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+volatile int x;
+int * volatile y;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_lib_mld_nlist=yes
+ ac_cv_c_volatile=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_lib_mld_nlist=no
+ac_cv_c_volatile=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
+echo "${ECHO_T}$ac_cv_c_volatile" >&6
+if test $ac_cv_c_volatile = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define volatile
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for library containing strerror" >&5
+echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
+if test "${ac_cv_search_strerror+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_strerror=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char strerror ();
+int
+main ()
+{
+strerror ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_strerror="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_strerror" = no; then
+ for ac_lib in cposix; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char strerror ();
+int
+main ()
+{
+strerror ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_strerror="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+echo "${ECHO_T}$ac_cv_search_strerror" >&6
+if test "$ac_cv_search_strerror" != no; then
+ test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
+
+fi
+
+# Extract the first word of "sh", so it can be a program name with args.
+set dummy sh; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PATH_SH+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PATH_SH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PATH_SH="$PATH_SH" # 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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PATH_SH="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ ;;
+esac
+fi
+PATH_SH=$ac_cv_path_PATH_SH
+
+if test -n "$PATH_SH"; then
+ echo "$as_me:$LINENO: result: $PATH_SH" >&5
+echo "${ECHO_T}$PATH_SH" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PATH_PERL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PATH_PERL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PATH_PERL="$PATH_PERL" # 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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PATH_PERL="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ ;;
+esac
+fi
+PATH_PERL=$ac_cv_path_PATH_PERL
+
+if test -n "$PATH_PERL"; then
+ echo "$as_me:$LINENO: result: $PATH_PERL" >&5
+echo "${ECHO_T}$PATH_PERL" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define ACAT(a,b)a ## b
+ACAT(Cir,cus)
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Circus" >/dev/null 2>&1; then
+ cat >>confdefs.h <<\_ACEOF
+#define ULONG_CONST(a) a ## UL
+_ACEOF
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define RCAT(a,b)a/**/b
+RCAT(Rei,ser)
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Reiser" >/dev/null 2>&1; then
+ cat >>confdefs.h <<\_ACEOF
+#define ULONG_CONST(a) a/**/L
+_ACEOF
+
+else
+ { { echo "$as_me:$LINENO: error: How do we create an unsigned long constant?" >&5
+echo "$as_me: error: How do we create an unsigned long constant?" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f conftest*
+
+fi
+rm -f conftest*
+
+
+case "$host" in
+ *-*-vxworks*)
+ ac_link="$ac_link $VX_KERNEL"
+ ;;
+esac
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. We don't cache a
+ # path for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the path is relative.
+ INSTALL=$ac_install_sh
+ fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+case "$host" in
+ *-pc-cygwin*)
+
+echo "$as_me:$LINENO: checking for main in -ladvapi32" >&5
+echo $ECHO_N "checking for main in -ladvapi32... $ECHO_C" >&6
+if test "${ac_cv_lib_advapi32_main+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ladvapi32 $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+main ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_advapi32_main=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_advapi32_main=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_mld_nlist" >&5
-echo "${ECHO_T}$ac_cv_lib_mld_nlist" >&6
-if test $ac_cv_lib_mld_nlist = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_lib_advapi32_main" >&5
+echo "${ECHO_T}$ac_cv_lib_advapi32_main" >&6
+if test $ac_cv_lib_advapi32_main = yes; then
cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBMLD 1
+#define HAVE_LIBADVAPI32 1
_ACEOF
- LIBS="-lmld $LIBS"
+ LIBS="-ladvapi32 $LIBS"
fi
+ ;;
+esac
+
echo "$as_me:$LINENO: checking for gethostent" >&5
echo $ECHO_N "checking for gethostent... $ECHO_C" >&6
if test "${ac_cv_func_gethostent+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define gethostent to an innocuous variant, in case <limits.h> declares gethostent.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define gethostent innocuous_gethostent
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostent (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef gethostent
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -5779,11 +31297,21 @@ return f != gethostent;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5796,7 +31324,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_gethostent=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_gethostent" >&5
echo "${ECHO_T}$ac_cv_func_gethostent" >&6
@@ -5810,9 +31339,8 @@ if test "${ac_cv_lib_nsl_gethostent+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnsl -lsocket $LIBS"
+LIBS="-lnsl $libxnet -lsocket $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -5836,11 +31364,21 @@ gethostent ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5853,7 +31391,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_nsl_gethostent=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostent" >&5
@@ -5875,21 +31414,28 @@ if test "${ac_cv_func_openlog+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define openlog to an innocuous variant, in case <limits.h> declares openlog.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define openlog innocuous_openlog
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char openlog (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef openlog
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -5920,11 +31466,21 @@ return f != openlog;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5937,7 +31493,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_openlog=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_openlog" >&5
echo "${ECHO_T}$ac_cv_func_openlog" >&6
@@ -5953,7 +31510,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgen $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -5977,11 +31533,21 @@ openlog ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -5994,7 +31560,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_gen_openlog=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_gen_openlog" >&5
@@ -6014,9 +31581,8 @@ if test "${ac_cv_lib_syslog_openlog+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsyslog -lsocket $LIBS"
+LIBS="-lsyslog $libxnet -lsocket $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6040,11 +31606,21 @@ openlog ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6057,7 +31633,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_syslog_openlog=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_syslog_openlog" >&5
@@ -6084,7 +31661,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lmd5 $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6108,11 +31684,21 @@ MD5Init ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6125,7 +31711,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_md5_MD5Init=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_md5_MD5Init" >&5
@@ -6147,7 +31734,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lmd $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6171,11 +31757,21 @@ MD5Init ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6188,7 +31784,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_md_MD5Init=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_md_MD5Init" >&5
@@ -6214,21 +31811,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -6259,11 +31863,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6276,7 +31890,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -6306,7 +31921,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6317,11 +31931,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6334,7 +31958,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -6342,7 +31966,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6360,6 +31983,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -6379,33 +32003,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -6416,7 +32039,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -6435,6 +32058,8 @@ case "$ac_cv_header_readline_history_h$ac_cv_header_readline_readline_h" in
*no*) ;;
*) save_LIBS=$LIBS
LIBS=
+ # Ralf Wildenhues: either unset ... or cache READLINE_LIBS
+ unset ac_cv_lib_readline_readline
echo "$as_me:$LINENO: checking for readline in -lreadline" >&5
echo $ECHO_N "checking for readline in -lreadline... $ECHO_C" >&6
@@ -6444,7 +32069,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lreadline $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6468,11 +32092,21 @@ readline ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6485,7 +32119,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_readline_readline=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_readline_readline" >&5
@@ -6509,7 +32144,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lreadline -lcurses $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6533,11 +32167,21 @@ readline ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6550,7 +32194,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_readline_readline=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_readline_readline" >&5
@@ -6575,7 +32220,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ledit -lcurses $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6599,11 +32243,21 @@ readline ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6616,7 +32270,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_edit_readline=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_edit_readline" >&5
@@ -6660,7 +32315,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lrt $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6684,11 +32338,21 @@ sched_setscheduler ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6701,7 +32365,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_rt_sched_setscheduler=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_rt_sched_setscheduler" >&5
@@ -6723,7 +32388,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lposix4 $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6747,11 +32411,21 @@ sched_setscheduler ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6764,7 +32438,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_posix4_sched_setscheduler=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_posix4_sched_setscheduler" >&5
@@ -6789,21 +32464,28 @@ if test "${ac_cv_func_setsockopt+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define setsockopt to an innocuous variant, in case <limits.h> declares setsockopt.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define setsockopt innocuous_setsockopt
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char setsockopt (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef setsockopt
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -6834,11 +32516,21 @@ return f != setsockopt;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6851,7 +32543,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_setsockopt=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_setsockopt" >&5
echo "${ECHO_T}$ac_cv_func_setsockopt" >&6
@@ -6867,7 +32560,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsocket $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6891,11 +32583,21 @@ setsockopt ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6908,7 +32610,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_socket_setsockopt=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_socket_setsockopt" >&5
@@ -6922,6 +32625,80 @@ _ACEOF
fi
+
+echo "$as_me:$LINENO: checking for setsockopt in -lxnet" >&5
+echo $ECHO_N "checking for setsockopt in -lxnet... $ECHO_C" >&6
+if test "${ac_cv_lib_xnet_setsockopt+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lxnet $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char setsockopt ();
+int
+main ()
+{
+setsockopt ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_xnet_setsockopt=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_xnet_setsockopt=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_xnet_setsockopt" >&5
+echo "${ECHO_T}$ac_cv_lib_xnet_setsockopt" >&6
+if test $ac_cv_lib_xnet_setsockopt = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBXNET 1
+_ACEOF
+
+ LIBS="-lxnet $LIBS"
+
+fi
+
fi
@@ -6931,7 +32708,6 @@ if test "${ac_cv_header_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6952,11 +32728,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -6969,12 +32755,11 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_stdc=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -6996,7 +32781,6 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7021,7 +32805,6 @@ if test $ac_cv_header_stdc = yes; then
:
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7033,9 +32816,9 @@ cat >>conftest.$ac_ext <<_ACEOF
# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#else
# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
#endif
@@ -7046,7 +32829,7 @@ main ()
int i;
for (i = 0; i < 256; i++)
if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
+ || toupper (i) != TOUPPER (i))
exit(2);
exit (0);
}
@@ -7071,7 +32854,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
ac_cv_header_stdc=no
fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
fi
@@ -7086,11 +32869,7 @@ _ACEOF
fi
-
-
-
-
-for ac_header in bstring.h errno.h fcntl.h ieeefp.h math.h
+for ac_header in bstring.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -7106,7 +32885,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7117,11 +32895,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7134,7 +32922,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -7142,7 +32930,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7160,6 +32947,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -7179,33 +32967,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -7216,7 +33003,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -7231,13 +33018,227 @@ fi
done
-# HMS: Lame, but fast.
-if test -f /etc/redhat-release
-then
- :
+if test "${ac_cv_header_dns_sd_h+set}" = set; then
+ echo "$as_me:$LINENO: checking for dns_sd.h" >&5
+echo $ECHO_N "checking for dns_sd.h... $ECHO_C" >&6
+if test "${ac_cv_header_dns_sd_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_dns_sd_h" >&5
+echo "${ECHO_T}$ac_cv_header_dns_sd_h" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking dns_sd.h usability" >&5
+echo $ECHO_N "checking dns_sd.h usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <dns_sd.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
-for ac_header in md5.h
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking dns_sd.h presence" >&5
+echo $ECHO_N "checking dns_sd.h presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <dns_sd.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: dns_sd.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: dns_sd.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dns_sd.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: dns_sd.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: dns_sd.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: dns_sd.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dns_sd.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: dns_sd.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dns_sd.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: dns_sd.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dns_sd.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: dns_sd.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dns_sd.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: dns_sd.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: dns_sd.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: dns_sd.h: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for dns_sd.h" >&5
+echo $ECHO_N "checking for dns_sd.h... $ECHO_C" >&6
+if test "${ac_cv_header_dns_sd_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_dns_sd_h=$ac_header_preproc
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_dns_sd_h" >&5
+echo "${ECHO_T}$ac_cv_header_dns_sd_h" >&6
+
+fi
+if test $ac_cv_header_dns_sd_h = yes; then
+ echo "$as_me:$LINENO: checking for DNSServiceRegister in -ldns_sd" >&5
+echo $ECHO_N "checking for DNSServiceRegister in -ldns_sd... $ECHO_C" >&6
+if test "${ac_cv_lib_dns_sd_DNSServiceRegister+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldns_sd $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char DNSServiceRegister ();
+int
+main ()
+{
+DNSServiceRegister ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dns_sd_DNSServiceRegister=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dns_sd_DNSServiceRegister=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dns_sd_DNSServiceRegister" >&5
+echo "${ECHO_T}$ac_cv_lib_dns_sd_DNSServiceRegister" >&6
+if test $ac_cv_lib_dns_sd_DNSServiceRegister = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DNSREGISTRATION 1
+_ACEOF
+
+fi
+
+fi
+
+
+case "$ac_cv_lib_dns_sd_DNSServiceRegister" in
+ yes) LIBS="-ldns_sd $LIBS" ;;
+esac
+
+
+
+
+for ac_header in errno.h fcntl.h ieeefp.h math.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -7253,7 +33254,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7264,11 +33264,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7281,7 +33291,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -7289,7 +33299,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7307,6 +33316,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -7326,33 +33336,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -7363,7 +33372,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -7378,6 +33387,76 @@ fi
done
+
+# HMS: Lame, but fast.
+if test -f /etc/redhat-release
+then
+ :
+else
+
+for ac_header in md5.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
fi
@@ -7398,7 +33477,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7409,11 +33487,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7426,7 +33514,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -7434,7 +33522,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7452,6 +33539,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -7471,33 +33559,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -7508,7 +33595,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -7544,7 +33631,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7555,11 +33641,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7572,7 +33668,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -7580,7 +33676,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7598,6 +33693,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -7617,33 +33713,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -7654,7 +33749,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -7689,7 +33784,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7700,11 +33794,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7717,7 +33821,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -7725,7 +33829,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7743,6 +33846,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -7762,33 +33866,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -7799,7 +33902,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -7833,7 +33936,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7844,11 +33946,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -7861,7 +33973,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -7869,7 +33981,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7887,6 +33998,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -7906,33 +34018,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -7943,7 +34054,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -7977,7 +34088,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -7988,11 +34098,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8005,7 +34125,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -8013,7 +34133,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8031,6 +34150,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -8050,33 +34170,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -8087,7 +34206,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -8122,7 +34241,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8133,11 +34251,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8150,7 +34278,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -8158,7 +34286,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8176,6 +34303,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -8195,33 +34323,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -8232,7 +34359,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -8265,7 +34392,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8276,11 +34402,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8293,7 +34429,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -8301,7 +34437,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8319,6 +34454,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -8338,33 +34474,182 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
;;
- no:yes )
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in sys/socket.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -8375,7 +34660,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -8400,7 +34685,6 @@ if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8415,11 +34699,21 @@ cat >>conftest.$ac_ext <<_ACEOF
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8432,7 +34726,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_Header=no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -8462,7 +34756,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8473,11 +34766,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8490,7 +34793,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -8498,7 +34801,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8516,6 +34818,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -8535,33 +34838,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -8572,7 +34874,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -8588,6 +34890,71 @@ fi
done
+for ac_header in net/route.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>
+
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
for ac_header in netinet/in_system.h netinet/in_systm.h
do
@@ -8605,7 +34972,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8616,11 +34982,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8633,7 +35009,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -8641,7 +35017,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8659,6 +35034,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -8678,33 +35054,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -8715,7 +35090,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -8747,7 +35122,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8758,11 +35132,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8775,7 +35159,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -8783,7 +35167,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8801,6 +35184,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -8820,33 +35204,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -8857,7 +35240,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -8882,7 +35265,6 @@ if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8903,11 +35285,21 @@ cat >>conftest.$ac_ext <<_ACEOF
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8920,7 +35312,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_Header=no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -8950,7 +35342,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -8961,11 +35352,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -8978,7 +35379,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -8986,7 +35387,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9004,6 +35404,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -9023,33 +35424,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -9060,7 +35460,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -9097,7 +35497,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9108,11 +35507,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9125,7 +35534,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -9133,7 +35542,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9151,6 +35559,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -9170,33 +35579,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -9207,7 +35615,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -9240,7 +35648,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9251,11 +35658,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9268,7 +35685,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -9276,7 +35693,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9294,6 +35710,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -9313,33 +35730,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -9350,7 +35766,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -9384,7 +35800,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9395,11 +35810,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9412,7 +35837,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -9420,7 +35845,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9438,6 +35862,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -9457,33 +35882,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -9494,7 +35918,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -9528,7 +35952,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9539,11 +35962,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9556,7 +35989,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -9564,7 +35997,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9582,6 +36014,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -9601,33 +36034,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -9638,7 +36070,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -9674,7 +36106,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9685,11 +36116,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9702,7 +36143,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -9710,7 +36151,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9728,6 +36168,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -9747,33 +36188,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -9784,7 +36224,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -9799,11 +36239,9 @@ fi
done
+# HMS: Check sys/proc.h and sys/resource.h after some others
-
-
-
-for ac_header in sys/ppstime.h sys/proc.h sys/resource.h sys/sched.h
+for ac_header in sys/ppstime.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -9819,7 +36257,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9830,11 +36267,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9847,7 +36294,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -9855,7 +36302,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9873,6 +36319,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -9892,33 +36339,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -9929,7 +36375,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -9944,10 +36390,10 @@ fi
done
-case "$host" in
- *-*-sco*)
-
-for ac_header in sys/sio.h
+case "$ac_cv_header_sched_h" in
+ yes) ;;
+ *)
+for ac_header in sys/sched.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -9963,7 +36409,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -9974,11 +36419,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -9991,7 +36446,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -9999,7 +36454,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10017,6 +36471,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -10036,33 +36491,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -10073,7 +36527,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -10087,14 +36541,12 @@ _ACEOF
fi
done
-
- ;;
+ ;;
esac
+case "$host" in
+ *-*-sco*)
-
-
-
-for ac_header in sys/select.h sys/shm.h sys/signal.h sys/sockio.h
+for ac_header in sys/sio.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -10110,7 +36562,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10121,11 +36572,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10138,7 +36599,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -10146,7 +36607,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10164,6 +36624,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -10183,33 +36644,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -10220,7 +36680,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -10235,9 +36695,13 @@ fi
done
+ ;;
+esac
+# HMS: Check sys/shm.h after some others
-for ac_header in machine/soundcard.h sys/soundcard.h
+
+for ac_header in sys/select.h sys/signal.h sys/sockio.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -10253,7 +36717,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10264,11 +36727,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10281,7 +36754,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -10289,7 +36762,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10307,6 +36779,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -10326,33 +36799,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -10363,7 +36835,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -10378,9 +36850,12 @@ fi
done
+# HMS: Checked sys/socket.h earlier
+case "$host" in
+ *-*-netbsd*) ;;
+ *)
-
-for ac_header in sys/stat.h sys/stream.h
+for ac_header in machine/soundcard.h sys/soundcard.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -10396,7 +36871,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10407,11 +36881,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10424,7 +36908,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -10432,7 +36916,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10450,6 +36933,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -10469,33 +36953,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -10506,7 +36989,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -10521,11 +37004,11 @@ fi
done
+ ;;
+esac
-
-
-for ac_header in sys/stropts.h sys/sysctl.h sys/syssgi.h sys/systune.h
+for ac_header in sys/stat.h sys/stream.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -10541,7 +37024,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10552,11 +37034,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10569,7 +37061,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -10577,7 +37069,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10595,6 +37086,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -10614,33 +37106,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -10651,7 +37142,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -10669,7 +37160,8 @@ done
-for ac_header in sys/termios.h sys/time.h sys/signal.h
+
+for ac_header in sys/stropts.h sys/sysctl.h sys/syssgi.h sys/systune.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -10685,7 +37177,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10696,11 +37187,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10713,7 +37214,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -10721,7 +37222,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10739,6 +37239,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -10758,33 +37259,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -10795,7 +37295,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -10810,23 +37310,10 @@ fi
done
-cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <sys/timepps.h>
-#ifdef PPS_API_VERS_1
-yes
-#endif
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then
-for ac_header in sys/timepps.h
+
+for ac_header in sys/termios.h sys/time.h sys/signal.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -10842,7 +37329,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10853,11 +37339,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -10870,7 +37366,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -10878,7 +37374,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -10896,6 +37391,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -10915,33 +37411,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -10952,7 +37447,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -10967,15 +37462,102 @@ fi
done
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+#if HAVE_ERRNO_H
+# include <errno.h>
+#endif
+#include <sys/timepps.h>
+#ifdef PPS_API_VERS_1
+yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+
+for ac_header in sys/timepps.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+#if HAVE_ERRNO_H
+# include <errno.h>
+#endif
+
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
fi
-rm -f conftest*
+done
+
+
+fi
+rm -f conftest*
-for ac_header in sys/timers.h sys/timex.h sys/tpro.h sys/types.h sys/wait.h
+for ac_header in sys/timers.h sys/tpro.h sys/types.h sys/wait.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -10991,7 +37573,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -11002,11 +37583,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11019,7 +37610,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -11027,7 +37618,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -11045,6 +37635,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -11064,33 +37655,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -11101,7 +37691,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -11122,7 +37712,6 @@ if test "${ac_cv_header_time+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -11143,11 +37732,21 @@ return 0;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11160,7 +37759,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_time=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
echo "${ECHO_T}$ac_cv_header_time" >&6
@@ -11192,7 +37791,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -11203,11 +37801,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11220,7 +37828,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -11228,7 +37836,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -11246,6 +37853,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -11265,33 +37873,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -11302,7 +37909,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -11338,7 +37945,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -11349,11 +37955,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11366,7 +37982,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -11374,7 +37990,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -11392,6 +38007,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -11411,33 +38027,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -11448,7 +38063,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -11466,7 +38081,405 @@ done
;;
esac
-if test "${ac_cv_header_nlist_h+set}" = set; then
+case "$host" in
+ *-*-linux*)
+
+
+for ac_func in __adjtimex __ntp_gettime
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ ;;
+esac
+case "$ac_cv_func___adjtimex" in
+ yes) ;;
+ *)
+
+echo "$as_me:$LINENO: checking for nlist in -lelf" >&5
+echo $ECHO_N "checking for nlist in -lelf... $ECHO_C" >&6
+if test "${ac_cv_lib_elf_nlist+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lelf $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char nlist ();
+int
+main ()
+{
+nlist ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_elf_nlist=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_elf_nlist=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_elf_nlist" >&5
+echo "${ECHO_T}$ac_cv_lib_elf_nlist" >&6
+if test $ac_cv_lib_elf_nlist = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBELF 1
+_ACEOF
+
+ LIBS="-lelf $LIBS"
+
+fi
+
+echo "$as_me:$LINENO: checking for main in -lkvm" >&5
+echo $ECHO_N "checking for main in -lkvm... $ECHO_C" >&6
+if test "${ac_cv_lib_kvm_main+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkvm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+
+int
+main ()
+{
+main ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_kvm_main=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_kvm_main=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_kvm_main" >&5
+echo "${ECHO_T}$ac_cv_lib_kvm_main" >&6
+if test $ac_cv_lib_kvm_main = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBKVM 1
+_ACEOF
+
+ LIBS="-lkvm $LIBS"
+
+fi
+
+echo "$as_me:$LINENO: checking for nlist in -lld" >&5
+echo $ECHO_N "checking for nlist in -lld... $ECHO_C" >&6
+if test "${ac_cv_lib_ld_nlist+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char nlist ();
+int
+main ()
+{
+nlist ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_ld_nlist=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_ld_nlist=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_ld_nlist" >&5
+echo "${ECHO_T}$ac_cv_lib_ld_nlist" >&6
+if test $ac_cv_lib_ld_nlist = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBLD 1
+_ACEOF
+
+ LIBS="-lld $LIBS"
+
+fi
+
+
+echo "$as_me:$LINENO: checking for nlist in -lmld" >&5
+echo $ECHO_N "checking for nlist in -lmld... $ECHO_C" >&6
+if test "${ac_cv_lib_mld_nlist+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lmld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char nlist ();
+int
+main ()
+{
+nlist ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_mld_nlist=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_mld_nlist=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_mld_nlist" >&5
+echo "${ECHO_T}$ac_cv_lib_mld_nlist" >&6
+if test $ac_cv_lib_mld_nlist = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBMLD 1
+_ACEOF
+
+ LIBS="-lmld $LIBS"
+
+fi
+
+ if test "${ac_cv_header_nlist_h+set}" = set; then
echo "$as_me:$LINENO: checking for nlist.h" >&5
echo $ECHO_N "checking for nlist.h... $ECHO_C" >&6
if test "${ac_cv_header_nlist_h+set}" = set; then
@@ -11479,7 +38492,6 @@ else
echo "$as_me:$LINENO: checking nlist.h usability" >&5
echo $ECHO_N "checking nlist.h usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -11490,11 +38502,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11507,7 +38529,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -11515,7 +38537,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking nlist.h presence" >&5
echo $ECHO_N "checking nlist.h presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -11533,6 +38554,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -11552,33 +38574,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: nlist.h: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: nlist.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: nlist.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: nlist.h: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: nlist.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: nlist.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: nlist.h: present but cannot be compiled" >&5
echo "$as_me: WARNING: nlist.h: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: nlist.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: nlist.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: nlist.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: nlist.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: nlist.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: nlist.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: nlist.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: nlist.h: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: nlist.h: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: nlist.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: nlist.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: nlist.h: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -11601,13 +38622,12 @@ cat >>confdefs.h <<\_ACEOF
#define NLIST_STRUCT 1
_ACEOF
-echo "$as_me:$LINENO: checking for n_un in struct nlist" >&5
+ echo "$as_me:$LINENO: checking for n_un in struct nlist" >&5
echo $ECHO_N "checking for n_un in struct nlist... $ECHO_C" >&6
if test "${ac_cv_struct_nlist_n_un+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -11624,11 +38644,21 @@ struct nlist n; n.n_un.n_name = 0;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11641,24 +38671,26 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_struct_nlist_n_un=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_struct_nlist_n_un" >&5
echo "${ECHO_T}$ac_cv_struct_nlist_n_un" >&6
-if test $ac_cv_struct_nlist_n_un = yes; then
+ if test $ac_cv_struct_nlist_n_un = yes; then
cat >>confdefs.h <<\_ACEOF
#define NLIST_NAME_UNION 1
_ACEOF
-fi
+ fi
fi
+ ;;
+esac
-for ac_header in resolv.h
+for ac_header in sys/proc.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_header" >&5
@@ -11667,20 +38699,16 @@ if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
+# include <sys/types.h>
#endif
-#if HAVE_ARPA_NAMESER_H
-#include <arpa/nameser.h>
+#if HAVE_SYS_TIME_H
+# include <sys/time.h>
#endif
@@ -11688,11 +38716,21 @@ cat >>conftest.$ac_ext <<_ACEOF
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -11705,7 +38743,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_Header=no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -11719,348 +38757,374 @@ fi
done
-echo "$as_me:$LINENO: checking for basic volatile support" >&5
-echo $ECHO_N "checking for basic volatile support... $ECHO_C" >&6
-if test "${ac_cv_c_volatile+set}" = set; then
+
+for ac_header in sys/resource.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
-int
-main ()
-{
-volatile int x;
- ;
- return 0;
-}
+#include <$ac_header>
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_c_volatile=yes
+ eval "$as_ac_Header=yes"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_c_volatile=no
+eval "$as_ac_Header=no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
-echo "${ECHO_T}$ac_cv_c_volatile" >&6
-case "$ac_cv_c_volatile" in
- yes)
- ;;
- *)
-cat >>confdefs.h <<\_ACEOF
-#define volatile
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
- ;;
-esac
+fi
-case "$host" in
- sparc-*-solaris2*)
- # Assume that solaris2 is Ansi C...
- ;;
- *)
+done
-echo "$as_me:$LINENO: checking for ${CC-cc} option to accept ANSI C" >&5
-echo $ECHO_N "checking for ${CC-cc} option to accept ANSI C... $ECHO_C" >&6
-if test "${am_cv_prog_cc_stdc+set}" = set; then
+for ac_header in sys/shm.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- am_cv_prog_cc_stdc=no
-ac_save_CC="$CC"
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX -qlanglvl=ansi
-# Ultrix and OSF/1 -std1
-# HP-UX 10.20 and later -Ae
-# HP-UX older versions -Aa -D_HPUX_SOURCE
-# SVR4 -Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-
-int
-main ()
-{
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_IPC_H
+# include <sys/ipc.h>
+#endif
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
+#include <$ac_header>
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- am_cv_prog_cc_stdc="$ac_arg"; break
+ eval "$as_ac_Header=yes"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
+eval "$as_ac_Header=no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-CC="$ac_save_CC"
-
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
-if test -z "$am_cv_prog_cc_stdc"; then
- echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6
-else
- echo "$as_me:$LINENO: result: $am_cv_prog_cc_stdc" >&5
-echo "${ECHO_T}$am_cv_prog_cc_stdc" >&6
fi
-case "x$am_cv_prog_cc_stdc" in
- x|xno) ;;
- *) CC="$CC $am_cv_prog_cc_stdc" ;;
-esac
+done
-echo "$as_me:$LINENO: checking for function prototypes" >&5
-echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6
-if test "$am_cv_prog_cc_stdc" != no; then
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-cat >>confdefs.h <<\_ACEOF
-#define PROTOTYPES 1
-_ACEOF
- U= ANSI2KNR=
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
- U=_ ANSI2KNR=./ansi2knr
-fi
-# Ensure some checks needed by ansi2knr itself.
-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
+for ac_header in sys/timex.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
+#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
-int
-main ()
-{
- ;
- return 0;
-}
+#include <$ac_header>
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_header_stdc=yes
+ eval "$as_ac_Header=yes"
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_header_stdc=no
+eval "$as_ac_Header=no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-/* confdefs.h. */
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <string.h>
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then
- :
-else
- ac_cv_header_stdc=no
fi
-rm -f conftest*
-fi
+done
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+
+
+for ac_header in resolv.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <stdlib.h>
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_NAMESER_H
+#include <arpa/nameser.h>
+#endif
+
+#include <$ac_header>
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then
- :
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
else
- ac_cv_header_stdc=no
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
fi
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then
- :
+done
+
+
+echo "$as_me:$LINENO: checking for basic volatile support" >&5
+echo $ECHO_N "checking for basic volatile support... $ECHO_C" >&6
+if test "${ac_cv_c_volatile+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
int
main ()
{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- exit(2);
- exit (0);
+
+volatile int x;
+ ;
+ return 0;
}
_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- :
+ ac_cv_c_volatile=yes
else
- echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
+ac_cv_c_volatile=no
fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
+echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
+echo "${ECHO_T}$ac_cv_c_volatile" >&6
+case "$ac_cv_c_volatile" in
+ yes)
+ ;;
+ *)
+cat >>confdefs.h <<\_ACEOF
+#define volatile
+_ACEOF
+
+ ;;
+esac
+
+# AM_C_PROTOTYPES gives us ansi2knr
+case "$build" in
+ *-*-solaris2*)
+ # Assume that solaris2 is Ansi C...
+ ;;
+ *)
+ echo "$as_me:$LINENO: checking for function prototypes" >&5
+echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6
+if test "$ac_cv_prog_cc_stdc" != no; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
+#define PROTOTYPES 1
_ACEOF
+
+cat >>confdefs.h <<\_ACEOF
+#define __PROTOTYPES 1
+_ACEOF
+
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+if test "$ac_cv_prog_cc_stdc" != no; then
+ U= ANSI2KNR=
+else
+ U=_ ANSI2KNR=./ansi2knr
fi
+# Ensure some checks needed by ansi2knr itself.
for ac_header in string.h
@@ -12079,7 +39143,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12090,11 +39153,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12107,7 +39180,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -12115,7 +39188,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12133,6 +39205,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -12152,33 +39225,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -12189,7 +39261,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -12213,7 +39285,6 @@ if test "${ac_cv_have_prototypes+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12233,11 +39304,21 @@ int i;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12250,7 +39331,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_have_prototypes=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_have_prototypes" >&5
@@ -12269,7 +39350,6 @@ if test "${ac_cv_c_const+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12332,11 +39412,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12349,7 +39439,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_c_const=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
echo "${ECHO_T}$ac_cv_c_const" >&6
@@ -12368,7 +39458,6 @@ if test "${ac_cv_c_bigendian+set}" = set; then
else
# See if sys/param.h defines the BYTE_ORDER macro.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12390,11 +39479,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12402,7 +39501,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(exit $ac_status); }; }; then
# It does; now see whether it defined to BIG_ENDIAN or not.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12424,11 +39522,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12441,7 +39549,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_c_bigendian=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -12451,7 +39559,6 @@ if test "$cross_compiling" = yes; then
# try to guess the endianness by grepping values into an object file
ac_cv_c_bigendian=unknown
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12473,11 +39580,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12499,10 +39616,9 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12541,10 +39657,10 @@ sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
ac_cv_c_bigendian=yes
fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
echo "${ECHO_T}$ac_cv_c_bigendian" >&6
@@ -12571,7 +39687,6 @@ if test "${ac_cv_type_signal+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12598,11 +39713,21 @@ int i;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12615,7 +39740,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_signal=int
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
echo "${ECHO_T}$ac_cv_type_signal" >&6
@@ -12631,7 +39756,6 @@ if test "${ac_cv_type_off_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12651,11 +39775,21 @@ if (sizeof (off_t))
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12668,7 +39802,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_off_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
echo "${ECHO_T}$ac_cv_type_off_t" >&6
@@ -12688,7 +39822,6 @@ if test "${ac_cv_type_size_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12708,11 +39841,21 @@ if (sizeof (size_t))
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12725,7 +39868,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_size_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
echo "${ECHO_T}$ac_cv_type_size_t" >&6
@@ -12745,7 +39888,6 @@ if test "${ac_cv_type_time_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12765,11 +39907,21 @@ if (sizeof (time_t))
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12782,7 +39934,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_time_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5
echo "${ECHO_T}$ac_cv_type_time_t" >&6
@@ -12796,13 +39948,495 @@ _ACEOF
fi
+echo "$as_me:$LINENO: checking for time_t" >&5
+echo $ECHO_N "checking for time_t... $ECHO_C" >&6
+if test "${ac_cv_type_time_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((time_t *) 0)
+ return 0;
+if (sizeof (time_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_time_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_time_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_time_t" >&5
+echo "${ECHO_T}$ac_cv_type_time_t" >&6
+
+echo "$as_me:$LINENO: checking size of time_t" >&5
+echo $ECHO_N "checking size of time_t... $ECHO_C" >&6
+if test "${ac_cv_sizeof_time_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_time_t" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (time_t))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (time_t))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (time_t))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (time_t))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (time_t))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_time_t=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (time_t), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (time_t), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (time_t)); }
+unsigned long ulongval () { return (long) (sizeof (time_t)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (time_t))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (time_t))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (time_t))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_time_t=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (time_t), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (time_t), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_time_t=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_time_t" >&5
+echo "${ECHO_T}$ac_cv_sizeof_time_t" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_TIME_T $ac_cv_sizeof_time_t
+_ACEOF
+
+
+echo "$as_me:$LINENO: checking for uintptr_t" >&5
+echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6
+if test "${ac_cv_type_uintptr_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uintptr_t *) 0)
+ return 0;
+if (sizeof (uintptr_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uintptr_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uintptr_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5
+echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6
+if test $ac_cv_type_uintptr_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINTPTR_T 1
+_ACEOF
+
+
+fi
+
+
+
+
+
echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6
if test "${ac_cv_struct_tm+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12821,11 +40455,21 @@ struct tm *tp; tp->tm_sec;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12838,7 +40482,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_struct_tm=sys/time.h
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
echo "${ECHO_T}$ac_cv_struct_tm" >&6
@@ -12857,7 +40501,6 @@ if test "${ac_cv_type_u_int8_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12874,11 +40517,21 @@ u_int8_t len = 42; return 0;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12891,7 +40544,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_u_int8_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_u_int8_t" >&5
@@ -12910,7 +40563,6 @@ if test "${ac_cv_type_u_int64_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -12927,11 +40579,21 @@ u_int64_t len = 42; return 0;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -12944,7 +40606,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_u_int64_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_u_int64_t" >&5
@@ -12957,6 +40619,68 @@ _ACEOF
fi
+#
+# Look for in_port_t.
+#
+echo "$as_me:$LINENO: checking for in_port_t" >&5
+echo $ECHO_N "checking for in_port_t... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <netinet/in.h>
+int
+main ()
+{
+in_port_t port = 25; return (0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define ISC_PLATFORM_NEEDPORTT 1
+_ACEOF
+
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
echo "$as_me:$LINENO: checking for a fallback value for HZ" >&5
echo $ECHO_N "checking for a fallback value for HZ... $ECHO_C" >&6
if test "${ac_cv_var_default_hz+set}" = set; then
@@ -13015,6 +40739,72 @@ esac
+echo "$as_me:$LINENO: checking for struct rt_msghdr" >&5
+echo $ECHO_N "checking for struct rt_msghdr... $ECHO_C" >&6
+if test "${ac_cv_struct_rt_msghdr+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>
+#include <net/route.h>
+int
+main ()
+{
+struct rt_msghdr p;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_struct_rt_msghdr=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_struct_rt_msghdr=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_struct_rt_msghdr" >&5
+echo "${ECHO_T}$ac_cv_struct_rt_msghdr" >&6
+if test $ac_cv_struct_rt_msghdr = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAS_ROUTING_SOCKET 1
+_ACEOF
+
+fi
+
echo "$as_me:$LINENO: checking struct sigaction for sa_sigaction" >&5
echo $ECHO_N "checking struct sigaction for sa_sigaction... $ECHO_C" >&6
if test "${ac_cv_struct_sigaction_has_sa_sigaction+set}" = set; then
@@ -13022,7 +40812,6 @@ if test "${ac_cv_struct_sigaction_has_sa_sigaction+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13039,11 +40828,21 @@ struct sigaction act; act.sa_sigaction = 0;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13057,7 +40856,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_struct_sigaction_has_sa_sigaction=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
@@ -13077,7 +40876,6 @@ if test "${ac_cv_struct_ppsclockev+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13106,11 +40904,21 @@ return pce->serial;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13123,7 +40931,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_struct_ppsclockev=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_struct_ppsclockev" >&5
@@ -13142,7 +40950,6 @@ if test "${ac_cv_struct_sockaddr_has_sa_len+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13163,11 +40970,21 @@ return ps->sa_len;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13180,7 +40997,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_struct_sockaddr_has_sa_len=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_struct_sockaddr_has_sa_len" >&5
@@ -13193,6 +41010,73 @@ _ACEOF
fi
+echo "$as_me:$LINENO: checking for struct sockaddr_storage" >&5
+echo $ECHO_N "checking for struct sockaddr_storage... $ECHO_C" >&6
+if test "${ac_cv_struct_sockaddr_storage+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+int
+main ()
+{
+
+struct sockaddr_storage n;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_struct_sockaddr_storage=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_struct_sockaddr_storage=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_struct_sockaddr_storage" >&5
+echo "${ECHO_T}$ac_cv_struct_sockaddr_storage" >&6
+if test $ac_cv_struct_sockaddr_storage = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
+_ACEOF
+
+fi
+
echo "$as_me:$LINENO: checking for ss_family field in struct sockaddr_storage" >&5
echo $ECHO_N "checking for ss_family field in struct sockaddr_storage... $ECHO_C" >&6
if test "${ac_cv_have_ss_family_in_struct_ss+set}" = set; then
@@ -13200,7 +41084,6 @@ if test "${ac_cv_have_ss_family_in_struct_ss+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13220,11 +41103,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13237,7 +41130,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_have_ss_family_in_struct_ss="no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_have_ss_family_in_struct_ss" >&5
@@ -13250,8 +41143,11 @@ _ACEOF
else
# Hack around a problem...
+ # HMS: This is $host because we need the -D if we are building *for* it.
+ # HMS: 061029: Now that we separate the ss_* checks this is causing
+ # a problem - disable it until we get to the bottom of it.
case "$host" in
- *-*-hpux11.11) CPPFLAGS="$CPPFLAGS -D_NETINET_IN6_H"
+ XXX*-*-hpux11.11) CPPFLAGS="$CPPFLAGS -D_NETINET_IN6_H"
;;
esac
fi
@@ -13263,7 +41159,6 @@ if test "${ac_cv_have___ss_family_in_struct_ss+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13283,11 +41178,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13301,7 +41206,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_have___ss_family_in_struct_ss="no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_have___ss_family_in_struct_ss" >&5
@@ -13317,6 +41222,142 @@ fi
+echo "$as_me:$LINENO: checking for ss_len field in struct sockaddr_storage" >&5
+echo $ECHO_N "checking for ss_len field in struct sockaddr_storage... $ECHO_C" >&6
+if test "${ac_cv_have_ss_len_in_struct_ss+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int
+main ()
+{
+ struct sockaddr_storage s; s.ss_len = 1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_have_ss_len_in_struct_ss="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_ss_len_in_struct_ss="no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have_ss_len_in_struct_ss" >&5
+echo "${ECHO_T}$ac_cv_have_ss_len_in_struct_ss" >&6
+if test "x$ac_cv_have_ss_len_in_struct_ss" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SS_LEN_IN_SS 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for __ss_len field in struct sockaddr_storage" >&5
+echo $ECHO_N "checking for __ss_len field in struct sockaddr_storage... $ECHO_C" >&6
+if test "${ac_cv_have___ss_len_in_struct_ss+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int
+main ()
+{
+ struct sockaddr_storage s; s.__ss_len = 1;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_have___ss_len_in_struct_ss="yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have___ss_len_in_struct_ss="no"
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_have___ss_len_in_struct_ss" >&5
+echo "${ECHO_T}$ac_cv_have___ss_len_in_struct_ss" >&6
+if test "x$ac_cv_have___ss_len_in_struct_ss" = "xyes" ; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE___SS_LEN_IN_SS 1
+_ACEOF
+
+fi
+
+
+
+
case "$ac_cv_header_machine_soundcard_h$ac_cv_header_sys_soundcard_h" in
*yes*)
echo "$as_me:$LINENO: checking for struct snd_size" >&5
@@ -13325,7 +41366,6 @@ if test "${ac_cv_struct_snd_size+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13350,11 +41390,21 @@ return ss->rec_size;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13367,7 +41417,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_struct_snd_size=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_struct_snd_size" >&5
@@ -13388,7 +41438,6 @@ if test "${ac_cv_struct_clockinfo_has_hz+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13408,11 +41457,21 @@ return pc->hz;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13425,7 +41484,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_struct_clockinfo_has_hz=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_struct_clockinfo_has_hz" >&5
@@ -13444,7 +41503,6 @@ if test "${ac_cv_struct_clockinfo_has_tickadj+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13464,11 +41522,21 @@ return pc->tickadj;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13481,7 +41549,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_struct_clockinfo_has_tickadj=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_struct_clockinfo_has_tickadj" >&5
@@ -13500,7 +41568,6 @@ if test "${ac_cv_struct_timespec+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13526,11 +41593,21 @@ struct timespec n;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13543,7 +41620,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_struct_timespec=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_struct_timespec" >&5
echo "${ECHO_T}$ac_cv_struct_timespec" >&6
@@ -13561,7 +41638,6 @@ if test "${ac_cv_struct_ntptimeval+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13580,11 +41656,21 @@ struct ntptimeval n;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13597,7 +41683,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_struct_ntptimeval=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_struct_ntptimeval" >&5
echo "${ECHO_T}$ac_cv_struct_ntptimeval" >&6
@@ -13615,7 +41701,6 @@ if test "${ac_cv_member_struct_ntptimeval_time_tv_nsec+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13648,11 +41733,21 @@ return 0;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13664,7 +41759,6 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13697,11 +41791,21 @@ return 0;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13714,9 +41818,9 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_member_struct_ntptimeval_time_tv_nsec=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_member_struct_ntptimeval_time_tv_nsec" >&5
echo "${ECHO_T}$ac_cv_member_struct_ntptimeval_time_tv_nsec" >&6
@@ -13738,7 +41842,6 @@ else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13753,11 +41856,21 @@ $ac_kw foo_t foo () {return 0; }
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13769,23 +41882,27 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
fi
echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
echo "${ECHO_T}$ac_cv_c_inline" >&6
+
+
case $ac_cv_c_inline in
inline | yes) ;;
- no)
-cat >>confdefs.h <<\_ACEOF
-#define inline
-_ACEOF
- ;;
- *) cat >>confdefs.h <<_ACEOF
-#define inline $ac_cv_c_inline
+ *)
+ case $ac_cv_c_inline in
+ no) ac_val=;;
+ *) ac_val=$ac_cv_c_inline;;
+ esac
+ cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
_ACEOF
- ;;
+ ;;
esac
@@ -13795,7 +41912,6 @@ if test "${ac_cv_c_char_unsigned+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13814,11 +41930,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13831,7 +41957,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_c_char_unsigned=yes
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5
echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6
@@ -13847,7 +41973,6 @@ if test "${ac_cv_type_signed_char+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13867,11 +41992,21 @@ if (sizeof (signed char))
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13884,7 +42019,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_signed_char=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_signed_char" >&5
echo "${ECHO_T}$ac_cv_type_signed_char" >&6
@@ -13902,7 +42037,6 @@ else
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13921,11 +42055,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13934,7 +42078,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -13953,11 +42096,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -13969,20 +42122,19 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14001,11 +42153,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14014,7 +42176,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14033,11 +42194,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14049,13 +42220,13 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
else
echo "$as_me: failed program was:" >&5
@@ -14063,14 +42234,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_lo= ac_hi=
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
# Binary search between lo and hi bounds.
while test "x$ac_lo" != "x$ac_hi"; do
ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14089,11 +42259,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14106,7 +42286,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_lo=`expr '(' $ac_mid ')' + 1`
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_signed_char=$ac_lo;;
@@ -14125,7 +42305,6 @@ See \`config.log' for more details." >&2;}
{ (exit 1); exit 1; }; }
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14187,7 +42366,7 @@ echo "$as_me: error: cannot compute sizeof (signed char), 77
See \`config.log' for more details." >&2;}
{ (exit 1); exit 1; }; }
fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
rm -f conftest.val
@@ -14208,7 +42387,6 @@ if test "${ac_cv_type_int+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14228,11 +42406,21 @@ if (sizeof (int))
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14245,7 +42433,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_int=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
echo "${ECHO_T}$ac_cv_type_int" >&6
@@ -14263,7 +42451,6 @@ else
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14282,11 +42469,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14295,7 +42492,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14314,11 +42510,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14330,20 +42536,19 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14362,11 +42567,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14375,7 +42590,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14394,11 +42608,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14410,13 +42634,13 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
else
echo "$as_me: failed program was:" >&5
@@ -14424,14 +42648,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_lo= ac_hi=
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
# Binary search between lo and hi bounds.
while test "x$ac_lo" != "x$ac_hi"; do
ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14450,11 +42673,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14467,7 +42700,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_lo=`expr '(' $ac_mid ')' + 1`
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_int=$ac_lo;;
@@ -14486,7 +42719,6 @@ See \`config.log' for more details." >&2;}
{ (exit 1); exit 1; }; }
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14548,7 +42780,7 @@ echo "$as_me: error: cannot compute sizeof (int), 77
See \`config.log' for more details." >&2;}
{ (exit 1); exit 1; }; }
fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
rm -f conftest.val
@@ -14569,7 +42801,6 @@ if test "${ac_cv_type_long+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14589,11 +42820,21 @@ if (sizeof (long))
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14606,7 +42847,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_long=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
echo "${ECHO_T}$ac_cv_type_long" >&6
@@ -14624,7 +42865,6 @@ else
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14643,11 +42883,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14656,7 +42906,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14675,11 +42924,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14691,20 +42950,19 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
ac_lo=`expr $ac_mid + 1`
- if test $ac_lo -le $ac_mid; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14723,11 +42981,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14736,7 +43004,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14755,11 +43022,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14771,13 +43048,13 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
ac_hi=`expr '(' $ac_mid ')' - 1`
- if test $ac_mid -le $ac_hi; then
- ac_lo= ac_hi=
- break
- fi
- ac_mid=`expr 2 '*' $ac_mid`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
else
echo "$as_me: failed program was:" >&5
@@ -14785,14 +43062,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_lo= ac_hi=
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
# Binary search between lo and hi bounds.
while test "x$ac_lo" != "x$ac_hi"; do
ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14811,11 +43087,21 @@ test_array [0] = 0
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14828,7 +43114,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_lo=`expr '(' $ac_mid ')' + 1`
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
case $ac_lo in
?*) ac_cv_sizeof_long=$ac_lo;;
@@ -14847,7 +43133,6 @@ See \`config.log' for more details." >&2;}
{ (exit 1); exit 1; }; }
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14909,7 +43194,7 @@ echo "$as_me: error: cannot compute sizeof (long), 77
See \`config.log' for more details." >&2;}
{ (exit 1); exit 1; }; }
fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
rm -f conftest.val
@@ -14931,7 +43216,6 @@ if test "${ac_cv_type_s_char+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -14951,11 +43235,21 @@ if (sizeof (s_char))
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -14968,7 +43262,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_s_char=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_s_char" >&5
echo "${ECHO_T}$ac_cv_type_s_char" >&6
@@ -15020,7 +43314,6 @@ if test "${ac_cv_type_uid_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -15055,10 +43348,16 @@ fi
case "$host" in
- *-*-linux*)
-
+ *-*-aix[45]*)
+ # (prr) aix 4.1 doesn't have clock_settime, but in aix 4.3 it's a stub
+ # (returning ENOSYS). I didn't check 4.2. If, in the future,
+ # IBM pulls its thumbs out long enough to implement clock_settime,
+ # this conditional will need to change. Maybe use AC_TRY_RUN
+ # instead to try to set the time to itself and check errno.
+ ;;
+ *)
-for ac_func in __adjtimex __ntp_gettime
+for ac_func in clock_gettime clock_settime
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -15067,21 +43366,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -15112,11 +43418,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15129,7 +43445,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -15143,17 +43460,8 @@ done
;;
esac
-case "$host" in
- *-*-aix[45]*)
- # (prr) aix 4.1 doesn't have clock_settime, but in aix 4.3 it's a stub
- # (returning ENOSYS). I didn't check 4.2. If, in the future,
- # IBM pulls its thumbs out long enough to implement clock_settime,
- # this conditional will need to change. Maybe use AC_TRY_RUN
- # instead to try to set the time to itself and check errno.
- ;;
- *)
-for ac_func in clock_gettime clock_settime
+for ac_func in daemon
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -15162,21 +43470,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -15207,11 +43522,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15224,7 +43549,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -15236,10 +43562,8 @@ _ACEOF
fi
done
- ;;
-esac
-for ac_func in daemon
+for ac_func in finite
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -15248,21 +43572,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -15293,11 +43624,121 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+
+for ac_func in isfinite
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15310,7 +43751,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -15319,11 +43761,74 @@ if test `eval echo '${'$as_ac_var'}'` = yes; then
#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
+else
+ echo "$as_me:$LINENO: checking for isfinite with <math.h>" >&5
+echo $ECHO_N "checking for isfinite with <math.h>... $ECHO_C" >&6
+ _libs=$LIBS
+ LIBS="$LIBS -lm"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <math.h>
+int
+main ()
+{
+float f = 0.0; isfinite(f)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_ISFINITE 1
+_ACEOF
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$_libs
+fi
+done
+
fi
done
-for ac_func in finite
+
+
+for ac_func in getbootfile getclock getdtablesize
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -15332,21 +43837,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -15377,11 +43889,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15394,7 +43916,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -15403,9 +43926,34 @@ if test `eval echo '${'$as_ac_var'}'` = yes; then
#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
+fi
+done
+
+
+# Check whether --enable-getifaddrs or --disable-getifaddrs was given.
+if test "${enable_getifaddrs+set}" = set; then
+ enableval="$enable_getifaddrs"
+ want_getifaddrs="$enableval"
else
+ want_getifaddrs="yes"
+fi;
-for ac_func in isfinite
+case $want_getifaddrs in
+yes|glibc)
+#
+# Do we have getifaddrs() ?
+#
+case $host in
+*-linux*)
+ # Some recent versions of glibc support getifaddrs() which does not
+ # provide AF_INET6 addresses while the function provided by the USAGI
+ # project handles the AF_INET6 case correctly. We need to avoid
+ # using the former but prefer the latter unless overridden by
+ # --enable-getifaddrs=glibc.
+ if test $want_getifaddrs = glibc
+ then
+
+for ac_func in getifaddrs
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -15414,21 +43962,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -15459,11 +44014,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15476,7 +44041,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -15485,65 +44051,278 @@ if test `eval echo '${'$as_ac_var'}'` = yes; then
#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
+fi
+done
+
+ else
+ save_LIBS="$LIBS"
+ LIBS="-L/usr/local/v6/lib $LIBS"
+ echo "$as_me:$LINENO: checking for getifaddrs in -linet6" >&5
+echo $ECHO_N "checking for getifaddrs in -linet6... $ECHO_C" >&6
+if test "${ac_cv_lib_inet6_getifaddrs+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
- echo "$as_me:$LINENO: checking for isfinite with <math.h>" >&5
-echo $ECHO_N "checking for isfinite with <math.h>... $ECHO_C" >&6
- _libs=$LIBS
- LIBS="$LIBS -lm"
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-linet6 $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <math.h>
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char getifaddrs ();
int
main ()
{
-float f = 0.0; isfinite(f)
+getifaddrs ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISFINITE 1
+ ac_cv_lib_inet6_getifaddrs=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_inet6_getifaddrs=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_inet6_getifaddrs" >&5
+echo "${ECHO_T}$ac_cv_lib_inet6_getifaddrs" >&6
+if test $ac_cv_lib_inet6_getifaddrs = yes; then
+ LIBS="$LIBS -linet6"
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETIFADDRS 1
_ACEOF
else
+ LIBS=${save_LIBS}
+fi
+
+ fi
+ ;;
+*)
+
+for ac_func in getifaddrs
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- LIBS=$_libs
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
-done
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
fi
done
+ ;;
+esac
+;;
+no)
+;;
+esac
+echo "$as_me:$LINENO: checking type of socklen arg for getsockname()" >&5
+echo $ECHO_N "checking type of socklen arg for getsockname()... $ECHO_C" >&6
+if test "${ac_cv_func_getsockname_arg2+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "${ac_cv_func_getsockname_socklen_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ for ac_cv_func_getsockname_arg2 in 'struct sockaddr *' 'void *'; do
+ for ac_cv_func_getsockname_socklen_type in 'socklen_t' 'size_t' 'unsigned int' 'int'; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+extern getsockname (int, $ac_cv_func_getsockname_arg2, $ac_cv_func_getsockname_socklen_type *);
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_not_found=no ; break 2
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ac_not_found=yes
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+ done
+fi
+
+fi
+if test "$ac_not_found" = yes; then
+ ac_cv_func_getsockname_socklen_type='socklen_t'
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_getsockname_socklen_type" >&5
+echo "${ECHO_T}$ac_cv_func_getsockname_socklen_type" >&6
-for ac_func in getbootfile getclock getdtablesize getrusage
+cat >>confdefs.h <<_ACEOF
+#define GETSOCKNAME_SOCKLEN_TYPE $ac_cv_func_getsockname_socklen_type
+_ACEOF
+
+
+
+for ac_func in getrusage
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -15552,21 +44331,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -15597,11 +44383,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15614,7 +44410,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -15632,21 +44429,28 @@ if test "${ac_cv_func_gettimeofday+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define gettimeofday to an innocuous variant, in case <limits.h> declares gettimeofday.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define gettimeofday innocuous_gettimeofday
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gettimeofday (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef gettimeofday
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -15677,11 +44481,21 @@ return f != gettimeofday;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15694,7 +44508,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_gettimeofday=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_gettimeofday" >&5
echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6
@@ -15721,21 +44536,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -15766,11 +44588,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15783,7 +44615,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -15807,21 +44640,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -15852,11 +44692,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15869,7 +44719,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -15881,27 +44732,220 @@ _ACEOF
fi
done
+
+#
+# Check for if_nametoindex() for IPv6 scoped addresses support
+#
+echo "$as_me:$LINENO: checking for if_nametoindex" >&5
+echo $ECHO_N "checking for if_nametoindex... $ECHO_C" >&6
+if test "${ac_cv_func_if_nametoindex+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define if_nametoindex to an innocuous variant, in case <limits.h> declares if_nametoindex.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define if_nametoindex innocuous_if_nametoindex
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char if_nametoindex (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef if_nametoindex
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char if_nametoindex ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_if_nametoindex) || defined (__stub___if_nametoindex)
+choke me
+#else
+char (*f) () = if_nametoindex;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != if_nametoindex;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_if_nametoindex=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_if_nametoindex=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_if_nametoindex" >&5
+echo "${ECHO_T}$ac_cv_func_if_nametoindex" >&6
+if test $ac_cv_func_if_nametoindex = yes; then
+ ac_cv_have_if_nametoindex=yes
+else
+ ac_cv_have_if_nametoindex=no
+fi
+
+case $ac_cv_have_if_nametoindex in
+ no)
+ case "$host" in
+ *-hp-hpux*)
+ echo "$as_me:$LINENO: checking for if_nametoindex in -lipv6" >&5
+echo $ECHO_N "checking for if_nametoindex in -lipv6... $ECHO_C" >&6
+if test "${ac_cv_lib_ipv6_if_nametoindex+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipv6 $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char if_nametoindex ();
+int
+main ()
+{
+if_nametoindex ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_ipv6_if_nametoindex=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_ipv6_if_nametoindex=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_ipv6_if_nametoindex" >&5
+echo "${ECHO_T}$ac_cv_lib_ipv6_if_nametoindex" >&6
+if test $ac_cv_lib_ipv6_if_nametoindex = yes; then
+ ac_cv_have_if_nametoindex=yes
+ LIBS="-lipv6 $LIBS"
+fi
+
+ ;;
+ esac
+esac
+case $ac_cv_have_if_nametoindex in
+ yes)
+
+cat >>confdefs.h <<\_ACEOF
+#define ISC_PLATFORM_HAVEIFNAMETOINDEX 1
+_ACEOF
+
+ ;;
+esac
+
echo "$as_me:$LINENO: checking for inet_ntop" >&5
echo $ECHO_N "checking for inet_ntop... $ECHO_C" >&6
if test "${ac_cv_func_inet_ntop+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define inet_ntop to an innocuous variant, in case <limits.h> declares inet_ntop.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define inet_ntop innocuous_inet_ntop
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char inet_ntop (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef inet_ntop
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -15932,11 +44976,21 @@ return f != inet_ntop;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -15949,7 +45003,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_inet_ntop=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_inet_ntop" >&5
echo "${ECHO_T}$ac_cv_func_inet_ntop" >&6
@@ -15963,35 +45018,134 @@ _ACEOF
fi
+echo "$as_me:$LINENO: checking for inet_pton" >&5
+echo $ECHO_N "checking for inet_pton... $ECHO_C" >&6
+if test "${ac_cv_func_inet_pton+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define inet_pton to an innocuous variant, in case <limits.h> declares inet_pton.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define inet_pton innocuous_inet_pton
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char inet_pton (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+#undef inet_pton
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char inet_pton ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_inet_pton) || defined (__stub___inet_pton)
+choke me
+#else
+char (*f) () = inet_pton;
+#endif
+#ifdef __cplusplus
+}
+#endif
-for ac_func in K_open kvm_open memcpy memmove memset
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
+int
+main ()
+{
+return f != inet_pton;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_inet_pton=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_inet_pton=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_inet_pton" >&5
+echo "${ECHO_T}$ac_cv_func_inet_pton" >&6
+if test $ac_cv_func_inet_pton = yes; then
+ :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define ISC_PLATFORM_NEEDPTON 1
+_ACEOF
+
+fi
+
+echo "$as_me:$LINENO: checking for inet_aton" >&5
+echo $ECHO_N "checking for inet_aton... $ECHO_C" >&6
+if test "${ac_cv_func_inet_aton+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define inet_aton to an innocuous variant, in case <limits.h> declares inet_aton.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define inet_aton innocuous_inet_aton
+
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func (); below.
+ which can conflict with char inet_aton (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef inet_aton
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -15999,14 +45153,14 @@ extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char $ac_func ();
+char inet_aton ();
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+#if defined (__stub_inet_aton) || defined (__stub___inet_aton)
choke me
#else
-char (*f) () = $ac_func;
+char (*f) () = inet_aton;
#endif
#ifdef __cplusplus
}
@@ -16015,48 +45169,61 @@ char (*f) () = $ac_func;
int
main ()
{
-return f != $ac_func;
+return f != inet_aton;
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- eval "$as_ac_var=yes"
+ ac_cv_func_inet_aton=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-eval "$as_ac_var=no"
+ac_cv_func_inet_aton=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+echo "$as_me:$LINENO: result: $ac_cv_func_inet_aton" >&5
+echo "${ECHO_T}$ac_cv_func_inet_aton" >&6
+if test $ac_cv_func_inet_aton = yes; then
+ :
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define ISC_PLATFORM_NEEDATON 1
_ACEOF
fi
-done
-case "$host" in
- *-*-sco3.2v5.0.*)
- # Just stubs. Idiots.
- ;;
- *)
-for ac_func in mkstemp
+
+
+
+
+
+for ac_func in K_open kvm_open memcpy memmove memset
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -16065,21 +45232,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -16110,11 +45284,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16127,7 +45311,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -16139,10 +45324,12 @@ _ACEOF
fi
done
+case "$host" in
+ *-*-sco3.2v5.0.*)
+ # Just stubs. Idiots.
;;
-esac
-
-for ac_func in mktime
+ *)
+for ac_func in mkstemp
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -16151,21 +45338,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -16196,11 +45390,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16213,7 +45417,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -16225,24 +45430,10 @@ _ACEOF
fi
done
-case "$host" in
- *-*-aix[45]*)
- # Just a stub. Idiots.
- ;;
- *-*-irix[45]*)
- # Just a stub in "old" Irix. Idiots.
- ;;
- *-*-qnx*)
- # Apparently there but not working in QNX. Idiots?
;;
- *-*-sco3.2v5.0.*)
- # Just a stub. Idiots.
- ;;
- alpha*-dec-osf4*|alpha*-dec-osf5*)
- # mlockall is there, as a #define calling memlk via <sys/mman.h>
- # Not easy to test for - cheat.
+esac
-for ac_func in memlk
+for ac_func in mktime
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -16251,21 +45442,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -16296,11 +45494,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16313,7 +45521,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -16321,12 +45530,31 @@ if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<_ACEOF
#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
- ac_cv_func_mlockall='yes'
+
fi
done
+case "$host" in
+ *-*-aix[45]*)
+ # Just a stub. Idiots.
+ ;;
+ *-*-irix[45]*)
+ # Just a stub in "old" Irix. Idiots.
+ ;;
+ *-*-linux*)
+ # there, but more trouble than it is worth for now (resolver problems)
+ ;;
+ *-*-qnx*)
+ # Apparently there but not working in QNX. Idiots?
+ ;;
+ *-*-sco3.2v5.0.*)
+ # Just a stub. Idiots.
+ ;;
+ alpha*-dec-osf4*|alpha*-dec-osf5*)
+ # mlockall is there, as a #define calling memlk via <sys/mman.h>
+ # Not easy to test for - cheat.
-for ac_func in mlockall
+for ac_func in memlk
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -16335,21 +45563,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -16380,11 +45615,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16397,7 +45642,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -16405,12 +45651,11 @@ if test `eval echo '${'$as_ac_var'}'` = yes; then
cat >>confdefs.h <<_ACEOF
#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
-
+ ac_cv_func_mlockall='yes'
fi
done
- ;;
- *)
+
for ac_func in mlockall
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -16420,21 +45665,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -16465,11 +45717,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16482,7 +45744,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -16495,12 +45758,8 @@ fi
done
;;
-esac
-
-
-
-
-for ac_func in mrand48 srand48 nice nlist
+ *)
+for ac_func in mlockall
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -16509,21 +45768,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -16554,11 +45820,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16571,7 +45847,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -16583,13 +45860,11 @@ _ACEOF
fi
done
-case "$host" in
- *-*-solaris2.6)
- # Broken...
;;
- *)
+esac
-for ac_func in ntp_adjtime ntp_gettime
+
+for ac_func in nice nlist
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -16598,21 +45873,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -16643,11 +45925,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16660,7 +45952,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -16672,14 +45965,13 @@ _ACEOF
fi
done
+case "$host" in
+ *-*-solaris2.6)
+ # Broken...
;;
-esac
-
-
-
-
+ *)
-for ac_func in plock pututline pututxline readlink rtprio
+for ac_func in ntp_adjtime ntp_gettime
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -16688,21 +45980,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -16733,11 +46032,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16750,7 +46059,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -16762,10 +46072,15 @@ _ACEOF
fi
done
-case "$ac_cv_func_mrand48" in
- yes) ;;
- *)
-for ac_func in random
+ ;;
+esac
+
+
+
+
+
+
+for ac_func in plock pututline pututxline readlink recvmsg rtprio
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -16774,21 +46089,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -16819,11 +46141,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16836,7 +46168,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -16845,13 +46178,9 @@ if test `eval echo '${'$as_ac_var'}'` = yes; then
#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
-else
- LIBOBJS="$LIBOBJS $ac_func.$ac_objext"
fi
done
- ;;
-esac
case "$host" in
*-*-aix[45]*)
# Just a stub in AIX 4. Idiots.
@@ -16869,21 +46198,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -16914,11 +46250,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -16931,7 +46277,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -16958,21 +46305,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -17003,11 +46357,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17020,7 +46384,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -17042,21 +46407,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -17087,11 +46459,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17104,7 +46486,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -17126,21 +46509,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -17171,11 +46561,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17188,7 +46588,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -17217,21 +46618,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -17262,11 +46670,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17279,7 +46697,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -17307,21 +46726,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -17352,11 +46778,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17369,7 +46805,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -17394,21 +46831,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -17439,11 +46883,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17456,7 +46910,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -17478,21 +46933,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -17523,11 +46985,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17540,7 +47012,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -17576,21 +47049,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -17621,11 +47101,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17638,7 +47128,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -17666,21 +47157,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -17711,11 +47209,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17728,7 +47236,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -17746,7 +47255,8 @@ esac
-for ac_func in uname updwtmp updwtmpx vsprintf
+
+for ac_func in uname updwtmp updwtmpx vsnprintf vsprintf
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -17755,21 +47265,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -17800,11 +47317,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17817,7 +47344,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -17830,6 +47358,101 @@ fi
done
+###
+
+# http://bugs.ntp.isc.org/737
+case "$ac_cv_func_recvmsg" in
+ yes)
+ echo "$as_me:$LINENO: checking if we need extra help to define struct iovec" >&5
+echo $ECHO_N "checking if we need extra help to define struct iovec... $ECHO_C" >&6
+ if test "${ac_cv_struct_iovec_help+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ for ac_cv_struct_iovec_help in '0' '1'; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if $ac_cv_struct_iovec_help
+#include <sys/uio.h>
+#endif
+
+void foo();
+void foo() {
+ ssize_t x;
+ int s = 0;
+ struct iovec iov;
+ struct msghdr mh;
+ int flags = 0;
+
+ mh.msg_iov = &iov;
+ x = recvmsg(s, &mh, flags);
+}
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_worked=yes ; break 1
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_worked=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+
+fi
+ case "$ac_worked$ac_cv_struct_iovec_help" in
+ yes1)
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_SYS_UIO_H 1
+_ACEOF
+
+ ans=yes
+ ;;
+ *) ans=no
+ esac
+ echo "$as_me:$LINENO: result: $ans" >&5
+echo "${ECHO_T}$ans" >&6
+ ;;
+esac
+
case "$host" in
*-*-sunos4*)
@@ -17846,7 +47469,6 @@ if test "${ac_cv_func_Xettimeofday_nargs+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -17866,11 +47488,21 @@ settimeofday((struct timeval*)0,(struct timezone*)0);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17883,7 +47515,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_Xettimeofday_nargs=1
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_Xettimeofday_nargs" >&5
@@ -17902,7 +47534,6 @@ if test "${ac_cv_func_setpgrp_nargs+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -17926,11 +47557,21 @@ setpgrp(0,0);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -17943,7 +47584,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_setpgrp_nargs=0
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_setpgrp_nargs" >&5
@@ -17965,7 +47606,6 @@ if test "${ac_cv_func_qsort_argtype+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -17998,11 +47638,21 @@ qsort(base, 2, sizeof(char *), sortfunc);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18015,7 +47665,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_qsort_argtype=char
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_qsort_argtype" >&5
@@ -18038,7 +47688,6 @@ if test "${ac_cv_decl_errno+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -18057,11 +47706,21 @@ errno = 0;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18074,7 +47733,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_decl_errno=yes
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_decl_errno" >&5
echo "${ECHO_T}$ac_cv_decl_errno" >&6
@@ -18092,7 +47751,6 @@ if test "${ac_cv_decl_h_errno+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -18121,11 +47779,21 @@ extern int h_errno;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18138,7 +47806,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_decl_h_errno=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_decl_h_errno" >&5
echo "${ECHO_T}$ac_cv_decl_h_errno" >&6
@@ -18156,7 +47824,6 @@ if test "${ac_cv_decl_sys_errlist+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -18177,11 +47844,21 @@ extern char *sys_errlist[];
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18194,7 +47871,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_decl_sys_errlist=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_decl_sys_errlist" >&5
echo "${ECHO_T}$ac_cv_decl_sys_errlist" >&6
@@ -18212,7 +47889,6 @@ if test "${ac_cv_decl_syscall+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -18241,11 +47917,21 @@ extern int syscall P((int, ...));
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -18258,7 +47944,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_decl_syscall=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_decl_syscall" >&5
echo "${ECHO_T}$ac_cv_decl_syscall" >&6
@@ -18296,11 +47982,6 @@ _ACEOF
cat >>confdefs.h <<\_ACEOF
-#define DECL_MRAND48_0 1
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
#define DECL_SELECT_0 1
_ACEOF
@@ -18311,11 +47992,6 @@ _ACEOF
cat >>confdefs.h <<\_ACEOF
-#define DECL_SRAND48_0 1
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
#define DECL_SYSLOG_0 1
_ACEOF
@@ -18490,11 +48166,6 @@ _ACEOF
cat >>confdefs.h <<\_ACEOF
-#define DECL_MRAND48_0 1
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
#define DECL_RENAME_0 1
_ACEOF
@@ -18518,11 +48189,6 @@ cat >>confdefs.h <<\_ACEOF
#define DECL_SIGVEC_0 1
_ACEOF
-
-cat >>confdefs.h <<\_ACEOF
-#define DECL_SRAND48_0 1
-_ACEOF
-
case "`basename $ac_cv_prog_CC`" in
acc*) ;;
*)
@@ -18601,11 +48267,6 @@ _ACEOF
cat >>confdefs.h <<\_ACEOF
-#define DECL_MRAND48_0 1
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
#define DECL_NLIST_0 1
_ACEOF
@@ -18631,11 +48292,6 @@ _ACEOF
cat >>confdefs.h <<\_ACEOF
-#define DECL_SRAND48_0 1
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
#define DECL_STIME_0 1
_ACEOF
@@ -18780,7 +48436,7 @@ else
*-*-freebsd*)
ans=yes
;;
- *-*-netbsd*)
+ *-*-netbsd*3.[0-8]*|*-*-netbsd*[0-2].*|*-*-netbsd*3.99.[0-7])
ans=yes
;;
*-*-openbsd*)
@@ -18804,6 +48460,54 @@ _ACEOF
;;
esac
+echo "$as_me:$LINENO: checking if the OS misses to clear cached routes when more specific routes become available" >&5
+echo $ECHO_N "checking if the OS misses to clear cached routes when more specific routes become available... $ECHO_C" >&6
+if test "${ac_cv_os_routeupdates+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case "$host" in
+ *-*-netbsd*)
+ ans=yes
+ ;;
+ *) ans=no
+ ;;
+esac
+ac_cv_os_routeupdates=$ans
+fi
+echo "$as_me:$LINENO: result: $ac_cv_os_routeupdates" >&5
+echo "${ECHO_T}$ac_cv_os_routeupdates" >&6
+case "$ac_cv_os_routeupdates" in
+ yes)
+cat >>confdefs.h <<\_ACEOF
+#define OS_MISSES_SPECIFIC_ROUTE_UPDATES 1
+_ACEOF
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if the OS needs the wildcard socket set to REUSEADDR for binding interface addresses" >&5
+echo $ECHO_N "checking if the OS needs the wildcard socket set to REUSEADDR for binding interface addresses... $ECHO_C" >&6
+if test "${ac_cv_os_wildcardreuse+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case "$host" in
+ *-*-linux*)
+ ans=yes
+ ;;
+ *) ans=no
+ ;;
+esac
+ac_cv_os_wildcardreuse=$ans
+fi
+echo "$as_me:$LINENO: result: $ac_cv_os_wildcardreuse" >&5
+echo "${ECHO_T}$ac_cv_os_wildcardreuse" >&6
+case "$ac_cv_os_wildcardreuse" in
+ yes)
+cat >>confdefs.h <<\_ACEOF
+#define OS_NEEDS_REUSEADDR_FOR_IFADDRBIND 1
+_ACEOF
+ ;;
+esac
+
ntp_warning='GRONK'
echo "$as_me:$LINENO: checking if we'll use clock_settime or settimeofday or stime" >&5
echo $ECHO_N "checking if we'll use clock_settime or settimeofday or stime... $ECHO_C" >&6
@@ -18860,43 +48564,12 @@ _ACEOF
;;
esac
-echo "$as_me:$LINENO: checking for Streams/TLI" >&5
-echo $ECHO_N "checking for Streams/TLI... $ECHO_C" >&6
-if test "${ac_cv_var_streams_tli+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case "$ac_cv_header_sys_stropts_h" in
- yes)
- ans=no
- # There must be a better way...
- case "$host" in
- *-*-ptx*)
- ans=yes
- ;;
- esac
- ;;
- esac
- ac_cv_var_streams_tli=$ans
-fi
-echo "$as_me:$LINENO: result: $ac_cv_var_streams_tli" >&5
-echo "${ECHO_T}$ac_cv_var_streams_tli" >&6
-case "$ac_cv_var_streams_tli" in
- yes)
-
-cat >>confdefs.h <<\_ACEOF
-#define STREAMS_TLI 1
-_ACEOF
-
- ;;
-esac
-
echo "$as_me:$LINENO: checking for SIGIO" >&5
echo $ECHO_N "checking for SIGIO... $ECHO_C" >&6
if test "${ac_cv_hdr_def_sigio+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -18981,7 +48654,6 @@ if test "${ac_cv_hdr_def_sigpoll+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19011,7 +48683,6 @@ if test "${ac_cv_hdr_def_sigsys+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19167,7 +48838,6 @@ if test "${ac_cv_hdr_def_tiocdcdtimestamp+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19299,6 +48969,25 @@ fi
echo "$as_me:$LINENO: result: $ntp_ok" >&5
echo "${ECHO_T}$ntp_ok" >&6
+echo "$as_me:$LINENO: checking if we including processing time debugging code" >&5
+echo $ECHO_N "checking if we including processing time debugging code... $ECHO_C" >&6
+# Check whether --enable-debug-timing or --disable-debug-timing was given.
+if test "${enable_debug_timing+set}" = set; then
+ enableval="$enable_debug_timing"
+ ntp_ok=$enableval
+else
+ ntp_ok=no
+fi;
+if test "$ntp_ok" = "yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define DEBUG_TIMING 1
+_ACEOF
+
+fi
+echo "$as_me:$LINENO: result: $ntp_ok" >&5
+echo "${ECHO_T}$ntp_ok" >&6
+
echo "$as_me:$LINENO: checking for a the number of minutes in a DST adjustment" >&5
echo $ECHO_N "checking for a the number of minutes in a DST adjustment... $ECHO_C" >&6
# Check whether --enable-dst_minutes or --disable-dst_minutes was given.
@@ -19361,7 +49050,6 @@ else
case "$host" in
i386-sequent-sysv4) ;;
*) cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19385,10 +49073,35 @@ echo "$as_me:$LINENO: result: $ac_cv_var_mcast" >&5
echo "${ECHO_T}$ac_cv_var_mcast" >&6
case "$ac_cv_var_mcast" in
yes)
+
cat >>confdefs.h <<\_ACEOF
#define MCAST 1
_ACEOF
- ;;
+
+ echo "$as_me:$LINENO: checking arg type needed for IP*_MULTICAST_LOOP for setsockopt()" >&5
+echo $ECHO_N "checking arg type needed for IP*_MULTICAST_LOOP for setsockopt()... $ECHO_C" >&6
+if test "${ac_cv_var_typeof_ip_multicast_loop+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case "$host" in
+ *-*-netbsd*|*-*-linux*)
+ ac_cv_var_typeof_ip_multicast_loop=u_int
+ ;;
+ *-*-winnt*)
+ ac_cv_var_typeof_ip_multicast_loop=BOOL
+ ;;
+ *) ac_cv_var_typeof_ip_multicast_loop=u_char
+ ;;
+ esac
+fi
+echo "$as_me:$LINENO: result: $ac_cv_var_typeof_ip_multicast_loop" >&5
+echo "${ECHO_T}$ac_cv_var_typeof_ip_multicast_loop" >&6
+
+cat >>confdefs.h <<_ACEOF
+#define TYPEOF_IP_MULTICAST_LOOP $ac_cv_var_typeof_ip_multicast_loop
+_ACEOF
+
+ ;;
esac
echo "$as_me:$LINENO: checking availability of ntp_{adj,get}time()" >&5
@@ -19397,16 +49110,14 @@ if test "${ac_cv_var_ntp_syscalls+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_cv_var_ntp_syscalls=no
- case "$ac_cv_func___adjtimex" in
- yes)
+ case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime$ac_cv_func___adjtimex" in
+ yesyes*)
ac_cv_var_ntp_syscalls=libc
;;
- *) case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime" in
- yesyes)
- ac_cv_var_ntp_syscalls=libc
- ;;
- *) cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
+ *yes)
+ ac_cv_var_ntp_syscalls=inline
+ ;;
+ *) cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19424,9 +49135,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
fi
rm -f conftest*
- ;;
- esac
- ;;
+ ;;
esac
fi
echo "$as_me:$LINENO: result: $ac_cv_var_ntp_syscalls" >&5
@@ -19456,7 +49165,6 @@ if test "${ac_cv_var_sta_fll+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19540,7 +49248,6 @@ echo "$as_me:$LINENO: checking ioctl TIOCGPPSEV" >&5
echo $ECHO_N "checking ioctl TIOCGPPSEV... $ECHO_C" >&6
if test "$ac_cv_header_termios_h" = "yes"; then
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19579,7 +49286,6 @@ echo "$as_me:$LINENO: checking ioctl TIOCSPPS" >&5
echo $ECHO_N "checking ioctl TIOCSPPS... $ECHO_C" >&6
if test "$ac_cv_header_termios_h" = "yes"; then
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19618,7 +49324,6 @@ echo "$as_me:$LINENO: checking ioctl CIOGETEV" >&5
echo $ECHO_N "checking ioctl CIOGETEV... $ECHO_C" >&6
if test "$ac_cv_header_sys_ppsclock_h" = "yes"; then
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19668,20 +49373,25 @@ ac_cv_var_atom_ok=yes
# The PPSAPI headers need "inline" ($ac_cv_c_inline='inline')
-# The PPSAPI needs ATOM
-
# The PPSAPI needs struct timespec.
-case "$ac_cv_c_inline$ac_cv_struct_timespec$ac_cv_header_timepps_h$ac_cv_header_sys_timepps_h" in
- inlineyes*yes*)
+# The PPSAPI also needs a timepps header.
+
+case "$ac_cv_c_inline$ac_cv_struct_timespec" in
+ inlineyes)
+ case "$ac_cv_header_timepps_h$ac_cv_header_sys_timepps_h$host_os" in
+ *yes* | *sunos* | *solaris* | *sco* | *netbsd* )
cat >>confdefs.h <<\_ACEOF
#define HAVE_PPSAPI 1
_ACEOF
- ac_cv_var_oncore_ok=yes
- ac_cv_var_ripe_ncc_ok=yes
- ac_cv_var_jupiter_ok=yes
+ ac_cv_var_jupiter_ok=yes
+ ac_cv_var_oncore_ok=yes
+ ac_cv_var_parse_ok=yes
+ ac_cv_var_ripe_ncc_ok=yes
+ ;;
+ esac
;;
esac
@@ -19699,7 +49409,6 @@ else
echo "$as_me:$LINENO: checking linux/serial.h usability" >&5
echo $ECHO_N "checking linux/serial.h usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19710,11 +49419,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -19727,7 +49446,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -19735,7 +49454,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking linux/serial.h presence" >&5
echo $ECHO_N "checking linux/serial.h presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19753,6 +49471,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -19772,33 +49491,32 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: linux/serial.h: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: linux/serial.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: linux/serial.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: linux/serial.h: proceeding with the preprocessor's result" >&2;}
- (
- cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
+ { echo "$as_me:$LINENO: WARNING: linux/serial.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: linux/serial.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
;;
- no:yes )
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: linux/serial.h: present but cannot be compiled" >&5
echo "$as_me: WARNING: linux/serial.h: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: linux/serial.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: linux/serial.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/serial.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: linux/serial.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/serial.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: linux/serial.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/serial.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: linux/serial.h: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: linux/serial.h: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: linux/serial.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/serial.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: linux/serial.h: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------ ##
+## Report this to the ntp lists. ##
+## ------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -19822,7 +49540,6 @@ echo $ECHO_N "checking ioctl TIOCGSERIAL... $ECHO_C" >&6
case "$ac_cv_header_sys_ppsclock_h$ac_cv_header_linux_serial_h" in
yesyes)
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -19970,6 +49687,7 @@ fi;
echo "$as_me:$LINENO: result: $ntp_eac" >&5
echo "${ECHO_T}$ntp_eac" >&6
+# HMS: Should we also require ac_cv_var_parse_ok?
echo "$as_me:$LINENO: checking if we have support for PARSE clocks" >&5
echo $ECHO_N "checking if we have support for PARSE clocks... $ECHO_C" >&6
case "$ac_cv_var_atom_ok$ac_cv_header_termio_h$ac_cv_header_termios_h" in
@@ -20018,7 +49736,6 @@ if test "${enable_ACTS+set}" = set; then
ntp_ok=$enableval
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -20280,7 +49997,6 @@ if test "${enable_HEATH+set}" = set; then
ntp_ok=$enableval
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -20485,25 +50201,6 @@ fi
echo "$as_me:$LINENO: result: $ntp_ok" >&5
echo "${ECHO_T}$ntp_ok" >&6
-echo "$as_me:$LINENO: checking EES M201 MSF receiver" >&5
-echo $ECHO_N "checking EES M201 MSF receiver... $ECHO_C" >&6
-# Check whether --enable-MSFEES or --disable-MSFEES was given.
-if test "${enable_MSFEES+set}" = set; then
- enableval="$enable_MSFEES"
- ntp_ok=$enableval
-else
- ntp_ok=$ntp_eac
-fi;
-if test "$ntp_ok" = "yes"; then
- ntp_refclock=yes
-
-cat >>confdefs.h <<\_ACEOF
-#define CLOCK_MSFEES 1
-_ACEOF
-
-fi
-echo "$as_me:$LINENO: result: $ntp_ok" >&5
-echo "${ECHO_T}$ntp_ok" >&6
# Not Ultrix
echo "$as_me:$LINENO: checking Magnavox MX4200 GPS receiver" >&5
@@ -20665,50 +50362,6 @@ fi
echo "$as_me:$LINENO: result: $ntp_ok" >&5
echo "${ECHO_T}$ntp_ok" >&6
-# Requires modem control
-echo "$as_me:$LINENO: checking PTB modem service" >&5
-echo $ECHO_N "checking PTB modem service... $ECHO_C" >&6
-# Check whether --enable-PTBACTS or --disable-PTBACTS was given.
-if test "${enable_PTBACTS+set}" = set; then
- enableval="$enable_PTBACTS"
- ntp_ok=$enableval
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <termios.h>
-#ifdef HAVE_SYS_IOCTL_H
-#include <sys/ioctl.h>
-#endif
-#ifdef TIOCMBIS
- yes
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then
- ntp_ok=$ntp_eac
-else
- ntp_ok=no
-fi
-rm -f conftest*
-
-fi;
-if test "$ntp_ok" = "yes"; then
- ntp_refclock=yes
-
-cat >>confdefs.h <<\_ACEOF
-#define CLOCK_PTBACTS 1
-_ACEOF
-
-fi
-echo "$as_me:$LINENO: result: $ntp_ok" >&5
-echo "${ECHO_T}$ntp_ok" >&6
-
echo "$as_me:$LINENO: checking RIPENCC specific Trimble driver" >&5
echo $ECHO_N "checking RIPENCC specific Trimble driver... $ECHO_C" >&6
# Check whether --enable-RIPENCC or --disable-RIPENCC was given.
@@ -20808,25 +50461,6 @@ case "$ntp_ok$ac_cv_header_sys_tpro" in
echo "$as_me: WARNING: *** But the expected answer is... no ***" >&2;} ;;
esac
-echo "$as_me:$LINENO: checking TRAK 8810 GPS receiver" >&5
-echo $ECHO_N "checking TRAK 8810 GPS receiver... $ECHO_C" >&6
-# Check whether --enable-TRAK or --disable-TRAK was given.
-if test "${enable_TRAK+set}" = set; then
- enableval="$enable_TRAK"
- ntp_ok=$enableval
-else
- ntp_ok=$ntp_eac
-fi;
-if test "$ntp_ok" = "yes"; then
- ntp_refclock=yes
-
-cat >>confdefs.h <<\_ACEOF
-#define CLOCK_TRAK 1
-_ACEOF
-
-fi
-echo "$as_me:$LINENO: result: $ntp_ok" >&5
-echo "${ECHO_T}$ntp_ok" >&6
# Not on a vax-dec-bsd
echo "$as_me:$LINENO: checking Kinemetrics/TrueTime receivers" >&5
@@ -20900,50 +50534,6 @@ fi
echo "$as_me:$LINENO: result: $ntp_ok" >&5
echo "${ECHO_T}$ntp_ok" >&6
-# Requires modem control
-echo "$as_me:$LINENO: checking USNO modem service" >&5
-echo $ECHO_N "checking USNO modem service... $ECHO_C" >&6
-# Check whether --enable-USNO or --disable-USNO was given.
-if test "${enable_USNO+set}" = set; then
- enableval="$enable_USNO"
- ntp_ok=$enableval
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <termios.h>
-#ifdef HAVE_SYS_IOCTL_H
-#include <sys/ioctl.h>
-#endif
-#ifdef TIOCMBIS
- yes
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then
- ntp_ok=$ntp_eac
-else
- ntp_ok=no
-fi
-rm -f conftest*
-
-fi;
-if test "$ntp_ok" = "yes"; then
- ntp_refclock=yes
-
-cat >>confdefs.h <<\_ACEOF
-#define CLOCK_USNO 1
-_ACEOF
-
-fi
-echo "$as_me:$LINENO: result: $ntp_ok" >&5
-echo "${ECHO_T}$ntp_ok" >&6
-
echo "$as_me:$LINENO: checking WWV receiver" >&5
echo $ECHO_N "checking WWV receiver... $ECHO_C" >&6
# Check whether --enable-WWV or --disable-WWV was given.
@@ -21002,6 +50592,7 @@ else
yes) ntp_eapc=$ntp_canparse ;;
*) ntp_eapc=no ;;
esac
+ # Delete the next line one of these days
ntp_eapc=no
fi;
echo "$as_me:$LINENO: result: $ntp_eapc" >&5
@@ -21382,7 +50973,8 @@ _ACEOF
LIBPARSE=../libparse/libparse.a
MAKE_LIBPARSE=libparse.a
- MAKE_CHECK_Y2K=check_y2k
+ # HMS: check_y2k trips the 34 year problem now...
+ false && MAKE_CHECK_Y2K=check_y2k
cat >>confdefs.h <<\_ACEOF
#define PPS_SAMPLE 1
@@ -21408,8 +51000,6 @@ echo "${ECHO_T}$ans" >&6
-
-
echo "$as_me:$LINENO: checking for openssl library directory" >&5
echo $ECHO_N "checking for openssl library directory... $ECHO_C" >&6
@@ -21418,12 +51008,15 @@ if test "${with_openssl_libdir+set}" = set; then
withval="$with_openssl_libdir"
ans=$withval
else
- ans=yes
+ case "$build" in
+ $host) ans=yes ;;
+ *) ans=no ;;
+esac
fi;
case "$ans" in
no) ;;
yes) # Look in:
- ans="/usr/lib /usr/lib/openssl /usr/local/lib /usr/local/ssl/lib"
+ ans="/usr/lib /usr/lib/openssl /usr/sfw/lib /usr/local/lib /usr/local/ssl/lib"
;;
*) # Look where they said
;;
@@ -21438,6 +51031,7 @@ case "$ans" in
test -f $i/libcrypto.dylib -a -f $i/libssl.dylib && break
;;
*)
+ test -f $i/libcrypto.so -a -f $i/libssl.so && break
test -f $i/libcrypto.a -a -f $i/libssl.a && break
;;
esac
@@ -21464,12 +51058,15 @@ if test "${with_openssl_incdir+set}" = set; then
withval="$with_openssl_incdir"
ans=$withval
else
- ans=yes
+ case "$build" in
+ $host) ans=yes ;;
+ *) ans=no ;;
+esac
fi;
case "$ans" in
no) ;;
yes) # look in:
- ans="/usr/include /usr/local/include /usr/local/ssl/include"
+ ans="/usr/include /usr/sfw/include /usr/local/include /usr/local/ssl/include"
;;
*) # Look where they said
;;
@@ -21514,9 +51111,12 @@ case "$ans" in
ans=openssl
CPPFLAGS="$CPPFLAGS -I$OPENSSL_INC"
LDFLAGS="$LDFLAGS -L$OPENSSL_LIB"
+ case "$need_dash_r" in
+ 1) LDFLAGS="$LDFLAGS -R$OPENSSL_LIB"
+ ;;
+ esac
LCRYPTO=-lcrypto
- MAKE_NTP_KEYGEN=ntp-keygen
cat >>confdefs.h <<\_ACEOF
#define OPENSSL
@@ -21533,21 +51133,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -21578,11 +51185,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -21595,7 +51212,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -21639,23 +51257,17 @@ esac
echo "$as_me:$LINENO: result: $ans" >&5
echo "${ECHO_T}$ans" >&6
-echo "$as_me:$LINENO: checking if we want to try SNTP" >&5
-echo $ECHO_N "checking if we want to try SNTP... $ECHO_C" >&6
-
-# Check whether --with-sntp or --without-sntp was given.
-if test "${with_sntp+set}" = set; then
- withval="$with_sntp"
- ans=$withval
-else
- ans=no
-fi;
-case "$ans" in
- no) ;;
- *)
- MAKE_SNTP="sntp"
+echo "$as_me:$LINENO: checking if we want to run check-layout" >&5
+echo $ECHO_N "checking if we want to run check-layout... $ECHO_C" >&6
+case "$cross_compiling$PATH_PERL" in
+ no/*)
+ MAKE_CHECK_LAYOUT=check-layout
ans=yes
;;
+ *)
+ ans=no
+ ;;
esac
echo "$as_me:$LINENO: result: $ans" >&5
echo "${ECHO_T}$ans" >&6
@@ -21668,7 +51280,7 @@ echo $ECHO_N "checking if we can make dcf parse utilities... $ECHO_C" >&6
ans=no
if test "$ntp_parseutil" = "yes"; then
case "$host" in
- *-*-sunos4*|*-*-solaris2*|*-*-linux*)
+ *-*-sunos4*|*-*-solaris2*|*-*-linux*|*-*-netbsd*)
ans="dcfd testdcf"
DCFD=dcfd
TESTDCF=testdcf
@@ -22436,80 +52048,6 @@ case "$ac_cv_var_ntpd_sim" in
;;
esac
-echo "$as_me:$LINENO: checking if we want UDP wildcard delivery" >&5
-echo $ECHO_N "checking if we want UDP wildcard delivery... $ECHO_C" >&6
-if test "${ac_cv_var_udp_wildcard_delivery+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Check whether --enable-udp-wildcard or --disable-udp-wildcard was given.
-if test "${enable_udp_wildcard+set}" = set; then
- enableval="$enable_udp_wildcard"
- ans=$enableval
-else
- ans=no
- case "$host" in
- *-fujitsu-uxp*)
- ans=yes
- ;;
- *-univel-sysv*)
- ans=yes
- ;;
- *-*-aix3.2*)
- ans=yes
- ;;
- *-*-aix[45]*)
- ans=yes
- ;;
- *-*-bsdi*)
- ans=yes
- ;;
- *-*-domainos)
- ans=yes
- ;;
- *-*-freebsd*)
- ans=yes
- ;;
- *-*-hpux*)
- ans=yes
- ;;
- *-*-irix6*)
- ans=yes
- ;;
- *-*-linux*)
- ans=yes
- ;;
- *-*-mpeix*)
- ans=yes
- ;;
- *-*-osf*)
- ans=yes
- ;;
- *-*-ptx*)
- ans=yes
- ;;
- *-*-solaris2*)
- ans=yes
- ;;
- *-*-sunos4*)
- ans=yes
- ;;
- *-*-unicosmp*)
- ans=yes
- ;;
- esac
-fi;
-ac_cv_var_udp_wildcard_delivery=$ans
-fi
-echo "$as_me:$LINENO: result: $ac_cv_var_udp_wildcard_delivery" >&5
-echo "${ECHO_T}$ac_cv_var_udp_wildcard_delivery" >&6
-case "$ac_cv_var_udp_wildcard_delivery" in
- yes)
-cat >>confdefs.h <<\_ACEOF
-#define UDP_WILDCARD_DELIVERY 1
-_ACEOF
- ;;
-esac
-
case "$build" in
$host)
;;
@@ -22582,7 +52120,7 @@ else
ans=yes
;;
*-*-solaris2.1[0-9]*)
- ans-no
+ ans=no
;;
*-*-solaris2.[012]*)
ans=yes
@@ -22809,10 +52347,32 @@ _ACEOF
fi
+# Check whether --enable-ipv6 or --disable-ipv6 was given.
+if test "${enable_ipv6+set}" = set; then
+ enableval="$enable_ipv6"
+
+fi;
+
+case "$enable_ipv6" in
+ yes|''|autodetect)
+ case "$host" in
+ powerpc-ibm-aix4*) ;;
+ *)
+
+cat >>confdefs.h <<\_ACEOF
+#define WANT_IPV6
+_ACEOF
+
+ ;;
+ esac
+ ;;
+ no)
+ ;;
+esac
+
echo "$as_me:$LINENO: checking for IPv6 structures" >&5
echo $ECHO_N "checking for IPv6 structures... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -22832,11 +52392,21 @@ struct sockaddr_in6 sin6; return (0);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -22853,12 +52423,110 @@ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
found_ipv6=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+#
+# See whether IPv6 support is provided via a Kame add-on.
+# This is done before other IPv6 linking tests so LIBS is properly set.
+#
+echo "$as_me:$LINENO: checking for Kame IPv6 support" >&5
+echo $ECHO_N "checking for Kame IPv6 support... $ECHO_C" >&6
+
+# Check whether --with-kame or --without-kame was given.
+if test "${with_kame+set}" = set; then
+ withval="$with_kame"
+ use_kame="$withval"
+else
+ use_kame="no"
+fi;
+
+case "$use_kame" in
+ no)
+ ;;
+ yes)
+ kame_path=/usr/local/v6
+ ;;
+ *)
+ kame_path="$use_kame"
+ ;;
+esac
+
+case "$use_kame" in
+ no)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ *)
+ if test -f $kame_path/lib/libinet6.a; then
+ echo "$as_me:$LINENO: result: $kame_path/lib/libinet6.a" >&5
+echo "${ECHO_T}$kame_path/lib/libinet6.a" >&6
+ LIBS="-L$kame_path/lib -linet6 $LIBS"
+ else
+ { { echo "$as_me:$LINENO: error: $kame_path/lib/libinet6.a not found.
+
+Please choose the proper path with the following command:
+
+ configure --with-kame=PATH
+" >&5
+echo "$as_me: error: $kame_path/lib/libinet6.a not found.
+
+Please choose the proper path with the following command:
+
+ configure --with-kame=PATH
+" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ ;;
+esac
+
+#
+# Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
+# Including it on Kame-using platforms is very bad, though, because
+# Kame uses #error against direct inclusion. So include it on only
+# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
+# This is done before the in6_pktinfo check because that's what
+# netinet6/in6.h is needed for.
+#
+case "$host" in
+*-bsdi4.[01]*)
+ ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1"
+ LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1"
+ isc_netinet6in6_hack="#include <netinet6/in6.h>"
+ ;;
+*)
+ ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H"
+ LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H"
+ isc_netinet6in6_hack=""
+ ;;
+esac
+
+#
+# This is similar to the netinet6/in6.h issue.
+#
+case "$host" in
+*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
+ # UnixWare
+ # ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1"
+ # LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1"
+
+cat >>confdefs.h <<\_ACEOF
+#define ISC_PLATFORM_FIXIN6ISADDR 1
+_ACEOF
+
+ isc_netinetin6_hack="#include <netinet/in6.h>"
+ ;;
+*)
+ # ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H"
+ # LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H"
+ # ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR"
+ isc_netinetin6_hack=""
+ ;;
+esac
+
echo "$as_me:$LINENO: checking for struct if_laddrconf" >&5
echo $ECHO_N "checking for struct if_laddrconf... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -22878,11 +52546,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -22902,12 +52580,12 @@ sed 's/^/| /' conftest.$ac_ext >&5
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
echo "$as_me:$LINENO: checking for struct if_laddrreq" >&5
echo $ECHO_N "checking for struct if_laddrreq... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -22927,11 +52605,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -22951,7 +52639,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
case "$found_ipv6" in
yes)
@@ -22961,15 +52650,134 @@ cat >>confdefs.h <<\_ACEOF
_ACEOF
-cat >>confdefs.h <<\_ACEOF
-#define WANT_IPV6
+ echo "$as_me:$LINENO: checking for struct sockaddr_in6.sin6_scope_id" >&5
+echo $ECHO_N "checking for struct sockaddr_in6.sin6_scope_id... $ECHO_C" >&6
+if test "${ac_cv_member_struct_sockaddr_in6_sin6_scope_id+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+$isc_netinetin6_hack
+$isc_netinet6in6_hack
+
+
+int
+main ()
+{
+static struct sockaddr_in6 ac_aggr;
+if (ac_aggr.sin6_scope_id)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_member_struct_sockaddr_in6_sin6_scope_id=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+$isc_netinetin6_hack
+$isc_netinet6in6_hack
+
+
+int
+main ()
+{
+static struct sockaddr_in6 ac_aggr;
+if (sizeof ac_aggr.sin6_scope_id)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_member_struct_sockaddr_in6_sin6_scope_id=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_member_struct_sockaddr_in6_sin6_scope_id=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_in6_sin6_scope_id" >&5
+echo "${ECHO_T}$ac_cv_member_struct_sockaddr_in6_sin6_scope_id" >&6
+if test $ac_cv_member_struct_sockaddr_in6_sin6_scope_id = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
_ACEOF
+fi
+
+
echo "$as_me:$LINENO: checking for in6_pktinfo" >&5
echo $ECHO_N "checking for in6_pktinfo... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -22992,11 +52800,21 @@ struct in6_pktinfo xyzzy; return (0);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -23016,12 +52834,77 @@ sed 's/^/| /' conftest.$ac_ext >&5
echo "$as_me:$LINENO: result: no -- disabling runtime ipv6 support" >&5
echo "${ECHO_T}no -- disabling runtime ipv6 support" >&6
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:$LINENO: checking for in6addr_any" >&5
-echo $ECHO_N "checking for in6addr_any... $ECHO_C" >&6
+ # HMS: Use HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID instead?
+ echo "$as_me:$LINENO: checking for sin6_scope_id in struct sockaddr_in6" >&5
+echo $ECHO_N "checking for sin6_scope_id in struct sockaddr_in6... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+$isc_netinetin6_hack
+$isc_netinet6in6_hack
+
+int
+main ()
+{
+struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define ISC_PLATFORM_HAVESCOPEID
+_ACEOF
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ LWRES_HAVE_SIN6_SCOPE_ID="$result"
+
+ ;;
+esac
+
+# We need this check run all the time...
+echo "$as_me:$LINENO: checking for in6addr_any" >&5
+echo $ECHO_N "checking for in6addr_any... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -23045,11 +52928,21 @@ struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -23070,9 +52963,8 @@ _ACEOF
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- ;;
-esac
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
#
# Look for a sysctl call to get the list of network interfaces.
@@ -23080,7 +52972,6 @@ esac
echo "$as_me:$LINENO: checking for interface list sysctl" >&5
echo $ECHO_N "checking for interface list sysctl... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -23111,16 +53002,7 @@ fi
rm -f conftest*
-case "$build" in
- $host)
- ;;
- *) case "$host" in
- *-*-vxworks*)
- LDFLAGS="$LDFLAGS -r"
- ;;
- esac
- ;;
-esac
+###
ac_expanded=`(
@@ -23135,29 +53017,6 @@ _ACEOF
-
-if test -d $srcdir/arlib
-then
-
-# Check whether --with-arlib or --without-arlib was given.
-if test "${with_arlib+set}" = set; then
- withval="$with_arlib"
- ans=$withval
-else
- ans=no
-fi;
-
- case "$ans" in
- yes)
- ARLIB_DIR=arlib
-
-
-subdirs="$subdirs arlib"
-
- ;;
- esac
-fi
-
ac_config_files="$ac_config_files Makefile"
ac_config_files="$ac_config_files ElectricFence/Makefile"
@@ -23198,6 +53057,8 @@ fi
ac_config_files="$ac_config_files scripts/freq_adj"
+ ac_config_files="$ac_config_files scripts/html2man"
+
ac_config_files="$ac_config_files scripts/mkver"
ac_config_files="$ac_config_files scripts/ntp-wait"
@@ -23215,15 +53076,11 @@ fi
ac_config_files="$ac_config_files util/Makefile"
-case "$MAKE_SNTP" in
- '') ;;
- *)
+ac_subdirs_all="$ac_subdirs_all sntp"
subdirs="$subdirs sntp"
- ;;
-esac
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -23249,17 +53106,17 @@ _ACEOF
{
(set) 2>&1 |
case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
+ *ac_space=\ *])
# `set' does not quote correctly, so add quotes (double-quote
# substitution turns \\\\ into \\, and sed turns \\ into \).
sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
;;
*)
# `set' quotes correctly as required by POSIX, so do not add quotes.
sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
;;
esac;
} |
@@ -23289,13 +53146,13 @@ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
# trailing colons and then remove the whole line if VPATH becomes empty
# (actually we leave an empty line to preserve line numbers).
if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
s/:*\$(srcdir):*/:/;
s/:*\${srcdir}:*/:/;
s/:*@srcdir@:*/:/;
-s/^\([^=]*=[ ]*\):*/\1/;
+s/^\([^=]*=[ ]*\):*/\1/;
s/:*$//;
-s/^[^=]*=[ ]*$//;
+s/^[^=]*=[ ]*$//;
}'
fi
@@ -23306,7 +53163,7 @@ ac_ltlibobjs=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_i=`echo "$ac_i" |
- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
# 2. Add them.
ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
@@ -23337,6 +53194,27 @@ echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
+if test -z "${INSTALL_LIBOPTS_TRUE}" && test -z "${INSTALL_LIBOPTS_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"INSTALL_LIBOPTS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"INSTALL_LIBOPTS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${NEED_LIBOPTS_TRUE}" && test -z "${NEED_LIBOPTS_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"NEED_LIBOPTS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"NEED_LIBOPTS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
: ${CONFIG_STATUS=./config.status}
ac_clean_files_save=$ac_clean_files
@@ -23371,9 +53249,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
set -o posix
fi
+DUALCASE=1; export DUALCASE # for MKS sh
# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
as_unset=unset
else
as_unset=false
@@ -23392,7 +53271,7 @@ for as_var in \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
LC_TELEPHONE LC_TIME
do
- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
eval $as_var=C; export $as_var
else
$as_unset $as_var
@@ -23571,16 +53450,17 @@ rm -f conf$$ conf$$.exe conf$$.file
if mkdir -p . 2>/dev/null; then
as_mkdir_p=:
else
+ test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
as_executable_p="test -f"
# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
# IFS
@@ -23606,8 +53486,8 @@ _ASBOX
} >&5
cat >&5 <<_CSEOF
-This file was extended by $as_me, which was
-generated by GNU Autoconf 2.57. Invocation command line was
+This file was extended by ntp $as_me 4.2.4p5, which was
+generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -23651,9 +53531,9 @@ Usage: $0 [OPTIONS] [FILE]...
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
--file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
+ instantiate the configuration file FILE
--header=FILE[:TEMPLATE]
- instantiate the configuration header FILE
+ instantiate the configuration header FILE
Configuration files:
$config_files
@@ -23669,12 +53549,11 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-config.status
-configured by $0, generated by GNU Autoconf 2.57,
+ntp config.status 4.2.4p5
+configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
+Copyright (C) 2003 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
srcdir=$srcdir
@@ -23780,6 +53659,7 @@ for ac_config_target in $ac_config_targets
do
case "$ac_config_target" in
# Handling of arguments.
+ "libopts/Makefile" ) CONFIG_FILES="$CONFIG_FILES libopts/Makefile" ;;
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"ElectricFence/Makefile" ) CONFIG_FILES="$CONFIG_FILES ElectricFence/Makefile" ;;
"adjtimed/Makefile" ) CONFIG_FILES="$CONFIG_FILES adjtimed/Makefile" ;;
@@ -23800,6 +53680,7 @@ do
"scripts/calc_tickadj" ) CONFIG_FILES="$CONFIG_FILES scripts/calc_tickadj" ;;
"scripts/checktime" ) CONFIG_FILES="$CONFIG_FILES scripts/checktime" ;;
"scripts/freq_adj" ) CONFIG_FILES="$CONFIG_FILES scripts/freq_adj" ;;
+ "scripts/html2man" ) CONFIG_FILES="$CONFIG_FILES scripts/html2man" ;;
"scripts/mkver" ) CONFIG_FILES="$CONFIG_FILES scripts/mkver" ;;
"scripts/ntp-wait" ) CONFIG_FILES="$CONFIG_FILES scripts/ntp-wait" ;;
"scripts/ntpsweep" ) CONFIG_FILES="$CONFIG_FILES scripts/ntpsweep" ;;
@@ -23895,18 +53776,6 @@ s,@ECHO_C@,$ECHO_C,;t t
s,@ECHO_N@,$ECHO_N,;t t
s,@ECHO_T@,$ECHO_T,;t t
s,@LIBS@,$LIBS,;t t
-s,@build@,$build,;t t
-s,@build_cpu@,$build_cpu,;t t
-s,@build_vendor@,$build_vendor,;t t
-s,@build_os@,$build_os,;t t
-s,@host@,$host,;t t
-s,@host_cpu@,$host_cpu,;t t
-s,@host_vendor@,$host_vendor,;t t
-s,@host_os@,$host_os,;t t
-s,@target@,$target,;t t
-s,@target_cpu@,$target_cpu,;t t
-s,@target_vendor@,$target_vendor,;t t
-s,@target_os@,$target_os,;t t
s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
s,@INSTALL_DATA@,$INSTALL_DATA,;t t
@@ -23918,14 +53787,25 @@ s,@AUTOCONF@,$AUTOCONF,;t t
s,@AUTOMAKE@,$AUTOMAKE,;t t
s,@AUTOHEADER@,$AUTOHEADER,;t t
s,@MAKEINFO@,$MAKEINFO,;t t
-s,@AMTAR@,$AMTAR,;t t
s,@install_sh@,$install_sh,;t t
s,@STRIP@,$STRIP,;t t
s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s,@mkdir_p@,$mkdir_p,;t t
s,@AWK@,$AWK,;t t
s,@SET_MAKE@,$SET_MAKE,;t t
s,@am__leading_dot@,$am__leading_dot,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@am__tar@,$am__tar,;t t
+s,@am__untar@,$am__untar,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
s,@CC@,$CC,;t t
s,@CFLAGS@,$CFLAGS,;t t
s,@LDFLAGS@,$LDFLAGS,;t t
@@ -23944,15 +53824,38 @@ s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
s,@CPP@,$CPP,;t t
s,@EGREP@,$EGREP,;t t
+s,@LIBOPTS_DIR@,$LIBOPTS_DIR,;t t
+s,@INSTALL_LIBOPTS_TRUE@,$INSTALL_LIBOPTS_TRUE,;t t
+s,@INSTALL_LIBOPTS_FALSE@,$INSTALL_LIBOPTS_FALSE,;t t
+s,@NEED_LIBOPTS_TRUE@,$NEED_LIBOPTS_TRUE,;t t
+s,@NEED_LIBOPTS_FALSE@,$NEED_LIBOPTS_FALSE,;t t
+s,@LIBOPTS_LDADD@,$LIBOPTS_LDADD,;t t
+s,@LIBOPTS_CFLAGS@,$LIBOPTS_CFLAGS,;t t
+s,@BINSUBDIR@,$BINSUBDIR,;t t
+s,@subdirs@,$subdirs,;t t
+s,@ARLIB_DIR@,$ARLIB_DIR,;t t
s,@LN_S@,$LN_S,;t t
+s,@ECHO@,$ECHO,;t t
+s,@AR@,$AR,;t t
+s,@ac_ct_AR@,$ac_ct_AR,;t t
s,@RANLIB@,$RANLIB,;t t
s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+s,@CXXDEPMODE@,$CXXDEPMODE,;t t
+s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s,@CXXCPP@,$CXXCPP,;t t
+s,@F77@,$F77,;t t
+s,@FFLAGS@,$FFLAGS,;t t
+s,@ac_ct_F77@,$ac_ct_F77,;t t
+s,@LIBTOOL@,$LIBTOOL,;t t
s,@PATH_SH@,$PATH_SH,;t t
s,@PATH_PERL@,$PATH_PERL,;t t
s,@READLINE_LIBS@,$READLINE_LIBS,;t t
s,@U@,$U,;t t
s,@ANSI2KNR@,$ANSI2KNR,;t t
-s,@LIBOBJS@,$LIBOBJS,;t t
s,@LIBPARSE@,$LIBPARSE,;t t
s,@MAKE_LIBPARSE@,$MAKE_LIBPARSE,;t t
s,@MAKE_LIBPARSE_KERNEL@,$MAKE_LIBPARSE_KERNEL,;t t
@@ -23960,11 +53863,10 @@ s,@MAKE_CHECK_Y2K@,$MAKE_CHECK_Y2K,;t t
s,@OPENSSL@,$OPENSSL,;t t
s,@OPENSSL_INC@,$OPENSSL_INC,;t t
s,@OPENSSL_LIB@,$OPENSSL_LIB,;t t
-s,@MAKE_NTP_KEYGEN@,$MAKE_NTP_KEYGEN,;t t
s,@LCRYPTO@,$LCRYPTO,;t t
s,@EF_PROGS@,$EF_PROGS,;t t
s,@EF_LIBS@,$EF_LIBS,;t t
-s,@MAKE_SNTP@,$MAKE_SNTP,;t t
+s,@MAKE_CHECK_LAYOUT@,$MAKE_CHECK_LAYOUT,;t t
s,@TESTDCF@,$TESTDCF,;t t
s,@DCFD@,$DCFD,;t t
s,@MAKE_PARSEKMODULE@,$MAKE_PARSEKMODULE,;t t
@@ -23977,8 +53879,7 @@ s,@MAKE_TICKADJ@,$MAKE_TICKADJ,;t t
s,@MAKE_TIMETRIM@,$MAKE_TIMETRIM,;t t
s,@MAKE_LIBNTPSIM@,$MAKE_LIBNTPSIM,;t t
s,@MAKE_NTPDSIM@,$MAKE_NTPDSIM,;t t
-s,@ARLIB_DIR@,$ARLIB_DIR,;t t
-s,@subdirs@,$subdirs,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
s,@LTLIBOBJS@,$LTLIBOBJS,;t t
CEOF
@@ -24009,9 +53910,9 @@ _ACEOF
(echo ':t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
fi
ac_sed_frag=`expr $ac_sed_frag + 1`
ac_beg=$ac_end
@@ -24029,21 +53930,21 @@ for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case $ac_file in
- | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
*:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
* ) ac_file_in=$ac_file.in ;;
esac
# Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
ac_dir=`(dirname "$ac_file") 2>/dev/null ||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -24059,10 +53960,10 @@ echo X"$ac_file" |
as_dirs="$as_dir $as_dirs"
as_dir=`(dirname "$as_dir") 2>/dev/null ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -24100,12 +54001,45 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
case $INSTALL in
@@ -24127,7 +54061,7 @@ echo "$as_me: creating $ac_file" >&6;}
configure_input="$ac_file. "
fi
configure_input=$configure_input"Generated from `echo $ac_file_in |
- sed 's,.*/,,'` by configure."
+ sed 's,.*/,,'` by configure."
# First look for the input files in the build tree, otherwise in the
# src tree.
@@ -24136,24 +54070,24 @@ echo "$as_me: creating $ac_file" >&6;}
case $f in
-) echo $tmp/stdin ;;
[\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
- echo $f;;
+ echo "$f";;
*) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
- fi;;
+ fi;;
esac
done` || { (exit 1); exit 1; }
_ACEOF
@@ -24189,6 +54123,7 @@ s,@INSTALL@,$ac_INSTALL,;t t
scripts/calc_tickadj ) chmod +x scripts/calc_tickadj ;;
scripts/checktime ) chmod +x scripts/checktime ;;
scripts/freq_adj ) chmod +x scripts/freq_adj ;;
+ scripts/html2man ) chmod +x scripts/html2man ;;
scripts/mkver ) chmod +x scripts/mkver ;;
scripts/ntp-wait ) chmod +x scripts/ntp-wait ;;
scripts/ntpsweep ) chmod +x scripts/ntpsweep ;;
@@ -24209,12 +54144,12 @@ cat >>$CONFIG_STATUS <<\_ACEOF
# NAME is the cpp macro being defined and VALUE is the value it is being given.
#
# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-ac_dB='[ ].*$,\1#\2'
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
ac_dC=' '
ac_dD=',;t'
# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
ac_uB='$,\1#\2define\3'
ac_uC=' '
ac_uD=',;t'
@@ -24223,11 +54158,11 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case $ac_file in
- | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
*:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
* ) ac_file_in=$ac_file.in ;;
esac
@@ -24241,28 +54176,29 @@ echo "$as_me: creating $ac_file" >&6;}
case $f in
-) echo $tmp/stdin ;;
[\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
- echo $f;;
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
*) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
- fi;;
+ fi;;
esac
done` || { (exit 1); exit 1; }
# Remove the trailing spaces.
- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
_ACEOF
@@ -24285,9 +54221,9 @@ s/[\\&,]/\\&/g
s,[\\$`],\\&,g
t clear
: clear
-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
t end
-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
: end
_ACEOF
# If some macros were called several times there might be several times
@@ -24301,13 +54237,13 @@ rm -f confdef2sed.sed
# example, in the case of _POSIX_SOURCE, which is predefined and required
# on some systems where configure will not decide to define it.
cat >>conftest.undefs <<\_ACEOF
-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
_ACEOF
# Break up conftest.defines because some shells have a limit on the size
# of here documents, and old seds have small limits too (100 cmds).
echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
echo ' :' >>$CONFIG_STATUS
rm -f conftest.tail
@@ -24316,7 +54252,7 @@ do
# Write a limited-size here document to $tmp/defines.sed.
echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
# Speed up: don't consider the non `#define' lines.
- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
# Work around the forget-to-reset-the-flag bug.
echo 't clr' >>$CONFIG_STATUS
echo ': clr' >>$CONFIG_STATUS
@@ -24343,7 +54279,7 @@ do
# Write a limited-size here document to $tmp/undefs.sed.
echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
# Speed up: don't consider the non `#undef'
- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
# Work around the forget-to-reset-the-flag bug.
echo 't clr' >>$CONFIG_STATUS
echo ': clr' >>$CONFIG_STATUS
@@ -24377,10 +54313,10 @@ echo "$as_me: $ac_file is unchanged" >&6;}
else
ac_dir=`(dirname "$ac_file") 2>/dev/null ||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -24396,10 +54332,10 @@ echo X"$ac_file" |
as_dirs="$as_dir $as_dirs"
as_dir=`(dirname "$as_dir") 2>/dev/null ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -24431,10 +54367,10 @@ for _am_header in $config_headers :; do
done
echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X$ac_file : 'X\(//\)[^/]' \| \
- X$ac_file : 'X\(//\)$' \| \
- X$ac_file : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+ X$ac_file : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X$ac_file |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -24453,16 +54389,41 @@ for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_dest" : 'X\(//\)[^/]' \| \
- X"$ac_dest" : 'X\(//\)$' \| \
- X"$ac_dest" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$ac_dest" : 'X\(//\)[^/]' \| \
+ X"$ac_dest" : 'X\(//\)$' \| \
+ X"$ac_dest" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$ac_dest" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
ac_builddir=.
if test "$ac_dir" != .; then
@@ -24488,12 +54449,45 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
{ echo "$as_me:$LINENO: executing $ac_dest commands" >&5
@@ -24511,10 +54505,10 @@ echo "$as_me: executing $ac_dest commands" >&6;}
if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
dirpart=`(dirname "$mf") 2>/dev/null ||
$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
- X"$mf" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$mf" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -24524,36 +54518,30 @@ echo X"$mf" |
else
continue
fi
- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
- # Extract the definition of DEP_FILES from the Makefile without
- # running `make'.
- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n -e '/^U = / s///p' < "$mf"`
- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
- # We invoke sed twice because it is the simplest approach to
- # changing $(DEPDIR) to its actual value in the expansion.
- for file in `sed -n -e '
- /^DEP_FILES = .*\\\\$/ {
- s/^DEP_FILES = //
- :loop
- s/\\\\$//
- p
- n
- /\\\\$/ b loop
- p
- }
- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`(dirname "$file") 2>/dev/null ||
$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
- X"$file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -24569,10 +54557,10 @@ echo X"$file" |
as_dirs="$as_dir $as_dirs"
as_dir=`(dirname "$as_dir") 2>/dev/null ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -24680,10 +54668,10 @@ echo "$as_me: configuring in $ac_dir" >&6;}
as_dirs="$as_dir $as_dirs"
as_dir=`(dirname "$as_dir") 2>/dev/null ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -24721,12 +54709,45 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
cd $ac_dir
@@ -24750,15 +54771,15 @@ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;}
case $cache_file in
[\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;;
*) # Relative path.
- ac_sub_cache_file=$ac_top_builddir$cache_file ;;
+ ac_sub_cache_file=$ac_top_builddir$cache_file ;;
esac
{ echo "$as_me:$LINENO: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5
echo "$as_me: running $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;}
# The eval makes quoting arguments work.
eval $ac_sub_configure $ac_sub_configure_args \
- --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir ||
- { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5
+ --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir ||
+ { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5
echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;}
{ (exit 1); exit 1; }; }
fi
diff --git a/contrib/ntp/configure.in b/contrib/ntp/configure.ac
index 131d18f..4c6ba13 100644
--- a/contrib/ntp/configure.in
+++ b/contrib/ntp/configure.ac
@@ -1,15 +1,19 @@
dnl -*-fundamental-*-
dnl Process this file with autoconf to produce a configure script.
-AC_INIT(ntpd/ntp_refclock.c)
-AC_CANONICAL_SYSTEM
-AC_DEFINE_UNQUOTED(STR_SYSTEM, "$host", [canonical system (cpu-vendor-os) string])
+m4_include([version.m4])
+AC_INIT(ntp, VERSION_NUMBER)
+AM_INIT_AUTOMAKE
+AC_CANONICAL_HOST
+dnl the 'build' machine is where we run configure and compile
+dnl the 'host' machine is where the resulting stuff runs.
+AC_DEFINE_UNQUOTED(STR_SYSTEM, "$host", [canonical system (cpu-vendor-os) of where we should run])
AM_CONFIG_HEADER(config.h)
-AC_ARG_PROGRAM
-AM_INIT_AUTOMAKE(ntp, 4.2.0)
+dnl AC_ARG_PROGRAM
AC_PREREQ(2.53)
ac_cv_var_atom_ok=no
ac_cv_var_oncore_ok=no
+ac_cv_var_parse_ok=no
ac_cv_var_ripe_ncc_ok=no
ac_cv_var_jupiter_ok=no
@@ -22,13 +26,24 @@ AC_MINIX
dnl we need to check for cross compile tools for vxWorks here
AC_PROG_CC
+# Ralf Wildenhues: With per-target flags we need CC_C_O
+AC_PROG_CC_C_O
AC_PROG_CC_STDC
AC_PROG_CPP
+# HMS: These need to be moved to AM_CPPFLAGS and/or AM_CFLAGS
case "$host" in
*-*-amigaos)
CFLAGS="$CFLAGS -Dfork=vfork -DSYS_AMIGA"
;;
+ *-*-hpux10.*) # at least for hppa2.0-hp-hpux10.20
+ case "$GCC" in
+ yes)
+ ;;
+ *) CFLAGS="$CFLAGS -Wp,-H18816"
+ ;;
+ esac
+ ;;
*-pc-cygwin*)
CFLAGS="$CFLAGS -DSYS_CYGWIN32"
;;
@@ -44,13 +59,116 @@ case "$host" in
LDFLAGS="$LDFLAGS -L/SYSLOG/PUB"
LIBS="$LIBS -lcurses"
;;
+ *-*-solaris*)
+ # see "man standards".
+ # -D_XOPEN_SOURCE=500 is probably OK for c89 and before
+ # -D_XOPEN_SOURCE=600 seems OK for c99
+ #CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=500 -D__EXTENSIONS__"
+ CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
+ libxnet=-lxnet
+ ;;
+esac
+
+AMU_OS_CFLAGS
+
+# NTP has (so far) been relying on leading-edge autogen.
+# Therefore, by default:
+# - use the version we ship with
+# - do not install it
+# - build a static copy (AC_DISABLE_SHARED - done earlier)
+case "${enable_local_libopts+set}" in
+ set) ;;
+ *) enable_local_libopts=yes ;;
+esac
+case "${enable_libopts_install+set}" in
+ set) ;;
+ *) enable_libopts_install=no ;;
+esac
+LIBOPTS_CHECK(libopts)
+
+AC_MSG_CHECKING([[if $CC can handle #warning]])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#warning foo]])],[ac_cv_cpp_warning=yes],[ac_cv_cpp_warning=no])
+AC_MSG_RESULT([$ac_cv_cpp_warning])
+
+case "$ac_cv_cpp_warning" in
+ no)
+ AC_DEFINE([NO_OPTION_NAME_WARNINGS], [1], [Should we avoid #warning on option name collisions?])
+ AC_MSG_RESULT([[Enabling NO_OPTION_NAME_WARNINGS as #warning does not work]])
+ ;;
+esac
+
+AC_MSG_CHECKING(for bin subdirectory)
+AC_ARG_WITH(binsubdir,
+ AC_HELP_STRING([--with-binsubdir], [bin ={bin,sbin}]),
+ use_binsubdir="$withval", use_binsubdir="bin")
+
+case "$use_binsubdir" in
+ bin)
+ ;;
+ sbin)
+ ;;
+ *)
+ AC_MSG_ERROR([<$use_binsubdir> is illegal - must be "bin" or "sbin"])
+ ;;
+esac
+AC_MSG_RESULT($use_binsubdir)
+BINSUBDIR=$use_binsubdir
+AC_SUBST(BINSUBDIR)
+
+AC_MSG_CHECKING(if we want to use arlib)
+AC_ARG_WITH(arlib,
+ AC_HELP_STRING([--with-arlib], [- Compile the async resolver library?]),
+ [ans=$withval], [ans=no])
+AC_MSG_RESULT($ans)
+
+if test -d $srcdir/arlib
+then
+ case "$ans" in
+ yes)
+ ARLIB_DIR=arlib
+ AC_CONFIG_SUBDIRS(arlib)
+ ;;
+ esac
+fi
+AC_SUBST(ARLIB_DIR)
+
+AC_ARG_WITH(rpath,
+ AC_HELP_STRING([--without-rpath], [s Disable auto-added -R linker paths]),
+[ans=$withval], [ans=x])
+case "$ans" in
+ no)
+ need_dash_r=
+ ;;
+ yes)
+ need_dash_r=1
+ ;;
+esac
+# HMS: Why isn't this $build?
+# Well, that depends on if we need this for the build toolchain or
+# for info in the host executable...
+# I still have no idea which way this should go, but nobody has complained.
+case "$host" in
+ *-*-netbsd*)
+ case "$need_dash_r" in
+ no) ;;
+ *) need_dash_r=1
+ ;;
+ esac
+ ;;
+ *-*-solaris*)
+ case "$need_dash_r" in
+ no) ;;
+ *) need_dash_r=1
+ ;;
+ esac
+ ;;
esac
AC_CACHE_CHECK(if we should use /dev/clockctl, ac_clockctl,
[AC_ARG_ENABLE(clockctl,
- AC_HELP_STRING([--enable-clockctl], [Use /dev/clockctl for non-root time control]),
+ AC_HELP_STRING([--enable-clockctl], [s Use /dev/clockctl for non-root clock control]),
[ans=$enableval],
- [case "$target" in
+ [case "$host" in
*-*-netbsd*)
ans=yes
;;
@@ -63,7 +181,24 @@ ac_clockctl=$ans])
AC_CHECK_HEADERS(sys/clockctl.h)
case "$ac_clockctl$ac_cv_header_sys_clockctl_h" in
yesyes)
- AC_DEFINE(HAVE_CLOCKCTL, ,[[Use /dev/clockctl?]])
+ AC_DEFINE(HAVE_DROPROOT, ,[Can we drop root privileges?])
+ ;;
+esac
+
+AC_CACHE_CHECK(if we have linux capabilities (libcap), ac_linuxcaps,
+[AC_ARG_ENABLE(linuxcaps,
+ AC_HELP_STRING([--enable-linuxcaps], [s Use Linux capabilities for non-root clock control]),
+ [ans=$enableval],
+ [ans=no])
+ac_linuxcaps=$ans])
+# End of AC_CACHE_CHECK for linuxcaps
+AC_CHECK_HEADERS(sys/capability.h)
+AC_CHECK_HEADERS(sys/prctl.h)
+case "$ac_linuxcaps$ac_cv_header_sys_capability_h$ac_cv_header_sys_prctl_h" in
+ yesyesyes)
+ AC_DEFINE(HAVE_LINUX_CAPABILITIES, ,[Do we have Linux capabilities?])
+ AC_DEFINE(HAVE_DROPROOT, ,[Can we drop root privileges?])
+ LIBS="$LIBS -lcap"
;;
esac
@@ -74,7 +209,7 @@ case "$build" in
*-*-vxworks*)
# Quick and dirty sanity check
case "$VX_KERNEL" in
- '') AC_MSG_ERROR(Please follow the directions in html/vxworks.html!)
+ '') AC_MSG_ERROR(Please follow the directions in html/build/hints/vxworks.html!)
;;
esac
CFLAGS="$CFLAGS -DSYS_VXWORKS"
@@ -96,6 +231,8 @@ case "$GCC" in
CFLAGS="$CFLAGS -Wcast-qual"
# CFLAGS="$CFLAGS -Wconversion"
# CFLAGS="$CFLAGS -Werror"
+ # CFLAGS="$CFLAGS -Wextra"
+ # CFLAGS="$CFLAGS -Wfloat-equal"
CFLAGS="$CFLAGS -Wmissing-prototypes"
CFLAGS="$CFLAGS -Wpointer-arith"
CFLAGS="$CFLAGS -Wshadow"
@@ -106,43 +243,10 @@ case "$GCC" in
;;
esac
-ac_busted_vpath_in_make=no
-
case "$host" in
*-next-nextstep3)
CFLAGS="$CFLAGS -posix"
;;
- *-*-irix6.1*) # 64 bit only
- # busted vpath?
- ;;
- *-*-irix6*) # 6.2 (and later?)
- ac_busted_vpath_in_make=yes
- # don't pass -n32 to gcc, it cannot handle and doesn't need it
- if test "$GCC" != yes; then
- case "$CFLAGS" in
- *-n32*) ;;
- *-n64*) ;;
- *-64*) ;;
- *) case "$iCFLAGS" in
- '') CFLAGS="-O2 -g3 -n32" ;;
- *) CFLAGS="$CFLAGS -n32" ;;
- esac
- ;;
- esac
- case "$LDFLAGS" in
- *-n32*) ;;
- *-n64*) ;;
- *-64*) ;;
- *) LDFLAGS="$LDFLAGS -n32" ;;
- esac
- fi
- ;;
- *-*-solaris2.5.1)
- ac_busted_vpath_in_make=yes
- ;;
- *-*-unicosmp*)
- ac_busted_vpath_in_make=yes
- ;;
dnl This is currently commented out by bor.
dnl The new versions of ReliantUNIX round adjtime() interval down
dnl to 1/100s (system tick). This makes tickadj actually useless.
@@ -158,6 +262,23 @@ dnl fi
dnl ;;
esac
+ac_busted_vpath_in_make=no
+
+case "$build" in
+ *-*-irix6.1*) # 64 bit only
+ # busted vpath?
+ ;;
+ *-*-irix6*) # 6.2 (and later?)
+ ac_busted_vpath_in_make=yes
+ ;;
+ *-*-solaris2.5.1)
+ ac_busted_vpath_in_make=yes
+ ;;
+ *-*-unicosmp*)
+ ac_busted_vpath_in_make=yes
+ ;;
+esac
+
case "$ac_busted_vpath_in_make$srcdir" in
no*) ;;
yes.) ;;
@@ -173,11 +294,22 @@ esac
AC_SUBST(CFLAGS)dnl
AC_SUBST(LDFLAGS)dnl
+# HMS: From bunnylou/cowbird
+case "$host" in
+ alpha-dec-osf4.0)
+ AC_DISABLE_SHARED
+ ;;
+ *) # So far, the only shared library we might use is libopts.
+ # It's a small library - we might as well use a static version of it.
+ AC_DISABLE_SHARED
+ ;;
+esac
+
+AC_PROG_LIBTOOL
AC_PROG_LN_S
AC_PROG_GCC_TRADITIONAL
AC_C_VOLATILE
AC_ISC_POSIX
-AC_PROG_RANLIB
AC_PATH_PROG(PATH_SH, sh)
AC_PATH_PROG(PATH_PERL, perl)
@@ -196,15 +328,12 @@ case "$host" in
AC_CHECK_LIB(advapi32, main)
;;
esac
-AC_CHECK_LIB(elf, nlist) dnl Only needed for tickadj...
-dnl AC_CHECK_LIB(kvm, main, , , -lelf)
-AC_CHECK_LIB(kvm, main) dnl We already know about -lelf here...
-AC_CHECK_LIB(ld, nlist)
-AC_CHECK_LIB(mld, nlist)
-AC_CHECK_FUNC(gethostent, , AC_CHECK_LIB(nsl, gethostent, , , -lsocket))
+
+AC_CHECK_FUNC(gethostent, ,
+ AC_CHECK_LIB(nsl, gethostent, , , $libxnet -lsocket))
AC_CHECK_FUNC(openlog, ,
AC_CHECK_LIB(gen, openlog, ,
- AC_CHECK_LIB(syslog, openlog, , , -lsocket)))
+ AC_CHECK_LIB(syslog, openlog, , , $libxnet -lsocket)))
AC_CHECK_LIB(md5, MD5Init, ,
AC_CHECK_LIB(md, MD5Init))
AC_CHECK_FUNCS(MD5Init)
@@ -214,6 +343,8 @@ case "$ac_cv_header_readline_history_h$ac_cv_header_readline_readline_h" in
*no*) ;;
*) save_LIBS=$LIBS
LIBS=
+ # Ralf Wildenhues: either unset ... or cache READLINE_LIBS
+ unset ac_cv_lib_readline_readline
AC_CHECK_LIB(readline, readline, ,
AC_MSG_NOTICE([Trying again with -lcurses])
unset ac_cv_lib_readline_readline
@@ -247,16 +378,32 @@ case "$host" in
;;
esac
-AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))
+AC_CHECK_FUNC(setsockopt, ,
+ [AC_CHECK_LIB(socket, setsockopt)
+ AC_CHECK_LIB(xnet, setsockopt)])
AC_HEADER_STDC
-AC_CHECK_HEADERS(bstring.h errno.h fcntl.h ieeefp.h math.h)
+AC_CHECK_HEADERS(bstring.h)
+AC_CHECK_HEADER(dns_sd.h,
+ [AC_CHECK_LIB(dns_sd,
+ DNSServiceRegister,
+ [AC_DEFINE(HAVE_DNSREGISTRATION, 1,
+ [Use Rendezvous/DNS-SD registration])])])
+case "$ac_cv_lib_dns_sd_DNSServiceRegister" in
+ yes) LIBS="-ldns_sd $LIBS" ;;
+esac
+AC_CHECK_HEADERS(errno.h fcntl.h ieeefp.h math.h)
+
# HMS: Lame, but fast.
if test -f /etc/redhat-release
then
:
else
- AC_CHECK_HEADERS(md5.h)
+ AC_CHECK_HEADERS(md5.h, [], [],
+[#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+])
fi
AC_CHECK_HEADERS(memory.h netdb.h poll.h)
AC_CHECK_HEADERS(sched.h sgtty.h stdlib.h string.h termio.h)
@@ -272,12 +419,18 @@ case "$host" in
*) AC_CHECK_HEADERS(utmp.h utmpx.h) ;;
esac
AC_CHECK_HEADERS(arpa/nameser.h)
+AC_CHECK_HEADERS(sys/socket.h)
AC_CHECK_HEADERS(net/if.h, [], [],
[#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
])
AC_CHECK_HEADERS(net/if6.h)
+AC_CHECK_HEADERS(net/route.h, [], [], [
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>
+])
AC_CHECK_HEADERS(netinet/in_system.h netinet/in_systm.h)
AC_CHECK_HEADERS(netinet/in.h)
AC_CHECK_HEADERS(netinet/ip.h, [], [],
@@ -302,24 +455,49 @@ case "$host" in
esac
AC_CHECK_HEADERS(sys/ipc.h)
AC_CHECK_HEADERS(sys/lock.h sys/mman.h sys/modem.h sys/param.h sys/ppsclock.h)
-AC_CHECK_HEADERS(sys/ppstime.h sys/proc.h sys/resource.h sys/sched.h)
+# HMS: Check sys/proc.h and sys/resource.h after some others
+AC_CHECK_HEADERS(sys/ppstime.h)
+case "$ac_cv_header_sched_h" in
+ yes) ;;
+ *) AC_CHECK_HEADERS(sys/sched.h) ;;
+esac
case "$host" in
*-*-sco*)
AC_CHECK_HEADERS(sys/sio.h)
;;
esac
-AC_CHECK_HEADERS(sys/select.h sys/shm.h sys/signal.h sys/sockio.h)
-AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h)
+# HMS: Check sys/shm.h after some others
+AC_CHECK_HEADERS(sys/select.h sys/signal.h sys/sockio.h)
+# HMS: Checked sys/socket.h earlier
+case "$host" in
+ *-*-netbsd*) ;;
+ *) AC_CHECK_HEADERS(machine/soundcard.h sys/soundcard.h)
+ ;;
+esac
AC_CHECK_HEADERS(sys/stat.h sys/stream.h)
AC_CHECK_HEADERS(sys/stropts.h sys/sysctl.h sys/syssgi.h sys/systune.h)
AC_CHECK_HEADERS(sys/termios.h sys/time.h sys/signal.h)
AC_EGREP_CPP(yes,
-[#include <sys/timepps.h>
+[#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+#if HAVE_ERRNO_H
+# include <errno.h>
+#endif
+#include <sys/timepps.h>
#ifdef PPS_API_VERS_1
yes
#endif
-], [AC_CHECK_HEADERS(sys/timepps.h)])
-AC_CHECK_HEADERS(sys/timers.h sys/timex.h sys/tpro.h sys/types.h sys/wait.h)
+], [AC_CHECK_HEADERS(sys/timepps.h, [], [],
+[#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+#if HAVE_ERRNO_H
+# include <errno.h>
+#endif
+])
+])
+AC_CHECK_HEADERS(sys/timers.h sys/tpro.h sys/types.h sys/wait.h)
AC_HEADER_TIME
case "$host" in
*-convex-*)
@@ -330,16 +508,31 @@ case "$host" in
;;
esac
-AC_CHECK_HEADER(nlist.h,
-[AC_DEFINE(NLIST_STRUCT, 1, [nlist stuff])
-AC_CACHE_CHECK([for n_un in struct nlist], ac_cv_struct_nlist_n_un,
-[AC_TRY_COMPILE([#include <nlist.h>],
-[struct nlist n; n.n_un.n_name = 0;],
-ac_cv_struct_nlist_n_un=yes, ac_cv_struct_nlist_n_un=no)])
-if test $ac_cv_struct_nlist_n_un = yes; then
- AC_DEFINE(NLIST_NAME_UNION, 1, [does struct nlist use a name union?])
-fi
-])dnl
+case "$host" in
+ *-*-linux*)
+ AC_CHECK_FUNCS(__adjtimex __ntp_gettime)
+ ;;
+esac
+case "$ac_cv_func___adjtimex" in
+ yes) ;;
+ *)
+ AC_CHECK_LIB(elf, nlist) dnl Only needed for tickadj...
+ dnl AC_CHECK_LIB(kvm, main, , , -lelf)
+ AC_CHECK_LIB(kvm, main) dnl We already know about -lelf here...
+ AC_CHECK_LIB(ld, nlist)
+ AC_CHECK_LIB(mld, nlist)
+ AC_CHECK_HEADER(nlist.h,
+ [AC_DEFINE(NLIST_STRUCT, 1, [nlist stuff])
+ AC_CACHE_CHECK([for n_un in struct nlist], ac_cv_struct_nlist_n_un,
+ [AC_TRY_COMPILE([#include <nlist.h>],
+ [struct nlist n; n.n_un.n_name = 0;],
+ ac_cv_struct_nlist_n_un=yes, ac_cv_struct_nlist_n_un=no)])
+ if test $ac_cv_struct_nlist_n_un = yes; then
+ AC_DEFINE(NLIST_NAME_UNION, 1, [does struct nlist use a name union?])
+ fi
+ ])dnl
+ ;;
+esac
dnl AC_CHECK_HEADERS(net/if.h, [], [],
dnl [#if HAVE_SYS_TYPES_H
@@ -350,6 +543,36 @@ dnl # include <sys/socket.h>
dnl #endif
dnl ])
+AC_CHECK_HEADERS(sys/proc.h, [], [],
+[#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+])
+
+AC_CHECK_HEADERS(sys/resource.h, [], [],
+[#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+])
+
+AC_CHECK_HEADERS(sys/shm.h, [], [],
+[#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_IPC_H
+# include <sys/ipc.h>
+#endif
+])
+
+AC_CHECK_HEADERS(sys/timex.h, [], [],
+[#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+])
+
AC_CHECK_HEADERS(resolv.h, [], [],
[#if HAVE_SYS_TYPES_H
#include <sys/types.h>
@@ -375,8 +598,9 @@ case "$ac_cv_c_volatile" in
;;
esac
-case "$host" in
- sparc-*-solaris2*)
+# AM_C_PROTOTYPES gives us ansi2knr
+case "$build" in
+ *-*-solaris2*)
# Assume that solaris2 is Ansi C...
;;
*)
@@ -399,6 +623,16 @@ AC_TYPE_SIGNAL
AC_TYPE_OFF_T
AC_TYPE_SIZE_T
AC_CHECK_TYPE(time_t, long)
+AC_CHECK_SIZEOF(time_t)
+AC_CHECK_TYPES(uintptr_t)
+
+AH_VERBATIM([TYPEDEF_UINTPTR_T],
+[/* Provide a typedef for uintptr_t? */
+#ifndef HAVE_UINTPTR_T
+typedef unsigned int uintptr_t;
+#define HAVE_UINTPTR_T 1
+#endif])
+
AC_STRUCT_TM
AC_CACHE_CHECK([for u_int8_t], ac_cv_type_u_int8_t,
@@ -408,7 +642,7 @@ AC_CACHE_CHECK([for u_int8_t], ac_cv_type_u_int8_t,
ac_cv_type_u_int8_t=no)
])
if test $ac_cv_type_u_int8_t = yes; then
- AC_DEFINE(HAVE_TYPE_U_INT8_T,1,Does u_int8_t exist)
+ AC_DEFINE(HAVE_TYPE_U_INT8_T, 1, [Does u_int8_t exist?])
fi
AC_CACHE_CHECK([for u_int64_t], ac_cv_type_u_int64_t,
@@ -418,9 +652,23 @@ AC_CACHE_CHECK([for u_int64_t], ac_cv_type_u_int64_t,
ac_cv_type_u_int64_t=no)
])
if test $ac_cv_type_u_int64_t = yes; then
- AC_DEFINE(HAVE_TYPE_U_INT64_T,1,Does u_int64_t exist)
+ AC_DEFINE(HAVE_TYPE_U_INT64_T, 1, [Does u_int64_t exist?])
fi
+#
+# Look for in_port_t.
+#
+AC_MSG_CHECKING(for in_port_t)
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <netinet/in.h>],
+[in_port_t port = 25; return (0);],
+ [AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)
+ AC_DEFINE(ISC_PLATFORM_NEEDPORTT, 1, [Do we need our own in_port_t?])
+ ])
+
AC_CACHE_CHECK(for a fallback value for HZ, ac_cv_var_default_hz,
[ac_cv_var_default_hz=100
case "$host" in
@@ -477,6 +725,20 @@ dnl #endif
dnl ], su_cv_have_boot_time=yes, su_cv_have_boot_time=no)])
dnl AC_MSG_RESULT($su_cv_have_boot_time)
+AC_CACHE_CHECK(for struct rt_msghdr, ac_cv_struct_rt_msghdr,
+[AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <net/if.h>
+#include <net/route.h>],
+[struct rt_msghdr p;],
+ ac_cv_struct_rt_msghdr=yes,
+ ac_cv_struct_rt_msghdr=no)
+])
+if test $ac_cv_struct_rt_msghdr = yes; then
+ AC_DEFINE(HAS_ROUTING_SOCKET, 1, [Do we have a routing socket (struct rt_msghdr)?])
+fi
+
AC_CACHE_CHECK(
struct sigaction for sa_sigaction,
ac_cv_struct_sigaction_has_sa_sigaction,
@@ -527,6 +789,20 @@ if test $ac_cv_struct_sockaddr_has_sa_len = yes; then
AC_DEFINE(HAVE_SA_LEN_IN_STRUCT_SOCKADDR, 1, [Should be obvious...])
fi
+AC_CACHE_CHECK(for struct sockaddr_storage, ac_cv_struct_sockaddr_storage,
+[AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+],[
+struct sockaddr_storage n;],
+ ac_cv_struct_sockaddr_storage=yes,
+ ac_cv_struct_sockaddr_storage=no)
+])
+if test $ac_cv_struct_sockaddr_storage = yes; then
+ AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Does a system header define struct sockaddr_storage?])
+fi
+
AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
ac_cv_have_ss_family_in_struct_ss, [
AC_TRY_COMPILE(
@@ -543,8 +819,11 @@ if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
AC_DEFINE(HAVE_SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have ss_family?])
else
# Hack around a problem...
+ # HMS: This is $host because we need the -D if we are building *for* it.
+ # HMS: 061029: Now that we separate the ss_* checks this is causing
+ # a problem - disable it until we get to the bottom of it.
case "$host" in
- *-*-hpux11.11) CPPFLAGS="$CPPFLAGS -D_NETINET_IN6_H"
+ XXX*-*-hpux11.11) CPPFLAGS="$CPPFLAGS -D_NETINET_IN6_H"
;;
esac
fi
@@ -569,9 +848,46 @@ AH_VERBATIM([X_HAVE_SS_FAMILY_IN_SS],
[/* Handle ss_family */
#if !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE___SS_FAMILY_IN_SS)
# define ss_family __ss_family
-# define ss_len __ss_len
#endif /* !defined(HAVE_SS_FAMILY_IN_SS) && defined(HAVE_SA_FAMILY_IN_SS) */])
+AC_CACHE_CHECK([for ss_len field in struct sockaddr_storage],
+ ac_cv_have_ss_len_in_struct_ss, [
+ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+#include <sys/socket.h>
+ ],
+ [ struct sockaddr_storage s; s.ss_len = 1; ],
+ [ ac_cv_have_ss_len_in_struct_ss="yes" ],
+ [ ac_cv_have_ss_len_in_struct_ss="no" ],
+ )
+])
+if test "x$ac_cv_have_ss_len_in_struct_ss" = "xyes" ; then
+ AC_DEFINE(HAVE_SS_LEN_IN_SS, 1, [Does struct sockaddr_storage have ss_len?])
+fi
+
+AC_CACHE_CHECK([for __ss_len field in struct sockaddr_storage],
+ ac_cv_have___ss_len_in_struct_ss, [
+ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+#include <sys/socket.h>
+ ],
+ [ struct sockaddr_storage s; s.__ss_len = 1; ],
+ [ ac_cv_have___ss_len_in_struct_ss="yes" ],
+ [ ac_cv_have___ss_len_in_struct_ss="no" ]
+ )
+])
+if test "x$ac_cv_have___ss_len_in_struct_ss" = "xyes" ; then
+ AC_DEFINE(HAVE___SS_LEN_IN_SS, 1, [Does struct sockaddr_storage have __ss_len?])
+fi
+
+AH_VERBATIM([X_HAVE_SS_LEN_IN_SS],
+[/* Handle ss_len */
+#if !defined(HAVE_SS_LEN_IN_SS) && defined(HAVE___SS_LEN_IN_SS)
+# define ss_len __ss_len
+#endif /* !defined(HAVE_SS_LEN_IN_SS) && defined(HAVE_SA_LEN_IN_SS) */])
+
case "$ac_cv_header_machine_soundcard_h$ac_cv_header_sys_soundcard_h" in
*yes*)
AC_CACHE_CHECK([for struct snd_size], ac_cv_struct_snd_size,
@@ -691,11 +1007,6 @@ esac
AC_TYPE_UID_T
case "$host" in
- *-*-linux*)
- AC_CHECK_FUNCS(__adjtimex __ntp_gettime)
- ;;
-esac
-case "$host" in
*-*-aix[[45]]*)
# (prr) aix 4.1 doesn't have clock_settime, but in aix 4.3 it's a stub
# (returning ENOSYS). I didn't check 4.2. If, in the future,
@@ -717,7 +1028,74 @@ AC_CHECK_FUNCS(finite, ,
AC_DEFINE(HAVE_ISFINITE)],
AC_MSG_RESULT(no))
LIBS=$_libs])])
-AC_CHECK_FUNCS(getbootfile getclock getdtablesize getrusage)
+AC_CHECK_FUNCS(getbootfile getclock getdtablesize)
+
+AC_ARG_ENABLE(getifaddrs,
+ AC_HELP_STRING([--enable-getifaddrs],
+ [s Enable the use of getifaddrs() [[yes|no|glibc]].
+glibc: Use getifaddrs() in glibc if you know it supports IPv6.]),
+ want_getifaddrs="$enableval", want_getifaddrs="yes")
+
+case $want_getifaddrs in
+yes|glibc)
+#
+# Do we have getifaddrs() ?
+#
+case $host in
+*-linux*)
+ # Some recent versions of glibc support getifaddrs() which does not
+ # provide AF_INET6 addresses while the function provided by the USAGI
+ # project handles the AF_INET6 case correctly. We need to avoid
+ # using the former but prefer the latter unless overridden by
+ # --enable-getifaddrs=glibc.
+ if test $want_getifaddrs = glibc
+ then
+ AC_CHECK_FUNCS(getifaddrs)
+ else
+ save_LIBS="$LIBS"
+ LIBS="-L/usr/local/v6/lib $LIBS"
+ AC_CHECK_LIB(inet6, getifaddrs,
+ LIBS="$LIBS -linet6"
+ AC_DEFINE(HAVE_GETIFADDRS),
+ LIBS=${save_LIBS})
+ fi
+ ;;
+*)
+ AC_CHECK_FUNCS(getifaddrs)
+ ;;
+esac
+;;
+no)
+;;
+esac
+
+AC_MSG_CHECKING([type of socklen arg for getsockname()])
+AC_CACHE_VAL(ac_cv_func_getsockname_arg2,dnl
+[AC_CACHE_VAL(ac_cv_func_getsockname_socklen_type,dnl
+ [for ac_cv_func_getsockname_arg2 in 'struct sockaddr *' 'void *'; do
+ for ac_cv_func_getsockname_socklen_type in 'socklen_t' 'size_t' 'unsigned int' 'int'; do
+ AC_TRY_COMPILE(dnl
+[#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+extern getsockname (int, $ac_cv_func_getsockname_arg2, $ac_cv_func_getsockname_socklen_type *);],,dnl
+ [ac_not_found=no ; break 2], ac_not_found=yes)
+ done
+ done
+ ])dnl AC_CACHE_VAL
+])dnl AC_CACHE_VAL
+if test "$ac_not_found" = yes; then
+ ac_cv_func_getsockname_socklen_type='socklen_t'
+fi
+AC_MSG_RESULT([$ac_cv_func_getsockname_socklen_type])
+AC_DEFINE_UNQUOTED([GETSOCKNAME_SOCKLEN_TYPE],
+ $ac_cv_func_getsockname_socklen_type,
+ [What is getsockname()'s socklen type?])
+
+AC_CHECK_FUNCS(getrusage)
AC_CHECK_FUNC(gettimeofday, ,[
case "$host" in
*-*-mpeix*) ac_cv_func_gettimeofday=yes
@@ -730,7 +1108,31 @@ case "$host" in
;;
esac
AC_CHECK_FUNCS(hstrerror)
+
+#
+# Check for if_nametoindex() for IPv6 scoped addresses support
+#
+AC_CHECK_FUNC(if_nametoindex, ac_cv_have_if_nametoindex=yes,
+ ac_cv_have_if_nametoindex=no)
+case $ac_cv_have_if_nametoindex in
+ no)
+ case "$host" in
+ *-hp-hpux*)
+ AC_CHECK_LIB(ipv6, if_nametoindex,
+ ac_cv_have_if_nametoindex=yes
+ LIBS="-lipv6 $LIBS",)
+ ;;
+ esac
+esac
+case $ac_cv_have_if_nametoindex in
+ yes)
+ AC_DEFINE(ISC_PLATFORM_HAVEIFNAMETOINDEX, 1, [ISC: do we have if_nametoindex()?])
+ ;;
+esac
+
AC_CHECK_FUNC(inet_ntop, [], [AC_DEFINE(ISC_PLATFORM_NEEDNTOP, 1, [ISC: provide inet_ntop()])])
+AC_CHECK_FUNC(inet_pton, [], [AC_DEFINE(ISC_PLATFORM_NEEDPTON, 1, [ISC: provide inet_pton()])])
+AC_CHECK_FUNC(inet_aton, [], [AC_DEFINE(ISC_PLATFORM_NEEDATON, 1, [ISC: provide inet_aton()])])
AC_CHECK_FUNCS(K_open kvm_open memcpy memmove memset)
case "$host" in
*-*-sco3.2v5.0.*)
@@ -747,6 +1149,9 @@ case "$host" in
*-*-irix[[45]]*)
# Just a stub in "old" Irix. Idiots.
;;
+ *-*-linux*)
+ # there, but more trouble than it is worth for now (resolver problems)
+ ;;
*-*-qnx*)
# Apparently there but not working in QNX. Idiots?
;;
@@ -762,7 +1167,7 @@ case "$host" in
*) AC_CHECK_FUNCS(mlockall)
;;
esac
-AC_CHECK_FUNCS(mrand48 srand48 nice nlist)
+AC_CHECK_FUNCS(nice nlist)
case "$host" in
*-*-solaris2.6)
# Broken...
@@ -770,11 +1175,7 @@ case "$host" in
*) AC_CHECK_FUNCS(ntp_adjtime ntp_gettime)
;;
esac
-AC_CHECK_FUNCS(plock pututline pututxline readlink rtprio)
-case "$ac_cv_func_mrand48" in
- yes) ;;
- *) AC_REPLACE_FUNCS(random) ;;
-esac
+AC_CHECK_FUNCS(plock pututline pututxline readlink recvmsg rtprio)
case "$host" in
*-*-aix[[45]]*)
# Just a stub in AIX 4. Idiots.
@@ -819,7 +1220,51 @@ case "$host" in
*) AC_CHECK_FUNCS(umask)
;;
esac
-AC_CHECK_FUNCS(uname updwtmp updwtmpx vsprintf)
+AC_CHECK_FUNCS(uname updwtmp updwtmpx vsnprintf vsprintf)
+
+###
+
+# http://bugs.ntp.isc.org/737
+case "$ac_cv_func_recvmsg" in
+ yes)
+ AC_MSG_CHECKING([if we need extra help to define struct iovec])
+ AC_CACHE_VAL(ac_cv_struct_iovec_help,dnl
+ [for ac_cv_struct_iovec_help in '0' '1'; do
+ AC_TRY_COMPILE(dnl
+[#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if $ac_cv_struct_iovec_help
+#include <sys/uio.h>
+#endif
+
+void foo();
+void foo() {
+ ssize_t x;
+ int s = 0;
+ struct iovec iov;
+ struct msghdr mh;
+ int flags = 0;
+
+ mh.msg_iov = &iov;
+ x = recvmsg(s, &mh, flags);
+}],,dnl
+ [ac_worked=yes ; break 1], ac_worked=no)
+ done
+])dnl AC_CACHE_VAL
+ case "$ac_worked$ac_cv_struct_iovec_help" in
+ yes1)
+ AC_DEFINE(HAVE_SYS_UIO_H, 1, [Use sys/uio.h for struct iovec help])
+ ans=yes
+ ;;
+ *) ans=no
+ esac
+ AC_MSG_RESULT([$ans])
+ ;;
+esac
case "$host" in
*-*-sunos4*)
@@ -964,10 +1409,8 @@ case "$host" in
AC_DEFINE(DECL_ADJTIME_0, 1, [Declaration style])
AC_DEFINE(DECL_INET_NTOA_0, 1, [Declaration style])
AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
- AC_DEFINE(DECL_MRAND48_0, 1, [Declaration style])
AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
- AC_DEFINE(DECL_SRAND48_0, 1, [Declaration style])
AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
;;
@@ -1014,13 +1457,11 @@ case "$host" in
AC_DEFINE(DECL_MEMMOVE_0, 1, [Declaration style])
AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
AC_DEFINE(DECL_MKSTEMP_0, 1, [Declaration style])
- AC_DEFINE(DECL_MRAND48_0, 1, [Declaration style])
AC_DEFINE(DECL_RENAME_0, 1, [Declaration style])
AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
AC_DEFINE(DECL_SETPRIORITY_0, 1, [Declaration style])
AC_DEFINE(DECL_SIGVEC_0, 1, [Declaration style])
- AC_DEFINE(DECL_SRAND48_0, 1, [Declaration style])
case "`basename $ac_cv_prog_CC`" in
acc*) ;;
*) AC_DEFINE(DECL_STDIO_0, 1, [Declaration style])
@@ -1041,13 +1482,11 @@ case "$host" in
AC_DEFINE(DECL_IOCTL_0, 1, [Declaration style])
AC_DEFINE(DECL_IPC_0, 1, [Declaration style])
AC_DEFINE(DECL_MKTEMP_0, 1, [Declaration style])
- AC_DEFINE(DECL_MRAND48_0, 1, [Declaration style])
AC_DEFINE(DECL_NLIST_0, 1, [Declaration style])
AC_DEFINE(DECL_PLOCK_0, 1, [Declaration style])
AC_DEFINE(DECL_SELECT_0, 1, [Declaration style])
AC_DEFINE(DECL_SETITIMER_0, 1, [Declaration style])
AC_DEFINE(DECL_SETPRIORITY_0, 1, [Declaration style])
- AC_DEFINE(DECL_SRAND48_0, 1, [Declaration style])
AC_DEFINE(DECL_STIME_0, 1, [Declaration style])
AC_DEFINE(DECL_SYSLOG_0, 1, [Declaration style])
AC_DEFINE(DECL_TIMEOFDAY_0, 1, [Declaration style])
@@ -1123,14 +1562,14 @@ case "$ac_cv_arg_setpgrp_negpid" in
esac
AC_CACHE_CHECK(if we need a ctty for F_SETOWN, ac_cv_func_ctty_for_f_setown,
-[case "$host" in
- *-*-bsdi[[23]]*)
+[[case "$host" in
+ *-*-bsdi[23]*)
ans=yes
;;
*-*-freebsd*)
ans=yes
;;
- *-*-netbsd*)
+ *-*-netbsd*3.[0-8]*|*-*-netbsd*[0-2].*|*-*-netbsd*3.99.[0-7])
ans=yes
;;
*-*-openbsd*)
@@ -1142,11 +1581,37 @@ AC_CACHE_CHECK(if we need a ctty for F_SETOWN, ac_cv_func_ctty_for_f_setown,
*) ans=no
;;
esac
-ac_cv_func_ctty_for_f_setown=$ans])
+ac_cv_func_ctty_for_f_setown=$ans]])
case "$ac_cv_func_ctty_for_f_setown" in
yes) AC_DEFINE(USE_FSETOWNCTTY, 1, [Must we have a CTTY for fsetown?]) ;;
esac
+AC_CACHE_CHECK(if the OS misses to clear cached routes when more specific routes become available, ac_cv_os_routeupdates,
+[[case "$host" in
+ *-*-netbsd*)
+ ans=yes
+ ;;
+ *) ans=no
+ ;;
+esac
+ac_cv_os_routeupdates=$ans]])
+case "$ac_cv_os_routeupdates" in
+ yes) AC_DEFINE(OS_MISSES_SPECIFIC_ROUTE_UPDATES, 1, [need to recreate sockets on changed routing?]) ;;
+esac
+
+AC_CACHE_CHECK(if the OS needs the wildcard socket set to REUSEADDR for binding interface addresses, ac_cv_os_wildcardreuse,
+[[case "$host" in
+ *-*-linux*)
+ ans=yes
+ ;;
+ *) ans=no
+ ;;
+esac
+ac_cv_os_wildcardreuse=$ans]])
+case "$ac_cv_os_wildcardreuse" in
+ yes) AC_DEFINE(OS_NEEDS_REUSEADDR_FOR_IFADDRBIND, 1, [wildcard socket needs to set REUSEADDR when binding to interface addresses]) ;;
+esac
+
ntp_warning='GRONK'
AC_MSG_CHECKING(if we'll use clock_settime or settimeofday or stime)
case "$ac_cv_func_clock_settime$ac_cv_func_settimeofday$ac_cv_func_stime" in
@@ -1189,25 +1654,6 @@ case "$ac_cv_var_syscall_bug" in
yes) AC_DEFINE(SYSCALL_BUG, 1, [Buggy syscall() (Solaris2.4)?]) ;;
esac
-AC_CACHE_CHECK(for Streams/TLI, ac_cv_var_streams_tli,
-[ case "$ac_cv_header_sys_stropts_h" in
- yes)
- ans=no
- # There must be a better way...
- case "$host" in
- *-*-ptx*)
- ans=yes
- ;;
- esac
- ;;
- esac
- ac_cv_var_streams_tli=$ans])
-case "$ac_cv_var_streams_tli" in
- yes)
- AC_DEFINE(STREAMS_TLI, 1, [Do we have STREAMS/TLI? (Can we replace this with HAVE_SYS_STROPTS_H?)])
- ;;
-esac
-
AC_CACHE_CHECK(for SIGIO, ac_cv_hdr_def_sigio,
AC_EGREP_CPP(yes,
[#include <signal.h>
@@ -1449,15 +1895,26 @@ case "$ac_cv_var_no_parenb_ignpar" in
esac
AC_MSG_CHECKING(if we're including debugging code)
-AC_ARG_ENABLE(debugging, [ --enable-debugging + include debugging code],
+AC_ARG_ENABLE(debugging,
+ AC_HELP_STRING([--enable-debugging], [+ include debugging code]),
[ntp_ok=$enableval], [ntp_ok=yes])
if test "$ntp_ok" = "yes"; then
AC_DEFINE(DEBUG, 1, [Enable debugging?])
fi
AC_MSG_RESULT($ntp_ok)
+AC_MSG_CHECKING(if we including processing time debugging code)
+AC_ARG_ENABLE(debug-timing,
+ AC_HELP_STRING([--enable-debug-timing], [- include processing time debugging code (costs performance)]),
+ [ntp_ok=$enableval], [ntp_ok=no])
+if test "$ntp_ok" = "yes"; then
+ AC_DEFINE(DEBUG_TIMING, 1, [Enable processing time debugging?])
+fi
+AC_MSG_RESULT($ntp_ok)
+
AC_MSG_CHECKING(for a the number of minutes in a DST adjustment)
-AC_ARG_ENABLE(dst_minutes, [ --enable-dst-minutes=60 + minutes per DST adjustment],
+AC_ARG_ENABLE(dst_minutes,
+ AC_HELP_STRING([--enable-dst-minutes=60], [+ minutes per DST adjustment]),
[ans=$enableval], [ans=60])
AC_DEFINE_UNQUOTED(DSTMINUTES, $ans, [The number of minutes in a DST adjustment])
AC_MSG_RESULT($ans)
@@ -1490,28 +1947,42 @@ AC_CACHE_CHECK(for kernel multicast support, ac_cv_var_mcast,
], ac_cv_var_mcast=yes) ;;
esac])
case "$ac_cv_var_mcast" in
- yes) AC_DEFINE(MCAST, 1, [Does the kernel support multicasting IP?]) ;;
+ yes)
+ AC_DEFINE(MCAST, 1, [Does the kernel support multicasting IP?])
+ AC_CACHE_CHECK([[arg type needed for IP*_MULTICAST_LOOP for setsockopt()]],
+ ac_cv_var_typeof_ip_multicast_loop,
+ [case "$host" in
+ *-*-netbsd*|*-*-linux*)
+ ac_cv_var_typeof_ip_multicast_loop=u_int
+ ;;
+ *-*-winnt*)
+ ac_cv_var_typeof_ip_multicast_loop=BOOL
+ ;;
+ *) ac_cv_var_typeof_ip_multicast_loop=u_char
+ ;;
+ esac])
+ AC_DEFINE_UNQUOTED(TYPEOF_IP_MULTICAST_LOOP,
+ $ac_cv_var_typeof_ip_multicast_loop,
+ [What type to use for setsockopt])
+ ;;
esac
AC_CACHE_CHECK([[availability of ntp_{adj,get}time()]], ac_cv_var_ntp_syscalls,
[ac_cv_var_ntp_syscalls=no
- case "$ac_cv_func___adjtimex" in
- yes)
+ case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime$ac_cv_func___adjtimex" in
+ yesyes*)
ac_cv_var_ntp_syscalls=libc
;;
- *) case "$ac_cv_func_ntp_adjtime$ac_cv_func_ntp_gettime" in
- yesyes)
- ac_cv_var_ntp_syscalls=libc
- ;;
- *) AC_EGREP_CPP(yes,
+ *yes)
+ ac_cv_var_ntp_syscalls=inline
+ ;;
+ *) AC_EGREP_CPP(yes,
[#include <sys/syscall.h>
#if defined(SYS_ntp_gettime) && defined(SYS_ntp_adjtime)
yes
#endif
], ac_cv_var_ntp_syscalls=kernel)
- ;;
- esac
- ;;
+ ;;
esac])
case "$ac_cv_var_ntp_syscalls" in
libc)
@@ -1643,16 +2114,21 @@ ac_cv_var_atom_ok=yes
# The PPSAPI headers need "inline" ($ac_cv_c_inline='inline')
-# The PPSAPI needs ATOM
-
# The PPSAPI needs struct timespec.
-case "$ac_cv_c_inline$ac_cv_struct_timespec$ac_cv_header_timepps_h$ac_cv_header_sys_timepps_h" in
- inlineyes*yes*)
- AC_DEFINE(HAVE_PPSAPI, 1, [Do we have the PPS API per the Draft RFC?])
- ac_cv_var_oncore_ok=yes
- ac_cv_var_ripe_ncc_ok=yes
- ac_cv_var_jupiter_ok=yes
+# The PPSAPI also needs a timepps header.
+
+case "$ac_cv_c_inline$ac_cv_struct_timespec" in
+ inlineyes)
+ case "$ac_cv_header_timepps_h$ac_cv_header_sys_timepps_h$host_os" in
+ *yes* | *sunos* | *solaris* | *sco* | *netbsd* )
+ AC_DEFINE(HAVE_PPSAPI, 1, [Do we have the PPS API per the Draft RFC?])
+ ac_cv_var_jupiter_ok=yes
+ ac_cv_var_oncore_ok=yes
+ ac_cv_var_parse_ok=yes
+ ac_cv_var_ripe_ncc_ok=yes
+ ;;
+ esac
;;
esac
@@ -1764,6 +2240,7 @@ AC_ARG_ENABLE(all-clocks,
[ntp_eac=$enableval], [ntp_eac=yes])
AC_MSG_RESULT($ntp_eac)
+# HMS: Should we also require ac_cv_var_parse_ok?
AC_MSG_CHECKING(if we have support for PARSE clocks)
case "$ac_cv_var_atom_ok$ac_cv_header_termio_h$ac_cv_header_termios_h" in
yes*yes*)
@@ -2042,15 +2519,16 @@ if test "$ntp_ok" = "yes"; then
fi
AC_MSG_RESULT($ntp_ok)
-AC_MSG_CHECKING(EES M201 MSF receiver)
-AC_ARG_ENABLE(MSFEES,
- AC_HELP_STRING([--enable-MSFEES], [+ EES M201 MSF receiver]),
- [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
-if test "$ntp_ok" = "yes"; then
- ntp_refclock=yes
- AC_DEFINE(CLOCK_MSFEES, 1, [EES M201 MSF receiver])
-fi
-AC_MSG_RESULT($ntp_ok)
+dnl Bug 340: longstanding unfixed bugs
+dnl AC_MSG_CHECKING(EES M201 MSF receiver)
+dnl AC_ARG_ENABLE(MSFEES,
+dnl AC_HELP_STRING([--enable-MSFEES], [+ EES M201 MSF receiver]),
+dnl [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
+dnl if test "$ntp_ok" = "yes"; then
+dnl ntp_refclock=yes
+dnl AC_DEFINE(CLOCK_MSFEES, 1, [EES M201 MSF receiver])
+dnl fi
+dnl AC_MSG_RESULT($ntp_ok)
# Not Ultrix
AC_MSG_CHECKING(Magnavox MX4200 GPS receiver)
@@ -2143,26 +2621,6 @@ if test "$ntp_ok" = "yes"; then
fi
AC_MSG_RESULT($ntp_ok)
-# Requires modem control
-AC_MSG_CHECKING(PTB modem service)
-AC_ARG_ENABLE(PTBACTS,
- AC_HELP_STRING([--enable-PTBACTS], [s PTB modem service]),
- [ntp_ok=$enableval],
- [AC_EGREP_CPP(yes,
- [#include <termios.h>
-#ifdef HAVE_SYS_IOCTL_H
-#include <sys/ioctl.h>
-#endif
-#ifdef TIOCMBIS
- yes
-#endif
- ], ntp_ok=$ntp_eac, ntp_ok=no)])
-if test "$ntp_ok" = "yes"; then
- ntp_refclock=yes
- AC_DEFINE(CLOCK_PTBACTS, 1, [PTB modem service])
-fi
-AC_MSG_RESULT($ntp_ok)
-
AC_MSG_CHECKING(RIPENCC specific Trimble driver)
AC_ARG_ENABLE(RIPENCC,
AC_HELP_STRING([--enable-RIPENCC], [- RIPENCC specific Trimble driver]),
@@ -2223,15 +2681,16 @@ case "$ntp_ok$ac_cv_header_sys_tpro" in
yesno) AC_MSG_WARN(*** But the expected answer is... no ***) ;;
esac
-AC_MSG_CHECKING(TRAK 8810 GPS receiver)
-AC_ARG_ENABLE(TRAK,
- AC_HELP_STRING([--enable-TRAK], [+ TRAK 8810 GPS receiver]),
- [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
-if test "$ntp_ok" = "yes"; then
- ntp_refclock=yes
- AC_DEFINE(CLOCK_TRAK, 1, [TRAK 8810 GPS receiver])
-fi
-AC_MSG_RESULT($ntp_ok)
+dnl Bug 342: longstanding unfixed bugs
+dnl AC_MSG_CHECKING(TRAK 8810 GPS receiver)
+dnl AC_ARG_ENABLE(TRAK,
+dnl AC_HELP_STRING([--enable-TRAK], [+ TRAK 8810 GPS receiver]),
+dnl [ntp_ok=$enableval], [ntp_ok=$ntp_eac])
+dnl if test "$ntp_ok" = "yes"; then
+dnl ntp_refclock=yes
+dnl AC_DEFINE(CLOCK_TRAK, 1, [TRAK 8810 GPS receiver])
+dnl fi
+dnl AC_MSG_RESULT($ntp_ok)
# Not on a vax-dec-bsd
AC_MSG_CHECKING(Kinemetrics/TrueTime receivers)
@@ -2275,26 +2734,6 @@ if test "$ntp_ok" = "yes"; then
fi
AC_MSG_RESULT($ntp_ok)
-# Requires modem control
-AC_MSG_CHECKING(USNO modem service)
-AC_ARG_ENABLE(USNO,
- AC_HELP_STRING([--enable-USNO], [s USNO modem service]),
- [ntp_ok=$enableval],
- [AC_EGREP_CPP(yes,
- [#include <termios.h>
-#ifdef HAVE_SYS_IOCTL_H
-#include <sys/ioctl.h>
-#endif
-#ifdef TIOCMBIS
- yes
-#endif
- ], ntp_ok=$ntp_eac, ntp_ok=no)])
-if test "$ntp_ok" = "yes"; then
- ntp_refclock=yes
- AC_DEFINE(CLOCK_USNO, 1, [USNO modem service])
-fi
-AC_MSG_RESULT($ntp_ok)
-
AC_MSG_CHECKING(WWV receiver)
AC_ARG_ENABLE(WWV,
AC_HELP_STRING([--enable-WWV], [s WWV Audio receiver]),
@@ -2323,12 +2762,14 @@ fi
AC_MSG_RESULT($ntp_ok)
AC_MSG_CHECKING(for default inclusion of all suitable PARSE clocks)
-AC_ARG_ENABLE(parse-clocks, [ --enable-parse-clocks - include all suitable PARSE clocks:],
+AC_ARG_ENABLE(parse-clocks,
+ AC_HELP_STRING([--enable-parse-clocks], [- include all suitable PARSE clocks:]),
[ntp_eapc=$enableval],
[case "$ntp_eac" in
yes) ntp_eapc=$ntp_canparse ;;
*) ntp_eapc=no ;;
esac
+ # Delete the next line one of these days
ntp_eapc=no])
AC_MSG_RESULT($ntp_eapc)
@@ -2556,7 +2997,8 @@ case "$ntp_libparse" in
AC_DEFINE(CLOCK_PARSE, 1, [PARSE driver interface])
LIBPARSE=../libparse/libparse.a
MAKE_LIBPARSE=libparse.a
- MAKE_CHECK_Y2K=check_y2k
+ # HMS: check_y2k trips the 34 year problem now...
+ false && MAKE_CHECK_Y2K=check_y2k
AC_DEFINE(PPS_SAMPLE, 1, [PPS auxiliary interface for ATOM?])
AC_DEFINE(CLOCK_ATOM)
;;
@@ -2574,16 +3016,18 @@ AC_SUBST(OPENSSL)
AC_SUBST(OPENSSL_INC)
AC_SUBST(OPENSSL_LIB)
-AC_SUBST(MAKE_NTP_KEYGEN)
-
AC_MSG_CHECKING(for openssl library directory)
AC_ARG_WITH(openssl-libdir,
AC_HELP_STRING([--with-openssl-libdir], [+ =/something/reasonable]),
-[ans=$withval], [ans=yes])
+[ans=$withval],
+[case "$build" in
+ $host) ans=yes ;;
+ *) ans=no ;;
+esac])
case "$ans" in
no) ;;
yes) # Look in:
- ans="/usr/lib /usr/lib/openssl /usr/local/lib /usr/local/ssl/lib"
+ ans="/usr/lib /usr/lib/openssl /usr/sfw/lib /usr/local/lib /usr/local/ssl/lib"
;;
*) # Look where they said
;;
@@ -2598,6 +3042,7 @@ case "$ans" in
test -f $i/libcrypto.dylib -a -f $i/libssl.dylib && break
;;
*)
+ test -f $i/libcrypto.so -a -f $i/libssl.so && break
test -f $i/libcrypto.a -a -f $i/libssl.a && break
;;
esac
@@ -2618,11 +3063,15 @@ AC_MSG_RESULT($ans)
AC_MSG_CHECKING(for openssl include directory)
AC_ARG_WITH(openssl-incdir,
AC_HELP_STRING([--with-openssl-incdir], [+ =/something/reasonable]),
-[ans=$withval], [ans=yes])
+[ans=$withval],
+[case "$build" in
+ $host) ans=yes ;;
+ *) ans=no ;;
+esac])
case "$ans" in
no) ;;
yes) # look in:
- ans="/usr/include /usr/local/include /usr/local/ssl/include"
+ ans="/usr/include /usr/sfw/include /usr/local/include /usr/local/ssl/include"
;;
*) # Look where they said
;;
@@ -2661,8 +3110,11 @@ case "$ans" in
ans=openssl
CPPFLAGS="$CPPFLAGS -I$OPENSSL_INC"
LDFLAGS="$LDFLAGS -L$OPENSSL_LIB"
+ case "$need_dash_r" in
+ 1) LDFLAGS="$LDFLAGS -R$OPENSSL_LIB"
+ ;;
+ esac
AC_SUBST(LCRYPTO, [-lcrypto])
- MAKE_NTP_KEYGEN=ntp-keygen
AC_DEFINE(OPENSSL, , [Use OpenSSL?])
AC_CHECK_FUNCS(EVP_md2 EVP_mdc2)
fi
@@ -2688,17 +3140,16 @@ case "$ans" in
esac
AC_MSG_RESULT($ans)
-AC_MSG_CHECKING(if we want to try SNTP)
-AC_ARG_WITH(sntp,
- AC_HELP_STRING([--with-sntp], [- Build SNTP?]),
-[ans=$withval], [ans=no])
-case "$ans" in
- no) ;;
- *)
- MAKE_SNTP="sntp"
- AC_SUBST(MAKE_SNTP)
+AC_SUBST(MAKE_CHECK_LAYOUT)
+AC_MSG_CHECKING(if we want to run check-layout)
+case "$cross_compiling$PATH_PERL" in
+ no/*)
+ MAKE_CHECK_LAYOUT=check-layout
ans=yes
;;
+ *)
+ ans=no
+ ;;
esac
AC_MSG_RESULT($ans)
@@ -2709,7 +3160,7 @@ AC_MSG_CHECKING(if we can make dcf parse utilities)
ans=no
if test "$ntp_parseutil" = "yes"; then
case "$host" in
- *-*-sunos4*|*-*-solaris2*|*-*-linux*)
+ *-*-sunos4*|*-*-solaris2*|*-*-linux*|*-*-netbsd*)
ans="dcfd testdcf"
DCFD=dcfd
TESTDCF=testdcf
@@ -2782,7 +3233,8 @@ fi
AC_MSG_RESULT($ans)
AC_CACHE_CHECK(if we can read kmem, ac_cv_var_can_kmem,
-[AC_ARG_ENABLE(kmem, [ --enable-kmem s read /dev/kmem for tick and/or tickadj],
+[AC_ARG_ENABLE(kmem,
+ AC_HELP_STRING([--enable-kmem], [s read /dev/kmem for tick and/or tickadj]),
[ans=$enableval],
[case "$ac_cv_func_nlist$ac_cv_func_K_open$ac_cv_func_kvm_open" in
*yes*)
@@ -2823,8 +3275,8 @@ case "$ac_cv_var_can_kmem" in
esac
AC_CACHE_CHECK(if adjtime is accurate, ac_cv_var_adjtime_is_accurate,
-[AC_ARG_ENABLE(accurate-adjtime, [ --enable-accurate-adjtime
- s the adjtime() call is accurate],
+[AC_ARG_ENABLE(accurate-adjtime,
+ AC_HELP_STRING([--enable-accurate-adjtime], [s the adjtime() call is accurate]),
[ans=$enableval],
[case "$host" in
i386-sequent-ptx*)
@@ -3084,7 +3536,8 @@ dnl (RS6000 && !NOKMEM), SINIX MIPS
dnl But we'll only use these "values" if we can't find anything else.
AC_CACHE_CHECK(for a default value for 'tick', ac_cv_var_tick,
-[AC_ARG_ENABLE(tick, [ --enable-tick=VALUE s force a value for 'tick'],
+[AC_ARG_ENABLE(tick,
+ AC_HELP_STRING([--enable-tick=VALUE], [s force a value for 'tick']),
[ans=$enableval],
[ans=no
case "$host" in
@@ -3119,7 +3572,8 @@ case "$ac_cv_var_tick" in
esac
AC_CACHE_CHECK(for a default value for 'tickadj', ac_cv_var_tickadj,
-[AC_ARG_ENABLE(tickadj, [ --enable-tickadj=VALUE s force a value for 'tickadj'],
+[AC_ARG_ENABLE(tickadj,
+ AC_HELP_STRING([--enable-tickadj=VALUE], [s force a value for 'tickadj']),
[ans=$enableval],
[ans='500/hz'
case "$host" in
@@ -3305,65 +3759,6 @@ case "$ac_cv_var_ntpd_sim" in
;;
esac
-AC_CACHE_CHECK(if we want UDP wildcard delivery, ac_cv_var_udp_wildcard_delivery,
-[AC_ARG_ENABLE(udp-wildcard, [ --enable-udp-wildcard s use UDP wildcard delivery],
- [ans=$enableval],
- [ans=no
- case "$host" in
- *-fujitsu-uxp*)
- ans=yes
- ;;
- *-univel-sysv*)
- ans=yes
- ;;
- *-*-aix3.2*)
- ans=yes
- ;;
- *-*-aix[[45]]*)
- ans=yes
- ;;
- *-*-bsdi*)
- ans=yes
- ;;
- *-*-domainos)
- ans=yes
- ;;
- *-*-freebsd*)
- ans=yes
- ;;
- *-*-hpux*)
- ans=yes
- ;;
- *-*-irix6*)
- ans=yes
- ;;
- *-*-linux*)
- ans=yes
- ;;
- *-*-mpeix*)
- ans=yes
- ;;
- *-*-osf*)
- ans=yes
- ;;
- *-*-ptx*)
- ans=yes
- ;;
- *-*-solaris2*)
- ans=yes
- ;;
- *-*-sunos4*)
- ans=yes
- ;;
- *-*-unicosmp*)
- ans=yes
- ;;
- esac])
-ac_cv_var_udp_wildcard_delivery=$ans])
-case "$ac_cv_var_udp_wildcard_delivery" in
- yes) AC_DEFINE(UDP_WILDCARD_DELIVERY, 1, [use UDP Wildcard Delivery?]) ;;
-esac
-
case "$build" in
$host)
;;
@@ -3376,7 +3771,8 @@ case "$build" in
esac
AC_CACHE_CHECK(if we should always slew the time, ac_cv_var_slew_always,
-[AC_ARG_ENABLE(slew-always, [ --enable-slew-always s always slew the time],
+[AC_ARG_ENABLE(slew-always,
+ AC_HELP_STRING([--enable-slew-always], [s always slew the time]),
[ans=$enableval],
[case "$host" in
*-apple-aux[[23]]*)
@@ -3401,7 +3797,8 @@ case "$ac_cv_var_slew_always" in
esac
AC_CACHE_CHECK(if we should step and slew the time, ac_cv_var_step_slew,
-[AC_ARG_ENABLE(step-slew, [ --enable-step-slew s step and slew the time],
+[AC_ARG_ENABLE(step-slew,
+ AC_HELP_STRING([--enable-step-slew], [s step and slew the time]),
[ans=$enableval],
[case "$host" in
*-sni-sysv*)
@@ -3414,7 +3811,7 @@ AC_CACHE_CHECK(if we should step and slew the time, ac_cv_var_step_slew,
ans=yes
;;
*-*-solaris2.1[[0-9]]*)
- ans-no
+ ans=no
;;
*-*-solaris2.[[012]]*)
ans=yes
@@ -3432,7 +3829,8 @@ case "$ac_cv_var_step_slew" in
esac
AC_CACHE_CHECK(if ntpdate should step the time, ac_cv_var_ntpdate_step,
-[AC_ARG_ENABLE(ntpdate-step, [ --enable-ntpdate-step s if ntpdate should step the time],
+[AC_ARG_ENABLE(ntpdate-step,
+ AC_HELP_STRING([--enable-ntpdate-step], [s if ntpdate should step the time]),
[ans=$enableval],
[case "$host" in
*-apple-aux[[23]]*)
@@ -3448,8 +3846,9 @@ case "$ac_cv_var_ntpdate_step" in
esac
AC_CACHE_CHECK(if we should sync TODR clock every hour, ac_cv_var_sync_todr,
-[AC_ARG_ENABLE(hourly-todr-sync, [ --enable-hourly-todr-sync
- s if we should sync TODR hourly],
+[AC_ARG_ENABLE(hourly-todr-sync,
+ AC_HELP_STRING([--enable-hourly-todr-sync],
+ [s if we should sync TODR hourly]),
[ans=$enableval],
[case "$host" in
*-*-nextstep*)
@@ -3467,7 +3866,9 @@ case "$ac_cv_var_sync_todr" in
esac
AC_CACHE_CHECK(if we should avoid kernel FLL bug, ac_cv_var_kernel_fll_bug,
-[AC_ARG_ENABLE(kernel-fll-bug, [ --enable-kernel-fll-bug s if we should avoid a kernel FLL bug],
+[AC_ARG_ENABLE(kernel-fll-bug,
+ AC_HELP_STRING([--enable-kernel-fll-bug],
+ [s if we should avoid a kernel FLL bug]),
[ans=$enableval],
[case "$host" in
*-*-solaris2.6)
@@ -3521,7 +3922,8 @@ esac
AC_CACHE_CHECK(if we should use the IRIG sawtooth filter, ac_cv_var_irig_sucks,
[AC_ARG_ENABLE(irig-sawtooth,
- AC_HELP_STRING([--enable-irig-sawtooth], [s if we should enable the IRIG sawtooth filter]),
+ AC_HELP_STRING([--enable-irig-sawtooth],
+ [s if we should enable the IRIG sawtooth filter]),
[ans=$enableval],
[case "$host" in
*-*-solaris2.[[89]])
@@ -3541,7 +3943,8 @@ esac
AC_CACHE_CHECK(if we should enable NIST lockclock scheme, ac_cv_var_nist_lockclock,
[AC_ARG_ENABLE(nist,
- AC_HELP_STRING([--enable-nist], [- if we should enable the NIST lockclock scheme]),
+ AC_HELP_STRING([--enable-nist],
+ [- if we should enable the NIST lockclock scheme]),
[ans=$enableval],[ans=no])
ac_cv_var_nist_lockclock=$ans])
case "$ac_cv_var_nist_lockclock" in
@@ -3556,6 +3959,21 @@ if test $ac_cv_struct_sockaddr_has_sa_len = yes; then
AC_DEFINE(ISC_PLATFORM_HAVESALEN, ,[ISC: struct sockaddr as sa_len?])
fi
+AC_ARG_ENABLE(ipv6, AC_HELP_STRING([--enable-ipv6], [s use IPv6?]))
+
+case "$enable_ipv6" in
+ yes|''|autodetect)
+ case "$host" in
+ powerpc-ibm-aix4*) ;;
+ *)
+ AC_DEFINE(WANT_IPV6, ,[ISC: Want IPv6?])
+ ;;
+ esac
+ ;;
+ no)
+ ;;
+esac
+
AC_MSG_CHECKING(for IPv6 structures)
AC_TRY_COMPILE([
#include <sys/types.h>
@@ -3567,6 +3985,86 @@ AC_TRY_COMPILE([
[AC_MSG_RESULT(no)
found_ipv6=no])
+#
+# See whether IPv6 support is provided via a Kame add-on.
+# This is done before other IPv6 linking tests so LIBS is properly set.
+#
+AC_MSG_CHECKING(for Kame IPv6 support)
+AC_ARG_WITH(kame,
+ AC_HELP_STRING([--with-kame], [- =/usr/local/v6]),
+ use_kame="$withval", use_kame="no")
+
+case "$use_kame" in
+ no)
+ ;;
+ yes)
+ kame_path=/usr/local/v6
+ ;;
+ *)
+ kame_path="$use_kame"
+ ;;
+esac
+
+case "$use_kame" in
+ no)
+ AC_MSG_RESULT(no)
+ ;;
+ *)
+ if test -f $kame_path/lib/libinet6.a; then
+ AC_MSG_RESULT($kame_path/lib/libinet6.a)
+ LIBS="-L$kame_path/lib -linet6 $LIBS"
+ else
+ AC_MSG_ERROR([$kame_path/lib/libinet6.a not found.
+
+Please choose the proper path with the following command:
+
+ configure --with-kame=PATH
+])
+ fi
+ ;;
+esac
+
+#
+# Whether netinet6/in6.h is needed has to be defined in isc/platform.h.
+# Including it on Kame-using platforms is very bad, though, because
+# Kame uses #error against direct inclusion. So include it on only
+# the platform that is otherwise broken without it -- BSD/OS 4.0 through 4.1.
+# This is done before the in6_pktinfo check because that's what
+# netinet6/in6.h is needed for.
+#
+case "$host" in
+*-bsdi4.[[01]]*)
+ ISC_PLATFORM_NEEDNETINET6IN6H="#define ISC_PLATFORM_NEEDNETINET6IN6H 1"
+ LWRES_PLATFORM_NEEDNETINET6IN6H="#define LWRES_PLATFORM_NEEDNETINET6IN6H 1"
+ isc_netinet6in6_hack="#include <netinet6/in6.h>"
+ ;;
+*)
+ ISC_PLATFORM_NEEDNETINET6IN6H="#undef ISC_PLATFORM_NEEDNETINET6IN6H"
+ LWRES_PLATFORM_NEEDNETINET6IN6H="#undef LWRES_PLATFORM_NEEDNETINET6IN6H"
+ isc_netinet6in6_hack=""
+ ;;
+esac
+
+#
+# This is similar to the netinet6/in6.h issue.
+#
+case "$host" in
+*-sco-sysv*uw*|*-*-sysv*UnixWare*|*-*-sysv*OpenUNIX*)
+ # UnixWare
+ # ISC_PLATFORM_NEEDNETINETIN6H="#define ISC_PLATFORM_NEEDNETINETIN6H 1"
+ # LWRES_PLATFORM_NEEDNETINETIN6H="#define LWRES_PLATFORM_NEEDNETINETIN6H 1"
+ AC_DEFINE(ISC_PLATFORM_FIXIN6ISADDR, 1,[Do we need to fix in6isaddr?])
+ isc_netinetin6_hack="#include <netinet/in6.h>"
+ ;;
+*)
+ # ISC_PLATFORM_NEEDNETINETIN6H="#undef ISC_PLATFORM_NEEDNETINETIN6H"
+ # LWRES_PLATFORM_NEEDNETINETIN6H="#undef LWRES_PLATFORM_NEEDNETINETIN6H"
+ # ISC_PLATFORM_FIXIN6ISADDR="#undef ISC_PLATFORM_FIXIN6ISADDR"
+ isc_netinetin6_hack=""
+ ;;
+esac
+
+
AC_MSG_CHECKING([for struct if_laddrconf])
AC_TRY_LINK([
#include <sys/types.h>
@@ -3590,7 +4088,15 @@ AC_TRY_LINK([
case "$found_ipv6" in
yes)
AC_DEFINE(ISC_PLATFORM_HAVEIPV6, ,[ISC: Have IPv6?])
- AC_DEFINE(WANT_IPV6, ,[ISC: Want IPv6?])
+
+ AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id], , ,
+[
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+$isc_netinetin6_hack
+$isc_netinet6in6_hack
+])
AC_MSG_CHECKING(for in6_pktinfo)
AC_TRY_COMPILE([
@@ -3606,8 +4112,31 @@ $isc_netinet6in6_hack
[ISC: Have struct in6_pktinfo?])],
[AC_MSG_RESULT(no -- disabling runtime ipv6 support)])
- AC_MSG_CHECKING(for in6addr_any)
- AC_TRY_LINK([
+ # HMS: Use HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID instead?
+ AC_MSG_CHECKING(for sin6_scope_id in struct sockaddr_in6)
+ AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+$isc_netinetin6_hack
+$isc_netinet6in6_hack
+],
+ [struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0);],
+ [AC_MSG_RESULT(yes)
+ AC_DEFINE(ISC_PLATFORM_HAVESCOPEID, ,
+ [ISC: Have sin6_scope_id?])],
+ result="#define LWRES_HAVE_SIN6_SCOPE_ID 1"],
+ [AC_MSG_RESULT(no)
+ ISC_PLATFORM_HAVESCOPEID="#undef ISC_PLATFORM_HAVESCOPEID"
+ result="#undef LWRES_HAVE_SIN6_SCOPE_ID"])
+ LWRES_HAVE_SIN6_SCOPE_ID="$result"
+
+ ;;
+esac
+
+# We need this check run all the time...
+AC_MSG_CHECKING(for in6addr_any)
+AC_TRY_LINK([
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
@@ -3615,14 +4144,12 @@ $isc_netinetin6_hack
$isc_netinet6in6_hack
$isc_in_addr6_hack
],
- [struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);],
+ [[struct in6_addr in6; in6 = in6addr_any; return (in6.s6_addr[0]);]],
[AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)
AC_DEFINE(ISC_PLATFORM_NEEDIN6ADDRANY, ,
[ISC: Need in6addr_any?])]
- )
- ;;
-esac
+)
#
# Look for a sysctl call to get the list of network interfaces.
@@ -3640,34 +4167,10 @@ found_rt_iflist
AC_DEFINE(HAVE_IFLIST_SYSCTL,1,[ISC: Use iflist_sysctl?])],
[AC_MSG_RESULT(no)])
-case "$build" in
- $host)
- ;;
- *) case "$host" in
- *-*-vxworks*)
- LDFLAGS="$LDFLAGS -r"
- ;;
- esac
- ;;
-esac
+###
AC_DEFINE_DIR(NTP_KEYSDIR, sysconfdir, [Default location of crypto key info])
-AC_SUBST(ARLIB_DIR)
-if test -d $srcdir/arlib
-then
- AC_ARG_WITH(arlib,
- AC_HELP_STRING([--with-arlib], [- Compile the async resolver library?]),
- [ans=$withval], [ans=no])
-
- case "$ans" in
- yes)
- ARLIB_DIR=arlib
- AC_CONFIG_SUBDIRS(arlib)
- ;;
- esac
-fi
-
AC_CONFIG_FILES(Makefile)
AC_CONFIG_FILES(ElectricFence/Makefile)
AC_CONFIG_FILES(adjtimed/Makefile)
@@ -3688,6 +4191,7 @@ AC_CONFIG_FILES(scripts/Makefile)
AC_CONFIG_FILES(scripts/calc_tickadj, [chmod +x scripts/calc_tickadj])
AC_CONFIG_FILES(scripts/checktime, [chmod +x scripts/checktime])
AC_CONFIG_FILES(scripts/freq_adj, [chmod +x scripts/freq_adj])
+AC_CONFIG_FILES(scripts/html2man, [chmod +x scripts/html2man])
AC_CONFIG_FILES(scripts/mkver, [chmod +x scripts/mkver])
AC_CONFIG_FILES(scripts/ntp-wait, [chmod +x scripts/ntp-wait])
AC_CONFIG_FILES(scripts/ntpsweep, [chmod +x scripts/ntpsweep])
@@ -3697,11 +4201,6 @@ AC_CONFIG_FILES(scripts/plot_summary, [chmod +x scripts/plot_summary])
AC_CONFIG_FILES(scripts/summary, [chmod +x scripts/summary])
AC_CONFIG_FILES(util/Makefile)
-case "$MAKE_SNTP" in
- '') ;;
- *)
- AC_CONFIG_SUBDIRS(sntp)
- ;;
-esac
+AC_CONFIG_SUBDIRS(sntp)
AC_OUTPUT
diff --git a/contrib/ntp/depcomp b/contrib/ntp/depcomp
index aea3d00..04701da 100755
--- a/contrib/ntp/depcomp
+++ b/contrib/ntp/depcomp
@@ -1,7 +1,9 @@
#! /bin/sh
-
# depcomp - compile a program generating dependencies as side-effects
-# Copyright 1999, 2000 Free Software Foundation, Inc.
+
+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
@@ -15,8 +17,8 @@
# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# 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
@@ -25,22 +27,45 @@
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+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 <bug-automake@gnu.org>.
+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
-# `libtool' can also be set to `yes' or `no'.
-
-if test -z "$depfile"; then
- base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
- dir=`echo "$object" | sed 's,/.*$,/,'`
- if test "$dir" = "$object"; then
- dir=
- fi
- # FIXME: should be _deps on DOS.
- depfile="$dir.deps/$base"
-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"
@@ -172,19 +197,25 @@ sgi)
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
- # in a .u file. 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.
- stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
+ # 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"
- outname="$stripped.o"
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"
@@ -192,6 +223,7 @@ aix)
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:'.
@@ -255,31 +287,47 @@ tru64)
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
- tmpdepfile1="$dir.libs/$base.lo.d"
- tmpdepfile2="$dir.libs/$base.d"
+ # 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"
+ 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"
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
- if test -f "$tmpdepfile1"; then
- tmpdepfile="$tmpdepfile1"
- else
- tmpdepfile="$tmpdepfile2"
- 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 space and a tab in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$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
@@ -292,7 +340,7 @@ tru64)
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout, regardless of -o.
+ # always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
@@ -388,7 +436,7 @@ makedepend)
cpp)
# Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout.
+ # always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
@@ -419,7 +467,8 @@ cpp)
done
"$@" -E |
- sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ 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"
@@ -430,7 +479,7 @@ cpp)
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout, regardless of -o,
+ # always write the preprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
@@ -470,3 +519,12 @@ none)
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/contrib/ntp/flock-build b/contrib/ntp/flock-build
index 80dadc3..557809d 100755
--- a/contrib/ntp/flock-build
+++ b/contrib/ntp/flock-build
@@ -3,38 +3,33 @@
BUILD_ARGS="$@"
PARSE="--enable-parse-clocks"
#PARSE=
-SNTP="--with-sntp"
+STD="--enable-simulator"
# Backroom:
-# beauregard freebsd-4
-# deacon sparc-sun-solaris2.7
-# grundoon sparc-sun-sunos4.1.3
-# howland freebsd-4
-# mort sparc-sun-solaris2.8
-# whimsy sparc-sun-solaris2.8
+# beauregard freebsd-6
+# o churchy alpha-dec-osf5.1
+# deacon sparc-sun-solaris2.10
+# grundoon freebsd-6.1
+# howland freebsd-6.1
+# o macabre sparc-sun-solaris2.8
+# o mort sparc-sun-solaris2.8
+# whimsy sparc-sun-solaris2.10
# Campus:
-# * albert redhat-8
-# baldwin sparc-sun-solaris2.8
-# bridgeport sparc-sun-solaris2.8
-# * bunnylou alpha-dec-osf4.0
-# * churchy alpha-dec-osf5.1
-# cowbird alpha-dec-osf4.0
-# * hepzibah freebsd-4
-# malarky sparc-sun-solaris2.8
-# * pogo sparc-sun-solaris2.8
-# * porkypine mips-dec-ultrix4.4
-# * rackety sparc-sun-sunos4.1.3/cc
-# ? roogey debian
-# * snavely hppa1.1-hp-hpux10.20
+# * baldwin sparc-sun-solaris2.10
+# * bridgeport sparc-sun-solaris2.10
+# * cowbird freebsd-6.1
+# * malarky sparc-sun-solaris2.10
+# * pogo sparc-sun-solaris2.10
+# * rackety freebsd-6.1
-c_d=`pwd`
+c_d=${PWD:-`pwd`}
SIG=`perl -e 'print rand'`
echo $SIG > .buildkey
case "$LIST" in
- '') LIST="albert bunnylou churchy hepzibah pogo porkypine rackety snavely" ;;
+ '') LIST="baldwin bridgeport cowbird malarky pogo rackety" ;;
esac
for i in $LIST
@@ -42,12 +37,16 @@ do
echo $i
case "1" in
0)
- ssh $i "cd $c_d ; ./build $SIG $PARSE $SNTP $BUILD_ARGS" &
- ssh $i "cd $c_d ; ./build $SIG $PARSE $SNTP --without-crypto $BUILD_ARGS" &
+ ssh $i "cd $c_d ; ./build $SIG $PARSE $STD $BUILD_ARGS" &
+ ssh $i "cd $c_d ; ./build $SIG $PARSE $STD --without-crypto $BUILD_ARGS" &
+ ssh $i "cd $c_d ; ./build $SIG $STD --disable-all-clocks $BUILD_ARGS" &
;;
1) ssh $i "cd $c_d ; \
-./build $SIG $PARSE $SNTP $BUILD_ARGS ; \
-./build $SIG $PARSE $SNTP --without-crypto $BUILD_ARGS" &
+./build $SIG $PARSE $STD $BUILD_ARGS ; \
+./build $SIG $PARSE $STD --disable-debugging $BUILD_ARGS ; \
+./build $SIG $PARSE $STD --without-crypto $BUILD_ARGS ; \
+./build $SIG $STD --disable-all-clocks $BUILD_ARGS" \
+&
;;
esac
done
diff --git a/contrib/ntp/html/accopt.html b/contrib/ntp/html/accopt.html
index f54852a..be8a5bb 100644
--- a/contrib/ntp/html/accopt.html
+++ b/contrib/ntp/html/accopt.html
@@ -2,69 +2,72 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Access Control Options</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Access Control Options</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Access Control Options</h3>
- <img src="pic/pogo6.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
- <p>The skunk watches for intruders and sprays.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:02 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#acx">Access Control Support</a>
- <li class="inline"><a href="#kiss">The Kiss-of-Death Packet</a>
- <li class="inline"><a href="#cmd">Access Control Commands</a>
- </ul>
- <hr>
- <h4 id="acx">Access Control Support</h4>
- The<tt> ntpd</tt> daemon implements a general purpose address/mask based restriction list. The list contains address/match entries sorted first by increasing address values and and then by increasing mask values. A match occurs when the bitwise AND of the mask and the packet source address is equal to the bitwise AND of the mask and address in the list. The list is searched in order with the last match found defining the restriction flags associated with the entry. Additional information and examples can be found in the <a href="notes.html">Notes on Configuring NTP and Setting up a NTP Subnet</a> page.
- <p>The restriction facility was implemented in conformance with the access policies for the original NSFnet backbone time servers. Later the facility was expanded to deflect cryptographic and clogging attacks. While this facility may be useful for keeping unwanted or broken or malicious clients from congesting innocent servers, it should not be considered an alternative to the NTP authentication facilities. Source address based restrictions are easily circumvented by a determined cracker.</p>
- <p>Clients can be denied service because they are explicitly included in the restrict list created by the <tt>restrict</tt> command or implicitly as the result of cryptographic or rate limit violations. Cryptographic violations include certificate or identity verification failure; rate limit violations generally result from defective NTP&nbsp;implementations that send packets at abusive rates. Some violations cause denied service only for the offending packet, others cause denied service for a timed period and others cause the denied service for an indefinate period. When a client or network is denied access for an indefinate period, the only way at present to remove the restrictions is by restarting the server.</p>
- <h4 id="kiss">The Kiss-of-Death Packet</h4>
- <p>Ordinarily, packets denied service are simply dropped with no further action except incrementing statistics counters. Sometimes a more proactive response is needed, such as a server message that explicitly requests the client to stop sending and leave a message for the system operator. A special packet format has been created for this purpose called the &quot;kiss-o'-death&quot; (KoD) packet. KoD packets have the leap bits set unsynchronized and stratum set to zero and the reference identifier field set to a four-byte ASCII code. If the <tt>noserve</tt> or <tt>notrust</tt> flag of the matching restrict list entry is set, the code is &quot;DENY&quot;; if the <tt>limited</tt> flag is set and the rate limit is exceeded, the code is &quot;RATE&quot;. Finally, if a cryptographic violation occurs, the code is &quot;CRYP&quot;.</p>
- <p>A client receiving a KoD performs a set of sanity checks to minimize security exposure, then updates the stratum and reference identifier peer variables, sets the access denied (TEST4) bit in the peer flash variable and sends a message to the log. As long as the TEST4 bit is set, the client will send no further packets to the server. The only way at present to recover from this condition is to restart the protocol at both the client and server. This happens automatically at the client when the association times out. It will happen at the server only if the server operator cooperates.</p>
- <h4 id="cmd">Access Control Commands</h4>
- <dl>
- <dt><tt>discard [ average <i>avg</i> ][ minimum <i>min</i> ] [ monitor <i>prob</i> ]</tt>
- <dd>Set the parameters of the <tt>limited</tt> facility which protects the server from client abuse. The <tt>average</tt> subcommand specifies the minimum average packet spacing, while the <tt>minimum</tt> subcommand specifies the minimum packet spacing. Packets that violate these minima are discarded and a kiss-o'-death packet returned if enabled. The default minimum average and minimum are 5 and 2, respectively. The monitor subcommand specifies the probability of discard for packets that overflow the rate-control window. <dt><tt>restrict <i>address</i> [mask <i>mask</i>] [<i>flag</i>][...]</tt>
- <dd>The <i><tt>address</tt></i> argument expressed in dotted-quad form is the address of a host or network. Alternatively, the <tt><i>address</i></tt> argument can be a valid host DNS&nbsp;name. The <i><tt>mask</tt></i> argument expressed in dotted-quad form defaults to <tt>255.255.255.255</tt>, meaning that the <i><tt>address</tt></i> is treated as the address of an individual host. A default entry (address <tt>0.0.0.0</tt>, mask <tt>0.0.0.0</tt>) is always included and is always the first entry in the list. Note that text string <tt>default</tt>, with no mask option, may be used to indicate the default entry.
- <dd>In the current implementation, <i><tt>flag</tt></i> always restricts access, i.e., an entry with no flags indicates that free access to the server is to be given. The flags are not orthogonal, in that more restrictive flags will often make less restrictive ones redundant. The flags can generally be classed into two catagories, those which restrict time service and those which restrict informational queries and attempts to do run-time reconfiguration of the server. One or more of the following flags may be specified:
- <dl>
- <dt><tt>ignore</tt>
- <dd>Deny packets of all kinds, including <tt>ntpq</tt> and <tt>ntpdc</tt> queries.
- <dt><tt>kod</tt>
- <dd>If this flag is set when an access violation occurs, a kiss-o'-death (KoD) packet is sent. KoD packets are rate limited to no more than one per second. If another KoD packet occurs within one second after the last one, the packet is dropped <dt><tt>limited</tt>
- <dd>Deny service if the packet spacing violates the lower limits specified in the <tt>discard</tt> command. A history of clients is kept using the monitoring capability of <tt>ntpd</tt>. Thus, monitoring is always active as long as there is a restriction entry with the <tt>limited</tt> flag.
- <dt><tt>lowpriotrap</tt>
- <dd>Declare traps set by matching hosts to be low priority. The number of traps a server can maintain is limited (the current limit is 3). Traps are usually assigned on a first come, first served basis, with later trap requestors being denied service. This flag modifies the assignment algorithm by allowing low priority traps to be overridden by later requests for normal priority traps.
- <dt><tt>nomodify</tt>
- <dd>Deny <tt>ntpq</tt> and <tt>ntpdc</tt> queries which attempt to modify the state of the server (i.e., run time reconfiguration). Queries which return information are permitted.
- <dt><tt>noquery</tt>
- <dd>Deny <tt>ntpq</tt> and <tt>ntpdc</tt> queries. Time service is not affected.
- <dt><tt>nopeer</tt>
- <dd>Deny packets which would result in mobilizing a new association. &nbsp;This includes broadcast and symmetric active packets when a configured association does not exist.
- <dt><tt>noserve</tt>
- <dd>Deny all packets except <tt>ntpq</tt> and <tt>ntpdc</tt> queries.
- <dt><tt>notrap</tt>
- <dd>Decline to provide mode 6 control message trap service to matching hosts. The trap service is a subsystem of the <tt>ntpdq</tt> control message protocol which is intended for use by remote event logging programs.
- <dt><tt>notrust</tt>
- <dd>Deny service unless the packet is cryptographically authenticated.
- <dt><tt>ntpport</tt>
- <dd>This is actually a match algorithm modifier, rather than a restriction flag. Its presence causes the restriction entry to be matched only if the source port in the packet is the standard NTP UDP port (123). Both <tt>ntpport</tt> and <tt>non-ntpport</tt> may be specified. The <tt>ntpport</tt> is considered more specific and is sorted later in the list.
- <dt><tt>version</tt>
- <dd>Deny packets that do not match the current NTP version.
- </dl>
- <dd>Default restriction list entries with the flags <tt>ignore, interface, ntpport</tt>, for each of the local host's interface addresses are inserted into the table at startup to prevent the server from attempting to synchronize to its own time. A default entry is also always present, though if it is otherwise unconfigured; no flags are associated with the default entry (i.e., everything besides your own NTP server is unrestricted).
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Access Control Options</h3>
+ <img src="pic/pogo6.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
+ <p>The skunk watches for intruders and sprays.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:35</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#acx">Access Control Support</a>
+ <li class="inline"><a href="#kiss">The Kiss-of-Death Packet</a>
+ <li class="inline"><a href="#cmd">Access Control Commands</a>
+ </ul>
+ <hr>
+ <h4 id="acx">Access Control Support</h4>
+ The<tt> ntpd</tt> daemon implements a general purpose address/mask based restriction list. The list contains address/match entries sorted first by increasing address values and and then by increasing mask values. A match occurs when the bitwise AND of the mask and the packet source address is equal to the bitwise AND of the mask and address in the list. The list is searched in order with the last match found defining the restriction flags associated with the entry. Additional information and examples can be found in the <a href="notes.html">Notes on Configuring NTP and Setting up a NTP Subnet</a> page.
+ <p>The restriction facility was implemented in conformance with the access policies for the original NSFnet backbone time servers. Later the facility was expanded to deflect cryptographic and clogging attacks. While this facility may be useful for keeping unwanted or broken or malicious clients from congesting innocent servers, it should not be considered an alternative to the NTP authentication facilities. Source address based restrictions are easily circumvented by a determined cracker.</p>
+ <p>Clients can be denied service because they are explicitly included in the restrict list created by the <tt>restrict</tt> command or implicitly as the result of cryptographic or rate limit violations. Cryptographic violations include certificate or identity verification failure; rate limit violations generally result from defective NTP&nbsp;implementations that send packets at abusive rates. Some violations cause denied service only for the offending packet, others cause denied service for a timed period and others cause the denied service for an indefinate period. When a client or network is denied access for an indefinate period, the only way at present to remove the restrictions is by restarting the server.</p>
+ <h4 id="kiss">The Kiss-of-Death Packet</h4>
+ <p>Ordinarily, packets denied service are simply dropped with no further action except incrementing statistics counters. Sometimes a more proactive response is needed, such as a server message that explicitly requests the client to stop sending and leave a message for the system operator. A special packet format has been created for this purpose called the &quot;kiss-o'-death&quot; (KoD) packet. KoD packets have the leap bits set unsynchronized and stratum set to zero and the reference identifier field set to a four-byte ASCII code. If the <tt>noserve</tt> or <tt>notrust</tt> flag of the matching restrict list entry is set, the code is &quot;DENY&quot;; if the <tt>limited</tt> flag is set and the rate limit is exceeded, the code is &quot;RATE&quot;. Finally, if a cryptographic violation occurs, the code is &quot;CRYP&quot;.</p>
+ <p>A client receiving a KoD performs a set of sanity checks to minimize security exposure, then updates the stratum and reference identifier peer variables, sets the access denied (TEST4) bit in the peer flash variable and sends a message to the log. As long as the TEST4 bit is set, the client will send no further packets to the server. The only way at present to recover from this condition is to restart the protocol at both the client and server. This happens automatically at the client when the association times out. It will happen at the server only if the server operator cooperates.</p>
+ <h4 id="cmd">Access Control Commands</h4>
+ <dl>
+ <dt><tt>discard [ average <i>avg</i> ][ minimum <i>min</i> ] [ monitor <i>prob</i> ]</tt>
+ <dd>Set the parameters of the <tt>limited</tt> facility which protects the server from client abuse. The <tt>average</tt> subcommand specifies the minimum average packet spacing, while the <tt>minimum</tt> subcommand specifies the minimum packet spacing. Packets that violate these minima are discarded and a kiss-o'-death packet returned if enabled. The default minimum average and minimum are 5 and 2, respectively. The monitor subcommand specifies the probability of discard for packets that overflow the rate-control window.
+ <dt><tt>restrict <i>address</i> [mask <i>mask</i>] [<i>flag</i>][...]</tt>
+ <dd>The <i><tt>address</tt></i> argument expressed in dotted-quad form is the address of a host or network. Alternatively, the <tt><i>address</i></tt> argument can be a valid host DNS&nbsp;name. The <i><tt>mask</tt></i> argument expressed in dotted-quad form defaults to <tt>255.255.255.255</tt>, meaning that the <i><tt>address</tt></i> is treated as the address of an individual host. A default entry (address <tt>0.0.0.0</tt>, mask <tt>0.0.0.0</tt>) is always included and is always the first entry in the list. Note that text string <tt>default</tt>, with no mask option, may be used to indicate the default entry.
+ <dd>In the current implementation, <i><tt>flag</tt></i> always restricts access, i.e., an entry with no flags indicates that free access to the server is to be given. The flags are not orthogonal, in that more restrictive flags will often make less restrictive ones redundant. The flags can generally be classed into two catagories, those which restrict time service and those which restrict informational queries and attempts to do run-time reconfiguration of the server. One or more of the following flags may be specified:
+ <dl>
+ <dt><tt>ignore</tt>
+ <dd>Deny packets of all kinds, including <tt>ntpq</tt> and <tt>ntpdc</tt> queries.
+ <dt><tt>kod</tt>
+ <dd>If this flag is set when an access violation occurs, a kiss-o'-death (KoD) packet is sent. KoD packets are rate limited to no more than one per second. If another KoD packet occurs within one second after the last one, the packet is dropped
+ <dt><tt>limited</tt>
+ <dd>Deny service if the packet spacing violates the lower limits specified in the <tt>discard</tt> command. A history of clients is kept using the monitoring capability of <tt>ntpd</tt>. Thus, monitoring is always active as long as there is a restriction entry with the <tt>limited</tt> flag.
+ <dt><tt>lowpriotrap</tt>
+ <dd>Declare traps set by matching hosts to be low priority. The number of traps a server can maintain is limited (the current limit is 3). Traps are usually assigned on a first come, first served basis, with later trap requestors being denied service. This flag modifies the assignment algorithm by allowing low priority traps to be overridden by later requests for normal priority traps.
+ <dt><tt>nomodify</tt>
+ <dd>Deny <tt>ntpq</tt> and <tt>ntpdc</tt> queries which attempt to modify the state of the server (i.e., run time reconfiguration). Queries which return information are permitted.
+ <dt><tt>noquery</tt>
+ <dd>Deny <tt>ntpq</tt> and <tt>ntpdc</tt> queries. Time service is not affected.
+ <dt><tt>nopeer</tt>
+ <dd>Deny packets which would result in mobilizing a new association. &nbsp;This includes broadcast, symmetric-active and manycast client packets when a configured association does not exist.
+ <dt><tt>noserve</tt>
+ <dd>Deny all packets except <tt>ntpq</tt> and <tt>ntpdc</tt> queries.
+ <dt><tt>notrap</tt>
+ <dd>Decline to provide mode 6 control message trap service to matching hosts. The trap service is a subsystem of the <tt>ntpdq</tt> control message protocol which is intended for use by remote event logging programs.
+ <dt><tt>notrust</tt>
+ <dd>Deny packets unless the packet is cryptographically authenticated.
+ <dt><tt>ntpport</tt>
+ <dd>This is actually a match algorithm modifier, rather than a restriction flag. Its presence causes the restriction entry to be matched only if the source port in the packet is the standard NTP UDP port (123). Both <tt>ntpport</tt> and <tt>non-ntpport</tt> may be specified. The <tt>ntpport</tt> is considered more specific and is sorted later in the list.
+ <dt><tt>version</tt>
+ <dd>Deny packets that do not match the current NTP version.
+ </dl>
+ <dd>Default restriction list entries with the flags <tt>ignore, interface, ntpport</tt>, for each of the local host's interface addresses are inserted into the table at startup to prevent the server from attempting to synchronize to its own time. A default entry is also always present, though if it is otherwise unconfigured; no flags are associated with the default entry (i.e., everything besides your own NTP server is unrestricted).
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/assoc.html b/contrib/ntp/html/assoc.html
index b4b8a99..0ca1426 100644
--- a/contrib/ntp/html/assoc.html
+++ b/contrib/ntp/html/assoc.html
@@ -2,57 +2,58 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Association Management</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Association Management</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Association Management</h3>
- <img src="pic/alice51.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>Make sure who your friends are.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:03 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#modes">Association Modes</a>
- <li class="inline"><a href="#client">Client/Server Mode</a>
- <li class="inline"><a href="#symact">Symmetric Active/Passive Mode</a>
- <li class="inline"><a href="#broad">Broadcast/Multicast Modes</a>
- <li class="inline"><a href="#umlt">Multicasting</a>
- <li class="inline"><a href="#umlt">Multicasting</a>
- <li class="inline"><a href="#burst">Burst Modes</a>
- </ul>
- <hr>
- <h4 id="modes">Association Modes</h4>
- <p>NTP Version 4 (NTPv4) incorporates new features and refinements to the NTP Version 3 (NTPv3) algorithms; however, it continues the tradition of backwards compatibility with older versions. A number of new operating modes for automatic server discovery and improved accuracy in occasionally connected networks are provided. Following is an overview of the new features; additional information is available on the <a href="confopt.html">Configuration Options</a> and <a href="authopt.html">Authentication Options</a> pages and in the papers, reports, memoranda and briefings at <a href="http://www.ntp.org">www.ntp.org</a>.</p>
- <p>There are two types of associations: persistent associations, which result from configuration file commands, and ephemeral associations, which result from protocol operations described below. A persistent association is never demobilized, although it may become dormant when the associated server becomes unreachable. An ephemeral association is mobilized when a message arrives from a server; for instance, a symmetric passive association is mobilized upon arrival of a symmetric active message. A broadcast client association is mobilized upon arrival of a broadcast server message, while a Manycast client association is mobilized upon arrival of a Manycast server message.</p>
- <p>Ordinarily, successful mobilization of an ephemeral association requires the server to be cryptographically authenticated to the dependent client. This can be done using either symmetric-key or public-key cryptography, as described in the <a href="authopt.html">Authentication Options</a> page. The cryptographic means insure an unbroken chain of trust between the dependent client and the primary servers at the root of the synchronization subnet. We call this chain the <i>provenance</i> of the client and define new vocabulary as to proventicate a client or provide proventic credentials. Once mobilized, ephemeral associations are demobilized when either (a) the server becomes unreachable or (b) the server refreshes the key media without notifying the client.</p>
- <p>There are three principal modes of operation: client/server, symmetric active/passive and broadcast. In addition, there are two modes using IP multicast support: multicast and manycast. These modes are selected based on the scope of service, intended flow of time and proventic values and means of configuration. Following is a summary of the operations in each mode.</p>
- <h4 id="client">Client/Server Mode</h4>
- <p>Client/server mode is probably the most common configuration in the Internet today. It operates in the classic remote-procedure-call (RPC) paradigm with stateless servers. In this mode a client sends a request to the server and expects a reply at some future time. In some contexts this would be described as a &quot;pull&quot; operation, in that the client pulls the time and proventic values from the server. A client is configured in client mode using the <tt>server</tt> (sic) command and specifying the server IPv4 or IPv6 DNS name or address; the server requires no prior configuration. The original NTPv3 authentication scheme is applicable in this mode, as well as the new NTPv4 Autokey proventication scheme. In addition, two burst modes described below can be used in appropriate cases.</p>
- <h4 id="symact">Symmetric Active/Passive Mode</h4>
- <p>Symmetric active/passive mode is intended for configurations were a clique of low-stratum peers operate as mutual backups for each other. Each peer operates with one or more primary reference sources, such as a radio clock, or a subset of secondary servers known to be reliable and proventicated. Should one of the peers lose all reference sources or simply cease operation, the other peers will automatically reconfigure so that time and proventication values can flow from the surviving peers to all the others in the clique. In some contexts this would be described as a &quot;push-pull&quot; operation, in that the peer either pulls or pushes the time and proventic values depending on the particular configuration.</p>
- <p>Symmetric peers operate with their sources in some NTP mode and with each other in symmetric mode. A peer is configured in symmetric active mode using the <tt>peer</tt> command and specifying the other peer IPv4 or IPv6 DNS name or address. The other peer can also be configured in symmetric active mode in a similar way. However, if the other peer is not specifically configured in this way, a symmetric passive association is mobilized upon arrival of a symmetric active message. Since an intruder can impersonate a symmetric active peer and inject false time values, symmetric mode should always be cryptographically validated. The original NTPv3 authentication scheme is applicable in this mode, as well as the new NTPv4 Autokey proventication scheme.</p>
- <h4 id="broad">Broadcast/Multicast Modes</h4>
- <p>IPv4 broadcast mode in both NTPv3 and NTPv4 is limited to directly connected subnets such as Ethernets which support broadcast technology. Ordinarily, this technology does not operate beyond the first hop router or gateway. In IPv6 and where service is intended beyond the local subnet, IP multicasting can be used where supported by the operating system and the routers support the Internet Group Management Protocol (IGMP). Most current kernels and available routers do support IP multicast technology, although service providers are sometimes reluctant to deploy it.</p>
- <p>IPv4 broadcast mode is intended for configurations involving one or a few servers and a possibly very large client population on the same subnet. A broadcast server is configured using the <tt>broadcast</tt> command and a IPv4 local subnet broadcast address. A broadcast client is configured using the <tt>broadcastclient</tt> command, in which case it responds to broadcast messages received on any interface. Since an intruder can impersonate a broadcast server and inject false time values, this mode should always be cryptographically validated. The original NTPv3 authentication scheme is applicable in this mode, as well as the new NTPv4 Autokey proventication scheme.</p>
- <p>The server generates broadcast messages continuously at intervals specified by the <tt>minpoll</tt> keyword and with a time-to-live span specified by the <tt>ttl</tt> keyword. A broadcast client responds to the first message received by waiting a short interval to avoid implosion at the server. Then, the client polls the server in burst mode in order to quickly set the host clock and validate the source. This normally results in a volley of eight client/server cycles at 2-s intervals during which both the synchronization and cryptographic protocols run concurrently. Following the volley, the client computes the offset between the apparent broadcast time and the (unicast) client time. This offset is used to compensate for the propagation time between the broadcast server and client. Once the offset is computed, the server continues as before and the client sends no further messages. If for some reason the broadcast server does not respond to client messages, the client will time out the volley and continue in listen-only mode with a default propagation delay.</p>
- <h4 id="umlt">Multicasting</h4>
- <p>Multicasting can be used to extend the scope of a timekeeping subnet in two ways: multicasting and manycasting. A general discussion of IP multicast technology is beyond the scope of this page. In simple terms a host or router sending to a IPv4 or IPv6 multicast group address expects all hosts or routers listening on this address to receive the message. There is no intrinsic limit on the number of senders or receivers and senders can be receivers and vice versa. The IANA has assigned multicast group address IPv4 224.0.1.1 and IPv6 FF05::101 (site local) to NTP, but these addresses should be used only where the multicast span can be reliably constrained to protect neighbor networks. In general, administratively scoped IPv4 group addresses should be used, as described in RFC-2365, or GLOP group addresses, as described in RFC-2770.</p>
- <p>A multicast server is configured using the <tt>broadcast</tt> command, but with a multicast group address instead of a broadcast address. A multicast client is configured using the <tt>multicastclient</tt> command with a multicast group address. However, there is a subtle difference between IPv4 broadcasting and multicasting. IPv4 broadcasting is specific to each interface and local subnet address. If more than one interface is attached to a machine, a separate <tt>broadcast</tt> command applies to each one separately. This provides a way to limit exposure in a firewall, for example. For IPv6 the same distinction can be made using link-local prefix FF02 for each interface and site-local FF05 for all interfacesl.</p>
- <p>IP multicasting is a different paradigm. By design, multicast messages travel from the sender via a shortest-path or shared tree to the receivers, which may require these messages emit from one or all interfaces, but carry a common source address. However, it is possible to configure multiple multicast group addresses using multiple <tt>broadcast</tt> or <tt>multicastclient</tt> commands. Other than these particulars, multicast messages are processed just like broadcast messages. Note that the calibration feature in broadcast mode is extremely important, since IP multicast messages can travel far different paths through the IP routing fabric than ordinary IP unicast messages.</p>
- <h4 id="many">Manycasting</h4>
- <p>Manycasting is a automatic discovery and configuration paradigm new to NTPv4. It is intended as a means for a multicast client to troll the nearby network neighborhood to find cooperating manycast servers, validate them using cryptographic means and evaluate their time values with respect to other servers that might be lurking in the vicinity. The intended result is that each manycast client mobilizes client associations with some number of the &quot;best&quot; of the nearby anycast servers, yet automatically reconfigures to sustain this number of servers should one or another fail. Additional information is on the <a href="manyopt.html">Automatic NTP Configuration Options</a> page.</p>
- <h4 id="burst">Burst Modes</h4>
- <p>There are two burst modes where a single poll event triggers a burst of eight packets at 2-s intervals instead of the usual one. The <tt>burst</tt> mode sends a burst when the server is reachable, while the <tt>iburst</tt> mode sends a burst when the server is unreachable. Each mode is independently of the other and both can be used if necessary. The <tt>calldelay</tt> command can be used to increase the interval between the first and second packets in the burst in order to allow a modem to complete a call. Received server packets update the clock filter, which selects the best (most accurate) time values. When the last packet in the burst is sent, the next received packet updates the system variables and sets the system clock in the usual manner, as if only a single client/server cycle had occurred. The result is not only a rapid and reliable setting of the system clock, but a considerable reduction in network jitter.</p>
- <p>The <tt>iburst</tt> keyword is used where it is important to set the clock quickly when an association is first mobilized or first becomes reachable or when the network attachment requires an initial calling or training procedure. The burst is initiated only when the server first becomes reachable and results in good accuracy with intermittent connections typical of PPP and ISDN services. Outlyers due to initial dial-up delays, etc., are avoided and the client sets the clock within a few seconds after the first message.</p>
- <p>The <tt>burst</tt> keyword can be configured in cases of excessive network jitter or when the network attachment requires an initial calling or training procedure. The burst is initiated at each poll interval when the server is reachable. The burst does produce additional network overhead and can cause trouble if used indiscriminately. It should only be used where the poll interval is expected to settle to values at or above 1024 s.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Association Management</h3>
+ <img src="pic/alice51.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>Make sure who your friends are.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:35</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#modes">Association Modes</a>
+ <li class="inline"><a href="#client">Client/Server Mode</a>
+ <li class="inline"><a href="#symact">Symmetric Active/Passive Mode</a>
+ <li class="inline"><a href="#broad">Broadcast/Multicast Modes</a>
+ <li class="inline"><a href="#umlt">Multicasting</a>
+ <li class="inline"><a href="#umlt">Multicasting</a>
+ <li class="inline"><a href="#burst">Burst Modes</a>
+ </ul>
+ <hr>
+ <h4 id="modes">Association Modes</h4>
+ <p>NTP Version 4 (NTPv4) incorporates new features and refinements to the NTP Version 3 (NTPv3) algorithms; however, it continues the tradition of backwards compatibility with older versions. A number of new operating modes for automatic server discovery and improved accuracy in occasionally connected networks are provided. Following is an overview of the new features; additional information is available on the <a href="confopt.html">Configuration Options</a> and <a href="authopt.html">Authentication Options</a> pages and in the papers, reports, memoranda and briefings at <a href="http://www.ntp.org">www.ntp.org</a>.</p>
+ <p>There are two types of associations: persistent associations, which result from configuration file commands, and ephemeral associations, which result from protocol operations described below. A persistent association is never demobilized, although it may become dormant when the associated server becomes unreachable. An ephemeral association is mobilized when a message arrives from a server; for instance, a symmetric passive association is mobilized upon arrival of a symmetric active message. A broadcast client association is mobilized upon arrival of a broadcast server message, while a Manycast client association is mobilized upon arrival of a Manycast server message.</p>
+ <p>Ordinarily, successful mobilization of an ephemeral association requires the server to be cryptographically authenticated to the dependent client. This can be done using either symmetric-key or public-key cryptography, as described in the <a href="authopt.html">Authentication Options</a> page. The cryptographic means insure an unbroken chain of trust between the dependent client and the primary servers at the root of the synchronization subnet. We call this chain the <i>provenance</i> of the client and define new vocabulary as to proventicate a client or provide proventic credentials. Once mobilized, ephemeral associations are demobilized when either (a) the server becomes unreachable or (b) the server refreshes the key media without notifying the client.</p>
+ <p>There are three principal modes of operation: client/server, symmetric active/passive and broadcast. In addition, there are two modes using IP multicast support: multicast and manycast. These modes are selected based on the scope of service, intended flow of time and proventic values and means of configuration. Following is a summary of the operations in each mode.</p>
+ <h4 id="client">Client/Server Mode</h4>
+ <p>Client/server mode is probably the most common configuration in the Internet today. It operates in the classic remote-procedure-call (RPC) paradigm with stateless servers. In this mode a client sends a request to the server and expects a reply at some future time. In some contexts this would be described as a &quot;pull&quot; operation, in that the client pulls the time and proventic values from the server. A client is configured in client mode using the <tt>server</tt> (sic) command and specifying the server IPv4 or IPv6 DNS name or address; the server requires no prior configuration. The original NTPv3 authentication scheme is applicable in this mode, as well as the new NTPv4 Autokey proventication scheme. In addition, two burst modes described below can be used in appropriate cases.</p>
+ <h4 id="symact">Symmetric Active/Passive Mode</h4>
+ <p>Symmetric active/passive mode is intended for configurations were a clique of low-stratum peers operate as mutual backups for each other. Each peer operates with one or more primary reference sources, such as a radio clock, or a subset of secondary servers known to be reliable and proventicated. Should one of the peers lose all reference sources or simply cease operation, the other peers will automatically reconfigure so that time and proventication values can flow from the surviving peers to all the others in the clique. In some contexts this would be described as a &quot;push-pull&quot; operation, in that the peer either pulls or pushes the time and proventic values depending on the particular configuration.</p>
+ <p>Symmetric peers operate with their sources in some NTP mode and with each other in symmetric mode. A peer is configured in symmetric active mode using the <tt>peer</tt> command and specifying the other peer IPv4 or IPv6 DNS name or address. The other peer can also be configured in symmetric active mode in a similar way. However, if the other peer is not specifically configured in this way, a symmetric passive association is mobilized upon arrival of a symmetric active message. Since an intruder can impersonate a symmetric active peer and inject false time values, symmetric mode should always be cryptographically validated. The original NTPv3 authentication scheme is applicable in this mode, as well as the new NTPv4 Autokey proventication scheme.</p>
+ <h4 id="broad">Broadcast/Multicast Modes</h4>
+ <p>IPv4 broadcast mode in both NTPv3 and NTPv4 is limited to directly connected subnets such as Ethernets which support broadcast technology. Ordinarily, this technology does not operate beyond the first hop router or gateway. In IPv6 and where service is intended beyond the local subnet, IP multicasting can be used where supported by the operating system and the routers support the Internet Group Management Protocol (IGMP). Most current kernels and available routers do support IP multicast technology, although service providers are sometimes reluctant to deploy it.</p>
+ <p>IPv4 broadcast mode is intended for configurations involving one or a few servers and a possibly very large client population on the same subnet. A broadcast server is configured using the <tt>broadcast</tt> command and a IPv4 local subnet broadcast address. A broadcast client is configured using the <tt>broadcastclient</tt> command, in which case it responds to broadcast messages received on any interface. Since an intruder can impersonate a broadcast server and inject false time values, this mode should always be cryptographically validated. The original NTPv3 authentication scheme is applicable in this mode, as well as the new NTPv4 Autokey proventication scheme.</p>
+ <p>The server generates broadcast messages continuously at intervals specified by the <tt>minpoll</tt> keyword and with a time-to-live span specified by the <tt>ttl</tt> keyword. A broadcast client responds to the first message received by waiting a short interval to avoid implosion at the server. Then, the client polls the server in burst mode in order to quickly set the host clock and validate the source. This normally results in a volley of eight client/server cycles at 2-s intervals during which both the synchronization and cryptographic protocols run concurrently. Following the volley, the client computes the offset between the apparent broadcast time and the (unicast) client time. This offset is used to compensate for the propagation time between the broadcast server and client. Once the offset is computed, the server continues as before and the client sends no further messages. If for some reason the broadcast server does not respond to client messages, the client will time out the volley and continue in listen-only mode with a default propagation delay.</p>
+ <h4 id="umlt">Multicasting</h4>
+ <p>Multicasting can be used to extend the scope of a timekeeping subnet in two ways: multicasting and manycasting. A general discussion of IP multicast technology is beyond the scope of this page. In simple terms a host or router sending to a IPv4 or IPv6 multicast group address expects all hosts or routers listening on this address to receive the message. There is no intrinsic limit on the number of senders or receivers and senders can be receivers and vice versa. The IANA has assigned multicast group address IPv4 224.0.1.1 and IPv6 FF05::101 (site local) to NTP, but these addresses should be used only where the multicast span can be reliably constrained to protect neighbor networks. In general, administratively scoped IPv4 group addresses should be used, as described in RFC-2365, or GLOP group addresses, as described in RFC-2770.</p>
+ <p>A multicast server is configured using the <tt>broadcast</tt> command, but with a multicast group address instead of a broadcast address. A multicast client is configured using the <tt>multicastclient</tt> command with a multicast group address. However, there is a subtle difference between IPv4 broadcasting and multicasting. IPv4 broadcasting is specific to each interface and local subnet address. If more than one interface is attached to a machine, a separate <tt>broadcast</tt> command applies to each one separately. This provides a way to limit exposure in a firewall, for example. For IPv6 the same distinction can be made using link-local prefix FF02 for each interface and site-local FF05 for all interfacesl.</p>
+ <p>IP multicasting is a different paradigm. By design, multicast messages travel from the sender via a shortest-path or shared tree to the receivers, which may require these messages emit from one or all interfaces, but carry a common source address. However, it is possible to configure multiple multicast group addresses using multiple <tt>broadcast</tt> or <tt>multicastclient</tt> commands. Other than these particulars, multicast messages are processed just like broadcast messages. Note that the calibration feature in broadcast mode is extremely important, since IP multicast messages can travel far different paths through the IP routing fabric than ordinary IP unicast messages.</p>
+ <h4 id="many">Manycasting</h4>
+ <p>Manycasting is a automatic discovery and configuration paradigm new to NTPv4. It is intended as a means for a multicast client to troll the nearby network neighborhood to find cooperating manycast servers, validate them using cryptographic means and evaluate their time values with respect to other servers that might be lurking in the vicinity. The intended result is that each manycast client mobilizes client associations with some number of the &quot;best&quot; of the nearby anycast servers, yet automatically reconfigures to sustain this number of servers should one or another fail. Additional information is on the <a href="manyopt.html">Automatic NTP Configuration Options</a> page.</p>
+ <h4 id="burst">Burst Modes</h4>
+ <p>There are two burst modes where a single poll event triggers a burst of eight packets at 2-s intervals instead of the usual one. The <tt>burst</tt> mode sends a burst when the server is reachable, while the <tt>iburst</tt> mode sends a burst when the server is unreachable. Each mode is independently of the other and both can be used if necessary. The <tt>calldelay</tt> command can be used to increase the interval between the first and second packets in the burst in order to allow a modem to complete a call. Received server packets update the clock filter, which selects the best (most accurate) time values. When the last packet in the burst is sent, the next received packet updates the system variables and sets the system clock in the usual manner, as if only a single client/server cycle had occurred. The result is not only a rapid and reliable setting of the system clock, but a considerable reduction in network jitter.</p>
+ <p>The <tt>iburst</tt> keyword is used where it is important to set the clock quickly when an association is first mobilized or first becomes reachable or when the network attachment requires an initial calling or training procedure. The burst is initiated only when the server first becomes reachable and results in good accuracy with intermittent connections typical of PPP and ISDN services. Outlyers due to initial dial-up delays, etc., are avoided and the client sets the clock within a few seconds after the first message.</p>
+ <p>The <tt>burst</tt> keyword can be configured in cases of excessive network jitter or when the network attachment requires an initial calling or training procedure. The burst is initiated at each poll interval when the server is reachable. The burst does produce additional network overhead and can cause trouble if used indiscriminately. It should only be used where the poll interval is expected to settle to values at or above 1024 s.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/audio.html b/contrib/ntp/html/audio.html
index 64b2412..9cea273 100644
--- a/contrib/ntp/html/audio.html
+++ b/contrib/ntp/html/audio.html
@@ -2,54 +2,147 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Reference Clock Audio Drivers</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Reference Clock Audio Drivers</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Reference Clock Audio Drivers</h3>
- <img src="pic/radio2.jpg" alt="jpg" align="left">ICOM R-72 shortwave receiver and Sure audio mixer
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:04 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links8.txt"></script>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#sound">Sound Card Drivers</a>
- <li class="inline"><a href="#short">Shortwave Radio Drivers</a>
- <li class="inline"><a href="#setup">Setup and Debugging Aids</a>
- </ul>
- <hr>
- <h4 id="sound">Sound Card Drivers</h4>
- <p>There are some applications in which the computer time can be disciplined to an audio signal, rather than a serial timecode and communications port or special purpose bus peripheral. This is useful in such cases where the audio signal is sent over a telephone circuit, for example, or received directly from a shortwave receiver. In such cases the audio signal can be connected via an ordinary sound card or baseboard audio codec. The suite of NTP reference clock drivers currently includes three drivers suitable for these applications. They include a driver for the Inter Range Instrumentation Group (IRIG) signals produced by many radio clocks and timing devices, another for the Canadian time/frequency radio station CHU and a third for the NIST time/frequency radio stations WWV and WWVH. The radio drivers are designed to work with ordinary inexpensive shortwave radios and may be one of the least expensive ways to build a good primary time server.</p>
- <p>All three drivers make ample use of sophisticated digital signal processing algorithms designed to efficiently extract timing signals from noise and interference. The radio station drivers in particular implement optimum linear demodulation and decoding techniques, including maximum likelihood and soft-decision methods. The documentation page for each driver contains an in-depth discussion on the algorithms and performance expectations. In some cases the algorithms are further analyzed, modelled and evaluated in a technical report.</p>
- <p>Currently, the audio drivers work with with Sun operating systems and audio codecs, including SunOS 4.1.3 and Solaris from 2.6 and probably all others in between. They also work with FreeBSD from 4.1 with compatible sound card. In fact, the interface is quite generic and support for other systems, in particular the various Unix generics, should not be difficult. Volunteers are solicited.</p>
- <p>The audio drivers include a number of common features designed to groom input signals, suppress spikes and normalize signal levels. An automatic gain control (AGC) feature provides protection against overdriven or underdriven input signals. It is designed to maintain adequate demodulator signal amplitude while avoiding occasional noise spikes. In order to assure reliable operation, the signal level must be in the range where the audio gain control is effective. In general, this means the input signal level must be such as to cause the AGC to set the gain somewhere in the middle of the range from 0 to 255, as indicated in the timecode displayed by the <tt>ntpq</tt> program.</p>
- <p>The drivers operate by disciplining a logical clock based on the codec sample clock to the audio signal as received. This is done by stuffing or slipping samples as required to maintain exact frequency to the order of 0.1 PPM. In order for the driver to reliably lock on the audio signal, the sample clock frequency tolerance must be less than 250 PPM (.025 percent) for the IRIG driver and half that for the radio drivers. The largest error observed so far is about 60 PPM, but it is possible some sound cards or codecs may exceed that value.</p>
- <p>The drivers include provisions to select the input port and to monitor the input signal. The <tt>fudge flag 2</tt> selects the microphone port if set to zero or the line-in port if set to one. It does not seem useful to specify the compact disc player port. The <tt>fudge flag 3</tt> enables the input signal monitor using the previously selected output port and output gain. Both of these flags can be set in the configuration file or remotely using the <tt>ntpdc</tt> utility program.</p>
- <h4 id="short">Shortwave Radio Drivers</h4>
- <p>The WWV/H and CHU audio drivers require an external shortwave radio with the radio output - speaker or headphone jack - connected to either the microphone or line-in port on the computer. There is some degree of art in setting up the radio and antenna and getting the setup to work. While the drivers are highly sophisticated and efficient in extracting timing signals from noise and interference, it always helps to have as clear a signal as possible.</p>
- <p>The most important factor affecting the radio signal is the antenna. It need not be long - even 15 feet is enough if it is located outside of a metal frame building, preferably on the roof, and away from metallic objects. An ordinary CB whip mounted on a PVC pipe and wooden X-frame on the roof should work well with most portable radios, as they are optimized for small antennas.</p>
- <p>The radio need not be located near the computer; in fact, it generally works better if the radio is outside the near field of computers and other electromagnetic noisemakers. It can be in the elevator penthouse connected by house wiring, which can also be used to power the radio. A couple of center-tapped audio transformers will minimize noise pickup and provide phantom power to the radio with return via the building ground.</p>
- <p>The WWV/H and CHU transmitters operate on several frequencies simultaneously, so that in most parts of North America at least one frequency supports propagation to the receiver location at any given hour. While both drivers support the ICOM CI-V radio interface and can tune the radio automatically, computer-tunable radios are expensive and probably not cost effective compared to a GPS receiver. So, the radio frequency must usually be fixed and chosen by compromise.</p>
- <p>Shortwave (3-30 MHz) radio propagation phenomena are well known to shortwave enthusiasts. The phenomena generally obey the following rules:</p>
- <ul>
- <li>The optimum frequency is higher in daytime than nighttime, stays high longer on summer days and low longer on winter nights.
- <li>Transitions between daytime and nightime conditions generally occur somewhat after sunrise and sunset at the midpoint of the path from transmitter to receiver.
- <li>Ambient noise (static) on the lower frequencies follows the thunderstorm season, so is higher on summer afternoons and evenings.
- <li>The lower frequency bands are best for shorter distances, while the higher bands are best for longer distances.
- <li>The optimum frequencies are higher at the peak of the 11-year sunspot cycle and lower at the trough. The current sunspot cycle should peak in the first couple of years beginning the century.
- </ul>
- <p>The best way to choose a frequency is to listen at various times over the day and determine the best highest (daytime) and lowest (nighttime) frequencies. Then, assuming one is available, choose the highest frequency between these frequencies. This strategy assumes that the high frequency is more problematic than the low, that the low frequency probably comes with severe multipath and static, and insures that probably twice a day the chosen frequency will work. For instance, on the east coast the best compromise CHU frequency is probably 7335 kHz and the best WWV frequency is probably 15 MHz.</p>
- <h4 id="setup">Setup and Debugging Aids</h4>
- <p>The audio drivers include extensive setup and debugging support to help hook up the audio signals and monitor the driver operations. The documentation page for each driver describes the various messages that can be produced either in real time or written to the <tt>clockstats</tt> file for later analysis. Of particular help in verifying signal connections and compatibility is a provision to monitor the signal via headphones or speaker.</p>
- <p>Connecting radios and IRIG devices to the computer and verifying correct configuration is somewhat of a black art. The signals have to be connected to the correct ports and the signal level maintained within tolerances. Some radios have recorder outputs which produce a line level signal not affected by the volume control. These signals can be connected to the line-in port on the computer. If the level is too low, connect to the microphone-in port instead. If the radio does not have a recorder output, connect the headphone or speaker output to the line-in port and adjust the volume control so the driver indicates comfortably above the minimum specified and the AGC level somewhere in the middle of the range 0-255. IRIG signals are usually much larger than radio outputs, usually in the range to several volts and may even overload the line-in port. In such cases an attenuator must be used to reduce the signal level below the overload point.</p>
- <p>It is very easy to underdrive or overdrive the audio codec, in which case the drivers will not synchronize to the signal. The drivers use <tt>fudge flag2</tt> to enable audio monitoring of the input signal. This is useful during setup to confirm the signal is actually reaching the audio codec and generally free of hum and interference. This feature is not intended for regular use, since it does increase the processor load on the system. Note that the speaker volume must be set before the driver is started.</p>
- <p>The drivers write a synthesized timecode to the <tt>clockstats</tt> file each time the clock is set or verified and at other times if verbose monitoring is enabled. The format includes several fixed-length fields defining the UTC time to the millisecond, together with additional variable-length fields specific to each driver. The data include the intervals since the clock was last set or verified, the audio gain and various state variables and counters specific to each driver.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Reference Clock Audio Drivers</h3>
+ <img src="pic/radio2.jpg" alt="jpg" align="left">ICOM R-72 shortwave receiver and Sure audio mixer
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:36</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links8.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#sound">Sound Card Drivers</a>
+ <li class="inline"><a href="#short">Shortwave Radio Drivers</a>
+ <li class="inline"><a href="#setup">Setup and Debugging Aids</a>
+ </ul>
+ <hr>
+ <h4 id="sound">Sound Card Drivers</h4>
+ <p>There are some applications in which the computer time can be disciplined to an audio signal, rather than a serial timecode and communications port or special purpose bus peripheral. This is useful in such cases where the audio signal is sent over a telephone circuit, for example, or received directly from a shortwave receiver. In such cases the audio signal can be connected via an ordinary sound card or baseboard audio codec. The suite of NTP reference clock drivers currently includes three drivers suitable for these applications. They include a driver for the Inter Range Instrumentation Group (IRIG) signals produced by many radio clocks and timing devices, another for the Canadian time/frequency radio station CHU and a third for the NIST time/frequency radio stations WWV and WWVH. The radio drivers are designed to work with ordinary inexpensive shortwave radios and may be one of the least expensive ways to build a good primary time server.</p>
+ <p>All three drivers make ample use of sophisticated digital signal processing algorithms designed to efficiently extract timing signals from noise and interference. The radio station drivers in particular implement optimum linear demodulation and decoding techniques, including maximum likelihood and soft-decision methods. The documentation page for each driver contains an in-depth discussion on the algorithms and performance expectations. In some cases the algorithms are further analyzed, modelled and evaluated in a technical report.</p>
+ <p>Currently, the audio drivers work with with Sun operating systems and audio codecs, including SunOS 4.1.3 and Solaris from 2.6 and probably all others in between. They also work with FreeBSD from 4.1 with compatible sound card. In fact, the interface is quite generic and support for other systems, in particular the various Unix generics, should not be difficult. Volunteers are solicited.</p>
+ <p>The audio drivers include a number of common features designed to groom input signals, suppress spikes and normalize signal levels. An automatic gain control (AGC) feature provides protection against overdriven or underdriven input signals. It is designed to maintain adequate demodulator signal amplitude while avoiding occasional noise spikes. In order to assure reliable operation, the signal level must be in the range where the audio gain control is effective. In general, this means the input signal level must be such as to cause the AGC to set the gain somewhere in the middle of the range from 0 to 255, as indicated in the timecode displayed by the <tt>ntpq</tt> program.</p>
+ <p>The drivers operate by disciplining a logical clock based on the codec sample clock to the audio signal as received. This is done by stuffing or slipping samples as required to maintain exact frequency to the order of 0.1 PPM. In order for the driver to reliably lock on the audio signal, the sample clock frequency tolerance must be less than 250 PPM (.025 percent) for the IRIG driver and half that for the radio drivers. The largest error observed so far is about 60 PPM, but it is possible some sound cards or codecs may exceed that value.</p>
+ <p>The drivers include provisions to select the input port and to monitor the input signal. The <tt>fudge flag 2</tt> selects the microphone port if set to zero or the line-in port if set to one. It does not seem useful to specify the compact disc player port. The <tt>fudge flag 3</tt> enables the input signal monitor using the previously selected output port and output gain. Both of these flags can be set in the configuration file or remotely using the <tt>ntpdc</tt> utility program.</p>
+ <h4 id="short">Shortwave Radio Drivers</h4>
+ <p>The WWV/H and CHU audio drivers require an external shortwave radio with the radio output - speaker or headphone jack - connected to either the microphone or line-in port on the computer. There is some degree of art in setting up the radio and antenna and getting the setup to work. While the drivers are highly sophisticated and efficient in extracting timing signals from noise and interference, it always helps to have as clear a signal as possible.</p>
+ <p>The most important factor affecting the radio signal is the antenna. It need not be long - even 15 feet is enough if it is located outside of a metal frame building, preferably on the roof, and away from metallic objects. An ordinary CB whip mounted on a PVC pipe and wooden X-frame on the roof should work well with most portable radios, as they are optimized for small antennas.</p>
+ <p>The radio need not be located near the computer; in fact, it generally works better if the radio is outside the near field of computers and other electromagnetic noisemakers. It can be in the elevator penthouse connected by house wiring, which can also be used to power the radio. A couple of center-tapped audio transformers will minimize noise pickup and provide phantom power to the radio with return via the building ground.</p>
+ <p>The WWV/H and CHU transmitters operate on several frequencies simultaneously, so that in most parts of North America at least one frequency supports propagation to the receiver location at any given hour. While both drivers support the ICOM CI-V radio interface and can tune the radio automatically, computer-tunable radios are expensive and probably not cost effective compared to a GPS receiver. So, the radio frequency must usually be fixed and chosen by compromise.</p>
+ <p>Shortwave (3-30 MHz) radio propagation phenomena are well known to shortwave enthusiasts. The phenomena generally obey the following rules:</p>
+ <ul>
+ <li>The optimum frequency is higher in daytime than nighttime, stays high longer on summer days and low longer on winter nights.
+ <li>Transitions between daytime and nightime conditions generally occur somewhat after sunrise and sunset at the midpoint of the path from transmitter to receiver.
+ <li>Ambient noise (static) on the lower frequencies follows the thunderstorm season, so is higher on summer afternoons and evenings.
+ <li>The lower frequency bands are best for shorter distances, while the higher bands are best for longer distances.
+ <li>The optimum frequencies are higher at the peak of the 11-year sunspot cycle and lower at the trough. The current sunspot cycle should peak in the first couple of years beginning the century.
+ </ul>
+ <p>The best way to choose a frequency is to listen at various times over the day and determine the best highest (daytime) and lowest (nighttime) frequencies. Then, assuming one is available, choose the highest frequency between these frequencies. This strategy assumes that the high frequency is more problematic than the low, that the low frequency probably comes with severe multipath and static, and insures that probably twice a day the chosen frequency will work. For instance, on the east coast the best compromise CHU frequency is probably 7335 kHz and the best WWV frequency is probably 15 MHz.</p>
+ <h4>Autotune Modes</h4>
+ <p>The shortwave drivers include support for an optional autotune function compatible with ICOM&nbsp;receivers and transceivers. The <tt>mode</tt> keyword of the <tt>server</tt> configuration command specifies the ICOM ID select code in decimal. A missing or zero argument disables the CI-V interface. Since all ICOM select codes are less than 128, the high order bit of the code is used by the driver to specify the baud rate. If this bit is not set, the rate is 9600 bps for the newer radios; if set, the rate is 1200 bps for the older radios. Following are the ID select codes for the known radios.</p>
+ <table width="100%" cols="6">
+ <tr>
+ <td>Radio</td>
+ <td>Hex</td>
+ <td>Decimal</td>
+ <td>Radio</td>
+ <td>Hex</td>
+ <td>Decimal</td>
+ </tr>
+ <tr>
+ <td>706</td>
+ <td>0x4e</td>
+ <td>78</td>
+ <td>775</td>
+ <td>0x46</td>
+ <td>70</td>
+ </tr>
+ <tr>
+ <td>706MKIIG</td>
+ <td>0x58</td>
+ <td>88</td>
+ <td>781</td>
+ <td>0x26</td>
+ <td>38</td>
+ </tr>
+ <tr>
+ <td>725</td>
+ <td>0x28</td>
+ <td>40</td>
+ <td>970</td>
+ <td>0x2e</td>
+ <td>46</td>
+ </tr>
+ <tr>
+ <td>726</td>
+ <td>0x30</td>
+ <td>48</td>
+ <td>R71</td>
+ <td>0x1A</td>
+ <td>26</td>
+ </tr>
+ <tr>
+ <td>735</td>
+ <td>0x04</td>
+ <td>4</td>
+ <td>R72</td>
+ <td>0x32</td>
+ <td>50</td>
+ </tr>
+ <tr>
+ <td>746</td>
+ <td>0x66</td>
+ <td>102</td>
+ <td>R75</td>
+ <td>0x5a</td>
+ <td>90</td>
+ </tr>
+ <tr>
+ <td>751</td>
+ <td>0x1c</td>
+ <td>28</td>
+ <td>R7000</td>
+ <td>0x08</td>
+ <td>8</td>
+ </tr>
+ <tr>
+ <td>756PROII</td>
+ <td>0x64</td>
+ <td>100</td>
+ <td>R7100</td>
+ <td>0x34</td>
+ <td>52</td>
+ </tr>
+ <tr>
+ <td>761</td>
+ <td>0x1e</td>
+ <td>30</td>
+ <td>R8500</td>
+ <td>0x4a</td>
+ <td>74</td>
+ </tr>
+ <tr>
+ <td>765</td>
+ <td>0x2c</td>
+ <td>44</td>
+ <td>R9000</td>
+ <td>0x2a</td>
+ <td>42</td>
+ </tr>
+ </table>
+ <h4 id="setup">Setup and Debugging Aids</h4>
+ <p>The audio drivers include extensive setup and debugging support to help hook up the audio signals and monitor the driver operations. The documentation page for each driver describes the various messages that can be produced either in real time or written to the <tt>clockstats</tt> file for later analysis. Of particular help in verifying signal connections and compatibility is a provision to monitor the signal via headphones or speaker.</p>
+ <p>Connecting radios and IRIG devices to the computer and verifying correct configuration is somewhat of a black art. The signals have to be connected to the correct ports and the signal level maintained within tolerances. Some radios have recorder outputs which produce a line level signal not affected by the volume control. These signals can be connected to the line-in port on the computer. If the level is too low, connect to the microphone-in port instead. If the radio does not have a recorder output, connect the headphone or speaker output to the line-in port and adjust the volume control so the driver indicates comfortably above the minimum specified and the AGC level somewhere in the middle of the range 0-255. IRIG signals are usually much larger than radio outputs, usually in the range to several volts and may even overload the line-in port. In such cases an attenuator must be used to reduce the signal level below the overload point.</p>
+ <p>It is very easy to underdrive or overdrive the audio codec, in which case the drivers will not synchronize to the signal. The drivers use <tt>fudge flag2</tt> to enable audio monitoring of the input signal. This is useful during setup to confirm the signal is actually reaching the audio codec and generally free of hum and interference. This feature is not intended for regular use, since it does increase the processor load on the system. Note that the speaker volume must be set before the driver is started.</p>
+ <p>The drivers write a synthesized timecode to the <tt>clockstats</tt> file each time the clock is set or verified and at other times if verbose monitoring is enabled. The format includes several fixed-length fields defining the UTC time to the millisecond, together with additional variable-length fields specific to each driver. The data include the intervals since the clock was last set or verified, the audio gain and various state variables and counters specific to each driver.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/authopt.html b/contrib/ntp/html/authopt.html
index 978d60f..5f67b3c 100644
--- a/contrib/ntp/html/authopt.html
+++ b/contrib/ntp/html/authopt.html
@@ -2,143 +2,154 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Authentication Options</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Authentication Options</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Authentication Options</h3>
- <img src="pic/alice44.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>Our resident cryptographer; now you see him, now you don't.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:05 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links9.txt"></script>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#auth">Authentication Support</a>
- <li class="inline"><a href="#symm">Symmetric Key Cryptography</a>
- <li class="inline"><a href="#pub">Public Key Cryptography</a>
- <li class="inline"><a href="#auto">Autokey Dances</a>
- <li class="inline"><a href="#inter">Operation</a>
- <li class="inline"><a href="#key">Key Management</a>
- <li class="inline"><a href="#cmd">Authentication Commands</a>
- <li class="inline"><a href="#err">Error Codes</a>
- <li class="inline"><a href="#file">Files</a>
- </ul>
- <hr>
- <h4 id="auth">Authentication Support</h4>
- <p>Authentication support allows the NTP client to verify that the server is in fact known and trusted and not an intruder intending accidentally or on purpose to masquerade as that server. The NTPv3 specification RFC-1305 defines a scheme which provides cryptographic authentication of received NTP packets. Originally, this was done using the Data Encryption Standard (DES) algorithm operating in Cipher Block Chaining (CBC) mode, commonly called DES-CBC. Subsequently, this was replaced by the RSA Message Digest 5 (MD5) algorithm using a private key, commonly called keyed-MD5. Either algorithm computes a message digest, or one-way hash, which can be used to verify the server has the correct private key and key identifier.</p>
- <p>NTPv4 retains the NTPv3 scheme, properly described as symmetric key cryptography and, in addition, provides a new Autokey scheme based on public key cryptography. Public key cryptography is generally considered more secure than symmetric key cryptography, since the security is based on a private value which is generated by each server and never revealed. With Autokey all key distribution and management functions involve only public values, which considerably simplifies key distribution and storage. Public key management is based on X.509 certificates, which can be provided by commercial services or produced by utility programs in the OpenSSL software library or the NTPv4 distribution.</p>
- <p>While the algorithms for symmetric key cryptography are included in the NTPv4 distribution, public key cryptography requires the OpenSSL software library to be installed before building the NTP distribution. Directions for doing that are on the <a href="build.html">Building and Installing the Distribution</a> page.</p>
- <p>Authentication is configured separately for each association using the <tt>key</tt> or <tt>autokey</tt> subcommand on the <tt>peer</tt>, <tt>server</tt>, <tt>broadcast</tt> and <tt>manycastclient</tt> configuration commands as described in the <a href="confopt.html">Configuration Options</a> page. The authentication options described below specify the locations of the key files, if other than default, which symmetric keys are trusted and the interval between various operations, if other than default.</p>
- <p>Authentication is always enabled, although ineffective if not configured as described below. If a NTP packet arrives including a message authentication code (MAC), it is accepted only if it passes all cryptographic checks. The checks require correct key ID, key value and message digest. If the packet has been modified in any way or replayed by an intruder, it will fail one or more of these checks and be discarded. Furthermore, the Autokey scheme requires a preliminary protocol exchange to obtain the server certificate, verify its credentials and initialize the protocol</p>
- <p>The <tt>auth</tt> flag controls whether new associations or remote configuration commands require cryptographic authentication. This flag can be set or reset by the <tt>enable</tt> and <tt>disable</tt> commands and also by remote configuration commands sent by a <tt>ntpdc</tt> program running on another machine. If this flag is enabled, which is the default case, new broadcast/manycast client and symmetric passive associations and remote configuration commands must be cryptographically authenticated using either symmetric key or public key cryptography. If this flag is disabled, these operations are effective even if not cryptographic authenticated. It should be understood that operating with the <tt>auth</tt> flag disabled invites a significant vulnerability where a rogue hacker can masquerade as a falseticker and seriously disrupt system timekeeping. It is important to note that this flag has no purpose other than to allow or disallow a new association in response to new broadcast and symmetric active messages and remote configuration commands and, in particular, the flag has no effect on the authentication process itself.</p>
- <p>An attractive alternative where multicast support is available is manycast mode, in which clients periodically troll for servers as described in the <a href="manyopt.html">Automatic NTP Configuration Options</a> page. Either symmetric key or public key cryptographic authentication can be used in this mode. The principle advantage of manycast mode is that potential servers need not be configured in advance, since the client finds them during regular operation, and the configuration files for all clients can be identical.</p>
- <p>The security model and protocol schemes for both symmetric key and public key cryptography are summarized below; further details are in the briefings, papers and reports at the NTP project page linked from <a href="http://www.ntp.org">www.ntp.org</a>.</p>
- <h4 id="symm">Symmetric Key Cryptography</h4>
- The original RFC-1305 specification allows any one of possibly 65,534 keys, each distinguished by a 32-bit key identifier, to authenticate an association. The servers and clients involved must agree on the key and key identifier to authenticate NTP packets. Keys and related information are specified in a key file, usually called <tt>ntp.keys</tt>, which must be distributed and stored using secure means beyond the scope of the NTP protocol itself. Besides the keys used for ordinary NTP associations, additional keys can be used as passwords for the <tt><a href="ntpq.html">ntpq</a></tt> and <tt><a href="ntpdc.html">ntpdc</a></tt> utility programs.
- <p>When <tt>ntpd</tt> is first started, it reads the key file specified in the <tt>keys</tt> configuration command and installs the keys in the key cache. However, individual keys must be activated with the <tt>trusted</tt> command before use. This allows, for instance, the installation of possibly several batches of keys and then activating or deactivating each batch remotely using <tt>ntpdc</tt>. This also provides a revocation capability that can be used if a key becomes compromised. The <tt>requestkey</tt> command selects the key used as the password for the <tt>ntpdc</tt> utility, while the <tt>controlkey</tt> command selects the key used as the password for the <tt>ntpq</tt> utility.</p>
- <h4 id="pub">Public Key Cryptography</h4>
- <p>NTPv4 supports the original NTPv3 symmetric key scheme described in RFC-1305 and in addition the Autokey protocol, which is based on public key cryptography. The Autokey Version 2 protocol described on the <a href="http://www.eecis.udel.edu/~mills/ident.html">Autokey Protocol</a> page verifies packet integrity using MD5 message digests and verifies the source with digital signatures and any of several digest/signature schemes. Optional identity schemes described on the <a href="http://www.eecis.udel.edu/~mills/ident.html">Identity Schemes</a> page and based on cryptographic challenge/response algorithms are also available. Using all of these schemes provides strong security against replay with or without modification, spoofing, masquerade and most forms of clogging attacks.</p>
- <p>The cryptographic means necessary for all Autokey operations is provided by the OpenSSL software library. This library is available from <a href="http://www.openssl.org">http://www.openssl.org</a> and can be installed using the procedures outlined in the <a href="build.html">Building and Installing the Distribution</a> page. Once installed, the configure and build process automatically detects the library and links the library routines required.</p>
- <p>The Autokey protocol has several modes of operation corresponding to the various NTP modes supported. Most modes use a special cookie which can be computed independently by the client and server, but encrypted in transmission. All modes use in addition a variant of the S-KEY scheme, in which a pseudo-random key list is generated and used in reverse order. These schemes are described along with an executive summary, current status, briefing slides and reading list on the <a href="http://www.eecis.udel.edu/~mills/autokey.html">Autonomous Authentication</a> page.</p>
- <p>The specific cryptographic environment used by Autokey servers and clients is determined by a set of files and soft links generated by the <a href="keygen.html"><tt>ntp-keygen</tt></a> program. . This includes a required host key file, required certificate file and optional sign key file, leapsecond file and identity scheme files. The digest/signature scheme is specified in the X.509 certificate along with the matching sign key. There are several schemes available in the OpenSSL software library, each identified by a specific string such as <tt>md5WithRSAEncryption</tt>, which stands for the MD5 message digest with RSA encryption scheme. The current NTP distribution supports all the schemes in the OpenSSL library, including those based on RSA and DSA digital signatures.</p>
- <p>NTP secure groups can be used to define cryptographic compartments and security hierarchies. It is important that every host in the group be able to construct a certificate trail to one or more trusted hosts in the same group. Each group host runs the Autokey protocol to obtain the certificates for all hosts along the trail to one or more trusted hosts. This requires the configuration file in all hosts to be engineered so that, even under anticipated failure conditions, the NTP&nbsp;subnet will form such that every group host can find a trail to at least one trusted host.</p>
- <h4>Naming and Addressing</h4>
- <p>It is important to note that Autokey does not use DNS&nbsp;to resolve addresses, since DNS can't be completely trusted until the name servers have synchronized clocks. The cryptographic name used by Autokey to bind the host identity credentials and cryptographic values must be independent of interface, network and any other naming convention. The name appears in the host certificate in either or both the subject and issuer fields, so protection against DNS&nbsp;compromise is essential.</p>
- <p>By convention, the name of an Autokey host is the name returned by the Unix <tt>gethostname()</tt> system call or equivalent in other systems. By the system design model, there are no provisions to allow alternate names or aliases. However, this is not to say that DNS&nbsp;aliases, different names for each interface, etc., are constrained in any way.</p>
- <p>It is also important to note that Autokey verifies authenticity using the host name, network address and public keys, all of which are bound together by the protocol specifically to deflect masquerade attacks. For this reason Autokey includes the source and destinatino IP&nbsp;addresses in message digest computations and so the same addresses must be available at both the server and client. For this reason operation with network address translation schemes is not possible. This reflects the intended robust security model where government and corporate NTP&nbsp;servers are operated outside firewall perimeters.</p>
- <h4>Operation</h4>
- <p>A specific combination of authentication scheme (none, symmetric key, public key) and identity scheme is called a cryptotype, although not all combinations are compatible. There may be management configurations where the clients, servers and peers may not all support the same cryptotypes. A secure NTPv4 subnet can be configured in many ways while keeping in mind the principles explained above and in this section. Note however that some cryptotype combinations may successfully interoperate with each other, but may not represent good security practice.</p>
- <p>The cryptotype of an association is determined at the time of mobilization, either at configuration time or some time later when a message of appropriate cryptotype arrives. When mobilized by a <tt>server</tt> or <tt>peer</tt> configuration command and no <tt>key</tt> or <tt>autokey</tt> subcommands are present, the association is not authenticated; if the <tt>key</tt> subcommand is present, the association is authenticated using the symmetric key ID specified; if the <tt>autokey</tt> subcommand is present, the association is authenticated using Autokey.</p>
- <p>When multiple identity schemes are supported in the Autokey protocol, the first message exchange determines which one is used. The client request message contains bits corresponding to which schemes it has available. The server response message contains bits corresponding to which schemes it has available. Both server and client match the received bits with their own and select a common scheme.</p>
- <p>Following the principle that time is a public value, a server responds to any client packet that matches its cryptotype capabilities. Thus, a server receiving an unauthenticated packet will respond with an unauthenticated packet, while the same server receiving a packet of a cryptotype it supports will respond with packets of that cryptotype. However, unconfigured broadcast or manycast client associations or symmetric passive associations will not be mobilized unless the server supports a cryptotype compatible with the first packet received. By default, unauthenticated associations will not be mobilized unless overridden in a decidedly dangerous way.</p>
- <p>Some examples may help to reduce confusion. Client Alice has no specific cryptotype selected. Server Bob has both a symmetric key file and minimal Autokey files. Alice's unauthenticated messages arrive at Bob, who replies with unauthenticated messages. Cathy has a copy of Bob's symmetric key file and has selected key ID 4 in messages to Bob. Bob verifies the message with his key ID 4. If it's the same key and the message is verified, Bob sends Cathy a reply authenticated with that key. If verification fails, Bob sends Cathy a thing called a crypto-NAK, which tells her something broke. She can see the evidence using the <tt>ntpq</tt> program.</p>
- <p>Denise has rolled her own host key and certificate. She also uses one of the identity schemes as Bob. She sends the first Autokey message to Bob and they both dance the protocol authentication and identity steps. If all comes out okay, Denise and Bob continue as described above.</p>
- <p>It should be clear from the above that Bob can support all the girls at the same time, as long as he has compatible authentication and identity credentials. Now, Bob can act just like the girls in his own choice of servers; he can run multiple configured associations with multiple different servers (or the same server, although that might not be useful). But, wise security policy might preclude some cryptotype combinations; for instance, running an identity scheme with one server and no authentication with another might not be wise.</p>
- <h4 id="key">Key Management</h4>
- <p>The cryptographic values used by the Autokey protocol are incorporated as a set of files generated by the <a href="keygen.html"><tt>ntp-keygen</tt></a> utility program, including symmetric key, host key and public certificate files, as well as sign key, identity parameters and leapseconds files. Alternatively, host and sign keys and certificate files can be generated by the OpenSSL utilities and certificates can be imported from public certificate authorities. Note that symmetric keys are necessary for the <tt>ntpq</tt> and <tt>ntpdc</tt> utility programs. The remaining files are necessary only for the Autokey protocol.</p>
- <p>Certificates imported from OpenSSL or public certificate authorities have certian limitations. The certificate should be in ASN.1 syntax, X.509 Version 3 format and encoded in PEM, which is the same format used by OpenSSL. The overall length of the certificate encoded in ASN.1 must not exceed 1024 bytes. The subject distinguished name field (<tt>CN</tt>) is the fully qualified name of the host on which it is used; the remaining subject fields are ignored. The certificate extension fields must not contain either a subject key identifier or a issuer key identifier field; however, an extended key usage field for a trusted host must contain the value <tt>trustRoot</tt>;. Other extension fields are ignored.</p>
- <h4 id="cmd">Authentication Commands</h4>
- <dl>
- <dt><tt>autokey [<i>logsec</i>]</tt>
- <dd>Specifies the interval between regenerations of the session key list used with the Autokey protocol. Note that the size of the key list for each association depends on this interval and the current poll interval. The default value is 12 (4096 s or about 1.1 hours). For poll intervals above the specified interval, a session key list with a single entry will be regenerated for every message sent.
- <dt><tt>controlkey <i>key</i></tt>
- <dd>Specifies the key identifier to use with the <a href="ntpq.html"><tt>ntpq</tt></a> utility, which uses the standard protocol defined in RFC-1305. The <tt><i>key</i></tt> argument is the key identifier for a trusted key, where the value can be in the range 1 to 65,534, inclusive.
- <dt><tt>crypto [cert <i>file</i>] [leap <i>file</i>] [randfile <i>file</i>] [host <i>file</i>] [sign <i>file</i>] [gq <i>file</i>] [gqpar <i>file</i>] [iffpar <i>file</i>] [mvpar <i>file</i>] [pw <i>password</i>]</tt>
- <dd>This command requires the OpenSSL library. It activates public key cryptography, selects the message digest and signature encryption scheme and loads the required private and public values described above. If one or more files are left unspecified, the default names are used as described above. Unless the complete path and name of the file are specified, the location of a file is relative to the keys directory specified in the <tt>keysdir</tt> command or default <tt>/usr/local/etc</tt>. Following are the subcommands: <dl>
- <dt><tt>cert <i>file</i></tt>
- <dd>Specifies the location of the required host public certificate file. This overrides the link <tt>ntpkey_cert_<i>hostname</i></tt> in the keys directory.
- <dt><tt>gqpar <i>file</i></tt>
- <dd>Specifies the location of the optional GQ parameters file. This overrides the link <tt>ntpkey_gq_<i>hostname</i></tt> in the keys directory.
- <dt><tt>host <i>file</i></tt>
- <dd>Specifies the location of the required host key file. This overrides the link <tt>ntpkey_key_<i>hostname</i></tt> in the keys directory.
- <dt><tt>iffpar <i>file</i></tt>
- <dd>Specifies the location of the optional IFF parameters file.This overrides the link <tt>ntpkey_iff_<i>hostname</i></tt> in the keys directory.
- <dt><tt>leap <i>file</i></tt>
- <dd>Specifies the location of the optional leapsecond file. This overrides the link <tt>ntpkey_leap</tt> in the keys directory.
- <dt><tt>mvpar <i>file</i></tt>
- <dd>Specifies the location of the optional MV parameters file. This overrides the link <tt>ntpkey_mv_<i>hostname</i></tt> in the keys directory.
- <dt><tt>pw <i>password</i></tt>
- <dd>Specifies the password to decrypt files containing private keys and identity parameters. This is required only if these files have been encrypted.
- <dt><tt>randfile <i>file</i></tt>
- <dd>Specifies the location of the random seed file used by the OpenSSL library. The defaults are described in the main text above.
- <dt><tt>sign <i>file</i></tt>
- <dd>Specifies the location of the optional sign key file. This overrides the link <tt>ntpkey_sign_<i>hostname</i></tt> in the keys directory. If this file is not found, the host key is also the sign key.
- </dl>
- <dt><tt>keys <i>keyfile</i></tt>
- <dd>Specifies the complete path and location of the MD5 key file containing the keys and key identifiers used by <tt>ntpd</tt>, <tt>ntpq</tt> and <tt>ntpdc</tt> when operating with symmetric key cryptography. This is the same operation as the <tt>-k </tt>command line option.
- <dt><tt>keysdir <i>path</i></tt>
- <dd>This command specifies the default directory path for cryptographic keys, parameters and certificates. The default is <tt>/usr/local/etc/</tt>.
- <dt><tt>requestkey <i>key</i></tt>
- <dd>Specifies the key identifier to use with the <a href="ntpdc.html"><tt>ntpdc</tt></a> utility program, which uses a proprietary protocol specific to this implementation of <tt>ntpd</tt>. The <tt><i>key</i></tt> argument is a key identifier for the trusted key, where the value can be in the range 1 to 65,534, inclusive.
- <dt><tt>revoke [<i>logsec</i>]</tt>
- <dd>Specifies the interval between re-randomization of certain cryptographic values used by the Autokey scheme, as a power of 2 in seconds. These values need to be updated frequently in order to deflect brute-force attacks on the algorithms of the scheme; however, updating some values is a relatively expensive operation. The default interval is 16 (65,536 s or about 18 hours). For poll intervals above the specified interval, the values will be updated for every message sent.
- <dt><tt>trustedkey <i>key</i> [...]</tt>
- <dd>Specifies the key identifiers which are trusted for the purposes of authenticating peers with symmetric key cryptography, as well as keys used by the <tt>ntpq</tt> and <tt>ntpdc</tt> programs. The authentication procedures require that both the local and remote servers share the same key and key identifier for this purpose, although different keys can be used with different servers. The <tt><i>key</i></tt> arguments are 32-bit unsigned integers with values from 1 to 65,534.
- </dl>
- <h4 id="err">Error Codes</h4>
- <p>The following error codes are reported via the NTP control and monitoring protocol trap mechanism.</p>
- <dl>
- <dt>101 (bad field format or length)
- <dd>The packet has invalid version, length or format.
- <dt>102 (bad timestamp)
- <dd>The packet timestamp is the same or older than the most recent received. This could be due to a replay or a server clock time step.
- <dt>103 (bad filestamp)
- <dd>The packet filestamp is the same or older than the most recent received. This could be due to a replay or a key file generation error.
- <dt>104 (bad or missing public key)
- <dd>The public key is missing, has incorrect format or is an unsupported type.
- <dt>105 (unsupported digest type)
- <dd>The server requires an unsupported digest/signature scheme.
- <dt>106 (mismatched digest types)
- <dd>Not used.
- <dt>107 (bad signature length)
- <dd>The signature length does not match the current public key.
- <dt>108 (signature not verified)
- <dd>The message fails the signature check. It could be bogus or signed by a different private key.
- <dt>109 (certificate not verified)
- <dd>The certificate is invalid or signed with the wrong key.
- <dt>110 (certificate not verified)
- <dd>The certificate is not yet valid or has expired or the signature could not be verified.
- <dt>111 (bad or missing cookie)
- <dd>The cookie is missing, corrupted or bogus.
- <dt>112 (bad or missing leapseconds table)
- <dd>The leapseconds table is missing, corrupted or bogus.
- <dt>113 (bad or missing certificate)
- <dd>The certificate is missing, corrupted or bogus.
- <dt>114 (bad or missing identity)
- <dd>The identity key is missing, corrupt or bogus.
- </dl>
- <h4 id="file">Files</h4>
- <p>See the <a href="keygen.html"><tt>ntp-keygen</tt></a> page.</p>
- <h4 id="leap">Leapseconds Table</h4>
- <p>The NIST provides a file documenting the epoch for all historic occasions of leap second insertion since 1972. The leapsecond table shows each epoch of insertion along with the offset of International Atomic Time (TAI) with respect to Coordinated Universal Time (UTC), as disseminated by NTP. The table can be obtained directly from NIST national time servers using <tt>ftp</tt> as the ASCII file <tt>pub/leap-seconds</tt>.</p>
- <p>While not strictly a security function, the Autokey protocol provides means to securely retrieve the leapsecond table from a server or peer. Servers load the leapsecond table directly from the file specified in the <tt>crypto</tt> command, with default <tt>ntpkey_leap</tt>, while clients can obtain the table indirectly from the servers using the Autokey protocol. Once loaded, the table can be provided on request to other clients and servers.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Authentication Options</h3>
+ <img src="pic/alice44.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>Our resident cryptographer; now you see him, now you don't.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">01:29</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="338">Wednesday, September 13, 2006</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links9.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#auth">Authentication Support</a>
+ <li class="inline"><a href="#symm">Symmetric Key Cryptography</a>
+ <li class="inline"><a href="#pub">Public Key Cryptography</a>
+ <li class="inline"><a href="#cfg">Configuration</a>
+ <li class="inline"><a href="#inter">Operation</a>
+ <li class="inline"><a href="#key">Key Management</a>
+ <li class="inline"><a href="#cmd">Authentication Commands</a>
+ <li class="inline"><a href="#err">Error Codes</a>
+ <li class="inline"><a href="#file">Files</a>
+ </ul>
+ <hr>
+ <h4 id="auth">Authentication Support</h4>
+ <p>Authentication support allows the NTP client to verify that the server is in fact known and trusted and not an intruder intending accidentally or on purpose to masquerade as that server. The NTPv3 specification RFC-1305 defines a scheme which provides cryptographic authentication of received NTP packets. Originally, this was done using the Data Encryption Standard (DES) algorithm operating in Cipher Block Chaining (CBC) mode, commonly called DES-CBC. Subsequently, this was replaced by the RSA Message Digest 5 (MD5) algorithm using a private key, commonly called keyed-MD5. Either algorithm computes a message digest, or one-way hash, which can be used to verify the server has the correct private key and key identifier.</p>
+ <p>NTPv4 retains the NTPv3 scheme, properly described as symmetric key cryptography, and, in addition, provides a new Autokey scheme based on public key cryptography. Public key cryptography is generally considered more secure than symmetric key cryptography, since the security is based on a private value which is generated by each host and never revealed. With the exception of the group key described later, all key distribution and management functions involve only public values, which considerably simplifies key distribution and storage. Public key management is based on X.509 certificates, which can be provided by commercial services or produced by utility programs in the OpenSSL software library or the NTPv4 distribution.</p>
+ <p>While the algorithms for symmetric key cryptography are included in the NTPv4 distribution, public key cryptography requires the OpenSSL software library to be installed before building the NTP distribution. This library is available from <a href="http://www.openssl.org">http://www.openssl.org</a> and can be installed using the procedures outlined in the <a href="build/build.html">Building and Installing the Distribution</a> page. Once installed, the configure and build process automatically detects the library and links the library routines required.</p>
+ <p>Authentication is configured separately for each association using the <tt>key</tt> or <tt>autokey</tt> subcommand on the <tt>peer</tt>, <tt>server</tt>, <tt>broadcast</tt> and <tt>manycastclient</tt> configuration commands as described in the <a href="confopt.html">Configuration Options</a> page. The authentication options described below specify the locations of the key files, if other than default, which symmetric keys are trusted and the interval between various operations, if other than default.</p>
+ <p>Authentication is always enabled, although ineffective if not configured as described below. If a NTP packet arrives including a message authentication code (MAC), it is accepted only if it passes all cryptographic checks. The checks require correct key ID, key value and message digest. If the packet has been modified in any way or replayed by an intruder, it will fail one or more of these checks and be discarded. Furthermore, the Autokey scheme requires a preliminary protocol exchange to obtain the server certificate, verify its credentials and initialize the protocol</p>
+ <p>The <tt>auth</tt> flag controls whether new associations or remote configuration commands require cryptographic authentication. This flag can be set or reset by the <tt>enable</tt> and <tt>disable</tt> commands and also by remote configuration commands sent by a <tt>ntpdc</tt> program running on another machine. If this flag is enabled, which is the default case, new broadcast/manycast client and symmetric passive associations and remote configuration commands must be cryptographically authenticated using either symmetric key or public key cryptography. If this flag is disabled, these operations are effective even if not cryptographic authenticated. It should be understood that operating with the <tt>auth</tt> flag disabled invites a significant vulnerability where a rogue hacker can masquerade as a truechimer and seriously disrupt system timekeeping. It is important to note that this flag has no purpose other than to allow or disallow a new association in response to new broadcast and symmetric active messages and remote configuration commands and, in particular, the flag has no effect on the authentication process itself.</p>
+ <p>The security model and protocol schemes for both symmetric key and public key cryptography are summarized below; further details are in the briefings, papers and reports at the NTP project page linked from <a href="http://www.ntp.org">www.ntp.org</a>.</p>
+ <h4 id="symm">Symmetric Key Cryptography</h4>
+
+ The original RFC-1305 specification allows any one of possibly 65,534 keys, each distinguished by a 32-bit key identifier, to authenticate an association. The servers and clients involved must agree on the key and key identifier to authenticate NTP packets. Keys and related information are specified in a key file, usually called <tt>ntp.keys</tt>, which must be distributed and stored using secure means beyond the scope of the NTP protocol itself. Besides the keys used for ordinary NTP associations, additional keys can be used as passwords for the <tt><a href="ntpq.html">ntpq</a></tt> and <tt><a href="ntpdc.html">ntpdc</a></tt> utility programs. Ordinarily, the <tt>ntp.keys</tt> file is generated by the <tt><a href="keygen.html">ntp-keygen</a></tt> program.
+ <p>When <tt>ntpd</tt> is first started, it reads the key file specified in the <tt>keys</tt> configuration command and installs the keys in the key cache. However, individual keys must be activated with the <tt>trustedkey</tt> command before use. This allows, for instance, the installation of possibly several batches of keys and then activating or deactivating each batch remotely using <tt>ntpdc</tt>. This also provides a revocation capability that can be used if a key becomes compromised. The <tt>requestkey</tt> command selects the key used as the password for the <tt>ntpdc</tt> utility, while the <tt>controlkey</tt> command selects the key used as the password for the <tt>ntpq</tt> utility.</p>
+ <h4 id="pub">Public Key Cryptography</h4>
+ <p>NTPv4 supports the original NTPv3 symmetric key scheme described in RFC-1305 and in addition the Autokey protocol, which is based on public key cryptography. The Autokey Version 2 protocol described on the <a href="http://www.eecis.udel.edu/%7emills/proto.html">Autokey Protocol</a> page verifies packet integrity using MD5 message digests and verifies the source with digital signatures and any of several digest/signature schemes. Optional identity schemes described on the <a href="http://www.eecis.udel.edu/%7emills/ident.html">Identity Schemes</a> page and based on cryptographic challenge/response algorithms are also available. Using these schemes provides strong security against replay with or without modification, spoofing, masquerade and most forms of clogging attacks.</p>
+ <p>The Autokey protocol has several modes of operation corresponding to the various NTP modes supported. Most modes use a special cookie which can be computed independently by the client and server, but encrypted in transmission. All modes use in addition a variant of the S-KEY scheme, in which a pseudo-random key list is generated and used in reverse order. These schemes are described along with an executive summary, current status, briefing slides and reading list on the <a href="http://www.eecis.udel.edu/%7emills/autokey.html">Autonomous Authentication</a> page.</p>
+ <p>The specific cryptographic environment used by Autokey servers and clients is determined by a set of files and soft links generated by the <a href="keygen.html"><tt>ntp-keygen</tt></a> program. This includes a required host key file, required host certificate file and optional sign key file, leapsecond file and identity scheme files. The digest/signature scheme is specified in the X.509 certificate along with the matching sign key. There are several schemes available in the OpenSSL software library, each identified by a specific string such as <tt>md5WithRSAEncryption</tt>, which stands for the MD5 message digest with RSA encryption scheme. The current NTP distribution supports all the schemes in the OpenSSL library, including those based on RSA and DSA digital signatures.</p>
+ <p>NTP secure groups can be used to define cryptographic compartments and security hierarchies. It is important that every host in the group be able to construct a certificate trail to one or more trusted hosts in the same group. Each group host runs the Autokey protocol to obtain the certificates for all hosts along the trail to one or more trusted hosts. This requires the configuration file in all hosts to be engineered so that, even under anticipated failure conditions, the NTP&nbsp;subnet will form such that every group host can find a trail to at least one trusted host.</p>
+ <h4>Naming and Addressing</h4>
+ <p>It is important to note that Autokey does not use DNS&nbsp;to resolve addresses, since DNS can't be completely trusted until the name servers have synchronized clocks. The cryptographic name used by Autokey to bind the host identity credentials and cryptographic values must be independent of interface, network and any other naming convention. The name appears in the host certificate in either or both the subject and issuer fields, so protection against DNS&nbsp;compromise is essential.</p>
+ <p>By convention, the name of an Autokey host is the name returned by the Unix <tt>gethostname()</tt> system call or equivalent in other systems. By the system design model, there are no provisions to allow alternate names or aliases. However, this is not to say that DNS&nbsp;aliases, different names for each interface, etc., are constrained in any way.</p>
+ <p>It is also important to note that Autokey verifies authenticity using the host name, network address and public keys, all of which are bound together by the protocol specifically to deflect masquerade attacks. For this reason Autokey includes the source and destinatino IP&nbsp;addresses in message digest computations and so the same addresses must be available at both the server and client. For this reason operation with network address translation schemes is not possible. This reflects the intended robust security model where government and corporate NTP&nbsp;servers are operated outside firewall perimeters.</p>
+ <h4 id="cfg">Configuration</h4>
+ <p>Autokey has an intimidating number of options, most of which are not necessary in typical scenarios. The simplest configuration consists of a subnet with one or more servers at the same low stratum acting as trusted hosts and with dependent clients at higher strata and sharing a single secure group and identity scheme. Each trusted host generates a host key, trusted certificate and group key. Each client generates a host key, normal certificate and installs the group key of each trusted host using secure means and renames it as the name of the trusted host.</p>
+ <p>For example, trusted host Alice generates keys using</p>
+ <p><tt>ntp-keygen -H -T -I -p xyz</tt></p>
+ <p>where H specifies a new host key, T the trusted certificate, I&nbsp;the IFF&nbsp;identity scheme and p the password used to encrypt the private key files. The group key file is <tt>ntpkey_IFFpar_alice.<i>filestamp</i></tt><i>, </i>where <i>filestamp </i>represents the NTP&nbsp;time in seconds when the file was generated.</p>
+ <p>Host Bob generate keys using</p>
+ <p><tt>ntp-keygen -H -p abc</tt></p>
+ <p>where <tt>abc</tt> is different for each group host. The trusted host generates a password-protected group key using</p>
+ <p><tt>ntp-keygen -q xyz -p abc -e &gt;<i>temp</i></tt></p>
+ <p>where <tt>xyz</tt> is the trusted host password, <tt>abc</tt> is the password supplied by the client and <i><tt>temp</tt></i> is a temporary file. This file is transmitted to Bob using secure means and renamed to the fully qualified host name for Alice preceded by the string <tt>ntpkey_iff_</tt>.</p>
+ <h4>Operation</h4>
+ <p>A specific combination of authentication scheme (none, symmetric key, public key) and identity scheme is called a cryptotype, although not all combinations are compatible. There may be management configurations where the clients, servers and peers may not all support the same cryptotypes. A secure NTPv4 subnet can be configured in many ways while keeping in mind the principles explained above and in this section. Note however that some cryptotype combinations may successfully interoperate with each other, but may not represent good security practice.</p>
+ <p>The cryptotype of an association is determined at the time of mobilization, either at configuration time or some time later when a message of appropriate cryptotype arrives. When mobilized by a <tt>server</tt> or <tt>peer</tt> configuration command and no <tt>key</tt> or <tt>autokey</tt> subcommands are present, the association is not authenticated; if the <tt>key</tt> subcommand is present, the association is authenticated using the symmetric key ID specified; if the <tt>autokey</tt> subcommand is present, the association is authenticated using Autokey.</p>
+ <h4 id="key">Key Management</h4>
+ <p>The cryptographic values used by the Autokey protocol are incorporated as a set of files generated by the <a href="keygen.html"><tt>ntp-keygen</tt></a> utility program, including symmetric key, host key and public certificate files, as well as sign key, identity parameters and leapseconds files. Alternatively, host and sign keys and certificate files can be generated by the OpenSSL utilities and certificates can be imported from public certificate authorities. Note that symmetric keys are necessary for the <tt>ntpq</tt> and <tt>ntpdc</tt> utility programs. The remaining files are necessary only for the Autokey protocol.</p>
+ <p>Certificates imported from OpenSSL or public certificate authorities have certian limitations. The certificate should be in ASN.1 syntax, X.509 Version 3 format and encoded in PEM, which is the same format used by OpenSSL. The overall length of the certificate encoded in ASN.1 must not exceed 1024 bytes. The subject distinguished name field (<tt>CN</tt>) is the fully qualified name of the host on which it is used; the remaining subject fields are ignored. The certificate extension fields must not contain either a subject key identifier or a issuer key identifier field; however, an extended key usage field for a trusted host must contain the value <tt>trustRoot</tt>;. Other extension fields are ignored.</p>
+ <h4 id="cmd">Authentication Commands</h4>
+ <dl>
+ <dt><tt>autokey [<i>logsec</i>]</tt>
+ <dd>Specifies the interval between regenerations of the session key list used with the Autokey protocol. Note that the size of the key list for each association depends on this interval and the current poll interval. The default value is 12 (4096 s or about 1.1 hours). For poll intervals above the specified interval, a session key list with a single entry will be regenerated for every message sent.
+ <dt><tt>controlkey <i>key</i></tt>
+ <dd>Specifies the key identifier to use with the <a href="ntpq.html"><tt>ntpq</tt></a> utility, which uses the standard protocol defined in RFC-1305. The <tt><i>key</i></tt> argument is the key identifier for a trusted key, where the value can be in the range 1 to 65,534, inclusive.
+ <dt><tt>crypto [cert <i>file</i>] [leap <i>file</i>] [randfile <i>file</i>] [host <i>file</i>] [sign <i>file</i>] [ident <i>scheme</i>] [iffpar <i>file</i>] [gqpar <i>file</i>] [mvpar <i>file</i>] [pw <i>password</i>]</tt>
+ <dd>This command requires the OpenSSL library. It activates public key cryptography, selects the message digest and signature encryption scheme and loads the required private and public values described above. If one or more files are left unspecified, the default names are used as described above. Unless the complete path and name of the file are specified, the location of a file is relative to the keys directory specified in the <tt>keysdir</tt> command or default <tt>/usr/local/etc</tt>. Following are the subcommands:
+ <dl>
+ <dt><tt>cert <i>file</i></tt>
+ <dd>Specifies the location of the required host public certificate file. This overrides the link <tt>ntpkey_cert_<i>hostname</i></tt> in the keys directory.
+
+ <dt><tt>gqpar <i>file</i></tt>
+ <dd>Specifies the location of the client GQ parameters file. This overrides the link <tt>ntpkey_gq_<i>hostname</i></tt> in the keys directory.
+
+ <dt><tt>host <i>file</i></tt>
+ <dd>Specifies the location of the required host key file. This overrides the link <tt>ntpkey_key_<i>hostname</i></tt> in the keys directory.
+ <dt><tt>ident <i>scheme</i></tt>
+ <dd>Requests the server identity <i><tt>scheme</tt></i>, which can be <tt>IFF</tt>, <tt>GQ</tt> or <tt>MV</tt>. This is used when the host will not be a server for a dependent client.<dt><tt>iffpar <i>file</i></tt>
+ <dd>Specifies the location of the optional IFF parameters file.This overrides the link <tt>ntpkey_iff_<i>hostname</i></tt> in the keys directory.
+ <dt><tt>leap <i>file</i></tt>
+ <dd>Specifies the location of the client leapsecond file. This overrides the link <tt>ntpkey_leap</tt> in the keys directory.
+ <dt><tt>mv</tt>
+ <dd>Requests the MV server identity scheme.
+ <dt><tt>mvpar <i>file</i></tt>
+ <dd>Specifies the location of the client MV parameters file. This overrides the link <tt>ntpkey_mv_<i>hostname</i></tt> in the keys directory.
+ <dt><tt>pw <i>password</i></tt>
+ <dd>Specifies the password to decrypt files containing private keys and identity parameters. This is required only if these files have been encrypted.
+ <dt><tt>randfile <i>file</i></tt>
+ <dd>Specifies the location of the random seed file used by the OpenSSL library. The defaults are described in the main text above.
+ <dt><tt>sign <i>file</i></tt>
+ <dd>Specifies the location of the optional sign key file. This overrides the link <tt>ntpkey_sign_<i>hostname</i></tt> in the keys directory. If this file is not found, the host key is also the sign key.
+ </dl>
+ <dt><tt>keys <i>keyfile</i></tt>
+ <dd>Specifies the complete path and location of the MD5 key file containing the keys and key identifiers used by <tt>ntpd</tt>, <tt>ntpq</tt> and <tt>ntpdc</tt> when operating with symmetric key cryptography. This is the same operation as the <tt>-k </tt>command line option.
+ <dt><tt>keysdir <i>path</i></tt>
+ <dd>This command specifies the default directory path for cryptographic keys, parameters and certificates. The default is <tt>/usr/local/etc/</tt>.
+ <dt><tt>requestkey <i>key</i></tt>
+ <dd>Specifies the key identifier to use with the <a href="ntpdc.html"><tt>ntpdc</tt></a> utility program, which uses a proprietary protocol specific to this implementation of <tt>ntpd</tt>. The <tt><i>key</i></tt> argument is a key identifier for the trusted key, where the value can be in the range 1 to 65,534, inclusive.
+ <dt><tt>revoke [<i>logsec</i>]</tt>
+ <dd>Specifies the interval between re-randomization of certain cryptographic values used by the Autokey scheme, as a power of 2 in seconds. These values need to be updated frequently in order to deflect brute-force attacks on the algorithms of the scheme; however, updating some values is a relatively expensive operation. The default interval is 16 (65,536 s or about 18 hours). For poll intervals above the specified interval, the values will be updated for every message sent.
+ <dt><tt>trustedkey <i>key</i> [...]</tt>
+ <dd>Specifies the key identifiers which are trusted for the purposes of authenticating peers with symmetric key cryptography, as well as keys used by the <tt>ntpq</tt> and <tt>ntpdc</tt> programs. The authentication procedures require that both the local and remote servers share the same key and key identifier for this purpose, although different keys can be used with different servers. The <tt><i>key</i></tt> arguments are 32-bit unsigned integers with values from 1 to 65,534.
+ </dl>
+ <h4 id="err">Error Codes</h4>
+ <p>Errors can occur due to mismatched configurations, unexpected restarts, expired certificates and unfriendly people. In most cases the protocol state machine recovers automatically by retransmission, timeout and restart, where necessary. Some errors are due to mismatched keys, digest schemes or identity schemes and must be corrected by installing the correct media and/or correcting the configuration file. One of the most common errors is expired certificates, which must be regenerated and signed at least once per year using the <tt><a href="keygen.html">ntp-keygen</a></tt> program.</p>
+ <p>The following error codes are reported via the NTP control and monitoring protocol trap mechanism.</p>
+ <dl>
+ <dt>101 (bad field format or length)
+ <dd>The packet has invalid version, length or format.
+ <dt>102 (bad timestamp)
+ <dd>The packet timestamp is the same or older than the most recent received. This could be due to a replay or a server clock time step.
+ <dt>103 (bad filestamp)
+ <dd>The packet filestamp is the same or older than the most recent received. This could be due to a replay or a key file generation error.
+ <dt>104 (bad or missing public key)
+ <dd>The public key is missing, has incorrect format or is an unsupported type.
+ <dt>105 (unsupported digest type)
+ <dd>The server requires an unsupported digest/signature scheme.
+ <dt>106 (unsupported identity type)<dd>The client or server has requested an identity scheme the other does not support.<dt>107 (bad signature length)
+ <dd>The signature length does not match the current public key.
+ <dt>108 (signature not verified)
+ <dd>The message fails the signature check. It could be bogus or signed by a different private key.
+ <dt>109 (certificate not verified)
+ <dd>The certificate is invalid or signed with the wrong key.<dt>110 (host certificate expired)<dd>The old server certificate has expired.<dt>111 (bad or missing cookie)
+ <dd>The cookie is missing, corrupted or bogus.
+ <dt>112 (bad or missing leapseconds table)
+ <dd>The leapseconds table is missing, corrupted or bogus.
+ <dt>113 (bad or missing certificate)
+ <dd>The certificate is missing, corrupted or bogus.
+ <dt>114 (bad or missing group key)<dd>The identity key is missing, corrupt or bogus.
+
+ <dt>115 (protocol error)
+ <dd>The protocol state machine has wedged due to unexpected restart
+ <dt>116 (server certificate expired)
+ <dd>The old server certificate has expired.
+ </dl>
+ <h4 id="file">Files</h4>
+ <p>See the <a href="keygen.html"><tt>ntp-keygen</tt></a> page.</p>
+ <h4 id="leap">Leapseconds Table</h4>
+ <p>The NIST provides a file documenting the epoch for all historic occasions of leap second insertion since 1972. The leapsecond table shows each epoch of insertion along with the offset of International Atomic Time (TAI) with respect to Coordinated Universal Time (UTC), as disseminated by NTP. The table can be obtained directly from NIST national time servers using <tt>ftp</tt> as the ASCII file <tt>pub/leap-seconds</tt>.</p>
+ <p>While not strictly a security function, the Autokey protocol provides means to securely retrieve the leapsecond table from a server or peer. Servers load the leapsecond table directly from the file specified in the <tt>crypto</tt> command, with default <tt>ntpkey_leap</tt>, while clients can obtain the table indirectly from the servers using the Autokey protocol. Once loaded, the table can be provided on request to other clients and servers.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/build.html b/contrib/ntp/html/build/build.html
index 3e4ccd3..0bb49af 100644
--- a/contrib/ntp/html/build.html
+++ b/contrib/ntp/html/build/build.html
@@ -10,7 +10,7 @@
<body>
<h3>Building and Installing the Distribution</h3>
- <img src="pic/beaver.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
+ <img src="../pic/beaver.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
<p>For putting out compiler fires.</p>
<p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:06 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
<br clear="left">
@@ -40,29 +40,29 @@
<h4 id="install">Installation</h4>
<p>As root, use the <tt>make install</tt> command to install the binaries in the destination directory. Most commonly, these programs are installed in <tt>/usr/local/bin</tt>, but this can be overridden during configuration. You must of course have write permission on the install in the destination directory. This includes the following programs:</p>
<ul>
- <li><a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a>
- <li><a href="ntpq.html"><tt>ntpq</tt> - standard NTP query program</a>
- <li><a href="ntpdc.html"><tt>ntpdc</tt> - special NTP query program</a>
- <li><a href="ntpdate.html"><tt>ntpdate</tt> - set the date and time via NTP</a>
- <li><a href="ntptrace.html"><tt>ntptrace</tt> - trace a chain of NTP servers back to the primary source</a>
+ <li><a href="../ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a>
+ <li><a href="../ntpq.html"><tt>ntpq</tt> - standard NTP query program</a>
+ <li><a href="../ntpdc.html"><tt>ntpdc</tt> - special NTP query program</a>
+ <li><a href="../ntpdate.html"><tt>ntpdate</tt> - set the date and time via NTP</a>
+ <li><a href="../ntptrace.html"><tt>ntptrace</tt> - trace a chain of NTP servers back to the primary source</a>
</ul>
<p>If the precision time kernel modifications are present, the following program is installed:</p>
<ul>
- <li><a href="ntptime.html"><tt>ntptime</tt> - read kernel time variables</a>
+ <li><a href="../ntptime.html"><tt>ntptime</tt> - read kernel time variables</a>
</ul>
<p>If the public key authentication functions are present, the following program is installed:</p>
<ul>
- <li><a href="keygen.html"><tt>ntp-keygen</tt> - generate public and private keys</a>
+ <li><a href="../keygen.html"><tt>ntp-keygen</tt> - generate public and private keys</a>
</ul>
<p>In some systems that include the capability to edit kernel variables, the following program is installed:</p>
<ul>
- <li><a href="tickadj.html"><tt>tickadj</tt> - set time-related kernel variables</a>
+ <li><a href="../tickadj.html"><tt>tickadj</tt> - set time-related kernel variables</a>
</ul>
- <p>Cryptographic support, both symmetric and public key, requires one or more key files, commonly installed in <tt>/usr/local/etc</tt>. Public key cryptography requires a random seed file, usually called <tt>.rnd</tt>, installed in a dark place such as the root directory or <tt>/etc</tt>. Directions for generating keys is on the <a href="authopt.html">Authentication Options</a> page.</p>
+ <p>Cryptographic support, both symmetric and public key, requires one or more key files, commonly installed in <tt>/usr/local/etc</tt>. Public key cryptography requires a random seed file, usually called <tt>.rnd</tt>, installed in a dark place such as the root directory or <tt>/etc</tt>. Directions for generating keys is on the <a href="../authopt.html">Authentication Options</a> page.</p>
<h4 id="config">Configuration</h4>
- <p>You are now ready to configure the daemon and start it. You will need to create a NTP configuration file <tt>ntp.conf</tt> and a cryptographic key file <tt>ntp.keys</tt>. The latter file is necessary only for remote configuration support, if needed. Newbies should see the <a href="quick.html">Quick Start</a> page for orientation. Seasoned veterans can start with the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a> page and move on to the specific configuration option pages from there. A tutorial on NTP subnet design and configuration options is in the <a href="notes.html">Notes on Configuring NTP and Setting up a NTP Subnet</a> page.</p>
+ <p>You are now ready to configure the daemon and start it. You will need to create a NTP configuration file <tt>ntp.conf</tt> and a cryptographic key file <tt>ntp.keys</tt>. The latter file is necessary only for remote configuration support, if needed. Newbies should see the <a href="quick.html">Quick Start</a> page for orientation. Seasoned veterans can start with the <a href="../ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a> page and move on to the specific configuration option pages from there. A tutorial on NTP subnet design and configuration options is in the <a href="../notes.html">Notes on Configuring NTP and Setting up a NTP Subnet</a> page.</p>
<h4 id="prob">If You Have Problems</h4>
- <p>If you have problems peculiar to the particular hardware and software environment (e.g. operating system-specific issues), browse the <a href="hints.html">Hints and Kinks</a> page. For other problems a tutorial on debugging technique is in the <a href="debug.html">NTP Debugging Technique</a> page. As always, the first line of general assistance is the NTP web site <a href="http://www.ntp.org">www.ntp.org</a> and the FAQ resident there. Requests for assistance of a general nature and of interest to other timekeepers should be sent to the NTP newsgroup comp.protocols.time.ntp. Bug reports of a specific nature should be sent to <a href="mailto:bugs@mail.ntp.org">bugs@ntp.org</a>. Bug reports of a specific nature on features implemented by the programmer corps mentioned in the <a href="copyright.html">Copyright</a> page should be sent directly to the implementor listed in that page, with copy to bugs@ntp.org.</p>
+ <p>If you have problems peculiar to the particular hardware and software environment (e.g. operating system-specific issues), browse the <a href="hints.html">Hints and Kinks</a> page. For other problems a tutorial on debugging technique is in the <a href="../debug.html">NTP Debugging Technique</a> page. As always, the first line of general assistance is the NTP web site <a href="http://www.ntp.org">www.ntp.org</a> and the FAQ resident there. Requests for assistance of a general nature and of interest to other timekeepers should be sent to the NTP newsgroup comp.protocols.time.ntp. Bug reports of a specific nature should be sent to <a href="mailto:bugs@mail.ntp.org">bugs@ntp.org</a>. Bug reports of a specific nature on features implemented by the programmer corps mentioned in the <a href="../copyright.html">Copyright</a> page should be sent directly to the implementor listed in that page, with copy to bugs@ntp.org.</p>
<p>Please include the version of the source distribution (e.g., ntp-4.0.70a) in your bug report, as well as billboards from the relevant utility programs and debug trace, if available. Please include the output of <tt>config.guess</tt> in your bug report. It will look something like:</p>
<p><tt>pdp11-dec-fuzzos3.4</tt></p>
<h4>Additional <tt>make</tt> commands</h4>
diff --git a/contrib/ntp/html/config.html b/contrib/ntp/html/build/config.html
index 463214a..961779d 100644
--- a/contrib/ntp/html/config.html
+++ b/contrib/ntp/html/build/config.html
@@ -10,9 +10,9 @@
<body>
<h3>Configuration Options</h3>
- <img src="pic/pogo3a.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
+ <img src="../pic/pogo3a.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
<p>Gnu autoconfigure tools are in the backpack.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:07 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">12:56 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="266">Saturday, March 20, 2004</csobj></p>
<br clear="left">
<h4>Table of Contents</h4>
<ul>
diff --git a/contrib/ntp/html/hints.html b/contrib/ntp/html/build/hints.html
index cb6275b..b9e230b 100644
--- a/contrib/ntp/html/hints.html
+++ b/contrib/ntp/html/build/hints.html
@@ -9,9 +9,9 @@
<body>
<h3>Hints and Kinks</h3>
- <img src="pic/alice35.gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html"> from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <img src="../pic/alice35.gif" align="left" alt="gif"><a href="http://www.eecis.udel.edu/%7emills/pictures.html"> from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
<p>Mother in law has all the answers.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">20:27</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="257">Monday, December 02, 2002</csobj></p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">12:56 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="266">Saturday, March 20, 2004</csobj></p>
<br clear="left">
<hr>
<p>This is an index for a set of troubleshooting notes contained in individual text files in the <tt>./hints</tt> directory. They were supplied by various volunteers in the form of mail messages, patches or just plain word of mouth. Each note applies to a specific computer and operating system and gives information found useful in setting up the NTP distribution or site configuration. The notes are very informal and subject to errors; no attempt has been made to verify the accuracy of the information contained in them.</p>
diff --git a/contrib/ntp/html/hints/a-ux b/contrib/ntp/html/build/hints/a-ux
index f8c26d2..f8c26d2 100644
--- a/contrib/ntp/html/hints/a-ux
+++ b/contrib/ntp/html/build/hints/a-ux
diff --git a/contrib/ntp/html/hints/aix b/contrib/ntp/html/build/hints/aix
index e53beff..e53beff 100644
--- a/contrib/ntp/html/hints/aix
+++ b/contrib/ntp/html/build/hints/aix
diff --git a/contrib/ntp/html/hints/bsdi b/contrib/ntp/html/build/hints/bsdi
index 3b8bc38..3b8bc38 100644
--- a/contrib/ntp/html/hints/bsdi
+++ b/contrib/ntp/html/build/hints/bsdi
diff --git a/contrib/ntp/html/hints/changes b/contrib/ntp/html/build/hints/changes
index 177e562..177e562 100644
--- a/contrib/ntp/html/hints/changes
+++ b/contrib/ntp/html/build/hints/changes
diff --git a/contrib/ntp/html/hints/decosf1 b/contrib/ntp/html/build/hints/decosf1
index bc4ce0b..bc4ce0b 100644
--- a/contrib/ntp/html/hints/decosf1
+++ b/contrib/ntp/html/build/hints/decosf1
diff --git a/contrib/ntp/html/hints/decosf2 b/contrib/ntp/html/build/hints/decosf2
index e4a8828..e4a8828 100644
--- a/contrib/ntp/html/hints/decosf2
+++ b/contrib/ntp/html/build/hints/decosf2
diff --git a/contrib/ntp/html/hints/freebsd b/contrib/ntp/html/build/hints/freebsd
index ef84732..ef84732 100644
--- a/contrib/ntp/html/hints/freebsd
+++ b/contrib/ntp/html/build/hints/freebsd
diff --git a/contrib/ntp/html/hints/hpux b/contrib/ntp/html/build/hints/hpux
index 1640d05..1640d05 100644
--- a/contrib/ntp/html/hints/hpux
+++ b/contrib/ntp/html/build/hints/hpux
diff --git a/contrib/ntp/html/hints/linux b/contrib/ntp/html/build/hints/linux
index b06a36a..b06a36a 100644
--- a/contrib/ntp/html/hints/linux
+++ b/contrib/ntp/html/build/hints/linux
diff --git a/contrib/ntp/html/hints/mpeix b/contrib/ntp/html/build/hints/mpeix
index 83c7241e..83c7241e 100644
--- a/contrib/ntp/html/hints/mpeix
+++ b/contrib/ntp/html/build/hints/mpeix
diff --git a/contrib/ntp/html/hints/netbsd b/contrib/ntp/html/build/hints/netbsd
index f5f628d..f5f628d 100644
--- a/contrib/ntp/html/hints/netbsd
+++ b/contrib/ntp/html/build/hints/netbsd
diff --git a/contrib/ntp/html/hints/notes-xntp-v3 b/contrib/ntp/html/build/hints/notes-xntp-v3
index ba027f2..ba027f2 100644
--- a/contrib/ntp/html/hints/notes-xntp-v3
+++ b/contrib/ntp/html/build/hints/notes-xntp-v3
diff --git a/contrib/ntp/html/hints/parse b/contrib/ntp/html/build/hints/parse
index d252351..07fbc6b 100644
--- a/contrib/ntp/html/hints/parse
+++ b/contrib/ntp/html/build/hints/parse
@@ -24,7 +24,7 @@ Directory contents:
- Trimble SV6 GPS receiver
If you want to add new clock types please check
- with kardel@informatik.uni-erlangen.de. These files
+ with kardel <AT> informatik.uni-erlangen.de. These files
implement the conversion of RS232 data streams into
timing information used by refclock_parse.c which is
mostly generic except for NTP configuration constants.
diff --git a/contrib/ntp/html/hints/refclocks b/contrib/ntp/html/build/hints/refclocks
index 17e7643..17e7643 100644
--- a/contrib/ntp/html/hints/refclocks
+++ b/contrib/ntp/html/build/hints/refclocks
diff --git a/contrib/ntp/html/hints/rs6000 b/contrib/ntp/html/build/hints/rs6000
index 8561ac2..8561ac2 100644
--- a/contrib/ntp/html/hints/rs6000
+++ b/contrib/ntp/html/build/hints/rs6000
diff --git a/contrib/ntp/html/hints/sco.html b/contrib/ntp/html/build/hints/sco.html
index bd08e98..bd08e98 100644
--- a/contrib/ntp/html/hints/sco.html
+++ b/contrib/ntp/html/build/hints/sco.html
diff --git a/contrib/ntp/html/hints/sgi b/contrib/ntp/html/build/hints/sgi
index 5e4f7de..5e4f7de 100644
--- a/contrib/ntp/html/hints/sgi
+++ b/contrib/ntp/html/build/hints/sgi
diff --git a/contrib/ntp/html/hints/solaris-dosynctodr.html b/contrib/ntp/html/build/hints/solaris-dosynctodr.html
index 89a12b2..fc7fae9 100644
--- a/contrib/ntp/html/hints/solaris-dosynctodr.html
+++ b/contrib/ntp/html/build/hints/solaris-dosynctodr.html
@@ -25,7 +25,7 @@
<BODY BGCOLOR="#FFFFFF" LINK="#666699" ALINK="#FFFFFF">
-<TABLE WIDTH="623" BORDER="0" CELLSPACING="0" CELLPADDING="0">
+<TABLE WIDTH="623" BORDER="0">
<TR>
<TD COLSPAN="2" VALIGN="TOP" WIDTH="623">
<IMG BORDER="0" SRC="/images/homebuy.gif" WIDTH="149" HEIGHT="32" ALT="Home * Buy * My Sun(sm)" USEMAP="#lefttop"><IMG BORDER="0" SRC="/images/globalnavbar.gif" WIDTH="474" HEIGHT="32" ALT="sun.com Global Sections" USEMAP="#topnav"></TD>
@@ -35,12 +35,12 @@
<!-- TITLEBAR IMAGE: INSERT CUSTOMIZED TITLEBAR IMAGE BELOW -->
- <A HREF="http://www.sun.com/"><IMG BORDER="0" SRC="/images/sunlogo.gif" WIDTH="149" HEIGHT="72" ALT="Sun Microsystems"></A><IMG BORDER="0" SRC="/images/titlebar/doc.title.gif" WIDTH="474" HEIGHT="72"></TD>
+ <A HREF="http://www.sun.com/"><IMG BORDER="0" SRC="/images/sunlogo.gif" WIDTH="149" HEIGHT="72" ALT="Sun Microsystems"></A><IMG BORDER="0" SRC="/images/titlebar/doc.title.gif" alt="gif" WIDTH="474" HEIGHT="72"></TD>
</TR>
<!-- Begin Search Elements -->
<TR VALIGN="top">
<TD BGCOLOR="#666699">
- <TABLE BORDER="0" WIDTH="157" CELLSPACING="0" CELLPADDING="0">
+ <TABLE>
<TR>
<TD BGCOLOR="#666699" COLSPAN="2" WIDTH="157" VALIGN="TOP"><IMG BORDER="0" SRC="/images/search/contract/search1.gif" WIDTH="157" HEIGHT="16" ALT="Search SunSolve"></TD>
</TR>
@@ -58,7 +58,7 @@
<!-- End Search Elements -->
<!-- Begin User Personalization (Must limit to 10 Characters)-->
<TR>
- <TD COLSPAN="2"><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="157"><TR><TD COLSPAN="3" ALIGN="right"><IMG SRC="/images/home_con/welcom_1.gif" ALT="" WIDTH="156" HEIGHT="4" BORDER="0"></TD></TR>
+ <TD COLSPAN="2"><TABLE><TR><TD COLSPAN="3" ALIGN="right"><IMG SRC="/images/home_con/welcom_1.gif" ALT="" WIDTH="156" HEIGHT="4" BORDER="0"></TD></TR>
<TR><TD BGCOLOR="#333366"><IMG SRC="/images/home_con/welcom_2.gif" ALT="" WIDTH="17" HEIGHT="19" BORDER="0"></TD><TD BGCOLOR="#333366" VALIGN="middle"><NOBR><FONT FACE="Geneva, Helvetica, Arial, SunSans-Regular" COLOR="#99CC33" SIZE="-2">sopko</FONT></NOBR></TD><TD BGCOLOR="#333366" ALIGN="right"><A HREF="edit-user-form.pl?viewmode=contractuser"><IMG SRC="/images/home_con/welcom_3.gif" ALT="Edit" WIDTH="45" HEIGHT="19" BORDER="0"></A></TD></TR>
</TABLE>
</TD>
@@ -86,9 +86,9 @@
<IMG BORDER="0" SRC="/images/nav/p3.gif" WIDTH="157" HEIGHT="19" ALT="Y2K Central"></A><BR>
<A HREF="show.pl?target=security/sec" onmouseover="window.status='Security Information'; return true" onmouseout="window.status=''; return true">
<IMG BORDER="0" SRC="/images/nav/p2.gif" WIDTH="157" HEIGHT="19" ALT="Security Information"></A><BR>
-<br><table cellpadding="0" cellspacing="0" border="0" width="157">
+<br><table width="157">
<tr><td width="8">&nbsp;</td><td width="149">
-<table cellpadding="0" cellspacing="0" border="0">
+<table>
<BR><tr><td><BR><img src="/images/line.gif" alt="------" width="140" height="11" border="0"><br>
<A HREF="mark.pl"
onmouseover="window.status='Marked Docs.';return true"
@@ -149,7 +149,7 @@
-<table width=100% cellpadding=16 cellspacing=0 border=0>
+<table width=100%>
<tr>
<td width=100% valign=top>
<CENTER><FONT FACE="Geneva, Helvetica, Arial, SunSans-Regular" SIZE="2">
@@ -177,7 +177,7 @@
<option value="#SRDB-ID">SRDB ID</option>
<option value="#OS">OS</option>
</select></div></form>
-<table width=100% cellpadding=2 cellspacing=0 border=0>
+<table width=100%>
<tr bgcolor=#666699><td><font size=2 color=#ffffff><b>SRDB ID</b></font></td>
<td bgcolor=#ffffff><font size=2>&nbsp;</font></td>
<td><font size=2 color=#ffffff><b>Synopsis</b></font></td>
@@ -191,7 +191,7 @@
<td><font size=2><b>4 Sep 1999</b></font></td>
</tr>
</table><br clear>
-<table width=100% cellpadding=2 cellspacing=0 border=0><tr bgcolor=#999999>
+<table width=100%><tr bgcolor=#999999>
<td><font size=2 color=#ffffff><b><a name=Problem-Description>Problem Description</a></b></font></td>
<td align=right><b><a href="#top"><font size=2 color=#ffffff>Top</font></a></b></td></tr></table>
<pre>Ever since upgrading to Solaris 2.6, the system clock has been drifting and
@@ -200,7 +200,7 @@ didn''t complete' and 'time reset (step)' a lot in the /var/adm/messages
file. The system either was previously working fine with the freeware
xntpd or the configuration was copied from another system that was
using the freeware version.
--- 23-Apr-99 08:22 US/Eastern --</pre><table width=100% cellpadding=2 cellspacing=0 border=0><tr bgcolor=#999999>
+-- 23-Apr-99 08:22 US/Eastern --</pre><table width=100%><tr bgcolor=#999999>
<td><font size=2 color=#ffffff><b><a name=Problem-Solution>Problem Solution</a></b></font></td>
<td align=right><b><a href="#top"><font size=2 color=#ffffff>Top</font></a></b></td></tr></table>
<pre>The common lore for setting up xntpd on Solaris using
@@ -221,7 +221,7 @@ clock, the hard clock is also controlled. Setting
defaulkt behavior, having exactly the opposite effect
as that intended.
-Do not set <font color=red>dosynctodr</font> to 0.</pre><table width=100% cellpadding=2 cellspacing=0 border=0>
+Do not set <font color=red>dosynctodr</font> to 0.</pre><table width=100%>
<tr><td bgcolor=#999999 valign=top width=25%><font color=#ffffff size=2><b><a name=Product-Area>Product Area</a></b></font></td>
<td bgcolor=#cccccc valign=top width=75%><font size=2>Bundled Network</font></td></tr>
<tr><td bgcolor=#999999 valign=top width=25%><font color=#ffffff size=2><b><a name=Product>Product</a></b></font></td>
diff --git a/contrib/ntp/html/hints/solaris.html b/contrib/ntp/html/build/hints/solaris.html
index 7161d5d..9dc2ab1 100644
--- a/contrib/ntp/html/hints/solaris.html
+++ b/contrib/ntp/html/build/hints/solaris.html
@@ -38,7 +38,7 @@ set dosynctodr = 0
<P>
Instead of the <I>tick</I> kernel variable, which many operating
systems use to control microseconds added to the system time every
-clock tick (c.f. <A HREF="../notes.html#frequency_tolerance">Dealing
+clock tick (c.f. <A HREF="../../notes.html#frequency_tolerance">Dealing
with Frequency Tolerance Violations</A>), Solaris has the variables
<I>nsec_per_tick</I> and <I>usec_per_tick</I>.
<P>
diff --git a/contrib/ntp/html/hints/solaris.xtra.4023118 b/contrib/ntp/html/build/hints/solaris.xtra.4023118
index 84c5d15..84c5d15 100644
--- a/contrib/ntp/html/hints/solaris.xtra.4023118
+++ b/contrib/ntp/html/build/hints/solaris.xtra.4023118
diff --git a/contrib/ntp/html/hints/solaris.xtra.S99ntpd b/contrib/ntp/html/build/hints/solaris.xtra.S99ntpd
index d8058fd..d8058fd 100644
--- a/contrib/ntp/html/hints/solaris.xtra.S99ntpd
+++ b/contrib/ntp/html/build/hints/solaris.xtra.S99ntpd
diff --git a/contrib/ntp/html/hints/solaris.xtra.patchfreq b/contrib/ntp/html/build/hints/solaris.xtra.patchfreq
index 9600881..9600881 100644
--- a/contrib/ntp/html/hints/solaris.xtra.patchfreq
+++ b/contrib/ntp/html/build/hints/solaris.xtra.patchfreq
diff --git a/contrib/ntp/html/hints/sun4 b/contrib/ntp/html/build/hints/sun4
index 424fa18..424fa18 100644
--- a/contrib/ntp/html/hints/sun4
+++ b/contrib/ntp/html/build/hints/sun4
diff --git a/contrib/ntp/html/hints/svr4-dell b/contrib/ntp/html/build/hints/svr4-dell
index 2c92f8a..2c92f8a 100644
--- a/contrib/ntp/html/hints/svr4-dell
+++ b/contrib/ntp/html/build/hints/svr4-dell
diff --git a/contrib/ntp/html/hints/svr4_package b/contrib/ntp/html/build/hints/svr4_package
index b9f5ca3..b9f5ca3 100644
--- a/contrib/ntp/html/hints/svr4_package
+++ b/contrib/ntp/html/build/hints/svr4_package
diff --git a/contrib/ntp/html/hints/todo b/contrib/ntp/html/build/hints/todo
index e0e5ffa..e0e5ffa 100644
--- a/contrib/ntp/html/hints/todo
+++ b/contrib/ntp/html/build/hints/todo
diff --git a/contrib/ntp/html/hints/vxworks.html b/contrib/ntp/html/build/hints/vxworks.html
index cd4c919..95ad222 100644
--- a/contrib/ntp/html/hints/vxworks.html
+++ b/contrib/ntp/html/build/hints/vxworks.html
@@ -30,10 +30,10 @@
sed -e 's%main.*()%vxmain()%' configure &gt; configure.vxnew<br>
mv configure.vxnew configure<br>
chmod 755 configure</p>
- <p>The new version 4 of NTP requires some maths functions so it links in the maths library (-lm) in the ntpd <a href="../ntpd/Makefile.am">Makefile.am</a> change the line &quot;ntpd_LDADD = $(LDADD) -lm&quot; by removing the &quot;-lm&quot;.<br>
+ <p>The new version 4 of NTP requires some maths functions so it links in the maths library (-lm) in the ntpd <a href="../../ntpd/Makefile.am">Makefile.am</a> change the line &quot;ntpd_LDADD = $(LDADD) -lm&quot; by removing the &quot;-lm&quot;.<br>
You are now ready to compile</p>
<p><br>
- The <a href="../configure.in">configure.in </a>file needed to be altered to allow for a host-target configuration to take place.</p>
+ The <a href="../../configure.in">configure.in </a>file needed to be altered to allow for a host-target configuration to take place.</p>
<ul>
<li>The define SYS_VXWORKS was added to the compilation flags.
<li>Little endianess is set if the target is of type iX86.
@@ -41,13 +41,13 @@
<li>clock_settime() is defined to be used for setting the clock.
<li>The Linking flags have -r added to allow for relinking into the vxWorks kernel
</ul>
- <p>Unfortunately I have had to make use of the <a href="../include/ntp_machine.h">ntp_machine.h </a>file to add in the checks that would have been checked at linking stage by autoconf, a better method should be devised.</p>
+ <p>Unfortunately I have had to make use of the <a href="../../include/ntp_machine.h">ntp_machine.h </a>file to add in the checks that would have been checked at linking stage by autoconf, a better method should be devised.</p>
<ul>
<li>There is now a NO_MAIN_ALLOWED define that simulates command line args, this allows the use of the normal startup sysntax.
<li>POSIX timers have been added.
- <li>Structures normally found in netdb.h have been added with, the corresponding code is in <a href="../libntp/machines.c">machines.c </a>. Where possible the defines for these have been kept non-vxWorks specific.
+ <li>Structures normally found in netdb.h have been added with, the corresponding code is in <a href="../../libntp/machines.c">machines.c </a>. Where possible the defines for these have been kept non-vxWorks specific.
</ul>
- <p>Unfortunately there are still quite a few SYS_VXWORKS type defines in the source, but I have eliminated as many as possible. You have the choice of using the usrtime.a library avaliable from the vxworks archives or forgoing adjtime() and using the clock_[get|set]time().The <a href="../include/ntp_machine.h">ntp_machine.h </a>file clearly marks how to do this.</p>
+ <p>Unfortunately there are still quite a few SYS_VXWORKS type defines in the source, but I have eliminated as many as possible. You have the choice of using the usrtime.a library avaliable from the vxworks archives or forgoing adjtime() and using the clock_[get|set]time().The <a href="../../include/ntp_machine.h">ntp_machine.h </a>file clearly marks how to do this.</p>
<h1><b>Compilation issues</b></h1>
<p>You will need autoconf and automake ... available free from the gnu archives worldwide.</p>
<p>The variable arch is the target architecture (e.g. i486)</p>
diff --git a/contrib/ntp/html/hints/winnt.html b/contrib/ntp/html/build/hints/winnt.html
index 29abc64..78de15d 100644
--- a/contrib/ntp/html/hints/winnt.html
+++ b/contrib/ntp/html/build/hints/winnt.html
@@ -18,11 +18,11 @@
on the Alpha platform. This release now uses OpenSSL for authentication.
IPv6 is not implemented yet for Win32 platforms.
<h2>Authentication Keys</h2>
- With this release ntp-keygen is supported. See the <a href="../keygen.html">
+ With this release ntp-keygen is supported. See the <a href="../../keygen.html">
ntp keygen documentation</a> for details on how to use ntp-keygen.
<p>
ntpd can now use the generated keys in the same way as on Unix platforms. Please
- refer to the <a href="../authopt.html">Authentication Options</a> for details
+ refer to the <a href="../../authopt.html">Authentication Options</a> for details
on how to use these.
<p><B>NOTE:</B> ntpd and ntp-keygen both use OpenSSL which requires a random
character file called .rnd by default. Both of these programs will automatically
@@ -50,20 +50,25 @@
make the required configuration changes in config.h and then build ntpd from source
and test it. The following reference clocks are known to work and are supported
by Windows NT:
- <p><a href="../driver1.html">Type 1</a> Undisciplined Local Clock (LOCAL)<br>
- <a href="../driver29.html">Type 29</a> Trimble Navigation Palisade GPS (GPS_PALISADE)</p>
+ <p><a href="../../driver1.html">Type 1</a> Undisciplined Local Clock (LOCAL)<br>
+ <a href="../../driver29.html">Type 29</a> Trimble Navigation Palisade GPS (GPS_PALISADE)</p>
<h2>Functions Supported</h2>
All NTP functions are supported with some constraints. See the <a href="#ToDo">TODO list</a> below.
Note that the ntptrace executable is not supported and you should use the PERL script
version instead.
<h2>Accuracy</h2>
- Greg Brackley has implemented a fantastic interpolation scheme that improves the precision of the NTP clock using a realtime thread (is that poetic or what!) which captures a tick count from the 8253 counter after each OS tick. The count is used to interpolate the time between operating system ticks.
- <p>On a typical 200+ MHz system NTP achieves a precision of about 5 microseconds and synchronizes the clock to +/-500 microseconds using the <a href="http://www.trimble.com/products/ntp">Trimble Palisade</a> as UTC reference. This allows distributed applications to use the 10 milliseconds ticks available to them with high confidence.</p>
+ Greg Brackley has implemented a fantastic interpolation scheme that improves the precision of the NTP clock
+ using a realtime thread (is that poetic or what!) which captures a tick count from the 8253 counter after each
+ OS tick. The count is used to interpolate the time between operating system ticks.
+ <p>On a typical 200+ MHz system NTP achieves a precision of about 5 microseconds and synchronizes the clock
+ to +/-500 microseconds using the <a href="http://www.trimble.com/products/ntp">Trimble Palisade</a> as UTC reference.
+ This allows distributed applications to use the 10 milliseconds ticks available to them with high confidence.</p>
<h2>Binaries</h2>
Recent InstallShield based executable versions of NTP for Windows NT (intel) are available from:
<ul>
<li><a href="http://www.trimble.com/oem/ntp">http://www.trimble.com/oem/ntp</a>
<li><a href="http://www.five-ten-sg.com/">http://www.five-ten-sg.com/</a>
+ <li><a href="http://www.meinberg.de/english/sw/ntp.htm">http://www.meinberg.de/english/sw/ntp.htm</a>
</ul>
<a name="ToDo"><h2>ToDo</h2></a>
These tasks are in no particular order of priority.
@@ -78,7 +83,7 @@
<h2>Compiling Requirements</h2>
<ul>
<li>Windows NT 4.0 Windows 2000, Windows XP, or Windows.NET Server 2003
- <li>Microsoft Visual C++ 6.0. <B>NOTE</B>VC++ 7.0 (aka .NET) is not yet supported
+ <li>Microsoft Visual C++ 6.0. <B>NOTE:</B> VC++ 7.0 (aka .NET) is not yet supported
but will probably work fine.
<li>Some way of uncompressing and untarring the gzipped tar file.
<li>OpenSSL must be built on the box before building NTP. Additional steps would
@@ -87,11 +92,10 @@
<a name="Compiling"><h2>Compiling Instructions</h2></a>
<ol>
<li>Unpack and build OpenSSL according to the OpenSSL instructions for building on
- Windows. Currently the NTP build requires OpenSSL 0.9.7b as it looks for the path
- to that build for the include and libeay32.lib files. If you have a different version
- you will need to adjust both the preprocessor path and the link path to point to
- the correct locations of the include files and the lib file respectively.
- <li>Unpack the NTP-4.x.tar.gz using utilities such as WinZip.
+ Windows. An environment variable named OPENSSL must be set up to specify the base path
+ of the OpenSSL directory to be used to build the NTP package
+ (e.g. <code>OPENSSL=C:\openssl-0.9.8b</code>).
+ <li>Unpack the ntp-*.tar.gz archive using utilities such as WinZip.
<li>Open the .\ports\winnt\ntp.dsw Visual C workspace
<li>Batch build all projects
<li>The built binaries can be found in the port\winnt\bin\Release subdirectory
@@ -100,25 +104,38 @@
ship this file (winnt.html) along with the binaries.
</ol>
<h2>Configuration File</h2>
- The default NTP configuration file path is %SystemRoot%<tt>\system32\drivers\etc\. </tt>(%SystemRoot% is an environmental variable that can be determined by typing &quot;set&quot; at the &quot;Command Prompt&quot; or from the &quot;System&quot; icon in the &quot;Control Panel&quot;).<br>
- Refer to your system environment and <tt>c</tt>reate your<tt> ntp.conf</tt> file in the directory corresponding to your system&nbsp; installation.<br>
- <tt>The older &lt;WINDIR&gt;\ntp.conf </tt>is still supported but you will get a log entry reporting that the first file wasn't found.
+ The default NTP configuration file path is %SystemRoot%<tt>\system32\drivers\etc\. </tt>(%SystemRoot%
+ is an environmental variable that can be determined by typing &quot;set&quot; at the &quot;Command Prompt&quot;
+ or from the &quot;System&quot; icon in the &quot;Control Panel&quot;).<br>
+ Refer to your system environment and <tt>c</tt>reate your<tt> ntp.conf</tt> file in the directory
+ corresponding to your system&nbsp; installation.<br>
+ <tt>The older &lt;WINDIR&gt;\ntp.conf </tt>is still supported but you will get a log entry reporting that
+ the first file wasn't found.
<h2>Installation Instructions</h2>
- The <tt>instsrv</tt> program in the instsrv subdirectory of the distribution can be used to install 'ntpd' as a service and start automatically at boot time. Instsrv is automatically compiled with the rest of the distribution if you followed the steps above.
+ The <tt>instsrv</tt> program in the instsrv subdirectory of the distribution can be used to install 'ntpd' as
+ a service and start automatically at boot time. Instsrv is automatically compiled with the rest of the distribution
+ if you followed the steps above.
<ol>
<li>Start a command prompt and enter &quot;instsrv.exe &lt;pathname_for_ntpd.exe&gt;&quot;
- <li>Clicking on the &quot;Services&quot; icon in the &quot;Control Panel&quot; will display the list of currently installed services in a dialog box. The NetworkTimeProtocol service should show up in this list. Select it in the list and hit the &quot;Start&quot; button in the dialog box. The NTP service should start.
+ <li>Clicking on the &quot;Services&quot; icon in the &quot;Control Panel&quot; will display the list of
+ currently installed services in a dialog box. The NetworkTimeProtocol service should show up in this list.
+ Select it in the list and hit the &quot;Start&quot; button in the dialog box. The NTP service should start.
<li>You can also stop and start the service by typing net start|stop NetworkTimeProtocol at the DOS prompt.
- <li>View the event log by clicking on the &quot;Event Viewer&quot; icon in the &quot;Administrative Tools&quot; group, there should be several successful startup messages from NTP. NTP will keep running and restart automatically when the machine is rebooted.
+ <li>View the event log by clicking on the &quot;Event Viewer&quot; icon in the &quot;Administrative Tools&quot;
+ group, there should be several successful startup messages from NTP. NTP will keep running and restart
+ automatically when the machine is rebooted.
</ol>
- You can change the start mode (automatic/manual) and other startup parameters corresponding to the NTP service in the &quot;Services&quot; dialog box if you wish.
+ You can change the start mode (automatic/manual) and other startup parameters corresponding to the NTP service
+ in the &quot;Services&quot; dialog box if you wish.
<h2>Removing NTP</h2>
You can also use <tt>instsrv</tt> to delete the NTP service by entering: &quot;instsrv.exe remove&quot;
<h2>Command Line Parameters and Registry Entries</h2>
Unlike the Unix environment, there is no clean way to run 'ntpdate' and reset the clock before starting 'ntpd' at boot time.<br>
- NTP will step the clock up to 1000 seconds by default. While there is no reason that the system clock should be that much off during bootup if 'ntpd' was running before, you may wish to override this default and/or pass other command line directives.
+ NTP will step the clock up to 1000 seconds by default. While there is no reason that the system clock should be that much off
+ during bootup if 'ntpd' was running before, you may wish to override this default and/or pass other command line directives.
<p>Use the registry editor to edit the value for the ntpd executable under LocalMachine\System\CurrentControlSet\Services\NTP.</p>
- <p>Add the -g option to the ImagePath key, behind &quot;%INSTALLDIR&gt;\ntpd.exe&quot;. This will force NTP to accept large time errors (including 1.1.1980 00:00)</p>
+ <p>Add the -g option to the ImagePath key, behind &quot;%INSTALLDIR&gt;\ntpd.exe&quot;. This will force NTP to accept
+ large time errors (including 1.1.1980 00:00)</p>
<h2>Bug Reports</h2>
Send questions to <a href="news://comp.protocols.time.ntp">news://comp.protocols.time.ntp</a>
and bug reports should be entered in <a href="http://bugzilla.ntp.org/">Bugzilla</a> on the
@@ -137,14 +154,18 @@
<b>by Sven Dietrich (sven_dietrich@trimble.com)</b>
<p><b>Significant Changes:</b></p>
<ul>
- <li>Perl 5 is no longer needed to compile NTP. The configuration script which creates version.c with the current date and time was modified by Frederick Czajka [w2k@austin.rr.com] so that Perl is no longer required.
+ <li>Perl 5 is no longer needed to compile NTP. The configuration script which creates version.c
+ with the current date and time was modified by Frederick Czajka [w2k@austin.rr.com] so that Perl
+ is no longer required.
</ul>
<h3>Last revision 15 November 1999&nbsp; Version 4.0.98f.</h3>
<b>by Sven Dietrich (sven_dietrich@trimble.com)</b>
<p><b>Significant Changes:</b></p>
<ul>
<li>Fixed I/O problem delaying packet responses which resulted in no-replys to NTPQ and others.
- <li>The default configuration file path is <tt>&lt;WINDIR&gt;\system32\drivers\etc\ntp.conf. The old &lt;WINDIR&gt;\ntp.conf </tt>is still supported but you will get a log entry reporting that the first file wasn't found. The NTP 3.x legacy <tt>ntp.ini</tt> file is no longer supported.
+ <li>The default configuration file path is <tt>&lt;WINDIR&gt;\system32\drivers\etc\ntp.conf.
+ The old &lt;WINDIR&gt;\ntp.conf </tt>is still supported but you will get a log entry reporting
+ that the first file wasn't found. The NTP 3.x legacy <tt>ntp.ini</tt> file is no longer supported.
</ul>
<b>Known Problems / TODO:</b>
<ul>
@@ -230,7 +251,8 @@
&nbsp;</p>
<p>Known problems:<br>
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bug in ntptrace - if no Stratum 1 servers are available,<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; such as on an IntraNet, the application crashes.</p>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; such as on an
+ IntraNet, the application crashes.</p>
<h3>Last revision:&nbsp; 12-Apr-1995</h3>
This NTPv3 distribution includes a sample configuration file and the project<br>
makefiles for WindowsNT 3.5 platform using Microsoft Visual C++ 2.0 compiler.<br>
diff --git a/contrib/ntp/html/patches.html b/contrib/ntp/html/build/patches.html
index cd6e550..00b2923 100644
--- a/contrib/ntp/html/patches.html
+++ b/contrib/ntp/html/build/patches.html
@@ -9,9 +9,9 @@
<body>
<h3>Patching Procedures</h3>
- <img src="pic/alice38.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html"> rom <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <img src="../pic/alice38.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html"> rom <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
<p>The Mad Hatter needs patches.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">02:16</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="246">Thursday, January 02, 2003</csobj></p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">12:56 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="266">Saturday, March 20, 2004</csobj></p>
<br clear="left">
<hr>
<p>A distribution so widely used as this one eventually develops numerous barnacles as the result of <a href="porting.html">porting</a> to new systems, idiosyncratic new features and just plain bugs. In order to help keep order and make maintenance bearable, we ask that proposed changes to the distribution be submitted in the following form.</p>
@@ -23,7 +23,7 @@
<li>Please avoid patching the RCS subdirectories; better yet, clean them out before submitting patches.
<li>If you have whole new files, as well as patches, wrap the files and patches in a shell script. If you need to compress it, use either GNU <tt>gzip</tt> or the stock Unix <tt>compress</tt> utility.
<li>Don't forget the documentation that may be affected by the patch. Send us patches for the <tt>./htm</tt> files as well.
- <li>We would be glad to include your name, electric address and descriptive phrase in the <a href="copyright.html">Copyright</a> page, if you wish.
+ <li>We would be glad to include your name, electric address and descriptive phrase in the <a href="../copyright.html">Copyright</a> page, if you wish.
</ol>
<p>Prior to ntp3-5.83 (releases up to and including ntp3.5f) a complete patch history back to the dark ages was kept in the <tt>./patches</tt> directory, which might have been helpful to see if the same problem occurred in another port, etc. Patches were saved in that directory with file name in the form <tt>patch.<i>nnn</i></tt>, where <i>nnn</i> was approaching 200. All patches in that directory have been made; so, if yours was there, it was in the distribution.</p>
<p>Since we have been getting multple patches for some bugs, plus many changes are implemented locally, no two maintainers here use the same tools, and since we're not using any bug-tracking software or even source code control, there is currently no tracking of specific changes.</p>
diff --git a/contrib/ntp/html/porting.html b/contrib/ntp/html/build/porting.html
index 44db2ab..976cc66 100644
--- a/contrib/ntp/html/porting.html
+++ b/contrib/ntp/html/build/porting.html
@@ -9,10 +9,10 @@
<body>
<h3>Porting Hints</h3>
- <img src="pic/wingdorothy.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>The Wizard of Oz</i>, L. Frank Baum</a>
+ <img src="../pic/wingdorothy.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>The Wizard of Oz</i>, L. Frank Baum</a>
<p>Porting Dorothy in Oz
</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">20:17</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="257">Monday, December 02, 2002</csobj></p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">12:56 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="266">Saturday, March 20, 2004</csobj></p>
<br clear="left">
<hr>
<p>NOTE: The following procedures have been replaced by GNU <tt>automake</tt> and <tt>autoconfigure</tt>. This page is to be updated in the next release.</p>
diff --git a/contrib/ntp/html/quick.html b/contrib/ntp/html/build/quick.html
index 151ea1b2..1693b5d 100644
--- a/contrib/ntp/html/quick.html
+++ b/contrib/ntp/html/build/quick.html
@@ -10,19 +10,19 @@
<body>
<h3>Quick Start</h3>
- <img src="pic/panda.gif" alt="gif" align="left">FAX test image for SATNET (1979).
- <p>The baby panda was scanned at University College London and used as a FAX test image for a demonstration of the DARPA Atlantic SATNET Program and the first transatlantic Internet connection in 1978. The computing system used for that demonstration was called the <a href="http://www.eecis.udel.edu/%7emills/database/papers/fuzz.ps">Fuzzball</a> . As it happened, this was also the first Internet multimedia presentation and the first to use NTP in regular operation. The image was widely copied and used for testing purpose throughout much of the 1980s.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">00:39</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="244">Saturday, January 11, 2003</csobj></p>
+ <img src="../pic/panda.gif" alt="gif" align="left">FAX test image for SATNET (1979).
+ <p>The baby panda was scanned at University College London and used as a FAX test image for a demonstration of the DARPA Atlantic SATNET Program and the first transatlantic Internet connection in 1978. The computing system used for that demonstration was called the <a href="http://www.eecis.udel.edu/%7emills/database/papers/fuzz.pdf">Fuzzball</a> . As it happened, this was also the first Internet multimedia presentation and the first to use NTP in regular operation. The image was widely copied and used for testing purpose throughout much of the 1980s.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">01:01 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="266">Saturday, March 20, 2004</csobj></p>
<br clear="left">
<hr>
<p>For the rank amateur the sheer volume of the documentation collection must be intimidating. However, it doesn't take much to fly the <tt>ntpd</tt> daemon with a simple configuration where a workstation needs to synchronize to some server elsewhere in the Internet. The first thing that needs to be done is to build the distribution for the particular workstation and install in the usual place. The <a href="build.html">Building and Installing the Distribution</a> page describes how to do this.</p>
<p>While it is possible that certain configurations do not need a configuration file, most do require one. The file, called by default <tt>/etc/ntp.conf</tt>, need only contain one line specifying a remote server, for instance</p>
<p><tt>server foo.bar.com</tt></p>
- <p>Choosing an appropriate remote server is somewhat of a black art, but a suboptimal choice is seldom a problem. There are about two dozen public time servers operated by National Institutes of Science and Technology (NIST), US Naval Observatory (USNO), Canadian Metrology Centre (CMC) and many others available on the Internet. Lists of public primary and secondary NTP servers maintained on the <a href="http://www.eecis.udel.edu/~mills/ntp/servers.html">Public NTP TIme Servers</a> page, which is updated frequently.The lists are sorted by country and, in the case of the US, by state. Usually, the best choice is the nearest in geographical terms, but the terms of engagement specified in each list entry should be carefully respected.</p>
+ <p>Choosing an appropriate remote server is somewhat of a black art, but a suboptimal choice is seldom a problem. There are about two dozen public time servers operated by National Institutes of Science and Technology (NIST), US Naval Observatory (USNO), Canadian Metrology Centre (CMC) and many others available on the Internet. Lists of public primary and secondary NTP servers maintained on the <a href="http://www.eecis.udel.edu/%7emills/ntp/servers.html">Public NTP TIme Servers</a> page, which is updated frequently.The lists are sorted by country and, in the case of the US, by state. Usually, the best choice is the nearest in geographical terms, but the terms of engagement specified in each list entry should be carefully respected.</p>
<p>During operation <tt>ntpd</tt> measures and corrects for incidental clock frequency error and writes the current value to a file called by default <tt>/etc/ntp.drift</tt>. If <tt>ntpd</tt> is stopped and restarted, it initializes the frequency from this file. In this way the potentially lengthy interval to relearn the frequency error is avoided.</p>
<p>That's all there is to it, unless some problem in network connectivity or local operating system configuration occurs. The most common problem is some firewall between the workstation and server. System administrators should understand NTP uses UDP port 123 as both the source and destination port and that NTP does not involve any operating system interaction other than to set the system clock. While almost all modern Unix systems have included NTP and UDP port 123 defined in the services file, this should be checked if <tt>ntpd</tt> fails to come up at all.</p>
- <p>The best way to confirm NTP is working is using the <a href="ntpq.html"><tt>ntpq</tt></a> utility, although the <a href="ntpdc.html"><tt>ntpdc</tt></a> utility may be useful in extreme cases. See the documentation pages for further information. In the most extreme cases the <tt>-d</tt> option on the <tt>ntpd</tt> command line results in a blow-by-blow trace of the daemon operations. While the trace output can be cryptic, to say the least, it gives a general idea of what the program is doing and, in particular, details the arriving and departing packets and detected errors, if present.</p>
- <p>Sometimes the <tt>ntpd</tt>. behavior may seem to violate the Principle of Least Astonishment, but there are good reasons for this. See the <a href="ntpd.html">Network Time Protocol (NTP) daemon</a> page for revealing insights. See this page and its dependencies for additional configuration and control options. The <a href="notes.html">Notes on Configuring NTP and Setting up a NTP Subnet</a> page contains an extended discussion of these options.</p>
+ <p>The best way to confirm NTP is working is using the <a href="../ntpq.html"><tt>ntpq</tt></a> utility, although the <a href="../ntpdc.html"><tt>ntpdc</tt></a> utility may be useful in extreme cases. See the documentation pages for further information. In the most extreme cases the <tt>-d</tt> option on the <tt>ntpd</tt> command line results in a blow-by-blow trace of the daemon operations. While the trace output can be cryptic, to say the least, it gives a general idea of what the program is doing and, in particular, details the arriving and departing packets and detected errors, if present.</p>
+ <p>Sometimes the <tt>ntpd</tt>. behavior may seem to violate the Principle of Least Astonishment, but there are good reasons for this. See the <a href="../ntpd.html">Network Time Protocol (NTP) daemon</a> page for revealing insights. See this page and its dependencies for additional configuration and control options. The <a href="../notes.html">Notes on Configuring NTP and Setting up a NTP Subnet</a> page contains an extended discussion of these options.</p>
<hr>
<script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
diff --git a/contrib/ntp/html/build/scripts/footer.txt b/contrib/ntp/html/build/scripts/footer.txt
new file mode 100644
index 0000000..89216ce
--- /dev/null
+++ b/contrib/ntp/html/build/scripts/footer.txt
@@ -0,0 +1,7 @@
+document.write("\
+<table><tr>\
+<td width='50%' ><img src='../icons/home.gif' align='middle' alt='gif'>\
+<a href='../index.html'>Home Page</a></td>\
+<td width='50%' ><img src='../icons/mail2.gif' align='middle' alt='gif'>\
+<a href='http://www.ntp.org/contact.html'>Contacts</a></i></td>\
+</tr></table>") \ No newline at end of file
diff --git a/contrib/ntp/html/build/scripts/links10.txt b/contrib/ntp/html/build/scripts/links10.txt
new file mode 100644
index 0000000..7bf9d06
--- /dev/null
+++ b/contrib/ntp/html/build/scripts/links10.txt
@@ -0,0 +1,5 @@
+document.write("<ul>\
+<li class='inline'><a href='refclock.html'>Reference Clock Drivers</a><br>\
+<li class='inline'><a href='prefer.html'>Mitigation Rules and the <tt>prefer</tt> Keyword</a><br>\
+<li class='inline'><a href='howto.html'>How to Write a Reference Clock Driver</a><br>\
+</ul>") \ No newline at end of file
diff --git a/contrib/ntp/html/build/scripts/links11.txt b/contrib/ntp/html/build/scripts/links11.txt
new file mode 100644
index 0000000..1fce362
--- /dev/null
+++ b/contrib/ntp/html/build/scripts/links11.txt
@@ -0,0 +1,5 @@
+document.write("<ul>\
+<li class='inline'><a href='refclock.html'>Reference Clock Drivers</a><br>\
+<li class='inline'><a href='pps.html'>Pulse-per-second (PPS) Signal Interfacing</a><br>\
+<li class='inline'><a href='ldisc.html'>Line Disciplines and Streams Modules</a><br>\
+</ul>") \ No newline at end of file
diff --git a/contrib/ntp/html/build/scripts/links12.txt b/contrib/ntp/html/build/scripts/links12.txt
new file mode 100644
index 0000000..512cbcf
--- /dev/null
+++ b/contrib/ntp/html/build/scripts/links12.txt
@@ -0,0 +1,5 @@
+document.write("<ul>\
+<li class='inline'><a href='debug.html'>NTP Debugging Techniques</a><br>\
+<li class='inline'><a href='rdebug.html'>Debugging Reference Clock Drivers</a><br>\
+<li class='inline'><a href='msyslog.html'><tt>ntpd</tt> System Log Messages</a><br>\
+</ul>") \ No newline at end of file
diff --git a/contrib/ntp/html/build/scripts/links7.txt b/contrib/ntp/html/build/scripts/links7.txt
new file mode 100644
index 0000000..4a6f186
--- /dev/null
+++ b/contrib/ntp/html/build/scripts/links7.txt
@@ -0,0 +1,5 @@
+document.write("<ul>\
+<li class='inline'><a href='../confopt.html'>Server Options</a><br>\
+<li class='inline'><a href='../authopt.html'>Authentication Options</a><br>\
+<li class='inline'><a href='../monopt.html'>Monitoring Options</a><br>\
+</ul>") \ No newline at end of file
diff --git a/contrib/ntp/html/build/scripts/links8.txt b/contrib/ntp/html/build/scripts/links8.txt
new file mode 100644
index 0000000..af33dca
--- /dev/null
+++ b/contrib/ntp/html/build/scripts/links8.txt
@@ -0,0 +1,6 @@
+document.write("<ul>\
+<li class='inline'><a href='refclock.html'>Reference Clock Drivers</a><br>\
+<li class='inline'><a href='drivers/driver7.html'>Radio CHU Audio Demodulator/Decoder</a><br>\
+<li class='inline'><a href='drivers/driver36.html'>Radio WWV/H Audio Demodulator/Decoder</a><br>\
+<li class='inline'><a href='drivers/driver6.html'>IRIG Audio Decoder</a>\
+</ul>") \ No newline at end of file
diff --git a/contrib/ntp/html/build/scripts/links9.txt b/contrib/ntp/html/build/scripts/links9.txt
new file mode 100644
index 0000000..38ffe90
--- /dev/null
+++ b/contrib/ntp/html/build/scripts/links9.txt
@@ -0,0 +1,7 @@
+document.write("<ul>\
+<li class='inline'><a href='authopt.html'>Authentication Options</a><br>\
+<li class='inline'><a href='manyopt.html'>Automatic NTP Configuration Options</a><br>\
+<li class='inline'><a href='confopt.html'>Server Options</a><br>\
+<li class='inline'><a href='keygen.html'><tt>ntp-keygen</tt> - generate public and private keys</a>\
+<li class='inline'><a href='http://www.eecis.udel.edu/~mills/autokey.html'>Autonomous Authentication</a>\
+</ul>") \ No newline at end of file
diff --git a/contrib/ntp/html/build/scripts/style.css b/contrib/ntp/html/build/scripts/style.css
new file mode 100644
index 0000000..096b18a
--- /dev/null
+++ b/contrib/ntp/html/build/scripts/style.css
@@ -0,0 +1,64 @@
+body {background: #FDF1E1;
+ color: #006600;
+ font-family: "verdana", sans-serif;
+ text-align: justify;
+ margin-left: 5px;}
+
+p, h4, hr, li {margin-top: .6em; margin-bottom: .6em}
+li.inline {text-align: left; margin-top: 0; margin-bottom: 0}
+
+ul, dl, ol, {margin-top: .6em; margin-bottom: .6em; margin-left 5em}
+
+dt {margin-top: .6em}
+dd {margin-bottom: .6em}
+
+div.header {text-align: center;
+ font-style: italic;}
+
+div.footer {text-align: center;
+ font-size: 60%;}
+
+img.cell {align: left;}
+
+td.sidebar {width: 40px; align: center; valign: top;}
+img.sidebar {align: center; margin-top: 5px;}
+h4.sidebar {align: center;}
+
+p.top {background: #FDF1E1;
+ color: #006600;
+ position: absolute;
+ margin-left: -90px;
+ text-align: center;}
+
+a:link.sidebar {background: transparent;
+ color: #990033;
+ font-weight: bold;}
+
+a:visited.sidebar {background: transparent;
+ color: #990033;
+ font-weight: bold;}
+
+a:hover.sidebar {background: #FDF1E1;
+ color: #006600;}
+
+img {margin: 5px;}
+
+div {text-align: center;}
+
+h1 {text-align: center;
+ font-size: 250%;}
+
+caption {background: #EEEEEE;
+ color: #339999;}
+
+tx {text-align: center;}
+
+th {background: #FFFFCC;
+ color: #006600;
+ text-align: center;
+ text-decoration: underline;
+ padding-top: 5px;}
+
+th.caption {background: #EEEEEE;
+ color: #006600;
+ text-align: center;} \ No newline at end of file
diff --git a/contrib/ntp/html/clockopt.html b/contrib/ntp/html/clockopt.html
index af79b04..c4690a3 100644
--- a/contrib/ntp/html/clockopt.html
+++ b/contrib/ntp/html/clockopt.html
@@ -2,66 +2,67 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Reference Clock Options</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Reference Clock Options</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Reference Clock Options</h3>
- <img src="pic/stack1a.jpg" alt="gif" align="left">
- <p>See the radios, all in a row.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:06 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#ref">Reference Clock Support</a>
- <li class="inline"><a href="#cmd">Reference Clock Commands</a>
- </ul>
- <hr>
- <h4 id="ref">Reference Clock Support</h4>
- <p>The NTP Version 4 daemon supports some three dozen different radio, satellite and modem reference clocks plus a special pseudo-clock used for backup or when no other clock source is available. Detailed descriptions of individual device drivers and options can be found in the <a href="refclock.html">Reference Clock Drivers</a> page. Additional information can be found in the pages linked there, including the <a href="rdebug.html">Debugging Hints for Reference Clock Drivers</a> and <a href="howto.html">How To Write a Reference Clock Driver</a> pages. In addition, support for a PPS signal is available as described in <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page. Many drivers support special line discipline/streams modules which can significantly improve the accuracy using the driver. These are described in the <a href="ldisc.html">Line Disciplines and Streams Drivers</a> page.</p>
- <p>A reference clock will generally (though not always) be a radio timecode receiver which is synchronized to a source of standard time such as the services offered by the NRC in Canada and NIST and USNO in the US. The interface between the computer and the timecode receiver is device dependent, but is usually a serial port. A device driver specific to each reference clock must be selected and compiled in the distribution; however, most common radio, satellite and modem clocks are included by default. Note that an attempt to configure a reference clock when the driver has not been compiled or the hardware port has not been appropriately configured results in a scalding remark to the system log file, but is otherwise non hazardous.</p>
- <p>For the purposes of configuration, <tt>ntpd</tt> treats reference clocks in a manner analogous to normal NTP peers as much as possible. Reference clocks are identified by a syntactically correct but invalid IP address, in order to distinguish them from normal NTP peers. Reference clock addresses are of the form <tt>127.127.<i>t.u</i></tt>, where <i><tt>t</tt></i> is an integer denoting the clock type and <i><tt>u</tt></i> indicates the unit number in the range 0-3. While it may seem overkill, it is in fact sometimes useful to configure multiple reference clocks of the same type, in which case the unit numbers must be unique.</p>
- <p>The <tt>server</tt> command is used to configure a reference clock, where the <i><tt>address</tt></i> argument in that command is the clock address. The <tt>key</tt>, <tt>version</tt> and <tt>ttl</tt> options are not used for reference clock support. The <tt>mode</tt> option is added for reference clock support, as described below. The <tt>prefer</tt> option can be useful to persuade the server to cherish a reference clock with somewhat more enthusiasm than other reference clocks or peers. Further information on this option can be found in the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page. The <tt>minpoll</tt> and <tt>maxpoll</tt> options have meaning only for selected clock drivers. See the individual clock driver document pages for additional information.</p>
- <p>The <tt>fudge</tt> command is used to provide additional information for individual clock drivers and normally follows immediately after the <tt>server</tt> command. The <i><tt>address</tt></i> argument specifies the clock address. The <tt>refid</tt> and <tt>stratum</tt> options control can be used to override the defaults for the device. There are two optional device-dependent time offsets and four flags that can be included in the <tt>fudge</tt> command as well.</p>
- <p>The stratum number of a reference clock is by default zero. Since the <tt>ntpd</tt> daemon adds one to the stratum of each peer, a primary server ordinarily displays an external stratum of one. In order to provide engineered backups, it is often useful to specify the reference clock stratum as greater than zero. The <tt>stratum</tt> option is used for this purpose. Also, in cases involving both a reference clock and a pulse-per-second (PPS) discipline signal, it is useful to specify the reference clock identifier as other than the default, depending on the driver. The <tt>refid</tt> option is used for this purpose. Except where noted, these options apply to all clock drivers.</p>
- <h4 id="cmd">Reference Clock Commands</h4>
- <dl>
- <dt><tt>server 127.127.<i>t.u</i> [prefer] [mode <i>int</i>] [minpoll <i>int</i>] [maxpoll <i>int</i>]</tt>
- <dd>This command can be used to configure reference clocks in special ways. The options are interpreted as follows:
- <dl>
- <dt><tt>prefer</tt>
- <dd>Marks the reference clock as preferred. All other things being equal, this host will be chosen for synchronization among a set of correctly operating hosts. See the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page for further information.
- <dt><tt>mode <i>int</i></tt>
- <dd>Specifies a mode number which is interpreted in a device-specific fashion. For instance, it selects a dialing protocol in the ACTS driver and a device subtype in the <tt>parse</tt> drivers.
- <dt><tt>minpoll <i>int</i></tt>
- <dt><tt>maxpoll <i>int</i></tt>
- <dd>These options specify the minimum and maximum polling interval for reference clock messages, in seconds to the power of two. For most directly connected reference clocks, both <tt>minpoll</tt> and <tt>maxpoll</tt> default to 6 (64 s). For modem reference clocks, <tt>minpoll</tt> defaults to 10 (17.1 m) and <tt>maxpoll</tt> defaults to 14 (4.5 h). The allowable range is 4 (16 s) to 17 (36.4 h) inclusive.
- </dl>
- <dt><tt>fudge 127.127.<i>t.u</i> [time1 <i>sec</i>] [time2 <i>sec</i>] [stratum <i>int</i>] [refid <i>string</i>] [mode <i>int</i>] [flag1 0|1] [flag2 0|1] [flag3 0|1] [flag4 0|1]</tt>
- <dd>This command can be used to configure reference clocks in special ways. It must immediately follow the <tt>server</tt> command which configures the driver. Note that the same capability is possible at run time using the <tt><a href="ntpdc.html">ntpdc</a></tt> program. The options are interpreted as follows:
- <dl>
- <dt><tt>time1 <i>sec</i></tt>
- <dd>Specifies a constant to be added to the time offset produced by the driver, a fixed-point decimal number in seconds. This is used as a calibration constant to adjust the nominal time offset of a particular clock to agree with an external standard, such as a precision PPS signal. It also provides a way to correct a systematic error or bias due to serial port or operating system latencies, different cable lengths or receiver internal delay. The specified offset is in addition to the propagation delay provided by other means, such as internal DIPswitches. Where a calibration for an individual system and driver is available, an approximate correction is noted in the driver documentation pages.
- <dd>Note: in order to facilitate calibration when more than one radio clock or PPS signal is supported, a special calibration feature is available. It takes the form of an argument to the <tt>enable</tt> command described in the <a href="miscopt.html">Miscellaneous Options</a> page and operates as described in the <a href="refclock.html">Reference Clock Drivers</a> page.
- <dt><tt>time2 <i>secs</i></tt>
- <dd>Specifies a fixed-point decimal number in seconds, which is interpreted in a driver-dependent way. See the descriptions of specific drivers in the <a href="refclock.html">reference clock drivers</a> page.
- <dt><tt>stratum <i>int</i></tt>
- <dd>Specifies the stratum number assigned to the driver, an integer between 0 and 15. This number overrides the default stratum number ordinarily assigned by the driver itself, usually zero.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies an ASCII string of from one to four characters which defines the reference identifier used by the driver. This string overrides the default identifier ordinarily assigned by the driver itself.
- <dt><tt>mode <i>int</i></tt>
- <dd>Specifies a mode number which is interpreted in a device-specific fashion. For instance, it selects a dialing protocol in the ACTS driver and a device subtype in the <tt>parse</tt> drivers.
- <dt><tt>flag1 flag2 flag3 flag4</tt>
- <dd>These four flags are used for customizing the clock driver. The interpretation of these values, and whether they are used at all, is a function of the particular clock driver. However, by convention <tt>flag4</tt> is used to enable recording monitoring data to the <tt>clockstats</tt> file configured with the <tt>filegen</tt> command. Further information on the <tt>filegen</tt> command can be found in the <a href="monopt.html">Monitoring Options</a> page.
- </dl>
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Reference Clock Options</h3>
+ <img src="pic/stack1a.jpg" alt="gif" align="left">
+ <p>See the radios, all in a row.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:37</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#ref">Reference Clock Support</a>
+ <li class="inline"><a href="#cmd">Reference Clock Commands</a>
+ </ul>
+ <hr>
+ <h4 id="ref">Reference Clock Support</h4>
+ <p>The NTP Version 4 daemon supports some three dozen different radio, satellite and modem reference clocks plus a special pseudo-clock used for backup or when no other clock source is available. Detailed descriptions of individual device drivers and options can be found in the <a href="refclock.html">Reference Clock Drivers</a> page. Additional information can be found in the pages linked there, including the <a href="rdebug.html">Debugging Hints for Reference Clock Drivers</a> and <a href="howto.html">How To Write a Reference Clock Driver</a> pages. In addition, support for a PPS signal is available as described in <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page. Many drivers support special line discipline/streams modules which can significantly improve the accuracy using the driver. These are described in the <a href="ldisc.html">Line Disciplines and Streams Drivers</a> page.</p>
+ <p>A reference clock will generally (though not always) be a radio timecode receiver which is synchronized to a source of standard time such as the services offered by the NRC in Canada and NIST and USNO in the US. The interface between the computer and the timecode receiver is device dependent, but is usually a serial port. A device driver specific to each reference clock must be selected and compiled in the distribution; however, most common radio, satellite and modem clocks are included by default. Note that an attempt to configure a reference clock when the driver has not been compiled or the hardware port has not been appropriately configured results in a scalding remark to the system log file, but is otherwise non hazardous.</p>
+ <p>For the purposes of configuration, <tt>ntpd</tt> treats reference clocks in a manner analogous to normal NTP peers as much as possible. Reference clocks are identified by a syntactically correct but invalid IP address, in order to distinguish them from normal NTP peers. Reference clock addresses are of the form <tt>127.127.<i>t.u</i></tt>, where <i><tt>t</tt></i> is an integer denoting the clock type and <i><tt>u</tt></i> indicates the unit number in the range 0-3. While it may seem overkill, it is in fact sometimes useful to configure multiple reference clocks of the same type, in which case the unit numbers must be unique.</p>
+ <p>The <tt>server</tt> command is used to configure a reference clock, where the <i><tt>address</tt></i> argument in that command is the clock address. The <tt>key</tt>, <tt>version</tt> and <tt>ttl</tt> options are not used for reference clock support. The <tt>mode</tt> option is added for reference clock support, as described below. The <tt>prefer</tt> option can be useful to persuade the server to cherish a reference clock with somewhat more enthusiasm than other reference clocks or peers. Further information on this option can be found in the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page. The <tt>minpoll</tt> and <tt>maxpoll</tt> options have meaning only for selected clock drivers. See the individual clock driver document pages for additional information.</p>
+ <p>The <tt>fudge</tt> command is used to provide additional information for individual clock drivers and normally follows immediately after the <tt>server</tt> command. The <i><tt>address</tt></i> argument specifies the clock address. The <tt>refid</tt> and <tt>stratum</tt> options control can be used to override the defaults for the device. There are two optional device-dependent time offsets and four flags that can be included in the <tt>fudge</tt> command as well.</p>
+ <p>The stratum number of a reference clock is by default zero. Since the <tt>ntpd</tt> daemon adds one to the stratum of each peer, a primary server ordinarily displays an external stratum of one. In order to provide engineered backups, it is often useful to specify the reference clock stratum as greater than zero. The <tt>stratum</tt> option is used for this purpose. Also, in cases involving both a reference clock and a pulse-per-second (PPS) discipline signal, it is useful to specify the reference clock identifier as other than the default, depending on the driver. The <tt>refid</tt> option is used for this purpose. Except where noted, these options apply to all clock drivers.</p>
+ <h4 id="cmd">Reference Clock Commands</h4>
+ <dl>
+ <dt><tt>server 127.127.<i>t.u</i> [prefer] [mode <i>int</i>] [minpoll <i>int</i>] [maxpoll <i>int</i>]</tt>
+ <dd>This command can be used to configure reference clocks in special ways. The options are interpreted as follows:
+ <dl>
+ <dt><tt>prefer</tt>
+ <dd>Marks the reference clock as preferred. All other things being equal, this host will be chosen for synchronization among a set of correctly operating hosts. See the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page for further information.
+ <dt><tt>mode <i>int</i></tt>
+ <dd>Specifies a mode number which is interpreted in a device-specific fashion. For instance, it selects a dialing protocol in the ACTS driver and a device subtype in the <tt>parse</tt> drivers.
+ <dt><tt>minpoll <i>int</i></tt>
+ <dt><tt>maxpoll <i>int</i></tt>
+ <dd>These options specify the minimum and maximum polling interval for reference clock messages in seconds, interpreted as dual logarithms (2 ^ x). For most directly connected reference clocks, both <tt>minpoll</tt> and <tt>maxpoll</tt> default to 6 (2^16 = 64 s). For modem reference clocks, <tt>minpoll</tt> defaults to 10 (2^10 = 1024 s = 17.1 m) and <tt>maxpoll</tt> defaults to 14 (2^14 = 16384 s = 4.5 h). The allowable range is 4 (16 s) to 17 (36.4 h) inclusive.
+ </dl>
+ <dt><tt>fudge 127.127.<i>t.u</i> [time1 <i>sec</i>] [time2 <i>sec</i>] [stratum <i>int</i>] [refid <i>string</i>] [mode <i>int</i>] [flag1 0|1] [flag2 0|1] [flag3 0|1] [flag4 0|1]</tt>
+ <dd>This command can be used to configure reference clocks in special ways. It must immediately follow the <tt>server</tt> command which configures the driver. Note that the same capability is possible at run time using the <tt><a href="ntpdc.html">ntpdc</a></tt> program. The options are interpreted as follows:
+ <dl>
+ <dt><tt>time1 <i>sec</i></tt>
+ <dd>Specifies a constant to be added to the time offset produced by the driver, a fixed-point decimal number in seconds. This is used as a calibration constant to adjust the nominal time offset of a particular clock to agree with an external standard, such as a precision PPS signal. It also provides a way to correct a systematic error or bias due to serial port or operating system latencies, different cable lengths or receiver internal delay. The specified offset is in addition to the propagation delay provided by other means, such as internal DIPswitches. Where a calibration for an individual system and driver is available, an approximate correction is noted in the driver documentation pages.
+ <dd>Note: in order to facilitate calibration when more than one radio clock or PPS signal is supported, a special calibration feature is available. It takes the form of an argument to the <tt>enable</tt> command described in the <a href="miscopt.html">Miscellaneous Options</a> page and operates as described in the <a href="refclock.html">Reference Clock Drivers</a> page.
+ <dt><tt>time2 <i>secs</i></tt>
+ <dd>Specifies a fixed-point decimal number in seconds, which is interpreted in a driver-dependent way. See the descriptions of specific drivers in the <a href="refclock.html">reference clock drivers</a> page.
+ <dt><tt>stratum <i>int</i></tt>
+ <dd>Specifies the stratum number assigned to the driver, an integer between 0 and 15. This number overrides the default stratum number ordinarily assigned by the driver itself, usually zero.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies an ASCII string of from one to four characters which defines the reference identifier used by the driver. This string overrides the default identifier ordinarily assigned by the driver itself.
+ <dt><tt>mode <i>int</i></tt>
+ <dd>Specifies a mode number which is interpreted in a device-specific fashion. For instance, it selects a dialing protocol in the ACTS driver and a device subtype in the <tt>parse</tt> drivers.
+ <dt><tt>flag1 flag2 flag3 flag4</tt>
+ <dd>These four flags are used for customizing the clock driver. The interpretation of these values, and whether they are used at all, is a function of the particular clock driver. However, by convention <tt>flag4</tt> is used to enable recording monitoring data to the <tt>clockstats</tt> file configured with the <tt>filegen</tt> command. Further information on the <tt>filegen</tt> command can be found in the <a href="monopt.html">Monitoring Options</a> page.
+ </dl>
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
-</html> \ No newline at end of file
+</html>
diff --git a/contrib/ntp/html/confopt.html b/contrib/ntp/html/confopt.html
index 110083a..e2a04c4 100644
--- a/contrib/ntp/html/confopt.html
+++ b/contrib/ntp/html/confopt.html
@@ -3,6 +3,7 @@
<html>
<head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="HTML Tidy, see www.w3.org">
<title>Server Options</title>
<link href="scripts/style.css" type="text/css" rel="stylesheet">
@@ -12,7 +13,7 @@
<h3>Server Options</h3>
<img src="pic/boom3a.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
<p>The chicken is getting configuration advice.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:08 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">20:57</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 10, 2005</csobj></p>
<br clear="left">
<h4>Related Links</h4>
<script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
@@ -24,60 +25,53 @@
<li class="inline"><a href="#bug">Bugs</a>
</ul>
<hr>
- <p>Following is a description of the configuration commands in NTPv4. These commands have the same basic functions as in NTPv3 and in some cases new functions and new arguments. There are two classes of commands, configuration commands that configure a persistent association with a remote server or peer or reference clock, and auxilliary commands that specify environmental variables that control various related operations.</p>
+ <p>Following is a description of the configuration commands in NTPv4. There are two classes of commands, configuration commands that configure an association with a remote server, peer or reference clock, and auxilliary commands that specify environmental variables that control various related operations.</p>
<h4 id="cfg">Configuration Commands</h4>
- <p>The various modes are determined by the command keyword and the type of the required IP address. Addresses are classed by type as (s) a remote server or peer (IPv4 class A, B and C), (b) the broadcast address of a local interface, (m) a multicast address (IPv4 class D), or (r) a reference clock address (127.127.x.x). Note that only those options applicable to each command are listed below. Use of options not listed may not be caught as an error, but may result in some weird and even destructive behavior.</p>
- <p>If the Basic Socket Interface Extensions for IPv6 (RFC-2553) is detected, support for the IPv6 address family is generated in addition to the default support of the IPv4 address family. In a few cases, including the <tt>reslist</tt> billboard generated by <tt>ntpdc</tt>, IPv6 addresses are automatically generated. IPv6 addresses can be identified by the presence of colons &quot;:&quot; in the address field. IPv6 addresses can be used almost everywhere where IPv4 addresses can be used, with the exception of reference clock addresses, which are always IPv4.</p>
- <p>Note that in contexts where a host name is expected, a <tt>-4</tt> qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a <tt>-6</tt> qualifier forces DNS resolution to the IPv6 namespace. See IPv6 references for the equivalent classes for that address family.</p>
+ <p>The various modes are determined by the command keyword and the required IP address. Addresses are classed by type as (s) a remote server or peer (IPv4 class A, B and C), (b) the broadcast address of a local interface, (m) a multicast address (IPv4 class D), or (r) a reference clock address (127.127.x.x). The options that can be used with these commands are listed below.</p>
+ <p>If the Basic Socket Interface Extensions for IPv6 (RFC-2553) is detected, support for the IPv6 address family is generated in addition to the default support of the IPv4 address family. IPv6 addresses can be identified by the presence of colons &quot;:&quot; in the address field. IPv6 addresses can be used almost everywhere where IPv4 addresses can be used, with the exception of reference clock addresses, which are always IPv4. Note that in contexts where a host name is expected, a <tt>-4</tt> qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a <tt>-6</tt> qualifier forces DNS resolution to the IPv6 namespace.</p>
+ <p>There are three types of associations: persistent, preemptable and ephemeral. Persistent associations are mobilized by a configuration command and never demobilized. Preemptable associations, which are new to NTPv4, are mobilized by a configuration command which includes the <tt>prempt</tt> flag and are demobilized by timeout or error. Ephemeral associations are mobilized upon arrival of designated messages and demobilized by timeout or error.</p>
<dl>
- <dt><tt>server <i>address</i> [key <i>key</i> | autokey] [burst] [iburst] [version <i>version</i>] [prefer] [minpoll <i>minpoll</i>] [maxpoll <i>maxpoll</i>]</tt><br>
- <tt>peer <i>address</i> [key <i>key</i> | autokey] [version <i>version</i>] [prefer] [minpoll <i>minpoll</i>] [maxpoll <i>maxpoll</i>]</tt><br>
- <tt>broadcast <i>address</i> [key <i>key</i> | autokey] [version <i>version</i>] [minpoll <i>minpoll</i>] [ttl <i>ttl</i>]</tt><br>
- <tt>manycastclient <i>address</i> [key <i>key</i> | autokey] [version <i>version</i>] [minpoll <i>minpoll</i> [maxpoll <i>maxpoll</i>] [ttl <i>ttl</i>]</tt>
+ <dt><tt>server <i>address</i> [options ...]</tt><br>
+ <tt>peer <i>address</i> [</tt><tt>options ...]<br>
+ broadcast <i>address</i> [options ...]</tt><br>
+ <tt>manycastclient <i>address</i> [options ...]</tt>
<dd>These four commands specify the time server name or address to be used and the mode in which to operate. The <i>address</i> can be either a DNS name or a IP address in dotted-quad notation. Additional information on association behavior can be found in the <a href="assoc.html">Association Management</a> page.
- <dl>
- <dt><tt>server</tt>
- <dd>For type s and r addresses, this command mobilizes a persistent client mode association with the specified remote server or local radio clock. In this mode the local clock can synchronized to the remote server, but the remote server can never be synchronized to the local clock. This command should NOT be used for type <tt>b</tt> or <tt>m</tt> addresses.
- <dt><tt>peer</tt>
- <dd>For type s addresses (only), this command mobilizes a persistent symmetric-active mode association with the specified remote peer. In this mode the local clock can be synchronized to the remote peer or the remote peer can be synchronized to the local clock. This is useful in a network of servers where, depending on various failure scenarios, either the local or remote peer may be the better source of time. This command should NOT be used for type <tt>b</tt>, <tt>m</tt> or <tt>r</tt> addresses.
- <dt><tt>broadcast</tt>
- <dd>For type <tt>b</tt> and <tt>m</tt> addresses (only), this command mobilizes a persistent broadcast mode association. Multiple commands can be used to specify multiple local broadcast interfaces (subnets) and/or multiple multicast groups. Note that local broadcast messages go only to the interface associated with the subnet specified, but multicast messages go to all interfaces.
- <dd>In broadcast mode the local server sends periodic broadcast messages to a client population at the <i><tt>address</tt></i> specified, which is usually the broadcast address on (one of) the local network(s) or a multicast address assigned to NTP. The IANA has assigned the multicast group address IPv4 224.0.1.1 and IPv6 ff05::101 (site local) exclusively to NTP, but other nonconflicting addresses can be used to contain the messages within administrative boundaries. Ordinarily, this specification applies only to the local server operating as a sender; for operation as a broadcast client, see the <tt>broadcastclient</tt> or <tt>multicastclient</tt> commands below.
- <dt><tt>manycastclient</tt>
- <dd>For type <tt>m</tt> addresses (only), this command mobilizes a manycast client mode association for the multicast address specified. In this case a specific address must be supplied which matches the address used on the <tt>manycastserver</tt> command for the designated manycast servers. The NTP multicast address 224.0.1.1 assigned by the IANA should NOT be used, unless specific means are taken to avoid spraying large areas of the Internet with these messages and causing a possibly massive implosion of replies at the sender.
- <dd>The <tt>manycast</tt> command specifies that the local server is to operate in client mode with the remote servers that are discovered as the result of broadcast/multicast messages. The client broadcasts a request message to the group address associated with the specified <i><tt>address</tt></i> and specifically enabled servers respond to these messages. The client selects the servers providing the best time and continues as with the <tt>server</tt>command. The remaining servers are discarded as if never heard.
- </dl>
+ <dl>
+ <dt><tt>server</tt>
+ <dd>For type s and r addresses (only), this command normally mobilizes a persistent client mode association with the specified remote server or local reference clock. If the <tt>preempt</tt> flag is specified, a preemptable association is mobilized instead. In client mode the client clock can synchronize to the remote server or local reference clock, but the remote server can never be synchronized to the client clock. This command should NOT be used for type <tt>b</tt> or <tt>m</tt> addresses. <dt><tt>peer</tt>
+ <dd>For type s addresses (only), this command mobilizes a persistent symmetric-active mode association with the specified remote peer. In this mode the local clock can be synchronized to the remote peer or the remote peer can be synchronized to the local clock. This is useful in a network of servers where, depending on various failure scenarios, either the local or remote peer may be the better source of time. This command should NOT be used for type <tt>b</tt>, <tt>m</tt> or <tt>r</tt> addresses.
+ <dt><tt>broadcast</tt>
+ <dd>For type <tt>b</tt> and <tt>m</tt> addresses (only), this command mobilizes a persistent broadcast mode association. Multiple commands can be used to specify multiple local broadcast interfaces (subnets) and/or multiple multicast groups. Note that local broadcast messages go only to the interface associated with the subnet specified, but multicast messages go to all interfaces.
+ <dd>In broadcast mode the local server sends periodic broadcast messages to a client population at the <i><tt>address</tt></i> specified, which is usually the broadcast address on (one of) the local network(s) or a multicast address assigned to NTP. The IANA has assigned the multicast group address IPv4 224.0.1.1 and IPv6 ff05::101 (site local) exclusively to NTP, but other nonconflicting addresses can be used to contain the messages within administrative boundaries. Ordinarily, this specification applies only to the local server operating as a sender; for operation as a broadcast client, see the <tt>broadcastclient</tt> or <tt>multicastclient</tt> commands below.
+ <dt><tt>manycastclient</tt>
+ <dd>For type <tt>m</tt> addresses (only), this command mobilizes a preemptable manycast client mode association for the multicast group address specified. In this mode a specific address must be supplied which matches the address used on the <tt>manycastserver</tt> command for the designated manycast servers. The NTP multicast address 224.0.1.1 assigned by the IANA should NOT be used, unless specific means are taken to avoid spraying large areas of the Internet with these messages and causing a possibly massive implosion of replies at the sender.
+ <dd>The <tt>manycastclient</tt> command specifies that the host is to operate in client mode with the remote servers that are discovered as the result of broadcast/multicast messages. The client broadcasts a request message to the group address associated with the specified <i><tt>address</tt></i> and specifically enabled servers respond to these messages. The client selects the servers providing the best time and continues as with the <tt>server </tt>command. The remaining servers are discarded as if never heard.
+ </dl>
</dl>
<h4 id="opt">Command Options</h4>
<dl>
<dt><tt>autokey</tt>
- <dd>All packets sent to and received from the server or peer are to include authentication fields encrypted using the autokey scheme described in the <a href="authopt.html">Authentication Options</a> page.
- <dt><tt>burst</tt>
- <dd>When the server is reachable, send a burst of eight packets instead of the usual one. The packet spacing is normally 2 s; however, the spacing between the first and second packets can be changed with the <tt>calldelay</tt> command to allow additional time for a modem or ISDN call to complete. This is designed to improve timekeeping quality with the <tt>server</tt> command and <tt>s</tt> addresses.
- <dt><tt>iburst</tt>
- <dd>When the server is unreachable, send a burst of eight packets instead of the usual one. The packet spacing is normally 2 s; however, the spacing between the first two packets can be changed with the <tt>calldelay</tt> command to allow additional time for a modem or ISDN call to complete. This is designed to speed the initial synchronization acquisition with the <tt>server</tt> command and <tt>s</tt> addresses and when <tt>ntpd</tt> is started with the <tt>-q</tt> option.
- <dt><tt>key</tt> <i><tt>key</tt></i>
- <dd>All packets sent to and received from the server or peer are to include authentication fields encrypted using the specified <i>key</i> identifier with values from 1 to 65534, inclusive. The default is to include no encryption field.
- <dt><tt>minpoll <i>minpoll</i></tt><br>
+ <dd>All packets sent to and received from the server or peer are to include authentication fields encrypted using the autokey scheme described in the <a href="authopt.html">Authentication Options</a> page. This option is valid with all commands.<dt><tt>burst</tt>
+ <dd>When the server is reachable, send a burst of eight packets instead of the usual one. The packet spacing is normally 2 s; however, the spacing between the first and second packets can be changed with the <a href="miscopt.html"><tt>calldelay</tt></a> command to allow additional time for a modem or ISDN call to complete. This option is valid with only the <tt>server</tt> command and is a recommended option with this command when the <tt>maxpoll</tt> option is 11 or greater. <dt><tt>iburst</tt>
+ <dd>When the server is unreachable, send a burst of eight packets instead of the usual one. The packet spacing is normally 2 s; however, the spacing between the first and second packets can be changed with the <a href="miscopt.html"><tt>calldelay</tt></a> command to allow additional time for a modem or ISDN call to complete. This option is valid with only the <tt>server</tt> command and is a recommended option with this command.<dt><tt>key</tt> <i><tt>key</tt></i>
+ <dd>All packets sent to and received from the server or peer are to include authentication fields encrypted using the specified <i><tt>key</tt></i> identifier with values from 1 to 65534, inclusive. The default is to include no encryption field. This option is valid with all commands.<dt><tt>minpoll <i>minpoll</i></tt><br>
<tt>maxpoll <i>maxpoll</i></tt>
- <dd>These options specify the minimum and maximum poll intervals for NTP messages, in seconds as a power of two. The maximum poll interval defaults to 10 (1,024 s), but can be increased by the <tt>maxpoll</tt> option to an upper limit of 17 (36.4 h). The minimum poll interval defaults to 6 (64 s), but can be decreased by the <tt>minpoll</tt> option to a lower limit of 4 (16 s).
- <dt><tt>noselect</tt>
- <dd>Marks the server as unused, except for display purposes. The server is discarded by the selection algroithm.
- <dt><tt>prefer</tt>
- <dd>Marks the server as preferred. All other things being equal, this host will be chosen for synchronization among a set of correctly operating hosts. See the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page for further information.
- <dt><tt>ttl <i>ttl</i></tt>
+ <dd>These options specify the minimum and maximum poll intervals for NTP messages, in seconds as a power of two. The maximum poll interval defaults to 10 (1,024 s), but can be increased by the <tt>maxpoll</tt> option to an upper limit of 17 (36.4 h). The minimum poll interval defaults to 6 (64 s), but can be decreased by the <tt>minpoll</tt> option to a lower limit of 4 (16 s). These option are valid only with the <tt>server</tt> and <tt>peer</tt> commands.<dt><tt>noselect</tt>
+ <dd>Marks the server as unused, except for display purposes. The server is discarded by the selection algorithm. This option is valid only with the <tt>server</tt> and <tt>peer</tt> commands.<dt><tt>preempt</tt>
+ <dd>Specifies the association as preemptable rather than the default persistent. This option is valied only with the <tt>server</tt> command.<dt><tt>prefer</tt>
+ <dd>Marks the server as preferred. All other things being equal, this host will be chosen for synchronization among a set of correctly operating hosts. See the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page for further information. This option is valid only with the <tt>server</tt> and <tt>peer</tt> commands.<dt><tt>true</tt>
+ <dd>Force the association to assume truechimer status; that is, always survive the selection and clustering algorithms. This option can be used with any association, but is most useful for reference clocks with large jitter on the serial port and precision pulse-per-second (PPS) signals. Caution: this option defeats the algorithms designed to cast out falsetickers and can allow these sources to set the system clock. This option is valid only with the <tt>server</tt> and <tt>peer</tt> commands.<dt><tt>ttl <i>ttl</i></tt>
<dd>This option is used only with broadcast server and manycast client modes. It specifies the time-to-live <i><tt>ttl</tt></i> to use on broadcast server and multicast server and the maximum <i><tt>ttl</tt></i> for the expanding ring search with manycast client packets. Selection of the proper value, which defaults to 127, is something of a black art and should be coordinated with the network administrator.
<dt><tt>version <i>version</i></tt>
- <dd>Specifies the version number to be used for outgoing NTP packets. Versions 1-4 are the choices, with version 4 the default.
+ <dd>Specifies the version number to be used for outgoing NTP packets. Versions 1-4 are the choices, with version 4 the default. This option is valid only with the <tt>server,</tt> <tt>peer</tt> and <tt>broadcast</tt> commands.
</dl>
<h4 id="aux">Auxilliary Commands</h4>
<dl>
- <dt><tt>broadcastclient</tt>
- <dd>This command enables reception of broadcast server messages to any local interface (type b) address. Upon receiving a message for the first time, the broadcast 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 broadcast 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 <a href="authopt.html">Authentication Options</a> page.
- <dt><tt>manycastserver <i>address</i> [...]</tt>
- <dd>This command enables reception of manycast client messages to the multicast group address(es) (type m) specified. At least one address is required, but The NTP multicast address 224.0.1.1 assigned by the IANA should NOT be used, unless specific means are taken to limit the span of the reply and avoid a possibly massive implosion at the original sender. 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 <a href="authopt.html">Authentication Options</a> page.
- <dt><tt>multicastclient [<i>address</i>] [...]</tt>
- <dd>This command enables 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 <a href="authopt.html">Authentication Options</a> page.
+ <dt><tt>broadcastclient [novolley]</tt>
+ <dd>This command enables reception of broadcast server messages to any local interface (type <tt>b</tt>) address. Ordinarily, upon receiving a message for the first time, the broadcast client measures the nominal server propagation delay using a brief client/server exchange with the server, after which it continues in listen-only mode. If the <tt>novolley</tt> keyword is present, the exchange is not used and the value specified in the <tt>broadcastdelay</tt> command is used or, if the <tt>broadcastdelay</tt> command is not used, the default 4.0 ms. 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 <a href="authopt.html">Authentication Options</a> page. Note that the <tt>novolley</tt> keyword is incompatible with public key authentication.<dt><tt>manycastserver <i>address</i> [...]</tt>
+ <dd>This command enables reception of manycast client messages to the multicast group address(es) (type <tt>m</tt>) specified. At least one address is required. The NTP multicast address 224.0.1.1 assigned by the IANA should NOT be used, unless specific means are taken to limit the span of the reply and avoid a possibly massive implosion at the original sender. 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 <a href="authopt.html">Authentication Options</a> page.
+ <dt><tt>multicastclient <i>address</i> [...]</tt>
+ <dd>This command enables reception of multicast server messages to the multicast group address(es) (type <tt>m</tt>) 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 <a href="authopt.html">Authentication Options</a> page.
</dl>
<h4 id="bug">Bugs</h4>
<p>The syntax checking is not picky; some combinations of ridiculous and even hilarious options and modes may not be detected.</p>
@@ -85,4 +79,4 @@
<script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/contrib/ntp/html/copyright.html b/contrib/ntp/html/copyright.html
index 50ef51a..471069a 100644
--- a/contrib/ntp/html/copyright.html
+++ b/contrib/ntp/html/copyright.html
@@ -2,26 +2,27 @@
<html>
- <head>
- <title>Copyright Notice</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Copyright Notice</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Copyright Notice</h3>
- <img src="pic/sheepb.jpg" alt="jpg" align="left"> &quot;Clone me,&quot; says Dolly sheepishly
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">15:44</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="240">Tuesday, July 15, 2003</csobj></p>
- <br clear="left">
- <hr>
- <p>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.<br>
- </p>
- <pre>
+ <body>
+ <h3>Copyright Notice</h3>
+ <img src="pic/sheepb.jpg" alt="jpg" align="left"> &quot;Clone me,&quot; says Dolly sheepishly
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">20:31</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="285">Saturday, January 06, 2007</csobj></p>
+ <br clear="left">
+ <hr>
+ <p>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.<br>
+ </p>
+ <pre>
***********************************************************************
* *
-* Copyright (c) David L. Mills 1992-2003 *
+* Copyright (c) David L. Mills 1992-2008 *
* *
* Permission to use, copy, modify, and distribute this software and *
-* its documentation for any purpose and without fee is hereby *
+* its documentation for any purpose with or without fee is hereby *
* granted, provided that the above copyright notice appears in all *
* copies and that both the copyright notice and this permission *
* notice appear in supporting documentation, and that the name *
@@ -34,62 +35,62 @@
* *
***********************************************************************
</pre>
- <p>The following individuals contributed in part to the Network Time Protocol Distribution Version 4 and are acknowledged as authors of this work.</p>
- <ol>
- <li class="inline"><a href="mailto:%20mark_andrews@isc.org">Mark Andrews &lt;mark_andrews@isc.org&gt;</a> Leitch atomic clock controller
- <li class="inline"><a href="mailto:%20altmeier@atlsoft.de">Bernd Altmeier &lt;altmeier@atlsoft.de&gt;</a> hopf Elektronik serial line and PCI-bus devices
- <li class="inline"><a href="mailto:%20vbais@mailman1.intel.co">Viraj Bais &lt;vbais@mailman1.intel.com&gt;</a> and <a href="mailto:%20kirkwood@striderfm.intel.com">Clayton Kirkwood &lt;kirkwood@striderfm.intel.com&gt;</a> port to WindowsNT 3.5
- <li class="inline"><a href="mailto:%20michael.barone@lmco.com">Michael Barone &lt;michael,barone@lmco.com&gt;</a> GPSVME fixes
- <li class="inline"><a href="mailto:%20Jean-Francois.Boudreault@viagenie.qc.ca">Jean-Francois Boudreault &lt;Jean-Francois.Boudreault@viagenie.qc.ca&gt;</a>IPv6 support
- <li class="inline"><a href="mailto:%20karl@owl.HQ.ileaf.com">Karl Berry &lt;karl@owl.HQ.ileaf.com&gt;</a> syslog to file option
- <li class="inline"><a href="mailto:%20greg.brackley@bigfoot.com">Greg Brackley &lt;greg.brackley@bigfoot.com&gt;</a> Major rework of WINNT port. Clean up recvbuf and iosignal code into separate modules.
- <li class="inline"><a href="mailto:%20Marc.Brett@westgeo.com">Marc Brett &lt;Marc.Brett@westgeo.com&gt;</a> Magnavox GPS clock driver
- <li class="inline"><a href="mailto:%20Piete.Brooks@cl.cam.ac.uk">Piete Brooks &lt;Piete.Brooks@cl.cam.ac.uk&gt;</a> MSF clock driver, Trimble PARSE support
- <li class="inline"><a href="mailto:%20reg@dwf.com">Reg Clemens &lt;reg@dwf.com&gt;</a> Oncore driver (Current maintainer)
- <li class="inline"><a href="mailto:%20clift@ml.csiro.au">Steve Clift &lt;clift@ml.csiro.au&gt;</a> OMEGA clock driver
- <li class="inline"><a href="mailto:casey@csc.co.za">Casey Crellin &lt;casey@csc.co.za&gt;</a> vxWorks (Tornado) port and help with target configuration
- <li class="inline"><a href="mailto:%20Sven_Dietrich@trimble.COM">Sven Dietrich &lt;sven_dietrich@trimble.com&gt;</a> Palisade reference clock driver, NT adj. residuals, integrated Greg's Winnt port.
- <li class="inline"><a href="mailto:%20dundas@salt.jpl.nasa.gov">John A. Dundas III &lt;dundas@salt.jpl.nasa.gov&gt;</a> Apple A/UX port
- <li class="inline"><a href="mailto:%20duwe@immd4.informatik.uni-erlangen.de">Torsten Duwe &lt;duwe@immd4.informatik.uni-erlangen.de&gt;</a> Linux port
- <li class="inline"><a href="mailto:%20dennis@mrbill.canet.ca">Dennis Ferguson &lt;dennis@mrbill.canet.ca&gt;</a> foundation code for NTP Version 2 as specified in RFC-1119
- <li class="inline"><a href="mailto:%20jhay@icomtek.csir.co.za">John Hay &lt;jhay@@icomtek.csir.co.za&gt;</a> IPv6 support and testing
- <li class="inline"><a href="mailto:%20glenn@herald.usask.ca">Glenn Hollinger &lt;glenn@herald.usask.ca&gt;</a> GOES clock driver
- <li class="inline"><a href="mailto:%20iglesias@uci.edu">Mike Iglesias &lt;iglesias@uci.edu&gt;</a> DEC Alpha port
- <li class="inline"><a href="mailto:%20jagubox.gsfc.nasa.gov">Jim Jagielski &lt;jim@jagubox.gsfc.nasa.gov&gt;</a> A/UX port
- <li class="inline"><a href="mailto:%20jbj@chatham.usdesign.com">Jeff Johnson &lt;jbj@chatham.usdesign.com&gt;</a> massive prototyping overhaul
- <li class="inline"><a href="mailto:Hans.Lambermont@nl.origin-it.com">Hans Lambermont &lt;Hans.Lambermont@nl.origin-it.com&gt;</a> or <a href="mailto:H.Lambermont@chello.nl">&lt;H.Lambermont@chello.nl&gt;</a> ntpsweep
- <li class="inline"><a href="mailto:%20phk@FreeBSD.ORG">Poul-Henning Kamp &lt;phk@FreeBSD.ORG&gt;</a> Oncore driver (Original author)
- <li class="inline"><a href="http://www4.informatik.uni-erlangen.de/%7ekardel">Frank Kardel</a> <a href="mailto:%20Frank.Kardel@informatik.uni-erlangen.de">&lt;Frank.Kardel@informatik.uni-erlangen.de&gt;</a> PARSE &lt;GENERIC&gt; driver (14 reference clocks), STREAMS modules for PARSE, support scripts, syslog cleanup
- <li class="inline"><a href="mailto:%20jones@hermes.chpc.utexas.edu">William L. Jones &lt;jones@hermes.chpc.utexas.edu&gt;</a> RS/6000 AIX modifications, HPUX modifications
- <li class="inline"><a href="mailto:%20dkatz@cisco.com">Dave Katz &lt;dkatz@cisco.com&gt;</a> RS/6000 AIX port
- <li class="inline"><a href="mailto:%20leres@ee.lbl.gov">Craig Leres &lt;leres@ee.lbl.gov&gt;</a> 4.4BSD port, ppsclock, Magnavox GPS clock driver
- <li class="inline"><a href="mailto:%20lindholm@ucs.ubc.ca">George Lindholm &lt;lindholm@ucs.ubc.ca&gt;</a> SunOS 5.1 port
- <li class="inline"><a href="mailto:%20louie@ni.umd.edu">Louis A. Mamakos &lt;louie@ni.umd.edu&gt;</a> MD5-based authentication
- <li class="inline"><a href="mailto:%20thorinn@diku.dk">Lars H. Mathiesen &lt;thorinn@diku.dk&gt;</a> adaptation of foundation code for Version 3 as specified in RFC-1305
- <li class="inline"><a href="mailto:%20mayer@ntp.org">Danny Mayer &lt;mayer@ntp.org&gt;</a>Network I/O, Windows Port, Code Maintenance
- <li class="inline"><a href="mailto:%20mills@udel.edu">David L. Mills &lt;mills@udel.edu&gt;</a> Version 4 foundation: clock discipline, authentication, precision kernel; clock drivers: Spectracom, Austron, Arbiter, Heath, ATOM, ACTS, KSI/Odetics; audio clock drivers: CHU, WWV/H, IRIG
- <li class="inline"><a href="mailto:%20moeller@gwdgv1.dnet.gwdg.de">Wolfgang Moeller &lt;moeller@gwdgv1.dnet.gwdg.de&gt;</a> VMS port
- <li class="inline"><a href="mailto:%20mogul@pa.dec.com">Jeffrey Mogul &lt;mogul@pa.dec.com&gt;</a> ntptrace utility
- <li class="inline"><a href="mailto:%20tmoore@fievel.daytonoh.ncr.com">Tom Moore &lt;tmoore@fievel.daytonoh.ncr.com&gt;</a> i386 svr4 port
- <li class="inline"><a href="mailto:%20kamal@whence.com">Kamal A Mostafa &lt;kamal@whence.com&gt;</a> SCO OpenServer port
- <li class="inline"><a href="mailto:%20derek@toybox.demon.co.uk">Derek Mulcahy &lt;derek@toybox.demon.co.uk&gt;</a> and <a href="mailto:%20d@hd.org">Damon Hart-Davis &lt;d@hd.org&gt;</a> ARCRON MSF clock driver
- <li class="inline"><a href="mailto:%20Rainer.Pruy@informatik.uni-erlangen.de">Rainer Pruy &lt;Rainer.Pruy@informatik.uni-erlangen.de&gt;</a> monitoring/trap scripts, statistics file handling
- <li class="inline"><a href="mailto:%20dirce@zk3.dec.com">Dirce Richards &lt;dirce@zk3.dec.com&gt;</a> Digital UNIX V4.0 port
- <li class="inline"><a href="mailto:%20wsanchez@apple.com">Wilfredo S&aacute;nchez &lt;wsanchez@apple.com&gt;</a> added support for NetInfo
- <li class="inline"><a href="mailto:%20mrapple@quack.kfu.com">Nick Sayer &lt;mrapple@quack.kfu.com&gt;</a> SunOS streams modules
- <li class="inline"><a href="mailto:%20jack@innovativeinternet.com">Jack Sasportas &lt;jack@innovativeinternet.com&gt;</a> Saved a Lot of space on the stuff in the html/pic/ subdirectory
- <li class="inline"><a href="mailto:%20schnitz@unipress.com">Ray Schnitzler &lt;schnitz@unipress.com&gt;</a> Unixware1 port
- <li class="inline"><a href="mailto:%20shields@tembel.org">Michael Shields &lt;shields@tembel.org&gt;</a> USNO clock driver
- <li class="inline"><a href="mailto:%20pebbles.jpl.nasa.gov">Jeff Steinman &lt;jss@pebbles.jpl.nasa.gov&gt;</a> Datum PTS clock driver
- <li class="inline"><a href="mailto:%20harlan@pfcs.com">Harlan Stenn &lt;harlan@pfcs.com&gt;</a> GNU automake/autoconfigure makeover, various other bits (see the ChangeLog)
- <li class="inline"><a href="mailto:%20ken@sdd.hp.com">Kenneth Stone &lt;ken@sdd.hp.com&gt;</a> HP-UX port
- <li class="inline"><a href="mailto:%20ajit@ee.udel.edu">Ajit Thyagarajan &lt;ajit@ee.udel.edu&gt;</a>IP multicast/anycast support
- <li class="inline"><a href="mailto:%20tsuruoka@nc.fukuoka-u.ac.jp">Tomoaki TSURUOKA &lt;tsuruoka@nc.fukuoka-u.ac.jp&gt;</a>TRAK clock driver
- <li class="inline"><a href="mailto:%20vixie@vix.com">Paul A Vixie &lt;vixie@vix.com&gt;</a> TrueTime GPS driver, generic TrueTime clock driver
- <li class="inline"><a href="mailto:%20Ulrich.Windl@rz.uni-regensburg.de">Ulrich Windl &lt;Ulrich.Windl@rz.uni-regensburg.de&gt;</a> corrected and validated HTML documents according to the HTML DTD
- </ol>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <p>The following individuals contributed in part to the Network Time Protocol Distribution Version 4 and are acknowledged as authors of this work.</p>
+ <ol>
+ <li class="inline"><a href="mailto:%20mark_andrews@isc.org">Mark Andrews &lt;mark_andrews@isc.org&gt;</a> Leitch atomic clock controller
+ <li class="inline"><a href="mailto:%20altmeier@atlsoft.de">Bernd Altmeier &lt;altmeier@atlsoft.de&gt;</a> hopf Elektronik serial line and PCI-bus devices
+ <li class="inline"><a href="mailto:%20vbais@mailman1.intel.co">Viraj Bais &lt;vbais@mailman1.intel.com&gt;</a> and <a href="mailto:%20kirkwood@striderfm.intel.com">Clayton Kirkwood &lt;kirkwood@striderfm.intel.com&gt;</a> port to WindowsNT 3.5
+ <li class="inline"><a href="mailto:%20michael.barone@lmco.com">Michael Barone &lt;michael,barone@lmco.com&gt;</a> GPSVME fixes
+ <li class="inline"><a href="mailto:%20Jean-Francois.Boudreault@viagenie.qc.ca">Jean-Francois Boudreault &lt;Jean-Francois.Boudreault@viagenie.qc.ca&gt;</a>IPv6 support
+ <li class="inline"><a href="mailto:%20karl@owl.HQ.ileaf.com">Karl Berry &lt;karl@owl.HQ.ileaf.com&gt;</a> syslog to file option
+ <li class="inline"><a href="mailto:%20greg.brackley@bigfoot.com">Greg Brackley &lt;greg.brackley@bigfoot.com&gt;</a> Major rework of WINNT port. Clean up recvbuf and iosignal code into separate modules.
+ <li class="inline"><a href="mailto:%20Marc.Brett@westgeo.com">Marc Brett &lt;Marc.Brett@westgeo.com&gt;</a> Magnavox GPS clock driver
+ <li class="inline"><a href="mailto:%20Piete.Brooks@cl.cam.ac.uk">Piete Brooks &lt;Piete.Brooks@cl.cam.ac.uk&gt;</a> MSF clock driver, Trimble PARSE support
+ <li class="inline"><a href="mailto:%20reg@dwf.com">Reg Clemens &lt;reg@dwf.com&gt;</a> Oncore driver (Current maintainer)
+ <li class="inline"><a href="mailto:%20clift@ml.csiro.au">Steve Clift &lt;clift@ml.csiro.au&gt;</a> OMEGA clock driver
+ <li class="inline"><a href="mailto:casey@csc.co.za">Casey Crellin &lt;casey@csc.co.za&gt;</a> vxWorks (Tornado) port and help with target configuration
+ <li class="inline"><a href="mailto:%20Sven_Dietrich@trimble.COM">Sven Dietrich &lt;sven_dietrich@trimble.com&gt;</a> Palisade reference clock driver, NT adj. residuals, integrated Greg's Winnt port.
+ <li class="inline"><a href="mailto:%20dundas@salt.jpl.nasa.gov">John A. Dundas III &lt;dundas@salt.jpl.nasa.gov&gt;</a> Apple A/UX port
+ <li class="inline"><a href="mailto:%20duwe@immd4.informatik.uni-erlangen.de">Torsten Duwe &lt;duwe@immd4.informatik.uni-erlangen.de&gt;</a> Linux port
+ <li class="inline"><a href="mailto:%20dennis@mrbill.canet.ca">Dennis Ferguson &lt;dennis@mrbill.canet.ca&gt;</a> foundation code for NTP Version 2 as specified in RFC-1119
+ <li class="inline"><a href="mailto:%20jhay@icomtek.csir.co.za">John Hay &lt;jhay@@icomtek.csir.co.za&gt;</a> IPv6 support and testing
+ <li class="inline"><a href="mailto:%20glenn@herald.usask.ca">Glenn Hollinger &lt;glenn@herald.usask.ca&gt;</a> GOES clock driver
+ <li class="inline"><a href="mailto:%20iglesias@uci.edu">Mike Iglesias &lt;iglesias@uci.edu&gt;</a> DEC Alpha port
+ <li class="inline"><a href="mailto:%20jagubox.gsfc.nasa.gov">Jim Jagielski &lt;jim@jagubox.gsfc.nasa.gov&gt;</a> A/UX port
+ <li class="inline"><a href="mailto:%20jbj@chatham.usdesign.com">Jeff Johnson &lt;jbj@chatham.usdesign.com&gt;</a> massive prototyping overhaul
+ <li class="inline"><a href="mailto:Hans.Lambermont@nl.origin-it.com">Hans Lambermont &lt;Hans.Lambermont@nl.origin-it.com&gt;</a> or <a href="mailto:H.Lambermont@chello.nl">&lt;H.Lambermont@chello.nl&gt;</a> ntpsweep
+ <li class="inline"><a href="mailto:%20phk@FreeBSD.ORG">Poul-Henning Kamp &lt;phk@FreeBSD.ORG&gt;</a> Oncore driver (Original author)
+ <li class="inline"><a href="http://www4.informatik.uni-erlangen.de/%7ekardel">Frank Kardel</a> <a href="mailto:%20kardel (at) ntp (dot) org">&lt;kardel (at) ntp (dot) org&gt;</a> PARSE &lt;GENERIC&gt; driver (>14 reference clocks), STREAMS modules for PARSE, support scripts, syslog cleanup, dynamic interface handling
+ <li class="inline"><a href="mailto:%20jones@hermes.chpc.utexas.edu">William L. Jones &lt;jones@hermes.chpc.utexas.edu&gt;</a> RS/6000 AIX modifications, HPUX modifications
+ <li class="inline"><a href="mailto:%20dkatz@cisco.com">Dave Katz &lt;dkatz@cisco.com&gt;</a> RS/6000 AIX port
+ <li class="inline"><a href="mailto:%20leres@ee.lbl.gov">Craig Leres &lt;leres@ee.lbl.gov&gt;</a> 4.4BSD port, ppsclock, Magnavox GPS clock driver
+ <li class="inline"><a href="mailto:%20lindholm@ucs.ubc.ca">George Lindholm &lt;lindholm@ucs.ubc.ca&gt;</a> SunOS 5.1 port
+ <li class="inline"><a href="mailto:%20louie@ni.umd.edu">Louis A. Mamakos &lt;louie@ni.umd.edu&gt;</a> MD5-based authentication
+ <li class="inline"><a href="mailto:%20thorinn@diku.dk">Lars H. Mathiesen &lt;thorinn@diku.dk&gt;</a> adaptation of foundation code for Version 3 as specified in RFC-1305
+ <li class="inline"><a href="mailto:%20mayer@ntp.org">Danny Mayer &lt;mayer@ntp.org&gt;</a>Network I/O, Windows Port, Code Maintenance
+ <li class="inline"><a href="mailto:%20mills@udel.edu">David L. Mills &lt;mills@udel.edu&gt;</a> Version 4 foundation: clock discipline, authentication, precision kernel; clock drivers: Spectracom, Austron, Arbiter, Heath, ATOM, ACTS, KSI/Odetics; audio clock drivers: CHU, WWV/H, IRIG
+ <li class="inline"><a href="mailto:%20moeller@gwdgv1.dnet.gwdg.de">Wolfgang Moeller &lt;moeller@gwdgv1.dnet.gwdg.de&gt;</a> VMS port
+ <li class="inline"><a href="mailto:%20mogul@pa.dec.com">Jeffrey Mogul &lt;mogul@pa.dec.com&gt;</a> ntptrace utility
+ <li class="inline"><a href="mailto:%20tmoore@fievel.daytonoh.ncr.com">Tom Moore &lt;tmoore@fievel.daytonoh.ncr.com&gt;</a> i386 svr4 port
+ <li class="inline"><a href="mailto:%20kamal@whence.com">Kamal A Mostafa &lt;kamal@whence.com&gt;</a> SCO OpenServer port
+ <li class="inline"><a href="mailto:%20derek@toybox.demon.co.uk">Derek Mulcahy &lt;derek@toybox.demon.co.uk&gt;</a> and <a href="mailto:%20d@hd.org">Damon Hart-Davis &lt;d@hd.org&gt;</a> ARCRON MSF clock driver
+ <li class="inline"><a href="mailto:%20Rainer.Pruy@informatik.uni-erlangen.de">Rainer Pruy &lt;Rainer.Pruy@informatik.uni-erlangen.de&gt;</a> monitoring/trap scripts, statistics file handling
+ <li class="inline"><a href="mailto:%20dirce@zk3.dec.com">Dirce Richards &lt;dirce@zk3.dec.com&gt;</a> Digital UNIX V4.0 port
+ <li class="inline"><a href="mailto:%20wsanchez@apple.com">Wilfredo S&aacute;nchez &lt;wsanchez@apple.com&gt;</a> added support for NetInfo
+ <li class="inline"><a href="mailto:%20mrapple@quack.kfu.com">Nick Sayer &lt;mrapple@quack.kfu.com&gt;</a> SunOS streams modules
+ <li class="inline"><a href="mailto:%20jack@innovativeinternet.com">Jack Sasportas &lt;jack@innovativeinternet.com&gt;</a> Saved a Lot of space on the stuff in the html/pic/ subdirectory
+ <li class="inline"><a href="mailto:%20schnitz@unipress.com">Ray Schnitzler &lt;schnitz@unipress.com&gt;</a> Unixware1 port
+ <li class="inline"><a href="mailto:%20shields@tembel.org">Michael Shields &lt;shields@tembel.org&gt;</a> USNO clock driver
+ <li class="inline"><a href="mailto:%20pebbles.jpl.nasa.gov">Jeff Steinman &lt;jss@pebbles.jpl.nasa.gov&gt;</a> Datum PTS clock driver
+ <li class="inline"><a href="mailto:%20harlan@pfcs.com">Harlan Stenn &lt;harlan@pfcs.com&gt;</a> GNU automake/autoconfigure makeover, various other bits (see the ChangeLog)
+ <li class="inline"><a href="mailto:%20ken@sdd.hp.com">Kenneth Stone &lt;ken@sdd.hp.com&gt;</a> HP-UX port
+ <li class="inline"><a href="mailto:%20ajit@ee.udel.edu">Ajit Thyagarajan &lt;ajit@ee.udel.edu&gt;</a>IP multicast/anycast support
+ <li class="inline"><a href="mailto:%20tsuruoka@nc.fukuoka-u.ac.jp">Tomoaki TSURUOKA &lt;tsuruoka@nc.fukuoka-u.ac.jp&gt;</a>TRAK clock driver
+ <li class="inline"><a href="mailto:%20vixie@vix.com">Paul A Vixie &lt;vixie@vix.com&gt;</a> TrueTime GPS driver, generic TrueTime clock driver
+ <li class="inline"><a href="mailto:%20Ulrich.Windl@rz.uni-regensburg.de">Ulrich Windl &lt;Ulrich.Windl@rz.uni-regensburg.de&gt;</a> corrected and validated HTML documents according to the HTML DTD
+ </ol>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html>
diff --git a/contrib/ntp/html/debug.html b/contrib/ntp/html/debug.html
index c5e0766..c732c42 100644
--- a/contrib/ntp/html/debug.html
+++ b/contrib/ntp/html/debug.html
@@ -2,37 +2,38 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>NTP Debugging Techniques</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>NTP Debugging Techniques</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>NTP Debugging Techniques</h3>
- <img src="pic/pogo.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
- <p>We make house calls and bring our own bugs.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="97">10:23 PM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="266">Tuesday, August 05, 2003</csobj></p>
- <br clear="left">
- <h4>More Help</h4>
- <script type="text/javascript" language="javascript" src="scripts/links12.txt"></script>
- <hr>
- <p>Once the NTP software distribution has been compiled and installed and the configuration file constructed, the next step is to verify correct operation and fix any bugs that may result. Usually, the command line that starts the daemon is included in the system startup file, so it is executed only at system boot time; however, the daemon can be stopped and restarted from root at any time. Usually, no command-line arguments are required, unless special actions described in the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a> page are required. Once started, the daemon will begin sending and receiving messages, as specified in the configuration file.</p>
- <h4>Initial Startup</h4>
- <p>When started for the first time, the frequency file, usually called <tt>ntp.drift</tt>, has not yet been created. The daemon switches to a special training routine designed to quickly determine the system clock frequency offset of the particular machine. The routine first measures the current clock offset and sets the clock, then continues for up to twenty minutes before measuring the clock offset, which might involve setting the clock again. The two measurements are used to compute the initial frequency offset and the daemon continues in regular operation, during which the frequency offset is continuously updated. Once each hour the daemon writes the current frequency offset to the <tt>ntp.drift</tt> file. When restarted after that, the daemon reads the frequency offset from the <tt>ntp.drift</tt> file and avoids the training routine.</p>
- <p>Note that the daemon requires at least four packet exchanges when first started in any case. This is required in order for the mitigation algorithms to insure valid and accurate measurements and defend against network delay spikes and accidental or malicious errors induced by the servers selected in the configuration file. It normally takes less than four minutes to set the clock when first started, but this can be reduced to less than ten seconds with the <tt>iburst</tt> configuration option.</p>
- <p>The best way to verify correct operation is using the <a href="ntpq.html"><tt>ntpq</tt> - standard NTP query program</a> and <a href="ntpdc.html"><tt>ntpdc</tt> - special NTP query program</a> utility programs, either on the server itself or from another machine elsewhere in the network. The <tt>ntpq</tt> program implements the management functions specified in the NTP specification <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305c.ps">RFC-1305, Appendix A</a>. The <tt>ntpdc</tt> program implements additional functions not provided in the standard. Both programs can be used to inspect the state variables defined in the specification and, in the case of <tt>ntpdc</tt>, additional ones intended for serious debugging. In addition, the <tt>ntpdc</tt> program can be used to selectively reconfigure and enable or disable some functions while the daemon is running.</p>
- <p>In extreme cases with elusive bugs, the daemon can operate in two modes, depending on the presence of the <tt>-d</tt> command-line debug switch. If not present, the daemon detaches from the controlling terminal and proceeds autonomously. If one or more <tt>-d</tt> switches are present, the daemon does not detach and generates special output useful for debugging. In general, interpretation of this output requires reference to the sources. However, a single <tt>-d</tt> does produce only mildly cryptic output and can be very useful in finding problems with configuration and network troubles. With a little experience, the volume of output can be reduced by piping the output to <tt>grep</tt> and specifying the keyword of the trace you want to see.</p>
- <p>Some problems are immediately apparent when the daemon first starts running. The most common of these are the lack of a UDP port for NTP (123) in the Unix <tt>/etc/services</tt> file (or equivalent in some systems). <b>Note that NTP does not use TCP in any form. Also note that NTP&nbsp;requires 123 for both source and destination ports.</b> These facts should be pointed out to firewall administrators.</p>
- <p>Other problems are apparent in the system log, which ordinarily shows the startup banner, some cryptic initialization data and the computed precision value. Error messages at startup and during regular operation are sent to the system log. In real emergencies the daemon will sent a terminal error message to the system log and then cease operation.</p>
- <p>The next most common problem is incorrect DNS names. Check that each DNS name used in the configuration file exists and that the address responds to the Unix <tt>ping</tt> command. The Unix <tt>traceroute</tt> or Windows <tt>tracert</tt> utility can be used to verify a partial or complete path exists. Most problems reported to the NTP&nbsp;newsgroup are not NTP&nbsp;problems, but problems with the network or firewall configuration.</p>
- <p>When first started, the daemon polls the servers listed in the configuration file at 64-s intervals. In order to allow a sufficient number of samples for the NTP algorithms to reliably discriminate between truechimer servers and possible falsetickers, at least four valid messages from at least one server or peer listed in the configuration file is required before the daemon can set the clock. However, if the difference between the client time and server time is greater than the panic threshold, which defaults to 1000 s, the daemon sends a message to the system log and shuts down without setting the clock. It is necessary to set the local clock to within the panic threshold first, either manually by eyeball and wristwatch and the Unix <tt>date</tt> command, or by the <tt>ntpdate</tt> or <tt>ntpd -q</tt> commands. The panic threshold can be changed by the <tt>tinker panic</tt> command discribed on the <a href="miscopt.html">Miscellaneous Options</a> page. The panic threshold can be disabled for the first measurement by the <tt>-g</tt> command line option described on the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a> page.</p>
- <p>If the difference between local time and server time is less than the panic threshold but greater than the step threshold, which defaults to 128 ms, the daemon will perform a step adjustment; otherwise, it will gradually slew the clock to the nominal time. Step adjustments are extremely rare in ordinary operation, usually as the result of reboot or hardware failure. The step threshold can be changed to 300 s using the <tt>-x</tt> command line option described on the <tt>ntpd</tt> page. This is usually sufficient to avoid a step after reboot or when the operator has set the system clock to within five minutes by eyeball-and-wristwatch. In extreme cases the step threshold can be changed by the <tt>tinker step</tt> command discribed on the <a href="miscopt.html">Miscellaneous Options</a> page. If set to zero, the clock will never be stepped; however, users should understand the implications for doing this in a distributed data network where all processing must be tightly synchronized. See the <a href="http://www.eecis.udel.edu/%7emills/leap.html">NTP Timescale and Leap Seconds</a> page for further information. If a step adjustment is made, the clock discipline algorithm will start all over again, requiring another round of at least four messages as before. This is necessary so that all servers and peers operate on the same set of time values.</p>
- <p>The clock discipline algorithm is designed to avoid large noise spikes that might occur on a congested network or access line. If an offset sample exceeds the step threshold, it is ignored and a timer started. If a later sample is below the step threshold, the counter is reset and operation continues normally. However, if the counter is greater than the stepout interval, which defaults to 900 s, the next sample will step the time as directed. The stepout threshold can be changed by the <tt>tinker stepout</tt> command discribed on the Miscellaneous Options page.</p>
- <p>If for some reason the hardware clock oscillator frequency error is very large, say over 400 PPM, the time offset when the daemon is started for the first time may increase over time until exceeding the step threshold, which requires a frequency adjustment and another step correction. However, due to provisions that reduce vulnerability to noise spikes, the second correction will not be done until after the stepout threshold. When the frequency error is very large, it may take a number of cycles like this until converging to the nominal frequency correction and writing the <tt>ntp.drift</tt> file. If the frequency error is over 500 PPM, convergence will never occur and occasional step adjustments will occur indefinitely.</p>
- <h4>Verifying Correct Operation</h4>
- <p>After starting the daemon, run the <tt>ntpq</tt> program using the <tt>-n</tt> switch, which will avoid possible distractions due to name resolution problems. Use the <tt>pe</tt> command to display a billboard showing the status of configured peers and possibly other clients poking the daemon. After operating for a few minutes, the display should be something like:</p>
- <pre>
+ <body>
+ <h3>NTP Debugging Techniques</h3>
+ <img src="pic/pogo.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
+ <p>We make house calls and bring our own bugs.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:38</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>More Help</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links12.txt"></script>
+ <hr>
+ <p>Once the NTP software distribution has been compiled and installed and the configuration file constructed, the next step is to verify correct operation and fix any bugs that may result. Usually, the command line that starts the daemon is included in the system startup file, so it is executed only at system boot time; however, the daemon can be stopped and restarted from root at any time. Usually, no command-line arguments are required, unless special actions described in the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a> page are required. Once started, the daemon will begin sending and receiving messages, as specified in the configuration file.</p>
+ <h4>Initial Startup</h4>
+ <p>When started for the first time, the frequency file, usually called <tt>ntp.drift</tt>, has not yet been created. The daemon switches to a special training routine designed to quickly determine the system clock frequency offset of the particular machine. The routine first measures the current clock offset and sets the clock, then continues for up to twenty minutes before measuring the clock offset, which might involve setting the clock again. The two measurements are used to compute the initial frequency offset and the daemon continues in regular operation, during which the frequency offset is continuously updated. Once each hour the daemon writes the current frequency offset to the <tt>ntp.drift</tt> file. When restarted after that, the daemon reads the frequency offset from the <tt>ntp.drift</tt> file and avoids the training routine.</p>
+ <p>Note that the daemon requires at least four packet exchanges when first started in any case. This is required in order for the mitigation algorithms to insure valid and accurate measurements and defend against network delay spikes and accidental or malicious errors induced by the servers selected in the configuration file. It normally takes less than four minutes to set the clock when first started, but this can be reduced to less than ten seconds with the <tt>iburst</tt> configuration option.</p>
+ <p>The best way to verify correct operation is using the <a href="ntpq.html"><tt>ntpq</tt> - standard NTP query program</a> and <a href="ntpdc.html"><tt>ntpdc</tt> - special NTP query program</a> utility programs, either on the server itself or from another machine elsewhere in the network. The <tt>ntpq</tt> program implements the management functions specified in the NTP specification <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305c.ps">RFC-1305, Appendix A</a>. The <tt>ntpdc</tt> program implements additional functions not provided in the standard. Both programs can be used to inspect the state variables defined in the specification and, in the case of <tt>ntpdc</tt>, additional ones intended for serious debugging. In addition, the <tt>ntpdc</tt> program can be used to selectively reconfigure and enable or disable some functions while the daemon is running.</p>
+ <p>In extreme cases with elusive bugs, the daemon can operate in two modes, depending on the presence of the <tt>-d</tt> command-line debug switch. If not present, the daemon detaches from the controlling terminal and proceeds autonomously. If one or more <tt>-d</tt> switches are present, the daemon does not detach and generates special output useful for debugging. In general, interpretation of this output requires reference to the sources. However, a single <tt>-d</tt> does produce only mildly cryptic output and can be very useful in finding problems with configuration and network troubles. With a little experience, the volume of output can be reduced by piping the output to <tt>grep</tt> and specifying the keyword of the trace you want to see.</p>
+ <p>Some problems are immediately apparent when the daemon first starts running. The most common of these are the lack of a UDP port for NTP (123) in the Unix <tt>/etc/services</tt> file (or equivalent in some systems). <b>Note that NTP does not use TCP in any form. Also note that NTP&nbsp;requires 123 for both source and destination ports.</b> These facts should be pointed out to firewall administrators.</p>
+ <p>Other problems are apparent in the system log, which ordinarily shows the startup banner, some cryptic initialization data and the computed precision value. Error messages at startup and during regular operation are sent to the system log. In real emergencies the daemon will sent a terminal error message to the system log and then cease operation.</p>
+ <p>The next most common problem is incorrect DNS names. Check that each DNS name used in the configuration file exists and that the address responds to the Unix <tt>ping</tt> command. The Unix <tt>traceroute</tt> or Windows <tt>tracert</tt> utility can be used to verify a partial or complete path exists. Most problems reported to the NTP&nbsp;newsgroup are not NTP&nbsp;problems, but problems with the network or firewall configuration.</p>
+ <p>When first started, the daemon polls the servers listed in the configuration file at 64-s intervals. In order to allow a sufficient number of samples for the NTP algorithms to reliably discriminate between truechimer servers and possible falsetickers, at least four valid messages from at least one server or peer listed in the configuration file is required before the daemon can set the clock. However, if the difference between the client time and server time is greater than the panic threshold, which defaults to 1000 s, the daemon sends a message to the system log and shuts down without setting the clock. It is necessary to set the local clock to within the panic threshold first, either manually by eyeball and wristwatch and the Unix <tt>date</tt> command, or by the <tt>ntpdate</tt> or <tt>ntpd -q</tt> commands. The panic threshold can be changed by the <tt>tinker panic</tt> command discribed on the <a href="miscopt.html">Miscellaneous Options</a> page. The panic threshold can be disabled for the first measurement by the <tt>-g</tt> command line option described on the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a> page.</p>
+ <p>If the difference between local time and server time is less than the panic threshold but greater than the step threshold, which defaults to 128 ms, the daemon will perform a step adjustment; otherwise, it will gradually slew the clock to the nominal time. Step adjustments are extremely rare in ordinary operation, usually as the result of reboot or hardware failure. The step threshold can be changed to 300 s using the <tt>-x</tt> command line option described on the <tt>ntpd</tt> page. This is usually sufficient to avoid a step after reboot or when the operator has set the system clock to within five minutes by eyeball-and-wristwatch. In extreme cases the step threshold can be changed by the <tt>tinker step</tt> command discribed on the <a href="miscopt.html">Miscellaneous Options</a> page. If set to zero, the clock will never be stepped; however, users should understand the implications for doing this in a distributed data network where all processing must be tightly synchronized. See the <a href="http://www.eecis.udel.edu/%7emills/leap.html">NTP Timescale and Leap Seconds</a> page for further information. If a step adjustment is made, the clock discipline algorithm will start all over again, requiring another round of at least four messages as before. This is necessary so that all servers and peers operate on the same set of time values.</p>
+ <p>The clock discipline algorithm is designed to avoid large noise spikes that might occur on a congested network or access line. If an offset sample exceeds the step threshold, it is ignored and a timer started. If a later sample is below the step threshold, the counter is reset and operation continues normally. However, if the counter is greater than the stepout interval, which defaults to 900 s, the next sample will step the time as directed. The stepout threshold can be changed by the <tt>tinker stepout</tt> command discribed on the Miscellaneous Options page.</p>
+ <p>If for some reason the hardware clock oscillator frequency error is very large, say over 400 PPM, the time offset when the daemon is started for the first time may increase over time until exceeding the step threshold, which requires a frequency adjustment and another step correction. However, due to provisions that reduce vulnerability to noise spikes, the second correction will not be done until after the stepout threshold. When the frequency error is very large, it may take a number of cycles like this until converging to the nominal frequency correction and writing the <tt>ntp.drift</tt> file. If the frequency error is over 500 PPM, convergence will never occur and occasional step adjustments will occur indefinitely.</p>
+ <h4>Verifying Correct Operation</h4>
+ <p>After starting the daemon, run the <tt>ntpq</tt> program using the <tt>-n</tt> switch, which will avoid possible distractions due to name resolution problems. Use the <tt>pe</tt> command to display a billboard showing the status of configured peers and possibly other clients poking the daemon. After operating for a few minutes, the display should be something like:</p>
+ <pre>
ntpq&gt; pe
remote refid st t when poll reach delay offset jitter
=====================================================================
@@ -41,49 +42,49 @@ ntpq&gt; pe
+uclpc.cairn.net pogo.udel.edu 2 u 37 64 177 212.111 -0.551 0.187
*pogo.udel.edu .GPS1. 1 u 95 128 377 0.607 0.123 0.027
</pre>
- <p>The host names or addresses shown in the <tt>remote</tt> column correspond to the server and peer entries listed in the configuration file; however, the DNS names might not agree if the names listed are not the canonical DNS names. IPv4 addresses are shown in dotted quad notation, while IPv6 addresses are shown alarmingly. The <tt>refid</tt> column shows the current source of synchronization, while the <tt>st</tt> column reveals the stratum, <tt>t</tt> the type (<tt>u</tt> = unicast, <tt>m</tt> = multicast, <tt>l</tt> = local, <tt>-</tt> = don't know), and <tt>poll</tt> the poll interval in seconds. The <tt>when</tt> column shows the time since the peer was last heard in seconds, while the <tt>reach</tt> column shows the status of the reachability register (see RFC-1305) in octal. The remaining entries show the latest delay, offset and jitter in milliseconds. Note that in NTP Version 4 what used to be the <tt>dispersion</tt> column has been replaced by the <tt>jitter</tt> column.</p>
- <p>As per the NTP specification RFC-1305, when the <tt>stratum</tt> is between 0 and 15 for a NTP server, the <tt>refid</tt> field shows the server DNS name or, if not found, the IP address in dotted-quad. When the <tt>stratum</tt> is any value for a reference clock, this field shows the identification string assigned to the clock. However, until the client has synchronized to a server, or when the <tt>stratum</tt> for a NTP server is 0 (appears as 16 in the billboards), the status cannot be determined. As a help in debugging, the <tt>refid</tt> field is set to a four-character string called the kiss code. The current kiss codes are as as follows.</p>
- <p>Peer Kiss Codes</p>
- <p><tt>ACST</tt></p>
- <dl>
- <dd>The association belongs to a anycast server.
- <dt><tt>AUTH</tt>
- <dd>Server authentication failed. Please wait while the association is restarted.
- <dt><tt>AUTO</tt>
- <dd>Autokey sequence failed. Please wait while the association is restarted.
- <dt><tt>BCST</tt>
- <dd>The association belongs to a broadcast server.
- <dt><tt>CRYP</tt>
- <dd>Cryptographic authentication or identification failed. The details should be in the system log file or the <tt>cryptostats</tt> statistics file, if configured. No further messages will be sent to the server.
- <dt><tt>DENY</tt>
- <dd>Access denied by remote server. No further messages will be sent to the server.
- <dt><tt>DROP</tt>
- <dd>Lost peer in symmetric mode. Please wait while the association is restarted.
- <dt><tt>RSTR</tt>
- <dd>Access denied due to local policy. No further messages will be sent to the server.
- <dt><tt>INIT</tt>
- <dd>The association has not yet synchronized for the first time.
- <dt><tt>MCST</tt>
- <dd>The association belongs to a manycast server.
- <dt><tt>NKEY</tt>
- <dd>No key found. Either the key was never installed or is not trusted.
- <dt><tt>RATE</tt>
- <dd>Rate exceeded. The server has temporarily denied access because the client exceeded the rate threshold.
- <dt><tt>RMOT</tt>
- <dd>Somebody is tinkering with the association from a remote host running <tt>ntpdc</tt>. Not to worry unless some rascal has stolen your keys.
- <dt><tt>STEP</tt>
- <dd>A step change in system time has occurred, but the association has not yet resynchronized.
- </dl>
- <p>System Kiss Codes</p>
- <dl>
- <dt><tt>INIT</tt>
- <dd>The system clock has not yet synchronized for the first time.
- <dt><tt>STEP</tt>
- <dd>A step change in system time has occurred, but the system clock has not yet resynchronized.
- </dl>
- <p>The tattletale symbol at the left margin displays the synchronization status of each peer. The currently selected peer is marked <tt>*</tt>, while additional peers designated acceptable for synchronization are marked <tt>+</tt>. Peers marked <tt>*</tt> and <tt>+</tt> are included in the weighted average computation to set the local clock; the data produced by peers marked with other symbols are discarded. See the <tt>ntpq</tt> page for the meaning of these symbols.</p>
- <p>Additional details for each peer separately can be determined by the following procedure. First, use the <tt>as</tt> command to display an index of association identifiers, such as</p>
- <pre>
+ <p>The host names or addresses shown in the <tt>remote</tt> column correspond to the server and peer entries listed in the configuration file; however, the DNS names might not agree if the names listed are not the canonical DNS names. IPv4 addresses are shown in dotted quad notation, while IPv6 addresses are shown alarmingly. The <tt>refid</tt> column shows the current source of synchronization, while the <tt>st</tt> column reveals the stratum, <tt>t</tt> the type (<tt>u</tt> = unicast, <tt>m</tt> = multicast, <tt>l</tt> = local, <tt>-</tt> = don't know), and <tt>poll</tt> the poll interval in seconds. The <tt>when</tt> column shows the time since the peer was last heard in seconds, while the <tt>reach</tt> column shows the status of the reachability register (see RFC-1305) in octal. The remaining entries show the latest delay, offset and jitter in milliseconds. Note that in NTP Version 4 what used to be the <tt>dispersion</tt> column has been replaced by the <tt>jitter</tt> column.</p>
+ <p>As per the NTP specification RFC-1305, when the <tt>stratum</tt> is between 0 and 15 for a NTP server, the <tt>refid</tt> field shows the server DNS name or, if not found, the IP address in dotted-quad. When the <tt>stratum</tt> is any value for a reference clock, this field shows the identification string assigned to the clock. However, until the client has synchronized to a server, or when the <tt>stratum</tt> for a NTP server is 0 (appears as 16 in the billboards), the status cannot be determined. As a help in debugging, the <tt>refid</tt> field is set to a four-character string called the kiss code. The current kiss codes are as as follows.</p>
+ <p>Peer Kiss Codes</p>
+ <p><tt>ACST</tt></p>
+ <dl>
+ <dd>The association belongs to a anycast server.
+ <dt><tt>AUTH</tt>
+ <dd>Server authentication failed. Please wait while the association is restarted.
+ <dt><tt>AUTO</tt>
+ <dd>Autokey sequence failed. Please wait while the association is restarted.
+ <dt><tt>BCST</tt>
+ <dd>The association belongs to a broadcast server.
+ <dt><tt>CRYP</tt>
+ <dd>Cryptographic authentication or identification failed. The details should be in the system log file or the <tt>cryptostats</tt> statistics file, if configured. No further messages will be sent to the server.
+ <dt><tt>DENY</tt>
+ <dd>Access denied by remote server. No further messages will be sent to the server.
+ <dt><tt>DROP</tt>
+ <dd>Lost peer in symmetric mode. Please wait while the association is restarted.
+ <dt><tt>RSTR</tt>
+ <dd>Access denied due to local policy. No further messages will be sent to the server.
+ <dt><tt>INIT</tt>
+ <dd>The association has not yet synchronized for the first time.
+ <dt><tt>MCST</tt>
+ <dd>The association belongs to a manycast server.
+ <dt><tt>NKEY</tt>
+ <dd>No key found. Either the key was never installed or is not trusted.
+ <dt><tt>RATE</tt>
+ <dd>Rate exceeded. The server has temporarily denied access because the client exceeded the rate threshold.
+ <dt><tt>RMOT</tt>
+ <dd>Somebody is tinkering with the association from a remote host running <tt>ntpdc</tt>. Not to worry unless some rascal has stolen your keys.
+ <dt><tt>STEP</tt>
+ <dd>A step change in system time has occurred, but the association has not yet resynchronized.
+ </dl>
+ <p>System Kiss Codes</p>
+ <dl>
+ <dt><tt>INIT</tt>
+ <dd>The system clock has not yet synchronized for the first time.
+ <dt><tt>STEP</tt>
+ <dd>A step change in system time has occurred, but the system clock has not yet resynchronized.
+ </dl>
+ <p>The tattletale symbol at the left margin displays the synchronization status of each peer. The currently selected peer is marked <tt>*</tt>, while additional peers designated acceptable for synchronization are marked <tt>+</tt>. Peers marked <tt>*</tt> and <tt>+</tt> are included in the weighted average computation to set the local clock; the data produced by peers marked with other symbols are discarded. See the <tt>ntpq</tt> page for the meaning of these symbols.</p>
+ <p>Additional details for each peer separately can be determined by the following procedure. First, use the <tt>as</tt> command to display an index of association identifiers, such as</p>
+ <pre>
ntpq&gt; as
ind assID status conf reach auth condition last_event cnt
===========================================================
@@ -92,8 +93,8 @@ ind assID status conf reach auth condition last_event cnt
3 50254 f414 yes yes ok candidat reachable 1
4 50255 f614 yes yes ok sys.peer reachable 1
</pre>
- <p>Each line in this billboard is associated with the corresponding line in the <tt>pe</tt> billboard above. The <tt>assID</tt> shows the unique identifier for each mobilized association, while the <tt>status</tt> column shows the peer status word in hex, as defined in the NTP specification. Next, use the <tt>rv</tt> command and the respective <tt>assID</tt> identifier to display a detailed synopsis for the selected peer, such as</p>
- <pre>
+ <p>Each line in this billboard is associated with the corresponding line in the <tt>pe</tt> billboard above. The <tt>assID</tt> shows the unique identifier for each mobilized association, while the <tt>status</tt> column shows the peer status word in hex, as defined in the NTP specification. Next, use the <tt>rv</tt> command and the respective <tt>assID</tt> identifier to display a detailed synopsis for the selected peer, such as</p>
+ <pre>
ntpq&gt; rv 50253
status=f414 reach, conf, auth, sel_candidat, 1 event, event_reach,
srcadr=saicpc-isiepc2.cairn.net, srcport=123, dstadr=140.173.1.46,
@@ -111,12 +112,12 @@ filtdisp= 0.51 1.47 2.46 3.45 4.40 5.34 6.33 7.28,
hostname=&quot;miro.time.saic.com&quot;, signature=md5WithRSAEncryption, flags=0x83f01, initsequence=61, initkey=0x287b649c,
timestamp=3172053041
</pre>
- <p>A detailed explanation of the fields in this billboard are beyond the scope of this discussion; however, most variables defined in the NTP Version 3 specification RFC-1305 are available along with others defined for NTPv4 on the <tt>ntpq</tt> page. This particular example was chosen to illustrate probably the most complex configuration involving symmetric modes and public-key cryptography. As the result of debugging experience, the names and values of these variables may change from time to time.</p>
- <p>A useful indicator of miscellaneous problems is the <tt>flash</tt> value, which reveals the state of the various sanity tests on incoming packets. There are currently 12 bits, one for each test, numbered from the right, which is for test 1. If the test fails, the corresponding bit is set to one and zero otherwise. If any bit is set following each processing step, the packet is discarded. The meaning of each test is described on the <tt>ntpq</tt> page.</p>
- <p>The three lines identified as <tt>filtdelay</tt>, <tt>filtoffset</tt> and <tt>filtdisp</tt> reveal the roundtrip delay, clock offset and dispersion for each of the last eight measurement rounds, all in milliseconds. Note that the dispersion, which is an estimate of the error, increases as the age of the sample increases. From these data, it is usually possible to determine the incidence of severe packet loss, network congestion, and unstable local clock oscillators. There are no hard and fast rules here, since every case is unique; however, if one or more of the rounds show large values or change radically from one round to another, the network is probably congested or lossy.</p>
- <p>Once the daemon has set the local clock, it will continuously track the discrepancy between local time and NTP time and adjust the local clock accordingly. There are two components of this adjustment, time and frequency. These adjustments are automatically determined by the clock discipline algorithm, which functions as a hybrid phase/frequency feedback loop. The behavior of this algorithm is carefully controlled to minimize residual errors due to network jitter and frequency variations of the local clock hardware oscillator that normally occur in practice. However, when started for the first time, the algorithm may take some time to converge on the intrinsic frequency error of the host machine.</p>
- <p>The state of the local clock itself can be determined using the <tt>rv</tt> command (without the argument), such as</p>
- <pre>
+ <p>A detailed explanation of the fields in this billboard are beyond the scope of this discussion; however, most variables defined in the NTP Version 3 specification RFC-1305 are available along with others defined for NTPv4 on the <tt>ntpq</tt> page. This particular example was chosen to illustrate probably the most complex configuration involving symmetric modes and public-key cryptography. As the result of debugging experience, the names and values of these variables may change from time to time.</p>
+ <p>A useful indicator of miscellaneous problems is the <tt>flash</tt> value, which reveals the state of the various sanity tests on incoming packets. There are currently 12 bits, one for each test, numbered from the right, which is for test 1. If the test fails, the corresponding bit is set to one and zero otherwise. If any bit is set following each processing step, the packet is discarded. The meaning of each test is described on the <tt>ntpq</tt> page.</p>
+ <p>The three lines identified as <tt>filtdelay</tt>, <tt>filtoffset</tt> and <tt>filtdisp</tt> reveal the roundtrip delay, clock offset and dispersion for each of the last eight measurement rounds, all in milliseconds. Note that the dispersion, which is an estimate of the error, increases as the age of the sample increases. From these data, it is usually possible to determine the incidence of severe packet loss, network congestion, and unstable local clock oscillators. There are no hard and fast rules here, since every case is unique; however, if one or more of the rounds show large values or change radically from one round to another, the network is probably congested or lossy.</p>
+ <p>Once the daemon has set the local clock, it will continuously track the discrepancy between local time and NTP time and adjust the local clock accordingly. There are two components of this adjustment, time and frequency. These adjustments are automatically determined by the clock discipline algorithm, which functions as a hybrid phase/frequency feedback loop. The behavior of this algorithm is carefully controlled to minimize residual errors due to network jitter and frequency variations of the local clock hardware oscillator that normally occur in practice. However, when started for the first time, the algorithm may take some time to converge on the intrinsic frequency error of the host machine.</p>
+ <p>The state of the local clock itself can be determined using the <tt>rv</tt> command (without the argument), such as</p>
+ <pre>
ntpq&gt; rv
status=0644 leap_none, sync_ntp, 4 events, event_peer/strat_chg,
version=&quot;ntpd 4.0.99j4-r Fri Jul 7 23:38:17 GMT 2000 (1)&quot;,
@@ -131,41 +132,41 @@ flags=0x80011, hostkey=3171372095, refresh=3172016539
cert=&quot;grundoon.udel.edu grundoon.udel.edu 0x3 3233600829&quot;
cert=&quot;whimsy.udel.edu whimsy.udel.edu 0x5 3233682156&quot;
</pre>
- <p>An explanation about most of these variables is in the RFC-1305 specification. The most useful ones include <tt>clock</tt>, which shows when the clock was last adjusted, and <tt>reftime</tt>, which shows when the server clock of <tt>refid</tt> was last adjusted. The <tt>version</tt>, <tt>processor</tt> and <tt>system</tt> values are very helpful when included in bug reports. The mean millisecond time offset (<tt>phase</tt>) and deviation (<tt>jitter</tt>) monitor the clock quality, while the mean PPM frequency offset (<tt>frequency</tt>) and deviation (<tt>stability</tt>) monitor the clock stability and serve as a useful diagnostic tool. It has been the experience of NTP operators over the years that these data represent useful environment and hardware alarms. If the motherboard fan freezes up or some hardware bit sticks, the system clock is usually the first to notice it.</p>
- <p>Among the new variables added for NTP Version 4 are the <tt>hostname</tt>, <tt>signature</tt>, <tt>flags, hostkey, refresh </tt>and<tt> cert</tt>, which are used for the Autokey public-key cryptography described on the <a href="authopt.html">Authentication Options</a> page. The numeric values show the filestamps, in NTP seconds, that the associated media files were created. These are useful in diagnosing problems with cryptographic key consistency and ordering principles.</p>
- <p>When nothing seems to happen in the <tt>pe</tt> billboard after some minutes, there may be a network problem. One common network problem is an access controlled router on the path to the selected peer or an access controlled server using methods described on the <a href="accopt.html">Access Control Options</a> page. Another common problem is that the server is down or running in unsynchronized mode due to a local problem. Use the <tt>ntpq</tt> program to spy on the server variables in the same way you can spy on your own.</p>
- <p>Normally, the daemon will adjust the local clock in small steps in such a way that system and user programs are unaware of its operation. The adjustment process operates continuously unless the apparent clock error exceeds the step threshold for a period longer than the stepout threshold, which for most Internet paths is a very rare event. If the event is simply an outlyer due to an occasional network delay spike, the correction is simply discarded; however, if the apparent time error persists for longer than the stepout threshold of about 17 minutes, the local clock is stepped or slewed to the new value as directed. This behavior is designed to resist errors due to severely congested network paths, as well as errors due to confused radio clocks upon the epoch of a leap second.</p>
- <h4>Large Frequency Errors</h4>
- <p>The frequency tolerance of computer clock oscillators can vary widely, which can put a strain on the daemon's ability to compensate for the intrinsic frequency error. While the daemon can handle frequency errors up to 500 parts-per-million (PPM), or 43 seconds per day, values much above 100 PPM reduce the headroom and increase the time to learn the particular value and record it in the <tt>ntp.drift</tt> file. In extreme cases before the particular oscillator frequency error has been determined, the residual system time offsets can sweep from one extreme to the other of the 128-ms tracking window only for the behavior to repeat at 900-s intervals until the measurements have converged.</p>
- <p>In order to determine if excessive frequency error is a problem, observe the nominal <tt>filtoffset</tt> values for a number of rounds and divide by the poll interval. If the result is something approaching 500 PPM, there is a good chance that NTP will not work properly until the frequency error is reduced by some means. A common cause is the hardware time-of-year (TOY) clock chip, which must be disabled when NTP disciplines the software clock. For some systems this can be done using the <tt><a href="tickadj.html">tickadj</a></tt> utility and the <tt>-s</tt> command line argument. For other systems this can be done using a command in the system startup file.</p>
- <p>If the TOY chip is not the cause, the problem may be that the hardware clock frequency may simply be too slow or two fast. In some systems this might require tweaking a trimmer capacitor on the motherboard. For other systems the clock frequency can be adjusted in increments of 100 PPM using the <tt>tickadj</tt> utility and the <tt>-t</tt> command line argument. Note that the <tt>tickadj</tt> alters certain kernel variables and, while the utility attempts to figure out an acceptable way to do this, there are many cases where <tt>tickadj</tt> is incompatible with a running kernel.</p>
- <h4>Access Controls</h4>
- <p>Provisions are included in <tt>ntpd</tt> for access controls which deflect unwanted traffic from selected hosts or networks. The controls described on the <a href="accopt.html">Access Control Options</a> include detailed packet filter operations based on source address and address mask. Normally, filtered packets are dropped without notice other than to increment tally counters. However, the server can be configured to send a &quot;kiss-o'-death&quot; (KOD) packet to the client either when explicitly configured or when cryptographic authentication fails for some reason. The client association is permanently disabled, the access denied bit (TEST4) is set in the flash variable and a message is sent to the system log.</p>
- <p>The access control provisions include a limit on the packet rate from a host or network. If an incoming packet exceeds the limit, it is dropped and a KOD sent to the source. If this occurs after the client association has synchronized, the association is not disabled, but a message is sent to the system log. See the <a href="accopt.html">Access Control Options</a> page for further informatin.</p>
- <h4>Large Delay Variations</h4>
- <p>In some reported scenarios an access line may show low to moderate network delays during some period of the day and moderate to high delays during other periods. Often the delay on one direction of transmission dominates, which can result in large time offset errors, sometimes in the range up to a few seconds. It is not usually convenient to run <tt>ntpd</tt> throughout the day in such scenarios, since this could result in several time steps, especially if the condition persists for greater than the stepout threshold.</p>
- <p>Specific provisions have been built into <tt>ntpd</tt> to cope with these problems. The scheme is called &quot;huff-'n-puff and is described on the <a href="miscopt.html">Miscellaneous Options</a> page. An alternative approach in such scenarios is first to calibrate the local clock frequency error by running <tt>ntpd</tt> in continuous mode during the quiet interval and let it write the frequency to the <tt>ntp.drift</tt> file. Then, run <tt>ntpd -q</tt> from a cron job each day at some time in the quiet interval. In systems with the nanokernel or microkernel performance enhancements, including Solaris, Tru64, Linux and FreeBSD, the kernel continuously disciplines the frequency so that the residual correction produced by <tt>ntpd</tt> is usually less than a few milliseconds.</p>
- <h4>Cryptographic Authentication</h4>
- <p>Reliable source authentication requires the use of symmetric key or public key cryptography, as described on the <a href="authopt.html">Authentication Options</a> page. In symmetric key cryptography servers and clients share session keys contained in a secret key file In public key cryptography, which requires the OpenSSL software library, the server has a private key, never shared, and a public key with unrestricted distribution. The cryptographic media required are produced by the <a href="keygen.html"><tt>ntp-keygen</tt></a> program.</p>
- <p>Problems with symmetric key authentication are usually due to mismatched keys or improper use of the <tt>trustedkey</tt> command. A simple way to check for problems is to use the trace facility, which is enabled using the <tt>ntpd -d</tt> command line. As each packet is received a trace line is displayed which shows the authentication status in the <tt>auth</tt> field. A status of 1 indicates the packet was successful authenticated; otherwise it has failed.</p>
- <p>A common misconception is the implication of the <tt>auth</tt> bit in the <tt>enable</tt> and <tt>disable</tt> commands. <b>This bit does not affect authentication in any way other than to enable or disable mobilization of a new persistent association in broadcast/multicast client, manycast client or symmetric passive modes.</b> If enabled, which is the default, these associations require authentication; if not, an association is mobilized even if not authenticated. Users are cautioned that running with authentication disabled is very dangerous, since an intruder can easily strike up an association and inject false time values.</p>
- <p>Public key cryptography is supported in NTPv4 using the Autokey protocol, which is described in briefings on the NTP Project page linked from www.ntp.org. Development of this protocol is mature and the <tt>ntpd</tt> implementation is basically complete. Autokey version 2, which is the latest and current version, includes provisions to hike certificate trails, operate as certificate authorities and verify identity using challenge/response identification schemes. Further details of the protocol are on the <a href="authopt.html">Authentication Options</a> page. Common problems with configuration and key generation are mismatched key files, broken links and missing or broken random seed file.</p>
- <p>As in the symmetric key cryptography case, the trace facility is a good way to verify correct operation. A statistics file <tt>cryptostats</tt> records protocol transactions and error messages. The daemon requires a random seed file, public/private key file and a valid certificate file; otherwise it exits immediately with a message to the system log. As each file is loaded a trace message appears with its filestamp. There are a number of checks to insure that only consistent data are used and that the certificate is valid. When the protocol is in operation a number of checks are done to verify the server has the expected credentials and its filestamps and timestamps are consistent. Errors found are reported using NTP control and monitoring protocol traps with extended trap codes shown in the Authentication Options page.</p>
- <p>To assist debugging every NTP extension field is displayed in the trace along with the Autokey operation code. Every extension field carrying a verified signature is identified and displayed along with filestamp and timestamp where meaningful. In all except broadcast/multicast client mode, correct operation of the protocol is confirmed by the absence of extension fields and an <tt>auth</tt> value of one. It is normal in broadcast/multicast client mode that the broadcast server use one extension field to show the host name, status word and association ID.</p>
- <h4>Debugging Checklist</h4>
- <p>If the <tt>ntpq</tt> or <tt>ntpdc</tt> programs do not show that messages are being received by the daemon or that received messages do not result in correct synchronization, verify the following:</p>
- <ol>
- <li>Verify the <tt>/etc/services</tt> file host machine is configured to accept UDP packets on the NTP port 123. NTP is specifically designed to use UDP and does not respond to TCP.
- <li>Check the system log for <tt>ntpd</tt> messages about configuration errors, name-lookup failures or initialization problems. Common system log messages are summarized on the <a href="msyslog.html"><tt>ntpd</tt> System Log Messages</a> page. Check to be sure that only one copy of <tt>ntpd</tt> is running.
- <li>Verify using <tt>ping</tt> or other utility that packets actually do make the round trip between the client and server. Verify using <tt>nslookup</tt> or other utility that the DNS server names do exist and resolve to valid Internet addresses.
+ <p>An explanation about most of these variables is in the RFC-1305 specification. The most useful ones include <tt>clock</tt>, which shows when the clock was last adjusted, and <tt>reftime</tt>, which shows when the server clock of <tt>refid</tt> was last adjusted. The <tt>version</tt>, <tt>processor</tt> and <tt>system</tt> values are very helpful when included in bug reports. The mean millisecond time offset (<tt>phase</tt>) and deviation (<tt>jitter</tt>) monitor the clock quality, while the mean PPM frequency offset (<tt>frequency</tt>) and deviation (<tt>stability</tt>) monitor the clock stability and serve as a useful diagnostic tool. It has been the experience of NTP operators over the years that these data represent useful environment and hardware alarms. If the motherboard fan freezes up or some hardware bit sticks, the system clock is usually the first to notice it.</p>
+ <p>Among the new variables added for NTP Version 4 are the <tt>hostname</tt>, <tt>signature</tt>, <tt>flags, hostkey, refresh </tt>and<tt> cert</tt>, which are used for the Autokey public-key cryptography described on the <a href="authopt.html">Authentication Options</a> page. The numeric values show the filestamps, in NTP seconds, that the associated media files were created. These are useful in diagnosing problems with cryptographic key consistency and ordering principles.</p>
+ <p>When nothing seems to happen in the <tt>pe</tt> billboard after some minutes, there may be a network problem. One common network problem is an access controlled router on the path to the selected peer or an access controlled server using methods described on the <a href="accopt.html">Access Control Options</a> page. Another common problem is that the server is down or running in unsynchronized mode due to a local problem. Use the <tt>ntpq</tt> program to spy on the server variables in the same way you can spy on your own.</p>
+ <p>Normally, the daemon will adjust the local clock in small steps in such a way that system and user programs are unaware of its operation. The adjustment process operates continuously unless the apparent clock error exceeds the step threshold for a period longer than the stepout threshold, which for most Internet paths is a very rare event. If the event is simply an outlyer due to an occasional network delay spike, the correction is simply discarded; however, if the apparent time error persists for longer than the stepout threshold of about 17 minutes, the local clock is stepped or slewed to the new value as directed. This behavior is designed to resist errors due to severely congested network paths, as well as errors due to confused radio clocks upon the epoch of a leap second.</p>
+ <h4>Large Frequency Errors</h4>
+ <p>The frequency tolerance of computer clock oscillators can vary widely, which can put a strain on the daemon's ability to compensate for the intrinsic frequency error. While the daemon can handle frequency errors up to 500 parts-per-million (PPM), or 43 seconds per day, values much above 100 PPM reduce the headroom and increase the time to learn the particular value and record it in the <tt>ntp.drift</tt> file. In extreme cases before the particular oscillator frequency error has been determined, the residual system time offsets can sweep from one extreme to the other of the 128-ms tracking window only for the behavior to repeat at 900-s intervals until the measurements have converged.</p>
+ <p>In order to determine if excessive frequency error is a problem, observe the nominal <tt>filtoffset</tt> values for a number of rounds and divide by the poll interval. If the result is something approaching 500 PPM, there is a good chance that NTP will not work properly until the frequency error is reduced by some means. A common cause is the hardware time-of-year (TOY) clock chip, which must be disabled when NTP disciplines the software clock. For some systems this can be done using the <tt><a href="tickadj.html">tickadj</a></tt> utility and the <tt>-s</tt> command line argument. For other systems this can be done using a command in the system startup file.</p>
+ <p>If the TOY chip is not the cause, the problem may be that the hardware clock frequency may simply be too slow or two fast. In some systems this might require tweaking a trimmer capacitor on the motherboard. For other systems the clock frequency can be adjusted in increments of 100 PPM using the <tt>tickadj</tt> utility and the <tt>-t</tt> command line argument. Note that the <tt>tickadj</tt> alters certain kernel variables and, while the utility attempts to figure out an acceptable way to do this, there are many cases where <tt>tickadj</tt> is incompatible with a running kernel.</p>
+ <h4>Access Controls</h4>
+ <p>Provisions are included in <tt>ntpd</tt> for access controls which deflect unwanted traffic from selected hosts or networks. The controls described on the <a href="accopt.html">Access Control Options</a> include detailed packet filter operations based on source address and address mask. Normally, filtered packets are dropped without notice other than to increment tally counters. However, the server can be configured to send a &quot;kiss-o'-death&quot; (KOD) packet to the client either when explicitly configured or when cryptographic authentication fails for some reason. The client association is permanently disabled, the access denied bit (TEST4) is set in the flash variable and a message is sent to the system log.</p>
+ <p>The access control provisions include a limit on the packet rate from a host or network. If an incoming packet exceeds the limit, it is dropped and a KOD sent to the source. If this occurs after the client association has synchronized, the association is not disabled, but a message is sent to the system log. See the <a href="accopt.html">Access Control Options</a> page for further informatin.</p>
+ <h4>Large Delay Variations</h4>
+ <p>In some reported scenarios an access line may show low to moderate network delays during some period of the day and moderate to high delays during other periods. Often the delay on one direction of transmission dominates, which can result in large time offset errors, sometimes in the range up to a few seconds. It is not usually convenient to run <tt>ntpd</tt> throughout the day in such scenarios, since this could result in several time steps, especially if the condition persists for greater than the stepout threshold.</p>
+ <p>Specific provisions have been built into <tt>ntpd</tt> to cope with these problems. The scheme is called &quot;huff-'n-puff and is described on the <a href="miscopt.html">Miscellaneous Options</a> page. An alternative approach in such scenarios is first to calibrate the local clock frequency error by running <tt>ntpd</tt> in continuous mode during the quiet interval and let it write the frequency to the <tt>ntp.drift</tt> file. Then, run <tt>ntpd -q</tt> from a cron job each day at some time in the quiet interval. In systems with the nanokernel or microkernel performance enhancements, including Solaris, Tru64, Linux and FreeBSD, the kernel continuously disciplines the frequency so that the residual correction produced by <tt>ntpd</tt> is usually less than a few milliseconds.</p>
+ <h4>Cryptographic Authentication</h4>
+ <p>Reliable source authentication requires the use of symmetric key or public key cryptography, as described on the <a href="authopt.html">Authentication Options</a> page. In symmetric key cryptography servers and clients share session keys contained in a secret key file In public key cryptography, which requires the OpenSSL software library, the server has a private key, never shared, and a public key with unrestricted distribution. The cryptographic media required are produced by the <a href="keygen.html"><tt>ntp-keygen</tt></a> program.</p>
+ <p>Problems with symmetric key authentication are usually due to mismatched keys or improper use of the <tt>trustedkey</tt> command. A simple way to check for problems is to use the trace facility, which is enabled using the <tt>ntpd -d</tt> command line. As each packet is received a trace line is displayed which shows the authentication status in the <tt>auth</tt> field. A status of 1 indicates the packet was successful authenticated; otherwise it has failed.</p>
+ <p>A common misconception is the implication of the <tt>auth</tt> bit in the <tt>enable</tt> and <tt>disable</tt> commands. <b>This bit does not affect authentication in any way other than to enable or disable mobilization of a new persistent association in broadcast/multicast client, manycast client or symmetric passive modes.</b> If enabled, which is the default, these associations require authentication; if not, an association is mobilized even if not authenticated. Users are cautioned that running with authentication disabled is very dangerous, since an intruder can easily strike up an association and inject false time values.</p>
+ <p>Public key cryptography is supported in NTPv4 using the Autokey protocol, which is described in briefings on the NTP Project page linked from www.ntp.org. Development of this protocol is mature and the <tt>ntpd</tt> implementation is basically complete. Autokey version 2, which is the latest and current version, includes provisions to hike certificate trails, operate as certificate authorities and verify identity using challenge/response identification schemes. Further details of the protocol are on the <a href="authopt.html">Authentication Options</a> page. Common problems with configuration and key generation are mismatched key files, broken links and missing or broken random seed file.</p>
+ <p>As in the symmetric key cryptography case, the trace facility is a good way to verify correct operation. A statistics file <tt>cryptostats</tt> records protocol transactions and error messages. The daemon requires a random seed file, public/private key file and a valid certificate file; otherwise it exits immediately with a message to the system log. As each file is loaded a trace message appears with its filestamp. There are a number of checks to insure that only consistent data are used and that the certificate is valid. When the protocol is in operation a number of checks are done to verify the server has the expected credentials and its filestamps and timestamps are consistent. Errors found are reported using NTP control and monitoring protocol traps with extended trap codes shown in the Authentication Options page.</p>
+ <p>To assist debugging every NTP extension field is displayed in the trace along with the Autokey operation code. Every extension field carrying a verified signature is identified and displayed along with filestamp and timestamp where meaningful. In all except broadcast/multicast client mode, correct operation of the protocol is confirmed by the absence of extension fields and an <tt>auth</tt> value of one. It is normal in broadcast/multicast client mode that the broadcast server use one extension field to show the host name, status word and association ID.</p>
+ <h4>Debugging Checklist</h4>
+ <p>If the <tt>ntpq</tt> or <tt>ntpdc</tt> programs do not show that messages are being received by the daemon or that received messages do not result in correct synchronization, verify the following:</p>
+ <ol>
+ <li>Verify the <tt>/etc/services</tt> file host machine is configured to accept UDP packets on the NTP port 123. NTP is specifically designed to use UDP and does not respond to TCP.
+ <li>Check the system log for <tt>ntpd</tt> messages about configuration errors, name-lookup failures or initialization problems. Common system log messages are summarized on the <a href="msyslog.html"><tt>ntpd</tt> System Log Messages</a> page. Check to be sure that only one copy of <tt>ntpd</tt> is running.
+ <li>Verify using <tt>ping</tt> or other utility that packets actually do make the round trip between the client and server. Verify using <tt>nslookup</tt> or other utility that the DNS server names do exist and resolve to valid Internet addresses.
+ <li>Check that the remote NTP&nbsp;server is up and running. The usual evidence that it is not is a <tt>Connection refused</tt> message.
+ <li>Using the <tt>ntpdc</tt> program, verify that the packets received and packets sent counters are incrementing. If the sent counter does not increment and the configuration file includes configured servers, something may be wrong in the host network or interface configuration. If this counter does increment, but the received counter does not increment, something may be wrong in the network or the server NTP daemon may not be running or the server itself may be down or not responding.
+ <li>If both the sent and received counters do increment, but the <tt>reach</tt> values in the <tt>pe</tt> billboard with <tt>ntpq</tt> continues to show zero, received packets are probably being discarded for some reason. If this is the case, the cause should be evident from the <tt>flash</tt> variable as discussed above and on the <tt>ntpq</tt> page. It could be that the server has disabled access for the client address, in which case the refid field in the <tt>ntpq pe</tt> billboard will show a kiss code. See earlier on this page for a list of kiss codes and their meaning.
+ <li>If the <tt>reach</tt> values in the <tt>pe</tt> billboard show the servers are alive and responding, note the tattletale symbols at the left margin, which indicate the status of each server resulting from the various grooming and mitigation algorithms. The interpretation of these symbols is discussed on the <tt>ntpq</tt> page. After a few minutes of operation, one or another of the reachable server candidates should show a * tattletale symbol. If this doesn't happen, the intersection algorithm, which classifies the servers as truechimers or falsetickers, may be unable to find a majority of truechimers among the server population.
+ <li>If all else fails, see the FAQ and/or the discussion and briefings at the NTP Project page.
+ </ol>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
- <li>Check that the remote NTP&nbsp;server is up and running. The usual evidence that it is not is a <tt>Connection refused</tt> message.
- <li>Using the <tt>ntpdc</tt> program, verify that the packets received and packets sent counters are incrementing. If the sent counter does not increment and the configuration file includes configured servers, something may be wrong in the host network or interface configuration. If this counter does increment, but the received counter does not increment, something may be wrong in the network or the server NTP daemon may not be running or the server itself may be down or not responding.
- <li>If both the sent and received counters do increment, but the <tt>reach</tt> values in the <tt>pe</tt> billboard with <tt>ntpq</tt> continues to show zero, received packets are probably being discarded for some reason. If this is the case, the cause should be evident from the <tt>flash</tt> variable as discussed above and on the <tt>ntpq</tt> page. It could be that the server has disabled access for the client address, in which case the refid field in the <tt>ntpq pe</tt> billboard will show a kiss code. See earlier on this page for a list of kiss codes and their meaning. <li>If the <tt>reach</tt> values in the <tt>pe</tt> billboard show the servers are alive and responding, note the tattletale symbols at the left margin, which indicate the status of each server resulting from the various grooming and mitigation algorithms. The interpretation of these symbols is discussed on the <tt>ntpq</tt> page. After a few minutes of operation, one or another of the reachable server candidates should show a * tattletale symbol. If this doesn't happen, the intersection algorithm, which classifies the servers as truechimers or falsetickers, may be unable to find a majority of truechimers among the server population.
- <li>If all else fails, see the FAQ and/or the discussion and briefings at the NTP Project page.
- </ol>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
-
-</html>
+</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver1.html b/contrib/ntp/html/drivers/driver1.html
index 5933483..afd85d2 100644
--- a/contrib/ntp/html/drivers/driver1.html
+++ b/contrib/ntp/html/drivers/driver1.html
@@ -2,63 +2,64 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Undisciplined Local Clock</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Undisciplined Local Clock</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Undisciplined Local Clock</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.1.<i>u</i><br>
- Reference ID: <tt>LCL</tt><br>
- Driver ID: <tt>LOCAL</tt></p>
- <h4>Description</h4>
- <p>This driver is intended for use in an isolated network where no external source of synchronization such as a radio clock or modem is available. It allows a designated time server to act as a primary server to provide synchronization to other clients on the network. Pick a machine that has a good clock oscillator (Digital machines are good, Sun machines are not) and configure it with this driver. Set the clock using the best means available, like eyeball-and-wristwatch. Then, point all the other machines at this one or use broadcast (not multicast) mode to distribute time.</p>
- <p>Another application for this driver is if a particular server clock is to be used as the clock of last resort when all other normal synchronization sources have gone away. This is especially useful if that server has an ovenized oscillator. For this you would configure this driver at a stratum greater than any other likely sources of time (say 3 or 4) to prevent the server taking over when legitimate sources are still available.</p>
- <p>A third application for this driver is when an external discipline source is available, such as the NIST <tt>lockclock</tt> program, which synchronizes the local clock via a telephone modem and the NIST Automated Computer Time Service (ACTS), or the Digital Time Synchronization Service (DTSS), which runs on DCE machines. In this case the stratum should be set at zero, indicating a bona fide stratum-1 source. In the case of DTSS, the local clock can have a rather large jitter, depending on the interval between corrections and the intrinsic frequency error of the clock oscillator. In extreme cases, this can cause clients to exceed the 128-ms slew window and drop off the NTP subnet.</p>
- <p>In the case where a NTP time server is synchronized to some device or protocol that is not external to the NTP daemon itself, some means should be provided to pass such things as error and health values to the NTP daemon for dissemination to its clients. If this is not done, there is a very real danger that the device or protocol could fail and with no means to tell NTP clients of the mishap. When ordinary Unix system calls like <tt>adjtime()</tt> are used to discipline the kernel clock, there is no obvious way this can be done without modifying the code for each case. However, when a modified kernel with the <tt>ntp_adjtime()</tt> system call&nbsp; is available, that routine can be used for the same purpose as the <tt>adjtime()</tt> routine and in addition provided with the estimated error, maximum error, and leap-indicator values. This is the preferred way to synchronize the kernel clock and pass information to the NTP clients.</p>
- <p>In the default mode the behavior of the clock selection algorithm is modified when this driver is in use. The algorithm is designed so that this driver will never be selected unless no other discipline source is available. This can be overridden with the <tt>prefer</tt> keyword of the <tt>server</tt> configuration command, in which case only this driver will be selected for synchronization and all other discipline sources will be ignored. This behavior is intended for use when an external discipline source controls the system clock. See the <a href="../prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page for a detailed description of the exact behavior.</p>
- <p>The stratum for this driver is set at 5 by default, but can be changed by the <tt>fudge</tt> configuration command and/or the <tt>ntpdc</tt> utility. The reference ID is <tt>LCL</tt> by default, but can be changed using the same mechanisms. <b>*NEVER*</b> configure this driver to operate at a stratum which might possibly disrupt a client with access to a bona fide primary server, unless the local clock oscillator is reliably disciplined by another source. <b>*NEVER NEVER*</b> configure a server which might devolve to an undisciplined local clock to use multicast mode.</p>
- <p>This driver provides a mechanism to trim the local clock in both time and frequency, as well as a way to manipulate the leap bits. The <tt>fudge time1</tt> parameter adjusts the time (in seconds) and the <tt>fudge time2</tt> parameter adjusts the frequency (in parts per million). Both parameters are additive and operate only once; that is, each command (as from <tt>ntpdc</tt>) adds signed increments in time or frequency to the nominal local clock time and frequency.</p>
- <h4>Operation with an External Reference Source</h4>
- <p>There are special provisions for this driver to operate in conjunction with an external reference source, such as the <tt>LOCKCLOCK</tt> scheme used by the NIST&nbsp;time servers. In such schemes the system clock is disciplined by a source external to NTP, in the <tt>LOCKCLOCK</tt> case an ACTS&nbsp;telephone modem. To support <tt>LOCKCLOCK</tt> the NTP&nbsp;distribution should be built with the <tt>--enable-nist</tt> parameter in the configuration phase of the build procedure. This changes the system behavior as follows:</p>
- <ol>
- <li>The system clock is not disciplined in any way other than to call the <tt>ntp_adjtime()</tt>&nbsp;system call to obtain the kernel leap code, which becomes the driver leap code and. If the kernel leap code is 11 (not synchronized), the driver stratum is infinity; otherwise the stratum is set by the <tt>stratum</tt> subcommand on the <tt>fudge</tt> command applying to the driver.
- <li>The NTP&nbsp;algorithms operate in the normal fashion with this driver and possibly other drivers and servers; however, the local clock driver as the <tt>prefer</tt> peer will always be selected, even if declared falseticker by the selection algorithm or fails to survive the clustering algorithm.
- <li>If the driver leap code is 11, the system leap code is 11, system stratum infinity and system reference identifier <tt>DOWN</tt>. This provides a definitive status condition to dependent clients.
- </ol>
- <p>The local clock driver should be configured something like this:</p>
- <p><tt>server 127.127.1.1 prefer</tt></p>
- <p><tt>fudge 127.127.1.1 stratum 0 refid NIST</tt></p>
- <p>The <tt>prefer</tt> keyword forces the driver to discipline the clock, even if other servers are configured and running correctly. This is convenient when a number of servers watch each other for monitoring and statistics gathering. In particular, the <tt>peerstats</tt> data and <tt>sysstats</tt> data can be collected at each server, aggregated for daily or weekly reports and sent by electric mail to a monitoring site. In addition, the full suite of cryptographic authentication algorithms is avialable to other servers and dependent clients.</p>
- <h4>Monitor Data</h4>
- <p>No <tt>filegen clockstats</tt> monitor data are produced by this driver.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Specifies the frequency offset calibration factor, in parts per million, with default 0.0.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 3.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>LCL</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Not used by this driver.
- </dl>
- <h4>Additional Information</h4>
- <p><a href="../refclock.html">Reference Clock Drivers</a></p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Undisciplined Local Clock</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.1.<i>u</i><br>
+ Reference ID: <tt>LCL</tt><br>
+ Driver ID: <tt>LOCAL</tt></p>
+ <h4>Description</h4>
+ <p>This driver is intended for use in an isolated network where no external source of synchronization such as a radio clock or modem is available. It allows a designated time server to act as a primary server to provide synchronization to other clients on the network. Pick a machine that has a good clock oscillator (Digital machines are good, Sun machines are not) and configure it with this driver. Set the clock using the best means available, like eyeball-and-wristwatch. Then, point all the other machines at this one or use broadcast (not multicast) mode to distribute time.</p>
+ <p>Another application for this driver is if a particular server clock is to be used as the clock of last resort when all other normal synchronization sources have gone away. This is especially useful if that server has an ovenized oscillator. For this you would configure this driver at a stratum greater than any other likely sources of time (say 3 or 4) to prevent the server taking over when legitimate sources are still available.</p>
+ <p>A third application for this driver is when an external discipline source is available, such as the NIST <tt>lockclock</tt> program, which synchronizes the local clock via a telephone modem and the NIST Automated Computer Time Service (ACTS), or the Digital Time Synchronization Service (DTSS), which runs on DCE machines. In this case the stratum should be set at zero, indicating a bona fide stratum-1 source. In the case of DTSS, the local clock can have a rather large jitter, depending on the interval between corrections and the intrinsic frequency error of the clock oscillator. In extreme cases, this can cause clients to exceed the 128-ms slew window and drop off the NTP subnet.</p>
+ <p>In the case where a NTP time server is synchronized to some device or protocol that is not external to the NTP daemon itself, some means should be provided to pass such things as error and health values to the NTP daemon for dissemination to its clients. If this is not done, there is a very real danger that the device or protocol could fail and with no means to tell NTP clients of the mishap. When ordinary Unix system calls like <tt>adjtime()</tt> are used to discipline the kernel clock, there is no obvious way this can be done without modifying the code for each case. However, when a modified kernel with the <tt>ntp_adjtime()</tt> system call&nbsp; is available, that routine can be used for the same purpose as the <tt>adjtime()</tt> routine and in addition provided with the estimated error, maximum error, and leap-indicator values. This is the preferred way to synchronize the kernel clock and pass information to the NTP clients.</p>
+ <p>In the default mode the behavior of the clock selection algorithm is modified when this driver is in use. The algorithm is designed so that this driver will never be selected unless no other discipline source is available. This can be overridden with the <tt>prefer</tt> keyword of the <tt>server</tt> configuration command, in which case only this driver will be selected for synchronization and all other discipline sources will be ignored. This behavior is intended for use when an external discipline source controls the system clock. See the <a href="../prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page for a detailed description of the exact behavior.</p>
+ <p>The stratum for this driver is set at 5 by default, but can be changed by the <tt>fudge</tt> configuration command and/or the <tt>ntpdc</tt> utility. The reference ID is <tt>LCL</tt> by default, but can be changed using the same mechanisms. <b>*NEVER*</b> configure this driver to operate at a stratum which might possibly disrupt a client with access to a bona fide primary server, unless the local clock oscillator is reliably disciplined by another source. <b>*NEVER NEVER*</b> configure a server which might devolve to an undisciplined local clock to use multicast mode.</p>
+ <p>This driver provides a mechanism to trim the local clock in both time and frequency, as well as a way to manipulate the leap bits. The <tt>fudge time1</tt> parameter adjusts the time (in seconds) and the <tt>fudge time2</tt> parameter adjusts the frequency (in parts per million). Both parameters are additive and operate only once; that is, each command (as from <tt>ntpdc</tt>) adds signed increments in time or frequency to the nominal local clock time and frequency.</p>
+ <h4>Operation with an External Reference Source</h4>
+ <p>There are special provisions for this driver to operate in conjunction with an external reference source, such as the <tt>LOCKCLOCK</tt> scheme used by the NIST&nbsp;time servers. In such schemes the system clock is disciplined by a source external to NTP, in the <tt>LOCKCLOCK</tt> case an ACTS&nbsp;telephone modem. To support <tt>LOCKCLOCK</tt> the NTP&nbsp;distribution should be built with the <tt>--enable-nist</tt> parameter in the configuration phase of the build procedure. This changes the system behavior as follows:</p>
+ <ol>
+ <li>The system clock is not disciplined in any way other than to call the <tt>ntp_adjtime()</tt>&nbsp;system call to obtain the kernel leap code, which becomes the driver leap code and. If the kernel leap code is 11 (not synchronized), the driver stratum is infinity; otherwise the stratum is set by the <tt>stratum</tt> subcommand on the <tt>fudge</tt> command applying to the driver.
+ <li>The NTP&nbsp;algorithms operate in the normal fashion with this driver and possibly other drivers and servers; however, the local clock driver as the <tt>prefer</tt> peer will always be selected, even if declared falseticker by the selection algorithm or fails to survive the clustering algorithm.
+ <li>If the driver leap code is 11, the system leap code is 11, system stratum infinity and system reference identifier <tt>DOWN</tt>. This provides a definitive status condition to dependent clients.
+ </ol>
+ <p>The local clock driver should be configured something like this:</p>
+ <p><tt>server 127.127.1.1 prefer</tt></p>
+ <p><tt>fudge 127.127.1.1 stratum 0 refid NIST</tt></p>
+ <p>The <tt>prefer</tt> keyword forces the driver to discipline the clock, even if other servers are configured and running correctly. This is convenient when a number of servers watch each other for monitoring and statistics gathering. In particular, the <tt>peerstats</tt> data and <tt>sysstats</tt> data can be collected at each server, aggregated for daily or weekly reports and sent by electric mail to a monitoring site. In addition, the full suite of cryptographic authentication algorithms is avialable to other servers and dependent clients.</p>
+ <h4>Monitor Data</h4>
+ <p>No <tt>filegen clockstats</tt> monitor data are produced by this driver.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Specifies the frequency offset calibration factor, in parts per million, with default 0.0.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 3.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>LCL</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Not used by this driver.
+ </dl>
+ <h4>Additional Information</h4>
+ <p><a href="../refclock.html">Reference Clock Drivers</a></p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
-</html>
+</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver10.html b/contrib/ntp/html/drivers/driver10.html
index d5692ab..97b0495 100644
--- a/contrib/ntp/html/drivers/driver10.html
+++ b/contrib/ntp/html/drivers/driver10.html
@@ -6,7 +6,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
<title>Austron 2200A/2201A GPS Receivers</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
</head>
<body>
@@ -47,7 +47,7 @@
<h4>Additional Information</h4>
<p><a href="../refclock.html">Reference Clock Drivers</a></p>
<hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver11.html b/contrib/ntp/html/drivers/driver11.html
index 9f13f67..b36f7f3 100644
--- a/contrib/ntp/html/drivers/driver11.html
+++ b/contrib/ntp/html/drivers/driver11.html
@@ -6,7 +6,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
<title>Arbiter 1088A/B GPS Receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
</head>
<body>
@@ -81,7 +81,7 @@ ee = hardware errors</pre>
<h4>Additional Information</h4>
<p><a href="../refclock.html">Reference Clock Drivers</a></p>
<hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver12.html b/contrib/ntp/html/drivers/driver12.html
index 242e50b..6d0b38a 100644
--- a/contrib/ntp/html/drivers/driver12.html
+++ b/contrib/ntp/html/drivers/driver12.html
@@ -6,7 +6,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
<title>KSI/Odetics TPRO/S IRIG Interface</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
</head>
<body>
@@ -43,7 +43,7 @@
<h4>Additional Information</h4>
<p><a href="../refclock.html">Reference Clock Drivers</a></p>
<hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver16.html b/contrib/ntp/html/drivers/driver16.html
index 96ecdb0..95308ba 100644
--- a/contrib/ntp/html/drivers/driver16.html
+++ b/contrib/ntp/html/drivers/driver16.html
@@ -7,7 +7,7 @@
<meta name="GENERATOR" content="Mozilla/4.6 [en] (Win95; U) [Netscape]">
<meta name="Author" content="Ganesh Ramasivan">
<title>Bancomm bc635VME Time and Frequency Processor</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
</head>
<body>
@@ -25,7 +25,7 @@
<h4>Additional Information</h4>
<p><a href="../refclock.html">Reference Clock Drivers</a></p>
<hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver18.html b/contrib/ntp/html/drivers/driver18.html
index dcd616a..6acf5f2 100644
--- a/contrib/ntp/html/drivers/driver18.html
+++ b/contrib/ntp/html/drivers/driver18.html
@@ -2,86 +2,81 @@
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
- <title>NIST Modem Time Service</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
+ <title>NIST Modem Time Service</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>NIST Modem Time Service</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.18.<i>u</i><br>
- Reference ID: <tt>NIST</tt><br>
- Driver ID: <tt>ACTS_NIST</tt><br>
- Serial Port: <tt>/dev/acts<i>u</i></tt>; 1200 baud, 8-bits, no parity<br>
- Features: <tt>tty_clk</tt><br>
- Requires: <tt>/usr/include/sys/termios.h</tt> header file with modem control</p>
- <h4>Description</h4>
- <p>This driver supports the NIST Automated Computer Time Service (ACTS). It periodically dials a prespecified telephone number, receives the NIST timecode data and calculates the local clock correction. It designed primarily for use when neither a radio clock nor connectivity to Internet time servers is available. For the best accuracy, the individual telephone line/modem delay needs to be calibrated using outside sources.</p>
- <p>The ACTS is located at NIST Boulder, CO, telephone 303 494 4774. A toll call from Newark, DE, costs between three and four cents, although it is not clear what carrier and time of day discounts apply. The modem dial string will differ depending on local telephone configuration, etc., and is specified by the phone command in the configuration file. The argument to this command is an AT command for a Hayes compatible modem.</p>
- <p>The driver can operate in either of two modes, as determined by the mode parameter in the server configuration command. In mode 0 the driver operates continuously at intervals determined by the fudge time1 parameter, as described above. In mode 1 the driver is enabled only when no other sources of synchronization are available and when we have gone more than MAXOUTAGE (3600 s) since last synchronized by other sources of synchronization.</p>
- <p>The accuracy produced by this driver should be in the range of a millisecond or two, but may need correction due to the delay characteristics of the individual modem involved. For undetermined reasons, some modems work with the ACTS echo-delay measurement scheme and some don't. This driver tries to do the best it can with what it gets. Initial experiments with a Practical Peripherals 9600SA modem here in Delaware suggest an accuracy of a millisecond or two can be achieved without the scheme by using a fudge time1 value of 65.0 ms. In either case, the dispersion for a single call involving ten samples is about 1.3 ms.</p>
- <p>For reliable call management, this driver requires a 1200-bps modem with a Hayes-compatible command set and control over the modem data terminal ready (DTR) control line. Present restrictions require the use of a POSIX-compatible programming interface, although other interfaces may work as well. The ACTS telephone number and modem setup string are hard-coded in the driver and may require changes for nonstandard modems or special circumstances.</p>
- <p>The fudge time1 parameter represents a propagation-delay correction factor which is added to the value computed by ACTS when the echo-delay scheme is used. This scheme does not work with all modems; for those that don't, fudge flag2 should be set to disable the feature. In this case the fudge time1 parameter represents the total propagation delay due to all causes and must be determined by external calibration.</p>
- <p>The ACTS call interval is determined by a counter initially set to the fudge time2 parameter. At each poll interval, minpoll (usually 64 s) is subtracted from the counter. When the counter is equal to or less than zero, the fudge flag1 is set, which causes up to three call attempts to be made to ACTS. The fudge flag1 is reset after a valid clock update has been determined or by a device fault, timeout or manually using <tt>ntpdc</tt>. After a valid clock update, the counter is reset for the next interval. Setting the <tt>fudge time2</tt> parameter to zero disables automatic call attempts. Manual call attempts can be made at any time by setting <tt>fudgeflag1</tt> using ntpdc.</p>
- <p>The NIST timecode message is transmitted at 1200 bps in the following format:</p>
- <pre>
-jjjjj yy-mm-dd hh:mm:ss tt l uuu mmmmm UTC(NIST) *
-
-jjjjj = modified Julian day
-yy-mm-dd = year, month, day
-hh:mm:ss = hours, minutes, seconds
-tt = DST indicator (see driver listing)
-l = leap-second warning (see driver listing)
-uuu = DUT1 correction (see driver listing)
-mmmmm = modem calibration (see driver listing)
-on-time = '*'</pre>
- <p>The timecode message is transmitted continuously after a signon banner, which this driver ignores. The driver also ignores all but the yy-mm-dd, hh:mm:ss and on-time character '*' fields, although it checks the format of all fields of the message. A timestamp is captured at the '*' character, as required by the ACTS specification, and used as the reference time of the timecode. If a message with an on-time character of '#' is received, the driver updates the propagation delay. The driver disconnects when (a) ten valid messages have been received, (b) no message has been received for 15 s, (c) an on-time character of '#' is received. These messages are processed by a trimmed-mean filter to reduce timing noise and then by the usual NTP algorithms to develop the clock correction.</p>
- <p>Since the accumulated error grows with the interval between calls, it is important that the intrinsic frequency error be minimized. This can be done by observing difference in offsets between two calls placed some hours apart and calculating the uncorrected frequency error. This error, as a fixed-point value in parts-per-million, should be installed in the ntp.drift file before the daemon is started. Some experimentation may be necessary in order to reduce the intrinsic frequency error to the order of 1 ppm.</p>
- <p>The behavior of the clock selection algorithm is modified when this driver is in use. The algorithm is designed so that this driver will never be selected unless no other discipline source is available. This can be overridden with the prefer keyword of the server configuration command, in which case only this driver will be selected for synchronization and all other discipline sources will be ignored.</p>
- <p>Unlike other drivers, each ACTS call generates one clock correction and that correction is processed immediately. There is no wait to allow the clock filter to accumulate samples. In addition, the watchdog timeout of the local clock algorithm is disabled, so that a correction received from this driver that exceeds CLOCK_MAX (128 ms) causes an immediate step/slew.</p>
- <p>Since the interval between updates can be much longer than used with ordinary NTP peers, the local clock procedure has been modified to operate in either of two modes, depending on whether the interval between updates is less than or greater than CLOCK_MAXSEC (1200 s). If less than this value, the local clock procedure operates using the standard NTP phase-lock loop as with other NTP peers. If greater than this value, the procedure operates using a modified frequency-lock loop suggested by Judah Levine in his lockclock algorithm designed specifically for ACTS.</p>
- <h4>Call Management</h4>
- <p>Since ACTS will be a toll call in most areas of the country, it is necessary to carefully manage the call frequency. This can be done in two ways, by specifying the interval between calls, or by setting a flag bit manually or via a cron job. The call interval is determined by a counter initially set to the fudge time2 parameter. At each poll interval, minpoll (usually 64 s) is subtracted from the counter. When the counter is equal to or less than zero, the fudge flag1 is set, which causes up to three call attempts to be made. The fudge flag1 is reset after ten offset samples have been determined in a single call or by a device fault, timeout or manually using ntpdc. Upon successful completion of a call, the eight samples have been shifted into the clock filter, the local clock updated and the counter reset for the next interval. Setting the fudge time2 parameter to zero disables automatic call attempts.</p>
- <p>Manual call attempts can be made at any time by setting fudge flag1 using ntpdc. For example, the ntpdc command</p>
- <pre>
-fudge 127.127.18.1 flags 1</pre>
- <p>will ask for a key identifier and password and, if authenticated by the server, will set flag1. There may be a short delay until the expiration of the current poll timeout.</p>
- <p>The flag1 can be set from a cron job in the following way. Construct a file with contents</p>
- <pre>keyid 11
-passwd dialup
-fudge 127.127.18.1 flags 1
-quit</pre>
- <p>Then, run the following program at specified times as required.</p>
- <pre>/usr/local/bin/ntpdc &lt;file</pre>
- <h4>Monitor Data</h4>
- <p>When enabled by the <tt>flag4</tt> fudge flag, every received timecode is written as-is to the <tt>clockstats</tt> file.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>NIST</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Not used by this driver.
- </dl>
- <h4>Additional Information</h4>
- <p><a href="../refclock.html">Reference Clock Drivers</a>&nbsp;</p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Automated Computer Time Service (ACTS)</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.18.<i>u</i><br>
+ Reference ID: <tt>NIST | USNO | PTB | WWVB</tt><br>
+ Driver ID: <tt>ACTS_MODEM</tt><br>
+ Serial Port: <tt>/dev/acts<i>u</i></tt>; 9600 baud, 8-bits, no parity<br>
+ Features: <tt>tty_clk</tt><br>
+ Requires: <tt>/usr/include/sys/termios.h</tt> header file with modem control and a dial-out (cua)&nbsp;device.</p>
+ <h4>Description</h4>
+ <p>This driver supports the US (NIST and USNO) and European (PTB (Germany), NPL (UK), etc.) modem time services, as well as Spectracom GPS&nbsp;and WWVB receivers connected via a modem. The driver periodically dials a number from a telephone list, receives the timecode data and calculates the local clock correction. It is designed primarily for backup when neither a radio clock nor connectivity to Internet time servers are available. It can also be configured to operate full period.</p>
+ <p>For best results the indicated time must be corrected for the modem and telephone circuit propagation delays, which can reach 200 ms or more. For the NIST service, corrections are determined automatically by measuring the roundtrip delay of echoed characters. With this service the absolute accuracy is typically a millisecond or two. Corrections for the other services must be determined by other means. With these services variations from call to call and between messages during a call are typically a few milliseconds, occasionally higher.</p>
+ <p>This driver requires a 9600-bps modem with a Hayes-compatible command set and control over the modem data terminal ready (DTR) control line. The actual line speed ranges from 1200 bps with USNO&nbsp;to 14,400 bps with NIST. The modem setup string is hard-coded in the driver and may require changes for nonstandard modems or special circumstances.</p>
+ <p>There are three modes of operation selected by the <tt>mode</tt> keyword in the <tt>server</tt> configuration command. In manual mode (2) the calling program is initiated by setting fudge <tt>flag1</tt>. This can be done manually using <tt>ntpdc</tt>, or by a cron job. In auto mode (0) <tt>flag1</tt> is set at each poll event. In backup mode (1) <tt>flag1</tt> is set at each poll event, but only if no other synchronization sources are available.</p>
+ <p>When <tt>flag1</tt> is set, the calling program dials the first number in the list specified by the <tt>phone</tt> command. If the call fails for any reason, the program dials the second number and so on. The phone number is specified by the Hayes ATDT prefix followed by the number itself, including the prefix and long-distance digits and delay code, if necessary. The <tt>flag1</tt> is reset and the calling program terminated if (a) valid clock update has been determined, (b) no more numbers remain in the list, (c) a device fault or timeout occurs or (d) fudge <tt>flag1</tt> is reset manually using <tt>ntpdc</tt>.</p>
+ <p>The driver automatically recognizes the message format of each modem time service. It selects the parsing algorithm depending on the message length. There is some hazard should the message be corrupted. However, the data format is checked carefully and only if all checks succeed is the message accepted. Corrupted lines are discarded without complaint. Once the service is known, the reference identifier for the driver is set to NIST, USNO, PTB or WWVB as appropriate.</p>
+ <p>Ordinarily, the serial port is connected to a modem; however, if fudge <tt>flag3</tt> is set, it can be connected directly to a Spectracom WWV or GPS radio for testing or calibration. The Spectracom radio can be connected via a modem if the radio is connfigured to send time codes continuoulsly at 1-s intervals. In principle, fudge <tt>flag2</tt> enables port locking, allowing the modem to be shared when not in use by this driver. At least on Solaris with the current NTP I/O routines, this results in lots of ugly error messages.</p>
+ <p>The <tt>minpoll</tt> and <tt>maxpoll</tt> keywords of the server configuration command can be used to limit the intervals between calls. The recommended settings are 12 (1.1 hours) for <tt>minpoll</tt> and 17 (36 hours) for <tt>maxpoll</tt>. Ordinarily, the poll interval will start at <tt>minpoll</tt> and ramp up to <tt>maxpoll</tt> in a day or two.</p>
+ <h4>US Phone Numbers and Formats</h4>
+ <p>Note: Phone numbers include the entire Hayes modem command, including the <tt>ATDT</tt> and other control codes as may be necessary. For most cases only the <tt>ATDT</tt> may be necessary.</p>
+ <p><a href="http://www.boulder.nist.gov/timefreq">National Institute of Science and Technology (NIST)</a></p>
+ <p>Phone: (303) 494-4774 (Boulder, CO); (808) 335-4721 (Hawaii)</p>
+ <p><a href="http://www.boulder.nist.gov/timefreq/service/acts.htm">Data Format</a></p>
+ <p><tt>National Institute of Standards and Technology<br>
+ Telephone Time Service, Generator 3B<br>
+ Enter question mark &quot;?&quot; for HELP<br>
+ MJD YR MO DA H M S ST S UT1 msADV &lt;OTM&gt;<br>
+ 47999 90-04-18 21:39:15 50 0 +.1 045.0 UTC(NIST) *<br>
+ 47999 90-04-18 21:39:16 50 0 +.1 045.0 UTC(NIST) #<br>
+ ...</tt></p>
+ <p><tt>MJD</tt>, <tt>YR</tt>, <tt>ST</tt>, <tt>UT1</tt> and <tt>UTC(NIST)</tt> are not used by this driver. The <tt>&lt;OTM&gt;</tt> on-time character &quot;<tt>*</tt>&quot; changes to &quot;<tt>#</tt>&quot;&nbsp;when the delay correction is valid.</p>
+ <p><a href="http://tycho.usno.navy.mil">US Naval Observatory (USNO)</a></p>
+ <p>Phone: (202) 762-1594 (Washington, DC); (719) 567-6742 (Boulder, CO)</p>
+ <p><a href="http://tycho.usno.navy.mil/modem_time.html">Data Format</a> (two lines, repeating at one-second intervals)</p>
+ <p><tt>jjjjj nnn hhmmss UTC</tt></p>
+ <p>* on-time character for previous timecode message<br>
+ jjjjj modified Julian day number (not used)<br>
+ nnn day of year<br>
+ hhmmss second of day</p>
+ <p><a href="tf582_4.html">European Phone Numbers and Formats</a></p>
+ <p><a href="http://www.spectracomcorp.com">Spectracom GPS and WWVB Receivers</a></p>
+ <p>If a modem is connected to a Spectracom receiver, this driver will call it and retrieve the time in one of two formats, 0 and 2. Ordinarily, the receiver requires a <tt>T</tt> in order to return the timecode. As this driver does not send data via the modem, it must either be configured in continuous mode or be polled by another local driver.</p>
+ <h4>Monitor Data</h4>
+ <p>The received timecode is written as-is to the <tt>clockstats</tt> file along with the Hayes connection and hangup commands and result codes.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Set by the driver to (one of) <tt>NIST</tt>, <tt>USNO</tt>, <tt>PTB</tt> or <tt>WWVB</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Initiate a call if 1. Automatically reset by program.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Enables port locking if 1, disables if 0 (default).
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Enables direct connection if 1, or modem if 0 (default). If set, the driver will send a single character 'T' at every poll event.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Not used by this driver.
+ </dl>
+ <h4>Additional Information</h4>
+ <p><a href="../refclock.html">Reference Clock Drivers</a>&nbsp;</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver19.html b/contrib/ntp/html/drivers/driver19.html
index 20dae15..961ca09 100644
--- a/contrib/ntp/html/drivers/driver19.html
+++ b/contrib/ntp/html/drivers/driver19.html
@@ -6,7 +6,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
<title>Heath WWV/WWVH Receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
</head>
<body>
@@ -53,7 +53,7 @@ dd/mm/yr = day, month, year</pre>
Additional Information
<p><a href="../refclock.html">Reference Clock Drivers</a>&nbsp;</p>
<hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver2.html b/contrib/ntp/html/drivers/driver2.html
index 453374f..20bad64 100644
--- a/contrib/ntp/html/drivers/driver2.html
+++ b/contrib/ntp/html/drivers/driver2.html
@@ -6,7 +6,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
<title>Trak 8820 GPS Receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
</head>
<body>
@@ -61,7 +61,7 @@ q = quality indicator (phase error), 0-6:
<p><a href="../refclock.html">Reference Clock Drivers</a></p>
</dl>
<hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver20.html b/contrib/ntp/html/drivers/driver20.html
index c387002..17be32c 100644
--- a/contrib/ntp/html/drivers/driver20.html
+++ b/contrib/ntp/html/drivers/driver20.html
@@ -2,31 +2,30 @@
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.2.16-22 i586) [Netscape]">
- <title>Generic NMEA GPS Receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.2.16-22 i586) [Netscape]">
+ <title>Generic NMEA GPS Receiver</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Generic NMEA GPS Receiver</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.20.<i>u</i><br>
- Reference ID: <tt>GPS</tt><br>
- Driver ID: <tt>GPS_NMEA</tt><br>
- Serial Port: <tt>/dev/gps<i>u</i></tt>; 4800 baud, 8-bits, no parity<br>
- Features: <tt>tty_clk</tt></p>
- <h4>Description</h4>
- <p>This driver supports GPS receivers with the <tt>$GPRMC</tt> NMEA output string by default.&nbsp; Alternately the <tt>$GPGGA</tt> or <tt>$GPGLL </tt>may be selected.</p>
- <p>The driver expects the receiver to be set up to transmit a <tt>$GPRMC</tt> message every second.</p>
- <p>The accuracy depend on the receiver used. Inexpesive GPS models are available with a claimed PPS signal accuracy of 1 <font face="Symbol">m</font>s or better relative to the broadcast signal. However, in most cases the actual accuracy is limited by the precision of the timecode and the latencies of the serial interface and operating system.</p>
- <p>If the Operating System supports the PPSAPI, RFC-2783, it will be used.<br>
- &nbsp;</p>
- <p>The various GPS sentences that this driver recognises look like this:<br>
- (others quietly ignored)</p>
- <pre><tt>$GPRMC,POS_UTC,POS_STAT,LAT,LAT_REF,LON,LON_REF,SPD,HDG,DATE,MAG_VAR,MAG_REF*CC&lt;cr&gt;&lt;lf&gt;
+ <body>
+ <h3>Generic NMEA GPS Receiver</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.20.<i>u</i><br>
+ Reference ID: <tt>GPS</tt><br>
+ Driver ID: <tt>GPS_NMEA</tt><br>
+ Serial Port: <tt>/dev/gps<i>u</i></tt>; 4800 baud, 8-bits, no parity<br>
+ Serial Port: <tt>/dev/gps<i>u</i></tt>; symlink to server:port (for nmead) Features: <tt>tty_clk</tt></p>
+ <h4>Description</h4>
+ <p>This driver supports GPS receivers with the <tt>$GPRMC</tt> NMEA output string by default.&nbsp; Alternately the <tt>$GPGGA</tt> or <tt>$GPGLL </tt>may be selected.</p>
+ <p>The driver expects the receiver to be set up to transmit a <tt>$GPRMC</tt> message every second.</p>
+ <p>The accuracy depend on the receiver used. Inexpesive GPS models are available with a claimed PPS signal accuracy of 1 <font face="Symbol">m</font>s or better relative to the broadcast signal. However, in most cases the actual accuracy is limited by the precision of the timecode and the latencies of the serial interface and operating system.</p>
+ <p>If the Operating System supports the PPSAPI, RFC-2783, it will be used.<br>&nbsp;</p>
+ <p>The various GPS sentences that this driver recognises look like this:<br>
+ (others quietly ignored)</p>
+ <pre><tt>$GPRMC,POS_UTC,POS_STAT,LAT,LAT_REF,LON,LON_REF,SPD,HDG,DATE,MAG_VAR,MAG_REF*CC&lt;cr&gt;&lt;lf&gt;
$GPGLL,LAT,LAT_REF,LONG,LONG_REF,POS_UTC,POS_STAT*CC&lt;cr&gt;&lt;lf&gt;
$GPGGA,POS_UTC,LAT,LAT_REF,LONG,LONG_REF,FIX_MODE,SAT_USED,HDOP,ALT,ALT_UNIT,GEO,G_UNIT,D_AGE,D_REF*CC&lt;cr&gt;&lt;lf&gt;
@@ -52,45 +51,41 @@ $GPGGA,POS_UTC,LAT,LAT_REF,LONG,LONG_REF,FIX_MODE,SAT_USED,HDOP,ALT,ALT_UNIT,GEO
&nbsp; D_REF&nbsp;&nbsp;&nbsp; - Reference ID of DGPS station
&nbsp; CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Checksum (optional)
&nbsp; &lt;cr&gt;&lt;lf&gt; - Sentence terminator.</tt></pre>
- Alternate GPS sentences (other than <tt>$GPRMC</tt> - the default) may be enabled by setting the relevent bits of 'mode' in the server configuration line<br>
- &nbsp;* server 127.127.20.x mode X<br>
- &nbsp;&nbsp;&nbsp; bit 0 - enables RMC&nbsp;&nbsp;&nbsp; ( value = 1)<br>
- &nbsp;&nbsp;&nbsp; bit 1 - enables GGA&nbsp;&nbsp;&nbsp; ( value = 2)<br>
- &nbsp;&nbsp;&nbsp; bit 2 - enables GLL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( value = 4)<br>
- multiple sentences may be selected<br>
- <p>The driver will send a <tt>$PMOTG,RMC,0000*1D&lt;cr&gt;&lt;lf&gt;</tt> message each time a <tt>$GPRMC</tt> string is needed. This is not needed on most GPS receivers because they automatically send the <tt>$GPRMC</tt> string every second and will only work on GPS receivers that understand the <tt>$PMOTG</tt> string. Others will just ignore it.</p>
- <h4>Setting up the Garmin GPS-25XL</h4>
- Switch off all output with by sending it the following string.
- <pre>&quot;$PGRMO,,2&lt;cr&gt;&lt;lf&gt;&quot;</pre>
- <p>Now switch only $GPRMC on by sending it the following string.</p>
- <pre>&quot;$PGRMO,GPRMC,1&lt;cr&gt;&lt;lf&gt;&quot;</pre>
- <p>On some systems the PPS signal isn't switched on by default. It can be switched on by sending the following string.</p>
- <pre>&quot;$PGRMC,,,,,,,,,,,,2&lt;cr&gt;&lt;lf&gt;&quot;</pre>
- <h4>Monitor Data</h4>
- <p>The GPS sentence(s) that is used is written to the clockstats file.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>GPS</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Specifies the PPS signal on-time edge: 0 for assert (default), 1 for clear.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Controls the kernel PPS discipline: 0 for disable (default), 1 for enable.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Not used by this driver.
- </dl>
- <p>Additional Information</p>
- <p><a href="../refclock.html">Reference Clock Drivers</a></p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ Alternate GPS sentences (other than <tt>$GPRMC</tt> - the default) may be enabled by setting the relevent bits of 'mode' in the server configuration line<br>&nbsp;* server 127.127.20.x mode X<br>&nbsp;&nbsp;&nbsp; bit 0 - enables RMC&nbsp;&nbsp;&nbsp; ( value = 1)<br>&nbsp;&nbsp;&nbsp; bit 1 - enables GGA&nbsp;&nbsp;&nbsp; ( value = 2)<br>&nbsp;&nbsp;&nbsp; bit 2 - enables GLL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( value = 4)<br>
+ multiple sentences may be selected<br>
+ <p>The driver will send a <tt>$PMOTG,RMC,0000*1D&lt;cr&gt;&lt;lf&gt;</tt> message each time a <tt>$GPRMC</tt> string is needed. This is not needed on most GPS receivers because they automatically send the <tt>$GPRMC</tt> string every second and will only work on GPS receivers that understand the <tt>$PMOTG</tt> string. Others will just ignore it.</p>
+ <h4>Setting up the Garmin GPS-25XL</h4>
+ Switch off all output with by sending it the following string.
+ <pre>&quot;$PGRMO,,2&lt;cr&gt;&lt;lf&gt;&quot;</pre>
+ <p>Now switch only $GPRMC on by sending it the following string.</p>
+ <pre>&quot;$PGRMO,GPRMC,1&lt;cr&gt;&lt;lf&gt;&quot;</pre>
+ <p>On some systems the PPS signal isn't switched on by default. It can be switched on by sending the following string.</p>
+ <pre>&quot;$PGRMC,,,,,,,,,,,,2&lt;cr&gt;&lt;lf&gt;&quot;</pre>
+ <h4>Monitor Data</h4>
+ <p>The GPS sentence(s) that is used is written to the clockstats file.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>GPS</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Specifies the PPS signal on-time edge: 0 for assert (default), 1 for clear.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Controls the kernel PPS discipline: 0 for disable (default), 1 for enable.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Not used by this driver.
+ </dl>
+ <p>Additional Information</p>
+ <p><a href="../refclock.html">Reference Clock Drivers</a></p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver22.html b/contrib/ntp/html/drivers/driver22.html
index 2b871c1..e1ed132 100644
--- a/contrib/ntp/html/drivers/driver22.html
+++ b/contrib/ntp/html/drivers/driver22.html
@@ -2,55 +2,59 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>PPS Clock Discipline</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>PPS Clock Discipline</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>PPS Clock Discipline</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.22.<i>u</i><br>
- Reference ID: <tt>PPS</tt><br>
- Driver ID: <tt>PPS</tt><br>
- Serial or Parallel Port: <tt>/dev/pps<i>u</i></tt><br>
- Requires: PPSAPI interface</p>
- <p>Note: This driver supersedes an older one of the same name. The older driver operated with several somewhat archaic signal interface devices, required intricate configuration and was poorly documented. This driver operates only with the PPSAPI interface proposed as an IETF standard. Note also that the <tt>pps</tt> configuration command has been obsoleted by this driver.</p>
- <h4>Description</h4>
- <p>This driver furnishes an interface for the pulse-per-second (PPS) signal produced by a cesium clock, radio clock or related equipment. It can be used to augment the serial timecode generated by a GPS receiver, for example. It can be used to remove accumulated jitter and re-time a secondary server when synchronized to a primary server over a congested, wide-area network and before redistributing the time to local clients. The driver includes extensive signal sanity checks and grooming algorithms. A range gate and frequency discriminator reject noise and signals with incorrect frequency. A multiple-stage median filter rejects jitter due to hardware interrupt and operating system latencies. A trimmed-mean algorithm determines the best time samples. With typical workstations and processing loads, the incidental jitter can be reduced to less than a microsecond.</p>
- <p>While this driver can discipline the time and frequency relative to the PPS source, it cannot number the seconds. For this purpose a auxiliary source is required, ordinarily a radio clock operated as a primary reference (stratum 1) source; however, another NTP time server can be used as well. For this purpose, the auxiliary source should be specified as the prefer peer, as described in the <a href="../prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page.</p>
- <p>The driver requires the PPSAPI interface<sup>1</sup>, which is a proposed IETF standard. The interface consists of the <tt>timepps.h</tt> header file and associated kernel support. Support for this interface is included in current versions of Solaris, FreeBSD and Linux and proprietary versions of Tru64 (Alpha) and SunOS. See the <a href="../pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page for further information.</p>
- <p>The PPS source can be connected via a serial or parallel port, depending on the hardware and operating system. The port can be dedicated to the PPS source or shared with another device. A radio clock is usually connected via a serial port and the PPS source connected via a level converter to the data carrier detect (DCD) pin (DB-9 pin 1, DB-25 pin 8) of the same connector. In some systems where a parallel port and driver are available, the PPS signal can be connected directly to the ACK pin (pin 10) of the connector. Whether the PPS signal is connected via a dedicated port or shared with another device, the driver opens the device <tt>/dev/pps%d</tt>, where <tt>%d</tt> is the unit number. As with other drivers, links can be used to redirect the logical name to the actual physical device.</p>
- <p>The driver normally operates like any other driver and uses the same mitigation algorithms and PLL/FLL clock discipline incorporated in the daemon. If kernel PLL/FLL support is available, the kernel PLL/FLL clock discipline can be used instead. The default behavior is not to use the kernel PPS clock discipline, even if present. This driver incorporates a good deal of signal processing to reduce jitter using the median filter and trimmed average algorithms in the driver interface. As the result, performance with minpoll and maxpoll configured at the minimum 4 (16s) is generally better than the kernel PPS clock discipline. However, fudge flag 3 can be used to enable this discipline if necessary.</p>
- <p>Note that the PPS source is considered valid only if the auxiliary source is the prefer peer, is reachable and is selectable to discipline the system clock. By default the stratum assigned to the PPS source is automatically determined. If the auxiliary source is unreachable or inoperative, the stratum is set to 16. Otherwise it is set to the stratum specified by the <tt>fudge stratum</tt> command, if present, or the auxiliary source stratum if not present. Please note the temptation to masquerade as a primary server by forcing the stratum to zero is decidedly dangerous, as it invites timing loops.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>PPS</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Specifies the PPS signal on-time edge: 0 for assert (default), 1 for clear.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Controls the kernel PPS discipline: 0 for disable (default), 1 for enable.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Not used by this driver.
- </dl>
- <h4>Additional Information</h4>
- <p><a href="../refclock.html">Reference Clock Drivers</a></p>
- <p>Reference</p>
- <ol>
- <li>Mogul, J., D. Mills, J. Brittenson, J. Stone and U. Windl. Pulse-per-second API for Unix-like operating systems, version 1. Request for Comments RFC-2783, Internet Engineering Task Force, March 2000, 31 pp.
- </ol>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>PPS Clock Discipline</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.22.<i>u</i><br>
+ Reference ID: <tt>PPS</tt><br>
+ Driver ID: <tt>PPS</tt><br>
+ Serial or Parallel Port: <tt>/dev/pps<i>u</i></tt><br>
+ Requires: PPSAPI interface</p>
+ <p>Note: This driver supersedes an older one of the same name. The older driver operated with several somewhat archaic signal interface devices, required intricate configuration and was poorly documented. This driver operates only with the PPSAPI interface proposed as an IETF standard. Note also that the <tt>pps</tt> configuration command has been obsoleted by this driver.</p>
+ <h4>Description</h4>
+ <p>This driver furnishes an interface for the pulse-per-second (PPS) signal produced by a cesium clock, radio clock or related devices. It can be used to augment the serial timecode generated by a GPS receiver, for example. It can be used to remove accumulated jitter and re-time a secondary server when synchronized to a primary server over a congested, wide-area network and before redistributing the time to local clients. The driver includes extensive signal sanity checks and grooming algorithms. A range gate and frequency discriminator reject noise and signals with incorrect frequency. A multiple-stage median filter rejects jitter due to hardware interrupt and operating system latencies. A trimmed-mean algorithm determines the best time samples. With typical workstations and processing loads, the incidental jitter can be reduced to a few microseconds.</p>
+ <p>While this driver can discipline the time and frequency relative to the PPS source, it cannot number the seconds. For this purpose an auxiliary source is required, ordinarily a radio clock operated as a primary reference (stratum 1) source; however, another NTP time server can be used as well. For this purpose, the auxiliary source should be specified as the prefer peer, as described in the <a href="../prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page.</p>
+ <p>The driver requires the PPSAPI interface<sup>1</sup>, which is a proposed IETF standard. The interface consists of the <tt>timepps.h</tt> header file and associated kernel support. Support for this interface is included in current versions of Solaris, FreeBSD and Linux and proprietary versions of Tru64 (Alpha) and SunOS. See the <a href="../pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page for further information.</p>
+ <p>The PPS source can be connected via a serial or parallel port, depending on the hardware and operating system. A serial port can be dedicated to the PPS source or shared with another device; however, if dedicated the data leads should not be connected, as noise or unexpected signals can cause <tt>ntpd</tt> to exit.</p>
+ <p>A radio clock is usually connected via a serial port and the PPS source connected via a level converter to the data carrier detect (DCD) pin (DB-9 pin 1, DB-25 pin 8) of the same connector. In some systems where a parallel port and driver are available, the PPS signal can be connected directly to the ACK pin (pin 10) of the connector. Whether the PPS signal is connected via a dedicated port or shared with another device, the driver opens the device <tt>/dev/pps%d</tt>, where <tt>%d</tt> is the unit number. As with other drivers, links can be used to redirect the logical name to the actual physical device.</p>
+ <p>The driver normally operates like any other driver and uses the same mitigation algorithms and PLL/FLL clock discipline incorporated in the daemon. If kernel PLL/FLL support is available, the kernel PLL/FLL clock discipline can be used instead. The default behavior is not to use the kernel PPS clock discipline, even if present. This driver incorporates a good deal of signal processing to reduce jitter using the median filter and trimmed average algorithms in the driver interface. As the result, performance with minpoll and maxpoll configured at the minimum 4 (16s) is generally better than the kernel PPS discipline. However, fudge flag 3 can be used to enable the kernel PPS discipline if necessary.</p>
+ <p>Note that the PPS source is considered valid only if the auxiliary source is the prefer peer, is reachable and is selectable to discipline the system clock. By default the stratum assigned to the PPS source is automatically determined. If the auxiliary source is unreachable or inoperative, the stratum is set to 16. Otherwise it is set to the stratum specified by the <tt>fudge stratum</tt> command, if present, or the auxiliary source stratum if not present. Please note the temptation to masquerade as a primary server by forcing the stratum to zero is decidedly dangerous, as it invites timing loops.</p>
+ <p>The <tt>mode</tt> keyword of the <tt>server</tt> command can be used to set the PPSAPI mode bits which determine the capture edge and echo options. See the <tt>/usr/include/sys/timepps.h</tt> header file for the bit definitions, which must be converted to their decimal equivalents. This overrides the fudge <tt>flag2</tt> option.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>PPS</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Specifies the PPS signal on-time edge: 0 for assert (default), 1 for clear.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Controls the kernel PPS discipline: 0 for disable (default), 1 for enable.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Not used by this driver.
+ </dl>
+ <h4>Additional Information</h4>
+ <p><a href="../refclock.html">Reference Clock Drivers</a></p>
+ <p>Reference</p>
+ <ol>
+ <li>Mogul, J., D. Mills, J. Brittenson, J. Stone and U. Windl. Pulse-per-second API for Unix-like operating systems, version 1. Request for Comments RFC-2783, Internet Engineering Task Force, March 2000, 31 pp.
+ </ol>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver23.html b/contrib/ntp/html/drivers/driver23.html
deleted file mode 100644
index c8b37be..0000000
--- a/contrib/ntp/html/drivers/driver23.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
-<html>
-
- <head>
- <meta name="GENERATOR" content="Adobe PageMill 3.0 per Windows">
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <title>PTB Modem Time Service</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
-
- <body>
- <h3>PTB Modem Time Service and other European Laboratories Time Services</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.23.<i>u</i><br>
- Reference ID: <tt>PTB</tt><br>
- Driver ID: <tt>ACTS_PTB</tt><br>
- Serial Port: <tt>/dev/ptb<i>u</i></tt>; 1200 baud, 8-bits, no parity<br>
- Requires: <tt>/usr/include/sys/termios.h</tt> header file with modem control</p>
- <h4>Description</h4>
- <p>This driver supports the PTB Automated Computer Time Service (ACTS) and it is a modified version of the NIST ACTS driver so see it for more informations..</p>
- <p>It periodically dials a prespecified telephone number, receives the PTB timecode data and calculates the local clock correction. It designed primarily for use when neither a radio clock nor connectivity to Internet time servers is available. For the best accuracy, the individual telephone line/modem delay needs to be calibrated using outside sources.</p>
- <p>The only change between this driver and the NIST one is the data format. Infact PTB data format is the following:</p>
- <p><font size="-1" face="Courier New">Data format<br>
- 0000000000111111111122222222223333333333444444444455555555556666666666777777777 7<br>
- 0123456789012345678901234567890123456789012345678901234567890123456789012345678 9<br>
- 1995-01-23 20:58:51 MEZ 10402303260219950123195849740+40000500 *<br>
- A B C D EF G H IJ K L M N O P Q R S T U V W XY Z&lt;CR&gt;&lt;LF&gt;<br>
- A year<br>
- B month<br>
- C day<br>
- D hour<br>
- E : normally<br>
- A for DST to ST switch first hour<br>
- B for DST to ST switch second hour if not marked in H<br>
- F minute<br>
- G second<br>
- H timezone<br>
- I day of week<br>
- J week of year<br>
- K day of year<br>
- L month for next ST/DST changes<br>
- M day<br>
- N hour<br>
- O UTC year<br>
- P UTC month<br>
- Q UTC day<br>
- R UTC hour<br>
- S UTC minute<br>
- T modified julian day (MJD)<br>
- U DUT1<br>
- V direction and month if leap second<br>
- W signal delay (assumed/measured)<br>
- X sequence number for additional text line in Y<br>
- Y additional text<br>
- Z on time marker (* - assumed delay / # measured delay)<br>
- &lt;CR&gt;!&lt;LF&gt; ! is second change !<br>
- </font></p>
- <p>This format is an ITU-R Recommendation (ITU-R TF583.4) and is now available from the primary timing centres of the following countries: Austria, Belgium, Germany, Italy, The Netherlands, Poland, Portugal, Romania, Spain, Sweden, Switzerland, Turkey, United Kingdom. Some examples are:</p>
- <ul>
- <li>In Germany by Physikalisch-Technische Bundesanstalt (PTB)'s timecode service. Phone number: +49 5 31 51 20 38.
- <p>For more detail, see <a href="http://www.ptb.de/english/org/4/43/433/disse.html">http://www.ptb.de/english/org/4/43/433/disse.htm</a></p>
- <li>In the UK by National Physical Laboratory (NPL)'s TRUETIME service. Phone number: 0891 516 333
- <p>For more detail, see <a href="http://www.npl.co.uk/npl/ctm/truetime.html">http://www.npl.co.uk/npl/ctm/truetime.html</a></p>
- <li>In Italy by Istituto Elettrotecnico Nazionale &quot;Galileo Ferrais&quot; (IEN)'s CTD service. Phone number: 166 11 46 15
- <p>For more detail, see <a href="http://www.ien.it/tf/time/Pagina42.html">http://www.ien.it/tf/time/Pagina42.html</a></p>
- <li>In Switzerland by Swiss Federal Office of Metrology 's timecode service. Phone number: 031 323 32 25
- <p>For more detail, see <a href="http://www.ofmet.admin.ch/de/labors/4/Zeitvert.html%20">http://www.ofmet.admin.ch/de/labors/4/Zeitvert.html </a></p>
- <li>In Sweden by SP Swedish National Testing and Research Institute 's timecode service. Phone number: +46 33 415783.
- <p>For more detail, see <a href="http://www.sp.se/metrology/timefreq/eng/tandf.htm">http://www.sp.se/metrology/timefreq/eng/tandf.htm</a><br>
- </p>
- </ul>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default PTB.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Not used by this driver.
- </dl>
- <h4>Additional Information</h4>
- <p>A keyword in the ntp.conf file permits a direct connection to a serial port of source of time like IEN CTD signal. It is sufficient to use the string DIRECT in place of the phone number.</p>
- <p>Example:</p>
- <p><font face="Courier New">server 127.127.23.1</font></p>
- <p><font face="Courier New">phone DIRECT</font></p>
- <h4>Additional Information</h4>
- <p><a href="../refclock.html">Reference Clock Drivers</a></p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
-
-</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver24.html b/contrib/ntp/html/drivers/driver24.html
deleted file mode 100644
index 8bdf837..0000000
--- a/contrib/ntp/html/drivers/driver24.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
-<html>
-
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
- <title>USNO Modem Time Service</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
-
- <body>
- <h3>USNO Modem Time Service</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.24.<i>u</i><br>
- Reference ID: <tt>USNO</tt><br>
- Driver ID: <tt>ACTS_USNO</tt><br>
- Serial Port: <tt>/dev/cua<i>u</i></tt>; 1200 baud, 8-bits, no parity<br>
- Requires: <tt>/usr/include/sys/termios.h</tt> header file with modem control</p>
- <h4>Description</h4>
- <p>No information available.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>USNO</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Enable <tt>clockstats</tt> recording if set.
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
-
-</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver26.html b/contrib/ntp/html/drivers/driver26.html
index 2facea1..f840a03 100644
--- a/contrib/ntp/html/drivers/driver26.html
+++ b/contrib/ntp/html/drivers/driver26.html
@@ -5,25 +5,28 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
- <title>Hewlett Packard 58503A GPS Receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
+ <title>Hewlett Packard 58503A GPS Receiver and HP Z3801A</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
</head>
<body>
- <h3>Hewlett Packard 58503A GPS Receiver</h3>
+ <h3>Hewlett Packard 58503A GPS Receiver and HP Z3801A</h3>
<hr>
<h4>Synopsis</h4>
<p>Address: 127.127.26.<i>u</i><br>
Reference ID: <tt>GPS</tt><br>
Driver ID: <tt>GPS_HP</tt><br>
- Serial Port: <tt>/dev/hpgps<i>u</i></tt>; 9600 baud, 8-bits, no parity</p>
+ Serial Port: <tt>/dev/hpgps<i>u</i></tt>; 9600 baud, 8-bits, no parity, 19200 baud 7-bits, odd parity for the HP Z3801A</p>
<h4>Description</h4>
- <p>This driver supports the HP 58503A Time and Frequency Reference Receiver. It uses HP SmartClock (TM) to implement an Enhanced GPS receiver. The receiver accuracy when locked to GPS in normal operation is better than 1 usec. The accuracy when operating in holdover is typically better than 10 us per day. It receiver should be operated with factory default settings. Initial driver operation: expects the receiver to be already locked to GPS, configured and able to output timecode format 2 messages.</p>
+ <p>This driver supports the HP 58503A Time and Frequency Reference Receiver and HP Z3801A GPS Receiver. They use HP SmartClock (TM) to implement an Enhanced GPS receiver. The receiver accuracy when locked to GPS in normal operation is better than 1 usec. The accuracy when operating in holdover is typically better than 10 us per day. It receiver should be operated with factory default settings. Initial driver operation: expects the receiver to be already locked to GPS, configured and able to output timecode format 2 messages.</p>
<p>The driver uses the poll sequence <tt>:PTIME:TCODE?</tt> to get a response from the receiver. The receiver responds with a timecode string of ASCII printing characters, followed by a &lt;cr&gt;&lt;lf&gt;, followed by a prompt string issued by the receiver, in the following format:</p>
- <pre>T#yyyymmddhhmmssMFLRVcc&lt;cr&gt;&lt;lf&gt;</pre>
- The driver processes the response at the &lt;cr&gt; and &lt;lf&gt;&lt;cr&gt; and &lt;lf&gt;, so what the driver sees is the prompt from the previous poll, followed by this timecode. The prompt from the current poll is (usually) left unread until the next poll. So (except on the very first poll) the driver sees this:
- <pre>T#yyyymmddhhmmssMFLRVcc&lt;cr&gt;&lt;lf&gt;</pre>
- <p>The T is the on-time character, at 980 msec. before the next 1PPS edge. The # is the timecode format type. We look for format 2. Without any of the CLK or PPS stuff, then, the receiver buffer timestamp at the &lt;cr&gt;y is 24 characters later, which is about 25 msec. at 9600 bps, so the first approximation for fudge time1 is nominally -0.955 seconds. This number probably needs adjusting for each machine / OS type, so far: -0.955000 on an HP 9000 Model 712/80 HP-UX 9.05 -0.953175 on an HP 9000 Model 370 HP-UX 9.10</p>
+ <pre>T#yyyymmddhhmmssMFLRVcc&lt;cr&gt;&lt;lf&gt;scpi &gt;</pre>
+ The driver processes the response at the &lt;cr&gt; and &lt;lf&gt;, so what the driver sees is the prompt from the previous poll, followed by this timecode. The prompt from the current poll is (usually) left unread until the next poll. So (except on the very first poll) the driver sees this:
+ <pre>scpi &gt;T#yyyymmddhhmmssMFLRVcc&lt;cr&gt;&lt;lf&gt;</pre>
+ <p>The T is the on-time character, at 980 msec. before the next 1PPS edge. The # is the timecode format type. We look for format 2. Without any of the CLK or PPS stuff, then, the receiver buffer timestamp at the &lt;cr&gt; is 24 characters later, which is about 25 msec. at 9600 bps, so the first approximation for fudge time1 is nominally -0.955 seconds. This number probably needs adjusting for each machine / OS type, so far: -0.955000 on an HP 9000 Model 712/80 HP-UX 9.05 -0.953175 on an HP 9000 Model 370 HP-UX 9.10</p>
+This driver will probably work with the 58503B and 59551A if they are setup appropriately.<P>
+To use an HP Z3801A, specify <tt>mode 1</tt> on the server config line to setup the right line paramters.<P>
+The timekeeping portion of HP's business has been sold to <a href="http://www.symmetricom.com/">Symmetricom</a>.<P>
<h4>Fudge Factors</h4>
<dl>
<dt><tt>time1 <i>time</i></tt>
@@ -44,7 +47,7 @@
<dd>Not used by this driver.
</dl>
<hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/contrib/ntp/html/drivers/driver27.html b/contrib/ntp/html/drivers/driver27.html
index ab406a6..8c2633c 100644
--- a/contrib/ntp/html/drivers/driver27.html
+++ b/contrib/ntp/html/drivers/driver27.html
@@ -2,155 +2,154 @@
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
- <title>Arcron MSF Receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
+ <title>Arcron MSF Receiver</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Arcron MSF Receiver</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.27.<i>u</i><br>
- Reference ID: <tt>MSFa</tt> / <tt>MSF</tt> / <tt>DCF</tt> / <tt>WWVB</tt><br>
- Driver ID: <tt>MSF_ARCRON</tt><br>
- Serial Port: <tt>/dev/arc<i>u</i></tt>; 300 baud, 8-bits, 2-stop, no parity<br>
- Features: <tt>tty_clk</tt></p>
- <h4>Description</h4>
- <p>This driver supports the Arcron MSF, DCF and WWVB receivers. The clock reports its ID as ``<tt>MSFa</tt>'', ``<tt>MSF</tt>'', ``<tt>DCF</tt>'' or ``<tt>WWVB</tt>'' to indicate the time source.</p>
- <p>This documentation describes v1.3 (2003/2/21) of the source and has been tested against ntpd 4.1.0 on linux x86. Changes from v1.1 and v1.2 include patches to work with the new ntp-4 code, clock support for DCF and WWVB configurable via mode flag, an option to ignore resync request (for those of us at the fringes of the WWVB signal, for instance), averaging of the signal quality poll and several bug fixes, code cleanup and standardizations. In all other respects, the driver works as per v1.1 if a mode is not specified.</p>
- <p>To use the alternate modes, the mode flag must be specified. If the mode flag is 0, or unspecified, the original MSF version is assumed. This should assure backwards compatibility and should not break existing setups.</p>
-
- <p>The previous documentation described version V1.1 (1997/06/23) of the source and had been tested (amongst others) against ntpd3-5.90 on Solaris-1 (SunOS 4.1.3_U1 on an SS1 serving as a router and firewall) and against ntpd3-5.90 on Solaris-2.5 (on a SS1+ and TurboSPARC 170MHz). That code will claimed increased stability, reduced jitter and more efficiency (fewer context switches) with the <tt>tty_clk</tt> discipline/STREAMS module installed, but this has not been tested. For a to-do list see the comments at the start of the code.</p>
- <p>This code has been significantly slimmed down since the V1.0 version, roughly halving the memory footprint of its code and data.</p>
- <p>This driver is designed to allow the unit to run from batteries as designed, for something approaching the 2.5 years expected in the usual stand-alone mode, but no battery-life measurements have been taken.</p>
- <p>Much of this code is originally from the other refclock driver files with thanks. The code was originally made to work with the clock by <a href="mailto:derek@toybox.demon.co.uk">Derek Mulcahy</a>, with modifications by <a href="mailto:d@hd.org">Damon Hart-Davis</a>. Thanks also to <a href="mailto:lyndond@sentinet.co.uk">Lyndon David</a> for some of the specifications of the clock. <a href="mailto:palfille@partners.org">Paul Alfille</a> added support for the WWVB clock. <a href="mailto:cprice@cs-home.com">Christopher Price</a> added enhanced support for the MSF, DCF and WWVB clocks.</p>
- <p>There is support for a Tcl/Tk monitor written by Derek Mulcahy that examines the output stats; see the <a href="http://www2.exnet.com/NTP/ARC/ARC.html">ARC Rugby MSF Receiver</a> page for more details and the code. Information on the WWVB version is available from <a href="http://www.arctime.com">Atomic Time</a> as their <a href="http://www.atomictime.com/Product17.html">Atomic Time PC</a>.</p>
- <p>Look at the notes at the start of the code for further information; some of the more important details follow.</p>
- <p>The driver interrogates the clock at each poll (ie every 64s by default) for a timestamp. The clock responds at the start of the next second (with the start bit of the first byte being on-time). In the default or original MSF mode, the time is in `local' format, including the daylight savings adjustment when it is in effect. The driver code converts the time back to UTC. In modes 1-3 the driver can be configured for UTC or local time depending on the setting of flag1.</p>
- <p>The clock claims to be accurate to within about 20ms of the broadcast time, and given the low data transmission speed from clock to host, and the fact that the clock is not in continuous sync with MSF, it seems sensible to set the `precision' of this clock to -5 or -4, -4 being used in this code, which builds in a reported dispersion of over 63ms (ie says ``This clock is not very good.''). You can improve the reported precision to -4 (and thus reduce the base dispersion to about 31ms) by setting the fudge <tt>flag3</tt> to <tt>1</tt>.</p>
- <p>Even a busy and slow IP link can yield lower dispersions than this from polls of primary time servers on the Internet, which reinforces the idea that this clock should be used as a backup in case of problems with such an IP link, or in the unfortunate event of failure of more accurate sources such as GPS.</p>
- <p>By default this clock reports itself to be at stratum 2 rather than the usual stratum 0 for a refclock, because it is not really suited to be used as other than a backup source. The stratum reported can be changed with the <tt>stratum</tt> directive to be whatever you like. After careful monitoring of your clock, and appropriate choice of the <tt>time1</tt> fudge factor to remove systematic errors in the clock's reported time, you might fudge the clock to stratum 1 to allow a stratum-2 secondary server to sync to it.</p>
- <p>In default mode, the driver code arranges to resync the clock to MSF at intervals of a little less than an hour (deliberately avoiding the same time each hour to avoid any systematic problems with the signal or host). Whilst resyncing, the driver supplements the normal polls for time from the clock with polls for the reception signal quality reported by the clock. If the signal quality is too low (0--2 out of a range of 0--5), we chose not to trust the clock until the next resync (which we bring forward by about half an hour). If we don't catch the resync, and so don't know the signal quality, we do trust the clock (because this would generally be when the signal is very good and a resync happens quickly), but we still bring the next resync forward and reduce the reported precision (and thus increase reported dispersion).</p>
- <p>If we force resyncs to MSF too often we will needlessly exhaust the batteries the unit runs from. During clock resync this driver tries to take enough time samples to avoid <tt>ntpd</tt> losing sync in case this clock is the current peer. By default the clock would only resync to MSF about once per day, which would almost certainly not be acceptable for NTP purposes.</p>
- <p>The driver does not force an immediate resync of the clock to MSF when it starts up to avoid excessive battery drain in case <tt>ntpd</tt> is going to be repeatedly restarted for any reason, and also to allow enough samples of the clock to be taken for <tt>ntpd</tt> to sync immediately to this clock (and not remain unsynchronised or to sync briefly to another configured peer, only to hop back in a few poll times, causing unnecessary disturbance). This behaviour should not cause problems because the driver will not accept the timestamps from the clock if the status flag delivered with the time code indicates that the last resync attempt was unsuccessful, so the initial timestamps will be close to reality, even if with up to a day's clock drift in the worst case (the clock by default resyncs to MSF once per day).</p>
- <p>When alternate modes 1-3 are selected, the driver can be configured to ignore the resync requests by setting <tt>flag2</tt> to 1. This allows clocks at the fringe of the signal to resync at night when signals are stronger.</p>
- <p>The clock has a peculiar RS232 arrangement where the transmit lines are powered from the receive lines, presumably to minimise battery drain. This arrangement has two consequences:</p>
- <ul>
- <li>Your RS232 interface must drive both +ve and -ve
- <li>You must (in theory) wait for an echo and a further 10ms between characters
- </ul>
- <p>This driver, running on standard Sun and x86 hardware, seems to work fine; note the use of the <tt>send_slow()</tt> routine to queue up command characters to be sent once every two seconds.</p>
- <p>Three commands are sent to the clock by this driver. Each command consists of a single letter (of which only the bottom four bits are significant), followed by a CR (ASCII 13). Each character sent to the clock should be followed by a delay to allow the unit to echo the character, and then by a further 10ms. Following the echo of the command string, there may be a response (ie in the case of the <tt>g</tt> and <tt>o</tt> commands below), which in the case of the <tt>o</tt> command may be delayed by up to 1 second so as the start bit of the first byte of the response can arrive on time. The commands and their responses are:</p>
- <dl>
- <dt><tt>g</tt> CR
- <dd>Request for signal quality. Answer only valid during (late part of) resync to MSF signal. The response consists of two characters as follows:
- <ol>
- <dl compact>
- <dt>bit 7
- <dd>parity
- <dt>bit 6
- <dd>always 0
- <dt>bit 5
- <dd>always 1
- <dt>bit 4
- <dd>always 1
- <dt>bit 3
- <dd>always 0
- <dt>bit 2
- <dd>always 0
- <dt>bit 1
- <dd>always 1
- <dt>bit 0
- <dd>= 0 if no reception attempt at the moment, = 1 if reception attempt (ie resync) in progress
- </dl>
- <dl compact>
- <dt>bit 7
- <dd>parity
- <dt>bit 6
- <dd>always 0
- <dt>bit 5
- <dd>always 1
- <dt>bit 4
- <dd>always 1
- <dt>bit 3
- <dd>always 0
- <dt>bit 2--0
- <dd>reception signal quality in the range 0--5 (very poor to very good); if in the range 0--2 no successful reception is to be expected. The reported value drops to zero when not resyncing, ie when first returned byte is not `3'.
- </dl>
- </ol>
- <dt><tt>h</tt> CR
- <dd>Request to resync to signal. Can take up from about 30s to 360s. Drains batteries so should not be used excessively. After this the clock time and date should be correct and the phase within 20ms of time as transmitted from the source signal (remember to allow for propagation time). By default the clock resyncs once per day in the late evening/early morning (presumably to catch transitions to/from daylight saving time quickly). This driver code, by default, resyncs at least once per hour to minimise clock wander.
- <dt><tt>o</tt> CR
- <dd>Request timestamp. Start bit of first byte of response is on-time, so may be delayed up to 1 second. Note that the driver will convert time to GMT, if required. The response data is as follows:
- <ol>
- <li>hours tens (hours range from 00 to 23)
- <li>hours units
- <li>minutes tens (minutes range from 00 to 59)
- <li>minutes units
- <li>seconds tens (seconds presumed to range from 00 to 60 to allow for leap second)
- <li>seconds units
- <li>day of week 1 (Monday) to 7 (Sunday)
- <li>day of month tens (day ranges from 01 to 31)
- <li>day of month units
- <li>month tens (months range from 01 to 12)
- <li>month units
- <li>year tens (years range from 00 to 99)
- <li>year units
- <li>BST/UTC status (Ignored in WWVB version)
- <dl compact>
- <dt>bit 7
- <dd>parity
- <dt>bit 6
- <dd>always 0
- <dt>bit 5
- <dd>always 1
- <dt>bit 4
- <dd>always 1
- <dt>bit 3
- <dd>(MSF) always 0<br>
- (WWVB) Leap year indicator bit<br>
- 0 = non-leap year<br>
- 1 = leap year
- <dt>bit 2
- <dd>= (MSF) 1 if UTC is in effect (reverse of bit 1)<br>
- (WWVB) Leap second warning bit
- <dt>bit 1
- <dd>= (MSF)1 if BST is in effect (reverse of bit 2)<br>
- = (WWVB) 0 if ST is in effect, 1 if DST is in effect, 1 if transition from ST with bit 0 is set to 0
- <dt>bit 0
- <dd>= (MSF)1 if BST/UTC change pending<br>
- = (WWVB) 0 if ST is in effect, 1 if DST is in effect, 0 if transition from DST with bit 1 is set to 0
- </dl>
- <li>clock status
- <dl compact>
- <dt>bit 7
- <dd>parity
- <dt>bit 6
- <dd>always 0
- <dt>bit 5
- <dd>always 1
- <dt>bit 4
- <dd>always 1
- <dt>bit 3
- <dd>= 1 if low battery is detected
- <dt>bit 2
- <dd>= 1 if last resync failed (though officially undefined for the MSF clock, officially defined for WWVB)
- <dt>bit 1
- <dd>= 1 if at least one reception attempt was successful<br>
- (MSF) since 0230<br>
- (DCF) since 0300<br>
- (WWVB) resets if not successful between 0300-0400
- <dt>bit 0
- <dd>= 1 if the clock has valid time---reset to zero when clock is reset (eg at power-up), and set to 1 after first successful resync attempt.
- </dl>
- </ol>
- <p>The driver only accepts time from the clock if the bottom three bits of the status byte are <tt>011</tt> or <tt>flag2</tt> is set to 1 to ignore resync requests. For the MSF clock, if the UK parliament decides to move us to +0100/+0200 time as opposed to the current +0000/+0100 time, it is not clear what effect that will have on the time broadcast by MSF, and therefore on this driver's usefulness.</p>
- </dl>
- <p>A typical <tt>ntp.conf</tt> configuration file for this driver might be:</p>
- <pre># hostname(n) means we expect (n) to be the stratum at which hostname runs.
+ <body>
+ <h3>Arcron MSF Receiver</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.27.<i>u</i><br>
+ Reference ID: <tt>MSFa</tt> / <tt>MSF</tt> / <tt>DCF</tt> / <tt>WWVB</tt><br>
+ Driver ID: <tt>MSF_ARCRON</tt><br>
+ Serial Port: <tt>/dev/arc<i>u</i></tt>; 300 baud, 8-bits, 2-stop, no parity<br>
+ Features: <tt>tty_clk</tt></p>
+ <h4>Description</h4>
+ <p>This driver supports the Arcron MSF, DCF and WWVB receivers. The clock reports its ID as &quot;<tt>MSFa</tt>'', &quot;<tt>MSF</tt>'', &quot;<tt>DCF</tt>'' or &quot;<tt>WWVB</tt>'' to indicate the time source.</p>
+ <p>This documentation describes v1.3 (2003/2/21) of the source and has been tested against ntpd 4.1.0 on linux x86. Changes from v1.1 and v1.2 include patches to work with the new ntp-4 code, clock support for DCF and WWVB configurable via mode flag, an option to ignore resync request (for those of us at the fringes of the WWVB signal, for instance), averaging of the signal quality poll and several bug fixes, code cleanup and standardizations. In all other respects, the driver works as per v1.1 if a mode is not specified.</p>
+ <p>To use the alternate modes, the mode flag must be specified. If the mode flag is 0, or unspecified, the original MSF version is assumed. This should assure backwards compatibility and should not break existing setups.</p>
+ <p>The previous documentation described version V1.1 (1997/06/23) of the source and had been tested (amongst others) against ntpd3-5.90 on Solaris-1 (SunOS 4.1.3_U1 on an SS1 serving as a router and firewall) and against ntpd3-5.90 on Solaris-2.5 (on a SS1+ and TurboSPARC 170MHz). That code will claimed increased stability, reduced jitter and more efficiency (fewer context switches) with the <tt>tty_clk</tt> discipline/STREAMS module installed, but this has not been tested. For a to-do list see the comments at the start of the code.</p>
+ <p>This code has been significantly slimmed down since the V1.0 version, roughly halving the memory footprint of its code and data.</p>
+ <p>This driver is designed to allow the unit to run from batteries as designed, for something approaching the 2.5 years expected in the usual stand-alone mode, but no battery-life measurements have been taken.</p>
+ <p>Much of this code is originally from the other refclock driver files with thanks. The code was originally made to work with the clock by <a href="mailto:derek@toybox.demon.co.uk">Derek Mulcahy</a>, with modifications by <a href="mailto:d@hd.org">Damon Hart-Davis</a>. Thanks also to <a href="mailto:lyndond@sentinet.co.uk">Lyndon David</a> for some of the specifications of the clock. <a href="mailto:palfille@partners.org">Paul Alfille</a> added support for the WWVB clock. <a href="mailto:cprice@cs-home.com">Christopher Price</a> added enhanced support for the MSF, DCF and WWVB clocks.</p>
+ <p>There is support for a Tcl/Tk monitor written by Derek Mulcahy that examines the output stats; see the <a href="http://www2.exnet.com/NTP/ARC/ARC.html">ARC Rugby MSF Receiver</a> page for more details and the code. Information on the WWVB version is available from <a href="http://www.arctime.com">Atomic Time</a> as their <a href="http://www.atomictime.com/Product17.html">Atomic Time PC</a>.</p>
+ <p>Look at the notes at the start of the code for further information; some of the more important details follow.</p>
+ <p>The driver interrogates the clock at each poll (ie every 64s by default) for a timestamp. The clock responds at the start of the next second (with the start bit of the first byte being on-time). In the default or original MSF mode, the time is in `local' format, including the daylight savings adjustment when it is in effect. The driver code converts the time back to UTC. In modes 1-3 the driver can be configured for UTC or local time depending on the setting of flag1.</p>
+ <p>The clock claims to be accurate to within about 20ms of the broadcast time, and given the low data transmission speed from clock to host, and the fact that the clock is not in continuous sync with MSF, it seems sensible to set the `precision' of this clock to -5 or -4, -4 being used in this code, which builds in a reported dispersion of over 63ms (ie says ``This clock is not very good.''). You can improve the reported precision to -4 (and thus reduce the base dispersion to about 31ms) by setting the fudge <tt>flag3</tt> to <tt>1</tt>.</p>
+ <p>Even a busy and slow IP link can yield lower dispersions than this from polls of primary time servers on the Internet, which reinforces the idea that this clock should be used as a backup in case of problems with such an IP link, or in the unfortunate event of failure of more accurate sources such as GPS.</p>
+ <p>By default this clock reports itself to be at stratum 2 rather than the usual stratum 0 for a refclock, because it is not really suited to be used as other than a backup source. The stratum reported can be changed with the <tt>stratum</tt> directive to be whatever you like. After careful monitoring of your clock, and appropriate choice of the <tt>time1</tt> fudge factor to remove systematic errors in the clock's reported time, you might fudge the clock to stratum 1 to allow a stratum-2 secondary server to sync to it.</p>
+ <p>In default mode, the driver code arranges to resync the clock to MSF at intervals of a little less than an hour (deliberately avoiding the same time each hour to avoid any systematic problems with the signal or host). Whilst resyncing, the driver supplements the normal polls for time from the clock with polls for the reception signal quality reported by the clock. If the signal quality is too low (0--2 out of a range of 0--5), we chose not to trust the clock until the next resync (which we bring forward by about half an hour). If we don't catch the resync, and so don't know the signal quality, we do trust the clock (because this would generally be when the signal is very good and a resync happens quickly), but we still bring the next resync forward and reduce the reported precision (and thus increase reported dispersion).</p>
+ <p>If we force resyncs to MSF too often we will needlessly exhaust the batteries the unit runs from. During clock resync this driver tries to take enough time samples to avoid <tt>ntpd</tt> losing sync in case this clock is the current peer. By default the clock would only resync to MSF about once per day, which would almost certainly not be acceptable for NTP purposes.</p>
+ <p>The driver does not force an immediate resync of the clock to MSF when it starts up to avoid excessive battery drain in case <tt>ntpd</tt> is going to be repeatedly restarted for any reason, and also to allow enough samples of the clock to be taken for <tt>ntpd</tt> to sync immediately to this clock (and not remain unsynchronised or to sync briefly to another configured peer, only to hop back in a few poll times, causing unnecessary disturbance). This behaviour should not cause problems because the driver will not accept the timestamps from the clock if the status flag delivered with the time code indicates that the last resync attempt was unsuccessful, so the initial timestamps will be close to reality, even if with up to a day's clock drift in the worst case (the clock by default resyncs to MSF once per day).</p>
+ <p>When alternate modes 1-3 are selected, the driver can be configured to ignore the resync requests by setting <tt>flag2</tt> to 1. This allows clocks at the fringe of the signal to resync at night when signals are stronger.</p>
+ <p>The clock has a peculiar RS232 arrangement where the transmit lines are powered from the receive lines, presumably to minimise battery drain. This arrangement has two consequences:</p>
+ <ul>
+ <li>Your RS232 interface must drive both +ve and -ve
+ <li>You must (in theory) wait for an echo and a further 10ms between characters
+ </ul>
+ <p>This driver, running on standard Sun and x86 hardware, seems to work fine; note the use of the <tt>send_slow()</tt> routine to queue up command characters to be sent once every two seconds.</p>
+ <p>Three commands are sent to the clock by this driver. Each command consists of a single letter (of which only the bottom four bits are significant), followed by a CR (ASCII 13). Each character sent to the clock should be followed by a delay to allow the unit to echo the character, and then by a further 10ms. Following the echo of the command string, there may be a response (ie in the case of the <tt>g</tt> and <tt>o</tt> commands below), which in the case of the <tt>o</tt> command may be delayed by up to 1 second so as the start bit of the first byte of the response can arrive on time. The commands and their responses are:</p>
+ <dl>
+ <dt><tt>g</tt> CR
+ <dd>Request for signal quality. Answer only valid during (late part of) resync to MSF signal. The response consists of two characters as follows:
+ <ol>
+ <dl compact>
+ <dt>bit 7
+ <dd>parity
+ <dt>bit 6
+ <dd>always 0
+ <dt>bit 5
+ <dd>always 1
+ <dt>bit 4
+ <dd>always 1
+ <dt>bit 3
+ <dd>always 0
+ <dt>bit 2
+ <dd>always 0
+ <dt>bit 1
+ <dd>always 1
+ <dt>bit 0
+ <dd>= 0 if no reception attempt at the moment, = 1 if reception attempt (ie resync) in progress
+ </dl>
+ <dl compact>
+ <dt>bit 7
+ <dd>parity
+ <dt>bit 6
+ <dd>always 0
+ <dt>bit 5
+ <dd>always 1
+ <dt>bit 4
+ <dd>always 1
+ <dt>bit 3
+ <dd>always 0
+ <dt>bit 2--0
+ <dd>reception signal quality in the range 0--5 (very poor to very good); if in the range 0--2 no successful reception is to be expected. The reported value drops to zero when not resyncing, ie when first returned byte is not `3'.
+ </dl>
+ </ol>
+ <dt><tt>h</tt> CR
+ <dd>Request to resync to signal. Can take up from about 30s to 360s. Drains batteries so should not be used excessively. After this the clock time and date should be correct and the phase within 20ms of time as transmitted from the source signal (remember to allow for propagation time). By default the clock resyncs once per day in the late evening/early morning (presumably to catch transitions to/from daylight saving time quickly). This driver code, by default, resyncs at least once per hour to minimise clock wander.
+ <dt><tt>o</tt> CR
+ <dd>Request timestamp. Start bit of first byte of response is on-time, so may be delayed up to 1 second. Note that the driver will convert time to GMT, if required. The response data is as follows:
+ <ol>
+ <li>hours tens (hours range from 00 to 23)
+ <li>hours units
+ <li>minutes tens (minutes range from 00 to 59)
+ <li>minutes units
+ <li>seconds tens (seconds presumed to range from 00 to 60 to allow for leap second)
+ <li>seconds units
+ <li>day of week 1 (Monday) to 7 (Sunday)
+ <li>day of month tens (day ranges from 01 to 31)
+ <li>day of month units
+ <li>month tens (months range from 01 to 12)
+ <li>month units
+ <li>year tens (years range from 00 to 99)
+ <li>year units
+ <li>BST/UTC status (Ignored in WWVB version)
+ <dl compact>
+ <dt>bit 7
+ <dd>parity
+ <dt>bit 6
+ <dd>always 0
+ <dt>bit 5
+ <dd>always 1
+ <dt>bit 4
+ <dd>always 1
+ <dt>bit 3
+ <dd>(MSF) always 0<br>
+ (WWVB) Leap year indicator bit<br>
+ 0 = non-leap year<br>
+ 1 = leap year
+ <dt>bit 2
+ <dd>= (MSF) 1 if UTC is in effect (reverse of bit 1)<br>
+ (WWVB) Leap second warning bit
+ <dt>bit 1
+ <dd>= (MSF)1 if BST is in effect (reverse of bit 2)<br>
+ = (WWVB) 0 if ST is in effect, 1 if DST is in effect, 1 if transition from ST with bit 0 is set to 0
+ <dt>bit 0
+ <dd>= (MSF)1 if BST/UTC change pending<br>
+ = (WWVB) 0 if ST is in effect, 1 if DST is in effect, 0 if transition from DST with bit 1 is set to 0
+ </dl>
+ <li>clock status
+ <dl compact>
+ <dt>bit 7
+ <dd>parity
+ <dt>bit 6
+ <dd>always 0
+ <dt>bit 5
+ <dd>always 1
+ <dt>bit 4
+ <dd>always 1
+ <dt>bit 3
+ <dd>= 1 if low battery is detected
+ <dt>bit 2
+ <dd>= 1 if last resync failed (though officially undefined for the MSF clock, officially defined for WWVB)
+ <dt>bit 1
+ <dd>= 1 if at least one reception attempt was successful<br>
+ (MSF) since 0230<br>
+ (DCF) since 0300<br>
+ (WWVB) resets if not successful between 0300-0400
+ <dt>bit 0
+ <dd>= 1 if the clock has valid time---reset to zero when clock is reset (eg at power-up), and set to 1 after first successful resync attempt.
+ </dl>
+ </ol>
+ <p>The driver only accepts time from the clock if the bottom three bits of the status byte are <tt>011</tt> or <tt>flag2</tt> is set to 1 to ignore resync requests. For the MSF clock, if the UK parliament decides to move us to +0100/+0200 time as opposed to the current +0000/+0100 time, it is not clear what effect that will have on the time broadcast by MSF, and therefore on this driver's usefulness.</p>
+ </dl>
+ <p>A typical <tt>ntp.conf</tt> configuration file for this driver might be:</p>
+ <pre># hostname(n) means we expect (n) to be the stratum at which hostname runs.
#------------------------------------------------------------------------------
# SYNCHRONISATION PARTNERS
@@ -188,22 +187,22 @@ restrict 11.22.33.9 nomodify
# Allow anything from the local host.
restrict 127.0.0.1</pre>
- There are a few <tt>#define</tt>s in the code that you might wish to play with:
- <dl>
- <dt><tt>ARCRON_KEEN</tt>
- <dd>With this defined, the code is relatively trusting of the clock, and assumes that you will have the clock as one of a few time sources, so will bend over backwards to use the time from the clock when available and avoid <tt>ntpd</tt> dropping sync from the clock where possible. You may wish to undefine this, especially if you have better sources of time or your reception is ropey. However, there are many checks built in even with this flag defined.
- <dt><tt>ARCRON_MULTIPLE_SAMPLES</tt>
- <dd>When is defined, we regard each character in the returned timecode as at a known delay from the start of the second, and use the smallest (most negative) offset implied by any such character, ie with the smallest kernel-induced display, and use that. This helps to reduce jitter and spikes.
- <dt><tt>ARCRON_LEAPSECOND_KEEN</tt>
- <dd>When is defined, we try to do a resync to MSF as soon as possible in the first hour of the morning of the first day of the first and seventh months, ie just after a leap-second insertion or deletion would happen if it is going to. This should help compensate for the fact that this clock does not continuously sample MSF, which compounds the fact that MSF itself gives no warning of an impending leap-second event. This code did not seem functional at the leap-second insertion of 30th June 1997 so is by default disabled.
- <dt><tt>PRECISION</tt>
- <dd>Currently set to <tt>-4</tt>, but you may wish to set it to <tt>-5</tt> if you are more conservative, or to <tt>-6</tt> if you have particularly good experience with the clock and you live on the edge. Note that the <tt>flag3</tt> fudge value will improve the reported dispersion one notch if clock signal quality is known good. So maybe just leave this alone.
- </dl>
- <h4>Monitor Data</h4>
- <p>Each timecode is written to the <tt>clockstats</tt> file with a signal quality value appended (`0'--`5' as reported by the clock, or `6' for unknown).</p>
- <p>Each resync and result (plus gaining or losing MSF sync) is logged to the system log at level <tt>LOG_NOTICE</tt>; note that each resync drains the unit's batteries, so the syslog entry seems justified.</p>
- <p>Syslog entries are of the form:</p>
- <pre>May 10 10:15:24 oolong ntpd[615]: ARCRON: unit 0: sending resync command
+ There are a few <tt>#define</tt>s in the code that you might wish to play with:
+ <dl>
+ <dt><tt>ARCRON_KEEN</tt>
+ <dd>With this defined, the code is relatively trusting of the clock, and assumes that you will have the clock as one of a few time sources, so will bend over backwards to use the time from the clock when available and avoid <tt>ntpd</tt> dropping sync from the clock where possible. You may wish to undefine this, especially if you have better sources of time or your reception is ropey. However, there are many checks built in even with this flag defined.
+ <dt><tt>ARCRON_MULTIPLE_SAMPLES</tt>
+ <dd>When is defined, we regard each character in the returned timecode as at a known delay from the start of the second, and use the smallest (most negative) offset implied by any such character, ie with the smallest kernel-induced display, and use that. This helps to reduce jitter and spikes.
+ <dt><tt>ARCRON_LEAPSECOND_KEEN</tt>
+ <dd>When is defined, we try to do a resync to MSF as soon as possible in the first hour of the morning of the first day of the first and seventh months, ie just after a leap-second insertion or deletion would happen if it is going to. This should help compensate for the fact that this clock does not continuously sample MSF, which compounds the fact that MSF itself gives no warning of an impending leap-second event. This code did not seem functional at the leap-second insertion of 30th June 1997 so is by default disabled.
+ <dt><tt>PRECISION</tt>
+ <dd>Currently set to <tt>-4</tt>, but you may wish to set it to <tt>-5</tt> if you are more conservative, or to <tt>-6</tt> if you have particularly good experience with the clock and you live on the edge. Note that the <tt>flag3</tt> fudge value will improve the reported dispersion one notch if clock signal quality is known good. So maybe just leave this alone.
+ </dl>
+ <h4>Monitor Data</h4>
+ <p>Each timecode is written to the <tt>clockstats</tt> file with a signal quality value appended (`0'--`5' as reported by the clock, or `6' for unknown).</p>
+ <p>Each resync and result (plus gaining or losing MSF sync) is logged to the system log at level <tt>LOG_NOTICE</tt>; note that each resync drains the unit's batteries, so the syslog entry seems justified.</p>
+ <p>Syslog entries are of the form:</p>
+ <pre>May 10 10:15:24 oolong ntpd[615]: ARCRON: unit 0: sending resync command
May 10 10:17:32 oolong ntpd[615]: ARCRON: sync finished, signal quality 5: OK, will use clock
May 10 11:13:01 oolong ntpd[615]: ARCRON: unit 0: sending resync command
May 10 11:14:06 oolong ntpd[615]: ARCRON: sync finished, signal quality -1: UNKNOWN, will use clock anyway
@@ -211,39 +210,38 @@ May 10 11:41:49 oolong ntpd[615]: ARCRON: unit 0: sending resync command
May 10 11:43:57 oolong ntpd[615]: ARCRON: sync finished, signal quality 5: OK, will use clock
May 10 12:39:26 oolong ntpd[615]: ARCRON: unit 0: sending resync command
May 10 12:41:34 oolong ntpd[615]: ARCRON: sync finished, signal quality 3: OK, will use clock</pre>
- <h4>Fudge Factors</h4>
- <p></p>
- <dl>
- <dt><tt>mode 0 | 1 | 2 | 3</tt></dt>
- <dd>Specifies the clock hardware model. This parameter is optional, it defaults to the original mode of operation.
- <dd>Supported modes of operation:
- <dd>0 - Default, Original MSF
- <dd>1 - Updated MSF
- <dd>2 - New DCF77
- <dd>3 - New WWVB
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. On a Sun SparcStation 1 running SunOS 4.1.3_U1, with the receiver in London, a value of 0.020 (20ms) seems to be appropriate.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not currently used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 2. It is suggested that the clock be not be fudged higher than stratum 1 so that it is used a backup time source rather than a primary when more accurate sources are available.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>MSFa</tt>. When used in modes 1-3, the driver will report either <tt>MSF</tt>, <tt>DCF</tt>, or <tt>WWVB</tt> respectively.
- <dt><tt>flag1 0 | 1</tt>
- <dd>(Modes 1-3) If set to 0 (the default), the clock is set to UTC time. If set to 1, the clock is set to localtime.
- <dt><tt>flag2 0 | 1</tt>
- <dd>(Modes 1-3) If set to 0 (the default), the clock will be forced to resync approximately every hour. If set to 1, the clock will resync per normal operations (approximately midnight).
- <dt><tt>flag3 0 | 1</tt>
- <dd>If set to 1, better precision is reported (and thus lower dispersion) while clock's received signal quality is known to be good.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Not used by this driver.
- </dl>
- <h4>Additional Information</h4>
- <p><a href="../refclock.html">Reference Clock Drivers</a><br>
- <a href="http://www2.exnet.com/NTP/ARC/ARC.html">ARC Rugby MSF Receiver</a></p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
-
-</html>
+ <h4>Fudge Factors</h4>
+ <p></p>
+ <dl>
+ <dt><tt>mode 0 | 1 | 2 | 3</tt>
+ <dd>Specifies the clock hardware model. This parameter is optional, it defaults to the original mode of operation.
+ <dd>Supported modes of operation:
+ <dd>0 - Default, Original MSF
+ <dd>1 - Updated MSF
+ <dd>2 - New DCF77
+ <dd>3 - New WWVB
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. On a Sun SparcStation 1 running SunOS 4.1.3_U1, with the receiver in London, a value of 0.020 (20ms) seems to be appropriate.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not currently used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 2. It is suggested that the clock be not be fudged higher than stratum 1 so that it is used a backup time source rather than a primary when more accurate sources are available.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>MSFa</tt>. When used in modes 1-3, the driver will report either <tt>MSF</tt>, <tt>DCF</tt>, or <tt>WWVB</tt> respectively.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>(Modes 1-3) If set to 0 (the default), the clock is set to UTC time. If set to 1, the clock is set to localtime.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>(Modes 1-3) If set to 0 (the default), the clock will be forced to resync approximately every hour. If set to 1, the clock will resync per normal operations (approximately midnight).
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>If set to 1, better precision is reported (and thus lower dispersion) while clock's received signal quality is known to be good.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Not used by this driver.
+ </dl>
+ <h4>Additional Information</h4>
+ <p><a href="../refclock.html">Reference Clock Drivers</a><br>
+ <a href="http://www2.exnet.com/NTP/ARC/ARC.html">ARC Rugby MSF Receiver</a></p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
+</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver28.html b/contrib/ntp/html/drivers/driver28.html
index 5013ae3..244de1a 100644
--- a/contrib/ntp/html/drivers/driver28.html
+++ b/contrib/ntp/html/drivers/driver28.html
@@ -6,7 +6,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
<title>Shared memoy Driver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
</head>
<body>
@@ -70,7 +70,7 @@
<p><a href="../refclock.html">Reference Clock Drivers</a></p>
</dl>
<hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver29.html b/contrib/ntp/html/drivers/driver29.html
index 65600bf..479978f 100644
--- a/contrib/ntp/html/drivers/driver29.html
+++ b/contrib/ntp/html/drivers/driver29.html
@@ -2,796 +2,775 @@
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <title>Trimble Palisade Receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <title>Trimble Palisade Receiver</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
- <h1><font size="+2">Trimble Palisade Receiver</font>
- <hr>
- </h1>
- <h2><img src="../pic/driver29.gif" nosave height="100" width="420"></h2>
- <h2><font size="+1">Synopsis</font></h2>
- <table>
- <tr>
- <td>
- <div align="right">
- <tt>Address:&nbsp;</tt></div>
- </td>
- <td><b>127.127.29.<i>u</i></b></td>
- </tr>
- <tr>
- <td>
- <div align="right">
- <tt>Reference ID:</tt></div>
- </td>
- <td><a name="REFID"></a><b>GPS</b></td>
- </tr>
- <tr>
- <td>
- <div align="right">
- <tt>Driver ID:</tt></div>
- </td>
- <td><b>GPS_PALISADE</b></td>
- </tr>
- <tr>
- <td>
- <div align="right">
- <tt>Serial Port:</tt></div>
- </td>
- <td><b>/dev/palisade<i>u</i></b></td>
- </tr>
- <tr>
- <td>
- <div align="right">
- <tt><font size="+1">Serial I/O:</font></tt></div>
- </td>
- <td><b>9600 baud, 8-bits, 1-stop, odd parity</b></td>
- </tr>
- </table>
- <h2><font size="+1">Description</font></h2>
- The <b>refclock_palisade</b> driver supports <a href="http://www.trimble.com/products/ntp">Trimble Navigation's Palisade Smart Antenna GPS receiver</a>.<br>
- Additional software and information about the Palisade GPS is available from: <a href="http://www.trimble.com/oem/ntp">http://www.trimble.com/oem/ntp</a>.<br>
- Latest NTP driver source, executables and documentation is maintained at: <a href="ftp://ftp.trimble.com/pub/ntp">ftp://ftp.trimble.com/pub/ntp</a>
- <p>This documentation describes version 7.12 of the GPS Firmware and version 2.46 (July 15, 1999) and later, of the driver source.<br>
- &nbsp;</p>
- <h2><font size="+1">Operating System Compatibility</font></h2>
- The Palisade driver has been tested on the following software and hardware platforms:<br>
- &nbsp;
- <center>
- <table>
- <tr>
- <td valign="CENTER" width="23%">Platform</td>
- <td valign="CENTER">Operating System</td>
- <td>NTP Sources</td>
- <td>Accuracy</td>
- </tr>
- <tr>
- <td valign="CENTER" width="23%">i386 (PC)&nbsp;</td>
- <td valign="CENTER">Linux</td>
- <td>NTP Distribution</td>
- <td>10 us</td>
- </tr>
- <tr>
- <td>i386 (PC)&nbsp;</td>
- <td>Windows NT</td>
- <td><a href="ftp://ftp.trimble.com/pub/ntp">ftp://ftp.trimble.com/pub/ntp</a></td>
- <td>1 ms</td>
- </tr>
- <tr>
- <td valign="CENTER" width="23%">SUN</td>
- <td valign="CENTER">Solaris 2.x</td>
- <td>NTP Distribution</td>
- <td>50 us</td>
- </tr>
- <tr>
- <td valign="CENTER" width="23%">Hewlett-Packard</td>
- <td valign="CENTER">HPUX 9, 10, 11</td>
- <td><a href="http://us-support.external.hp.com">http://us-support.external.hp.com</a></td>
- <td>50 us</td>
- </tr>
- <tr>
- <td>Various</td>
- <td>Free BSD</td>
- <td>NTP Distribution</td>
- <td>20 us</td>
- </tr>
- </table>
- </center>
- <h2><font size="+1">GPS Receiver</font></h2>
- The Palisade GPS receiver is an 8-channel smart antenna, housing the GPS receiver, antenna and interface in a single unit, and is designed for rooftop deployment in static timing applications.
- <p>Palisade generates a PPS synchronized to UTC within +/- 100 ns.&nbsp; The Palisade's external event input with 40 nanosecond resolution is utilized by the Palisade NTP driver for asynchronous precision time transfer.</p>
- <p>No user initialization of the receiver is required. This driver is compatible with the following versions of Palisade:<br>
- &nbsp;</p>
- <center>
- <table>
- <tr>
- <td valign="CENTER">
- <center>
- Version</center>
- </td>
- <td valign="TOP">
- <center>
- Event Input</center>
- </td>
- <td valign="CENTER">
- <center>
- Trimble Part Number</center>
- </td>
- </tr>
- <tr>
- <td valign="CENTER">
- <center>
- 7.02</center>
- </td>
- <td valign="TOP">
- <center>
- No</center>
- </td>
- <td valign="CENTER">
- <center>
- 26664-00</center>
- </td>
- </tr>
- <tr>
- <td align="CENTER" valign="CENTER">
- <center>
- 7.02E</center>
- </td>
- <td valign="TOP">
- <center>
- Yes</center>
- </td>
- <td valign="CENTER">
- <center>
- 26664-10</center>
- </td>
- </tr>
- <tr>
- <td valign="CENTER">
- <center>
- 7.12</center>
- </td>
- <td valign="TOP">
- <center>
- Yes</center>
- </td>
- <td valign="CENTER">
- <center>
- 38158-00</center>
- </td>
- </tr>
- </table>
- </center>
- <dl>
- <dl>
- Note: When using Palisade 26664-00, you must set fudge flag2 to 1 in <b>ntp.conf</b>. See <a href="#Configuration">configuration</a>.
- </dl>
- <dl>
- <h3><font size="+1">GPS&nbsp;<a name="Installation"></a>Installation</font></h3>
- A location with unobstructed view of the horizon is recommended. Palisade is designed to be securely mounted atop standard 3/4 inch threaded pipe.
- <p>The 12 conductor (dia. 10 mm)&nbsp; power and I/O cable must be routed from the rooftop site to the NTP server and properly strain relieved.</p>
- <h3><font size="+1">GPS&nbsp;<a name="Connection"></a>Connection</font></h3>
- The Palisade is equipped with dual (A &amp; B) RS-422 serial interfaces and a differential TTL PPS output. An RS-232 / RS-422 Interface Module is supplied with the Palisade NTP Synchronization Kit. Palisade <a href="#PortA">port A</a> must be connected to the NTP host server. Maximum antenna cable length is 500 meters. See the <a href="#Pinouts">pinouts</a> table for detailed connection Information.
- <p>Palisade's <a href="#PortB">port B</a> provides a TSIP (Trimble Standard Interface Protocol) interface for diagnostics, configuration, and monitoring. Port B and the PPS output are not currently used by the Palisade NTP reference clock driver.<br>
- &nbsp;</p>
- </dl>
- </dl>
- <h2><font size="+1">O/S Serial Port Configuration</font></h2>
- The driver attempts to open the device <b><tt><a href="#REFID">/dev/palisade<i>u</i></a></tt></b> where <b><i>u</i></b> is the NTP refclock unit number as defined by the LSB of the refclock address.&nbsp; Valid refclock unit numbers are 0 - 3.
- <p>The user is expected to provide a symbolic link to an available serial port device.&nbsp; This is typically performed by a command such as:</p>
- <blockquote>
- <tt>ln -s /dev/ttyS0 /dev/palisade0</tt></blockquote>
- Windows NT does not support symbolic links to device files. COM<b>x</b>: is used by the driver, based on the refclock unit number, where unit 1 corresponds to COM<b>1</b>: and unit 3 corresponds to COM3:<br>
- &nbsp;
- <h2><a name="Configuration"></a><font size="+1">NTP Configuration</font></h2>
- Palisade NTP configuration file <b><tt>&quot;ntp.conf&quot;</tt></b> with event polling:<br>
- <tt>#------------------------------------------------------------------------------</tt><br>
- <tt># The Primary reference</tt><br>
- <tt>server 127.127.29.0 # Trimble Palisade GPS Refclock Unit #0</tt><br>
- <tt>peer terrapin.csc.ncsu.edu # internet server</tt><br>
- <tt># Drift file for expedient re-synchronization after downtime or reboot.</tt><br>
- <tt>driftfile /etc/ntp.drift</tt><br>
- <tt>#------------------------------------------------------------------------------</tt>
- <p>Configuration without event polling:<br>
- <tt>#------------------------------------------------------------------------------</tt><br>
- <tt># The Primary reference</tt><br>
- <tt>server 127.127.29.0 # Trimble Palisade GPS (Stratum 1).</tt><br>
- <tt># Set packet delay</tt><br>
- <tt><a href="#time1">fudge 127.127.29.0 time1 0.020</a></tt><br>
- <tt># and set flag2 to turn off event polling.</tt><br>
- <tt><a href="#flag2">fudge 127.127.29.0 flag2 1</a></tt><br>
- <tt>#------------------------------------------------------------------------------</tt><br>
- &nbsp;</p>
- <h2><a name="TimeTransfer"></a><font size="+1">Time Transfer and Polling</font></h2>
- Time transfer to the NTP host is performed via the Palisade's comprehensive time packet output. The time packets are output once per second, and whenever an event timestamp is requested.
- <p>The driver requests an event time stamp at the end of each polling interval, by pulsing the RTS (request to send) line on the serial port. The Palisade GPS responds with a time stamped event packet.</p>
- <p>Time stamps are reported by the Palisade with respect to UTC time. The GPS receiver must download UTC offset information from GPS satellites. After an initial UTC download, the receiver will always start with correct UTC offset information.<br>
- &nbsp;</p>
- <h2><font size="+1">Run NTP in Debugging Mode</font></h2>
- The following procedure is recommended for installing and testing a Palisade NTP driver:
- <ol>
- <li>Perform initial checkout procedures. Place the GPS receiver outdoors; with clear view of the sky. Allow the receiver to obtain an UTC almanac.
- <li>Verify presence of timing packets by observing the 1 Hz (PPS) led on the interface module. It should flash once per second.
- <li>Connect Palisade's port A to the NTP host.
- <li>Configure NTP and the serial I/O port on the host system.
- <li>Initially use <tt><a href="#flag2">fudge flag2</a></tt> in <b><a href="#Configuration">ntp.conf</a>,</b> to disable event polling (see configuration).
- <li>Run NTP in debug mode (-d -d), to observe Palisade_receive events.
- <li>The driver reports the <a href="#TrackingStatus">tracking status of the receiver</a>. Make sure it is tracking several satellites.
- <li>Remove fudge flag2 and restart <b>ntpd</b> in debug mode to observe palisade_receive events.
- <li>If event polling fails, verify the <a href="#Pinouts">connections</a> and that the host hardware supports RTS control.
- </ol>
- <h2><font size="+1">Event Logging</font></h2>
- System and Event log entries are generated by NTP to report significant system events. Administrators should monitor the system log to observe NTP error messages. Log entries generated by the Palisade NTP reference clock driver will be of the form:
- <blockquote>
- <pre>Nov 14 16:16:21 terrapin ntpd[1127]: Palisade #0: <i>message</i></pre>
- </blockquote>
- <h2><font size="+1">Fudge Factors</font></h2>
- <dl>
- <dt><a name="time1"></a><tt><font size="+1"><a href="#Configuration">time1 <i>time</i></a></font></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. If event capture is not used, time1 should be set to 20 milliseconds to correct serial line and operating system delays incurred in capturing time stamps from the synchronous packets.
- <dt><tt><font size="+1">stratum <i>number</i></font></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt><font size="+1"><a href="#REFID">refid <i>string</i></a></font></tt>
- <dd>Specifies the driver reference identifier, <b>GPS</b>.
- <dt><a name="flag2"></a><tt><font size="+1"><a href="#Configuration">flag2 0 | 1</a></font></tt>
- <dd>When set to 1, driver does not use hardware event capture. The synchronous packet output by the receiver at the beginning of each second is time stamped by the driver. If triggering the event pulse fails, the driver falls back to this mode automatically.
- </dl>
- <h2><font size=+1>Mode Parameter</font></h2>
- <dl>
- <dt><tt><font size=+1>mode <i>number</i></font></tt></dt>
- <dd>The mode parameter to the server command specifies the specific hardware this driver is for. The default is 0 for a normal Trimble Palisade. The only other option at this time is 1 for a Endrun Praecis in Trimble emulation mode.
- </dl>
- <h2><font size="+1">DEFINEs</font></h2>
- The following constants are defined in the driver source code. These defines may be modified to improve performance or adapt to new operating systems.<br>
- &nbsp;
- <center>
- <table border>
- <tr>
- <td><b>Label</b></td>
- <td>Definition</td>
- <td>Default Value</td>
- </tr>
- <tr>
- <td>DEVICE</td>
- <td>The serial port device to be used by the driver</td>
- <td>/dev/palisade<b><i>u</i></b></td>
- </tr>
- <tr>
- <td>PRECISION</td>
- <td>Accuracy of time transfer</td>
- <td>1 microsecond</td>
- </tr>
- <tr>
- <td>CURRENT_UTC</td>
- <td>Valid GPS - UTC offset</td>
- <td>13</td>
- </tr>
- <tr>
- <td>SPEED232</td>
- <td>Host RS-232 baud rate</td>
- <td>B9600</td>
- </tr>
- <tr>
- <td>TRMB_MINPOLL&nbsp;</td>
- <td>Minimum polling interval</td>
- <td>5 (32 seconds)</td>
- </tr>
- <tr>
- <td>TRMB_MAXPOLL</td>
- <td>Maximum interval between polls</td>
- <td>7 (128 seconds)</td>
- </tr>
- </table>
- </center>
- <h2><a name="DataFormat"></a><font size="+1">Data Format</font></h2>
- Palisade port A can output two synchronous time packets. The NTP driver can use either packet for synchronization. Packets are formatted as follows:
- <h3><b><font size="+0">Packet 8F-AD (Primary NTP Packet)</font></b></h3>
- <center>
- <table>
- <tr>
- <td>Byte</td>
- <td>Item</td>
- <td>Type</td>
- <td>Meaning</td>
- </tr>
- <tr>
- <td>0</td>
- <td>Sub-Packet ID</td>
- <td>BYTE</td>
- <td>Subcode 0xAD</td>
- </tr>
- <tr>
- <td>1 - 2</td>
- <td>Event Count</td>
- <td>INTEGER</td>
- <td>External event count recorded (0 = PPS)</td>
- </tr>
- <tr>
- <td>3 - 10</td>
- <td>Fractional Second</td>
- <td>DOUBLE</td>
- <td>Time elapsed in current second (s)</td>
- </tr>
- <tr>
- <td>11</td>
- <td>Hour</td>
- <td>BYTE</td>
- <td>Hour (0 - 23)</td>
- </tr>
- <tr>
- <td>12</td>
- <td>Minute</td>
- <td>BYTE</td>
- <td>Minute (0 - 59)</td>
- </tr>
- <tr>
- <td>13</td>
- <td>Second</td>
- <td>BYTE</td>
- <td>Second (0 - 59; 60 = leap)</td>
- </tr>
- <tr>
- <td>14</td>
- <td>Day</td>
- <td>BYTE</td>
- <td>Date (1 - 31)</td>
- </tr>
- <tr>
- <td>15</td>
- <td>Month</td>
- <td>BYTE</td>
- <td>Month (1 - 12)</td>
- </tr>
- <tr>
- <td>16 - 17</td>
- <td>Year</td>
- <td>INTEGER</td>
- <td>Year (4 digit)</td>
- </tr>
- <tr>
- <td>18</td>
- <td>Receiver Status</td>
- <td>BYTE</td>
- <td>Tracking Status</td>
- </tr>
- <tr>
- <td>19</td>
- <td>UTC Flags</td>
- <td>BYTE</td>
- <td>Leap Second Flags</td>
- </tr>
- <tr>
- <td>20</td>
- <td>Reserved</td>
- <td>BYTE</td>
- <td>Contains 0xFF</td>
- </tr>
- <tr>
- <td>21</td>
- <td>Reserved</td>
- <td>BYTE</td>
- <td>Contains 0xFF</td>
- </tr>
- </table>
- </center>
- <blockquote>
- <h4>Leap Second Flag Definition:</h4>
- Bit 0:&nbsp; (1) UTC Time is available<br>
- Bits 1 - 3: Undefined<br>
- Bit 4:&nbsp; (1) Leap Scheduled: Leap second pending asserted by GPS control segment.<br>
- Bit 5:&nbsp; (1) Leap Pending: set 24 hours before, until beginning of leap second.<br>
- Bit 6:&nbsp; (1) GPS Leap Warning: 6 hours before until 6 hours after leap event<br>
- Bit 7:&nbsp; (1) Leap In Progress. Only set during the leap second.
- <h4><a name="TrackingStatus"></a>Tracking Status Flag Definitions:</h4>
- </blockquote>
- <center>
- <table width="712" border="0" cellspacing="0">
- <tr>
- <td valign="CENTER" width="5%">Code</td>
- <td valign="CENTER" width="59%">Meaning</td>
- <td>Accuracy</td>
- <td>Receiver Mode</td>
- </tr>
- <tr>
- <td>0</td>
- <td>Receiver is Navigating</td>
- <td>+/- 1 us</td>
- <td>Self Survey</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">1</td>
- <td valign="CENTER" width="59%">Static 1 Sat. Timing Mode&nbsp;</td>
- <td>+/- 1 us</td>
- <td>1-D Timing</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">2</td>
- <td valign="CENTER" width="59%">Approximate Time</td>
- <td>20 - 50 ms</td>
- <td>Acquisition</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">3</td>
- <td valign="CENTER" width="59%">Startup</td>
- <td>N/A</td>
- <td>Initialization</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">4</td>
- <td valign="CENTER" width="59%">Startup</td>
- <td>N/A</td>
- <td>Initialization</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">5</td>
- <td valign="CENTER" width="59%">Dilution of Position too High&nbsp;</td>
- <td>5 ppm</td>
- <td>Self Survey</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">6</td>
- <td valign="CENTER" width="59%">Static 1 Sat. Timing: Sat. not usable</td>
- <td>5 ppm</td>
- <td>1-D Timing</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">7</td>
- <td valign="CENTER" width="59%">No Satellites Usable</td>
- <td>N/A</td>
- <td>Self Survey</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">8</td>
- <td valign="CENTER" width="59%">Only 1 Satellite Usable</td>
- <td>20 - 50 ms</td>
- <td>Self Survey</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">9</td>
- <td valign="CENTER" width="59%">Only 2 Satellite Usable</td>
- <td>20 - 50 ms</td>
- <td>Self Survey</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">10</td>
- <td valign="CENTER" width="59%">Only 3 Satellites Usable</td>
- <td>20 - 50 ms</td>
- <td>Self Survey</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">11</td>
- <td valign="CENTER" width="59%">Invalid Solution</td>
- <td>N/A</td>
- <td>Error</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">12</td>
- <td valign="CENTER" width="59%">Differential Corrections&nbsp;</td>
- <td>N/A</td>
- <td>N/A</td>
- </tr>
- <tr>
- <td valign="CENTER" width="5%">13</td>
- <td valign="CENTER" width="59%">Overdetermined Fixes</td>
- <td>+/- 100 ns</td>
- <td>Timing Steady State</td>
- </tr>
- </table>
- </center>
- <h3><b><font size="+0">Packet 8F-0B (Comprehensive Timing Packet)</font></b></h3>
- <center>
- <table border="0" cellspacing="0">
- <tr>
- <td valign="CENTER" width="9%">Byte</td>
- <td valign="CENTER" width="27%">Item</td>
- <td valign="CENTER" width="16%">Type</td>
- <td valign="CENTER" width="48%">Meaning</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">0</td>
- <td valign="CENTER" width="27%">Sub-Packet ID</td>
- <td valign="CENTER" width="16%">BYTE</td>
- <td valign="CENTER" width="48%">Subcode 0x0B</td>
- </tr>
- <tr>
- <td valign="TOP" width="9%">1 - 2</td>
- <td valign="TOP" width="27%">Event Count</td>
- <td valign="TOP" width="16%">INTEGER</td>
- <td valign="TOP" width="48%">External event count recorded (0 = PPS)</td>
- </tr>
- <tr>
- <td valign="TOP" width="9%">3 - 10</td>
- <td valign="TOP" width="27%">UTC / GPS TOW</td>
- <td valign="TOP" width="16%">DOUBLE</td>
- <td valign="TOP" width="48%">UTC / GPS time of week (seconds)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">11</td>
- <td valign="CENTER" width="27%">Date</td>
- <td valign="CENTER" width="16%">BYTE</td>
- <td valign="CENTER" width="48%">Day of Month</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">12</td>
- <td valign="CENTER" width="27%">Month</td>
- <td valign="CENTER" width="16%">BYTE</td>
- <td valign="CENTER" width="48%">Month of Event</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">13 - 14</td>
- <td valign="CENTER" width="27%">Year</td>
- <td valign="CENTER" width="16%">INT</td>
- <td valign="CENTER" width="48%">Year of event</td>
- </tr>
- <tr>
- <td valign="TOP" width="9%">15</td>
- <td valign="TOP" width="27%">Receiver Mode</td>
- <td valign="TOP" width="16%">BYTE</td>
- <td valign="TOP" width="48%">Receiver operating dimensions:&nbsp;<br>
- 0: Horizontal (2D)&nbsp;<br>
- 1: Full Position (3D)&nbsp;<br>
- 2: Single Satellite (0D)&nbsp;<br>
- 3: Automatic (2D / 3D)&nbsp;<br>
- 4: DGPS reference&nbsp;<br>
- 5: Clock hold (2D)&nbsp;<br>
- 6: Over determined Clock</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">15 - 17</td>
- <td valign="CENTER" width="27%">UTC Offset</td>
- <td valign="CENTER" width="16%">INTEGER</td>
- <td valign="CENTER" width="48%">UTC Offset value (seconds)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">18 - 25</td>
- <td valign="CENTER" width="27%">Oscillator Bias</td>
- <td valign="CENTER" width="16%">DOUBLE</td>
- <td valign="CENTER" width="48%">Oscillator BIAS (meters)</td>
- </tr>
- <tr>
- <td valign="TOP" width="9%">26 - 33</td>
- <td valign="TOP" width="27%">Oscillator Drift Rate</td>
- <td valign="TOP" width="16%">DOUBLE</td>
- <td valign="TOP" width="48%">Oscillator Drift (meters / second)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">34 - 37</td>
- <td valign="CENTER" width="27%">Bias Uncertainty</td>
- <td valign="CENTER" width="16%">SINGLE</td>
- <td valign="CENTER" width="48%">Oscillator bias uncertainty (meters)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">38 - 41</td>
- <td valign="CENTER" width="27%">Drift Uncertainty</td>
- <td valign="CENTER" width="16%">SINGLE</td>
- <td valign="CENTER" width="48%">Oscillator bias rate uncertainty (m / sec)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">42 - 49</td>
- <td valign="CENTER" width="27%">Latitude</td>
- <td valign="CENTER" width="16%">DOUBLE</td>
- <td valign="CENTER" width="48%">Latitude in radians</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">50 - 57</td>
- <td valign="CENTER" width="27%">Longitude</td>
- <td valign="CENTER" width="16%">DOUBLE</td>
- <td valign="CENTER" width="48%">Longitude in radians</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">58 - 65</td>
- <td valign="CENTER" width="27%">Altitude</td>
- <td valign="CENTER" width="16%">DOUBLE</td>
- <td valign="CENTER" width="48%">Altitude above mean sea level, in meters</td>
- </tr>
- <tr>
- <td valign="CENTER" width="9%">66 - 73</td>
- <td valign="CENTER" width="27%">Satellite ID</td>
- <td valign="CENTER" width="16%">BYTE</td>
- <td valign="CENTER" width="48%">SV Id No. of tracked satellites</td>
- </tr>
- </table>
- </center>
- <h2><a name="Pinouts"></a><font size="+1">Pinouts</font></h2>
- <a href="#Connection">The following connections are required when connecting Palisade with a host:</a><br>
- &nbsp;<br>
- &nbsp;
- <center>
- <table>
- <tr>
- <td><u>Description</u></td>
- <td><b>Host</b></td>
- <td></td>
- <td></td>
- <td><b>Palisade&nbsp;</b></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td><a name="PortA"></a><b>Port A</b></td>
- <td><u>DB-9</u></td>
- <td><u>DB-25</u></td>
- <td></td>
- <td><u>RS-232</u></td>
- <td><u>RS-422</u></td>
- <td><u>Palisade Pin</u></td>
- </tr>
- <tr>
- <td>Receive Data&nbsp;</td>
- <td>2</td>
- <td>3</td>
- <td>&lt;--&gt;</td>
- <td>Green</td>
- <td>Green / Blue</td>
- <td>8 (T-) &amp; 10 (T+)</td>
- </tr>
- <tr>
- <td>Request to Send</td>
- <td>7</td>
- <td>4</td>
- <td>&lt;--&gt;</td>
- <td>Gray</td>
- <td>Gray / White</td>
- <td>6 (R-) &amp; 7 (R+)</td>
- </tr>
- <tr>
- <td>Signal Ground</td>
- <td>5</td>
- <td>7</td>
- <td>&lt;--&gt;</td>
- <td>Black</td>
- <td>Black</td>
- <td>9 (GND)</td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td><a name="PortB"></a><b>Port B</b></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- </tr>
- <tr>
- <td>Receive Data&nbsp;</td>
- <td>2</td>
- <td>3</td>
- <td>&lt;--&gt;</td>
- <td>Brown</td>
- <td>Brown / Yellow</td>
- <td>4 (T-) &amp; 5 (T+)</td>
- </tr>
- <tr>
- <td>Transmit Data</td>
- <td>3</td>
- <td>2</td>
- <td>&lt;--&gt;</td>
- <td>Violet</td>
- <td>Orange/ Violet</td>
- <td>2 (R-) &amp; 3 (R+)</td>
- </tr>
- <tr>
- <td>Signal Ground</td>
- <td>5</td>
- <td>7</td>
- <td>&lt;--&gt;</td>
- <td>Black</td>
- <td>Black</td>
- <td>9 (GND)</td>
- </tr>
- </table>
- </center>
- <blockquote>
- Note: If driving the RS-422 inputs on the Palisade single ended, i.e. using the Green and Gray connections only, does not work on all serial ports. Use of the Palisade NTP Synchronization Interface Module is recommended.</blockquote>
- <blockquote>
- The 12 pin connector pinout definition:<br>
- Face the round 12 pin connector at the end of the cable, with the notch turned upwards.<br>
- Pin 1 is to the left of the notch. Pins 2 - 8 wrap around the bottom, counterclockwise to pin 9 on the right of the notch. Pin 10 is just below the notch. Pins 10 (top), 11 (bottom left) and 12 (bottom right) form a triangle in the center of the connector.</blockquote>
- <blockquote>
- <a name="SIM"></a>Pinouts for the Palisade NTP host adapter (Trimble PN 37070) DB-25 M connector are as follows:</blockquote>
- <center>
- <table width="682" border="0" cellspacing="0">
- <tr>
- <td valign="CENTER" width="12%">DB-25M</td>
- <td valign="CENTER" width="31%">Conductor&nbsp;</td>
- <td valign="CENTER" width="16%">Palisade</td>
- <td valign="CENTER" width="41%">Description</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">1&nbsp;</td>
- <td valign="CENTER" width="31%">Red</td>
- <td valign="CENTER" width="16%">1</td>
- <td valign="CENTER" width="41%">Power</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">7&nbsp;</td>
- <td valign="CENTER" width="31%">Black</td>
- <td valign="CENTER" width="16%">9</td>
- <td valign="CENTER" width="41%">Ground</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">9</td>
- <td valign="CENTER" width="31%">Black/White</td>
- <td valign="CENTER" width="16%">12</td>
- <td valign="CENTER" width="41%">PPS -</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">10&nbsp;</td>
- <td valign="CENTER" width="31%">Green</td>
- <td valign="CENTER" width="16%">8</td>
- <td valign="CENTER" width="41%">Transmit Port A (T-)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">11&nbsp;</td>
- <td valign="CENTER" width="31%">Brown</td>
- <td valign="CENTER" width="16%">4</td>
- <td valign="CENTER" width="41%">Transmit Port B (T-)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">12&nbsp;</td>
- <td valign="CENTER" width="31%">Gray</td>
- <td valign="CENTER" width="16%">7</td>
- <td valign="CENTER" width="41%">Receive Port A (R+)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">13</td>
- <td valign="CENTER" width="31%">Orange</td>
- <td valign="CENTER" width="16%">3</td>
- <td valign="CENTER" width="41%">Receive Port B (R+)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">21</td>
- <td valign="CENTER" width="31%">Orange/White</td>
- <td valign="CENTER" width="16%">11</td>
- <td valign="CENTER" width="41%">PPS +</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">22</td>
- <td valign="CENTER" width="31%">Blue</td>
- <td valign="CENTER" width="16%">10</td>
- <td valign="CENTER" width="41%">Transmit Port A (T+)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">23</td>
- <td valign="CENTER" width="31%">Yellow</td>
- <td valign="CENTER" width="16%">5</td>
- <td valign="CENTER" width="41%">Transmit Port B (T+)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">24</td>
- <td valign="CENTER" width="31%">White</td>
- <td valign="CENTER" width="16%">6</td>
- <td valign="CENTER" width="41%">Receive Port A (R-)</td>
- </tr>
- <tr>
- <td valign="CENTER" width="12%">25</td>
- <td valign="CENTER" width="31%">Violet</td>
- <td valign="CENTER" width="16%">2</td>
- <td valign="CENTER" width="41%">Receive Port B (R-)</td>
- </tr>
- </table>
- </center>
- <p></p>
- <hr>
- <p>Questions or Comments:<br>
- <a href="mailto:sven_dietrich@trimble.com">Sven Dietrich</a><br>
- <a href="http://www.trimble.com/">Trimble Navigation Ltd.</a></p>
- <p>(last updated July 29, 1999)</p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- ;
- </body>
+ <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+ <h1><font size="+2">Trimble Palisade Receiver</font>
+ <hr>
+ </h1>
+ <h2><img src="../pic/driver29.gif" alt="gif" nosave height="100" width="420"></h2>
+ <h2><font size="+1">Synopsis</font></h2>
+ <table>
+ <tr>
+ <td>
+ <div align="right">
+ <tt>Address:&nbsp;</tt></div>
+ </td>
+ <td><b>127.127.29.<i>u</i></b></td>
+ </tr>
+ <tr>
+ <td>
+ <div align="right">
+ <tt>Reference ID:</tt></div>
+ </td>
+ <td><a name="REFID"></a><b>GPS</b></td>
+ </tr>
+ <tr>
+ <td>
+ <div align="right">
+ <tt>Driver ID:</tt></div>
+ </td>
+ <td><b>GPS_PALISADE</b></td>
+ </tr>
+ <tr>
+ <td>
+ <div align="right">
+ <tt>Serial Port:</tt></div>
+ </td>
+ <td><b>/dev/palisade<i>u</i></b></td>
+ </tr>
+ <tr>
+ <td>
+ <div align="right">
+ <tt><font size="+1">Serial I/O:</font></tt></div>
+ </td>
+ <td><b>9600 baud, 8-bits, 1-stop, odd parity</b></td>
+ </tr>
+ </table>
+ <h2><font size="+1">Description</font></h2>
+ The <b>refclock_palisade</b> driver supports <a href="http://www.trimble.com/products/ntp">Trimble Navigation's Palisade Smart Antenna GPS receiver</a>.<br>
+ Additional software and information about the Palisade GPS is available from: <a href="http://www.trimble.com/oem/ntp">http://www.trimble.com/oem/ntp</a>.<br>
+ Latest NTP driver source, executables and documentation is maintained at: <a href="ftp://ftp.trimble.com/pub/ntp">ftp://ftp.trimble.com/pub/ntp</a>
+ <p>This documentation describes version 7.12 of the GPS Firmware and version 2.46 (July 15, 1999) and later, of the driver source.<br>&nbsp;</p>
+ <h2><font size="+1">Operating System Compatibility</font></h2>
+ The Palisade driver has been tested on the following software and hardware platforms:<br>&nbsp;
+ <center>
+ <table>
+ <tr>
+ <td valign="CENTER" width="23%">Platform</td>
+ <td valign="CENTER">Operating System</td>
+ <td>NTP Sources</td>
+ <td>Accuracy</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="23%">i386 (PC)&nbsp;</td>
+ <td valign="CENTER">Linux</td>
+ <td>NTP Distribution</td>
+ <td>10 us</td>
+ </tr>
+ <tr>
+ <td>i386 (PC)&nbsp;</td>
+ <td>Windows NT</td>
+ <td><a href="ftp://ftp.trimble.com/pub/ntp">ftp://ftp.trimble.com/pub/ntp</a></td>
+ <td>1 ms</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="23%">SUN</td>
+ <td valign="CENTER">Solaris 2.x</td>
+ <td>NTP Distribution</td>
+ <td>50 us</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="23%">Hewlett-Packard</td>
+ <td valign="CENTER">HPUX 9, 10, 11</td>
+ <td><a href="http://us-support.external.hp.com">http://us-support.external.hp.com</a></td>
+ <td>50 us</td>
+ </tr>
+ <tr>
+ <td>Various</td>
+ <td>Free BSD</td>
+ <td>NTP Distribution</td>
+ <td>20 us</td>
+ </tr>
+ </table>
+ </center>
+ <h2><font size="+1">GPS Receiver</font></h2>
+ The Palisade GPS receiver is an 8-channel smart antenna, housing the GPS receiver, antenna and interface in a single unit, and is designed for rooftop deployment in static timing applications.
+ <p>Palisade generates a PPS synchronized to UTC within +/- 100 ns.&nbsp; The Palisade's external event input with 40 nanosecond resolution is utilized by the Palisade NTP driver for asynchronous precision time transfer.</p>
+ <p>No user initialization of the receiver is required. This driver is compatible with the following versions of Palisade:<br>&nbsp;</p>
+ <center>
+ <table>
+ <tr>
+ <td valign="CENTER">
+ <center>
+ Version</center>
+ </td>
+ <td valign="TOP">
+ <center>
+ Event Input</center>
+ </td>
+ <td valign="CENTER">
+ <center>
+ Trimble Part Number</center>
+ </td>
+ </tr>
+ <tr>
+ <td valign="CENTER">
+ <center>
+ 7.02</center>
+ </td>
+ <td valign="TOP">
+ <center>
+ No</center>
+ </td>
+ <td valign="CENTER">
+ <center>
+ 26664-00</center>
+ </td>
+ </tr>
+ <tr>
+ <td align="CENTER" valign="CENTER">
+ <center>
+ 7.02E</center>
+ </td>
+ <td valign="TOP">
+ <center>
+ Yes</center>
+ </td>
+ <td valign="CENTER">
+ <center>
+ 26664-10</center>
+ </td>
+ </tr>
+ <tr>
+ <td valign="CENTER">
+ <center>
+ 7.12</center>
+ </td>
+ <td valign="TOP">
+ <center>
+ Yes</center>
+ </td>
+ <td valign="CENTER">
+ <center>
+ 38158-00</center>
+ </td>
+ </tr>
+ </table>
+ </center>
+ <dl>
+ <dl>
+ Note: When using Palisade 26664-00, you must set fudge flag2 to 1 in <b>ntp.conf</b>. See <a href="#Configuration">configuration</a>.
+ </dl>
+ <dl>
+ <h3><font size="+1">GPS&nbsp;<a name="Installation"></a>Installation</font></h3>
+ A location with unobstructed view of the horizon is recommended. Palisade is designed to be securely mounted atop standard 3/4 inch threaded pipe.
+ <p>The 12 conductor (dia. 10 mm)&nbsp; power and I/O cable must be routed from the rooftop site to the NTP server and properly strain relieved.</p>
+ <h3><font size="+1">GPS&nbsp;<a name="Connection"></a>Connection</font></h3>
+ The Palisade is equipped with dual (A &amp; B) RS-422 serial interfaces and a differential TTL PPS output. An RS-232 / RS-422 Interface Module is supplied with the Palisade NTP Synchronization Kit. Palisade <a href="#PortA">port A</a> must be connected to the NTP host server. Maximum antenna cable length is 500 meters. See the <a href="#Pinouts">pinouts</a> table for detailed connection Information.
+ <p>Palisade's <a href="#PortB">port B</a> provides a TSIP (Trimble Standard Interface Protocol) interface for diagnostics, configuration, and monitoring. Port B and the PPS output are not currently used by the Palisade NTP reference clock driver.<br>&nbsp;</p>
+ </dl>
+ </dl>
+ <h2><font size="+1">O/S Serial Port Configuration</font></h2>
+ The driver attempts to open the device <b><tt><a href="#REFID">/dev/palisade<i>u</i></a></tt></b> where <b><i>u</i></b> is the NTP refclock unit number as defined by the LSB of the refclock address.&nbsp; Valid refclock unit numbers are 0 - 3.
+ <p>The user is expected to provide a symbolic link to an available serial port device.&nbsp; This is typically performed by a command such as:</p>
+ <blockquote>
+ <tt>ln -s /dev/ttyS0 /dev/palisade0</tt></blockquote>
+ Windows NT does not support symbolic links to device files. COM<b>x</b>: is used by the driver, based on the refclock unit number, where unit 1 corresponds to COM<b>1</b>: and unit 3 corresponds to COM3:<br>&nbsp;
+ <h2><a name="Configuration"></a><font size="+1">NTP Configuration</font></h2>
+ Palisade NTP configuration file <b><tt>&quot;ntp.conf&quot;</tt></b> with event polling:<br>
+ <tt>#------------------------------------------------------------------------------</tt><br>
+ <tt># The Primary reference</tt><br>
+ <tt>server 127.127.29.0 # Trimble Palisade GPS Refclock Unit #0</tt><br>
+ <tt>peer terrapin.csc.ncsu.edu # internet server</tt><br>
+ <tt># Drift file for expedient re-synchronization after downtime or reboot.</tt><br>
+ <tt>driftfile /etc/ntp.drift</tt><br>
+ <tt>#------------------------------------------------------------------------------</tt>
+ <p>Configuration without event polling:<br>
+ <tt>#------------------------------------------------------------------------------</tt><br>
+ <tt># The Primary reference</tt><br>
+ <tt>server 127.127.29.0 # Trimble Palisade GPS (Stratum 1).</tt><br>
+ <tt># Set packet delay</tt><br>
+ <tt><a href="#time1">fudge 127.127.29.0 time1 0.020</a></tt><br>
+ <tt># and set flag2 to turn off event polling.</tt><br>
+ <tt><a href="#flag2">fudge 127.127.29.0 flag2 1</a></tt><br>
+ <tt>#------------------------------------------------------------------------------</tt><br>&nbsp;</p>
+ <h2><a name="TimeTransfer"></a><font size="+1">Time Transfer and Polling</font></h2>
+ Time transfer to the NTP host is performed via the Palisade's comprehensive time packet output. The time packets are output once per second, and whenever an event timestamp is requested.
+ <p>The driver requests an event time stamp at the end of each polling interval, by pulsing the RTS (request to send) line on the serial port. The Palisade GPS responds with a time stamped event packet.</p>
+ <p>Time stamps are reported by the Palisade with respect to UTC time. The GPS receiver must download UTC offset information from GPS satellites. After an initial UTC download, the receiver will always start with correct UTC offset information.<br>&nbsp;</p>
+ <h2><font size="+1">Run NTP in Debugging Mode</font></h2>
+ The following procedure is recommended for installing and testing a Palisade NTP driver:
+ <ol>
+ <li>Perform initial checkout procedures. Place the GPS receiver outdoors; with clear view of the sky. Allow the receiver to obtain an UTC almanac.
+ <li>Verify presence of timing packets by observing the 1 Hz (PPS) led on the interface module. It should flash once per second.
+ <li>Connect Palisade's port A to the NTP host.
+ <li>Configure NTP and the serial I/O port on the host system.
+ <li>Initially use <tt><a href="#flag2">fudge flag2</a></tt> in <b><a href="#Configuration">ntp.conf</a>,</b> to disable event polling (see configuration).
+ <li>Run NTP in debug mode (-d -d), to observe Palisade_receive events.
+ <li>The driver reports the <a href="#TrackingStatus">tracking status of the receiver</a>. Make sure it is tracking several satellites.
+ <li>Remove fudge flag2 and restart <b>ntpd</b> in debug mode to observe palisade_receive events.
+ <li>If event polling fails, verify the <a href="#Pinouts">connections</a> and that the host hardware supports RTS control.
+ </ol>
+ <h2><font size="+1">Event Logging</font></h2>
+ System and Event log entries are generated by NTP to report significant system events. Administrators should monitor the system log to observe NTP error messages. Log entries generated by the Palisade NTP reference clock driver will be of the form:
+ <blockquote>
+ <pre>Nov 14 16:16:21 terrapin ntpd[1127]: Palisade #0: <i>message</i></pre>
+ </blockquote>
+ <h2><font size="+1">Fudge Factors</font></h2>
+ <dl>
+ <dt><a name="time1"></a><tt><font size="+1"><a href="#Configuration">time1 <i>time</i></a></font></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. If event capture is not used, time1 should be set to 20 milliseconds to correct serial line and operating system delays incurred in capturing time stamps from the synchronous packets.
+ <dt><tt><font size="+1">stratum <i>number</i></font></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt><font size="+1"><a href="#REFID">refid <i>string</i></a></font></tt>
+ <dd>Specifies the driver reference identifier, <b>GPS</b>.
+ <dt><a name="flag2"></a><tt><font size="+1"><a href="#Configuration">flag2 0 | 1</a></font></tt>
+ <dd>When set to 1, driver does not use hardware event capture. The synchronous packet output by the receiver at the beginning of each second is time stamped by the driver. If triggering the event pulse fails, the driver falls back to this mode automatically.
+ </dl>
+ <h2><font size="+1">Mode Parameter</font></h2>
+ <dl>
+ <dt><tt><font size="+1">mode <i>number</i></font></tt>
+ <dd>The mode parameter to the server command specifies the specific hardware this driver is for. The default is 0 for a normal Trimble Palisade. The only other option at this time is 1 for a Endrun Praecis in Trimble emulation mode.
+ </dl>
+ <h2><font size="+1">DEFINEs</font></h2>
+ The following constants are defined in the driver source code. These defines may be modified to improve performance or adapt to new operating systems.<br>&nbsp;
+ <center>
+ <table border>
+ <tr>
+ <td><b>Label</b></td>
+ <td>Definition</td>
+ <td>Default Value</td>
+ </tr>
+ <tr>
+ <td>DEVICE</td>
+ <td>The serial port device to be used by the driver</td>
+ <td>/dev/palisade<b><i>u</i></b></td>
+ </tr>
+ <tr>
+ <td>PRECISION</td>
+ <td>Accuracy of time transfer</td>
+ <td>1 microsecond</td>
+ </tr>
+ <tr>
+ <td>CURRENT_UTC</td>
+ <td>Valid GPS - UTC offset</td>
+ <td>13</td>
+ </tr>
+ <tr>
+ <td>SPEED232</td>
+ <td>Host RS-232 baud rate</td>
+ <td>B9600</td>
+ </tr>
+ <tr>
+ <td>TRMB_MINPOLL&nbsp;</td>
+ <td>Minimum polling interval</td>
+ <td>5 (32 seconds)</td>
+ </tr>
+ <tr>
+ <td>TRMB_MAXPOLL</td>
+ <td>Maximum interval between polls</td>
+ <td>7 (128 seconds)</td>
+ </tr>
+ </table>
+ </center>
+ <h2><a name="DataFormat"></a><font size="+1">Data Format</font></h2>
+ Palisade port A can output two synchronous time packets. The NTP driver can use either packet for synchronization. Packets are formatted as follows:
+ <h3><b><font size="+0">Packet 8F-AD (Primary NTP Packet)</font></b></h3>
+ <center>
+ <table>
+ <tr>
+ <td>Byte</td>
+ <td>Item</td>
+ <td>Type</td>
+ <td>Meaning</td>
+ </tr>
+ <tr>
+ <td>0</td>
+ <td>Sub-Packet ID</td>
+ <td>BYTE</td>
+ <td>Subcode 0xAD</td>
+ </tr>
+ <tr>
+ <td>1 - 2</td>
+ <td>Event Count</td>
+ <td>INTEGER</td>
+ <td>External event count recorded (0 = PPS)</td>
+ </tr>
+ <tr>
+ <td>3 - 10</td>
+ <td>Fractional Second</td>
+ <td>DOUBLE</td>
+ <td>Time elapsed in current second (s)</td>
+ </tr>
+ <tr>
+ <td>11</td>
+ <td>Hour</td>
+ <td>BYTE</td>
+ <td>Hour (0 - 23)</td>
+ </tr>
+ <tr>
+ <td>12</td>
+ <td>Minute</td>
+ <td>BYTE</td>
+ <td>Minute (0 - 59)</td>
+ </tr>
+ <tr>
+ <td>13</td>
+ <td>Second</td>
+ <td>BYTE</td>
+ <td>Second (0 - 59; 60 = leap)</td>
+ </tr>
+ <tr>
+ <td>14</td>
+ <td>Day</td>
+ <td>BYTE</td>
+ <td>Date (1 - 31)</td>
+ </tr>
+ <tr>
+ <td>15</td>
+ <td>Month</td>
+ <td>BYTE</td>
+ <td>Month (1 - 12)</td>
+ </tr>
+ <tr>
+ <td>16 - 17</td>
+ <td>Year</td>
+ <td>INTEGER</td>
+ <td>Year (4 digit)</td>
+ </tr>
+ <tr>
+ <td>18</td>
+ <td>Receiver Status</td>
+ <td>BYTE</td>
+ <td>Tracking Status</td>
+ </tr>
+ <tr>
+ <td>19</td>
+ <td>UTC Flags</td>
+ <td>BYTE</td>
+ <td>Leap Second Flags</td>
+ </tr>
+ <tr>
+ <td>20</td>
+ <td>Reserved</td>
+ <td>BYTE</td>
+ <td>Contains 0xFF</td>
+ </tr>
+ <tr>
+ <td>21</td>
+ <td>Reserved</td>
+ <td>BYTE</td>
+ <td>Contains 0xFF</td>
+ </tr>
+ </table>
+ </center>
+ <blockquote>
+ <h4>Leap Second Flag Definition:</h4>Bit 0:&nbsp; (1) UTC Time is available<br>
+ Bits 1 - 3: Undefined<br>Bit 4:&nbsp; (1) Leap Scheduled: Leap second pending asserted by GPS control segment.<br>Bit 5:&nbsp; (1) Leap Pending: set 24 hours before, until beginning of leap second.<br>Bit 6:&nbsp; (1) GPS Leap Warning: 6 hours before until 6 hours after leap event<br>Bit 7:&nbsp; (1) Leap In Progress. Only set during the leap second.
+ <h4><a name="TrackingStatus"></a>Tracking Status Flag Definitions:</h4>
+ </blockquote>
+ <center>
+ <table width="712" border="0" cellspacing="0">
+ <tr>
+ <td valign="CENTER" width="5%">Code</td>
+ <td valign="CENTER" width="59%">Meaning</td>
+ <td>Accuracy</td>
+ <td>Receiver Mode</td>
+ </tr>
+ <tr>
+ <td>0</td>
+ <td>Receiver is Navigating</td>
+ <td>+/- 1 us</td>
+ <td>Self Survey</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">1</td>
+ <td valign="CENTER" width="59%">Static 1 Sat. Timing Mode&nbsp;</td>
+ <td>+/- 1 us</td>
+ <td>1-D Timing</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">2</td>
+ <td valign="CENTER" width="59%">Approximate Time</td>
+ <td>20 - 50 ms</td>
+ <td>Acquisition</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">3</td>
+ <td valign="CENTER" width="59%">Startup</td>
+ <td>N/A</td>
+ <td>Initialization</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">4</td>
+ <td valign="CENTER" width="59%">Startup</td>
+ <td>N/A</td>
+ <td>Initialization</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">5</td>
+ <td valign="CENTER" width="59%">Dilution of Position too High&nbsp;</td>
+ <td>5 ppm</td>
+ <td>Self Survey</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">6</td>
+ <td valign="CENTER" width="59%">Static 1 Sat. Timing: Sat. not usable</td>
+ <td>5 ppm</td>
+ <td>1-D Timing</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">7</td>
+ <td valign="CENTER" width="59%">No Satellites Usable</td>
+ <td>N/A</td>
+ <td>Self Survey</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">8</td>
+ <td valign="CENTER" width="59%">Only 1 Satellite Usable</td>
+ <td>20 - 50 ms</td>
+ <td>Self Survey</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">9</td>
+ <td valign="CENTER" width="59%">Only 2 Satellite Usable</td>
+ <td>20 - 50 ms</td>
+ <td>Self Survey</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">10</td>
+ <td valign="CENTER" width="59%">Only 3 Satellites Usable</td>
+ <td>20 - 50 ms</td>
+ <td>Self Survey</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">11</td>
+ <td valign="CENTER" width="59%">Invalid Solution</td>
+ <td>N/A</td>
+ <td>Error</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">12</td>
+ <td valign="CENTER" width="59%">Differential Corrections&nbsp;</td>
+ <td>N/A</td>
+ <td>N/A</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="5%">13</td>
+ <td valign="CENTER" width="59%">Overdetermined Fixes</td>
+ <td>+/- 100 ns</td>
+ <td>Timing Steady State</td>
+ </tr>
+ </table>
+ </center>
+ <h3><b><font size="+0">Packet 8F-0B (Comprehensive Timing Packet)</font></b></h3>
+ <center>
+ <table border="0" cellspacing="0">
+ <tr>
+ <td valign="CENTER" width="9%">Byte</td>
+ <td valign="CENTER" width="27%">Item</td>
+ <td valign="CENTER" width="16%">Type</td>
+ <td valign="CENTER" width="48%">Meaning</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">0</td>
+ <td valign="CENTER" width="27%">Sub-Packet ID</td>
+ <td valign="CENTER" width="16%">BYTE</td>
+ <td valign="CENTER" width="48%">Subcode 0x0B</td>
+ </tr>
+ <tr>
+ <td valign="TOP" width="9%">1 - 2</td>
+ <td valign="TOP" width="27%">Event Count</td>
+ <td valign="TOP" width="16%">INTEGER</td>
+ <td valign="TOP" width="48%">External event count recorded (0 = PPS)</td>
+ </tr>
+ <tr>
+ <td valign="TOP" width="9%">3 - 10</td>
+ <td valign="TOP" width="27%">UTC / GPS TOW</td>
+ <td valign="TOP" width="16%">DOUBLE</td>
+ <td valign="TOP" width="48%">UTC / GPS time of week (seconds)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">11</td>
+ <td valign="CENTER" width="27%">Date</td>
+ <td valign="CENTER" width="16%">BYTE</td>
+ <td valign="CENTER" width="48%">Day of Month</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">12</td>
+ <td valign="CENTER" width="27%">Month</td>
+ <td valign="CENTER" width="16%">BYTE</td>
+ <td valign="CENTER" width="48%">Month of Event</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">13 - 14</td>
+ <td valign="CENTER" width="27%">Year</td>
+ <td valign="CENTER" width="16%">INT</td>
+ <td valign="CENTER" width="48%">Year of event</td>
+ </tr>
+ <tr>
+ <td valign="TOP" width="9%">15</td>
+ <td valign="TOP" width="27%">Receiver Mode</td>
+ <td valign="TOP" width="16%">BYTE</td>
+ <td valign="TOP" width="48%">Receiver operating dimensions:&nbsp;<br>0: Horizontal (2D)&nbsp;<br>1: Full Position (3D)&nbsp;<br>2: Single Satellite (0D)&nbsp;<br>3: Automatic (2D / 3D)&nbsp;<br>4: DGPS reference&nbsp;<br>5: Clock hold (2D)&nbsp;<br>
+ 6: Over determined Clock</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">15 - 17</td>
+ <td valign="CENTER" width="27%">UTC Offset</td>
+ <td valign="CENTER" width="16%">INTEGER</td>
+ <td valign="CENTER" width="48%">UTC Offset value (seconds)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">18 - 25</td>
+ <td valign="CENTER" width="27%">Oscillator Bias</td>
+ <td valign="CENTER" width="16%">DOUBLE</td>
+ <td valign="CENTER" width="48%">Oscillator BIAS (meters)</td>
+ </tr>
+ <tr>
+ <td valign="TOP" width="9%">26 - 33</td>
+ <td valign="TOP" width="27%">Oscillator Drift Rate</td>
+ <td valign="TOP" width="16%">DOUBLE</td>
+ <td valign="TOP" width="48%">Oscillator Drift (meters / second)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">34 - 37</td>
+ <td valign="CENTER" width="27%">Bias Uncertainty</td>
+ <td valign="CENTER" width="16%">SINGLE</td>
+ <td valign="CENTER" width="48%">Oscillator bias uncertainty (meters)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">38 - 41</td>
+ <td valign="CENTER" width="27%">Drift Uncertainty</td>
+ <td valign="CENTER" width="16%">SINGLE</td>
+ <td valign="CENTER" width="48%">Oscillator bias rate uncertainty (m / sec)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">42 - 49</td>
+ <td valign="CENTER" width="27%">Latitude</td>
+ <td valign="CENTER" width="16%">DOUBLE</td>
+ <td valign="CENTER" width="48%">Latitude in radians</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">50 - 57</td>
+ <td valign="CENTER" width="27%">Longitude</td>
+ <td valign="CENTER" width="16%">DOUBLE</td>
+ <td valign="CENTER" width="48%">Longitude in radians</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">58 - 65</td>
+ <td valign="CENTER" width="27%">Altitude</td>
+ <td valign="CENTER" width="16%">DOUBLE</td>
+ <td valign="CENTER" width="48%">Altitude above mean sea level, in meters</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="9%">66 - 73</td>
+ <td valign="CENTER" width="27%">Satellite ID</td>
+ <td valign="CENTER" width="16%">BYTE</td>
+ <td valign="CENTER" width="48%">SV Id No. of tracked satellites</td>
+ </tr>
+ </table>
+ </center>
+ <h2><a name="Pinouts"></a><font size="+1">Pinouts</font></h2>
+ <a href="#Connection">The following connections are required when connecting Palisade with a host:</a><br>&nbsp;<br>&nbsp;
+ <center>
+ <table>
+ <tr>
+ <td><u>Description</u></td>
+ <td><b>Host</b></td>
+ <td></td>
+ <td></td>
+ <td><b>Palisade&nbsp;</b></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a name="PortA"></a><b>Port A</b></td>
+ <td><u>DB-9</u></td>
+ <td><u>DB-25</u></td>
+ <td></td>
+ <td><u>RS-232</u></td>
+ <td><u>RS-422</u></td>
+ <td><u>Palisade Pin</u></td>
+ </tr>
+ <tr>
+ <td>Receive Data&nbsp;</td>
+ <td>2</td>
+ <td>3</td>
+ <td>&lt;--&gt;</td>
+ <td>Green</td>
+ <td>Green / Blue</td>
+ <td>8 (T-) &amp; 10 (T+)</td>
+ </tr>
+ <tr>
+ <td>Request to Send</td>
+ <td>7</td>
+ <td>4</td>
+ <td>&lt;--&gt;</td>
+ <td>Gray</td>
+ <td>Gray / White</td>
+ <td>6 (R-) &amp; 7 (R+)</td>
+ </tr>
+ <tr>
+ <td>Signal Ground</td>
+ <td>5</td>
+ <td>7</td>
+ <td>&lt;--&gt;</td>
+ <td>Black</td>
+ <td>Black</td>
+ <td>9 (GND)</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><a name="PortB"></a><b>Port B</b></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>Receive Data&nbsp;</td>
+ <td>2</td>
+ <td>3</td>
+ <td>&lt;--&gt;</td>
+ <td>Brown</td>
+ <td>Brown / Yellow</td>
+ <td>4 (T-) &amp; 5 (T+)</td>
+ </tr>
+ <tr>
+ <td>Transmit Data</td>
+ <td>3</td>
+ <td>2</td>
+ <td>&lt;--&gt;</td>
+ <td>Violet</td>
+ <td>Orange/ Violet</td>
+ <td>2 (R-) &amp; 3 (R+)</td>
+ </tr>
+ <tr>
+ <td>Signal Ground</td>
+ <td>5</td>
+ <td>7</td>
+ <td>&lt;--&gt;</td>
+ <td>Black</td>
+ <td>Black</td>
+ <td>9 (GND)</td>
+ </tr>
+ </table>
+ </center>
+ <blockquote>
+ Note: If driving the RS-422 inputs on the Palisade single ended, i.e. using the Green and Gray connections only, does not work on all serial ports. Use of the Palisade NTP Synchronization Interface Module is recommended.</blockquote>
+ <blockquote>
+ The 12 pin connector pinout definition:<br>
+ Face the round 12 pin connector at the end of the cable, with the notch turned upwards.<br>
+ Pin 1 is to the left of the notch. Pins 2 - 8 wrap around the bottom, counterclockwise to pin 9 on the right of the notch. Pin 10 is just below the notch. Pins 10 (top), 11 (bottom left) and 12 (bottom right) form a triangle in the center of the connector.</blockquote>
+ <blockquote>
+ <a name="SIM"></a>Pinouts for the Palisade NTP host adapter (Trimble PN 37070) DB-25 M connector are as follows:</blockquote>
+ <center>
+ <table width="682" border="0" cellspacing="0">
+ <tr>
+ <td valign="CENTER" width="12%">DB-25M</td>
+ <td valign="CENTER" width="31%">Conductor&nbsp;</td>
+ <td valign="CENTER" width="16%">Palisade</td>
+ <td valign="CENTER" width="41%">Description</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">1&nbsp;</td>
+ <td valign="CENTER" width="31%">Red</td>
+ <td valign="CENTER" width="16%">1</td>
+ <td valign="CENTER" width="41%">Power</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">7&nbsp;</td>
+ <td valign="CENTER" width="31%">Black</td>
+ <td valign="CENTER" width="16%">9</td>
+ <td valign="CENTER" width="41%">Ground</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">9</td>
+ <td valign="CENTER" width="31%">Black/White</td>
+ <td valign="CENTER" width="16%">12</td>
+ <td valign="CENTER" width="41%">PPS -</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">10&nbsp;</td>
+ <td valign="CENTER" width="31%">Green</td>
+ <td valign="CENTER" width="16%">8</td>
+ <td valign="CENTER" width="41%">Transmit Port A (T-)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">11&nbsp;</td>
+ <td valign="CENTER" width="31%">Brown</td>
+ <td valign="CENTER" width="16%">4</td>
+ <td valign="CENTER" width="41%">Transmit Port B (T-)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">12&nbsp;</td>
+ <td valign="CENTER" width="31%">Gray</td>
+ <td valign="CENTER" width="16%">7</td>
+ <td valign="CENTER" width="41%">Receive Port A (R+)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">13</td>
+ <td valign="CENTER" width="31%">Orange</td>
+ <td valign="CENTER" width="16%">3</td>
+ <td valign="CENTER" width="41%">Receive Port B (R+)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">21</td>
+ <td valign="CENTER" width="31%">Orange/White</td>
+ <td valign="CENTER" width="16%">11</td>
+ <td valign="CENTER" width="41%">PPS +</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">22</td>
+ <td valign="CENTER" width="31%">Blue</td>
+ <td valign="CENTER" width="16%">10</td>
+ <td valign="CENTER" width="41%">Transmit Port A (T+)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">23</td>
+ <td valign="CENTER" width="31%">Yellow</td>
+ <td valign="CENTER" width="16%">5</td>
+ <td valign="CENTER" width="41%">Transmit Port B (T+)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">24</td>
+ <td valign="CENTER" width="31%">White</td>
+ <td valign="CENTER" width="16%">6</td>
+ <td valign="CENTER" width="41%">Receive Port A (R-)</td>
+ </tr>
+ <tr>
+ <td valign="CENTER" width="12%">25</td>
+ <td valign="CENTER" width="31%">Violet</td>
+ <td valign="CENTER" width="16%">2</td>
+ <td valign="CENTER" width="41%">Receive Port B (R-)</td>
+ </tr>
+ </table>
+ </center>
+ <p></p>
+ <hr>
+ <p>Questions or Comments:<br>
+ <a href="mailto:sven_dietrich@trimble.com">Sven Dietrich</a><br>
+ <a href="http://www.trimble.com/">Trimble Navigation Ltd.</a></p>
+ <p>(last updated July 29, 1999)</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ ;
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver3.html b/contrib/ntp/html/drivers/driver3.html
index 7dcc092..e5a06be 100644
--- a/contrib/ntp/html/drivers/driver3.html
+++ b/contrib/ntp/html/drivers/driver3.html
@@ -2,27 +2,27 @@
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
- <title>PSTI/Traconex 1020 WWV/WWVH Receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
+ <title>PSTI/Traconex 1020 WWV/WWVH Receiver</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>PSTI/Traconex 1020 WWV/WWVH Receiver</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.3.<i>u</i><br>
- Reference ID: <tt>WWV</tt><br>
- Driver ID: <tt>WWV_PST</tt><br>
- Serial Port: <tt>/dev/wwv<i>u</i></tt>; 9600 baud, 8-bits, no parity<br>
- Features: <tt>tty_clk</tt></p>
- <h4>Description</h4>
- <p>This driver supports the PSTI 1010 and Traconex 1020 WWV/WWVH Receivers. No specific claim of accuracy is made for these receiver, but actual experience suggests that 10 ms would be a conservative assumption.</p>
- <p>The DIP-switches should be set for 9600 bps line speed, 24-hour day-of-year format and UTC time zone. Automatic correction for DST should be disabled. It is very important that the year be set correctly in the DIP-switches; otherwise, the day of year will be incorrect after 28 April of a normal or leap year. The propagation delay DIP-switches should be set according to the distance from the transmitter for both WWV and WWVH, as described in the instructions. While the delay can be set only to within 11 ms, the fudge time1 parameter can be used for vernier corrections.</p>
- <p>Using the poll sequence <tt>QTQDQM</tt>, the response timecode is in three sections totalling 50 ASCII printing characters, as concatenated by the driver, in the following format:</p>
- <pre>
+ <body>
+ <h3>PSTI/Traconex 1020 WWV/WWVH Receiver</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.3.<i>u</i><br>
+ Reference ID: <tt>WWV</tt><br>
+ Driver ID: <tt>WWV_PST</tt><br>
+ Serial Port: <tt>/dev/wwv<i>u</i></tt>; 9600 baud, 8-bits, no parity<br>
+ Features: <tt>tty_clk</tt></p>
+ <h4>Description</h4>
+ <p>This driver supports the PSTI 1010 and Traconex 1020 WWV/WWVH Receivers. No specific claim of accuracy is made for these receiver, but actual experience suggests that 10 ms would be a conservative assumption.</p>
+ <p>The dipswitches should be set for 9600 bps line speed, 24-hour day-of-year format and UTC time zone. Automatic correction for DST should be disabled. It is very important that the year be set correctly in the DIP-switches; otherwise, the day of year will be incorrect after 28 April of a normal or leap year. As the there are only four dipswitches to set the year and the base value of zero correspondes to 1986, years beyond 2001 recycle with the value of zero corresponding to 2002. The propagation delay DIP-switches should be set according to the distance from the transmitter for both WWV and WWVH, as described in the instructions. While the delay can be set only to within 11 ms, the fudge time1 parameter can be used for vernier corrections.</p>
+ <p>Using the poll sequence <tt>QTQDQM</tt>, the response timecode is in three sections totalling 50 ASCII printing characters, as concatenated by the driver, in the following format:</p>
+ <pre>
ahh:mm:ss.fffs&lt;cr&gt; yy/dd/mm/ddd&lt;cr&gt;
frdzycchhSSFTttttuuxx&lt;cr&gt;
@@ -45,32 +45,32 @@ T = transmitter (C = WWV, H = WWVH)
tttt = time since last update (0000 = minutes)
uu = flush character (03 = ^c)
xx = 94 (unknown)</pre>
- <p>The alarm condition is indicated by other than <tt>8</tt> at <tt>a</tt>, which occurs during initial synchronization and when received signal is lost for an extended period; unlock condition is indicated by other than <tt>0000</tt> in the <tt>tttt</tt> subfield.</p>
- <h4>Monitor Data</h4>
- <p>When enabled by the <tt>flag4</tt> fudge flag, every received timecode is written as-is to the <tt>clockstats</tt> file.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>WWV</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Not used by this driver.
- </dl>
- <h4>Additional Information</h4>
- <p><a href="../refclock.html">Reference Clock Drivers</a></p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <p>The alarm condition is indicated by other than <tt>8</tt> at <tt>a</tt>, which occurs during initial synchronization and when received signal is lost for an extended period; unlock condition is indicated by other than <tt>0000</tt> in the <tt>tttt</tt> subfield.</p>
+ <h4>Monitor Data</h4>
+ <p>When enabled by the <tt>flag4</tt> fudge flag, every received timecode is written as-is to the <tt>clockstats</tt> file.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>WWV</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Not used by this driver.
+ </dl>
+ <h4>Additional Information</h4>
+ <p><a href="../refclock.html">Reference Clock Drivers</a></p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver30.html b/contrib/ntp/html/drivers/driver30.html
index 34507f3..d29dbcf 100644
--- a/contrib/ntp/html/drivers/driver30.html
+++ b/contrib/ntp/html/drivers/driver30.html
@@ -2,83 +2,82 @@
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859- 1">
- <meta name="GENERATOR" content="Mozilla/4.06 [en] (X11; I; FreeBSD 3.0-CURRENT i386) [Netscape]">
- <title>Motorola Oncore GPS Receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.06 [en] (X11; I; FreeBSD 3.0-CURRENT i386) [Netscape]">
+ <title>Motorola Oncore GPS Receiver</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Motorola Oncore GPS receiver</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.30.<i>u</i><br>
- Reference ID: <tt>GPS</tt><br>
- Driver ID: ONCORE<br>
- Serial Port: <tt>/dev/oncore.serial.</tt><i>u</i>; &nbsp;9600 baud, 8-bits, no parity.<br>
- PPS Port: <tt>/dev/oncore.pps.</tt><i>u</i>;&nbsp; <tt>PPS_CAPTUREASSERT</tt> required,&nbsp; <tt>PPS_OFFSETASSERT</tt> supported.<br>
- Configuration File: <tt>/etc/ntp.oncore</tt>, or <tt>/etc/ntp.oncore.</tt><i>u</i>, or <tt>/etc/ntp.oncore</tt><i>u</i>.</p>
- <h4>Description</h4>
- <p>This driver supports most models of the <a href="http://www.mot.com/AECS/PNSB/products">Motorola Oncore GPS receivers</a> (Basic, PVT6, VP, UT, UT+, GT, GT+, SL, M12), as long as they support the <i>Motorola Binary Protocol</i>.</p>
- <p>The interesting versions of the Oncore are the VP, the UT+, the &quot;Remote&quot; which is a prepackaged UT+, and the M12 Timing. The VP is no longer available new, and the UT, GT, and SL are at end-of-life. The Motorola evaluation kit can be recommended. It interfaces to a PC straightaway, using the serial (DCD) or parallel port for PPS input and packs the receiver in a nice and sturdy box. Less expensive interface kits are available from <a href="http://www.tapr.org">TAPR</a> and <a href="http://www.synergy-gps.com">Synergy</a>.<br>
- &nbsp;</p>
- <center>
- <table>
- <tr>
- <td><img src="../pic/oncore_utplusbig.gif" alt="gif" height="124" width="210"></td>
- <td><img src="../pic/oncore_evalbig.gif" alt="gif" height="124" width="182"></td>
- <td><img src="../pic/oncore_remoteant.jpg" alt="gif" height="188" width="178"></td>
- </tr>
- <tr>
- <td>
- <center>
- UT+ oncore</center>
- </td>
- <td>
- <center>
- Evaluation kit</center>
- </td>
- <td>
- <center>
- Oncore Remote</center>
- </td>
- </tr>
- </table>
- </center>
- <p>The driver requires a standard <tt>PPS</tt> interface for the pulse-per-second output from the receiver. The serial data stream alone does not provide precision time stamps (0-50msec variance, according to the manual), whereas the PPS output is precise down to 50 nsec (1 sigma) for the VP/UT models and 25 nsec for the M12 Timing. If you do not have the PPS signal available, then you should probably be using the NMEA driver rather than the Oncore driver.</p>
- <p>The driver will use the &quot;position hold&quot; mode with user provided coordinates, the receivers built-in site-survey, or a similar algorithm implemented in this driver to determine the antenna position.</p>
- <h4>Monitor Data</h4>
- The driver always puts a lot of useful information on the clockstats file, and when run with debugging can be quite chatty on stdout. When first starting to use the driver you should definitely review the information written to the clockstats file to verify that the driver is running correctly.
- <p>In addition, on platforms supporting Shared Memory, all of the messages received from the Oncore receiver are made available in shared memory for use by other programs. See the <a href="oncore-shmem.html">Oncore-SHMEM</a> manual page for information on how to use this option. For either debugging or using the SHMEM option, an Oncore Reference Manual for the specific receiver in use will be required.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>GPS</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Specifies the PPS signal on-time edge: 0 for assert (default), 1 for clear.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Controls the kernel PPS discipline: 0 for disable (default), 1 for enable.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Not used by this driver.
- </dl>
- <h4>Additional Information</h4>
- <p>The driver was initially developed on FreeBSD, and has since been tested on Linux, SunOS and Solaris.</p>
- <p><b>Configuration</b></p>
- <p>There is a driver specific configuration file <tt>/etc/ntp.oncore</tt> (or <tt>/etc/ntp.oncore.</tt><i>u</i> or <tt>/etc/ntp.oncore</tt><i>u</i> if you must distinguish between more than one Oncore receiver) that contains information on the startup mode, the location of the GPS receiver, an offset of the PPS signal from zero, and the cable delay. The offset shifts the PPS signal to avoid interrupt pileups `on' the second, and adjust the timestamp accordingly. See the driver source for information on this file. The default with no file is: no delay, no offset, and a site survey is done to get the location of the gps receiver.</p>
- <p>The edge of the PPS signal that is `on-time' can be set with either flag2 or in the driver specific configuration file with the keywords [ASSERT/CLEAR]. Flag3 (or the word HARDPPS in the driver specific configuration file) will cause the PPS signal to control the kernel PLL.</p>
- <p><b>Performance</b></p>
- <p>Really good. With the VP/UT+, the generated PPS pulse is referenced to UTC(GPS)&nbsp;with better than 50 nsec (1 sigma) accuracy. The limiting factor will be the timebase of the computer and the precision with which you can timestamp the rising flank of the PPS signal. Using FreeBSD, a FPGA&nbsp;based Timecounter/PPS&nbsp;interface, and an ovenized quartz oscillator, that performance has been reproduced. For more details on this aspect: <a href="http://phk.freebsd.dk/rover.html">Sub-Microsecond timekeeping under FreeBSD</a>.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Motorola Oncore GPS receiver</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.30.<i>u</i><br>
+ Reference ID: <tt>GPS</tt><br>
+ Driver ID: ONCORE<br>
+ Serial Port: <tt>/dev/oncore.serial.</tt><i>u</i>; &nbsp;9600 baud, 8-bits, no parity.<br>
+ PPS Port: <tt>/dev/oncore.pps.</tt><i>u</i>;&nbsp; <tt>PPS_CAPTUREASSERT</tt> required,&nbsp; <tt>PPS_OFFSETASSERT</tt> supported.<br>
+ Configuration File: <tt>ntp.oncore</tt>, or <tt>ntp.oncore.</tt><i>u</i>, or <tt>ntp.oncore</tt><i>u</i>, in <tt>/etc/ntp</tt> or <tt>/etc</tt>.</p>
+ <h4>Description</h4>
+ <p>This driver supports most models of the <a href="http://www.mot.com/AECS/PNSB/products">Motorola Oncore GPS receivers</a> (Basic, PVT6, VP, UT, UT+, GT, GT+, SL, M12, M12+T), as long as they support the <i>Motorola Binary Protocol</i>.</p>
+ <p>The interesting versions of the Oncore are the VP, the UT+, the &quot;Remote&quot; which is a prepackaged UT+, and the M12 Timing. The VP is no longer available new, and the UT, GT, and SL are at end-of-life. The Motorola evaluation kit can be recommended. It interfaces to a PC straightaway, using the serial (DCD) or parallel port for PPS input and packs the receiver in a nice and sturdy box. Less expensive interface kits are available from <a href="http://www.tapr.org">TAPR</a> and <a href="http://www.synergy-gps.com">Synergy</a>.<br>&nbsp;</p>
+ <center>
+ <table>
+ <tr>
+ <td><img src="../pic/oncore_utplusbig.gif" alt="gif" height="124" width="210"></td>
+ <td><img src="../pic/oncore_evalbig.gif" alt="gif" height="124" width="182"></td>
+ <td><img src="../pic/oncore_remoteant.jpg" alt="gif" height="188" width="178"></td>
+ </tr>
+ <tr>
+ <td>
+ <center>
+ UT+ oncore</center>
+ </td>
+ <td>
+ <center>
+ Evaluation kit</center>
+ </td>
+ <td>
+ <center>
+ Oncore Remote</center>
+ </td>
+ </tr>
+ </table>
+ </center>
+ <p>The driver requires a standard <tt>PPS</tt> interface for the pulse-per-second output from the receiver. The serial data stream alone does not provide precision time stamps (0-50msec variance, according to the manual), whereas the PPS output is precise down to 50 nsec (1 sigma) for the VP/UT models and 25 nsec for the M12 Timing. If you do not have the PPS signal available, then you should probably be using the NMEA driver rather than the Oncore driver. Most of these are available on-line</p>
+ <p>The driver will use the &quot;position hold&quot; mode with user provided coordinates, the receivers built-in site-survey, or a similar algorithm implemented in this driver to determine the antenna position.</p>
+ <h4>Monitor Data</h4>
+ The driver always puts a lot of useful information on the clockstats file, and when run with debugging can be quite chatty on stdout. When first starting to use the driver you should definitely review the information written to the clockstats file to verify that the driver is running correctly.
+ <p>In addition, on platforms supporting Shared Memory, all of the messages received from the Oncore receiver are made available in shared memory for use by other programs. See the <a href="oncore-shmem.html">Oncore-SHMEM</a> manual page for information on how to use this option. For either debugging or using the SHMEM option, an Oncore Reference Manual for the specific receiver in use will be required.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>GPS</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Not used by this driver.
+ </dl>
+ <h4>Additional Information</h4>
+ <p>The driver was initially developed on FreeBSD, and has since been tested on Linux, SunOS and Solaris.</p>
+ <p><b>Configuration</b></p>
+ <p>There is a driver specific configuration file <tt>ntp.oncore</tt> (or <tt>ntp.oncore.</tt><i>u</i> or <tt>ntp.oncore</tt><i>u</i> if you must distinguish between more than one Oncore receiver) that contains information on the startup mode, the location of the GPS receiver, an offset of the PPS signal from zero, and the cable delay. The offset shifts the PPS signal to avoid interrupt pileups `on' the second, and adjusts the timestamp accordingly. See the driver source for information on this file. The default with no file is: no delay, no offset, and a site survey is done to get the location of the gps receiver.</p>
+ <p>The following three options can be set in the driver specific configuration file only if the driver is using the PPSAPI. The edge of the PPS signal that is `on-time' can be set with the keywords [ASSERT/CLEAR] and the word HARDPPS will cause the PPS signal to control the kernel PLL.</p>
+ <p><b>Performance</b></p>
+ <p>Really good. With the VP/UT+, the generated PPS pulse is referenced to UTC(GPS)&nbsp;with better than 50 nsec (1 sigma) accuracy. The limiting factor will be the timebase of the computer and the precision with which you can timestamp the rising flank of the PPS signal. Using FreeBSD, a FPGA&nbsp;based Timecounter/PPS&nbsp;interface, and an ovenized quartz oscillator, that performance has been reproduced. For more details on this aspect: <a href="http://phk.freebsd.dk/rover.html">Sub-Microsecond timekeeping under FreeBSD</a>.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver31.html b/contrib/ntp/html/drivers/driver31.html
new file mode 100644
index 0000000..aff093c
--- /dev/null
+++ b/contrib/ntp/html/drivers/driver31.html
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.06 [en] (X11; I; FreeBSD 3.0-CURRENT i386) [Netscape]">
+ <title>Rockwell Jupiter GPS Receiver</title>
+ <link href="../scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
+
+ <body>
+ <h3>Rockwell Jupiter GPS receiver</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.31.<i>u</i><br>
+ Reference ID: <tt>GPS</tt><br>
+ Driver ID: JUPITER<br>
+ Serial Port: <tt>/dev/gps</tt><i>u</i>; &nbsp;9600 baud, 8-bits, no parity.</p>
+ <h4>Description</h4>
+ <p>This driver supports at least some models of the <a href="http://www.navman.com/oem/products/receivers/jupiter/">Rockwell Jupiter <tt>GPS</tt> receivers</a> (Jupiter 11, Jupiter-T), they must at least support the <i>Zodiac Binary Protocol</i>.</p>
+ <p>The driver requires a standard <tt>PPS</tt> interface for the pulse-per-second output from the receiver. The serial data stream alone does not provide precision time stamps, whereas the PPS output is precise down to 40 ns (1 sigma) for the Jupiter 11 and 25 ns (1 sigma) for Jupiter-T according to the documentation. If you do not have the PPS signal available, then you should probably not be using the Jupiter receiver as a time source. This driver requires a <tt>PPS</tt> signal and the time output from Jupiter receivers is not predictable in <tt>NMEA</tt> mode; the reported time can take one second steps.</p>
+ <h4>Monitor Data</h4>
+ <p>The driver always puts a lot of useful information on the clockstats file, and when run with debugging can be quite chatty on stdout. When first starting to use the driver you should definitely review the information written to the clockstats file to verify that the driver is running correctly.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver. Should be left at zero.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an <tt>ASCII</tt> string from one to four characters, with default <tt>GPS</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Specifies the mobility of the <tt>GPS</tt> receiver: 0 for walking (default), 1 for driving.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Specifies the <tt>PPS</tt> signal on-time edge: 0 for assert (default), 1 for clear.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Not used by this driver.
+ </dl>
+ <h4>Additional Information</h4>
+ <p>The driver was resurrected from a sorry state using the Windows NT port and a Jupiter 11, and has since seen little testing on other platforms. On Windows there exist a barrier though, as there is no publicly available <tt>PPSAPI</tt> implementation, at least not to my knowledge. However, there has been one success report using Linux 2.4.20 and PPSkit 2.1.1.</p>
+ <p>The Jupiter receivers seem to have quite a few names. They are referred to at least as Rockwell receivers, Navman receivers, Zodiac receivers, Conexant receivers and SiRF Technology receivers. Rockwell seems to be the original and most commonly used name and Navman seems to be the current supplier.</p>
+ <p><b>Configuration</b></p>
+ <p>The edge of the <tt>PPS</tt> signal that is `on-time' can be set with <tt>flag2</tt>. There is currently no way to cause the <tt>PPS</tt> signal to control the kernel <tt>PLL</tt>.</p>
+ <p><b>Performance</b></p>
+ <p>The performance is largely unexplored. I have achieved submillisecond stability using a Jupiter 11, but the poor result is more than likely due to the proprietary <tt>PPSAPI</tt> implementation or Windows itself.</p>
+ <p>This driver does not handle leap seconds.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
+ </body>
+
+</html>
+
+= \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver32.html b/contrib/ntp/html/drivers/driver32.html
index 18beaaa..9479248 100644
--- a/contrib/ntp/html/drivers/driver32.html
+++ b/contrib/ntp/html/drivers/driver32.html
@@ -2,26 +2,26 @@
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso8859-1">
- <title>Chrono-log K-series WWVB receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <title>Chrono-log K-series WWVB receiver</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Chrono-log K-series WWVB receiver</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.32.<i>u</i><br>
- Reference ID: <tt>CHRONOLOG</tt><br>
- Driver ID: <tt>CHRONOLOG</tt><br>
- Serial Port: <tt>/dev/chronolog<i>u</i></tt>; 2400 bps, 8-bits, no parity<br>
- <br>
- Features: <tt>(none)</tt></p>
- <h4>Description</h4>
- <p>This driver supports the Chrono-log K-series WWVB receiver. This is a very old receiver without provisions for leap seconds, quality codes, etc. It assumes output in the local time zone, and that the C library mktime()/localtime() routines will correctly convert back and forth between local and UTC. There is a hack in the driver for permitting UTC, but it has not been tested.</p>
- <p>Most of this code is originally from refclock_wwvb.c with thanks. It has been so mangled that wwvb is not a recognizable ancestor.</p>
- <pre>
+ <body>
+ <h3>Chrono-log K-series WWVB receiver</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.32.<i>u</i><br>
+ Reference ID: <tt>CHRONOLOG</tt><br>
+ Driver ID: <tt>CHRONOLOG</tt><br>
+ Serial Port: <tt>/dev/chronolog<i>u</i></tt>; 2400 bps, 8-bits, no parity<br>
+ <br>
+ Features: <tt>(none)</tt></p>
+ <h4>Description</h4>
+ <p>This driver supports the Chrono-log K-series WWVB receiver. This is a very old receiver without provisions for leap seconds, quality codes, etc. It assumes output in the local time zone, and that the C library mktime()/localtime() routines will correctly convert back and forth between local and UTC. There is a hack in the driver for permitting UTC, but it has not been tested.</p>
+ <p>Most of this code is originally from refclock_wwvb.c with thanks. It has been so mangled that wwvb is not a recognizable ancestor.</p>
+ <pre>
Timecode format: Y yy/mm/ddCLZhh:mm:ssCL
Y - year/month/date line indicator
yy/mm/dd -- two-digit year/month/day
@@ -30,9 +30,9 @@ L - \n (newline)
Z - timestamp indicator
hh:mm:ss - local time
</pre>
- <!-- hhmts start -->Last modified: Sun Feb 14 11:57:27 EST 1999 <!-- hhmts end -->
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <!-- hhmts start -->Last modified: Sun Feb 14 11:57:27 EST 1999 <!-- hhmts end -->
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver33.html b/contrib/ntp/html/drivers/driver33.html
index ea77345..f50dfb63 100644
--- a/contrib/ntp/html/drivers/driver33.html
+++ b/contrib/ntp/html/drivers/driver33.html
@@ -2,34 +2,34 @@
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso8859-1">
- <title>Dumb Clock</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <title>Dumb Clock</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Dumb Clock</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.33.<i>u</i><br>
- Reference ID: <tt>DUMBCLOCK</tt><br>
- Driver ID: <tt>DUMBCLOCK</tt><br>
- Serial Port: <tt>/dev/dumbclock<i>u</i></tt>; 9600 bps, 8-bits, no parity<br>
- Features: <tt>(none)</tt></p>
- <h4>Description</h4>
- <p>This driver supports a dumb ASCII clock that only emits localtime at a reliable interval. This has no provisions for leap seconds, quality codes, etc. It assumes output in the local time zone, and that the C library mktime()/localtime() routines will correctly convert back and forth between local and UTC.</p>
- <p>Most of this code is originally from refclock_wwvb.c with thanks. It has been so mangled that wwvb is not a recognizable ancestor.</p>
- <pre>
+ <body>
+ <h3>Dumb Clock</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.33.<i>u</i><br>
+ Reference ID: <tt>DUMBCLOCK</tt><br>
+ Driver ID: <tt>DUMBCLOCK</tt><br>
+ Serial Port: <tt>/dev/dumbclock<i>u</i></tt>; 9600 bps, 8-bits, no parity<br>
+ Features: <tt>(none)</tt></p>
+ <h4>Description</h4>
+ <p>This driver supports a dumb ASCII clock that only emits localtime at a reliable interval. This has no provisions for leap seconds, quality codes, etc. It assumes output in the local time zone, and that the C library mktime()/localtime() routines will correctly convert back and forth between local and UTC.</p>
+ <p>Most of this code is originally from refclock_wwvb.c with thanks. It has been so mangled that wwvb is not a recognizable ancestor.</p>
+ <pre>
Timecode format: hh:mm:ssCL
hh:mm:ss - local time
C - \r (carriage return)
L - \n (newline)
</pre>
- <hr>
- <!-- hhmts start -->Last modified: Sun Feb 14 12:07:01 EST 1999 <!-- hhmts end -->
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <hr>
+ <!-- hhmts start -->Last modified: Sun Feb 14 12:07:01 EST 1999 <!-- hhmts end -->
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver34.html b/contrib/ntp/html/drivers/driver34.html
index dc37f3b..a98fad8 100644
--- a/contrib/ntp/html/drivers/driver34.html
+++ b/contrib/ntp/html/drivers/driver34.html
@@ -1,29 +1,58 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso8859-1">
- <title>Ultralink Clock</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
-
- <body>
- <h3>Ultralink Clock</h3>
- <hr>
- <h4>Synopsis</h4>
- Address: 127.127.34.<i>u</i><br>
- Reference ID: <tt>WWVB</tt><br>
- Driver ID: <tt>ULINK</tt><br>
- Serial Port: <tt>/dev/wwvb<i>u</i></tt>; 9600 bps, 8-bits, no parity<br>
- <br>
- Features: <tt>(none)</tt>
- <h4>Description</h4>
- <p>This driver supports the Ultralink Model 320 RS-232 powered WWVB receiver. PDF specs available on <a href="http://www.ulio.com">www.ulio.com</a>. This driver also supports the Model 330,331,332 decoders in both polled or continous time code mode. Leap second and quality are supported.</p>
- <p>Most of this code is originally from refclock_wwvb.c with thanks. Any mistakes are mine. Any improvements are welcome.</p>
- <hr>
- <pre>
- The Model 320 timecode format is:
+ <head>
+ <title>Ultralink Clock</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <link <link href="scripts/style.css" type="text/css" rel="stylesheet"> </HEAD> <BODY> <H3> Ultralink Clock</H3>
+ <hr>
+ <h4>Synopsis</h4>
+ Address: 127.127.34.<i>u</i><br>
+ Reference ID: <tt>WWVB</tt><br>
+ Driver ID: <tt>ULINK</tt><br>
+ Serial Port: <tt>/dev/wwvb<i>u</i></tt>; 9600 bps, 8-bits, no parity<br>
+ <br>
+ Features: <tt>(none)</tt>
+ <h4>Description</h4>
+ <p>This driver supports the Ultralink Model 325 (replacement for Model 320) RS-232 powered WWVB receiver. PDF specs available on <a href="http://www.ulio.com/">http://www.ulio.com/</a>. This driver also supports the Model 320, 330,331,332 decoders in both polled or continous time code mode.<br>
+ Leap second and quality are supported.</p>
+ <p>Most of this code is originally from refclock_wwvb.c with thanks. Any mistakes are mine. Any improvements are welcome.</p>
+ <hr>
+ <pre> The Model 325 timecode format is:
+
+ &lt;cr&gt;&lt;lf&gt;RQ_1C00LYYYY+DDDUTCS_HH:MM:SSL+5
+
+ where:
+
+ R = Signal readability indicator, ranging from R1 to R5
+ Q R1 is unreadable, R5 is best reception
+ _ = Space
+ 1 = prev. received data bit, values: 0, 1 ,M or ? unknown
+ C = Signal reception from (C)olorado or (H)awaii
+ 0 = Hours since last WWVB time and flag code update, values
+ 0 00 to 99 (hopefully always 00)
+ L = HEX A5 if receiver is locked to WWVB, Space if not
+ YYYY = Year from 2000 to 2099
+ + = '+' if current year is a leap year, else ' '
+ DDD = current day in the year from 1 to 365/366
+ UTC = timezone (always UTC)
+ S = Daylight savings indicator, (S)TD, (D)ST, (O) transition
+ into DST, (I) transition out of DST
+ _ = Space
+ HH = UTC hour 0 to 23
+ : = Time delimiter, ':' if synced, Space if not
+ MM = Minutes of current hour from 0 to 59
+ : = Time delimiter, ':' if synced, Space if not
+ SS = Seconds of current minute from 0 to 59
+ mm = 10's milliseconds of the current second from 00 to 99
+ L = Leap second pending at end of month, (I)nsert, (D)elete
+ or Space
+ +5 = UT1 correction, +/- .1 sec increments
+ </pre>
+ <p>Note that Model 325 reports a very similar output like Model 33X series. The driver for this clock is similar to Model 33X behavior. On a unmodified new ULM325 clock, the polling flag (flag1 =1) needs to be set.</p>
+ <hr>
+ <pre> The Model 320 timecode format is:
&lt;cr&gt;&lt;lf&gt;SQRYYYYDDD+HH:MM:SS.mmLT&lt;cr&gt;
@@ -42,11 +71,10 @@
L = Leap second pending at end of month -- 'I' = inset, 'D'=delete
T = DST &lt;-&gt; STD transition indicators
</pre>
- <p>Note that this driver does not do anything with the T flag.</p>
- <p>The M320 also has a 'U' command which returns UT1 correction information. It is not used in this driver.</p>
- <hr>
- <pre>
- The Model 33x timecode format is:
+ <p>Note that this driver does not do anything with the T flag.</p>
+ <p>The M320 also has a 'U' command which returns UT1 correction information. It is not used in this driver.</p>
+ <hr>
+ <pre> The Model 33x timecode format is:
S9+D 00 YYYY+DDDUTCS HH:MM:SSl+5
@@ -74,15 +102,16 @@
L = leap second flag
+5 = UT1 correction (sign + digit ))
</pre>
- <p>This driver ignores UT1 correction,DST indicator,Leap year and signal level.</p>
- <hr>
- <h4>Fudge factors</h4>
- <p>flag1 polling enable (1=poll 0=no poll)</p>
- <hr>
- <address><a href="mailto:dstrout@linuxfoundary.com">mail</a></address>
- <!-- hhmts start -->Last modified: Tue Sep 14 05:53:08 EDT 1999 <!-- hhmts end -->
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <p>This driver ignores UT1 correction,DST indicator,Leap year and signal level.</p>
+ <hr>
+ <h4>Fudge factors</h4>
+ <p>flag1 polling enable (1=poll 0=no poll)</p>
+ <hr>
+ <address><a href="mailto:frank.migge@oracle.com">mail</a></address>
+ <!-- hhmts start -->Last modified: Mon Mar 8 10:12:08 PST 2004<!-- hhmts end -->
+ <hr>
+ <script type="text/javascript" language="javascript" src="Ultralink Clock_files/footer.txt"></script>
+ </BODY>
+ </head>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver35.html b/contrib/ntp/html/drivers/driver35.html
index 20ed717..78a0881 100644
--- a/contrib/ntp/html/drivers/driver35.html
+++ b/contrib/ntp/html/drivers/driver35.html
@@ -2,46 +2,47 @@
<html>
- <head>
- <title>Conrad parallel port radio clock</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Conrad parallel port radio clock</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Conrad parallel port radio clock</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.35.<i>u</i><br>
- Reference ID: <tt>PCF</tt><br>
- Driver ID: <tt>PCF</tt><br>
- Parallel Port: <tt>/dev/pcfclocks/<i>u</i></tt> or <tt>/dev/pcfclock<i>u</i></tt></p>
- <h4>Description</h4>
- <p>This driver supports the parallel port radio clock sold by <a href="http://www.conrad-electronic.com/">Conrad Electronic</a> under order numbers 967602 and 642002. This clock is put between a parallel port and your printer. It receives the legal German time, which is either CET or CEST, from the DCF77 transmitter and uses it to set its internal quartz clock. The DCF77 transmitter is located near to Frankfurt/Main and covers a radius of more than 1500 kilometers.</p>
- <p>The pcfclock device driver is required in order to use this reference clock driver. Currently device drivers for <a href="http://home.pages.de/%7evoegele/pcf.html">Linux</a> and <a href="http://schumann.cx/pcfclock/">FreeBSD</a> are available.</p>
- <p>This driver uses C library functions to convert the received timecode to UTC and thus requires that the local timezone be CET or CEST. If your server is not located in Central Europe you have to set the environment variable TZ to CET before starting <tt>ntpd</tt>.</p>
- <h4>Monitor Data</h4>
- <p>Each timecode is written to the <tt>clockstats</tt> file in the format <tt>YYYY MM DD HH MI SS</tt>.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.1725.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>PCF</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>If set to 1, the radio clock's synchronisation status bit is ignored, ie the timecode is used without a check.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Not used by this driver.
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Conrad parallel port radio clock</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.35.<i>u</i><br>
+ Reference ID: <tt>PCF</tt><br>
+ Driver ID: <tt>PCF</tt><br>
+ Parallel Port: <tt>/dev/pcfclocks/<i>u</i></tt> or <tt>/dev/pcfclock<i>u</i></tt></p>
+ <h4>Description</h4>
+ <p>This driver supports the parallel port radio clock sold by <a href="http://www.conrad-electronic.com/">Conrad Electronic</a> under order numbers 967602 and 642002. This clock is put between a parallel port and your printer. It receives the legal German time, which is either CET or CEST, from the DCF77 transmitter and uses it to set its internal quartz clock. The DCF77 transmitter is located near to Frankfurt/Main and covers a radius of more than 1500 kilometers.</p>
+ <p>The pcfclock device driver is required in order to use this reference clock driver. Currently device drivers for <a href="http://home.pages.de/%7evoegele/pcf.html">Linux</a> and <a href="http://schumann.cx/pcfclock/">FreeBSD</a> are available.</p>
+ <p>This driver uses C library functions to convert the received timecode to UTC and thus requires that the local timezone be CET or CEST. If your server is not located in Central Europe you have to set the environment variable TZ to CET before starting <tt>ntpd</tt>.</p>
+ <h4>Monitor Data</h4>
+ <p>Each timecode is written to the <tt>clockstats</tt> file in the format <tt>YYYY MM DD HH MI SS</tt>.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.1725.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>PCF</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>If set to 1, the radio clock's synchronisation status bit is ignored, ie the timecode is used without a check.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Not used by this driver.
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver36.html b/contrib/ntp/html/drivers/driver36.html
index 2644716..72fa665 100644
--- a/contrib/ntp/html/drivers/driver36.html
+++ b/contrib/ntp/html/drivers/driver36.html
@@ -2,261 +2,145 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Radio WWV/H Audio Demodulator/Decoder</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Radio WWV/H Audio Demodulator/Decoder</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Radio WWV/H Audio Demodulator/Decoder</h3>
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="../scripts/links8.txt"></script>
- <hr>
- <h4>Synopsis</h4>
- Address: 127.127.36.<i>u</i><br>
- Reference ID: <tt>NONE</tt>, <tt>WV<i>f</i></tt> or <tt>WH<i>f</i></tt><br>
- Driver ID: <tt>WWV_AUDIO</tt><br>
- Autotune Port: <tt>/dev/icom</tt>; 1200/9600 baud, 8-bits, no parity<br>
- Audio Device: <tt>/dev/audio</tt> and <tt>/dev/audioctl</tt>
- <h4>Description</h4>
- This driver synchronizes the computer time using data encoded in shortwave radio transmissions from NIST time/frequency stations <a href="http://www.bldrdoc.gov/timefreq/stations/wwv.html">WWV</a> in Ft. Collins, CO, and <a href="http://www.bldrdoc.gov/timefreq/stations/wwvh.htm">WWVH</a> in Kauai, HI. Transmissions are made continuously on 2.5, 5, 10 and 15 MHz from both stations and on 20 MHz from WWV. An ordinary shortwave receiver can be tuned manually to one of these frequencies or, in the case of ICOM receivers, the receiver can be tuned automatically by the driver as propagation conditions change throughout the day and night. The performance of this driver when tracking one of the stations is ordinarily better than 1 ms in time with frequency drift less than 0.5 PPM when not tracking either station.
- <p>The demodulation and decoding algorithms used by this driver are based on a machine language program developed for the TAPR DSP93 DSP unit, which uses the TI 320C25 DSP chip. The analysis, design and performance of the program running on this unit is described in: Mills, D.L. A precision radio clock for WWV transmissions. Electrical Engineering Report 97-8-1, University of Delaware, August 1997, 25 pp. Available from <a href="http://www.eecis.udel.edu/%7emills/reports.html">www.eecis.udel.edu/~mills/reports.htm</a>. For use in this driver, the original program was rebuilt in the C language and adapted to the NTP driver interface. The algorithms have been modified somewhat to improve performance under weak signal conditions and to provide an automatic station identification feature.</p>
- <p>This driver incorporates several features in common with other audio drivers such as described in the <a href="driver7.html">Radio CHU Audio Demodulator/Decoder</a> and the <a href="driver6.html">IRIG Audio Decoder</a> pages. They include automatic gain control (AGC), selectable audio codec port and signal monitoring capabilities. For a discussion of these common features, as well as a guide to hookup, debugging and monitoring, see the <a href="../audio.html">Reference Clock Audio Drivers</a> page.</p>
- <p>The WWV signal format is described in NIST Special Publication 432 (Revised 1990). It consists of three elements, a 5-ms, 1000-Hz pulse, which occurs at the beginning of each second, a 800-ms, 1000-Hz pulse, which occurs at the beginning of each minute, and a pulse-width modulated 100-Hz subcarrier for the data bits, one bit per second. The WWVH format is identical, except that the 1000-Hz pulses are sent at 1200 Hz. Each minute encodes nine BCD digits for the time of century plus seven bits for the daylight savings time (DST) indicator, leap warning indicator and DUT1 correction.</p>
- <h4>Program Architecture</h4>
- <p>As in the original program, the clock discipline is modelled as a Markov process, with probabilistic state transitions corresponding to a conventional clock and the probabilities of received decimal digits. The result is a performance level which results in very high accuracy and reliability, even under conditions when the minute beep of the signal, normally its most prominent feature, can barely be detected by ear with a communications receiver.</p>
- <p>The analog audio signal from the shortwave radio is sampled at 8000 Hz and converted to digital representation. The 1000/1200-Hz pulses and 100-Hz subcarrier are first separated using two IIR filters, a 600-Hz bandpass filter centered on 1100 Hz and a 150-Hz lowpass filter. The minute sync pulse is extracted using a 800-ms synchronous matched filter and pulse grooming logic which discriminates between WWV and WWVH signals and noise. The second sync pulse is extracted using a 5-ms FIR matched filter and 8000-stage comb filter.</p>
- <p>The phase of the 100-Hz subcarrier relative to the second sync pulse is fixed at the transmitter; however, the audio stage in many radios affects the phase response at 100 Hz in unpredictable ways. The driver adjusts for each radio using two 170-ms synchronous matched filters. The I (in-phase) filter is used to demodulate the subcarrier envelope, while the Q (quadrature-phase) filter is used in a tracking loop to discipline the codec sample clock and thus the demodulator phase.</p>
- <p>The data bit probabilities are determined from the subcarrier envelope using a threshold-corrected slicer. The averaged envelope amplitude 30 ms from the beginning of the second establishes the minimum (noise floor) value, while the amplitude 200 ms from the beginning establishes the maximum (signal peak) value. The slice level is midway between these two values. The negative-going envelope transition at the slice level establishes the length of the data pulse, which in turn establish probabilities for binary zero (P0) and binary one (P1). The data values are established by linear interpolation between the pulse lengths for P0 (-1) and P1 (+1). If the driver has not synchronized to the minute pulse, or if the data bit amplitude, signal/noise ratio (SNR) or length are below thresholds, the bit is considered invalid and the data value is ignored.</p>
- <p>The difference between the P1 and P0 data values, or likelihood, for each data bit is exponentially averaged in a set of 60 accumulators, one for each second, to determine the semi-static miscellaneous bits, such as DST indicator, leap second warning and DUT1 correction. In this design a data average value larger than a positive threshold is interpreted as +1 (hit) and a value smaller than a negative threshold as a -1 (miss). Values between the two thresholds, which can occur due to signal fades or loss of signal, are interpreted as an erasure and result in no change of indication.</p>
- <p>The BCD digit in each digit position of the timecode is represented as four data bits, all of which must be valid for the digit itself to be considered valid. If so, the bits are correlated with the bits corresponding to each of the valid decimal digits in this position. If the digit is invalid, the correlated value for all digits in this position is assumed zero. In either case, the values for all digits are exponentially averaged in a likelihood vector associated with this position. The digit associated with the maximum over all averaged values then becomes the maximum likelihood selection for this position and the ratio of the maximum over the next lower value becomes the likelihood ratio.</p>
- <p>The decoding matrix contains nine row vectors, one for each digit position. Each row vector includes the maximum likelihood digit, likelihood vector and other related data. The maximum likelihood digit for each of the nine digit positions becomes the maximum likelihood time of the century. A built-in transition function implements a conventional clock with decimal digits that count the minutes, hours, days and years, as corrected for leap seconds and leap years. The counting operation also rotates the likelihood vector corresponding to each digit as it advances. Thus, once the clock is set, each clock digit should correspond to the maximum likelihood digit as transmitted.</p>
- <p>Each row of the decoding matrix also includes a compare counter and the difference (modulo the radix) between the current clock digit and most recently determined maximum likelihood digit. If a digit likelihood exceeds the decision level and the difference is constant for a number of successive minutes in any row, the maximum likelihood digit replaces the clock digit in that row. When this condition is true for all rows and the second epoch has been reliably determined, the clock is set (or verified if it has already been set) and delivers correct time to the integral second. The fraction within the second is derived from the logical master clock, which runs at 8000 Hz and drives all system timing functions.</p>
- <p>The logical master clock is derived from the audio codec clock. Its frequency is disciplined by a frequency-lock loop (FLL) which operates independently of the data recovery functions. At averaging intervals determined by the measured jitter, the frequency error is calculated as the difference between the most recent and the current second epoch divided by the interval. The sample clock frequency is then corrected by this amount. When first started, the frequency averaging interval is eight seconds, in order to compensate for intrinsic codec clock frequency offsets up to 125 PPM. Under most conditions, the averaging interval doubles in stages from the initial value to over 1000 seconds, which results in an ultimate frequency precision of 0.125 PPM, or about 11 ms/day.</p>
- <p>It is important that the logical clock frequency is stable and accurately determined, since in most applications the shortwave radio will be tuned to a fixed frequency where WWV or WWVH signals are not available throughout the day. In addition, in some parts of the US, especially on the west coast, signals from either or both WWV and WWVH may be available at different times or even at the same time. Since the propagation times from either station are almost always different, each station must be reliably identified before attempting to set the clock.</p>
- <p>Station identification uses the 800-ms minute pulse transmitted by each station. In the acquisition phase the entire minute is searched using both the WWV and WWVH matched filters and a pulse gate discriminator similar to that found in radar acquisition and tracking receivers. The peak amplitude found determines a range gate and window where the next pulse is expected to be found. The minute is scanned again to verify the peak is indeed in the window and with acceptable amplitude, SNR and jitter. At this point the receiver begins to track the second sync pulse and operate as above until the clock is set. Once the minute is synchronized, the range gate is fixed and only energy within the window is considered for the minute sync pulse.</p>
- <p>It is very important to be able to reliably discriminate between very weak signals in noise and noise alone. The driver very aggresively soaks up every scrap of signal information, but has to be careful to avoid making pseudo-sense of noise alone. The signal quality metric depends on the minute pulse amplitude and SNR together with the data subcarrier amplitude and SNR. If all four values are above defined thresholds a hit is declared, otherwise a miss. The number of hits declared in the last six intervals is the high order bits of the metric value, while the current minute sync pulse amplitude is the low order bits. The metric value is represented on a scale from zero to 100. This is used as a quality indicator and reported in the timecode and also for the autotune function described below.</p>
- <h4>Performance</h4>
- <p>It is the intent of the design that the accuracy and stability of the indicated time be limited only by the characteristics of the ionospheric propagation medium. Conventional wisdom is that synchronization via the HF medium is good only to a millisecond under the best propagation conditions. The performance of the NTP daemon disciplined by the driver is clearly better than this, even under marginal conditions. Ordinarily, with marginal to good signals and a frequency averaging interval of 1024 s, the frequency is stabilized within 0.1 PPM and the time within 125 <font face="Symbol">m</font>s. The frequency stability characteristic is highly important, since the clock may have to free-run for several hours before reacquiring the WWV/H signal.</p>
- <p>The expected accuracy over a typical day was determined using the DSP93 and an oscilloscope and cesium oscillator calibrated with a GPS receiver. With marginal signals and allowing 15 minutes for initial synchronization and frequency compensation, the time accuracy determined from the WWV/H second sync pulse was reliably within 125 <font face="Symbol">m</font>s. In the particular DSP-93 used for program development, the uncorrected CPU clock frequency offset was 45.8&plusmn;0.1 PPM. Over the first hour after initial synchronization, the clock frequency drifted about 1 PPM as the frequency averaging interval increased to the maximum 1024 s. Once reaching the maximum, the frequency wandered over the day up to 1 PPM, but it is not clear whether this is due to the stability of the DSP-93 clock oscillator or the changing height of the ionosphere. Once the frequency had stabilized and after loss of the WWV/H signal, the frequency drift was less than 0.5 PPM, which is equivalent to 1.8 ms/h or 43 ms/d. This resulted in a step phase correction up to several milliseconds when the signal returned.</p>
- <p>The measured propagation delay from the WWV transmitter at Boulder, CO, to the receiver at Newark, DE, is 23.5&plusmn;0.1 ms. This is measured to the peak of the pulse after the second sync comb filter and includes components due to the ionospheric propagation delay, nominally 8.9 ms, communications receiver delay and program delay. The propagation delay can be expected to change about 0.2 ms over the day, as the result of changing ionosphere height. The DSP93 program delay was measured at 5.5 ms, most of which is due to the 400-Hz bandpass filter and 5-ms matched filter. Similar delays can be expected of this driver.</p>
- <h4>Program Operation</h4>
- The driver begins operation immediately upon startup. It first searches for one or both of the stations WWV and WWVH and attempts to acquire minute sync. This may take some fits and starts, as the driver expects to see three consecutive minutes with good signals and low jitter. If the autotune function is active, the driver will rotate over all five frequencies and both WWV and WWVH stations until three good minutes are found.
- <p>When a minute sync candidate has been found, the driver acquires second sync, which can take up to several minutes, depending on signal quality. At the same time the driver accumulates likelihood values for each of the nine digits of the clock, plus the seven miscellaneous bits included in the WWV/H transmission format. When five repetitions of all nine digits have decoded correctly, which normally takes 15 minutes with good signals and up to an hour when buried in noise, and the second sync alarm has not been raised for two minutes, the clock is set (or verified) and is selectable to discipline the system clock.</p>
- <p>As long as the clock is set or verified, the system clock offsets are provided once each second to the reference clock interface, where they are saved in a buffer. At the end of each minute the buffer samples are groomed by the median filter and trimmed-mean averaging functions. Using these functions, the system clock can in principle be disciplined to a much finer resolution than the 125-<font face="Symbol">m</font>s sample interval would suggest, although the ultimate accuracy is probably limited by propagation delay variations as the ionspheric height varies throughout the day and night.</p>
- <p>The codec clock frequency is disciplined during times when WWV/H signals are available. The algorithm refines the frequency offset using increasingly longer averaging intervals to 1024 s, where the precision is about 0.1 PPM. With good signals, it takes well over two hours to reach this degree of precision; however, it can take many more hours than this in case of marginal signals. Once reaching the limit, the algorithm will follow frequency variations due to temperature fluctuations and ionospheric height variations.</p>
- <p>It may happen as the hours progress around the clock that WWV and WWVH signals may appear alone, together or not at all. When the driver is first started, the NTP reference identifier appears as <tt>NONE</tt>. When the driver has mitigated which station and frequency is best, it sets the reference identifier to the string WV<i>f</i> for WWV and WH<i>f</i> for WWVH, where <i>f</i> is the frequency in megahertz. If the propagation delays have been properly set with the <tt>fudge time1</tt> (WWV) and <tt>fudge time2</tt> (WWVH) commands in the configuration file, handover from one station to the other is seamless.</p>
- <p>Once the clock has been set for the first time, it will appear reachable and selectable to discipline the system clock, even if the broadcast signal fades to obscurity. A consequence of this design is that, once the clock is set, the time and frequency are disciplined only by the second sync pulse and the clock digits themselves are driven by the clock state machine. If for some reason the state machine drifts to the wrong second, it would never reresynchronize. To protect against this most unlikely situation, if after two days with no signals, the clock is considered unset and resumes the synchronization procedure from the beginning.</p>
- <p>However, as long as the clock has once been set correctly and allowed to converge on the intrinsic codec clock frequency, it will continue to read correctly after a period of signal loss. Assuming the clock frequency can be disciplined within 1 PPM, it can coast without signals for several days without exceeding that NTP step threshold of 128 ms. During such periods the root dispersion increases at 5 <font face="Symbol">m</font>s per second, which makes the driver appears less likely for selection as time goes on. Eventually, when the dispersion due all causes exceeds 1 s, it is no longer suitable for synchronization at all.</p>
- <p>To work well, the driver needs a shortwave receiver with good audio response at 100 Hz. Most shortwave and communications receivers roll off the audio response below 250 Hz, so this can be a problem, especially with receivers using DSP technology, since DSP filters can have very fast rolloff outside the passband. Some DSP transceivers, in particular the ICOM 775, have a programmable low frequency cutoff which can be set as low as 80 Hz. However, this particular radio has a strong low frequency buzz at about 10 Hz which appears in the audio output and can affect data recovery under marginal conditions. Although not tested, it would seem very likely that a cheap shortwave receiver could function just as well as an expensive communications receiver.</p>
- <h4>Autotune</h4>
- <p>The driver includes provisions to automatically tune the radio in response to changing radio propagation conditions throughout the day and night. The radio interface is compatible with the ICOM CI-V standard, which is a bidirectional serial bus operating at TTL levels. The bus can be connected to a serial port using a level converter such as the CT-17.</p>
- <p>Each ICOM radio is assigned a unique 8-bit ID select code, usually expressed in hex format. To activate the CI-V interface, the <tt>mode</tt> keyword of the <tt>server</tt> configuration command specifies a nonzero select code in decimal format. A table of ID select codes for the known ICOM radios is given below. Since all ICOM select codes are less than 128, the high order bit of the code is used by the driver to specify the baud rate. If this bit is not set, the rate is 9600 bps for the newer radios; if set, the rate is 1200 bps for the older radios. A missing <tt>mode</tt> keyword or a zero argument leaves the interface disabled.</p>
- <p>If specified, the driver will attempt to open the device <tt>/dev/icom</tt> and, if successful will activate the autotune function and tune the radio to each operating frequency in turn while attempting to acquire minute sync from either WWV or WWVH. However, the driver is liberal in what it assumes of the configuration. If the <tt>/dev/icom</tt> link is not present or the open fails or the CI-V bus or radio is inoperative, the driver quietly gives up with no harm done.</p>
- <p>Once acquiring minute sync, the driver operates as described above to set the clock. However, during seconds 59, 0 and 1 of each minute it tunes the radio to one of the five broadcast frequencies to measure the sync pulse and data pulse amplitudes and SNR and update the signal metric. Each of the five frequencies are probed in a five-minute rotation to build a database of current propagation conditions for all signals that can be heard at the time. At the end of each probe a mitigation procedure scans the database and retunes the radio to the best frequency and station found. For this to work well, the radio should be set for a fast AGC recovery time. This is most important while tracking a strong signal, which is normally the case, and then probing another frequency, which may have much weaker signals.</p>
- <p>Reception conditions for each frequency and station are evaluated according to the signal metric, which uses the minute sync pulse amplitude and SNR and data subcarrier amplitude and SNR. The minute pulse is evaluated at second 0, while the data pulse is evaluated at second 1. In principle, the data pulse in second 58 is usable, but the AGC in most radios is not fast enough for a reliable measurement.</p>
- <p>The results are summarized in a scoreboard which drives the mitigation function.</p>
- <dl>
- <dt><tt>0x0001</tt>
- <dd>Minute pulse error. For the minute sync pulse in second 0, either the amplitude or SNR is below threshold (2000 and 20 dB, respectively).
- <dt><tt>0x0002</tt>
- <dd>Data pulse error. For the data pulse in second 1, either the amplitude or SNR is below threshold (1000 and 10 dB, respectively).
- <dt><tt>0x0004</tt>
- <dd>Probe pulse error. Two or more decoding errors have occurred for the data pulses in seconds 58, 59 and 1.
- </dl>
- <p>If none of the scoreboard bits are set, a hit is declared, otherwise a miss. At the end of each probe, the frequency and station with the maximum metric is chosen, with ties going first to the highest frequency and then to WWV in order. During the acquisition phase a station is considered valid only if the metric is above 13; after the clock is synchronized a station is valid only if the metric is above 50. If no stations are valid, the driver ignores all signals and sets the reference ID field to NONE.</p>
- <h4>Diagnostics</h4>
- <p>The autotune process produces diagnostic information along with the timecode. This is very useful for evaluating the performance of the algorithms, as well as radio propagation conditions in general. The message is produced once each minute for each frequency in turn after minute sync has been acquired.</p>
- <p><tt>wwv5 port status agc epoch count wwv wwvh</tt></p>
- <p>where <tt>port</tt> and <tt>agc</tt> are the audio port and gain, respectively, for this frequency and <tt>wwv</tt> and <tt>wwvh</tt> are two sets of fields, one each for WWV and WWVH. Each of the two fields has the format</p>
- <p><tt>ident score metric sync/snr</tt></p>
- <p>where <tt>ident </tt>encodes the station (<tt>C</tt> for WWV, <tt>H</tt> for WWVH) and frequency (2, 5, 10, 15 or 20), <tt>score</tt> is a 32-bit shift register recording the hits (1) and misses (0) of the last 32 probes (hits and misses enter from the right), <tt>metric</tt> is as described above, <tt>sync</tt> is the minute sync pulse amplitude and <tt>snr</tt> is the SNR. An example is:</p>
- <p><tt>wwv5 2 110d 111 5753 2 WV20 bdeff 100 8348/30.0/-3 WH20 0000 1 22/-12.4</tt></p>
- <p>Here the radio is tuned to 20 MHz and the line-in port AGC is currently 111 at that frequency. The message contains a report for WWV (<tt>WV20</tt>) and WWVH (<tt>WH20</tt>). The WWV report <tt>score</tt> is <tt>bdeff</tt> and the metric is 100, which suggests very good reception conditions, and the minute sync amplitude and SNR are well above thresholds (2000 and 20 dB, respectively). While the message shows solid reception conditions from WWV, this is not the case for WWVH. Both the minute sync amplitude and SNR are below thresholds and the station has not been heard during the last 160 minutes.</p>
- <h4>Debugging Aids</h4>
- <p>The most convenient way to track the driver status is using the <tt>ntpq</tt> program and the <tt>clockvar</tt> command. This displays the last determined timecode and related status and error counters, even when the driver is not disciplining the system clock. If the debugging trace feature (<tt>-d</tt> on the <tt>ntpd</tt> command line)is enabled, the driver produces detailed status messages as it operates. If the <tt>fudge flag 4</tt> is set, these messages are written to the <tt>clockstats</tt> file. All messages produced by this driver have the prefix <tt>wwv</tt> for convenient filtering with the Unix <tt>grep</tt> command.</p>
- <p>In the following descriptions the units of amplitude, phase, probability and likelihood are normalized to the range 0-6000 for convenience. In addition, the signal/noise ratio (SNR) and likelihood ratio are measured in decibels and the words with bit fields are in hex. Most messages begin with a leader in the following format:</p>
- <p><tt>wwvn ss stat sigl</tt></p>
- <p>where <tt>wwvn</tt> is the message code, <tt>ss</tt> the second of minute, <tt>stat</tt> the driver status word and <tt>sigl</tt> the second sync pulse amplitude. A full explanation of the status bits is contained in the driver source listing; however, the following are the most useful for debugging.</p>
- <dl>
- <dt><tt>0x0001</tt>
- <dd>Minute sync. Set when the decoder has identified a station and acquired the minute sync pulse.
- <dt><tt>0x0002</tt>
- <dd>Second sync. Set when the decoder has acquired the second sync pulse and within 125 <font face="Symbol">m</font>s of the correct phase.
- <dt><tt>0x0004</tt>
- <dd>digit sync. Set when the decoder has reliably determined at least one digit of the minute. <dt><tt>0x0008</tt>
- <dd>Clock set. Set when the decoder has reliably determined all nine digits of the timecode and is selectable to discipline the system clock.
- </dl>
- <p>With debugging enabled the driver produces messages in the following formats:</p>
- <p>Format <tt>wwv8</tt> messages are produced once per minute by the WWV and WWVH station processes before minute sync has been acquired. They show the progress of identifying and tracking the minute pulse of each station.</p>
- <p><tt>wwv8 port agc ident comp ampl snr epoch jitr offs</tt></p>
- <p>where <tt>port</tt> and <tt>agc</tt> are the audio port and gain, respectively. The <tt>ident</tt>encodes the station (<tt>C</tt> for WWV, <tt>H</tt> for WWVH) and frequency (2, 5, 10, 15 or 20). For the encoded frequency, <tt>comp</tt> is the hit counter, <tt>ampl</tt> the pulse amplitude, <tt>snr</tt> the SNR, <tt>epoch</tt> the sample number of the minute pulse in the minute, <tt>jitr</tt> the change since the last <tt>epoch</tt> and <tt>offs</tt> the minute pulse offset relative to the second pulse. An example is:</p>
- <p><tt>wwv8 2 127 WV15 2 9247 30.0 18843 -1 1</tt><br>
- <tt>wwv8 2 127 WH15 0 134 -2.9 19016 193 174</tt></p>
- <p>Here the radio is tuned to WWV at 15 MHz, using the line-in port and the AGC is currently 127. The driver has not yet acquired minute sync, the station has been heard for at least two minutes, and WWVH is in the noise. The WWV minute pulse amplitude and SNR are well above the threshold (2000 and 6 dB, respectively) and the minute epoch has been determined -1 sample relative to the last one and 1 sample relative to the second sync pulse. The hit counter has incrmented to two; when it gets to three, minute sync has been acquired.</p>
- <p>Format <tt>wwv3</tt> messages are produced after minute sync has been acquired and until the seconds unit digit is determined. They show the results of decoding each bit of the transmitted timecode.</p>
- <p><tt>wwv3 ss stat sigl ssnr ampl dsnr like</tt></p>
- <p>where <tt>ss</tt>, <tt>stat</tt> and <tt>sigl</tt> are as above, <tt>ssnr</tt> is the seconds sync SNR, <tt>ampl</tt> the subcarrier amplitude, <tt>dsnr</tt> the subcarrier SNR and <tt>like</tt> the bit likelihood. An example is:</p>
- <p><tt>wwv3 28 0123 4122 30.0 4286 24.8 -5545</tt></p>
- <p>Here the driver has acquired minute and second sync, but has not yet determined the seconds unit digit. However, it has just decoded bit 28 of the minute. The results show the second sync pulse amplitude well over the threshold (500), subcarrier amplitude well above the threshold (1000), good SNR well above the threshold (10 dB). The bit is almost certainly a zero and the likelihood of a zero in this second is very high.</p>
- <p>Format <tt>wwv4</tt> messages are produced for each of the nine BCD timecode digits until the clock has been set or verified. They show the results of decoding each digit of the transmitted timecode.</p>
- <p><tt>wwv4 ss stat sigl radx ckdig mldig diff cnt like snr</tt></p>
- <p>where <tt>ss</tt>, <tt>stat</tt> and <tt>sigl</tt> are as above, <tt>radx</tt> is the digit radix (3, 4, 6, 10), <tt>ckdig</tt> the current clock digit, <tt>mldig</tt> the maximum likelihood digit, <tt>diff</tt> the difference between these two digits modulo the radix, <tt>cnt</tt> the compare counter, <tt>like</tt> the digit likelihood and <tt>snr</tt> the likelihood ratio. An example is:</p>
- <p><tt>wwv4 8 010f 5772 10 9 9 0 6 4615 6.1</tt></p>
- <p>Here the driver has previousl set or verified the clock. It has just decoded the digit preceding second 8 of the minute. The digit radix is 10, the current clock and maximum likelihood digits are both 9, the likelihood is well above the threshold (1000) and the likelihood function well above threshold (3.0 dB). Short of a hugely unlikely probability conspiracy, the clock digit is most certainly a 9.</p>
- <p>Format <tt>wwv2</tt> messages are produced at each master oscillator frequency update, which starts at 8 s, but eventually climbs to 1024 s. They show the progress of the algorithm as it refines the frequency measurement to a precision of 0.1 PPM.</p>
- <p><tt>wwv2 ss stat sigl epoch maxrun jitr avinc avint wiggle freq</tt></p>
- <p>where <tt>ss</tt>, <tt>stat</tt> and <tt>sigl</tt> are as above, <tt>epoch</tt> the codec clock at the seconds epoch, <tt>maxrun </tt>the maximum run length, <tt>jitr</tt> the jitter counter, <tt>avinc</tt> the increment counter, <tt>avint</tt> the averaging interval, <tt>phase</tt> the phase correction and <tt>freq</tt> the current frequency (PPM). An example is:</p>
- <p><tt>wwv2 22 030f 5795 7433 223 0 3 256 0 49.0</tt></p>
- <p>Here the driver has acquired minute and second sync and set the clock. The averaging interval has increased to 256 s on the way to 1024 s, has stayed at that interval for 3 averaging intervals and the current frequency is 49.0 PPM.</p>
- <p>If the CI-V interface for ICOM radios is active, a debug level greater than 1 will produce a trace of the CI-V command and response messages. Interpretation of these messages requires knowledge of the CI-V protocol, which is beyond the scope of this document.</p>
- <h4>Monitor Data</h4>
- When enabled by the <tt>filegen</tt> facility, every received timecode is written to the <tt>clockstats</tt> file in the following format:
- <pre>
- sq yyyy ddd hh:mm:ss ld du lset agc ident metric errs freq cons
+ <body>
+ <h3>Radio WWV/H Audio Demodulator/Decoder</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ Address: 127.127.36.<i>u</i><br>
+ Reference ID: <tt>WV<i>f</i></tt> or <tt>WH<i>f</i></tt><br>
+ Driver ID: <tt>WWV_AUDIO</tt><br>
+ Autotune Port: <tt>/dev/icom</tt>; 1200/9600 baud, 8-bits, no parity<br>
+ Audio Device: <tt>/dev/audio</tt> and <tt>/dev/audioctl</tt>
+ <h4>Description</h4>
+ This driver synchronizes the computer time using data encoded in shortwave radio transmissions from NIST time/frequency stations <a href="http://www.bldrdoc.gov/timefreq/stations/wwv.html">WWV</a> in Ft. Collins, CO, and <a href="http://www.bldrdoc.gov/timefreq/stations/wwvh.htm">WWVH</a> in Kauai, HI. Transmissions are made continuously on 2.5, 5, 10 and 15 MHz from both stations and on 20 MHz from WWV. An ordinary shortwave receiver can be tuned manually to one of these frequencies or, in the case of ICOM receivers, the receiver can be tuned automatically by the driver as propagation conditions change throughout the day and season. The performance of this driver when tracking one of the stations is ordinarily better than 1 ms in time with frequency drift less than 0.1 PPM when not tracking any station.<p>The demodulation and decoding algorithms used by this driver are based on a machine language program developed for the TAPR DSP93 DSP unit, which uses the TI 320C25 DSP chip. The analysis, design and performance of the program running on this unit is described in: Mills, D.L. A precision radio clock for WWV transmissions. Electrical Engineering Report 97-8-1, University of Delaware, August 1997, 25 pp. Available from <a href="http://www.eecis.udel.edu/%7emills/reports.html">www.eecis.udel.edu/~mills/reports.htm</a>. For use in this driver, the original program was rebuilt in the C language and adapted to the NTP driver interface. The algorithms have been modified to improve performance, especially under weak signal conditions and to provide an automatic frequency and station selection feature.</p>
+ <p>This driver incorporates several features in common with other audio drivers such as described in the <a href="driver7.html">Radio CHU Audio Demodulator/Decoder</a> and the <a href="driver6.html">IRIG Audio Decoder</a> pages. They include automatic gain control (AGC), selectable audio codec port and signal monitoring capabilities. For a discussion of these common features, as well as a guide to hookup, debugging and monitoring, see the <a href="../audio.html">Reference Clock Audio Drivers</a> page.</p>
+ <p>The WWV signal format is described in NIST Special Publication 432 (Revised 1990). It consists of three elements, a 5-ms, 1000-Hz pulse, which occurs at the beginning of each second, a 800-ms, 1000-Hz pulse, which occurs at the beginning of each minute, and a pulse-width modulated 100-Hz subcarrier for the data bits, one bit per second. The WWVH format is identical, except that the 1000-Hz pulses are sent at 1200 Hz. Each minute encodes nine BCD digits for the time of century plus seven bits for the daylight savings time (DST) indicator, leap warning indicator and DUT1 correction.</p>
+ <h4>Program Architecture</h4>
+ <p>As in the original program, the clock discipline is modelled as a Markov process, with probabilistic state transitions corresponding to a conventional clock and the probabilities of received decimal digits. The result is a performance level which results in very high accuracy and reliability, even under conditions when the minute beep of the signal, normally its most prominent feature, can barely be detected by ear using a communications receiver.</p>
+ <p>The analog audio signal from the shortwave radio is sampled at 8000 Hz and converted to digital representation. The 1000/1200-Hz pulses and 100-Hz subcarrier are first separated using two IIR filters, a 600-Hz bandpass filter centered on 1100 Hz and a 150-Hz lowpass filter. The minute synch pulse is extracted using an 800-ms synchronous matched filter and pulse grooming logic which discriminates between WWV and WWVH signals and noise. The second synch pulse is extracted using a 5-ms FIR matched filter and 8000-stage comb filter.</p>
+ <p>The phase of the 100-Hz subcarrier relative to the second synch pulse is fixed at the transmitter; however, the audio stage in many radios affects the phase response at 100 Hz in unpredictable ways. The driver adjusts for each radio using two 170-ms synchronous matched filters. The I (in-phase) filter is used to demodulate the subcarrier envelope, while the Q (quadrature-phase) filter is used in a tracking loop to discipline the codec sample clock and thus the demodulator phase.</p>
+ <p>A bipolar data signal is determined from the matched filter I and Q channels using a pulse-width discriminator. The discriminator samples the I channel at 15 ms (<i>n</i>), 200 ms (<i>s</i><sub>1</sub>) and 500 ms (<i>s</i><sub>0</sub>), and the envelope (RMS&nbsp;I and Q channels) at 200 ms (<i>e</i><sub>1</sub>)&nbsp;and the end of the second (<i>e</i><sub>0</sub>). The bipolar data signal is expressed <i>s</i><sub>1</sub> - 2<i>s</i><sub>0 </sub>- <i>n.</i> Note that, since the signals <i>s</i><sub>0</sub> and <i>s</i><sub>1</sub> include the noise <i>n</i>, this term cancels out. The data bit SNR&nbsp;is calculated as 20 log<sub>10</sub>(<i>e</i><sub>1</sub> / <i>e</i><sub>0</sub>). If the driver has not synchronized to the minute pulse, or if the data bit amplitude <i>e</i><sub>1</sub> or SNR are below thresholds, the bit is considered invalid and the bipolar signal is forced to zero.</p>
+ <p>The bipolar signal is exponentially averaged in a set of 60 accumulators, one for each second, to determine the semi-static miscellaneous bits, such as DST indicator, leap second warning and DUT1 correction. In this design a data average value larger than a positive threshold is interpreted as +1 (hit) and a value smaller than a negative threshold as a -1 (miss). Values between the two thresholds, which can occur due to signal fades, are interpreted as an erasure and result in no change of indication.</p>
+ <p>The BCD digit in each digit position of the timecode is represented as four data bits. The bits are correlated with the bits corresponding to each of the valid decimal digits in this position. If any of the four bits are invalid, the correlated value for all digits in this position is assumed zero. In either case, the values for all digits are exponentially averaged in a likelihood vector associated with this position. The digit associated with the maximum over all averaged values then becomes the maximum likelihood selection for this position and the ratio of the maximum over the next lower value represents the digit SNR.</p>
+ <p>The decoding matrix contains nine row vectors, one for each digit position. Each row vector includes the maximum likelihood digit, likelihood vector and other related data. The maximum likelihood digit for each of the nine digit positions becomes the maximum likelihood time of the century. A built-in transition function implements a conventional clock with decimal digits that count the minutes, hours, days and years, as corrected for leap seconds and leap years. The counting operation also rotates the likelihood vector corresponding to each digit as it advances. Thus, once the clock is set, each clock digit should correspond to the maximum likelihood digit as transmitted.</p>
+ <p>Each row of the decoding matrix also includes a compare counter and the most recently determined maximum likelihood digit. If a digit likelihood exceeds the decision level and compares with previous digits for a number of successive minutes in any row, the maximum likelihood digit replaces the clock digit in that row. When this condition is true for all rows and the second epoch has been reliably determined, the clock is set (or verified if it has already been set) and delivers correct time to the integral second. The fraction within the second is derived from the logical master clock, which runs at 8000 Hz and drives all system timing functions.</p>
+ <p>The logical master clock is derived from the audio codec clock. Its frequency is disciplined by a frequency-lock loop (FLL) which operates independently of the data recovery functions. At averaging intervals determined by the measured jitter, the frequency error is calculated as the difference between the most recent and the current second epoch divided by the interval. The sample clock frequency is then corrected by this amount. When first started, the frequency averaging interval is eight seconds, in order to compensate for intrinsic codec clock frequency offsets up to 125 PPM. Under most conditions, the averaging interval doubles in stages from the initial value to over 1000 seconds, which results in an ultimate frequency precision of 0.125 PPM, or about 11 ms/day.</p>
+ <p>It is important that the logical clock frequency is stable and accurately determined, since in most applications the shortwave radio will be tuned to a fixed frequency where WWV or WWVH signals are not available throughout the day. In addition, in some parts of the US, especially on the west coast, signals from either or both WWV and WWVH may be available at different times or even at the same time. Since the propagation times from either station are almost always different, each station must be reliably identified before attempting to set the clock.</p>
+ <p>Reliable station identification requires accurate discrimination between very weak signals in noise and noise alone. The driver very aggresively soaks up every scrap of signal information, but has to be careful to avoid making pseudo-sense of noise alone. The signal quality metric depends on the minute pulse amplitude and SNR&nbsp;measured in second 0 of the minute, together with the data subcarrier amplitude and SNR measured in second 1. If all four values are above defined thresholds a hit is declared, otherwise a miss. The number of hits declared in the last six minutes by each station represents the high order bits of the metric value, while the current minute pulse amplitude repressents the low order bits. The resulting value is then scaled from zero to 100 for use as a quality indicator. It is used by the autotune function described below and reported in the timecode string.</p>
+ <h4>Performance</h4>
+ <p>It is the intent of the design that the accuracy and stability of the indicated time be limited only by the characteristics of the ionospheric propagation medium. Conventional wisdom is that synchronization via the HF medium is good only to a millisecond under the best propagation conditions. The performance of the NTP daemon disciplined by the driver is clearly better than this, even under marginal conditions. Ordinarily, with marginal to good signals and a frequency averaging interval of 1024 s, the frequency is stabilized within 0.1 PPM and the time within 0.5 ms. The frequency stability characteristic is highly important, since the clock may have to free-run for several hours before reacquiring the WWV/H signal.</p>
+ <p>The expected accuracy over a typical day was determined using the DSP93 and an oscilloscope and cesium oscillator calibrated with a GPS receiver. With marginal signals and allowing 15 minutes for initial synchronization and frequency compensation, the time accuracy determined from the WWV/H second synch pulse was reliably within 125 <font face="Symbol">m</font>s. In the particular DSP93 used for program development, the uncorrected CPU clock frequency offset was 45.8&plusmn;0.1 PPM. Over the first hour after initial synchronization, the clock frequency drifted about 1 PPM as the frequency averaging interval increased to the maximum 1024 s. Once reaching the maximum, the frequency wandered over the day up to 1 PPM, but it is not clear whether this is due to the stability of the DSP93 clock oscillator or the changing height of the ionosphere. Once the frequency had stabilized and after loss of the WWV/H signal, the frequency drift was less than 0.5 PPM, which is equivalent to 1.8 ms/h or 43 ms/d. This resulted in a step phase correction up to several milliseconds when the signal returned.</p>
+ <p>The measured propagation delay from the WWV transmitter at Boulder, CO, to the receiver at Newark, DE, is 23.5&plusmn;0.1 ms. This is measured to the peak of the pulse after the second synch comb filter and includes components due to the ionospheric propagation delay, nominally 8.9 ms, communications receiver delay and program delay. The propagation delay can be expected to change about 0.2 ms over the day, as the result of changing ionosphere height. The DSP93 program delay was measured at 5.5 ms, most of which is due to the 400-Hz bandpass filter and 5-ms matched filter. Similar delays can be expected of this driver.</p>
+ <h4>Program Operation</h4>The driver begins operation immediately upon startup. It first searches for one or both of the stations WWV and WWVH and attempts to acquire minute synch. This may take some fits and starts, as the driver expects to see several consecutive minutes with good signals and low jitter. If the autotune function is active, the driver will rotate over all five frequencies and both WWV and WWVH stations until at least three good minutes are found.<p>When a minute synch candidate has been found, the driver acquires second synch, which can take up to several minutes, depending on signal quality. At the same time the driver accumulates likelihood values for the unit (seconds) digit of the nine digits of the timecode, plus the seven miscellaneous bits included in the WWV/H transmission format. When a good unit digit has been found, the driver accumlates likelihood values for the remaining eight digits of the timecode. When three repetitions of all nine digits have decoded correctly, which normally takes 15 minutes with good signals, and up to 40 minutes when buried in noise, and the second synch has been acquired, the clock is set (or verified) and is selectable to discipline the system clock.</p>
+ <p>Once the clock is set, it continues to provide correct timecodes, even if all signals are losst. The time is considered correct as long as the second synch amplitude and SNR are above specified thresholds and jitter is below threshold. As long as the clock is set or verified, the system clock offsets are provided once each minute to the reference clock interface, where they are processed using the same algorithms used with other local reference clocks and remote servers. Using these algorithms, the system clock can in principle be disciplined to a much finer resolution than the 125-<font face="Symbol">m</font>s sample interval would suggest, although the ultimate accuracy is probably limited by propagation delay variations as the ionspheric height varies throughout the day and night.</p>
+ <p>The codec clock frequency is disciplined during times when WWV/H signals are available. The algorithm refines the frequency offset using increasingly longer averaging intervals to 1024 s, where the precision is about 0.1 PPM. With good signals, it takes well over two hours to reach this degree of precision; however, it can take many more hours than this in case of marginal signals. Once reaching the limit, the algorithm will follow frequency variations due to temperature fluctuations and ionospheric height variations.</p>
+ <p>It may happen as the hours progress around the clock that WWV and WWVH signals may appear alone, together or not at all. When the driver has mitigated which station and frequency is best, it sets the reference identifier to the string WV<i>f</i> for WWV and WH<i>f</i> for WWVH, where <i>f</i> is the frequency in megahertz. If the propagation delays have been properly set with the <tt>fudge time1</tt> (WWV) and <tt>fudge time2</tt> (WWVH) commands in the configuration file, handover from one station to the other is seamless.</p>
+ <p>Once the clock has been set for the first time, it will appear reachable and selectable to discipline the system clock. Operation continues as long as the signal quality from at least one station on at least one frequency is acceptable. A consequence of this design is that, once the clock is set, the time and frequency are disciplined only by the second synch pulse and the clock digits themselves are driven by the clock state machine. If for some reason the state machine drifts to the wrong second, it would never reresynchronize. To protect against this most unlikely situation, if after two days with no signals, the clock is considered unset and resumes the synchronization procedure from the beginning.</p>
+ <p>However, as long as the clock has once been set correctly and allowed to converge to the intrinsic codec clock frequency, it will continue to read correctly even during the holdover interval, but with increasing dispersion. Assuming the clock frequency can be disciplined within 1 PPM, it can coast without signals for several days without exceeding the NTP step threshold of 128 ms. During such periods the root dispersion increases at 5 <font face="Symbol">m</font>s per second, which makes the driver appear less likely for selection as time goes on. Eventually, when the dispersion due all causes exceeds 1 s, it is no longer suitable for synchronization.</p>
+ <p>To work well, the driver needs a shortwave receiver with good audio response at 100 Hz. Most shortwave and communications receivers roll off the audio response below 250 Hz, so this can be a problem, especially with receivers using DSP technology, since DSP filters can have very fast rolloff outside the passband. Some DSP transceivers, in particular the ICOM 775, have a programmable low frequency cutoff which can be set as low as 80 Hz. However, this particular radio has a strong low frequency buzz at about 10 Hz which appears in the audio output and can affect data recovery under marginal conditions. Although not tested, it would seem very likely that a cheap shortwave receiver could function just as well as an expensive communications receiver.</p>
+ <h4>Autotune</h4>
+ <p>The driver includes provisions to automatically tune the radio in response to changing radio propagation conditions throughout the day and night. The radio interface is compatible with the ICOM CI-V standard, which is a bidirectional serial bus operating at TTL levels. The bus can be connected to a serial port using a level converter such as the CT-17.</p>
+ <p>Each ICOM radio is assigned a unique 8-bit ID select code, usually expressed in hex format. To activate the CI-V interface, the <tt>mode</tt> keyword of the <tt>server</tt> configuration command specifies a nonzero select code in decimal format. A table of ID select codes for the known ICOM radios is given on the <a href="../audio.html">Reference Clock Audio Drivers</a> page. A missing <tt>mode</tt> keyword or a zero argument leaves the interface disabled.</p>
+ <p>If specified, the driver will attempt to open the device <tt>/dev/icom</tt> and, if successful will activate the autotune function and tune the radio to each operating frequency in turn while attempting to acquire minute synch from either WWV or WWVH. However, the driver is liberal in what it assumes of the configuration. If the <tt>/dev/icom</tt> link is not present or the open fails or the CI-V bus or radio is inoperative, the driver quietly gives up with no harm done.</p>
+ <p>Once acquiring minute synch, the driver operates as described above to set the clock. However, during seconds 59, 0 and 1 of each minute it tunes the radio to one of the five broadcast frequencies to measure the minute synch pulse amplitude and SNR in second 0 and data pulse amplitude and SNR in second 1 to update the signal metric. In principle, the data pulse in second 58 is usable, but the AGC in most radios is not fast enough for a reliable measurement. Each of the five frequencies are probed in a five-minute rotation to build a database of current propagation conditions for all signals that can be heard at the time. At the end of each probe a mitigation procedure scans the database and retunes the radio to the best frequency and station found. For this to work well, the radio should be set for a fast AGC recovery time. This is most important while tracking a strong signal, which is normally the case, and then probing another frequency, which may have much weaker signals.</p>
+ <p>At the end of each probe, the frequency and station with the maximum metric is chosen, with ties going first to the highest frequency and then to WWV in order. A station is considered valid only if the metric is above a specified threshold' if below, the rotating probes continue until a valid station is found.</p>
+ <dl>
+ </dl>
+ <h4>Diagnostics</h4>
+ <p>The autotune process produces diagnostic information along with the timecode. This is very useful for evaluating the performance of the algorithms, as well as radio propagation conditions in general. The message is produced once each minute for each frequency in turn after minute synch has been acquired.</p>
+ <p><tt>wwv5 status agc epoch secamp/secsnr datamp/datsnr wwv wwvh</tt></p>
+ <p>where the fields after the <tt>wwv5</tt> identifier are: <tt>status</tt> contains status bits, <tt>agc</tt> audio gain, <tt>epoch </tt>second epoch, <tt>secamp/secsnr </tt>second pulse ampliture/SNR, and <tt>wwv</tt> and <tt>wwvh</tt> are two sets of fields, one each for WWV and WWVH. Each of the two fields has the format</p>
+ <p><tt>ident score metric minamp/minsnr</tt></p>
+ <p>where <tt>ident </tt>encodes the station (<tt>WV</tt> for WWV, <tt>WH</tt> for WWVH) and frequency (2, 5, 10, 15 or 20), <tt>score</tt> 32-bit shift register recording the hits (1) and misses (0) of the last 32 probes (hits and misses enter from the right), <tt>metric</tt> is described above, and <tt>minamp/minsnr</tt> minute pulse ampliture/SNR. An example is:</p>
+ <p><tt>wwv5 000d 111 5753 3967/20.1 3523/10.2 WV20 bdeff 100 8348/30.0 WH20 0000 1 22/-12.4</tt></p>
+ <p>There are several other messages that can occur; these are documented in the source listing.</p>
+ <h4>Debugging Aids</h4>
+ <p>The most convenient way to track the driver status is using the <tt>ntpq</tt> program and the <tt>clockvar</tt> command. This displays the last determined timecode and related status and error counters, even when the driver is not disciplining the system clock. If the debugging trace feature (<tt>-d</tt> on the <tt>ntpd</tt> command line)is enabled, the driver produces detailed status messages as it operates. If the <tt>fudge flag 4</tt> is set, these messages are written to the <tt>clockstats</tt> file. All messages produced by this driver have the prefix <tt>wwv</tt> for convenient filtering with the Unix <tt>grep</tt> command.</p>
+ <h4>Monitor Data</h4>
+
+ When enabled by the <tt>filegen</tt> facility, every received timecode is written to the <tt>clockstats</tt> file in the following format:
+ <p><tt>sq yyyy ddd hh:mm:ss ld du lset agc ident metric errs freq avg<br>
+ s</tt> synch indicator (<tt>?</tt>&nbsp;or space)
+ <tt>q </tt>quality character (see below)
+ <tt>yyyy </tt>Gregorian year
+ <tt>ddd </tt>day of year
+ <tt>hh </tt>hour of day
+ <tt>mm </tt>minute of hour
+ <tt>l </tt>leap second warning <tt>L</tt>
+ <tt>d </tt>DST state <tt>S, D, I, O</tt><br>
+ <tt>dut </tt>DUT sign and magnitude
+ <tt>lset </tt>minutes since last set
+ <tt>agc </tt>audio gain
+ <tt>ident </tt>station identifier and frequency
+ <tt>metric </tt>signal metric (0-100)
+ <tt>errs </tt>data bit errors in last minute
+ <tt>freq </tt>codec frequency offset (PPM)
+ <tt>avg </tt>frequency averaging interval (s)
+</p>
+ The fields beginning with <tt>year</tt> and extending through <tt>dut</tt> are decoded from the received data and are in fixed-length format. The <tt>agc</tt> and <tt>lset</tt> fields, as well as the following driver-dependent fields, are in variable-length format.
+ <dl>
+ <dt><tt>s</tt>
+ <dd>The synch indicator is initially <tt>?</tt> before the clock is set, but turns to space when all nine digits of the timecode are correctly set and the decoder is synchronized to the station within 125 <font face="Symbol">m</font>s.
+ <dt><tt>q</tt>
+ <dd>The quality character is a four-bit hexadecimal code showing which alarms have been raised. Each bit is associated with a specific alarm condition according to the following:
+ <dl>
+ <dt><tt>0x8</tt>
+ <dd>synch alarm. The decoder is not synchronized to the station within 125 <font face="Symbol">m</font>s.
+ <dt><tt>0x4</tt>
+ <dd>Digit error alarm. Less than nine decimal digits were found in the last minute.<dt><tt>0x2</tt>
+ <dd>Error alarm. More than 40 data bit errors were found in the last minute.<dt><tt>0x1</tt>
+ <dd>Compare alarm. A maximum likelihood digit failed to agree with the current associated clock digit in the last minute.</dl>It is important to note that one or more of the above alarms does not necessarily indicate a clock error, but only that the decoder has detected a condition that may result in an error. However, the local clock update is not suppressed if any alarm bits are set other than a synch alarm.<dt><tt>yyyy ddd hh:mm:ss</tt>
+ <dd>The timecode format itself is self explanatory. Since the driver latches the on-time epoch directly from the second synch pulse, the seconds fraction is always zero. Although the transmitted timecode includes only the year of century, the Gregorian year is augmented by 2000.<dt><tt>l</tt>
+ <dd>The leap second warning is normally space, but changes to <tt>L</tt> if a leap second is to occur at the end of the month of June or December.
+ <dt><tt>d</tt>
+ <dd>The DST state is <tt>S</tt> or <tt>D</tt> when standard time or daylight time is in effect, respectively. The state is <tt>I</tt> or <tt>O</tt> when daylight time is about to go into effect or out of effect, respectively.
+ <dt><tt>dut</tt>
+ <dd>The DUT sign and magnitude shows the current UT1 offset relative to the displayed UTC time, in deciseconds.
+ <dt><tt>lset</tt>
+ <dd>Before the clock is set, the interval since last set is the number of minutes since the driver was started; after the clock is set, this is number of minutes since the decoder was last synchronized to the station within 125 <font face="Symbol">m</font>s.
+ <dt><tt>agc</tt>
+ <dd>The audio gain shows the current codec gain setting in the range 0 to 255. Ordinarily, the receiver audio gain control should be set for a value midway in this range.
+ <dt><tt>ident</tt>
+ <dd>The station identifier shows the station, <tt>WV<i>f</i></tt> for WWV or <tt>WH<i>f</i></tt> for WWVH, and frequency <i><tt>f</tt></i> being tracked. If neither station is heard on any frequency, the reference identifier shows <tt>NONE</tt>.
+ <dt><tt>metric</tt>
+ <dd>The signal metric described above from 0 (no signal) to 100 (best).
+ <dt><tt>errs</tt>
+ <dd>The bit error counter is useful to determine the quality of the data signal received in the most recent minute. It is normal to drop a couple of data bits under good signal conditions and increasing numbers as conditions worsen. While the decoder performs moderately well even with half the bits are in error in any minute, usually by that point the metric drops below threshold and the decoder switches to a different frequency.<dt><tt>freq</tt>
+ <dd>The frequency offset is the current estimate of the codec frequency offset to within 0.1 PPM. This may wander a bit over the day due to local temperature fluctuations and propagation conditions.
+ <dt><tt>avgt</tt>
+ <dd>The averaging time is the interval between frequency updates in powers of two to a maximum of 1024 s. Attainment of the maximum indicates the driver is operating at the best possible resolution in time and frequency.
+ </dl>
+ <p>An example timecode is:</p>
+ <p><tt>0 2000 006 22:36:00 S +3 1 115 WV20 86 5 66.4 1024</tt></p>
+ <p>Here the clock has been set and no alarms are raised. The year, day and time are displayed along with no leap warning, standard time and DUT +0.3 s. The clock was set on the last minute, the AGC is safely in the middle ot the range 0-255, and the receiver is tracking WWV on 20 MHz. Good receiving conditions prevail, as indicated by the metric 86 and 5 bit errors during the last minute. The current frequency is 66.4 PPM and the averaging interval is 1024 s, indicating the maximum precision available.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the propagation delay for WWV (40:40:49.0N 105:02:27.0W), in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Specifies the propagation delay for WWVH (21:59:26.0N 159:46:00.0W), in seconds and fraction, with default 0.0.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Ordinarily, this field specifies the driver reference identifier; however, the driver sets the reference identifier automatically as described above.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Specifies the microphone port if set to zero or the line-in port if set to one. It does not seem useful to specify the compact disc player port.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Enables audio monitoring of the input signal. For this purpose, the speaker volume must be set before the driver is started.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Enable verbose <tt>clockstats</tt> recording if set.
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
- s sync indicator (?&nbsp;or space)
- q quality character (see below)
- yyyy Gregorian year
- ddd day of year
- hh hour of day
- mm minute of hour
- l leap second warning
- d DST state
- dut DUT sign and magnitude
- lset minutes since last set
- agc audio gain
- ident station identifier and frequency
- metric signal metric (0-100)
- errs data bit error counter
- freq frequency offset
- avgt frequency averaging interval
-</pre>
- The fields beginning with <tt>year</tt> and extending through <tt>dut</tt> are decoded from the received data and are in fixed-length format. The <tt>agc</tt> and <tt>lset</tt> fields, as well as the following driver-dependent fields, are in variable-length format.
- <dl>
- <dt><tt>s</tt>
- <dd>The sync indicator is initially <tt>?</tt> before the clock is set, but turns to space when all nine digits of the timecode are correctly set and the decoder is synchronized to the station within 125 <font face="Symbol">m</font>s. <dt><tt>q</tt>
- <dd>The quality character is a four-bit hexadecimal code showing which alarms have been raised. Each bit is associated with a specific alarm condition according to the following: <dl>
- <dt><tt>0x8</tt>
- <dd>Sync alarm. The decoder is not synchronized to the station within 125 <font face="Symbol">m</font>s. <dt><tt>0x4</tt>
- <dd>Error alarm. More than 30 data bit errors occurred in the last minute.
- <dt><tt>0x2</tt>
- <dd>Symbol alarm. The probability of correct decoding for a digit or miscellaneous bit has fallen below the threshold.
- <dt><tt>0x1</tt>
- <dd>Decoding alarm. A maximum likelihood digit fails to agree with the current associated clock digit.
- </dl>It is important to note that one or more of the above alarms does not necessarily indicate a clock error, but only that the decoder has detected a condition that may eventually result in an error. <dt><tt>yyyy ddd hh:mm:ss</tt>
- <dd>The timecode format itself is self explanatory. Since the driver latches the on-time epoch directly from the second sync pulse, the seconds fraction is always zero. Although the transmitted timecode includes only the year of century, the Gregorian year is augmented by 2000. <dt><tt>l</tt>
- <dd>The leap second warning is normally space, but changes to <tt>L</tt> if a leap second is to occur at the end of the month of June or December.
- <dt><tt>d</tt>
- <dd>The DST state is <tt>S</tt> or <tt>D</tt> when standard time or daylight time is in effect, respectively. The state is <tt>I</tt> or <tt>O</tt> when daylight time is about to go into effect or out of effect, respectively.
- <dt><tt>dut</tt>
- <dd>The DUT sign and magnitude shows the current UT1 offset relative to the displayed UTC time, in deciseconds.
- <dt><tt>lset</tt>
- <dd>Before the clock is set, the interval since last set is the number of minutes since the driver was started; after the clock is set, this is number of minutes since the decoder was last synchronized to the station within 125 <font face="Symbol">m</font>s. <dt><tt>agc</tt>
- <dd>The audio gain shows the current codec gain setting in the range 0 to 255. Ordinarily, the receiver audio gain control or IRIG level control should be set for a value midway in this range.
- <dt><tt>ident</tt>
- <dd>The station identifier shows the station, <tt>C</tt> for WWV or <tt>H</tt> for WWVH, and frequency being tracked. If neither station is heard on any frequency, the reference identifier shows <tt>NONE</tt>.
- <dt><tt>metric</tt>
- <dd>The signal metric described above from 0 (no signal) to 100 (best).
- <dt><tt>errs</tt>
- <dd>The bit error counter is useful to determine the quality of the data signal received in the most recent minute. It is normal to drop a couple of data bits under good signal conditions and increasing numbers as conditions worsen. While the decoder performs moderately well even with half the bits are in error in any minute, usually by that point the metric drops below threshold and the decoder switches to a different frequency. <dt><tt>freq</tt>
- <dd>The frequency offset is the current estimate of the codec frequency offset to within 0.1 PPM. This may wander a bit over the day due to local temperature fluctuations and propagation conditions.
- <dt><tt>avgt</tt>
- <dd>The averaging time is the interval between frequency updates in powers of two to a maximum of 1024 s. Attainment of the maximum indicates the driver is operating at the best possible resolution in time and frequency.
- </dl>
- <p>An example timecode is:</p>
- <p><tt>0 2000 006 22:36:00 S +3 1 115 WV20 86 5 66.4 1024</tt></p>
- <p>Here the clock has been set and no alarms are raised. The year, day and time are displayed along with no leap warning, standard time and DUT +0.3 s. The clock was set on the last minute, the AGC is safely in the middle ot the range 0-255, and the receiver is tracking WWV on 20 MHz. Good receiving conditions prevail, as indicated by the metric 86 and 5 bit errors during the last minute. The current frequency is 66.4 PPM and the averaging interval is 1024 s, indicating the maximum precision available.</p>
- <h4>Modes</h4>
- <p>The <tt>mode</tt> keyword of the <tt>server</tt> configuration command specifies the ICOM ID select code in decimal. A missing or zero argument disables the CI-V interface. Following are the ID select codes for the known radios. These codes are for 9600 baud rate; for 1200 baud rate add 128.</p>
- <table width="100%" cols="6">
- <tr>
- <td>Radio</td>
- <td>Hex</td>
- <td>Decimal</td>
- <td>Radio</td>
- <td>Hex</td>
- <td>Decimal</td>
- </tr>
- <tr>
- <td>IC725</td>
- <td>0x28</td>
- <td>40</td>
- <td>IC781</td>
- <td>0x26</td>
- <td>38</td>
- </tr>
- <tr>
- <td>IC726</td>
- <td>0x30</td>
- <td>48</td>
- <td>R7000</td>
- <td>0x08</td>
- <td>8</td>
- </tr>
- <tr>
- <td>IC735</td>
- <td>0x04</td>
- <td>4</td>
- <td>R71</td>
- <td>0x1A</td>
- <td>26</td>
- </tr>
- <tr>
- <td>IC751</td>
- <td>0x1c</td>
- <td>28</td>
- <td>R7100</td>
- <td>0x34</td>
- <td>52</td>
- </tr>
- <tr>
- <td>IC761</td>
- <td>0x1e</td>
- <td>30</td>
- <td>R72</td>
- <td>0x32</td>
- <td>50</td>
- </tr>
- <tr>
- <td>IC765</td>
- <td>0x2c</td>
- <td>44</td>
- <td>R8500</td>
- <td>0x4a</td>
- <td>74</td>
- </tr>
- <tr>
- <td>IC775</td>
- <td>0x46</td>
- <td>68</td>
- <td>R9000</td>
- <td>0x2a</td>
- <td>42</td>
- </tr>
- </table>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the propagation delay for WWV (40:40:49.0N 105:02:27.0W), in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Specifies the propagation delay for WWVH (21:59:26.0N 159:46:00.0W), in seconds and fraction, with default 0.0.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Ordinarily, this field specifies the driver reference identifier; however, the driver sets the reference identifier automatically as described above.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Specifies the microphone port if set to zero or the line-in port if set to one. It does not seem useful to specify the compact disc player port.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Enables audio monitoring of the input signal. For this purpose, the speaker volume must be set before the driver is started.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Enable verbose <tt>clockstats</tt> recording if set.
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
-
-</html>
+</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver37.html b/contrib/ntp/html/drivers/driver37.html
index 26acbc3..3bd5085 100644
--- a/contrib/ntp/html/drivers/driver37.html
+++ b/contrib/ntp/html/drivers/driver37.html
@@ -2,49 +2,50 @@
<html>
- <head>
- <title>Forum Graphic GPS Dating station</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Forum Graphic GPS Dating station</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Forum Graphic GPS Dating station</h3>
- <hr>
- <h4>Synopsis</h4>
- <p>Address: 127.127.37.<i>u</i><br>
- Reference ID: <tt>GPS</tt><br>
- Driver ID: <tt>GPS</tt><br>
- Parallel Port: <tt>/dev/fgclock<i>u</i></tt></p>
- <h4>Description</h4>
- <p>This driver supports the Forum Graphic GPS Dating station sold by <a href="http://www.emr.fr/gpsclock.html">EMR company</a>.</p>
- <p>Unfortunately sometime FG GPS start continues reporting of the same date. The only way to fix this problem is GPS power cycling and ntpd restart after GPS power-up.</p>
- <p>After Jan,10 2000 my FG GPS unit start send a wrong answer after 10:00am till 11:00am. It repeat hour value in result string twice. I wroite a small code to avoid such problem. Unfortunately I have no second FG GPS unit to evaluate this problem. Please let me know if your GPS has no problems after Y2K.</p>
- <p></p>
- <h4>Monitor Data</h4>
- <p>Each timecode is written to the <tt>clockstats</tt> file in the format <tt>YYYY YD HH MI SS</tt>.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>FG</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Not used by this driver.
- </dl>
- <hr>
- <address>Dmitry Smirnov (das@amt.ru)</address>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Forum Graphic GPS Dating station</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ <p>Address: 127.127.37.<i>u</i><br>
+ Reference ID: <tt>GPS</tt><br>
+ Driver ID: <tt>GPS</tt><br>
+ Parallel Port: <tt>/dev/fgclock<i>u</i></tt></p>
+ <h4>Description</h4>
+ <p>This driver supports the Forum Graphic GPS Dating station sold by <a href="http://www.emr.fr/gpsclock.html">EMR company</a>.</p>
+ <p>Unfortunately sometime FG GPS start continues reporting of the same date. The only way to fix this problem is GPS power cycling and ntpd restart after GPS power-up.</p>
+ <p>After Jan,10 2000 my FG GPS unit start send a wrong answer after 10:00am till 11:00am. It repeat hour value in result string twice. I wroite a small code to avoid such problem. Unfortunately I have no second FG GPS unit to evaluate this problem. Please let me know if your GPS has no problems after Y2K.</p>
+ <p></p>
+ <h4>Monitor Data</h4>
+ <p>Each timecode is written to the <tt>clockstats</tt> file in the format <tt>YYYY YD HH MI SS</tt>.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>FG</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Not used by this driver.
+ </dl>
+ <hr>
+ <address>Dmitry Smirnov (das@amt.ru)</address>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver38.html b/contrib/ntp/html/drivers/driver38.html
index e32bd71..283e38f 100644
--- a/contrib/ntp/html/drivers/driver38.html
+++ b/contrib/ntp/html/drivers/driver38.html
@@ -2,137 +2,130 @@
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <title>hopf clock drivers by ATLSoft</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <title>hopf clock drivers by ATLSoft</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
- <h1><font face="Arial"><i><blink><font size="5">hopf</font></blink></i><font size="+2"> </font><font size="3">Serial Line Receivers (6021 and&nbsp; kompatible)</font></font></h1>
- <hr>
- <h2><font size="+1">Synopsis</font></h2>
- <table width="100%" border="0" cellspacing cellpadding>
- <tr>
- <td>
- <table border="0" cellpadding="3" bgcolor="#C0C0C0">
- <tr>
- <td height="21">
- <div align="right">
- <tt>Address:&nbsp;&nbsp;</tt></div>
- </td>
- <td><b>127.127.38.<i>X</i></b></td>
- </tr>
- <tr>
- <td height="1">
- <div align="right">
- <tt>Reference ID:&nbsp;&nbsp;</tt></div>
- </td>
- <td height="1"><a name="REFID"></a><b>.hopf. </b>(default)<b>, GPS, DCF</b></td>
- </tr>
- <tr>
- <td height="21">
- <div align="right">
- <tt>Driver ID:&nbsp;&nbsp;</tt></div>
- </td>
- <td height="21"><b>HOPF_S</b></td>
- </tr>
- <tr>
- <td height="16">
- <div align="right">
- <tt>Serial Port:&nbsp;&nbsp;</tt></div>
- </td>
- <td height="16"><b>/dev/hopfclock<i>X</i></b></td>
- </tr>
- <tr>
- <td height="23">
- <div align="right">
- <tt><font size="+1">Serial I/O</font>:&nbsp;&nbsp;</tt></div>
- </td>
- <td height="23"><b>9600 baud, 8-bits, 1-stop, no parity</b></td>
- </tr>
- </table>
- </td>
- <td align="center"><img src="../pic/fg6021.gif" height="207" width="238" border="0"></td>
- </tr>
- </table>
- <hr>
- <h2><font size="+1">Description</font></h2>
- <p>The <b>refclock_hopf_serial</b> driver supports <a href="http://www.hopf.com">hopf electronic receivers</a> with serial Interface kompatibel 6021.<br>
- </p>
- <p>Additional software and information about the software drivers is available from: <a href="http://www.ATLSoft.de/ntp">http://www.ATLSoft.de/ntp</a>.<br>
- </p>
- <p>Latest NTP driver source, executables and documentation is maintained at: <a href="http://www.ATLSoft.de/ntp">http://www.ATLSoft.de/ntp</a></p>
- <hr>
- <h2><font size="+1">Operating System Compatibility</font></h2>
- <p align="left">The hopf clock driver has been tested on the following software and hardware platforms:<br>
- &nbsp;</p>
- <table bgcolor="#C0C0C0">
- <tr>
- <td valign="CENTER" nowrap width="23%">
- <p align="left"><b>Platform</b></p>
- </td>
- <td valign="CENTER" nowrap>
- <p align="left"><b>Operating System</b></p>
- </td>
- </tr>
- <tr>
- <td valign="CENTER" nowrap width="23%">
- <p align="left">i386 (PC)&nbsp;</p>
- </td>
- <td valign="CENTER" nowrap>
- <p align="left">Linux</p>
- </td>
- </tr>
- <tr>
- <td nowrap>
- <p align="left">i386 (PC)&nbsp;</p>
- </td>
- <td nowrap>
- <p align="left">Windows NT</p>
- </td>
- </tr>
- <tr>
- <td nowrap>
- <p align="left">i386 (PC)&nbsp;</p>
- </td>
- <center>
- <td nowrap>Windows 2000</td>
- </center>
- </tr>
- </table>
- <hr>
- <h2><font size="+1">O/S Serial Port Configuration</font></h2>
- The driver attempts to open the device <b><tt><a href="#REFID">/dev/hopfclock<i>X</i></a></tt></b> where <i><b>X</b></i> is the NTP refclock unit number as defined by the LSB of the refclock address.&nbsp; Valid refclock unit numbers are 0 - 3.
- <p>The user is expected to provide a symbolic link to an available serial port device.&nbsp; This is typically performed by a command such as:</p>
- <blockquote>
- <tt>ln -s /dev/ttyS0 /dev/hopfclock0</tt></blockquote>
- Windows NT does not support symbolic links to device files.&nbsp;<br>
- <b>COMx</b>: is used by the driver, based on the refclock unit number, where <b>unit 1</b> corresponds to <b>COM1</b>: and <b>unit 3</b> corresponds to <b>COM3</b>:<br>
- &nbsp;
- <hr>
- <h2><font size="+1">Fudge Factors</font></h2>
- <dl>
- <dt><b><a name="time1"></a><tt><font size="+1"><a href="#Configuration">time1 <i>time</i></a></font></tt></b>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. Should be set to 20 milliseconds to correct serial line and operating system delays incurred in capturing time stamps from the synchronous packets.
- <dt><tt><font size="+1"><a href="#REFID"><b>refid <i>string</i></b></a></font></tt>
- <dd>Specifies the driver reference identifier, <b>GPS </b><i>or</i> <b>DCF</b>.
- <dt><tt><font size="+1"><b>flag1 0 | 1</b></font></tt>
- <dd>When set to 1, driver sync's even if only crystal driven.
- </dl>
- <hr>
- <h2><a name="DataFormat"></a><font size="+1">Data Format</font></h2>
- <p>as specified in clock manual under pt. <u>[ <span style="font-size:10.0pt;font-family:
-Arial;mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;;
-mso-ansi-language:EN-GB;mso-fareast-language:DE;mso-bidi-language:AR-SA" lang="EN-GB"><b>Data String for NTP</b> ( <b><i>Network Time Protocol </i></b>) </span>]</u></p>
- <hr>
- <h3>Questions or Comments:</h3>
- <p><a href="mailto:altmeier@atlsoft.de">Bernd Altmeier</a><a href="http://www.ATLSoft.de"><br>
- Ing.-B&uuml;ro f&uuml;r Software www.ATLSoft.de</a></p>
- <p>(last updated 02/28/2001)<br>
- &nbsp;</p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+ <h1><font face="Arial"><i><blink><font size="5">hopf</font></blink></i><font size="+2"> </font><font size="3">Serial Line Receivers (6021 and&nbsp; kompatible)</font></font></h1>
+ <hr>
+ <h2><font size="+1">Synopsis</font></h2>
+ <table width="100%">
+ <tr>
+ <td>
+ <table bgcolor="#C0C0C0">
+ <tr>
+ <td height="21">
+ <div align="right">
+ <tt>Address:&nbsp;&nbsp;</tt></div>
+ </td>
+ <td><b>127.127.38.<i>X</i></b></td>
+ </tr>
+ <tr>
+ <td height="1">
+ <div align="right">
+ <tt>Reference ID:&nbsp;&nbsp;</tt></div>
+ </td>
+ <td height="1"><a name="REFID"></a><b>.hopf. </b>(default)<b>, GPS, DCF</b></td>
+ </tr>
+ <tr>
+ <td height="21">
+ <div align="right">
+ <tt>Driver ID:&nbsp;&nbsp;</tt></div>
+ </td>
+ <td height="21"><b>HOPF_S</b></td>
+ </tr>
+ <tr>
+ <td height="16">
+ <div align="right">
+ <tt>Serial Port:&nbsp;&nbsp;</tt></div>
+ </td>
+ <td height="16"><b>/dev/hopfclock<i>X</i></b></td>
+ </tr>
+ <tr>
+ <td height="23">
+ <div align="right">
+ <tt><font size="+1">Serial I/O</font>:&nbsp;&nbsp;</tt></div>
+ </td>
+ <td height="23"><b>9600 baud, 8-bits, 1-stop, no parity</b></td>
+ </tr>
+ </table>
+ </td>
+ <td align="center"><img src="../pic/fg6021.gif" alt="gif" height="207" width="238" border="0"></td>
+ </tr>
+ </table>
+ <hr>
+ <h2><font size="+1">Description</font></h2>
+ <p>The <b>refclock_hopf_serial</b> driver supports <a href="http://www.hopf.com">hopf electronic receivers</a> with serial Interface kompatibel 6021.<br>
+ </p>
+ <p>Additional software and information about the software drivers is available from: <a href="http://www.ATLSoft.de/ntp">http://www.ATLSoft.de/ntp</a>.<br>
+ </p>
+ <p>Latest NTP driver source, executables and documentation is maintained at: <a href="http://www.ATLSoft.de/ntp">http://www.ATLSoft.de/ntp</a></p>
+ <hr>
+ <h2><font size="+1">Operating System Compatibility</font></h2>
+ <p align="left">The hopf clock driver has been tested on the following software and hardware platforms:<br>&nbsp;</p>
+ <table bgcolor="#C0C0C0">
+ <tr>
+ <td valign="CENTER" nowrap width="23%">
+ <p align="left"><b>Platform</b></p>
+ </td>
+ <td valign="CENTER" nowrap>
+ <p align="left"><b>Operating System</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="CENTER" nowrap width="23%">
+ <p align="left">i386 (PC)&nbsp;</p>
+ </td>
+ <td valign="CENTER" nowrap>
+ <p align="left">Linux</p>
+ </td>
+ </tr>
+ <tr>
+ <td nowrap>
+ <p align="left">i386 (PC)&nbsp;</p>
+ </td>
+ <td nowrap>
+ <p align="left">Windows NT</p>
+ </td>
+ </tr>
+ <tr>
+ <td nowrap>
+ <p align="left">i386 (PC)&nbsp;</p>
+ </td>
+ <center>
+ <td nowrap>Windows 2000</td>
+ </center>
+ </tr>
+ </table>
+ <hr>
+ <h2><font size="+1">O/S Serial Port Configuration</font></h2>
+ The driver attempts to open the device <b><tt><a href="#REFID">/dev/hopfclock<i>X</i></a></tt></b> where <i><b>X</b></i> is the NTP refclock unit number as defined by the LSB of the refclock address.&nbsp; Valid refclock unit numbers are 0 - 3.
+ <p>The user is expected to provide a symbolic link to an available serial port device.&nbsp; This is typically performed by a command such as:</p>
+ <blockquote>
+ <tt>ln -s /dev/ttyS0 /dev/hopfclock0</tt></blockquote>Windows NT does not support symbolic links to device files.&nbsp;<br>
+ <b>COMx</b>: is used by the driver, based on the refclock unit number, where <b>unit 1</b> corresponds to <b>COM1</b>: and <b>unit 3</b> corresponds to <b>COM3</b>:<br>&nbsp;
+ <hr>
+ <h2><font size="+1">Fudge Factors</font></h2>
+ <dl>
+ <dt><b><a name="time1"></a><tt><font size="+1"><a href="#Configuration">time1 <i>time</i></a></font></tt></b>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0. Should be set to 20 milliseconds to correct serial line and operating system delays incurred in capturing time stamps from the synchronous packets.
+ <dt><tt><font size="+1"><a href="#REFID"><b>refid <i>string</i></b></a></font></tt>
+ <dd>Specifies the driver reference identifier, <b>GPS </b><i>or</i> <b>DCF</b>.
+ <dt><tt><font size="+1"><b>flag1 0 | 1</b></font></tt>
+ <dd>When set to 1, driver sync's even if only crystal driven.
+ </dl>
+ <hr>
+ <h2><a name="DataFormat"></a><font size="+1">Data Format</font></h2>
+ <p>as specified in clock manual under pt. <u>[ <span style="font-size:10.0pt;font-family: Arial;mso-fareast-font-family:&quot;Times New Roman&quot;;mso-bidi-font-family:&quot;Times New Roman&quot;; mso-ansi-language:EN-GB;mso-fareast-language:DE;mso-bidi-language:AR-SA" lang="EN-GB"><b>Data String for NTP</b> ( <b><i>Network Time Protocol </i></b>) </span>]</u></p>
+ <hr>
+ <h3>Questions or Comments:</h3>
+ <p><a href="mailto:altmeier@atlsoft.de">Bernd Altmeier</a><a href="http://www.ATLSoft.de"><br>Ing.-B&uuml;ro f&uuml;r Software www.ATLSoft.de</a></p>
+ <p>(last updated 02/28/2001)<br>&nbsp;</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver39.html b/contrib/ntp/html/drivers/driver39.html
index 10a3d14..482134e 100644
--- a/contrib/ntp/html/drivers/driver39.html
+++ b/contrib/ntp/html/drivers/driver39.html
@@ -2,115 +2,112 @@
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <title>hopf clock drivers by ATLSoft</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <title>hopf clock drivers by ATLSoft</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
- <h1><font face="Arial"><i><blink><font size="5">hopf</font></blink></i><font size="+2"> </font><font size="3">PCI-Bus Receiver (6039 GPS/DCF77)</font></font></h1>
- <hr>
- <div align="center">
- <center>
- <table width="100%" border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td width="50%">
- <h2><font size="+1">Synopsis</font></h2>
- <table border="0" cellpadding="3" bgcolor="#C0C0C0">
- <tr>
- <td height="21">
- <div align="right">
- <tt>Address:&nbsp;&nbsp;</tt></div>
- </td>
- <td height="21"><b>127.127.39.<i>X</i></b></td>
- </tr>
- <tr>
- <td height="21">
- <div align="right">
- <tt>Reference ID:&nbsp;&nbsp;</tt></div>
- </td>
- <td height="21"><a name="REFID"></a><b>.hopf. </b>(default)<b>, GPS, DCF</b></td>
- </tr>
- <tr>
- <td height="21">
- <div align="right">
- <tt>Driver ID:&nbsp;&nbsp;</tt></div>
- </td>
- <td height="21"><b>HOPF_P</b></td>
- </tr>
- </table>
- </td>
- <td align="center" valign="middle"><font face="Arial"><i><blink><font size="5"><img src="../pic/fg6039.jpg" height="140" width="141" border="0"></font></blink></i></font></td>
- </tr>
- </table>
- </center>
- </div>
- <hr>
- <h2><font size="+1">Description</font></h2>
- The <b>refclock_hopf_pci </b>driver supports the <a href="http://www.hopf.com">hopf</a> PCI-bus interface 6039 GPS/DCF77.<br>
- Additional software and information about the software drivers maybe available from: <a href="http://www.ATLSoft.de/ntp">http://www.ATLSoft.de/ntp</a>.<br>
- Latest NTP driver source, executables and documentation is maintained at: <a href="http://www.ATLSoft.de/ntp">http://www.ATLSoft.de/ntp</a>
- <hr>
- <h2><font size="+1">Operating System Compatibility</font></h2>
- <p align="left">The hopf clock driver has been tested on the following software and hardware platforms:<br>
- &nbsp;</p>
- <table bgcolor="#C0C0C0">
- <tr>
- <td valign="CENTER" nowrap width="23%">
- <p align="left"><b>Platform</b></p>
- </td>
- <td valign="CENTER" nowrap>
- <p align="left"><b>Operating System</b></p>
- </td>
- </tr>
- <tr>
- <td valign="CENTER" nowrap width="23%">
- <p align="left">i386 (PC)&nbsp;</p>
- </td>
- <td valign="CENTER" nowrap>
- <p align="left">Linux</p>
- </td>
- </tr>
- <tr>
- <td nowrap>
- <p align="left">i386 (PC)&nbsp;</p>
- </td>
- <td nowrap>
- <p align="left">Windows NT</p>
- </td>
- </tr>
- <tr>
- <td nowrap>
- <p align="left">i386 (PC)&nbsp;</p>
- </td>
- <center>
- <td nowrap>Windows 2000</td>
- </center>
- </tr>
- </table>
- <hr>
- <h2><font size="+1">O/S System Configuration</font></h2>
- <p><b>UNIX</b></p>
- The driver attempts to open the device <b><tt><a href="#REFID">/dev/hopf6039</a></tt></b> . The device entry will be made by the installation process of the kernel module for the PCI-bus board. The driver sources belongs to the delivery equipment of the PCI-board.
- <p><b>Windows NT/2000</b></p>
- <p>The driver attempts to open the device by calling the function &quot;OpenHopfDevice()&quot;. This function will be installed by the Device Driver for the PCI-bus board. The driver belongs to the delivery equipment of the PCI-board.</p>
- <hr>
- <h2><font size="+1">Fudge Factors</font></h2>
- <dl>
- <dt><tt><font size="+1"><a href="#REFID"><b>refid <i>string</i></b></a></font></tt>
- <dd>Specifies the driver reference identifier, <b>GPS </b><i>or</i> <b>DCF</b>.
- <dt><tt><font size="+1"><b>flag1 0 | 1</b></font></tt>
- <dd>When set to 1, driver sync's even if only crystal driven.
- </dl>
- <hr>
- <h3>Questions or Comments:</h3>
- <p><a href="mailto:altmeier@atlsoft.de">Bernd Altmeier</a><a href="http://www.ATLSoft.de"><br>
- Ing.-B&uuml;ro f&uuml;r Software www.ATLSoft.de</a></p>
- <p>(last updated 03/02/2001)<br>
- &nbsp;</p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+ <h1><font face="Arial"><i><blink><font size="5">hopf</font></blink></i><font size="+2"> </font><font size="3">PCI-Bus Receiver (6039 GPS/DCF77)</font></font></h1>
+ <hr>
+ <div align="center">
+ <center>
+ <table width="100%">
+ <tr>
+ <td width="50%">
+ <h2><font size="+1">Synopsis</font></h2>
+ <table bgcolor="#C0C0C0">
+ <tr>
+ <td height="21">
+ <div align="right">
+ <tt>Address:&nbsp;&nbsp;</tt></div>
+ </td>
+ <td height="21"><b>127.127.39.<i>X</i></b></td>
+ </tr>
+ <tr>
+ <td height="21">
+ <div align="right">
+ <tt>Reference ID:&nbsp;&nbsp;</tt></div>
+ </td>
+ <td height="21"><a name="REFID"></a><b>.hopf. </b>(default)<b>, GPS, DCF</b></td>
+ </tr>
+ <tr>
+ <td height="21">
+ <div align="right">
+ <tt>Driver ID:&nbsp;&nbsp;</tt></div>
+ </td>
+ <td height="21"><b>HOPF_P</b></td>
+ </tr>
+ </table>
+ </td>
+ <td align="center" valign="middle"><font face="Arial"><i><blink><font size="5"><img src="../pic/fg6039.jpg" alt="gif" height="140" width="141" border="0"></font></blink></i></font></td>
+ </tr>
+ </table>
+ </center>
+ </div>
+ <hr>
+ <h2><font size="+1">Description</font></h2>
+ The <b>refclock_hopf_pci </b>driver supports the <a href="http://www.hopf.com">hopf</a> PCI-bus interface 6039 GPS/DCF77.<br>
+ Additional software and information about the software drivers maybe available from: <a href="http://www.ATLSoft.de/ntp">http://www.ATLSoft.de/ntp</a>.<br>
+ Latest NTP driver source, executables and documentation is maintained at: <a href="http://www.ATLSoft.de/ntp">http://www.ATLSoft.de/ntp</a>
+ <hr>
+ <h2><font size="+1">Operating System Compatibility</font></h2>
+ <p align="left">The hopf clock driver has been tested on the following software and hardware platforms:<br>&nbsp;</p>
+ <table bgcolor="#C0C0C0">
+ <tr>
+ <td valign="CENTER" nowrap width="23%">
+ <p align="left"><b>Platform</b></p>
+ </td>
+ <td valign="CENTER" nowrap>
+ <p align="left"><b>Operating System</b></p>
+ </td>
+ </tr>
+ <tr>
+ <td valign="CENTER" nowrap width="23%">
+ <p align="left">i386 (PC)&nbsp;</p>
+ </td>
+ <td valign="CENTER" nowrap>
+ <p align="left">Linux</p>
+ </td>
+ </tr>
+ <tr>
+ <td nowrap>
+ <p align="left">i386 (PC)&nbsp;</p>
+ </td>
+ <td nowrap>
+ <p align="left">Windows NT</p>
+ </td>
+ </tr>
+ <tr>
+ <td nowrap>
+ <p align="left">i386 (PC)&nbsp;</p>
+ </td>
+ <center>
+ <td nowrap>Windows 2000</td>
+ </center>
+ </tr>
+ </table>
+ <hr>
+ <h2><font size="+1">O/S System Configuration</font></h2>
+ <p><b>UNIX</b></p>
+ The driver attempts to open the device <b><tt><a href="#REFID">/dev/hopf6039</a></tt></b> . The device entry will be made by the installation process of the kernel module for the PCI-bus board. The driver sources belongs to the delivery equipment of the PCI-board.
+ <p><b>Windows NT/2000</b></p>
+ <p>The driver attempts to open the device by calling the function &quot;OpenHopfDevice()&quot;. This function will be installed by the Device Driver for the PCI-bus board. The driver belongs to the delivery equipment of the PCI-board.</p>
+ <hr>
+ <h2><font size="+1">Fudge Factors</font></h2>
+ <dl>
+ <dt><tt><font size="+1"><a href="#REFID"><b>refid <i>string</i></b></a></font></tt>
+ <dd>Specifies the driver reference identifier, <b>GPS </b><i>or</i> <b>DCF</b>.
+ <dt><tt><font size="+1"><b>flag1 0 | 1</b></font></tt>
+ <dd>When set to 1, driver sync's even if only crystal driven.
+ </dl>
+ <hr>
+ <h3>Questions or Comments:</h3>
+ <p><a href="mailto:altmeier@atlsoft.de">Bernd Altmeier</a><a href="http://www.ATLSoft.de"><br>Ing.-B&uuml;ro f&uuml;r Software www.ATLSoft.de</a></p>
+ <p>(last updated 03/02/2001)<br>&nbsp;</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver4.html b/contrib/ntp/html/drivers/driver4.html
index 2f78eb5..bda4a10 100644
--- a/contrib/ntp/html/drivers/driver4.html
+++ b/contrib/ntp/html/drivers/driver4.html
@@ -2,64 +2,65 @@
<html>
- <head>
- <title>Spectracom 8170 and Netclock/2 WWVB Receivers</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Spectracom 8170 and Netclock/2 WWVB Receivers</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Spectracom 8170 and Netclock/2 WWVB Receivers</h3>
- <hr>
- <h4>Synopsis</h4>
- Address: 127.127.4.<i>u</i><br>
- Reference ID: <tt>WWVB</tt><br>
- Driver ID: <tt>WWVB_SPEC</tt><br>
- Serial Port: <tt>/dev/wwvb<i>u</i></tt>; 9600 baud, 8-bits, no parity<br>
- Features: <tt>tty_clk</tt>
- <h4>Description</h4>
- <p>This driver supports all known Spectracom radio and satellite clocks, including the Model 8170 and Netclock/2 WWVB Synchronized Clocks and the Netclock/GPS GPS Master Clock. The claimed accuracy of the WWVB clocks is 100 usec relative to the broadcast signal. These clocks have proven a reliable source of time, except in some parts of the country with high levels of conducted RF interference. WIth the GPS clock the claimed accuracy is 130 ns. However, in most cases the actual accuracy is limited by the precision of the timecode and the latencies of the serial interface and operating system.</p>
- <p>The DIPswitches on these clocks should be set to 24-hour display, AUTO DST off, data format 0 or 2 (see below) and baud rate 9600. If this clock is used as the source for the IRIG Audio Decoder (<tt>refclock_irig.c</tt> in this distribution), set the DIPswitches for AM IRIG output and IRIG format 1 (IRIG B with signature control).</p>
- <p>There are two timecode formats used by these clocks. Format 0, which is available with all clocks, and format 2, which is available with all clocks except the original (unmodified) Model 8170.</p>
- <p>Format 0 (22 ASCII printing characters):<br>
- &lt;cr&gt;&lt;lf&gt;i ddd hh:mm:ss TZ=zz&lt;cr&gt;&lt;lf&gt;</p>
- <p>on-time = first &lt;cr&gt;<br>
- i = synchronization flag (' ' = in synch, '?' = out synch)<br>
- hh:mm:ss = hours, minutes, seconds</p>
- <p>The alarm condition is indicated by other than ' ' at <tt>i</tt>, which occurs during initial synchronization and when received signal is lost for about ten hours.</p>
- <p>Format 2 (24 ASCII printing characters):<br>
- lt;cr&gt;lf&gt;iqyy ddd hh:mm:ss.fff ld</p>
- <p>on-time = &lt;cr&gt;<br>
- i = synchronization flag (' ' = in synch, '?' = out synch)<br>
- q = quality indicator (' ' = locked, 'A'...'D' = unlocked)<br>
- yy = year (as broadcast)<br>
- ddd = day of year<br>
- hh:mm:ss.fff = hours, minutes, seconds, milliseconds</p>
- <p>The alarm condition is indicated by other than ' ' at <tt>i</tt>, which occurs during initial synchronization and when received signal is lost for about ten hours. The unlock condition is indicated by other than ' ' at <tt>q</tt>.</p>
- <p>The <tt>q</tt> is normally ' ' when the time error is less than 1 ms and a character in the set <tt>A...D</tt> when the time error is less than 10, 100, 500 and greater than 500 ms respectively. The <tt>l</tt> is normally ' ', but is set to <tt>L</tt> early in the month of an upcoming UTC leap second and reset to ' ' on the first day of the following month. The <tt>d</tt> is set to <tt>S</tt> for standard time <tt>S</tt>, <tt>I</tt> on the day preceding a switch to daylight time, <tt>D</tt> for daylight time and <tt>O</tt> on the day preceding a switch to standard time. The start bit of the first &lt;cr&gt; is synchronized to the indicated time as returned.</p>
- <p>This driver does not need to be told which format is in use - it figures out which one from the length of the message. A three-stage median filter is used to reduce jitter and provide a dispersion measure. The driver makes no attempt to correct for the intrinsic jitter of the radio itself, which is a known problem with the older radios.</p>
- <h4>Monitor Data</h4>
- <p>The driver writes each timecode as received to the <tt>clockstats</tt> file. When enabled by the <tt>flag4</tt> fudge flag, a table of quality data maintained internally by the Netclock/2 is retrieved and written to the <tt>clockstats</tt> file when the first timecode message of a new dayis received.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>WWVB</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Enable verbose <tt>clockstats</tt> recording if set.
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Spectracom 8170 and Netclock/2 WWVB Receivers</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ Address: 127.127.4.<i>u</i><br>
+ Reference ID: <tt>WWVB</tt><br>
+ Driver ID: <tt>WWVB_SPEC</tt><br>
+ Serial Port: <tt>/dev/wwvb<i>u</i></tt>; 9600 baud, 8-bits, no parity<br>
+ Features: <tt>tty_clk</tt>
+ <h4>Description</h4>
+ <p>This driver supports all known Spectracom radio and satellite clocks, including the Model 8170 and Netclock/2 WWVB Synchronized Clocks and the Netclock/GPS GPS Master Clock. The claimed accuracy of the WWVB clocks is 100 usec relative to the broadcast signal. These clocks have proven a reliable source of time, except in some parts of the country with high levels of conducted RF interference. WIth the GPS clock the claimed accuracy is 130 ns. However, in most cases the actual accuracy is limited by the precision of the timecode and the latencies of the serial interface and operating system.</p>
+ <p>The DIPswitches on these clocks should be set to 24-hour display, AUTO DST off, data format 0 or 2 (see below) and baud rate 9600. If this clock is used as the source for the IRIG Audio Decoder (<tt>refclock_irig.c</tt> in this distribution), set the DIPswitches for AM IRIG output and IRIG format 1 (IRIG B with signature control).</p>
+ <p>There are two timecode formats used by these clocks. Format 0, which is available with all clocks, and format 2, which is available with all clocks except the original (unmodified) Model 8170.</p>
+ <p>Format 0 (22 ASCII printing characters):<br>
+ &lt;cr&gt;&lt;lf&gt;i ddd hh:mm:ss TZ=zz&lt;cr&gt;&lt;lf&gt;</p>
+ <p>on-time = first &lt;cr&gt;<br>
+ i = synchronization flag (' ' = in synch, '?' = out synch)<br>
+ hh:mm:ss = hours, minutes, seconds</p>
+ <p>The alarm condition is indicated by other than ' ' at <tt>i</tt>, which occurs during initial synchronization and when received signal is lost for about ten hours.</p>
+ <p>Format 2 (24 ASCII printing characters):<br>
+ lt;cr&gt;lf&gt;iqyy ddd hh:mm:ss.fff ld</p>
+ <p>on-time = &lt;cr&gt;<br>
+ i = synchronization flag (' ' = in synch, '?' = out synch)<br>
+ q = quality indicator (' ' = locked, 'A'...'D' = unlocked)<br>
+ yy = year (as broadcast)<br>
+ ddd = day of year<br>
+ hh:mm:ss.fff = hours, minutes, seconds, milliseconds</p>
+ <p>The alarm condition is indicated by other than ' ' at <tt>i</tt>, which occurs during initial synchronization and when received signal is lost for about ten hours. The unlock condition is indicated by other than ' ' at <tt>q</tt>.</p>
+ <p>The <tt>q</tt> is normally ' ' when the time error is less than 1 ms and a character in the set <tt>A...D</tt> when the time error is less than 10, 100, 500 and greater than 500 ms respectively. The <tt>l</tt> is normally ' ', but is set to <tt>L</tt> early in the month of an upcoming UTC leap second and reset to ' ' on the first day of the following month. The <tt>d</tt> is set to <tt>S</tt> for standard time <tt>S</tt>, <tt>I</tt> on the day preceding a switch to daylight time, <tt>D</tt> for daylight time and <tt>O</tt> on the day preceding a switch to standard time. The start bit of the first &lt;cr&gt; is synchronized to the indicated time as returned.</p>
+ <p>This driver does not need to be told which format is in use - it figures out which one from the length of the message. A three-stage median filter is used to reduce jitter and provide a dispersion measure. The driver makes no attempt to correct for the intrinsic jitter of the radio itself, which is a known problem with the older radios.</p>
+ <h4>Monitor Data</h4>
+ <p>The driver writes each timecode as received to the <tt>clockstats</tt> file. When enabled by the <tt>flag4</tt> fudge flag, a table of quality data maintained internally by the Netclock/2 is retrieved and written to the <tt>clockstats</tt> file when the first timecode message of a new dayis received.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>WWVB</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Enable verbose <tt>clockstats</tt> recording if set.
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver40.html b/contrib/ntp/html/drivers/driver40.html
index 0c68081..54e1747 100644
--- a/contrib/ntp/html/drivers/driver40.html
+++ b/contrib/ntp/html/drivers/driver40.html
@@ -1,99 +1,134 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
+<html lang="en">
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>JJY Receivers</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>JJY Receivers</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>JJY Receivers</h3>
- <hr>
- <h4>Synopsis</h4>
- Address: 127.127.40.<i>u</i><br>
- Reference ID: <tt>JJY</tt><br>
- Driver ID: <tt>JJY</tt><br>
- Serial Port: <tt>/dev/jjy<i>u</i></tt>; 9600 baud, 8-bits, no parity, 1 stop bit
- <h4>Description</h4>
- <p>This driver supports the following JJY receivers sold in Japan.</p>
- <ul>
- <li>Tristate Ltd. JJY01 <a href="http://www.tristate.ne.jp/rf-clock.html">http://www.tristate.ne.jp/rf-clock.htm</a> (Japanese only)<br>
- <dl>
- <dt>Time code format
- <dd><br>
- <table>
- <tr>
- <td>Command</td>
- <td>&nbsp;</td>
- <td>Reply</td>
- </tr>
- <tr>
- <td><tt>date&lt;CR&gt;&lt;LF&gt;</tt></td>
- <td>&nbsp;</td>
- <td><tt>YYYY/MM/DD WWW&lt;CR&gt;&lt;LF&gt;</tt></td>
- </tr>
- <tr>
- <td><tt>stim&lt;CR&gt;&lt;LF&gt;</tt></td>
- <td>&nbsp;</td>
- <td><tt>HH:MM:SS&lt;CR&gt;&lt;LF&gt;</tt></td>
- </tr>
- </table>
- <br>
- <dt>NTP configuration ( ntp.conf )
- <dd>
- <p>server 127.127.40.X mode 1</p>
- </dl>
- <li>C-DEX Co.,Ltd. JST2000 <a href="http://www.c-dex.co.jp/">http://www.c-dex.co.jp/</a> (Japanese only)<br>
- <dl>
- <dt>Time code format
- <dd><br>
- <table>
- <tr>
- <td>Command</td>
- <td>&nbsp;</td>
- <td>Reply</td>
- </tr>
- <tr>
- <td><tt>&lt;ENQ&gt;1J&lt;ETX&gt;</tt></td>
- <td>&nbsp;</td>
- <td><tt>&lt;STX&gt;JYYMMDD HHMMSSS&lt;ETX&gt;</tt></td>
- </tr>
- </table>
- <br>
- <dt>NTP configuration ( ntp.conf )
- <dd>
- <p>server 127.127.40.X mode 2</p>
- </dl>
- </ul>
- <p>JJY is the radio station which transmites the JST (Japan Standard Time) in long wave radio. The station JJY is operated by the Communication Research Laboratory. An operating announcement and some information are avaiable from <a href="http://www.crl.go.jp/">http://www.crl.go.jp/</a> (English and Japanese) and <a href="http://jjy.crl.go.jp/">http://jjy.crl.go.jp/</a> (Written in Japanese only)</p>
- <p>The user is expected to provide a symbolic link to an available serial port device. This is typically performed by a command such as:</p>
- <p><tt>ln -s /dev/ttyS0 /dev/jjy0</tt></p>
- <p>Windows NT does not support symbolic links to device files. COM<i>X</i>: is the unit used by the driver, based on the refclock unit number, where unit 1 corresponds to COM1: and unit 3 corresponds to COM3:</p>
- <h4>Monitor Data</h4>
- <p>The driver writes each timecode as received to the <tt>clockstats</tt> file.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>WWVB</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Enable verbose <tt>clockstats</tt> recording if set.
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>JJY Receivers</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ Address: 127.127.40.<i>u</i><br>
+ Reference ID: <tt>JJY</tt><br>
+ Driver ID: <tt>JJY</tt><br>
+ Serial Port: <tt>/dev/jjy<i>u</i></tt>; 9600 baud, 8-bits, no parity, 1 stop bit
+ <h4>Description</h4>
+ <p>This driver supports the following JJY receivers sold in Japan.</p>
+ <ul>
+ <li>Tristate Ltd. JJY01 <a href="http://www.tristate.ne.jp/">http://www.tristate.ne.jp/</a> (Japanese only)<br>
+ <dl>
+ <dt>Time code format
+ <dd><br>
+ <table>
+ <tr>
+ <td>Command</td>
+ <td>&nbsp;</td>
+ <td>Reply</td>
+ </tr>
+ <tr>
+ <td><tt>date&lt;CR&gt;&lt;LF&gt;</tt></td>
+ <td>&nbsp;</td>
+ <td><tt>YYYY/MM/DD WWW&lt;CR&gt;&lt;LF&gt;</tt></td>
+ </tr>
+ <tr>
+ <td><tt>stim&lt;CR&gt;&lt;LF&gt;</tt></td>
+ <td>&nbsp;</td>
+ <td><tt>HH:MM:SS&lt;CR&gt;&lt;LF&gt;</tt></td>
+ </tr>
+ </table>
+ <br>
+ <dt>NTP configuration ( ntp.conf )
+ <dd>
+ <p>server &nbsp; 127.127.40.X &nbsp; mode 1</p>
+ <br>
+ </dl>
+ <li>C-DEX Co.,Ltd. JST2000 <a href="http://www.c-dex.co.jp/">http://www.c-dex.co.jp/</a> (Japanese only)<br>
+ <dl>
+ <dt>Time code format
+ <dd><br>
+ <table>
+ <tr>
+ <td>Command</td>
+ <td>&nbsp;</td>
+ <td>Reply</td>
+ </tr>
+ <tr>
+ <td><tt>&lt;ENQ&gt;1J&lt;ETX&gt;</tt></td>
+ <td>&nbsp;</td>
+ <td><tt>&lt;STX&gt;JYYMMDD HHMMSSS&lt;ETX&gt;</tt></td>
+ </tr>
+ </table>
+ <br>
+ <dt>NTP configuration ( ntp.conf )
+ <dd>
+ <p>server &nbsp; 127.127.40.X &nbsp; mode 2</p>
+ <br>
+ </dl>
+ <li>
+ <p>Echo Keisokuki Co.,Ltd. LT-2000 <a href="http://www.clock.co.jp/">http://www.clock.co.jp/</a> (Japanese only)</p>
+ <dl>
+ <dt>Time code format
+ <dd><br>
+ <table summary="CommandAndReply">
+ <tr>
+ <td>Command</td>
+ <td>&nbsp;</td>
+ <td>Reply</td>
+ </tr>
+ <tr>
+ <td><code>C</code></td>
+ <td></td>
+ <td>( Mode 2 : Continuous )</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td><code>YYMMDDWHHMMSS&lt;ST1&gt;&lt;ST2&gt;&lt;ST3&gt;&lt;ST4&gt;&lt;CR&gt;</code></td>
+ </tr>
+ <tr>
+ <td><code>#</code></td>
+ <td></td>
+ <td>( Mode 1 : Request&Send )</td>
+ </tr>
+ </table>
+ <br>
+ <dt>NTP configuration ( ntp.conf )
+ <dd>
+ <p>server &nbsp; 127.127.40.X &nbsp; mode 3</p>
+ </dl>
+ </ul>
+ <p>JJY is the radio station which transmites the JST (Japan Standard Time) in long wave radio. The station JJY is operated by the National Institute of Information and Communications Technology. An operating announcement and some information are avaiable from <a href="http://www.nict.go.jp/">http://www.nict.go.jp/</a> (English and Japanese) and <a href="http://jjy.nict.go.jp/">http://jjy.nict.go.jp/</a> (English and Japanese)</p>
+ <p>The user is expected to provide a symbolic link to an available serial port device. This is typically performed by a command such as:</p>
+ <p><tt>ln -s /dev/ttyS0 /dev/jjy0</tt></p>
+ <p>Windows NT does not support symbolic links to device files. COM<i>X</i>: is the unit used by the driver, based on the refclock unit number, where unit 1 corresponds to COM1: and unit 3 corresponds to COM3:</p>
+ <h4>Monitor Data</h4>
+ <p>The driver writes each timecode as received to the <tt>clockstats</tt> file.</p>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>JJY</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Not used by this driver.
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver42.html b/contrib/ntp/html/drivers/driver42.html
index c509db0..7082050 100644
--- a/contrib/ntp/html/drivers/driver42.html
+++ b/contrib/ntp/html/drivers/driver42.html
@@ -2,28 +2,29 @@
<html>
- <head>
- <title>Zyfer GPStarplus Receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Zyfer GPStarplus Receiver</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Zyfer GPStarplus Receiver</h3>
- <hr>
- <h4>Synopsis</h4>
- Address: 127.127.42.<i>u</i><br>
- Reference ID: <tt>GPS</tt><br>
- Driver ID: <tt>Zyfer GPStarplus</tt><br>
- Serial Port: <tt>/dev/zyfer<i>u</i></tt>; 9600 baud, 8-bits, no parity<br>
- Features: <tt>(none)</tt>
- <h4>Description</h4>
- <p>This driver supports the <a href="http://www.zyfer.com/">Zyfer GPStarplus</a> receiver.</p>
- <p>The receiver has a DB15 port on the back which has input TxD and RxD lines for configuration and control, and a separate TxD line for the once-per-second timestamp.</p>
- <p>Additionally, there are BNC connectors on the back for things like PPS and IRIG output.</p>
- <h4>Additional Information</h4>
- <p><a href="../refclock.html">Reference Clock Drivers</a></p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Zyfer GPStarplus Receiver</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ Address: 127.127.42.<i>u</i><br>
+ Reference ID: <tt>GPS</tt><br>
+ Driver ID: <tt>Zyfer GPStarplus</tt><br>
+ Serial Port: <tt>/dev/zyfer<i>u</i></tt>; 9600 baud, 8-bits, no parity<br>
+ Features: <tt>(none)</tt>
+ <h4>Description</h4>
+ <p>This driver supports the <a href="http://www.zyfer.com/">Zyfer GPStarplus</a> receiver.</p>
+ <p>The receiver has a DB15 port on the back which has input TxD and RxD lines for configuration and control, and a separate TxD line for the once-per-second timestamp.</p>
+ <p>Additionally, there are BNC connectors on the back for things like PPS and IRIG output.</p>
+ <h4>Additional Information</h4>
+ <p><a href="../refclock.html">Reference Clock Drivers</a></p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver43.html b/contrib/ntp/html/drivers/driver43.html
index 914693a..0e1553f 100644
--- a/contrib/ntp/html/drivers/driver43.html
+++ b/contrib/ntp/html/drivers/driver43.html
@@ -2,34 +2,35 @@
<html>
- <head>
- <title>RIPE NCC interface for Trimble Palisade</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>RIPE NCC interface for Trimble Palisade</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>RIPE NCC interface for Trimble Palisade</h3>
- <hr>
- <img src="../pic/driver43_2.jpg" alt="Trimble Acutime 2000" align="right">
- <h4>Synopsis</h4>
- Address: 127.127.43.<i>u</i><br>
- Reference ID: <tt>RIPENCC</tt><br>
- Driver ID: <tt>RIPENCC</tt>
- <h4>Description</h4>
- <p>This is a special driver developed to be used in conjuction with the RIPE NCC clock card in the RIPE NCC Test Traffic Measurements project.</p>
- <h4>Why this driver?</h4>
- <p>The reason why we created a seperated driver for an antenna for which already a (vendor supplied) driver exist is a design decision. To be more specific, the standard Trimble interface uses a 12 pin connector. The cable sold by Trimble to connect to this wire is a very thick cable. Certainly not something you wish to run for several 100 meters through your building. And if you wanted to run it for 100 meters, you always would have to really run the cable, and didn't have the option to use existing wiring.<br>
- </p>
- <p>This is where we wanted more flexibility. We wanted to be able to use existing wiring in buildings. That leaded us to CAT-5(UTP) which only gives us 8 wires. Therefor we decided to redesing the use of the Trimble antenna. The Trimble supports two modes: EVENT driver and PPS mode. The default is to use the EVENT mode which needs all 12 wires. We only use the PPS timestamps for which we have enough with 8 wires. For our purposes this is more than fine.</p>
- More information about the project can be found on the <a href="http://www.ripe.net/test-traffic" target="_new">Test Traffic Measurements</a> website. <img src="../pic/driver43_1.gif" alt="RIPE NCC clock card" align="right">
- <h4>RIPE NCC clock card</h4>
- <p>The card is very a simple PCI card. The only feature on the bus it uses is the power supply. It uses this power supply to power the Trimble GPS antenna.</p>
- <p>The card basicly just is a RS422 to RS232 converter. It gets the Trimble's RS422 signal on a RJ45 connector and transforms that to RS232 on a DIN9 connector. This connector should be loopbacked on the back of the machine to the serial port. As said, the card doesn't do any PCI data transfers.</p>
- <p>The schematics of the interface card is available here: <a href="http://www.ripe.net/ripencc/mem-services/ttm/Documents/gps_interface_schematic.pdf">gps_interface_schematic.pdf</a>. You are free to create this card yourself as long as you give some credit or reference to us. Note that we don't sell these cards on a commercial basis, but for interested parties we do have some spares to share.</p>
- <p></p>
- <h4>Monitor Data</h4>
- <p>In the <tt>filegen clockstats</tt> file the following (example) data is collected:</p>
- <pre>
+ <body>
+ <h3>RIPE NCC interface for Trimble Palisade</h3>
+ <hr>
+ <img src="../pic/driver43_2.jpg" alt="Trimble Acutime 2000" align="right">
+ <h4>Synopsis</h4>
+ Address: 127.127.43.<i>u</i><br>
+ Reference ID: <tt>RIPENCC</tt><br>
+ Driver ID: <tt>RIPENCC</tt>
+ <h4>Description</h4>
+ <p>This is a special driver developed to be used in conjuction with the RIPE NCC clock card in the RIPE NCC Test Traffic Measurements project.</p>
+ <h4>Why this driver?</h4>
+ <p>The reason why we created a seperated driver for an antenna for which already a (vendor supplied) driver exist is a design decision. To be more specific, the standard Trimble interface uses a 12 pin connector. The cable sold by Trimble to connect to this wire is a very thick cable. Certainly not something you wish to run for several 100 meters through your building. And if you wanted to run it for 100 meters, you always would have to really run the cable, and didn't have the option to use existing wiring.<br>
+ </p>
+ <p>This is where we wanted more flexibility. We wanted to be able to use existing wiring in buildings. That leaded us to CAT-5(UTP) which only gives us 8 wires. Therefor we decided to redesing the use of the Trimble antenna. The Trimble supports two modes: EVENT driver and PPS mode. The default is to use the EVENT mode which needs all 12 wires. We only use the PPS timestamps for which we have enough with 8 wires. For our purposes this is more than fine.</p>
+ More information about the project can be found on the <a href="http://www.ripe.net/test-traffic" target="_new">Test Traffic Measurements</a> website. <img src="../pic/driver43_1.gif" alt="RIPE NCC clock card" align="right">
+ <h4>RIPE NCC clock card</h4>
+ <p>The card is very a simple PCI card. The only feature on the bus it uses is the power supply. It uses this power supply to power the Trimble GPS antenna.</p>
+ <p>The card basicly just is a RS422 to RS232 converter. It gets the Trimble's RS422 signal on a RJ45 connector and transforms that to RS232 on a DIN9 connector. This connector should be loopbacked on the back of the machine to the serial port. As said, the card doesn't do any PCI data transfers.</p>
+ <p>The schematics of the interface card is available here: <a href="http://www.ripe.net/projects/ttm/Host_testbox/gps_if.pdf">gps_interface_schematic.pdf</a>. You are free to create this card yourself as long as you give some credit or reference to us. Note that we don't sell these cards on a commercial basis, but for interested parties we do have some spares to share.</p>
+ <p></p>
+ <h4>Monitor Data</h4>
+ <p>In the <tt>filegen clockstats</tt> file the following (example) data is collected:</p>
+ <pre>
52445 41931.275 127.127.40.0 U1 20.6.2002 11:38:51 13 11
52445 41931.395 127.127.40.0 C1 20062002 113851 6 364785 110.2 450 6.7 13 5222.374737 N 0453.268013 E 48 7 11 0 1 -14 20 0 -25
52445 41931.465 127.127.40.0 S1 07 1 1 02 59.3 291.5 39.3
@@ -39,8 +40,8 @@
52445 41931.585 127.127.40.0 S1 20 6 1 02 59.9 256.6 78.0
52445 41931.615 127.127.40.0 S1 25 8 2 00 0.0 86.6 20.1
</pre>
- <p>This is in the form of:</p>
- <pre>
+ <p>This is in the form of:</p>
+ <pre>
All output lines consist of a prefix and a message, the prefix is:
[days since epoch] [sec.ms since start of day] [peer address]
@@ -55,10 +56,10 @@ C1 [date] [time] [mode] [bias] [biasunc] [rate] [rateunc] [utcoff] [latitude] [l
*Tracking status packet:
S1 [prn] [channel] [aqflag] [ephstat] [snr] [azinuth] [elevation]
</pre>
- <h4>Additional Information</h4>
- <p><a href="../refclock.html">Reference Clock Drivers</a></p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <h4>Additional Information</h4>
+ <p><a href="../refclock.html">Reference Clock Drivers</a></p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver44.html b/contrib/ntp/html/drivers/driver44.html
index e5cbf68..d2cddb9 100755
--- a/contrib/ntp/html/drivers/driver44.html
+++ b/contrib/ntp/html/drivers/driver44.html
@@ -2,91 +2,87 @@
<html>
- <head>
- <title>NeoClock4X</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
- </head>
+ <head>
+ <title>NeoClock4X</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ </head>
- <body>
- <h1>NeoClock4X - DCF77 / TDF serial line receiver<br>
- </h1>
- <hr size="2" width="100%">
- <h2>Synopsis</h2>
- <table width="100%" border="0" cellspacing="0" cellpadding="0">
- <tbody>
- <tr>
- <td valign="top">
- <table width="100%" border="0" cellspacing="0" cellpadding="2">
- <tbody>
- <tr>
- <td valign="top">Adress<br>
- </td>
- <td valign="top">127.127.44.u<br>
- </td>
- </tr>
- <tr>
- <td valign="top">Reference ID<br>
- </td>
- <td valign="top">neol<br>
- </td>
- </tr>
- <tr>
- <td valign="top">Driver ID<br>
- </td>
- <td valign="top">NEOCLK4X<br>
- </td>
- </tr>
- <tr>
- <td valign="top">Serial Port<br>
- </td>
- <td valign="top">/dev/neoclock4x-u<br>
- </td>
- </tr>
- </tbody>
- </table>
- <br>
- </td>
- <td align="right" valign="top"><a href="http://www.linum.com"><img src="../pic/neoclock4x.gif" alt="NeoClock4X - DCF77 receiver" height="195" width="150"> </a><br>
- </td>
- </tr>
- </tbody>
- </table>
- <hr size="2" width="100%">
- <h2>Description</h2>
- The refclock_neoclock4x driver supports the NeoClock4X receiver available from <a href="http://www.linum.com">Linum Software GmbH</a>. The receiver is available as a <a href="http://www.dcf77.de">DCF77</a> or TDF receiver. Both receivers have the same output string. For more information about the NeoClock4X receiver please visit <a href="http://www.linux-funkuhr.de">http://www.linux-funkuhr.de</a>. &nbsp;
- <hr size="2" width="100%">
- <h2>Fudge Factors</h2>
- <dl>
- <dt><b><a href="../clockopt.html">time1 time</a></b>
- <dd>Specifies the time offset calibration factor with the default value off 0.16958333 seconds. This offset is used&nbsp; to correct serial line and operating system delays incurred in capturing time stamps. If you want to fudge the time1 offset <b>ALWAYS</b> add a value off 0.16958333. This is neccessary to compensate to delay that is caused by transmit the timestamp at 2400 Baud. If you want to compensate the delay that the DCF77 or TDF radio signal takes to travel to your site simply add the needed millisecond delay to the given value. Note that the time here is given in seconds.
- <dd>Default setting is 0.16958333 seconds.<br>
-
- </dl>
- <dl>
- <dt><b><a href="../clockopt.html">time2 time</a></b>
- <dd>Not used by this driver.
- </dl>
- <dl>
- <dt><a href="../clockopt.html"><b>flag1 0 | 1</b></a>
- <dd>When set to 1 the driver will feed ntp with timestampe even if the radio signal is lost. In this case an internal backup clock generates the timestamps. This is ok as long as the receiver is synced once since the receiver is able to keep time for a long period.
- <dd>Default setting is 0 = don't synchronize to CMOS clock.
- <dd>
- <dt><a href="../clockopt.html"><b>flag2 0 | 1</b></a>
- <dd>You can allow the NeoClock4X driver to use the quartz clock even if it is never synchronized to a radio clock. This is usally not a good idea if you want preceise timestamps since the CMOS clock is maybe not adjusted to a dst status change. So <b>PLEASE</b> switch this only on if you now what you're doing.
- <dd>Default setting is 0 = don't synchronize to unsynchronized CMOS clock.
- <dt>
- <dt><a href="../clockopt.html"><b>flag3 0 | 1</b></a>
- <dd>Not used by this driver.<tt><tt><tt><tt><tt><tt> </tt></tt></tt></tt></tt></tt>
- <dd>
- <dt><a href="../clockopt.html"><b>flag4 0 | 1</b></a>
- <dd>It is recommended to allow extensive logging while you setup the NeoClock4X receiver. If you activate flag4 every received data is logged. You should turn off flag4 as soon as the clock works as expected to reduce logfile cluttering.
- <dd>Default setting is 0 = don't log received data and converted utc time.
- </dl>
- <hr size="2" width="100%">
- Please send any comments or question to <a href="mailto:neoclock4@linum.com">neoclock4x@linum.com</a>.
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <body>
+ <h1>NeoClock4X - DCF77 / TDF serial line receiver<br>
+ </h1>
+ <hr size="2" width="100%">
+ <h2>Synopsis</h2>
+ <table width="100%">
+ <tbody>
+ <tr>
+ <td valign="top">
+ <table width="100%">
+ <tbody>
+ <tr>
+ <td valign="top">Adress<br>
+ </td>
+ <td valign="top">127.127.44.u<br>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top">Reference ID<br>
+ </td>
+ <td valign="top">neol<br>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top">Driver ID<br>
+ </td>
+ <td valign="top">NEOCLK4X<br>
+ </td>
+ </tr>
+ <tr>
+ <td valign="top">Serial Port<br>
+ </td>
+ <td valign="top">/dev/neoclock4x-u<br>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <br>
+ </td>
+ <td align="right" valign="top"><a href="http://www.linum.com"><img src="../pic/neoclock4x.gif" alt="NeoClock4X - DCF77 receiver" height="195" width="150"> </a><br>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <hr size="2" width="100%">
+ <h2>Description</h2>
+ The refclock_neoclock4x driver supports the NeoClock4X receiver available from <a href="http://www.linum.com">Linum Software GmbH</a>. The receiver is available as a <a href="http://www.dcf77.de">DCF77</a> or TDF receiver. Both receivers have the same output string. For more information about the NeoClock4X receiver please visit <a href="http://www.linux-funkuhr.de">http://www.linux-funkuhr.de</a>. &nbsp;
+ <hr size="2" width="100%">
+ <h2>Fudge Factors</h2>
+ <dl>
+ <dt><b><a href="../clockopt.html">time1 time</a></b>
+ <dd>Specifies the time offset calibration factor with the default value off 0.16958333 seconds. This offset is used&nbsp; to correct serial line and operating system delays incurred in capturing time stamps. If you want to fudge the time1 offset <b>ALWAYS</b> add a value off 0.16958333. This is neccessary to compensate to delay that is caused by transmit the timestamp at 2400 Baud. If you want to compensate the delay that the DCF77 or TDF radio signal takes to travel to your site simply add the needed millisecond delay to the given value. Note that the time here is given in seconds.
+ <dd>Default setting is 0.16958333 seconds.<br>
+ </dl>
+ <dl>
+ <dt><b><a href="../clockopt.html">time2 time</a></b>
+ <dd>Not used by this driver.
+ </dl>
+ <dl>
+ <dt><a href="../clockopt.html"><b>flag1 0 | 1</b></a>
+ <dd>When set to 1 the driver will feed ntp with timestampe even if the radio signal is lost. In this case an internal backup clock generates the timestamps. This is ok as long as the receiver is synced once since the receiver is able to keep time for a long period.
+ <dd>Default setting is 0 = don't synchronize to CMOS clock.
+ <dt><a href="../clockopt.html"><b>flag2 0 | 1</b></a>
+ <dd>You can allow the NeoClock4X driver to use the quartz clock even if it is never synchronized to a radio clock. This is usally not a good idea if you want preceise timestamps since the CMOS clock is maybe not adjusted to a dst status change. So <b>PLEASE</b> switch this only on if you now what you're doing.
+ <dd>Default setting is 0 = don't synchronize to unsynchronized CMOS clock.
+ <dt><a href="../clockopt.html"><b>flag3 0 | 1</b></a>
+ <dd>Not used by this driver.
+ <dt><a href="../clockopt.html"><b>flag4 0 | 1</b></a>
+ <dd>It is recommended to allow extensive logging while you setup the NeoClock4X receiver. If you activate flag4 every received data is logged. You should turn off flag4 as soon as the clock works as expected to reduce logfile cluttering.
+ <dd>Default setting is 0 = don't log received data and converted utc time.
+ </dl>
+ <hr size="2" width="100%">
+ Please send any comments or question to <a href="mailto:neoclock4@linum.com">neoclock4x@linum.com</a>.
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver5.html b/contrib/ntp/html/drivers/driver5.html
index 405c3ab..1b539ac 100644
--- a/contrib/ntp/html/drivers/driver5.html
+++ b/contrib/ntp/html/drivers/driver5.html
@@ -5,7 +5,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>TrueTime GPS/GOES/OMEGA Receivers</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
</head>
<body>
@@ -64,9 +64,9 @@
<dd>Not used by this driver.
</dl>
<h4>Additional Information</h4>
- <p><a href="../refclock.html">Reference Clock Drivers</a> <a href="../index.html"></a></p>
+ <p><a href="../refclock.html">Reference Clock Drivers</a></p>
<hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver6.html b/contrib/ntp/html/drivers/driver6.html
index 8e7cc1e..8a51f16 100644
--- a/contrib/ntp/html/drivers/driver6.html
+++ b/contrib/ntp/html/drivers/driver6.html
@@ -2,88 +2,91 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>IRIG Audio Decoder</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>IRIG Audio Decoder</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>IRIG Audio Decoder</h3>
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="../scripts/links8.txt"></script>
- <hr>
- <h4>Synopsis</h4>
- Address: 127.127.6.<i>u</i><br>
- Reference ID: <tt>IRIG</tt><br>
- Driver ID: <tt>IRIG_AUDIO</tt><br>
- Audio Device: <tt>/dev/audio</tt> and <tt>/dev/audioctl</tt>
- <p>Note: This driver supersedes an older one of the same name, address and ID which required replacing the original kernel audio driver with another which worked only on older Sun SPARC architectures and SunOS operating systems. The new driver requires no modification of the operating system and works on FreeBSD, SunOS and Solaris. While it is generic and likely portable to other systems, it is somewhat slower than the original, since the extensive signal conditioning, filtering and decoding is done in user space, not kernel space.</p>
- <h4>Description</h4>
- <p>This driver supports the Inter-Range Instrumentation Group (IRIG) standard time distribution signal using the audio codec native to some workstations. This signal is generated by several radio clocks, including those made by Arbiter, Austron, Bancomm, Odetics, Spectracom and TrueTime, among others, although it is often an add-on option. The signal is connected via an optional attenuator box and cable to either the microphone or line-in port. The driver receives, demodulates and decodes the IRIG-B and IRIG-E signal formats using internal filters designed to reduce the effects of noise and interference.</p>
- <p>This driver incorporates several features in common with other audio drivers such as described in the <a href="driver7.html">Radio CHU Audio Demodulator/Decoder</a> and the <a href="driver36.html">Radio WWV/H Audio Demodulator/Decoder</a> pages. They include automatic gain control (AGC), selectable audio codec port and signal monitoring capabilities. For a discussion of these common features, as well as a guide to hookup, debugging and monitoring, see the <a href="../audio.html">Reference Clock Audio Drivers</a> page.</p>
- <p>The IRIG signal format uses an amplitude-modulated carrier with pulse-width modulated data bits. For IRIG-B, the carrier frequency is 1000 Hz and bit rate 100 b/s; for IRIG-E, the carrier frequenchy is 100 Hz and bit rate 10 b/s. While IRIG-B provides the best accuracy, generally within a few tens of microseconds relative to IRIG time, it can also generate a significant load on the processor with older workstations. Generally, the accuracy with IRIG-E is about ten times worse than IRIG-B, but the processor load is ten times less.</p>
- <p>The program processes 8000-Hz <font face="symbol">m</font>-law companded samples using separate signal filters for IRIG-B and IRIG-E, a comb filter, envelope detector and automatic threshold corrector. Cycle crossings relative to the corrected slice level determine the width of each pulse and its value - zero, one or position identifier. The data encode 20 BCD digits which determine the second, minute, hour and day of the year and sometimes the year and synchronization condition. The comb filter exponentially averages the corresponding samples of successive baud intervals in order to reliably identify the reference carrier cycle. A type-II phase-lock loop (PLL) performs additional integration and interpolation to accurately determine the zero crossing of that cycle, which determines the reference timestamp. A pulse-width discriminator demodulates the data pulses, which are then encoded as the BCD digits of the timecode. The timecode and reference timestamp are updated once each second with IRIG-B (ten seconds with IRIG-E) and local clock offset samples saved for later processing. At poll intervals of 64 s, the saved samples are processed by a trimmed-mean filter and used to update the system clock.</p>
- <p>Infinite impulse response (IIR) filters are used with both IRIG-B and IRIG-E formats. An 800-Hz highpass filter is used for IRIG-B and a 130-Hz lowpass filter for IRIG-E. These are intended for use with noisy signals, such as might be received over a telephone line or radio circuit, or when interfering signals may be present in the audio passband. The driver determines which IRIG format is in use by sampling the amplitude of each filter output and selecting the one with maximum signal. An automatic gain control feature provides protection against overdriven or underdriven input signal amplitudes. It is designed to maintain adequate demodulator signal amplitude while avoiding occasional noise spikes. In order to assure reliable capture, the decompanded input signal amplitude must be greater than 100 units and the codec sample frequency error less than 250 PPM (.025 percent).</p>
- <p>The program performs a number of error checks to protect against overdriven or underdriven input signal levels, incorrect signal format or improper hardware configuration. The specific checks are detailed later in this page. Note that additional checks are done elsewhere in the reference clock interface routines.</p>
- <p>Unlike other drivers, which can have multiple instantiations, this one supports only one. It does not seem likely that more than one audio codec would be useful in a single machine. More than one would probably chew up too much CPU time anyway.</p>
- <h4>IRIG-B Timecode Format</h4>
- <p>The 100 elements of the IRIG timecode are numbered from 0 through 99. Position identifiers occur at elements 0, 9, 19 and every ten thereafter to 99. The control function (CF) elements begin at element 50 (CF 1) and extend to element 78 (CF 27). The straight-binary-seconds (SBS) field, which encodes the seconds of the UTC day, begins at element 80 (CF 28) and extends to element 97 (CF 44). The encoding of elements 50 (CF 1) through 78 (CF 27) is device dependent. This driver presently decodes the CF elements, but does nothing with them.</p>
- <p>Where feasible, the IRIG signal source should be operated with signature control so that, if the signal is lost or mutilated, the source produces an unmodulated signal, rather than possibly random digits. The driver will automatically reject the data and declare itself unsynchronized in this case. Some devices, in particular Spectracom radio/satellite clocks, provide additional year and status indication in the format:</p>
- <pre>
+ <body>
+ <h3>IRIG Audio Decoder</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ Address: 127.127.6.<i>u</i><br>
+ Reference ID: <tt>IRIG</tt><br>
+ Driver ID: <tt>IRIG_AUDIO</tt><br>
+ Audio Device: <tt>/dev/audio</tt> and <tt>/dev/audioctl</tt>
+ <p>Note: This driver supersedes an older one of the same name, address and ID which required replacing the original kernel audio driver with another which worked only on older Sun SPARC architectures and SunOS operating systems. The new driver requires no modification of the operating system and works on FreeBSD, SunOS and Solaris. While it is generic and likely portable to other systems, it is somewhat slower than the original, since the extensive signal conditioning, filtering and decoding is done in user space, not kernel space.</p>
+ <h4>Description</h4>
+ <p>This driver supports the Inter-Range Instrumentation Group (IRIG) standard time distribution signal using the audio codec native to some workstations. This signal is generated by several radio clocks, including those made by Arbiter, Austron, Bancomm, Odetics, Spectracom and TrueTime, among others, although it is often an add-on option. The signal is connected via an optional attenuator box and cable to either the microphone or line-in port. The driver receives, demodulates and decodes the IRIG-B and IRIG-E signal formats using internal filters designed to reduce the effects of noise and interference.</p>
+ <p>This driver incorporates several features in common with other audio drivers such as described in the <a href="driver7.html">Radio CHU Audio Demodulator/Decoder</a> and the <a href="driver36.html">Radio WWV/H Audio Demodulator/Decoder</a> pages. They include automatic gain control (AGC), selectable audio codec port and signal monitoring capabilities. For a discussion of these common features, as well as a guide to hookup, debugging and monitoring, see the <a href="../audio.html">Reference Clock Audio Drivers</a> page.</p>
+ <p>The IRIG signal format uses an amplitude-modulated carrier with pulse-width modulated data bits. For IRIG-B, the carrier frequency is 1000 Hz and bit rate 100 b/s; for IRIG-E, the carrier frequenchy is 100 Hz and bit rate 10 b/s. While IRIG-B provides the best accuracy, generally within a few tens of microseconds relative to IRIG time, it can also generate a significant load on the processor with older workstations. Generally, the accuracy with IRIG-E is about ten times worse than IRIG-B, but the processor load is ten times less.</p>
+ <p>The program processes 8000-Hz <font face="symbol">m</font>-law companded samples using separate signal filters for IRIG-B and IRIG-E, a comb filter, envelope detector and automatic threshold corrector. Cycle crossings relative to the corrected slice level determine the width of each pulse and its value - zero, one or position identifier. The data encode 20 BCD digits which determine the second, minute, hour and day of the year and sometimes the year and synchronization condition. The comb filter exponentially averages the corresponding samples of successive baud intervals in order to reliably identify the reference carrier cycle. A type-II phase-lock loop (PLL) performs additional integration and interpolation to accurately determine the zero crossing of that cycle, which determines the reference timestamp. A pulse-width discriminator demodulates the data pulses, which are then encoded as the BCD digits of the timecode. The timecode and reference timestamp are updated once each second with IRIG-B (ten seconds with IRIG-E) and local clock offset samples saved for later processing. At poll intervals of 64 s, the saved samples are processed by a trimmed-mean filter and used to update the system clock.</p>
+ <p>Infinite impulse response (IIR) filters are used with both IRIG-B and IRIG-E formats. An 800-Hz highpass filter is used for IRIG-B and a 130-Hz lowpass filter for IRIG-E. These are intended for use with noisy signals, such as might be received over a telephone line or radio circuit, or when interfering signals may be present in the audio passband. The driver determines which IRIG format is in use by sampling the amplitude of each filter output and selecting the one with maximum signal. An automatic gain control feature provides protection against overdriven or underdriven input signal amplitudes. It is designed to maintain adequate demodulator signal amplitude while avoiding occasional noise spikes. In order to assure reliable capture, the decompanded input signal amplitude must be greater than 100 units and the codec sample frequency error less than 250 PPM (.025 percent).</p>
+ <p>The program performs a number of error checks to protect against overdriven or underdriven input signal levels, incorrect signal format or improper hardware configuration. The specific checks are detailed later in this page. Note that additional checks are done elsewhere in the reference clock interface routines.</p>
+ <p>Unlike other drivers, which can have multiple instantiations, this one supports only one. It does not seem likely that more than one audio codec would be useful in a single machine. More than one would probably chew up too much CPU time anyway.</p>
+ <h4>IRIG-B Timecode Format</h4>
+ <p>The 100 elements of the IRIG timecode are numbered from 0 through 99. Position identifiers occur at elements 0, 9, 19 and every ten thereafter to 99. The control function (CF) elements begin at element 50 (CF 1) and extend to element 78 (CF 27). The straight-binary-seconds (SBS) field, which encodes the seconds of the UTC day, begins at element 80 (CF 28) and extends to element 97 (CF 44). The encoding of elements 50 (CF 1) through 78 (CF 27) is device dependent. This driver presently decodes the CF elements, but does nothing with them.</p>
+ <p>Where feasible, the IRIG signal source should be operated with signature control so that, if the signal is lost or mutilated, the source produces an unmodulated signal, rather than possibly random digits. The driver will automatically reject the data and declare itself unsynchronized in this case. Some devices, in particular Spectracom radio/satellite clocks, provide additional year and status indication in the format:</p>
+ <pre>
Element CF Function
-------------------------------------
55 6 time sync status
60-63 10-13 BCD year units
65-68 15-18 BCD year tens
</pre>
- Other devices set these elements to zero.
- <h4>Performance and Horror Stories</h4>
- <p>The <font face="symbol">m</font>-law companded data format allows considerable latitude in signal levels; however, an automatic gain control (AGC) function is implemented to further compensate for varying input signal levels and to avoid signal distortion. For proper operation, the IRIG signal source should be configured for analog signal levels, NOT digital TTL levels.</p>
- <p>The accuracy of the system clock synchronized to the IRIG-B source with this driver and the <tt>ntpd</tt> daemon is 10-20 <font face="symbol">m</font>s with a Sun UltraSPARC II running Solaris 2.6 and maybe twice that with a Sun SPARC IPC running SunOS 4.1.3. Be however acutely aware that the accuracy with Solaris 2.8 and presumably beyond has seriously degraded to the order of several milliseconds. The Sun kernel driver has a sawtooth modulation with amplitude over 5 ms peak-peak and period 5.5 s. The crafty IRIG&nbsp;driver uses a transverse filter to remove the modulation and something called a botttom-fisher to remove incidental positive spikes especially prevalent with Sun Blade 1000 and possibly other systems. The result is nominal accuracy and jitter something less than 0.5 ms, but the this is still far inferior to the performance with older systems.</p>
- <p>The processor resources consumed by the daemon can be significant, ranging from about 1.2 percent on the faster UltraSPARC II to 38 percent on the slower SPARC IPC. However, the overall timing accuracy is limited by the resolution and stability of the CPU clock oscillator and the interval between clock corrections, which is 64 s with this driver. This performance, while probably the best that can be achieved by the daemon itself, can be improved with assist from the PPS discipline as described elsewhere in this documentation.</p>
- <h4>Monitor Data</h4>
- The timecode format used for debugging and data recording includes data helpful in diagnosing problems with the IRIG signal and codec connections. With debugging enabled (-d on the ntpd command line), the driver produces one line for each timecode in the following format:
- <p><tt>00 1 98 23 19:26:52 721 143 0.694 47 20 0.083 66.5 3094572411.00027</tt></p>
- <p>The first field containes the error flags in hex, where the hex bits are interpreted as below. This is followed by the IRIG status indicator, year of century, day of year and time of day. The status indicator and year are not produced by some IRIG devices. Following these fields are the carrier amplitude (0-8100), codec gain (0-255), field phase (0-79), time constant (2-20), modulation index (0-1), carrier phase error (0&plusmn;0.5) and carrier frequency error (PPM). The last field is the on-time timestamp in NTP format. The fraction part is a good indicator of how well the driver is doing. With an UltrSPARC 30, this is normally within a few tens of microseconds relative to the IRIG-B signal and within a few hundred microseconds with IRIG-E.</p>
- <p>The error flags are defined as follows in hex:</p>
- <dl>
- <dt><tt>x01</tt>
- <dd>Low signal. The carrier amplitude is less than 100 units. This is usually the result of no signal or wrong input port.
- <dt><tt>x02</tt>
- <dd>Frequency error. The codec frequency error is greater than 250 PPM. This may be due to wrong signal format or (rarely) defective codec.
- <dt><tt>x04</tt>
- <dd>Modulation error. The IRIG modulation index is less than 0.5. This is usually the result of an overdriven codec, wrong signal format or wrong input port.
- <dt><tt>x08</tt>
- <dd>Frame synch error. The decoder frame does not match the IRIG frame. This is usually the result of an overdriven codec, wrong signal format or noisy IRIG signal. It may also be the result of an IRIG signature check which indicates a failure of the IRIG signal synchronization source.
- <dt><tt>x10</tt>
- <dd>Data bit error. The data bit length is out of tolerance. This is usually the result of an overdriven codec, wrong signal format or noisy IRIG signal.
- <dt><tt>x20</tt>
- <dd>Seconds numbering discrepancy. The decoder second does not match the IRIG second. This is usually the result of an overdriven codec, wrong signal format or noisy IRIG signal.
- <dt><tt>x40</tt>
- <dd>Codec error (overrun). The machine is not fast enough to keep up with the codec.
- </dl>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>IRIG</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Specifies the microphone port if set to zero or the line-in port if set to one. It does not seem useful to specify the compact disc player port.
- <dt><tt>flag3 0 | 1</tt>
- <dd>Enables audio monitoring of the input signal. For this purpose, the speaker volume must be set before the driver is started.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Enable verbose <tt>clockstats</tt> recording if set.
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ Other devices set these elements to zero.
+ <h4>Performance and Horror Stories</h4>
+ <p>The <font face="symbol">m</font>-law companded data format allows considerable latitude in signal levels; however, an automatic gain control (AGC) function is implemented to further compensate for varying input signal levels and to avoid signal distortion. For proper operation, the IRIG signal source should be configured for analog signal levels, NOT digital TTL levels.</p>
+ <p>The accuracy of the system clock synchronized to the IRIG-B source with this driver and the <tt>ntpd</tt> daemon is 10-20 <font face="symbol">m</font>s with a Sun UltraSPARC II running Solaris 2.6 and maybe twice that with a Sun SPARC IPC running SunOS 4.1.3. Be however acutely aware that the accuracy with Solaris 2.8 and presumably beyond has seriously degraded to the order of several milliseconds. The Sun kernel driver has a sawtooth modulation with amplitude over 5 ms peak-peak and period 5.5 s. The crafty IRIG&nbsp;driver uses a transverse filter to remove the modulation and something called a botttom-fisher to remove incidental positive spikes especially prevalent with Sun Blade 1000 and possibly other systems. The result is nominal accuracy and jitter something less than 0.5 ms, but the this is still far inferior to the performance with older systems.</p>
+ <p>The processor resources consumed by the daemon can be significant, ranging from about 1.2 percent on the faster UltraSPARC II to 38 percent on the slower SPARC IPC. However, the overall timing accuracy is limited by the resolution and stability of the CPU clock oscillator and the interval between clock corrections, which is 64 s with this driver. This performance, while probably the best that can be achieved by the daemon itself, can be improved with assist from the PPS discipline as described elsewhere in this documentation.</p>
+ <h4>Autotune</h4>
+ <p>The driver includes provisions to automatically tune the radio in response to changing radio propagation conditions throughout the day and night. The radio interface is compatible with the ICOM CI-V standard, which is a bidirectional serial bus operating at TTL levels. The bus can be connected to a serial port using a level converter such as the CT-17.</p>
+ <p>Each ICOM radio is assigned a unique 8-bit ID select code, usually expressed in hex format. To activate the CI-V interface, the <tt>mode</tt> keyword of the <tt>server</tt> configuration command specifies a nonzero select code in decimal format. A table of ID select codes for the known ICOM radios is given on the <a href="../audio.html">Reference Clock Audio Drivers</a> page. A missing <tt>mode</tt> keyword or a zero argument leaves the interface disabled.</p>
+ <p>If specified, the driver will attempt to open the device <tt>/dev/icom</tt> and, if successful will activate the autotune function and tune the radio to each operating frequency in turn while attempting to acquire minute sync from CHU. However, the driver is liberal in what it assumes of the configuration. If the <tt>/dev/icom</tt> link is not present or the open fails or the CI-V bus or radio is inoperative, the driver quietly gives up with no harm done.</p>
+ <h4>Monitor Data</h4>
+ The timecode format used for debugging and data recording includes data helpful in diagnosing problems with the IRIG signal and codec connections. With debugging enabled (-d on the ntpd command line), the driver produces one line for each timecode in the following format:
+ <p><tt>00 1 98 23 19:26:52 721 143 0.694 47 20 0.083 66.5 3094572411.00027</tt></p>
+ <p>The first field containes the error flags in hex, where the hex bits are interpreted as below. This is followed by the IRIG status indicator, year of century, day of year and time of day. The status indicator and year are not produced by some IRIG devices. Following these fields are the carrier amplitude (0-8100), codec gain (0-255), field phase (0-79), time constant (2-20), modulation index (0-1), carrier phase error (0&plusmn;0.5) and carrier frequency error (PPM). The last field is the on-time timestamp in NTP format. The fraction part is a good indicator of how well the driver is doing. With an UltrSPARC 30, this is normally within a few tens of microseconds relative to the IRIG-B signal and within a few hundred microseconds with IRIG-E.</p>
+ <p>The error flags are defined as follows in hex:</p>
+ <dl>
+ <dt><tt>x01</tt>
+ <dd>Low signal. The carrier amplitude is less than 100 units. This is usually the result of no signal or wrong input port.
+ <dt><tt>x02</tt>
+ <dd>Frequency error. The codec frequency error is greater than 250 PPM. This may be due to wrong signal format or (rarely) defective codec.
+ <dt><tt>x04</tt>
+ <dd>Modulation error. The IRIG modulation index is less than 0.5. This is usually the result of an overdriven codec, wrong signal format or wrong input port.
+ <dt><tt>x08</tt>
+ <dd>Frame synch error. The decoder frame does not match the IRIG frame. This is usually the result of an overdriven codec, wrong signal format or noisy IRIG signal. It may also be the result of an IRIG signature check which indicates a failure of the IRIG signal synchronization source.
+ <dt><tt>x10</tt>
+ <dd>Data bit error. The data bit length is out of tolerance. This is usually the result of an overdriven codec, wrong signal format or noisy IRIG signal.
+ <dt><tt>x20</tt>
+ <dd>Seconds numbering discrepancy. The decoder second does not match the IRIG second. This is usually the result of an overdriven codec, wrong signal format or noisy IRIG signal.
+ <dt><tt>x40</tt>
+ <dd>Codec error (overrun). The machine is not fast enough to keep up with the codec.
+ </dl>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>IRIG</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>Specifies the microphone port if set to zero or the line-in port if set to one. It does not seem useful to specify the compact disc player port.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>Enables audio monitoring of the input signal. For this purpose, the speaker volume must be set before the driver is started.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Enable verbose <tt>clockstats</tt> recording if set.
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver7.html b/contrib/ntp/html/drivers/driver7.html
index 7c47b11..8e050e7 100644
--- a/contrib/ntp/html/drivers/driver7.html
+++ b/contrib/ntp/html/drivers/driver7.html
@@ -2,87 +2,86 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Radio CHU Audio Demodulator/Decoder</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Radio CHU Audio Demodulator/Decoder</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Radio CHU Audio Demodulator/Decoder</h3>
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="../scripts/links8.txt"></script>
- <hr>
- <h4>Synopsis</h4>
- Address: 127.127.7.<i>u</i><br>
- Reference ID: <tt>CHU</tt><br>
- Driver ID: <tt>CHU</tt><br>
- Modem Port: <tt>/dev/chu<i>u</i></tt>; 300 baud, 8-bits, no parity<br>
- Autotune Port: <tt>/dev/icom</tt>; 1200/9600 baud, 8-bits, no parity<br>
- Audio Device: <tt>/dev/chu_audio</tt> and <tt>/dev/audioctl</tt>
- <h4>Description</h4>
- <p>This driver synchronizes the computer time using data encoded in radio transmissions from Canadian time/frequency station CHU in Ottawa, Ontario. It replaces an earlier one, built by Dennis Ferguson in 1988, which required a special line discipline to preprocessed the signal. The new driver includes more powerful algorithms implemented directly in the driver and requires no preprocessing.</p>
- <p>CHU transmissions are made continuously on 3330 kHz, 7335 kHz and 14670 kHz in upper sideband, compatible AM mode. An ordinary shortwave receiver can be tuned manually to one of these frequencies or, in the case of ICOM receivers, the receiver can be tuned automatically as propagation conditions change throughout the day and night. The performance of this driver when tracking the station is ordinarily better than 1 ms in time with frequency drift less than 0.5 PPM when not tracking the station.</p>
- <p>While there are currently no known commercial CHU receivers, a simple but effective receiver/demodulator can be constructed from an ordinary shortwave receiver and Bell 103 compatible, 300-b/s modem or modem chip, as described on the <a href="../pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page. The driver can use the modem to receive the radio signal and demodulate the data or, if available, the driver can use the audio codec of the Sun workstation or another with compatible audio interface. In the latter case, the driver implements the modem using DSP routines, so the radio can be connected directly to either the microphone or line input port.</p>
- <p>This driver incorporates several features in common with other audio drivers such as described in the <a href="driver36.html">Radio WWV/H Audio Demodulator/Decoder</a> and the <a href="driver6.html">IRIG Audio Decoder</a> pages. They include automatic gain control (AGC), selectable audio codec port and signal monitoring capabilities. For a discussion of these common features, as well as a guide to hookup, debugging and monitoring, see the <a href="../audio.html">Reference Clock Audio Drivers</a> page.</p>
- <p>Ordinarily, the driver poll interval is set to 14 (about 4.5 h), although this can be changed with configuration commands. As long as the clock is set or verified at least once during this interval, the NTP algorithms will consider the source reachable and selectable to discipline the system clock. However, if this does not happen for eight poll intervals, the algorithms will consider the source unreachable and some other source will be chosen (if available) to discipline the system clock.</p>
- <p>The decoding algorithms process the data using maximum-likelihood techniques which exploit the considerable degree of redundancy available in each broadcast message or burst. As described below, every character is sent twice and, in the case of format A bursts, the burst is sent eight times every minute. In the case of format B bursts, which are sent once each minute, the burst is considered correct only if every character matches its repetition in the burst. In the case of format A messages, a majority decoder requires at least six repetitions for each digit in the timecode and more than half of the repetitions decode to the same digit. Every character in every burst provides an independent timestamp upon arrival with a potential total of over 60 timestamps for each minute.</p>
- <p>A timecode in the format described below is assembled when all bursts have been received in the minute. The timecode is considered valid and the clock set when at least one valid format B burst has been decoded and the above requirements are met. The <tt>yyyy</tt> year field in the timecode indicates whether a valid format B burst has been received. Upon startup, this field is initialized at zero; when a valid format B burst is received, it is set to the current Gregorian year. The <tt>q</tt> quality character field in the timecode indicates whether a valid timecode has been determined. If any of the high order three bits of this character are set, the timecode is invalid.</p>
- <p>Once the clock has been set for the first time, it will appear reachable and selectable to discipline the system clock, even if the broadcast signal is lost. Since the signals are almost always available during some period of the day and the NTP clock discipline algorithms are designed to work well even in this case, it is unlikely that the system clock could drift more than a few tens of milliseconds during periods of signal loss. To protect against this most unlikely situation, if after four days with no signals, the clock is considered unset and resumes the synchronization procedure from the beginning.</p>
- <p>The last three fields in the timecode are useful in assessing the quality of the radio channel during the most recent minute bursts were received. The <tt>bcnt</tt> field shows the number of format A bursts in the range 1-8. The <tt>dist</tt> field shows the majority decoder distance, or the minimum number of sample repetitions for each digit of the timecode in the range 0-16. The <tt>tsmp</tt> field shows the number of timestamps determined in the range 0-60. For a valid timecode, <tt>bcnt</tt> must be at least 3, <tt>dist</tt> must be greater than <tt>bcnt</tt> and <tt>tsmp</tt> must be at least 20.</p>
- <h4>Program Operation</h4>
- <p>The program consists of four major parts: the DSP modem, maximum likelihood UART, burst assembler and majority decoder. The DSP modem demodulates Bell 103 modem answer-frequency signals; that is, frequency-shift keyed (FSK) tones of 2225 Hz (mark) and 2025 Hz (space). This is done using a 4th-order IIR filter and limiter/discriminator with 500-Hz bandpass centered on 2125 Hz and followed by a FIR raised-cosine lowpass filter optimized for the 300-b/s data rate. Alternately, the driver can be compiled to delete the modem and input 300 b/s data directly from an external modem via a serial port.</p>
- <p>The maximum likelihood UART is implemented using a set of eight 11-stage shift registers, one for each of eight phases of the 300-b/s bit clock. At each phase a new baseband signal value from the DSP modem is shifted into the corresponding register and the maximum and minimum over all 11 samples computed. This establishes a slice level midway between the maximum and minimum over all stages. For each stage, a signal level above this level is a mark (1) and below is a space (0). A quality metric is calculated for each register with respect to the slice level and the a-priori signal consisting of a mark bit (previous stop bit), space (start) bit, eight arbitrary information bits and the first of the two mark (stop) bits.</p>
- <p>The shift registers are processed in round-robin order as each modem value arrives until one of them shows a valid framing pattern consisting of a mark bit, space bit, eight arbitrary data bits and a mark bit. When found, the data bits from the register with the best metric is chosen as the maximum likelihood character and the UART begins to process the next character.</p>
- <p>The burst assembler processes characters either from the maximum likelihood UART or directly from the serial port as configured. A burst begins when a character is received and is processed after a timeout interval when no characters are received. If the interval between characters is greater than two characters, but less than the timeout interval, the burst is rejected as a runt and a new burst begun. As each character is received, a timestamp is captured and saved for later processing.</p>
- <p>A valid burst consists of ten characters in two replicated five-character blocks. A format B block contains the year and other information in ten hexadecimal digits. A format A block contains the timecode in ten decimal digits, the first of which is a framing code (6). The burst assembler must deal with cases where the first character of a format A burst is lost or is noise. This is done using the framing code to correct the phase, either one character early or one character late.</p>
- <p>The burst distance is incremented by one for each bit in the first block that matches the corresponding bit in the second block and decremented by one otherwise. In a format B burst the second block is bit-inverted relative to the first, so a perfect burst of five 8-bit characters has distance -40. In a format A block the two blocks are identical, so a perfect burst has distance +40. Format B bursts must be perfect to be acceptable; however, format A bursts, which are further processed by the majority decoder, are acceptable if the distance is at least 28.</p>
- <p>Each minute of transmission includes eight format A bursts containing two timecodes for each second from 31 through 39. The majority decoder uses a decoding matrix of ten rows, one for each digit position in the timecode, and 16 columns, one for each 4-bit code combination that might be decoded at that position. In order to use the character timestamps, it is necessary to reliably determine the second number of each burst. In a valid burst, the last digit of the two timecodes in the block must match and the value must be in the range 2-9 and greater than in the previous burst.</p>
- <p>As each hex digit of a valid burst is processed, the value at the row corresponding to the digit position in the timecode and column corresponding to the code found at that position is incremented. At the end of each minute of transmission, each row of the decoding matrix encodes the number of occurrences of each code found at the corresponding position of the timecode. However, the first digit (framing code) is always 6, the ninth (second tens) is always 3 and the last (second units) changes for each burst, so are not used.</p>
- <p>The maximum over all occurrences at each timecode digit position is the distance for that position and the corresponding code is the maximum likelihood candidate. If the distance is zero, the decoder assumes a miss; if the distance is not more than half the total number of occurrences, the decoder assumes a soft error; if two different codes with the same distance are found, the decoder assumes a hard error. In all these cases the decoder encodes a non-decimal character which will later cause a format error when the timecode is reformatted. The decoding distance is defined as the minimum distance over the first nine digits; the tenth digit varies over the seconds and is uncounted.</p>
- <p>The result of the majority decoder is a nine-digit timecode representing the maximum likelihood candidate for the transmitted timecode in that minute. Note that the second and fraction within the minute are always zero and that the actual reference point to calculate timestamp offsets is backdated to the first second of the minute. At this point the timecode block is reformatted and the year, days, hours and minutes extracted along with other information from the format B burst, including DST state, DUT1 correction and leap warning. The reformatting operation checks the timecode for invalid code combinations that might have been left by the majority decoder and rejects the entire timecode if found.</p>
- <p>If the timecode is valid, it is passed to the reference clock interface along with the backdated timestamp offsets accumulated over the minute. A perfect set of nine bursts could generate as many as 90 timestamps, but the maximum the interface can handle is 60. These are processed by the interface using a median filter and trimmed-mean average, so the resulting system clock correction is usually much better than would otherwise be the case with radio noise, UART jitter and occasional burst errors.</p>
- <h4>Autotune</h4>
- <p>The driver includes provisions to automatically tune the radio in response to changing radio propagation conditions throughout the day and night. The radio interface is compatible with the ICOM CI-V standard, which is a bidirectional serial bus operating at TTL levels. The bus can be connected to a standard serial port using a level converter such as the CT-17.</p>
- <p>Each ICOM radio is assigned a unique 8-bit ID select code, usually expressed in hex format. To activate the CI-V interface, the <tt>mode</tt> keyword of the <tt>server</tt> configuration command specifies a nonzero select code in decimal format. A table of ID select codes for the known ICOM radios is given below. Since all ICOM select codes are less than 128, the high order bit of the code is used by the driver to specify the baud rate. If this bit is not set, the rate is 9600 bps for the newer radios; if set, the rate is 1200 bps for the older radios. A missing <tt>mode</tt> keyword or a zero argument leaves the interface disabled.</p>
- <p>If specified, the driver will attempt to open the device <tt>/dev/icom</tt> and, if successful will tune the radio to 3.330 MHz. If after five minutes at this frequency not more than two format A bursts have been received for any minute, the driver will tune to 7.335 MHz, then to 14.670 MHz, then return to 3.330 MHz and continue in this cycle. However, the driver is liberal in what it assumes of the configuration. If the <tt>/dev/icom</tt> link is not present or the open fails or the CI-V bus or radio is inoperative, the driver quietly gives up with no harm done.</p>
- <h4>Radio Broadcast Format</h4>
- <p>The CHU time broadcast includes an audio signal compatible with the Bell 103 modem standard (mark = 2225 Hz, space = 2025 Hz). It consist of nine, ten-character bursts transmitted at 300 b/s and beginning each second from second 31 to second 39 of the minute. Each character consists of eight data bits plus one start bit and two stop bits to encode two hex digits. The burst data consist of five characters (ten hex digits) followed by a repeat of these characters. In format A, the characters are repeated in the same polarity; in format B, the characters are repeated in the opposite polarity.</p>
- <p>Format A bursts are sent at seconds 32 through 39 of the minute in hex digits</p>
- <p><tt>6dddhhmmss6dddhhmmss</tt></p>
- <p>The first ten digits encode a frame marker (<tt>6</tt>) followed by the day (<tt>ddd</tt>), hour (<tt>hh</tt>), minute (<tt>mm</tt>) and second (<tt>ss</tt>). Since format A bursts are sent during the third decade of seconds the tens digit of <tt>ss</tt> is always 3. The driver uses this to determine correct burst synchronization. These digits are then repeated with the same polarity.</p>
- <p>Format B bursts are sent at second 31 of the minute in hex digits</p>
- <p><tt>xdyyyyttaaxdyyyyttaa</tt></p>
- <p>The first ten digits encode a code (<tt>x</tt> described below) followed by the DUT1 (<tt>d</tt> in deciseconds), Gregorian year (<tt>yyyy</tt>), difference TAI - UTC (<tt>tt</tt>) and daylight time indicator (<tt>aa</tt>) peculiar to Canada. These digits are then repeated with inverted polarity.</p>
- <p>The <tt>x</tt> is coded</p>
- <dl>
- <dt><tt>1</tt>
- <dd>Sign of DUT (0 = +)/dd&gt;
- <dt><tt>2</tt>
- <dd>Leap second warning. One second will be added.
- <dt><tt>4</tt>
- <dd>Leap second warning. One second will be subtracted. This is not likely to happen in our universe.
- <dt><tt>8</tt>
- <dd>Even parity bit for this nibble.
- </dl>
- <p>By design, the last stop bit of the last character in the burst coincides with 0.5 second. Since characters have 11 bits and are transmitted at 300 b/s, the last stop bit of the first character coincides with 0.5 - 10 * 11/300 = 0.133 second. Depending on the UART, character interrupts can vary somewhere between the beginning of bit 9 and end of bit 11. These eccentricities can be corrected along with the radio propagation delay using the <tt>fudge time1</tt> variable.</p>
- <h4>Debugging Aids</h4>
- <p>The most convenient way to track the program status is using the <tt>ntpq</tt> program and the <tt>clockvar</tt> command. This displays the last determined timecode and related status and error counters, even when the program is not discipline the system clock. If the debugging trace feature (<tt>-d</tt> on the <tt>ntpd</tt> command line)is enabled, the program produces detailed status messages as it operates. If the <tt>fudge flag 4</tt> is set, these messages are written to the <tt>clockstats</tt> file. All messages produced by this driver have the prefix <tt>chu</tt> for convenient filtering with the Unix <tt>grep</tt> command.</p>
- <p>With debugging enabled the driver produces messages in the following formats:</p>
- <p>A format <tt>chuA</tt> message is produced for each format A burst received in seconds 32 through 39 of the minute:</p>
- <p><tt>chuA n b s code</tt></p>
- <p>where <tt>n</tt> is the number of characters in the burst (0-11), <tt>b</tt> the burst distance (0-40), <tt>s</tt> the synchronization distance (0-40) and <tt>code</tt> the burst characters as received. Note that the hex digits in each character are reversed and the last ten digits inverted, so the burst</p>
- <p><tt>11 40 1091891300ef6e76ecff</tt></p>
- <p>is interpreted as containing 11 characters with burst distance 40. The nibble-swapped timecode shows DUT1 +0.1 second, year 1998 and TAI -UTC 31 seconds.</p>
- <p>A format <tt>chuB</tt> message is produced for each format B burst received in second 31 of the minute:</p>
- <p><tt>chuB n b f s m code</tt></p>
- <p>where <tt>n</tt> is the number of characters in the burst (0-11), <tt>b</tt> the burst distance (0-40), <tt>f</tt> the field alignment (-1, 0, 1), <tt>s</tt>the synchronization distance (0-16), <tt>m</tt>the burst number (2-9) and <tt>code</tt> the burst characters as received. Note that the hex digits in each character are reversed, so the burst</p>
- <p><tt>10 38 0 16 9 06851292930685129293</tt></p>
- <p>is interpreted as containing 11 characters with burst distance 38, field alignment 0, synchronization distance 16 and burst number 9. The nibble-swapped timecode shows day 58, hour 21, minute 29 and second 39.</p>
- <p>If the CI-V interface for ICOM radios is active, a debug level greater than 1 will produce a trace of the CI-V command and response messages. Interpretation of these messages requires knowledge of the CI-V protocol, which is beyond the scope of this document.</p>
- <h4>Monitor Data</h4>
- When enabled by the <tt>filegen</tt> facility, every received timecode is written to the <tt>clockstats</tt> file in the following format:
- <pre>
+ <body>
+ <h3>Radio CHU Audio Demodulator/Decoder</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ Address: 127.127.7.<i>u</i><br>
+ Reference ID: <tt>CHU</tt><br>
+ Driver ID: <tt>CHU</tt><br>
+ Modem Port: <tt>/dev/chu<i>u</i></tt>; 300 baud, 8-bits, no parity<br>
+ Autotune Port: <tt>/dev/icom</tt>; 1200/9600 baud, 8-bits, no parity<br>
+ Audio Device: <tt>/dev/chu_audio</tt> and <tt>/dev/audioctl</tt>
+ <h4>Description</h4>
+ <p>This driver synchronizes the computer time using data encoded in radio transmissions from Canadian time/frequency station CHU in Ottawa, Ontario. It replaces an earlier one, built by Dennis Ferguson in 1988, which required a special line discipline to preprocessed the signal. The new driver includes more powerful algorithms implemented directly in the driver and requires no preprocessing.</p>
+ <p>CHU transmissions are made continuously on 3330 kHz, 7335 kHz and 14670 kHz in upper sideband, compatible AM mode. An ordinary shortwave receiver can be tuned manually to one of these frequencies or, in the case of ICOM receivers, the receiver can be tuned automatically as propagation conditions change throughout the day and night. The performance of this driver when tracking the station is ordinarily better than 1 ms in time with frequency drift less than 0.5 PPM when not tracking the station.</p>
+ <p>While there are currently no known commercial CHU receivers, a simple but effective receiver/demodulator can be constructed from an ordinary shortwave receiver and Bell 103 compatible, 300-b/s modem or modem chip, as described on the <a href="../pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page. The driver can use the modem to receive the radio signal and demodulate the data or, if available, the driver can use the audio codec of the Sun workstation or another with compatible audio interface. In the latter case, the driver implements the modem using DSP routines, so the radio can be connected directly to either the microphone or line input port.</p>
+ <p>This driver incorporates several features in common with other audio drivers such as described in the <a href="driver36.html">Radio WWV/H Audio Demodulator/Decoder</a> and the <a href="driver6.html">IRIG Audio Decoder</a> pages. They include automatic gain control (AGC), selectable audio codec port and signal monitoring capabilities. For a discussion of these common features, as well as a guide to hookup, debugging and monitoring, see the <a href="../audio.html">Reference Clock Audio Drivers</a> page.</p>
+ <p>Ordinarily, the driver poll interval is set to 14 (about 4.5 h), although this can be changed with configuration commands. As long as the clock is set or verified at least once during this interval, the NTP algorithms will consider the source reachable and selectable to discipline the system clock. However, if this does not happen for eight poll intervals, the algorithms will consider the source unreachable and some other source will be chosen (if available) to discipline the system clock.</p>
+ <p>The decoding algorithms process the data using maximum-likelihood techniques which exploit the considerable degree of redundancy available in each broadcast message or burst. As described below, every character is sent twice and, in the case of format A bursts, the burst is sent eight times every minute. In the case of format B bursts, which are sent once each minute, the burst is considered correct only if every character matches its repetition in the burst. In the case of format A messages, a majority decoder requires at least six repetitions for each digit in the timecode and more than half of the repetitions decode to the same digit. Every character in every burst provides an independent timestamp upon arrival with a potential total of over 60 timestamps for each minute.</p>
+ <p>A timecode in the format described below is assembled when all bursts have been received in the minute. The timecode is considered valid and the clock set when at least one valid format B burst has been decoded and the above requirements are met. The <tt>yyyy</tt> year field in the timecode indicates whether a valid format B burst has been received. Upon startup, this field is initialized at zero; when a valid format B burst is received, it is set to the current Gregorian year. The <tt>q</tt> quality character field in the timecode indicates whether a valid timecode has been determined. If any of the high order three bits of this character are set, the timecode is invalid.</p>
+ <p>Once the clock has been set for the first time, it will appear reachable and selectable to discipline the system clock, even if the broadcast signal is lost. Since the signals are almost always available during some period of the day and the NTP clock discipline algorithms are designed to work well even in this case, it is unlikely that the system clock could drift more than a few tens of milliseconds during periods of signal loss. To protect against this most unlikely situation, if after four days with no signals, the clock is considered unset and resumes the synchronization procedure from the beginning.</p>
+ <p>The last three fields in the timecode are useful in assessing the quality of the radio channel during the most recent minute bursts were received. The <tt>bcnt</tt> field shows the number of format A bursts in the range 1-8. The <tt>dist</tt> field shows the majority decoder distance, or the minimum number of sample repetitions for each digit of the timecode in the range 0-16. The <tt>tsmp</tt> field shows the number of timestamps determined in the range 0-60. For a valid timecode, <tt>bcnt</tt> must be at least 3, <tt>dist</tt> must be greater than <tt>bcnt</tt> and <tt>tsmp</tt> must be at least 20.</p>
+ <h4>Program Operation</h4>
+ <p>The program consists of four major parts: the DSP modem, maximum likelihood UART, burst assembler and majority decoder. The DSP modem demodulates Bell 103 modem answer-frequency signals; that is, frequency-shift keyed (FSK) tones of 2225 Hz (mark) and 2025 Hz (space). This is done using a 4th-order IIR filter and limiter/discriminator with 500-Hz bandpass centered on 2125 Hz and followed by a FIR raised-cosine lowpass filter optimized for the 300-b/s data rate. Alternately, the driver can be compiled to delete the modem and input 300 b/s data directly from an external modem via a serial port.</p>
+ <p>The maximum likelihood UART is implemented using a set of eight 11-stage shift registers, one for each of eight phases of the 300-b/s bit clock. At each phase a new baseband signal value from the DSP modem is shifted into the corresponding register and the maximum and minimum over all 11 samples computed. This establishes a slice level midway between the maximum and minimum over all stages. For each stage, a signal level above this level is a mark (1) and below is a space (0). A quality metric is calculated for each register with respect to the slice level and the a-priori signal consisting of a mark bit (previous stop bit), space (start) bit, eight arbitrary information bits and the first of the two mark (stop) bits.</p>
+ <p>The shift registers are processed in round-robin order as each modem value arrives until one of them shows a valid framing pattern consisting of a mark bit, space bit, eight arbitrary data bits and a mark bit. When found, the data bits from the register with the best metric is chosen as the maximum likelihood character and the UART begins to process the next character.</p>
+ <p>The burst assembler processes characters either from the maximum likelihood UART or directly from the serial port as configured. A burst begins when a character is received and is processed after a timeout interval when no characters are received. If the interval between characters is greater than two characters, but less than the timeout interval, the burst is rejected as a runt and a new burst begun. As each character is received, a timestamp is captured and saved for later processing.</p>
+ <p>A valid burst consists of ten characters in two replicated five-character blocks. A format B block contains the year and other information in ten hexadecimal digits. A format A block contains the timecode in ten decimal digits, the first of which is a framing code (6). The burst assembler must deal with cases where the first character of a format A burst is lost or is noise. This is done using the framing code to correct the phase, either one character early or one character late.</p>
+ <p>The burst distance is incremented by one for each bit in the first block that matches the corresponding bit in the second block and decremented by one otherwise. In a format B burst the second block is bit-inverted relative to the first, so a perfect burst of five 8-bit characters has distance -40. In a format A block the two blocks are identical, so a perfect burst has distance +40. Format B bursts must be perfect to be acceptable; however, format A bursts, which are further processed by the majority decoder, are acceptable if the distance is at least 28.</p>
+ <p>Each minute of transmission includes eight format A bursts containing two timecodes for each second from 31 through 39. The majority decoder uses a decoding matrix of ten rows, one for each digit position in the timecode, and 16 columns, one for each 4-bit code combination that might be decoded at that position. In order to use the character timestamps, it is necessary to reliably determine the second number of each burst. In a valid burst, the last digit of the two timecodes in the block must match and the value must be in the range 2-9 and greater than in the previous burst.</p>
+ <p>As each hex digit of a valid burst is processed, the value at the row corresponding to the digit position in the timecode and column corresponding to the code found at that position is incremented. At the end of each minute of transmission, each row of the decoding matrix encodes the number of occurrences of each code found at the corresponding position of the timecode. However, the first digit (framing code) is always 6, the ninth (second tens) is always 3 and the last (second units) changes for each burst, so are not used.</p>
+ <p>The maximum over all occurrences at each timecode digit position is the distance for that position and the corresponding code is the maximum likelihood candidate. If the distance is zero, the decoder assumes a miss; if the distance is not more than half the total number of occurrences, the decoder assumes a soft error; if two different codes with the same distance are found, the decoder assumes a hard error. In all these cases the decoder encodes a non-decimal character which will later cause a format error when the timecode is reformatted. The decoding distance is defined as the minimum distance over the first nine digits; the tenth digit varies over the seconds and is uncounted.</p>
+ <p>The result of the majority decoder is a nine-digit timecode representing the maximum likelihood candidate for the transmitted timecode in that minute. Note that the second and fraction within the minute are always zero and that the actual reference point to calculate timestamp offsets is backdated to the first second of the minute. At this point the timecode block is reformatted and the year, days, hours and minutes extracted along with other information from the format B burst, including DST state, DUT1 correction and leap warning. The reformatting operation checks the timecode for invalid code combinations that might have been left by the majority decoder and rejects the entire timecode if found.</p>
+ <p>If the timecode is valid, it is passed to the reference clock interface along with the backdated timestamp offsets accumulated over the minute. A perfect set of nine bursts could generate as many as 90 timestamps, but the maximum the interface can handle is 60. These are processed by the interface using a median filter and trimmed-mean average, so the resulting system clock correction is usually much better than would otherwise be the case with radio noise, UART jitter and occasional burst errors.</p>
+ <h4>Autotune</h4>
+ <p>The driver includes provisions to automatically tune the radio in response to changing radio propagation conditions throughout the day and night. The radio interface is compatible with the ICOM CI-V standard, which is a bidirectional serial bus operating at TTL levels. The bus can be connected to a standard serial port using a level converter such as the CT-17.</p>
+ <p>Each ICOM radio is assigned a unique 8-bit ID select code, usually expressed in hex format. To activate the CI-V interface, the <tt>mode</tt> keyword of the <tt>server</tt> configuration command specifies a nonzero select code in decimal format. A table of ID select codes for the known ICOM radios is given below. Since all ICOM select codes are less than 128, the high order bit of the code is used by the driver to specify the baud rate. If this bit is not set, the rate is 9600 bps for the newer radios; if set, the rate is 1200 bps for the older radios. A missing <tt>mode</tt> keyword or a zero argument leaves the interface disabled.</p>
+ <p>If specified, the driver will attempt to open the device <tt>/dev/icom</tt> and, if successful will tune the radio to 3.330 MHz. If after five minutes at this frequency not more than two format A bursts have been received for any minute, the driver will tune to 7.335 MHz, then to 14.670 MHz, then return to 3.330 MHz and continue in this cycle. However, the driver is liberal in what it assumes of the configuration. If the <tt>/dev/icom</tt> link is not present or the open fails or the CI-V bus or radio is inoperative, the driver quietly gives up with no harm done.</p>
+ <h4>Radio Broadcast Format</h4>
+ <p>The CHU time broadcast includes an audio signal compatible with the Bell 103 modem standard (mark = 2225 Hz, space = 2025 Hz). It consist of nine, ten-character bursts transmitted at 300 b/s and beginning each second from second 31 to second 39 of the minute. Each character consists of eight data bits plus one start bit and two stop bits to encode two hex digits. The burst data consist of five characters (ten hex digits) followed by a repeat of these characters. In format A, the characters are repeated in the same polarity; in format B, the characters are repeated in the opposite polarity.</p>
+ <p>Format A bursts are sent at seconds 32 through 39 of the minute in hex digits</p>
+ <p><tt>6dddhhmmss6dddhhmmss</tt></p>
+ <p>The first ten digits encode a frame marker (<tt>6</tt>) followed by the day (<tt>ddd</tt>), hour (<tt>hh</tt>), minute (<tt>mm</tt>) and second (<tt>ss</tt>). Since format A bursts are sent during the third decade of seconds the tens digit of <tt>ss</tt> is always 3. The driver uses this to determine correct burst synchronization. These digits are then repeated with the same polarity.</p>
+ <p>Format B bursts are sent at second 31 of the minute in hex digits</p>
+ <p><tt>xdyyyyttaaxdyyyyttaa</tt></p>
+ <p>The first ten digits encode a code (<tt>x</tt> described below) followed by the DUT1 (<tt>d</tt> in deciseconds), Gregorian year (<tt>yyyy</tt>), difference TAI - UTC (<tt>tt</tt>) and daylight time indicator (<tt>aa</tt>) peculiar to Canada. These digits are then repeated with inverted polarity.</p>
+ <p>The <tt>x</tt> is coded</p>
+ <dl>
+ <dt><tt>1</tt>
+ <dd>Sign of DUT (0 = +)/dd&gt;
+ <dt><tt>2</tt>
+ <dd>Leap second warning. One second will be added.
+ <dt><tt>4</tt>
+ <dd>Leap second warning. One second will be subtracted. This is not likely to happen in our universe.
+ <dt><tt>8</tt>
+ <dd>Even parity bit for this nibble.
+ </dl>
+ <p>By design, the last stop bit of the last character in the burst coincides with 0.5 second. Since characters have 11 bits and are transmitted at 300 b/s, the last stop bit of the first character coincides with 0.5 - 10 * 11/300 = 0.133 second. Depending on the UART, character interrupts can vary somewhere between the beginning of bit 9 and end of bit 11. These eccentricities can be corrected along with the radio propagation delay using the <tt>fudge time1</tt> variable.</p>
+ <h4>Debugging Aids</h4>
+ <p>The most convenient way to track the program status is using the <tt>ntpq</tt> program and the <tt>clockvar</tt> command. This displays the last determined timecode and related status and error counters, even when the program is not discipline the system clock. If the debugging trace feature (<tt>-d</tt> on the <tt>ntpd</tt> command line)is enabled, the program produces detailed status messages as it operates. If the <tt>fudge flag 4</tt> is set, these messages are written to the <tt>clockstats</tt> file. All messages produced by this driver have the prefix <tt>chu</tt> for convenient filtering with the Unix <tt>grep</tt> command.</p>
+ <p>With debugging enabled the driver produces messages in the following formats:</p>
+ <p>A format <tt>chuA</tt> message is produced for each format A burst received in seconds 32 through 39 of the minute:</p>
+ <p><tt>chuA n b s code</tt></p>
+ <p>where <tt>n</tt> is the number of characters in the burst (0-11), <tt>b</tt> the burst distance (0-40), <tt>s</tt> the synchronization distance (0-40) and <tt>code</tt> the burst characters as received. Note that the hex digits in each character are reversed and the last ten digits inverted, so the burst</p>
+ <p><tt>11 40 1091891300ef6e76ecff</tt></p>
+ <p>is interpreted as containing 11 characters with burst distance 40. The nibble-swapped timecode shows DUT1 +0.1 second, year 1998 and TAI -UTC 31 seconds.</p>
+ <p>A format <tt>chuB</tt> message is produced for each format B burst received in second 31 of the minute:</p>
+ <p><tt>chuB n b f s m code</tt></p>
+ <p>where <tt>n</tt> is the number of characters in the burst (0-11), <tt>b</tt> the burst distance (0-40), <tt>f</tt> the field alignment (-1, 0, 1), <tt>s</tt>the synchronization distance (0-16), <tt>m</tt>the burst number (2-9) and <tt>code</tt> the burst characters as received. Note that the hex digits in each character are reversed, so the burst</p>
+ <p><tt>10 38 0 16 9 06851292930685129293</tt></p>
+ <p>is interpreted as containing 11 characters with burst distance 38, field alignment 0, synchronization distance 16 and burst number 9. The nibble-swapped timecode shows day 58, hour 21, minute 29 and second 39.</p>
+ <p>If the CI-V interface for ICOM radios is active, a debug level greater than 1 will produce a trace of the CI-V command and response messages. Interpretation of these messages requires knowledge of the CI-V protocol, which is beyond the scope of this document.</p>
+ <h4>Monitor Data</h4>
+ When enabled by the <tt>filegen</tt> facility, every received timecode is written to the <tt>clockstats</tt> file in the following format:
+ <pre>
sq yy ddd hh:mm:ss.fff ld dut lset agc rfrq bcnt dist tsmp
s sync indicator
@@ -103,133 +102,133 @@
dist decoding distance
tsmp timestamps captured
</pre>
- The fields beginning with <tt>year</tt> and extending through <tt>dut</tt> are decoded from the received data and are in fixed-length format. The <tt>agc</tt> and <tt>lset</tt> fields, as well as the following driver-dependent fields, are in variable-length format.
- <dl>
- <dt><tt>s</tt>
- <dd>The sync indicator is initially <tt>?</tt> before the clock is set, but turns to space when the clock is correctly set.
- <dt><tt>q</tt>
- <dd>The quality character is a four-bit hexadecimal code showing which alarms have been raised during the most recent minute. Each bit is associated with a specific alarm condition according to the following:
- <dl>
- <dt><tt>8</tt>
- <dd>Decoder alarm. A majority of repetitions for at least one digit of the timecode fails to agree.
- <dt><tt>4</tt>
- <dd>Timestamp alarm. Fewer than 20 timestamps have been determined.
- <dt><tt>2</tt>
- <dd>Format alarm. The majority timecode contains invalid bit combinations.
- <dt><tt>1</tt>
- <dd>Frame alarm. A framing or format error occurred on at least one burst during the minute.
- </dl>
- <p>It is important to note that one or more of the above alarms does not necessarily indicate a clock error, but only that the decoder has detected a condition that may in future result in an error.</p>
- <dt><tt>yyyy ddd hh:mm:ss.fff</tt>
- <dd>The timecode format itself is self explanatory. Note that the Gregorian year is decoded directly from the transmitted timecode.
- <dt><tt>l</tt>
- <dd>The leap second warning is normally space, but changes to <tt>L</tt> if a leap second is to occur at the end of the month of June or December.
- <dt><tt>d</tt>
- <dd>The DST code for Canada encodes the state for all provinces.
- <dt><tt>dut</tt>
- <dd>The DUT sign and magnitude shows the current UT1 offset relative to the displayed UTC time, in deciseconds.
- <dt><tt>lset</tt>
- <dd>Before the clock is set, the interval since last set is the number of minutes since the program was started; after the clock is set, this is number of minutes since the time was last verified relative to the broadcast signal.
- <dt><tt>agc</tt>
- <dd>The audio gain shows the current codec gain setting in the range 0 to 255. Ordinarily, the receiver audio gain control or IRIG level control should be set for a value midway in this range.
- <dt><tt>rfrq</tt>
- <dd>The current radio frequency, if the CI-V interface is active, or 'X' if not.
- <dt><tt>bcnt</tt>
- <dd>The number of format A bursts received during the most recent minute bursts were received.
- <dt><tt>dist</tt>
- <dd>The minimum decoding distance determined during the most recent minute bursts were received.
- <dt><tt>tsmp</tt>
- <dd>The number of timestamps determined during the most recent minute bursts were received.
- </dl>
- <h4>Modes</h4>
- <p>The <tt>mode</tt> keyword of the <tt>server</tt> configuration command specifies the ICOM ID select code. A missing or zero argument disables the CI-V interface. Following are the ID select codes for the known radios.</p>
- <table width="100%" cols="6">
- <tr>
- <td>Radio</td>
- <td>Hex</td>
- <td>Decimal</td>
- <td>Radio</td>
- <td>Hex</td>
- <td>Decimal</td>
- </tr>
- <tr>
- <td>IC725</td>
- <td>0x28</td>
- <td>40</td>
- <td>IC781</td>
- <td>0x26</td>
- <td>38</td>
- </tr>
- <tr>
- <td>IC726</td>
- <td>0x30</td>
- <td>48</td>
- <td>R7000</td>
- <td>0x08</td>
- <td>8</td>
- </tr>
- <tr>
- <td>IC735</td>
- <td>0x04</td>
- <td>4</td>
- <td>R71</td>
- <td>0x1A</td>
- <td>26</td>
- </tr>
- <tr>
- <td>IC751</td>
- <td>0x1c</td>
- <td>28</td>
- <td>R7100</td>
- <td>0x34</td>
- <td>52</td>
- </tr>
- <tr>
- <td>IC761</td>
- <td>0x1e</td>
- <td>30</td>
- <td>R72</td>
- <td>0x32</td>
- <td>50</td>
- </tr>
- <tr>
- <td>IC765</td>
- <td>0x2c</td>
- <td>44</td>
- <td>R8500</td>
- <td>0x4a</td>
- <td>74</td>
- </tr>
- <tr>
- <td>IC775</td>
- <td>0x46</td>
- <td>68</td>
- <td>R9000</td>
- <td>0x2a</td>
- <td>42</td>
- </tr>
- </table>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the propagation delay for CHU (45:18N 75:45N), in seconds and fraction, with default 0.0.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Not used by this driver.
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>CHU</tt>.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>When the audio driver is compiled, this flag selects the audio input port, where 0 is the mike port (default) and 1 is the line-in port. It does not seem useful to select the compact disc player port.
- <dt><tt>flag3 0 | 1</tt>
- <dd>When the audio driver is compiled, this flag enables audio monitoring of the input signal. For this purpose, the speaker volume must be set before the driver is started.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Enable verbose <tt>clockstats</tt> recording if set.
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ The fields beginning with <tt>year</tt> and extending through <tt>dut</tt> are decoded from the received data and are in fixed-length format. The <tt>agc</tt> and <tt>lset</tt> fields, as well as the following driver-dependent fields, are in variable-length format.
+ <dl>
+ <dt><tt>s</tt>
+ <dd>The sync indicator is initially <tt>?</tt> before the clock is set, but turns to space when the clock is correctly set.
+ <dt><tt>q</tt>
+ <dd>The quality character is a four-bit hexadecimal code showing which alarms have been raised during the most recent minute. Each bit is associated with a specific alarm condition according to the following:
+ <dl>
+ <dt><tt>8</tt>
+ <dd>Decoder alarm. A majority of repetitions for at least one digit of the timecode fails to agree.
+ <dt><tt>4</tt>
+ <dd>Timestamp alarm. Fewer than 20 timestamps have been determined.
+ <dt><tt>2</tt>
+ <dd>Format alarm. The majority timecode contains invalid bit combinations.
+ <dt><tt>1</tt>
+ <dd>Frame alarm. A framing or format error occurred on at least one burst during the minute.
+ </dl>
+ <p>It is important to note that one or more of the above alarms does not necessarily indicate a clock error, but only that the decoder has detected a condition that may in future result in an error.</p>
+ <dt><tt>yyyy ddd hh:mm:ss.fff</tt>
+ <dd>The timecode format itself is self explanatory. Note that the Gregorian year is decoded directly from the transmitted timecode.
+ <dt><tt>l</tt>
+ <dd>The leap second warning is normally space, but changes to <tt>L</tt> if a leap second is to occur at the end of the month of June or December.
+ <dt><tt>d</tt>
+ <dd>The DST code for Canada encodes the state for all provinces.
+ <dt><tt>dut</tt>
+ <dd>The DUT sign and magnitude shows the current UT1 offset relative to the displayed UTC time, in deciseconds.
+ <dt><tt>lset</tt>
+ <dd>Before the clock is set, the interval since last set is the number of minutes since the program was started; after the clock is set, this is number of minutes since the time was last verified relative to the broadcast signal.
+ <dt><tt>agc</tt>
+ <dd>The audio gain shows the current codec gain setting in the range 0 to 255. Ordinarily, the receiver audio gain control or IRIG level control should be set for a value midway in this range.
+ <dt><tt>rfrq</tt>
+ <dd>The current radio frequency, if the CI-V interface is active, or 'X' if not.
+ <dt><tt>bcnt</tt>
+ <dd>The number of format A bursts received during the most recent minute bursts were received.
+ <dt><tt>dist</tt>
+ <dd>The minimum decoding distance determined during the most recent minute bursts were received.
+ <dt><tt>tsmp</tt>
+ <dd>The number of timestamps determined during the most recent minute bursts were received.
+ </dl>
+ <h4>Modes</h4>
+ <p>The <tt>mode</tt> keyword of the <tt>server</tt> configuration command specifies the ICOM ID select code. A missing or zero argument disables the CI-V interface. Following are the ID select codes for the known radios.</p>
+ <table width="100%" cols="6">
+ <tr>
+ <td>Radio</td>
+ <td>Hex</td>
+ <td>Decimal</td>
+ <td>Radio</td>
+ <td>Hex</td>
+ <td>Decimal</td>
+ </tr>
+ <tr>
+ <td>IC725</td>
+ <td>0x28</td>
+ <td>40</td>
+ <td>IC781</td>
+ <td>0x26</td>
+ <td>38</td>
+ </tr>
+ <tr>
+ <td>IC726</td>
+ <td>0x30</td>
+ <td>48</td>
+ <td>R7000</td>
+ <td>0x08</td>
+ <td>8</td>
+ </tr>
+ <tr>
+ <td>IC735</td>
+ <td>0x04</td>
+ <td>4</td>
+ <td>R71</td>
+ <td>0x1A</td>
+ <td>26</td>
+ </tr>
+ <tr>
+ <td>IC751</td>
+ <td>0x1c</td>
+ <td>28</td>
+ <td>R7100</td>
+ <td>0x34</td>
+ <td>52</td>
+ </tr>
+ <tr>
+ <td>IC761</td>
+ <td>0x1e</td>
+ <td>30</td>
+ <td>R72</td>
+ <td>0x32</td>
+ <td>50</td>
+ </tr>
+ <tr>
+ <td>IC765</td>
+ <td>0x2c</td>
+ <td>44</td>
+ <td>R8500</td>
+ <td>0x4a</td>
+ <td>74</td>
+ </tr>
+ <tr>
+ <td>IC775</td>
+ <td>0x46</td>
+ <td>68</td>
+ <td>R9000</td>
+ <td>0x2a</td>
+ <td>42</td>
+ </tr>
+ </table>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the propagation delay for CHU (45:18N 75:45N), in seconds and fraction, with default 0.0.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>Not used by this driver.
+ <dt><tt>stratum <i>number</i></tt>
+ <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
+ <dt><tt>refid <i>string</i></tt>
+ <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default <tt>CHU</tt>.
+ <dt><tt>flag1 0 | 1</tt>
+ <dd>Not used by this driver.
+ <dt><tt>flag2 0 | 1</tt>
+ <dd>When the audio driver is compiled, this flag selects the audio input port, where 0 is the mike port (default) and 1 is the line-in port. It does not seem useful to select the compact disc player port.
+ <dt><tt>flag3 0 | 1</tt>
+ <dd>When the audio driver is compiled, this flag enables audio monitoring of the input signal. For this purpose, the speaker volume must be set before the driver is started.
+ <dt><tt>flag4 0 | 1</tt>
+ <dd>Enable verbose <tt>clockstats</tt> recording if set.
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/driver8.html b/contrib/ntp/html/drivers/driver8.html
index ebc5e25..fc12f33 100644
--- a/contrib/ntp/html/drivers/driver8.html
+++ b/contrib/ntp/html/drivers/driver8.html
@@ -2,135 +2,278 @@
<html>
- <head>
- <title>Generic Reference Driver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
-
- <body>
- <h3>Generic Reference Driver</h3>
- <hr>
- <h4>Synopsis</h4>
- Address: 127.127.8.<i>u</i><br>
- Reference ID: <tt>PARSE</tt><br>
- Driver ID: <tt>GENERIC</tt><br>
- Serial Port: <tt>/dev/refclock-<i>u</i></tt>; TTY mode according to clock type
- <h4>Description</h4>
- <p>The timecode of these receivers is sampled via a STREAMS module in the kernel (The STREAMS module has been designed for use with SUN Systems under SunOS 4.1.x or Solaris 2.3 - 2.6. It can be linked directly into the kernel or loaded via the loadable driver mechanism). This STREAMS module can be adapted to be able to convert different time code formats. If the daemon is compiled without the STREAM definition synchronization will work without the Sun streams module, though accuracy is significantly degraded. This feature allows to use PARSE also on non Sun machines.</p>
- <p>The actual receiver status is mapped into various synchronization states generally used by receivers. The STREAMS module is configured to interpret the time codes of DCF C51, PZF535, PZF509, GPS166, Trimble SV6 GPS, ELV DCF7000, Schmid, Wharton 400A and low cost receivers (see list below).</p>
- <p>The reference clock support in ntp contains the necessary configuration tables for those receivers. In addition to supporting several different clock types and 4 devices, the generation a a PPS signal is also provided as an configuration option. The PPS configuration option uses the receiver generated time stamps for feeding the PPS loopfilter control for much finer clock synchronization.</p>
- <p>CAUTION: The PPS configuration option is different from the hardware PPS signal, which is also supported (see below), as it controls the way ntpd is synchronized to the reference clock, while the hardware PPS signal controls the way time offsets are determined.</p>
- <p>The use of the PPS option requires receivers with an accuracy of better than 1ms.</p>
- <p>Fudge factors</p>
- <p>Only two fudge factors are utilized. The time1 fudge factor defines the phase offset of the synchronization character to the actual time. On the availability of PPS information the time2 fudge factor defines the skew between the PPS time stamp and the receiver timestamp of the PPS signal. This parameter is usually zero, as usually the PPS signal is believed in time and OS delays should be corrected in the machine specific section of the kernel driver. time2 needs only be set when the actual PPS signal is delayed for some reason. The flag1 enables input filtering. This a median filter with continuous sampling. The flag2 selects averaging of the samples remaining after the filtering. Leap second-handling is controlled with the flag3. When set a leap second will be deleted on receipt of a leap second indication from the receiver. Otherwise the leap second will be added, (which is the default). flag3 should never be set. PPS handling is enabled by adding 128 to the mode parameter in the server/peer command.</p>
- <p>ntpq (8)</p>
- <p>timecode variable</p>
- <p>The ntpq program can read clock variables command list several variables. These hold the following information: refclock_time is the local time with the offset to UTC (format HHMM). The currently active receiver flags are listed in refclock_status. Additional feature flags of the receiver are optionally listed in parentheses. The actual time code is listed in timecode. A qualification of the decoded time code format is following in refclock_format. The last piece of information is the overall running time and the accumulated times for the clock event states in refclock_states. When PPS information is present additional variable are available. refclock_ppstime lists then the PPS timestamp and refclock_ppsskew lists the difference between RS232 derived timestamp and the PPS timestamp.</p>
- <p>Currently, eighteen clock types (devices /dev/refclock-0 - /dev/refclock-3) are supported by the PARSE driver.<br>
- A note on the implementations:</p>
- <ul>
- <li>These implementations where mainly done <b><i>WITHOUT</i></b> actual access to the hardware. Thus not all implementations provide full support. The development was done with the help of many souls who had the hardware and where so kind to borrow me their time an patience during the development and debugging cycle. Thus for continued support and quality direct access to the receivers is a big help. Nevertheless i am not prepared to buy these reference clocks - donations to <a href="http://www4.informatik.uni-erlangen.de/%7ekardel">me</a> (<a href="mailto:%20kardel@acm.org">kardel@acm.org</a>) are welcome as long as they work within Europe 8-).
- <p>Verified implementations are:</p>
- <ul>
- <li>RAWDCF variants
- <p>These variants are tested for the decoding with my own homegrown receivers. Interfacing with specific commercial products may involve some fiddeling with cables. Especially commericial RAWDCF receivers have a seemingly unlimited number of ways to draw power from the RS232 port and to encode the DCF77 datastream. You are mainly on your own here unless i have a sample of the receiver.</p>
- <li><a href="http://www.meinberg.de">Meinberg clocks</a>
- <p>These implementations are verified by the Meinberg people themselves and i have access to one of these clocks.</p>
- </ul>
- </ul>
- <p>The pictures below refer to the respective clock and where taken from the vendors web pages. They are linked to the respective vendors.</p>
- <ul>
- <li><b><tt>server 127.127.8.0-3 mode 0</tt></b>
- <p><b><tt><a href="http://www.meinberg.de">Meinberg </a>PZF535/<a href="http://www.meinberg.de/english/products/pzf509.htm">PZF509 receiver</a> (FM demodulation/TCXO / 50us)</tt></b><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 1</tt></b>
- <p><b><tt><a href="http://www.meinberg.de">Meinberg </a>PZF535/<a href="http://www.meinberg.de/english/products/pzf509.htm">PZF509 receiver</a> (FM demodulation/OCXO / 50us)</tt></b><br>
- <a href="http://www.meinberg.de/english/products/pzf509.htm"><img src="../pic/pzf509.jpg" alt="BILD PZF509" height="300" width="260" align="TEXTTOP"></a><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 2</tt></b>
- <p><b><tt><a href="http://www.meinberg.de">Meinberg </a>DCF U/A 31/<a href="http://www.meinberg.de/english/products/c51.htm">DCF C51 receiver</a> (AM demodulation / 4ms)</tt></b><br>
- <a href="http://www.meinberg.de/english/products/c51.htm"><img src="../pic/c51.jpg" alt="BILD C51" height="180" width="330" align="TEXTTOP"></a><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 3</tt></b>
- <p><b><tt><a href="http://www.elv.de">ELV</a> DCF7000 (sloppy AM demodulation / 50ms)</tt></b><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 4</tt></b>
- <p><b><tt>Walter Schmid DCF receiver Kit (AM demodulation / 1ms)</tt></b><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 5</tt></b>
- <p><b><tt>RAW DCF77 100/200ms pulses (Conrad DCF77 receiver module / 5ms)</tt></b><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 6</tt></b>
- <p><b><tt>RAW DCF77 100/200ms pulses (TimeBrick DCF77 receiver module / 5ms)</tt></b><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 7</tt></b>
- <p><b><tt><a href="http://www.meinberg.de">Meinberg </a><a href="http://www.meinberg.de/english/products/gps167.htm">GPS166/GPS167 receiver</a> (GPS / &lt;&lt;1us)</tt></b><br>
- <a href="http://www.meinberg.de/english/products/gps167.htm"><img src="../pic/gps167.jpg" alt="BILD GPS167" height="300" width="280" align="TEXTTOP"></a><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 8</tt></b>
- <p><b><tt><a href="http://www.igel.de">IGEL</a> <a href="http://www.igel.de/eigelmn.html">clock</a></tt></b><br>
- <a href="http://www.igel.de/eigelmn.html"><img src="../pic/igclock.gif" height="174" width="200"></a><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 9</tt></b>
- <p><b><tt><a href="http://www.trimble.com">Trimble</a> <a href="http://www.trimble.com/cgi/omprod.cgi/pd_om011.html">SVeeSix GPS receiver</a>TAIP protocol (GPS / &lt;&lt;1us)</tt></b><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 10</tt></b>
- <p><b><tt><a href="http://www.trimble.com">Trimble</a> <a href="http://www.trimble.com/cgi/omprod.cgi/pd_om011.html">SVeeSix GPS receiver</a> TSIP protocol (GPS / &lt;&lt;1us) (no kernel support yet)</tt></b><br>
- <a href="http://www.trimble.com/cgi/omprod.cgi/pd_om011.html"><img src="../pic/pd_om011.gif" alt="SVeeSix-CM3" height="100" width="420" align="TEXTTOP" border="0"></a><br>
- <a href="http://www.trimble.com/cgi/omprod.cgi/pd_om006.html"><img src="../pic/pd_om006.gif" alt="Lassen-SK8" height="100" width="420" border="0"></a><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 11</tt></b>
- <p><b><tt>Radiocode Clocks Ltd RCC 8000 Intelligent Off-Air Master Clock support </tt></b><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 12</tt></b>
- <p><b><tt><a href="http://www.hopf-time.com">HOPF</a> <a href="http://www.hopf-time.com/kart6021.html">Funkuhr 6021</a></tt></b><br>
- <a href="http://www.hopf-time.com/engl/kart6021.html"><img src="../pic/fg6021.gif" alt="DCF77-Interface Board" height="207" width="238" align="TEXTTOP"></a><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 13</tt></b>
- <p><b><tt>Diem's Computime Radio Clock</tt></b><br>
- </p>
- <li><b><tt>server 127.127.8.0-3 mode 14</tt></b>
- <p><b><tt>RAWDCF receiver (DTR=high/RTS=low)</tt></b></p>
- <li><b><tt>server 127.127.8.0-3 mode 15</tt></b>
- <p><b><tt>WHARTON 400A Series Clocks with a 404.2 Serial Interface</tt></b></p>
- <li><b><tt>server 127.127.8.0-3 mode 16</tt></b>
- <p><b><tt>RAWDCF receiver (DTR=low/RTS=high) </tt></b></p>
- <li><b><tt>server 127.127.8.0-3 mode 17</tt></b>
- <p><b><tt>VARITEXT Receiver (MSF) </tt></b></p>
- </ul>
- <p>Actual data formats and set-up requirements of the various clocks can be found in <a href="../parsedata.html">NTP PARSE clock data formats</a>.</p>
- <p>The reference clock support carefully monitors the state transitions of the receiver. All state changes and exceptional events such as loss of time code transmission are logged via the syslog facility. Every hour a summary of the accumulated times for the clock states is listed via syslog.</p>
- <p>PPS support is only available when the receiver is completely synchronized. The receiver is believed to deliver correct time for an additional period of time after losing synchronizations, unless a disruption in time code transmission is detected (possible power loss). The trust period is dependent on the receiver oscillator and thus a function of clock type. This is one of the parameters in the clockinfo field of the reference clock implementation. This parameter cannot be configured by ntpdc.</p>
- <p>In addition to the PPS loopfilter control a true PPS hardware signal can be applied on Sun Sparc stations via the CPU serial ports on the CD pin. This signal is automatically detected and will be used for offset calculation. The input signal must be the time mark for the following time code. (The edge sensitivity can be selected - look into the appropriate kernel/parsestreams.c for details). Meinberg receivers can be connected by feeding the PPS pulse of the receiver via a 1488 level converter to Pin 8 (CD) of a Sun serial zs-port. To select PPS support the STREAMS driver for PARSE must be loaded and the mode parameter ist the mode value of above plus 128. If 128 is not added to the mode value PPS will be detected to be available but it will not be used. For PPS to be used you MUST add 128 to the mode parameter.</p>
- <p>For the Meinberg GPS166/GPS167 receiver is also a special firmware release available (Uni-Erlangen). This release should be used for proper operation.</p>
- <p>The raw DCF77 pulses can be fed via a level converter directly into Pin 3 (Rx) of the Sun. The telegrams will be decoded an used for synchronization. AM DCF77 receivers are running as low as $25. The accuracy is dependent on the receiver and is somewhere between 2ms (expensive) to 10ms (cheap). Upon bad signal reception of DCF77 synchronizations will cease as no backup oscillator is available as usually found in other reference clock receivers. So it is important to have a good place for the DCF77 antenna. For transmitter shutdowns you are out of luck unless you have other NTP servers with alternate time sources available.</p>
- <h4>Monitor Data</h4>
- <p>Clock states statistics are written hourly the the syslog service. Online information can be found by examining the clock variable via the ntpq cv command.</p>
- <h4>Fudge Factors</h4>
- <dl>
- <dt><tt>time1 <i>time</i></tt>
- <dd>Specifies the time offset calibration factor, in seconds and fraction, with default depending on clock type.
- <dt><tt>time2 <i>time</i></tt>
- <dd>Specifies the offset if the PPS signal to the actual time. (PPS fine tuning).
- <dt><tt>stratum <i>number</i></tt>
- <dd>Specifies the driver stratum, in decimal from 0 to 15, with default 0.
- <dt><tt>refid <i>string</i></tt>
- <dd>Specifies the driver reference identifier, an ASCII string from one to four characters, with default according to current clock type.
- <dt><tt>flag1 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag2 0 | 1</tt>
- <dd>Not used by this driver.
- <dt><tt>flag3 0 | 1</tt>
- <dd>delete next leap second instead of adding it.
- <dt><tt>flag4 0 | 1</tt>
- <dd>Delete next leap second instead of adding it - flag will be re- defined soon - so don't use it. Statistics are provided by more common means (syslog, clock variable via ntpq)
- </dl>
- <h4>Making your own PARSE clocks</h4>
- <p>The parse clock mechanismis deviated from the way other ntp reference clocks work. For a short description how to build parse reference clocks see <a href="../parsenew.html">making PARSE clocks</a></p>
- <p>Additional Information</p>
- <p><a href="../refclock.html">Reference Clock Drivers</a></p>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Generic Reference Driver</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
+
+ <body>
+ <h3>Generic Reference Driver</h3>
+ <hr>
+ <h4>Synopsis</h4>
+ Address: 127.127.8.<i>u</i><br>
+ Reference ID: <tt>PARSE</tt><br>
+ Driver ID: <tt>GENERIC</tt><br>
+ Serial Port: <tt>/dev/refclock-<i>u</i></tt>; TTY mode according to clock type<br>
+ PPS device: <tt>/dev/refclockpps-<i>u</i></tt>; alternate PPS device (if not available via the serial port)
+ <h4>Description</h4>
+ The PARSE driver supports 20 different clock types/configurations. PARSE is actually a multi-clock driver.<br>
+ <br>
+ <p>The actual receiver status is mapped into various synchronization states generally used by receivers. The driver is configured to interpret the time codes of Meinberg DCF77 AM receivers, DCF77 FM receivers, Meinberg GPS16x/17x receivers, Trimble SV6 GPS, ELV DCF7000, Schmid, Wharton 400A and low cost receivers (see <a href="#clocklist">list below</a>).</p>
+ <p>The reference clock support in NTP contains the necessary configuration tables for those receivers. In addition to supporting several different clock types and up to 4 devices, the processing of a PPS signal is also provided as a configuration option. The PPS configuration option uses the receiver-generated time stamps for feeding the PPS loopfilter control for much finer clock synchronization.</p>
+ <p>CAUTION: The PPS configuration option is different from the hardware PPS signal, which is also supported (see below), as it controls the way ntpd is synchronized to the reference clock, while the hardware PPS signal controls the way time offsets are determined.</p>
+ <p>The use of the PPS option requires receivers with an accuracy of better than 1ms.</p>
+ <h4>Timecode variables listed by ntpq (8)</h4>
+ <p>The ntpq program can read and display several clock variables. These hold the following information:</p>
+ <dl>
+ <dt><tt>refclock_format</tt></dt>
+ <dd>A qualification of the decoded time code format.</dd>
+ <dt><tt>refclock_states</tt></dt>
+ <dd>The overall running time and the accumulated times for the clock event states.</dd>
+ <dt><tt>refclock_status</tt></dt>
+ <dd>Lists the currently active receiver flags. Additional feature flags for the receiver are optionally listed in parentheses.</dd>
+ <dt><tt>refclock_time</tt></dt>
+ <dd>The local time with the offset to UTC (format HHMM).</dd>
+ <dt><tt>timecode</tt></dt>
+ <dd>The actual time code.</dd>
+ </dl>
+ <p>If PPS information is present, additional variables are available:</p>
+ <dl>
+ <dt><tt>refclock_ppsskew</tt></dt>
+ <dd>The difference between the RS-232-derived timestamp and the PPS timestamp.</dd>
+ <dt><tt>refclock_ppstime</tt></dt>
+ <dd>The PPS timestamp.</dd>
+ </dl>
+ <h4>Supported Devices</h4>
+ <p>Currently, nineteen clock types (devices /dev/refclock-0 - /dev/refclock-3) are supported by the PARSE driver.<br>
+ A note on the implementations:</p>
+ <ul>
+ <li>These implementations were mainly done without actual access to the hardware, thus not all implementations provide full support. The development was done with the help of many kind souls who had the hardware and kindly lent me their time and patience during the development and debugging cycle. Thus for continued support and quality, direct access to the receivers is a big help. Nevertheless I am not prepared to buy these reference clocks - donations to (<a href="mailto:kardel <AT> ntp.org">kardel &lt;AT&gt; ntp.org</a>) are welcome as long as they work within Europe 8-).
+ <p>Verified implementations are:</p>
+ <ul>
+ <li>RAWDCF variants
+ <p>These variants have been tested for correct decoding with my own homegrown receivers. Interfacing with specific commercial products may involve some fiddling with cables. In particular, commercial RAWDCF receivers have a seemingly unlimited number of ways to draw power from the RS-232 port and to encode the DCF77 datastream. You are mainly on your own here unless I have a sample of the receiver.</p>
+ <li><a href="http://www.meinberg.de">Meinberg clocks</a>
+ <p>These implementations have been verified by the Meinberg people themselves and I have access to one of these clocks.</p>
+ </ul>
+ </ul>
+ <p>The pictures below have been taken from and are linked to the vendors' web pages.</p>
+ <a name="clocklist"></a>
+ <ul>
+ <li><b><tt>server 127.127.8.0-3 mode 0</tt></b>
+ <p><b><tt><a href="http://www.meinberg.de">Meinberg</a> <a href="http://www.meinberg.de/english/products/timesource.htm#dcf---freq_sync">PZF5xx receiver family</a> (FM demodulation/TCXO / 50&mu;s)</tt></b><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 1</tt></b>
+ <p><b><tt><a href="http://www.meinberg.de">Meinberg</a> <a href="http://www.meinberg.de/english/products/timesource.htm#dcf---freq_sync">PZF5xx receiver family</a> (FM demodulation/OCXO / 50&mu;s)</tt></b><br>
+ <a href="http://www.meinberg.de/english/products/pzf-eurocard.htm"><img src="../pic/pzf511.jpg" alt="Image PZF511" height="300" width="260" align="top" border="0"></a><br>
+ <br></p>
+
+ <li><a name="mode2"></a><b><tt>server 127.127.8.0-3 mode 2</tt></b>
+ <p><b><tt><a href="http://www.meinberg.de">Meinberg</a> <a href="http://www.meinberg.de/english/products/c51.htm">DCF C51 receiver and similar</a> (AM demodulation / 4ms)</tt></b><br>
+ <a href="http://www.meinberg.de/english/products/c51.htm"><img src="../pic/c51.jpg" alt="Image C51" height="239" width="330" align="top" border="0"></a><br>
+ </p>
+ <p>This mode expects the Meinberg standard time string format with 9600/7E2.</p>
+ <p><b>Note:</b> mode 2 must also be used for <a href="http://www.meinberg.de/english/products/formfactor.htm#slot_card">Meinberg PCI cards</a> under Linux, e.g. <a href="http://www.meinberg.de/english/products/gps-pcicard.htm">the GPS PCI card</a> or <a href="http://www.meinberg.de/english/products/dcf-pcicard.htm">the DCF77 PCI card</a>. Please note the <a href="http://www.meinberg.de/english/sw/#linux">Meinberg Linux driver</a> must be installed. That driver emulates a refclock device in order to allow ntpd to access those cards. For details, please refer to the README file that comes with the Meinberg driver package.<br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 3</tt></b>
+ <p><b><tt><a href="http://www.elv.de">ELV</a> DCF7000 (sloppy AM demodulation / 50ms)</tt></b><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 4</tt></b>
+ <p><b><tt>Walter Schmid DCF receiver Kit (AM demodulation / 1ms)</tt></b><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 5</tt></b>
+ <p><b><tt>RAW DCF77 100/200ms pulses (Conrad DCF77 receiver module / 5ms)</tt></b><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 6</tt></b>
+ <p><b><tt>RAW DCF77 100/200ms pulses (TimeBrick DCF77 receiver module / 5ms)</tt></b><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 7</tt></b>
+ <p><b><tt><a href="http://www.meinberg.de">Meinberg</a> <a href="http://www.meinberg.de/english/products/timesource.htm#gps---freq_sync">GPS16x/GPS17x receivers</a> (GPS / &lt;&lt;1&mu;s)</tt></b><br>
+ <a href="http://www.meinberg.de/english/products/gps-eurocard.htm"><img src="../pic/gps167.jpg" alt="Image GPS167" height="300" width="280" align="top" border="0"></a><br>
+ </p>
+ <p>This mode expects either the University of Erlangen time string format or the Meinberg standard time string format at 19200/8N1.</p>
+ <p>The University of Erlangen format is preferred. Newer Meinberg GPS receivers can be configured to transmit that format; for older devices, a special firmware version may be available.</p>
+ <p>In this mode some additional GPS receiver status information is also read. However, this requires a point-to-point connection. <a href="#mode18">Mode 18</a> should be used if the device is accessed by a multidrop connection.</p>
+ <p><b>Note:</b> mode 7 must not be used with Meinberg PCI cards; use <a href="#mode2">mode 2</a> instead.<br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 8</tt></b>
+ <p><b><tt><a href="http://www.igel.de">IGEL</a> <a href="http://www.igel.de/eigelmn.html">clock</a></tt></b><br>
+ <a href="http://www.igel.de/eigelmn.html"><img src="../pic/igclock.gif" alt="Image IGEL clock" height="174" width="200" border="0"></a><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 9</tt></b>
+ <p><b><tt><a href="http://www.trimble.com">Trimble</a> <a href="http://www.trimble.com/cgi/omprod.cgi/pd_om011.html">SVeeSix GPS receiver</a> TAIP protocol (GPS / &lt;&lt;1&mu;s)</tt></b><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 10</tt></b>
+ <p><b><tt><a href="http://www.trimble.com">Trimble</a> <a href="http://www.trimble.com/cgi/omprod.cgi/pd_om011.html">SVeeSix GPS receiver</a> TSIP protocol (GPS / &lt;&lt;1&mu;s) (no kernel support yet)</tt></b><br>
+ <a href="http://www.trimble.com/cgi/omprod.cgi/pd_om011.html"><img src="../pic/pd_om011.gif" alt="Image SVeeSix-CM3" height="100" width="420" align="top" border="0"></a><br>
+ <a href="http://www.trimble.com/cgi/omprod.cgi/pd_om006.html"><img src="../pic/pd_om006.gif" alt="Image Lassen-SK8" height="100" width="420" border="0"></a><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 11</tt></b>
+ <p><b><tt>Radiocode Clocks Ltd RCC 8000 Intelligent Off-Air Master Clock support </tt></b><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 12</tt></b>
+ <p><b><tt><a href="http://www.hopf-time.com">HOPF</a> <a href="http://www.hopf-time.com/kart6021.html">Funkuhr 6021</a></tt></b><br>
+ <a href="http://www.hopf-time.com/engl/kart6021.html"><img src="../pic/fg6021.gif" alt="Image DCF77 Interface Board" height="207" width="238" align="top" border="0"></a><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 13</tt></b>
+ <p><b><tt>Diem's Computime Radio Clock</tt></b><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 14</tt></b>
+ <p><b><tt>RAWDCF receiver (DTR=high/RTS=low)</tt></b><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 15</tt></b>
+ <p><b><tt>WHARTON 400A Series Clocks with a 404.2 Serial Interface</tt></b><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 16</tt></b>
+ <p><b><tt>RAWDCF receiver (DTR=low/RTS=high) </tt></b><br>
+ <br></p>
+
+ <li><b><tt>server 127.127.8.0-3 mode 17</tt></b>
+ <p><b><tt>VARITEXT Receiver (MSF) </tt></b><br>
+ <br></p>
+
+ <li><a name="mode18"></a><b><tt>server 127.127.8.0-3 mode 18</tt></b>
+ <p><b><tt><a href="http://www.meinberg.de">Meinberg </a><a href="http://www.meinberg.de/english/products/timesource.htm#gps---freq_sync">GPS16x/GPS17x receivers</a> (GPS / &lt;&lt;1&mu;s)</tt></b><br>
+ </p>
+ <p>This mode works without additional data communication (version, GPS status etc.) and thus should be used with multidrop, heterogeneous multiclient operation.</p>
+ <p><b>Note:</b> mode 18 must not be used with Meinberg PCI cards, use mode 2 instead.<br>
+ <br></p>
+ <li><b><tt>server 127.127.8.0-3 mode 19</tt></b>
+ <p><b><tt>Gude Analog- und Digitalsystem GmbH 'Expert mouseCLOCK USB v2.0'</tt></b><br>
+ <br></p>
+
+ </ul>
+ <p>Actual data formats and setup requirements of the various clocks can be found in <a href="../parsedata.html">NTP PARSE clock data formats</a>.</p>
+ <h4>Operation</h4>
+ <p>The reference clock support software carefully monitors the state transitions of the receiver. All state changes and exceptional events (such as loss of time code transmission) are logged via the syslog facility. Every hour a summary of the accumulated times for the clock states is listed via syslog.</p>
+ <p>PPS support is only available when the receiver is completely synchronized. The receiver is believed to deliver correct time for an additional period of time after losing synchronization, unless a disruption in time code transmission is detected (possible power loss). The trust period is dependent on the receiver oscillator and thus is a function of clock type.</p>
+ <p>Raw DCF77 pulses can be fed via a level converter to the RXD pin of an RS-232 serial port (pin 3 of a 25-pin connector or pin 2 of a 9-pin connector). The telegrams are decoded and used for synchronization. DCF77 AM receivers can be bought for as little as $25. The accuracy is dependent on the receiver and is somewhere between 2ms (expensive) and 10ms (cheap). Synchronization ceases when reception of the DCF77 signal deteriorates, since no backup oscillator is available as usually found in other reference clock receivers. So it is important to have a good place for the DCF77 antenna. During transmitter shutdowns you are out of luck unless you have other NTP servers with alternate time sources available.</p>
+ <p>In addition to the PPS loopfilter control, a true PPS hardware signal can be utilized via the PPSAPI interface. PPS pulses are usually fed via a level converter to the DCD pin of an RS-232 serial port (pin 8 of a 25-pin connector or pin 1 of a 9-pin connector). To select PPS support, the mode parameter is the mode value as above plus 128. If 128 is not added to the mode value, PPS will be detected to be available but will not be used.
+ </p>
+ <h4>Hardware PPS support<br>
+ </h4>
+ <p>For PPS to be used, add 128 to the mode parameter.</p>
+ <p>If the PPS signal is fed in from a device different from the device providing the serial communication (/dev/refclock-{0..3}), this device is configured as /dev/refclockpps-{0..3}. This allows the PPS information to be fed in e.g. via the parallel port (if supported by the underlying operation system) and the date/time telegrams to be handled via the serial port.</p>
+ <h4>Monitor Data</h4>
+ <p>Clock state statistics are written hourly to the syslog service. Online information can be found by examining the clock variables via the <code>ntpq cv</code> command.<br>
+ Some devices have quite extensive additional information (GPS16x/GPS17x, Trimble). The driver reads out much of the internal GPS data
+ and makes it accessible via clock variables. To find out about additional variable names, query for the clock_var_list variable on
+ a specific clock association as shown below.
+ </p>
+ <p>First let <code>ntpq</code> display the table of associations:</p>
+ <pre>
+ ntpq&gt; as
+ ind assID status conf reach auth condition last_event cnt
+ ===========================================================
+ 1 19556 9154 yes yes none falsetick reachable 5
+ 2 19557 9435 yes yes none candidat clock expt 3
+ 3 19558 9714 yes yes none pps.peer reachable 1
+ </pre>
+ <p>Then switch to raw output. This may be required because of display limitations in ntpq/ntpd - so large lists need to be retrieved in several queries.</p>
+ <pre>
+ ntpq&gt; raw
+ Output set to raw
+ </pre>
+ <p>Use the cv command to read the list of clock variables of a selected association:</p>
+ <pre>
+ ntpq&gt; cv 19557 clock_var_list
+ </pre>
+ <p>The long output of the command above looks similar to:</p>
+ <pre>
+ assID=19557 status=0x0000,
+ clock_var_list=&quot;type,timecode,poll,noreply,badformat,baddata,fudgetime1,
+ fudgetime2,stratum,refid,flags,device,clock_var_list,refclock_time,refclock_status,
+ refclock_format,refclock_states,refclock_id,refclock_iomode,refclock_driver_version,
+ meinberg_gps_status,gps_utc_correction,gps_message,meinberg_antenna_status,gps_tot_51,
+ gps_tot_63,gps_t0a,gps_cfg[1],gps_health[1],gps_cfg[2],gps_health[2],gps_cfg[3],
+ gps_health[3],gps_cfg[4],gps_health[4],gps_cfg[5]&quot;
+ </pre>
+ <p>Then use the cv command again to list selected clock variables. The following command must be entered as a single line:</p>
+ <pre>
+ ntpq&gt; cv 19557 refclock_status,refclock_format,refclock_states,refclock_id,
+ refclock_iomode,refclock_driver_version,meinberg_gps_status,gps_utc_correction,
+ gps_message,meinberg_antenna_status,gps_tot_51,gps_tot_63,gps_t0a,gps_cfg[1],
+ gps_health[1],gps_cfg[2],gps_health[2],gps_cfg[3],gps_health[3],gps_cfg[4],
+ gps_health[4],gps_cfg[5]
+ </pre>
+ <p>The output of the command above is wrapped around depending on the screen width and looks similar to:</p>
+ <pre>
+ status=0x0003,
+ refclock_status=&quot;UTC DISPLAY; TIME CODE; PPS; POSITION; (LEAP INDICATION;
+ PPS SIGNAL; POSITION)&quot;,
+ refclock_format=&quot;Meinberg GPS Extended&quot;,
+ refclock_states=&quot;*NOMINAL: 21:21:36 (99.99%); FAULT: 00:00:03 (0.00%);
+ running time: 21:21:39&quot;,
+ refclock_id=&quot;GPS&quot;, refclock_iomode=&quot;normal&quot;,
+ refclock_driver_version=&quot;refclock_parse.c,v 4.77 2006/08/05 07:44:49
+ kardel RELEASE_20060805_A&quot;,
+ meinberg_gps_status=&quot;[0x0000] &lt;OK&gt;&quot;,
+ gps_utc_correction=&quot;current correction 14 sec, last correction
+ on c7619a00.00000000 Sun, Jan 1 2006 0:00:00.000&quot;,
+ gps_message=&quot;/PFU3SOP-4WG14EPU0V1KA&quot;,
+ meinberg_antenna_status=&quot;RECONNECTED on 2006-07-18 08:13:20.0000000 (+0000)
+ UTC CORR, LOCAL TIME, reconnect clockoffset +0.0000000 s,
+ disconnect time 0000-00-00 00:00:00.0000000 (+0000) &quot;,
+ gps_tot_51=&quot;week 1400 + 3 days + 42300.0000000 sec&quot;,
+ gps_tot_63=&quot;week 1400 + 3 days + 42294.0000000 sec&quot;,
+ gps_t0a=&quot;week 1400 + 5 days + 71808.0000000 sec&quot;,
+ gps_cfg[1]=&quot;[0x9] BLOCK II&quot;, gps_health[1]=&quot;[0x0] OK;SIGNAL OK&quot;,
+ gps_cfg[2]=&quot;[0x0] BLOCK I&quot;, gps_health[2]=&quot;[0x3f] PARITY;MULTIPLE ERRS&quot;,
+ gps_cfg[3]=&quot;[0x9] BLOCK II&quot;, gps_health[3]=&quot;[0x0] OK;SIGNAL OK&quot;,
+ gps_cfg[4]=&quot;[0x9] BLOCK II&quot;, gps_health[6]=&quot;[0x0] OK;SIGNAL OK&quot;,
+ gps_cfg[5]=&quot;[0x9] BLOCK II&quot;
+ </pre>
+ <h4>Fudge Factors</h4>
+ <dl>
+ <dt><tt>time1 <i>time</i></tt>
+ <dd>Specifies the time offset calibration factor, in seconds and fraction. The default value depends on the clock type.
+ <dt><tt>time2 <i>time</i></tt>
+ <dd>
+ If flag1 is 0, time2 specifies the offset of the PPS signal from the actual time (PPS fine tuning).
+ <dd>
+ If flag1 is 1, time2 specifies the number of seconds a receiver with a premium local oscillator can be trusted after losing synchronisation.
+ <dt><tt>stratum <i>stratum</i></tt>
+ <dd>The stratum for this reference clock.
+ <dt><tt>refid <i>refid</i></tt>
+ <dd>The refid for this reference clock.
+ </dl>
+ <dl>
+ <dt><tt>flag1 { 0 | 1 }</tt>
+ <dd>If 0, the fudge factor <tt>time2</tt> refers to the PPS offset.
+ <dd>If 1, <tt>time2</tt> refers to the TRUST TIME.
+ <dt><tt>flag2 { 0 | 1 }</tt>
+ <dd>If <tt>flag2</tt> is 1, sample PPS on CLEAR instead of on ASSERT.
+ <dt><tt>flag3 { 0 | 1 }</tt>
+ <dd>If <tt>flag3</tt> is 1, link kernel PPS tracking to this refclock instance.
+ <dt><tt>flag4 { 0 | 1 }</tt>
+ <dd>Delete next leap second instead of adding it. (You'll need to wait a bit for that to happen 8-)
+ </dl>
+ <span style="font-weight: bold;">Note about auxiliary Sun STREAMS modules (SunOS and Solaris):</span><br>
+ <dl>
+ <dt>The timecode of these receivers can be sampled via a STREAMS module in the kernel. (The STREAMS module has been designed for use with Sun systems under SunOS 4.1.x or Solaris 2.3 - 2.8. It can be linked directly into the kernel or loaded via the loadable driver mechanism.) This STREAMS module can be adapted to convert different time code formats. Nowadays the PPSAPI mechanism is usually used.
+ </dl>
+ <h4>Making your own PARSE clocks</h4>
+ <p>The parse clock mechanism deviates from the way other NTP reference clocks work. For a short description of how to build parse reference clocks, see <a href="../parsenew.html">making PARSE clocks</a>.</p>
+ <p>Additional Information</p>
+ <p><a href="../refclock.html">Reference Clock Drivers</a></p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html>
diff --git a/contrib/ntp/html/drivers/driver9.html b/contrib/ntp/html/drivers/driver9.html
index 8a551de..112f2d7 100644
--- a/contrib/ntp/html/drivers/driver9.html
+++ b/contrib/ntp/html/drivers/driver9.html
@@ -6,7 +6,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.01 [en] (Win95; I) [Netscape]">
<title>Magnavox MX4200 GPS Receiver</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
</head>
<body>
@@ -52,7 +52,7 @@
<h4>Additional Information</h4>
<p><a href="../refclock.html">Reference Clock Drivers</a>&nbsp;</p>
<hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
</body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/oncore-shmem.html b/contrib/ntp/html/drivers/oncore-shmem.html
index 91402eb..8942927 100644
--- a/contrib/ntp/html/drivers/oncore-shmem.html
+++ b/contrib/ntp/html/drivers/oncore-shmem.html
@@ -2,63 +2,66 @@
<html>
- <head>
- <title>ONCORE - SHMEM</title>
- <link href="../scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>ONCORE - SHMEM</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Motorola ONCORE - The Shared Memory Interface</h3>
- <hr>
- <h4>Introduction</h4>
- <p>In NMEA mode, the Oncore GPS receiver provides the user with the same information as other GPS receivers. In BINARY mode, it can provide a lot of additional information.</p>
- <p>In particular, you can ask for satellite positions, satellite health, signal levels, the ephemeris and the almanac, and you can set many operational parameters. In the case of the VP, you can get the pseudorange corrections necessary to act as a DGPS base station, and you can see the raw satellite data messages themselves.</p>
- <p>When using the Oncore GPS receiver with NTP, this additional information is usually not available since the receiver is only talking to the oncore driver in NTPD. To make this information available for use in other programs, (say graphic displays of satellites positions, plots of SA, etc.), a shared memory interface (SHMEM) has been added to the refclock_oncore driver on those operating systems that support shared memory.</p>
- <p>To make use of this information you will need an Oncore Reference Manual for the Oncore GPS receiver that you have. The Manual for the VP only exists as a paper document, the UT+/GT+/M12 manuals are available as a pdf documents at <a href="http://www.synergy-gps.com/Mot_Manuals.html">Synergy</a> .</p>
- <p>This interface was written by Poul-Henning Kamp (phk@FreeBSD.org), and modified by Reg Clemens (reg@dwf.com). The interface is known to work in FreeBSD, Linux, and Solaris.</p>
- <h4>Activating the Interface</h4>
- <p>Although the Shared Memory Interface will be compiled into the Oncore driver on those systems where Shared Memory is supported, to activate this interface you must include a <b>STATUS</b> or <b>SHMEM</b> line in the <tt>/etc/ntp.oncore</tt> data file that looks like</p>
- <pre>
+ <body>
+ <h3>Motorola ONCORE - The Shared Memory Interface</h3>
+ <hr>
+ <h4>Introduction</h4>
+ <p>In NMEA mode, the Oncore GPS receiver provides the user with the same information as other GPS receivers. In BINARY mode, it can provide a lot of additional information.</p>
+ <p>In particular, you can ask for satellite positions, satellite health, signal levels, the ephemeris and the almanac, and you can set many operational parameters. In the case of the VP, you can get the pseudorange corrections necessary to act as a DGPS base station, and you can see the raw satellite data messages themselves.</p>
+ <p>When using the Oncore GPS receiver with NTP, this additional information is usually not available since the receiver is only talking to the oncore driver in NTPD. To make this information available for use in other programs, (say graphic displays of satellites positions, plots of SA, etc.), a shared memory interface (SHMEM) has been added to the refclock_oncore driver on those operating systems that support shared memory.</p>
+ <p>To make use of this information you will need an Oncore Reference Manual for the Oncore GPS receiver that you have. The Manual for the VP only exists as a paper document, the UT+/GT+/M12 manuals are available as a pdf documents at <a href="http://www.synergy-gps.com/Mot_Manuals.html">Synergy</a> .</p>
+ <p>This interface was written by Poul-Henning Kamp (phk@FreeBSD.org), and modified by Reg Clemens (reg@dwf.com). The interface is known to work in FreeBSD, Linux, and Solaris.</p>
+ <h4>Activating the Interface</h4>
+ <p>Although the Shared Memory Interface will be compiled into the Oncore driver on those systems where Shared Memory is supported, to activate this interface you must include a <b>STATUS</b> or <b>SHMEM</b> line in the <tt>/etc/ntp.oncore</tt> data file that looks like</p>
+ <pre>
STATUS &lt; file_name &gt;<br>
+
or<br>
+
SHMEM &lt; file_name &gt;
</pre>
- Thus a line like
- <pre>
+ Thus a line like
+ <pre>
SHMEM /var/adm/ntpstats/ONCORE
</pre>
- <p>would be acceptable. This file name will be used to access the Shared Memory.</p>
- <p>In addition, one the two keywords <b>Posn2D</b> and <b>Posn3D</b> can be added to see @@Ea records containing the 2D or 3D position of the station (see below). Thus to activate the interface, and see 3D positions, something like</p>
- <pre>
+ <p>would be acceptable. This file name will be used to access the Shared Memory.</p>
+ <p>In addition, one the two keywords <b>Posn2D</b> and <b>Posn3D</b> can be added to see @@Ea records containing the 2D or 3D position of the station (see below). Thus to activate the interface, and see 3D positions, something like</p>
+ <pre>
SHMEM /var/adm/ntpstats/ONCORE
Posn3D
</pre>
- <p>would be required.</p>
- <h4>Storage of Messages in Shared Memory</h4>
- <p>With the shared memory interface, the oncore driver (refclock_oncore) allocates space for all of the messages that it is configured to receive, and then puts each message in the appropriate slot in shared memory as it arrives from the receiver. Since there is no easy way for a client program to know when the shared memory has been updated, a sequence number is associated with each message, and is incremented when a new message arrives. With the sequence number it is easy to check through the shared memory segment for messages that have changed.</p>
- <p>The Oncore binary messages are kept in their full length, as described in the Reference manual, that is everything from the @@ prefix thru the &lt;checksum&gt;&lt;CR&gt;&lt;LF&gt;.</p>
- <p>The data starts at location ONE of SHMEM (NOT location ZERO).</p>
- <p>The messages are stacked in a series of variable length structures, that look like</p>
- <pre>
+ <p>would be required.</p>
+ <h4>Storage of Messages in Shared Memory</h4>
+ <p>With the shared memory interface, the oncore driver (refclock_oncore) allocates space for all of the messages that it is configured to receive, and then puts each message in the appropriate slot in shared memory as it arrives from the receiver. Since there is no easy way for a client program to know when the shared memory has been updated, a sequence number is associated with each message, and is incremented when a new message arrives. With the sequence number it is easy to check through the shared memory segment for messages that have changed.</p>
+ <p>The Oncore binary messages are kept in their full length, as described in the Reference manual, that is everything from the @@ prefix thru the &lt;checksum&gt;&lt;CR&gt;&lt;LF&gt;.</p>
+ <p>The data starts at location ONE of SHMEM (NOT location ZERO).</p>
+ <p>The messages are stacked in a series of variable length structures, that look like</p>
+ <pre>
struct message {
u_int length;
u_char sequence;
u_char message[length];
}
</pre>
- <p>if something like that were legal. That is, there are two bytes (caution, these may NOT be aligned with word boundaries, so the field needs to be treated as a pair of u_char), that contains the length of the next message. This is followed by a u_char sequence number, that is incremented whenever a new message of this type is received. This is followed by 'length' characters of the actual message.</p>
- <p>The next structure starts immediately following the last char of the previous message (no alignment). Thus, each structure starts a distance of 'length+3' from the previous structure.</p>
- <p>Following the last structure, is a u_int containing a zero length to indicate the end of the data.</p>
- <p>The messages are recognized by reading the headers in the data itself, viz @@Ea or whatever.</p>
- <p>There are two special cases.</p>
- <p>(1) The almanac takes a total of 34 submessages all starting with @@Cb.<br>
- 35 slots are allocated in shared memory. Each @@Cb message is initially placed in the first of these locations, and then later it is moved to the appropriate location for that submessage. The submessages can be distinguished by the first two characters following the @@Cb header, and new data is received only when the almanac changes.</p>
- <p>(2) The @@Ea message contains the calculated location of the antenna, and is received once per second. However, when in timekeeping mode, the receiver is normally put in 0D mode, with the position fixed, to get better accuracy. In 0D mode no position is calculated.</p>
- <p>When the SHMEM option is active, and if one of <b>Posn2D</b> or <b>Posn3D</b> is specified, one @@Ea record is hijacked each 15s, and the receiver is put back in 2D/3D mode so the the current location can be determined (for position determination, or for tracking SA). The timekeeping code is careful NOT to use the time associated with this (less accurate) 2D/3D tick in its timekeeping functions.</p>
- <p>Following the initial @@Ea message are 3 additional slots for a total of four. As with the almanac, the first gets filled each time a new record becomes available, later in the code, the message is distributed to the appropriate slot. The additional slots are for messages containing 0D, 2D and 3D positions. These messages can be distinguished by different bit patterns in the last data byte of the record.</p>
- <h4>Opening the Shared Memory File</h4>
- <p>The shared memory segment is accessed through a file name given on a <b>SHMEM</b> card in the <tt>/etc/ntp.oncore</tt> input file. The following code could be used to open the Shared Memory Segment:</p>
- <pre>
+ <p>if something like that were legal. That is, there are two bytes (caution, these may NOT be aligned with word boundaries, so the field needs to be treated as a pair of u_char), that contains the length of the next message. This is followed by a u_char sequence number, that is incremented whenever a new message of this type is received. This is followed by 'length' characters of the actual message.</p>
+ <p>The next structure starts immediately following the last char of the previous message (no alignment). Thus, each structure starts a distance of 'length+3' from the previous structure.</p>
+ <p>Following the last structure, is a u_int containing a zero length to indicate the end of the data.</p>
+ <p>The messages are recognized by reading the headers in the data itself, viz @@Ea or whatever.</p>
+ <p>There are two special cases.</p>
+ <p>(1) The almanac takes a total of 34 submessages all starting with @@Cb.<br>
+ 35 slots are allocated in shared memory. Each @@Cb message is initially placed in the first of these locations, and then later it is moved to the appropriate location for that submessage. The submessages can be distinguished by the first two characters following the @@Cb header, and new data is received only when the almanac changes.</p>
+ <p>(2) The @@Ea message contains the calculated location of the antenna, and is received once per second. However, when in timekeeping mode, the receiver is normally put in 0D mode, with the position fixed, to get better accuracy. In 0D mode no position is calculated.</p>
+ <p>When the SHMEM option is active, and if one of <b>Posn2D</b> or <b>Posn3D</b> is specified, one @@Ea record is hijacked each 15s, and the receiver is put back in 2D/3D mode so the the current location can be determined (for position determination, or for tracking SA). The timekeeping code is careful NOT to use the time associated with this (less accurate) 2D/3D tick in its timekeeping functions.</p>
+ <p>Following the initial @@Ea message are 3 additional slots for a total of four. As with the almanac, the first gets filled each time a new record becomes available, later in the code, the message is distributed to the appropriate slot. The additional slots are for messages containing 0D, 2D and 3D positions. These messages can be distinguished by different bit patterns in the last data byte of the record.</p>
+ <h4>Opening the Shared Memory File</h4>
+ <p>The shared memory segment is accessed through a file name given on a <b>SHMEM</b> card in the <tt>/etc/ntp.oncore</tt> input file. The following code could be used to open the Shared Memory Segment:</p>
+ <pre>
char *Buf, *file;
int size, fd;
struct stat statbuf;
@@ -80,9 +83,9 @@
exit(1);
}
</pre>
- <h4>Accessing the data</h4>
- <p>The following code shows how to get to the individual records.</p>
- <pre>
+ <h4>Accessing the data</h4>
+ <p>The following code shows how to get to the individual records.</p>
+ <pre>
void oncore_msg_Ea(), oncore_msg_As(), oncore_msg_Bb();
struct Msg {
@@ -145,14 +148,14 @@
/* process As messages */
}
</pre>
- <p>The structure Hdr contains the Identifying string for each of the messages that we want to examine, and the name of a program to call when a new message of that type is arrives. The loop can be run every few seconds to check for new data.</p>
- <h4>Examples</h4>
- <p>There are two complete examples available. The first plots satellite positions and the station position as affected by SA, and keeps track of the mean station position, so you can run it for periods of days to get a better station position. The second shows the effective horizon by watching satellite tracks. The examples will be found in the GNU-zipped tar file <a href="ftp://ftp.udel.edu/pub/ntp/software/OncorePlot.tar.gz">ftp://ftp.udel.edu/pub/ntp/software/OncorePlot.tar.gz</a>.</p>
- <p>Try the new interface, enjoy.</p>
- <hr>
- <address>Reg.Clemens (reg@dwf.com), Poul-Henning Kamp (phk@FreeBSD.org)</address>
- <hr>
- <script type="text/javascript" language="javascript" src="../scripts/footer.txt"></script>
- </body>
+ <p>The structure Hdr contains the Identifying string for each of the messages that we want to examine, and the name of a program to call when a new message of that type is arrives. The loop can be run every few seconds to check for new data.</p>
+ <h4>Examples</h4>
+ <p>There are two complete examples available. The first plots satellite positions and the station position as affected by SA, and keeps track of the mean station position, so you can run it for periods of days to get a better station position. The second shows the effective horizon by watching satellite tracks. The examples will be found in the GNU-zipped tar file <a href="ftp://ftp.udel.edu/pub/ntp/software/OncorePlot.tar.gz">ftp://ftp.udel.edu/pub/ntp/software/OncorePlot.tar.gz</a>.</p>
+ <p>Try the new interface, enjoy.</p>
+ <hr>
+ <address>Reg.Clemens (reg@dwf.com), Poul-Henning Kamp (phk@FreeBSD.org)</address>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
-</html>
+</html> \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/scripts/footer.txt b/contrib/ntp/html/drivers/scripts/footer.txt
new file mode 100644
index 0000000..89216ce
--- /dev/null
+++ b/contrib/ntp/html/drivers/scripts/footer.txt
@@ -0,0 +1,7 @@
+document.write("\
+<table><tr>\
+<td width='50%' ><img src='../icons/home.gif' align='middle' alt='gif'>\
+<a href='../index.html'>Home Page</a></td>\
+<td width='50%' ><img src='../icons/mail2.gif' align='middle' alt='gif'>\
+<a href='http://www.ntp.org/contact.html'>Contacts</a></i></td>\
+</tr></table>") \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/scripts/style.css b/contrib/ntp/html/drivers/scripts/style.css
new file mode 100644
index 0000000..096b18a
--- /dev/null
+++ b/contrib/ntp/html/drivers/scripts/style.css
@@ -0,0 +1,64 @@
+body {background: #FDF1E1;
+ color: #006600;
+ font-family: "verdana", sans-serif;
+ text-align: justify;
+ margin-left: 5px;}
+
+p, h4, hr, li {margin-top: .6em; margin-bottom: .6em}
+li.inline {text-align: left; margin-top: 0; margin-bottom: 0}
+
+ul, dl, ol, {margin-top: .6em; margin-bottom: .6em; margin-left 5em}
+
+dt {margin-top: .6em}
+dd {margin-bottom: .6em}
+
+div.header {text-align: center;
+ font-style: italic;}
+
+div.footer {text-align: center;
+ font-size: 60%;}
+
+img.cell {align: left;}
+
+td.sidebar {width: 40px; align: center; valign: top;}
+img.sidebar {align: center; margin-top: 5px;}
+h4.sidebar {align: center;}
+
+p.top {background: #FDF1E1;
+ color: #006600;
+ position: absolute;
+ margin-left: -90px;
+ text-align: center;}
+
+a:link.sidebar {background: transparent;
+ color: #990033;
+ font-weight: bold;}
+
+a:visited.sidebar {background: transparent;
+ color: #990033;
+ font-weight: bold;}
+
+a:hover.sidebar {background: #FDF1E1;
+ color: #006600;}
+
+img {margin: 5px;}
+
+div {text-align: center;}
+
+h1 {text-align: center;
+ font-size: 250%;}
+
+caption {background: #EEEEEE;
+ color: #339999;}
+
+tx {text-align: center;}
+
+th {background: #FFFFCC;
+ color: #006600;
+ text-align: center;
+ text-decoration: underline;
+ padding-top: 5px;}
+
+th.caption {background: #EEEEEE;
+ color: #006600;
+ text-align: center;} \ No newline at end of file
diff --git a/contrib/ntp/html/drivers/tf582_4.html b/contrib/ntp/html/drivers/tf582_4.html
new file mode 100644
index 0000000..6b0ce0a
--- /dev/null
+++ b/contrib/ntp/html/drivers/tf582_4.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+
+ <head>
+ <meta name="GENERATOR" content="Adobe PageMill 3.0 per Windows">
+ <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+ <title>PTB Modem Time Service</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
+
+ <body>
+ <h3>European Automated Computer Time Services</h3>
+ <hr>
+ <p>Several European countries use the following message data format:</p>
+ <p><font size="-1" face="Courier New">Data format<br>
+ 0000000000111111111122222222223333333333444444444455555555556666666666777777777 7<br>
+ 0123456789012345678901234567890123456789012345678901234567890123456789012345678 9<br>
+ 1995-01-23 20:58:51 MEZ 10402303260219950123195849740+40000500 *<br>
+ A B C D EF G H IJ K L M N O P Q R S T U V W XY Z&lt;CR&gt;&lt;LF&gt;<br>
+ A year<br>
+ B month<br>
+ C day<br>
+ D hour<br>
+ E : normally<br>
+ A for DST to ST switch first hour<br>
+ B for DST to ST switch second hour if not marked in H<br>
+ F minute<br>
+ G second<br>
+ H timezone<br>
+ I day of week<br>
+ J week of year<br>
+ K day of year<br>
+ L month for next ST/DST changes<br>
+ M day<br>
+ N hour<br>
+ O UTC year<br>
+ P UTC month<br>
+ Q UTC day<br>
+ R UTC hour<br>
+ S UTC minute<br>
+ T modified julian day (MJD)<br>
+ U DUT1<br>
+ V direction and month if leap second<br>
+ W signal delay (assumed/measured)<br>
+ X sequence number for additional text line in Y<br>
+ Y additional text<br>
+ Z on time marker (* - assumed delay / # measured delay)<br>
+ &lt;CR&gt;!&lt;LF&gt; ! is second change !<br>
+ </font></p>
+ <p>This format is an ITU-R Recommendation (ITU-R TF583.4) and is now available from the primary timing centres of the following countries: Austria, Belgium, Germany, Italy, The Netherlands, Poland, Portugal, Romania, Spain, Sweden, Switzerland, Turkey and United Kingdom. Some examples are:</p>
+ <ul>
+ <li>In Germany by Physikalisch-Technische Bundesanstalt (PTB)'s timecode service. Phone number: +49 5 31 51 20 38.
+ <p>For more detail, see <a href="http://www.ptb.de/english/org/4/43/433/disse.html">http://www.ptb.de/english/org/4/43/433/disse.htm</a></p>
+ <li>In the UK by National Physical Laboratory (NPL)'s TRUETIME service. Phone number: 0891 516 333
+ <p>For more detail, see <a href="http://www.npl.co.uk/npl/ctm/truetime.html">http://www.npl.co.uk/npl/ctm/truetime.html</a></p>
+ <li>In Italy by Istituto Elettrotecnico Nazionale &quot;Galileo Ferrais&quot; (IEN)'s CTD service. Phone number: 166 11 46 15
+ <p>For more detail, see <a href="http://www.ien.it/tf/time/Pagina42.html">http://www.ien.it/tf/time/Pagina42.html</a></p>
+ <li>In Switzerland by Swiss Federal Office of Metrology's timecode service. Phone number: 031 323 32 25
+ <p>For more detail, see <a href="http://www.metas.ch/en/labors/official-time/modem/index.html">http://www.ofmet.admin.ch/de/labors/4/Zeitvert.html </a></p>
+ <li>In Sweden by SP Swedish National Testing and Research Institute 's timecode service. Phone number: +46 33 415783.
+ <p>For more detail, see <a href="http://www.sp.se/metrology/timefreq/eng/tandf.htm">http://www.sp.se/metrology/timefreq/eng/tandf.htm</a></p>
+ </ul>
+ <dl></dl>
+ <h4>Additional Information</h4>
+ <p><a href="../refclock.html">Reference Clock Drivers</a></p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
+
+</html> \ No newline at end of file
diff --git a/contrib/ntp/html/extern.html b/contrib/ntp/html/extern.html
index 89a1b56..3245fca 100644
--- a/contrib/ntp/html/extern.html
+++ b/contrib/ntp/html/extern.html
@@ -2,31 +2,32 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>External Clock Discipline and the Local Clock Driver</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>External Clock Discipline and the Local Clock Driver</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>External Clock Discipline and the Local Clock Driver</h3>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">15:41</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="240">Sunday, February 02, 2003</csobj></p>
- <hr>
- <p>The NTPv4 implementation includes provisions for an external clock, where the system clock is implemented by some external hardware device. One implementation might take the form of a bus peripheral with a high resolution counter disciplined by a GPS receiver, for example. Another implementation might involve another synchronization protocol, such as the Digital Time Synchronization Service (DTSS), where the system time is disciplined to this protocol and NTP clients of the server obtain synchronization indirectly via the server. A third implementation might be a completely separate clock discipline algorithm and synchronization protocol, such as the <tt>Lockclock</tt> algorithm used with NIST Automated Computer Time Service (ACTS) modem synchronized time.</p>
- <p>When external clocks are used in conjunction with NTP service, some way needs to be provided for the external clock driver and NTP daemon <tt>ntpd</tt> to communicate and determine which discipline is in control. This is necessary in order to provide backup, for instance if the external clock or protocol were to fail and synchronization service fall back to other means, such as a local reference clock or another NTP server. In addition, when the external clock and driver are in control, some means needs to be provided for the clock driver to pass on status information and error statistics to the NTP daemon.</p>
- <p>Control and monitoring functions for the external clock and driver are implemented using the <a href="drivers/driver1.html">Local Clock (type 1) driver</a> and the <tt>ntp_adjtime()</tt> system call. This system call is implemented by special kernel provisions included in the kernel of several operating systems, including Solaris, Tru64, FreeBSD and Linux, and possibly others. When the external clock is disabled or not implemented, the system call is used to pass time and frequency information, as well as error statistics, to the kernel. Besides disciplining the system time, the same interface can be used by other applications to determine the operating parameters of the discipline.</p>
- <p>When the external clock is enabled, <tt>ntpd</tt> does not discipline the system clock, nor does it maintain the error statistics. In this case, the external clock and driver do this using mechanisms unknown to <tt>ntpd</tt>; however, in this case the kernel state variables are retrieved at 64-s intervals by the Local Clock driver and used by the clock selection and mitigation algorithms to determine the system variables presented to other NTP clients and peers. In this way, downstream clients and servers in the NTP subnet can make an intelligent choice when more than one server is available.</p>
- <p>In order to implement a reliable mitigation between ordinary NTP sources and the external clock source, a protocol is necessary between the local clock driver and the external clock driver. This is implemented using Boolean variables and certain bits in the kernel clock status word. The Boolean variables include the following:</p>
- <p><tt>ntp_enable</tt>. set/reset by the <tt>enable</tt> command. enables ntp clock discipline</p>
- <p><tt>ntp_contro</tt>l. set during initial configuration if kernel support is available</p>
- <p><tt>kern_enable</tt> Set/reset by the <tt>enable</tt> command</p>
- <p>If the <tt>kern_enable</tt> switch is set, the daemon computes the offset, frequency, maximum error, estimated error, time constand and status bits, then provides them to the kernel via <tt>ntp_adjtime()</tt>. If this switch is not set, these values are not passed to the kernel; however, the daemon retrieves their present values and uses them in place of the values computed by the daemon.</p>
- <p>The <tt>pps_update</tt> bit set in the protocol routine if the prefer peer has survived and has offset less than 128 ms; otherwise set to zero.</p>
- <p>The <tt>pps_contro</tt>l Updated to the current time by kernel support if the PPS signal is enabled and working correctly. Set to zero in the adjust routine if the interval since the last update exceeds 120 s.</p>
- <p>The <tt>ntp_enable</tt> and <tt>kern_enable</tt> are set by the configuration module. Normally, both switches default on, so the daemon can control the time and the kernel discipline can be used, if available. The <tt>pps_update</tt> switch is set by the protocol module when it believes the PPS provider source is legitimate and operating within nominals. The <tt>ntp_control</tt> switch is set during configuration by interrogating the kernel. If both the <tt>kern_enable</tt> and <tt>ntp_control</tt> switches are set, the daemon disciplines the clock via the kernel and the internal daemon discipline is disabled.</p>
- <p>The external clock driver controls the system time and clock selection in the following way. Normally, the driver adjusts the kernel time using the <tt>ntp_adjtime()</tt> system call in the same way as the daemon. In the case where the kernel discipline is to be used intact, the clock offset is provided in this call and the loop operates as specified. In the case where the driver steers only the frequency, the offset is specified as zero.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>External Clock Discipline and the Local Clock Driver</h3>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:38</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <hr>
+ <p>The NTPv4 implementation includes provisions for an external clock, where the system clock is implemented by some external hardware device. One implementation might take the form of a bus peripheral with a high resolution counter disciplined by a GPS receiver, for example. Another implementation might involve another synchronization protocol, such as the Digital Time Synchronization Service (DTSS), where the system time is disciplined to this protocol and NTP clients of the server obtain synchronization indirectly via the server. A third implementation might be a completely separate clock discipline algorithm and synchronization protocol, such as the <tt>Lockclock</tt> algorithm used with NIST Automated Computer Time Service (ACTS) modem synchronized time.</p>
+ <p>When external clocks are used in conjunction with NTP service, some way needs to be provided for the external clock driver and NTP daemon <tt>ntpd</tt> to communicate and determine which discipline is in control. This is necessary in order to provide backup, for instance if the external clock or protocol were to fail and synchronization service fall back to other means, such as a local reference clock or another NTP server. In addition, when the external clock and driver are in control, some means needs to be provided for the clock driver to pass on status information and error statistics to the NTP daemon.</p>
+ <p>Control and monitoring functions for the external clock and driver are implemented using the <a href="drivers/driver1.html">Local Clock (type 1) driver</a> and the <tt>ntp_adjtime()</tt> system call. This system call is implemented by special kernel provisions included in the kernel of several operating systems, including Solaris, Tru64, FreeBSD and Linux, and possibly others. When the external clock is disabled or not implemented, the system call is used to pass time and frequency information, as well as error statistics, to the kernel. Besides disciplining the system time, the same interface can be used by other applications to determine the operating parameters of the discipline.</p>
+ <p>When the external clock is enabled, <tt>ntpd</tt> does not discipline the system clock, nor does it maintain the error statistics. In this case, the external clock and driver do this using mechanisms unknown to <tt>ntpd</tt>; however, in this case the kernel state variables are retrieved at 64-s intervals by the Local Clock driver and used by the clock selection and mitigation algorithms to determine the system variables presented to other NTP clients and peers. In this way, downstream clients and servers in the NTP subnet can make an intelligent choice when more than one server is available.</p>
+ <p>In order to implement a reliable mitigation between ordinary NTP sources and the external clock source, a protocol is necessary between the local clock driver and the external clock driver. This is implemented using Boolean variables and certain bits in the kernel clock status word. The Boolean variables include the following:</p>
+ <p><tt>ntp_enable</tt>. set/reset by the <tt>enable</tt> command. enables ntp clock discipline</p>
+ <p><tt>ntp_contro</tt>l. set during initial configuration if kernel support is available</p>
+ <p><tt>kern_enable</tt> Set/reset by the <tt>enable</tt> command</p>
+ <p>If the <tt>kern_enable</tt> switch is set, the daemon computes the offset, frequency, maximum error, estimated error, time constand and status bits, then provides them to the kernel via <tt>ntp_adjtime()</tt>. If this switch is not set, these values are not passed to the kernel; however, the daemon retrieves their present values and uses them in place of the values computed by the daemon.</p>
+ <p>The <tt>pps_update</tt> bit set in the protocol routine if the prefer peer has survived and has offset less than 128 ms; otherwise set to zero.</p>
+ <p>The <tt>pps_contro</tt>l Updated to the current time by kernel support if the PPS signal is enabled and working correctly. Set to zero in the adjust routine if the interval since the last update exceeds 120 s.</p>
+ <p>The <tt>ntp_enable</tt> and <tt>kern_enable</tt> are set by the configuration module. Normally, both switches default on, so the daemon can control the time and the kernel discipline can be used, if available. The <tt>pps_update</tt> switch is set by the protocol module when it believes the PPS provider source is legitimate and operating within nominals. The <tt>ntp_control</tt> switch is set during configuration by interrogating the kernel. If both the <tt>kern_enable</tt> and <tt>ntp_control</tt> switches are set, the daemon disciplines the clock via the kernel and the internal daemon discipline is disabled.</p>
+ <p>The external clock driver controls the system time and clock selection in the following way. Normally, the driver adjusts the kernel time using the <tt>ntp_adjtime()</tt> system call in the same way as the daemon. In the case where the kernel discipline is to be used intact, the clock offset is provided in this call and the loop operates as specified. In the case where the driver steers only the frequency, the offset is specified as zero.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/gadget.html b/contrib/ntp/html/gadget.html
new file mode 100644
index 0000000..b13fe08
--- /dev/null
+++ b/contrib/ntp/html/gadget.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Gadget Box PPS Level Converter and CHU Modem</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
+
+ <body>
+ <h3>Gadget Box PPS Level Converter and CHU Modem</h3>
+ <img src="pic/gadget.jpg" alt="gif" align="left">A Gadget Box built by Chuck Hanavin
+ <h4>Related Links</h4>
+ <p>
+ <script type="text/javascript" language="javascript" src="scripts/links11.txt"></script>
+ <br clear="left">
+ </p>
+ <h4>table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#intro">Introduction</a>
+ <li class="inline"><a href="#ckt">Circuit Description</a>
+ <li class="inline"><a href="#file">Files</a>
+ </ul>
+ <hr>
+ <h4 id="intro">Introduction</h4>
+ <p>Many radio clocks used as a primary reference source for NTP servers produce a pulse-per-second (PPS) signal that can be used to improve accuracy to a high degree. However, the signals produced are usually incompatible with the modem interface signals on the serial ports used to connect the signal to the host. The gadget box consists of a handful of electronic components assembled in a small aluminum box. It includes level converters and a optional radio modem designed to decode the radio timecode signals transmitted by the Canadian time and frequency station CHU. A complete set of schematics, PCB artwork, drill templates can be obrtained via the web from ftp.udel.edu as <a href="ftp://ftp.udel.edu/pub/ntp/hardware/gadget.tar.Z">gadget.tar.Z</a>.</p>
+ <p>The gadget box is assembled in a 5&quot;x3&quot;x2&quot; aluminum minibox containing the level converter and modem circuitry. It includes two subcircuits. One of these converts a TTL positive edge into a fixed-width pulse at EIA levels and is for use with a timecode receiver or oscillator including a TTL PPS output. The other converts the timecode modulation broadcast by Canadian time/frequency standard station CHU into a 300-bps serial character stream at EIA levels and is for use with the <a href="drivers/driver7.html">Radio CHU Audio Demodulator/Decoder</a> driver.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
+
+</html> \ No newline at end of file
diff --git a/contrib/ntp/html/groups.html b/contrib/ntp/html/groups.html
new file mode 100644
index 0000000..7f6d14b
--- /dev/null
+++ b/contrib/ntp/html/groups.html
@@ -0,0 +1,47 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Trusted Hosts and Groups</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
+
+ <body>
+ <h3>Trusted Hosts and Groups</h3>
+ <img src="pic/alice23.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>Alice holds the key.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">00:12</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="299">Tuesday, November 08, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links9.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#idexp">Identity Schemes</a>
+ <li class="inline"><a href="#exam">Example</a>
+ <li class="inline"><a href="#cmd">Command Line Options</a>
+ <li class="inline"><a href="#rand">Random Seed File</a>
+ <li class="inline"><a href="#fmt">Cryptographic Data Files</a>
+ <li class="inline"><a href="#bug">Bugs</a>
+ </ul>
+ <hr>
+ <h4 id="synop">Trusted Hosts and Groups</h4>
+ <p>Each cryptographic configuration involves selection of a signature scheme and identification scheme, called a cryptotype, as explained in the <a href="authopt.html">Authentication Options</a> page. The default cryptotype uses RSA encryption, MD5 message digest and TC identification. First, configure a NTP subnet including one or more low-stratum trusted hosts from which all other hosts derive synchronization directly or indirectly. Trusted hosts have trusted certificates; all other hosts have nontrusted certificates. These hosts will automatically and dynamically build authoritative certificate trails to one or more trusted hosts. A trusted group is the set of all hosts that have, directly or indirectly, a certificate trail ending at a trusted host. The trail is defined by static configuration file entries or dynamic means described on the <a href="manyopt.html">Automatic NTP Configuration Options</a> page.</p>
+ <p>On each trusted host as root, change to the keys directory. To insure a fresh fileset, remove all <tt>ntpkey</tt> files. Then run <tt>ntp-keygen -T</tt> to generate keys and a trusted certificate. On all other hosts do the same, but leave off the <tt>-T</tt> flag to generate keys and nontrusted certificates. When complete, start the NTP daemons beginning at the lowest stratum and working up the tree. It may take some time for Autokey to instantiate the certificate trails throughout the subnet, but setting up the environment is completely automatic.</p>
+ <p>If it is necessary to use a different sign key or different digest/signature scheme than the default, run <tt>ntp-keygen</tt> with the <tt>-S</tt><i><tt> type</tt></i> option, where <i><tt>type</tt></i> is either <tt>RSA</tt> or <tt>DSA</tt>. The most often need to do this is when a DSA-signed certificate is used. If it is necessary to use a different certificate scheme than the default, run <tt>ntp-keygen</tt> with the <tt>-c <i>scheme</i></tt> option and selected <i><tt>scheme</tt></i> as needed. If <tt>ntp-keygen</tt> is run again without these options, it generates a new certificate using the same scheme and sign key.</p>
+ <p>After setting up the environment it is advisable to update certificates from time to time, if only to extend the validity interval. Simply run <tt>ntp-keygen</tt> with the same flags as before to generate new certificates using existing keys. However, if the host or sign key is changed, <tt>ntpd</tt> should be restarted. When ntpd is restarted, it loads any new files and restarts the protocol. Other dependent hosts will continue as usual until signatures are refreshed, at which time the protocol is restarted.</p>
+ <h4 id="idexp">Identity Schemes</h4>
+ <p>As mentioned on the Autonomous Authentication page, the default TC identity scheme is vulnerable to a middleman attack. However, there are more secure identity schemes available, including PC, IFF, GQ and MV described on the <a href="http://www.eecis.udel.edu/%7emills/keygen.html">Identification Schemes</a> page. These schemes are based on a TA, one or more trusted hosts and some number of nontrusted hosts. Trusted hosts prove identity using values provided by the TA, while the remaining hosts prove identity using values provided by a trusted host and certificate trails that end on that host. The name of a trusted host is also the name of its sugroup and also the subject and issuer name on its trusted certificate. The TA is not necessarily a trusted host in this sense, but often is.</p>
+ <p>In some schemes there are separate keys for servers and clients. A server can also be a client of another server, but a client can never be a server for another client. In general, trusted hosts and nontrusted hosts that operate as both server and client have parameter files that contain both server and client keys. Hosts that operate only as clients have key files that contain only client keys.</p>
+ <p>The PC scheme supports only one trusted host in the group. On trusted host <i>alice</i> run <tt>ntp-keygen -P -p <i>password</i></tt> to generate the host key file <tt>ntpkey_RSAkey_<i>alice.filestamp</i></tt> and trusted private certificate file <tt>ntpkey_RSA-MD5_cert_<i>alice.filestamp</i></tt>. Copy both files to all group hosts; they replace the files which would be generated in other schemes. On each host <i>bob</i> install a soft link from the generic name <tt>ntpkey_host_<i>bob</i></tt> to the host key file and soft link <tt>ntpkey_cert_<i>bob</i></tt> to the private certificate file. Note the generic links are on <i>bob</i>, but point to files generated by trusted host <i>alice</i>. In this scheme it is not possible to refresh either the keys or certificates without copying them to all other hosts in the group.</p>
+ <p>For the IFF scheme proceed as in the TC scheme to generate keys and certificates for all group hosts, then for every trusted host in the group, generate the IFF&nbsp;parameter file. On trusted host <i>alice</i> run <tt>ntp-keygen -T </tt><tt>-I -p <i>password</i></tt> to produce her parameter file <tt>ntpkey_IFFpar_<i>alice.filestamp</i></tt>, which includes both server and client keys. Copy this file to all group hosts that operate as both servers and clients and install a soft link from the generic <tt>ntpkey_iff_<i>alice</i></tt> to this file. If there are no hosts restricted to operate only as clients, there is nothing further to do. As the IFF scheme is independent of keys and certificates, these files can be refreshed as needed.</p>
+ <p>If a rogue client has the parameter file, it could masquerade as a legitimate server and present a middleman threat. To eliminate this threat, the client keys can be extracted from the parameter file and distributed to all restricted clients. After generating the parameter file, on <i>alice</i> run <tt>ntp-keygen</tt> <tt>-e</tt> and pipe the output to a file or mail program. Copy or mail this file to all restricted clients. On these clients install a soft link from the generic <tt>ntpkey_iff_<i>alice</i></tt> to this file. To further protect the integrity of the keys, each file can be encrypted with a secret password.</p>
+ <p>For the GQ scheme proceed as in the TC scheme to generate keys and certificates for all group hosts, then for every trusted host in the group, generate the IFF parameter file. On trusted host <i>alice</i> run <tt>ntp-keygen -T </tt><tt>-G -p <i>password</i></tt> to produce her parameter file <tt>ntpkey_GQpar_<i>alice.filestamp</i></tt>, which includes both server and client keys. Copy this file to all group hosts and install a soft link from the generic <tt>ntpkey_gq_<i>alice</i></tt> to this file. In addition, on each host <i>bob</i> install a soft link from generic <tt>ntpkey_gq_<i>bob</i></tt> to this file. As the GQ scheme updates the GQ parameters file and certificate at the same time, keys and certificates can be regenerated as needed.</p>
+ <p>For the MV scheme, proceed as in the TC scheme to generate keys and certificates for all group hosts. For illustration assume <i>trish</i> is the TA, <i>alice</i> one of several trusted hosts and <i>bob</i> one of her clients. On TA <i>trish</i> run <tt>ntp-keygen </tt><tt>-V&nbsp;<i>n</i> -p <i>password</i></tt>, where <i>n</i> is the number of revokable keys (typically 5) to produce the parameter file <tt>ntpkeys_MVpar_<i>trish.filestamp </i></tt>and client key files <tt>ntpkeys_MVkey<i>d</i>_<i>trish.filestamp</i></tt> where <i><tt>d</tt></i> is the key number (0 &lt; <i><tt>d</tt></i> &lt; <i>n</i>). Copy the parameter file to <i>alice</i> and install a soft link from the generic <tt>ntpkey_mv_<i>alice</i></tt> to this file. Copy one of the client key files to <i>alice</i> for later distribution to her clients. It doesn't matter which client key file goes to <i>alice</i>, since they all work the same way. <i>Alice</i> copies the client key file to all of her cliens. On client <i>bob</i> install a soft link from generic <tt>ntpkey_mvkey_<i>bob </i></tt>to the client key file. As the MV scheme is independent of keys and certificates, these files can be refreshed as needed.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
+
+</html> \ No newline at end of file
diff --git a/contrib/ntp/html/hints/solaris.xtra.4095849 b/contrib/ntp/html/hints/solaris.xtra.4095849
deleted file mode 100644
index 8d3ce80..0000000
--- a/contrib/ntp/html/hints/solaris.xtra.4095849
+++ /dev/null
@@ -1,74 +0,0 @@
- Bug Id: 4095849
- Category: kernel
- Subcategory: syscall
- State: evaluated
- Synopsis: time_constant value >6 with PLL in use leads to integer divide
- zero trap panic
- Description:
-If the time_constant parameter is 7 or higher, and the phase-lock looping model
-is in use, the system will take a "integer divide zero trap" panic in
-the clock routine as soon as the time_offset becomes non-zero.
-
-time_constant defaults to 0. The only place it is set is in the ntp_adjtime
-system call, from the 'constant' element of the timex structure argument.
-
- Work around:
-Never set the constant element of the timex structure passed to ntp_adjtime to
-a value larger than 6.
-
-satish.mynam@Eng 1998-04-30
-1. Use Sun's version of NTP software instead of PD version. This problem
-is not seen with Sun's NTP version (which is mostly eqivalent to PD NTP 3.4
-plus some Sun's local functionality futures).
-
-2. Workaround for the public domain NTP version ONLY:
- =====================================================
-The workaround for public domain NTP version is to disable the
-KERNEL_PLL from the NTP code. This way ntp_Adjtime() system call is
-totally bypassed without sacrificing any of the functionality of the
-NTP. The only hit you might see is the way kernel precision timminig
-is done without the PLL algorithm in the kernel.
-
- The easiest way to disable ntp_adjtime option is(without changing
- any makefiles or other config files) to disable the KERNEL_PLL
- value in the ./config.h file.
-
-After doing a ./configure for probing for all the necessary tools(compilers,
-os version, libraries), please comment out KERNEL_PLL macro in
-the ./config.h file. This will disable the KERNEL_PLL part of the source
-code and the newly obtained xntpd is just similar to the old one but it
-does not use ntp_adjtime() system call. This prevents it from panic'ng
-the kernel.
-
-/*#define KERNEL_PLL 1*/
-
-I complied a new xntpd binary this way and it does nothave any ntp_adjtime()
-related stuff.
-
-Default:
-=======
-/net/divya/export/home/mynam/public_domain/ntp/xntp3-5.92/xntpd>strings
-xntpd |
-grep ntp_adjtime
-354:adj_frequency: ntp_adjtime failed: %m
-357:loop_config: ntp_adjtime() failed: %m
-435:get_kernel_info: ntp_adjtime() failed: %m
-
-With KERNEL_PLL disabled in config.h file
--=======================
-
-/net/divya/export/home/mynam/public_domain/ntp/xntp3-5.92/xntpd>strings
-xntpd.nopll | grep ntp_adjtime
-
- Integrated in releases:
- Duplicate of:
- Patch id:
- See also: 4133517
- Summary:
-If the time_constant parameter is 7 or higher, and the phase-lock looping model
-is in use, the system will take a "integer divide zero trap" panic in
-the clock routine as soon as the time_offset becomes non-zero.
-
-time_constant defaults to 0. The only place it is set is in the ntp_adjtime
-system call, from the 'constant' element of the timex structure argument.
-----------------------------------------------------------------------------
diff --git a/contrib/ntp/html/howto.html b/contrib/ntp/html/howto.html
index 2390d12..3a1007f 100644
--- a/contrib/ntp/html/howto.html
+++ b/contrib/ntp/html/howto.html
@@ -2,58 +2,59 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>How to Write a Reference Clock Driver</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>How to Write a Reference Clock Driver</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>How to Write a Reference Clock Driver</h3>
- <img src="pic/pogo4.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
- <p>You need a little magic.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:11 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links10.txt"></script>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#desc">Description</a>
- <li class="inline"><a href="#file">Files Which Need to be Changed</a>
- <li class="inline"><a href="#intf">Interface Routine Overview</a>
- </ul>
- <hr>
- <h4 id="desc">Description</h4>
- <p>NTP reference clock support maintains the fiction that the clock is actually an ordinary peer in the NTP tradition, but operating at a synthetic stratum of zero. The entire suite of algorithms used to filter the received data, select the best clocks or peers and combine them to produce a system clock correction operate just like ordinary NTP peers. In this way, defective clocks can be detected and removed from the peer population. As no packets are exchanged with a reference clock; however, the transmit, receive and packet procedures are replaced with separate code to simulate them.</p>
- <p>It is important to understand how the NTP clock driver interface works. The driver assumes three timescales: standard time maintained by a distant laboratory such as USNO or NIST, reference time maintained by the external radio and the system time maintained by NTP. The radio synchronizes reference time and frequency to standard time via radio, satellite or modem. As the transmission means may not always be reliable, most radios continue to provide clock updates for some time after signal loss using an internal reference oscillator. In such cases the radio may or may not reveal the time since last synchronized and/or the estimated time error.</p>
- <p>All three timescales run <i>only</i> in Coordinated Universal Time (UTC), 24-hour format, and are not adjusted for local timezone or standard/daylight time. The local timezone, standard/daylight indicator and year, if provided, are ignored. However, it is important to determine whether a leap second is to be inserted in the UTC timescale in the near future so NTP can insert it in the system timescale at the appropriate epoch.</p>
- <p>The NTP clock driver synchronizes the system time and frequency to the radio via serial or parallel port, PPS signal or other means. The driver routinely checks the radio timecode string or status indicators to determine whether it is operating correctly or not. If it is, the driver decodes the radio timecode in days, hours, minutes, seconds and nanoseconds and provides these data with the NTP receive timestamp corresponding to the on-time epoch of the timecode. The driver interface computes the difference between the timecode time and NTP timestamp and saves the difference in a circular buffer for later processing. Once each poll interval, usually 64 s, the driver provides ancillary data including leap bits and last reference time to the interface. The interface processes the circular buffer using a median/trimmed mean algorithm to extract the best estimate and provides this and the ancillary data to the clock filter as with ordinary NTP peers.</p>
- <p>The audio drivers are designed to look like a typical external radio in that the reference oscillator is derived from the audio codec oscillator and separate from the system clock oscillator. In the WWV and IRIG drivers, the codec oscillator is disciplined in frequency to the standard timescale via radio or local sources and can be assumed to have the same reliability and accuracy as an external radio. In these cases the driver continues to provide updates to the clock filter even if the WWV or IRIG signals are lost. However, the interface is provided the last reference time when the signals were received and increases the dispersion as expected with an ordinary peer.</p>
- <p>The best way to understand how the clock drivers work is to study the <tt>ntp_refclock.c</tt> module and one of the drivers already implemented, such as <tt>refclock_wwvb.c</tt>. Routines <tt>refclock_transmit()</tt> and <tt>refclock_receive()</tt> maintain the peer variables in a state analogous to a network peer and pass received data on through the clock filters. Routines <tt>refclock_peer()</tt> and <tt>refclock_unpeer()</tt> initialize and terminate reference clock associations, should this ever be necessary. A set of utility routines is included to open serial devices, process sample data, edit input lines to extract embedded timestamps and to perform various debugging functions.</p>
- <p>The main interface used by these routines is the <tt>refclockproc</tt> structure, which contains for most drivers the decimal equivalents of the year, day, month, hour, second and nanosecond decoded from the radio timecode. Additional information includes the receive timestamp, reference timestamp, exception reports, statistics tallies, etc. The support routines are passed a pointer to the <tt>peer</tt> structure, which is used for all peer-specific processing and contains a pointer to the <tt>refclockproc</tt> structure, which in turn contains a pointer to the unit structure, if used. For legacy purposes, a table <tt>typeunit[type][unit]</tt> contains the peer structure pointer for each configured clock type and unit. This structure should not be used for new implementations.</p>
- <p>The reference clock interface supports auxiliary functions to support in-stream timestamping, pulse-per-second (PPS) interfacing and precision time kernel support. In most cases the drivers do not need to be aware of them, since they are detected at autoconfigure time and loaded automatically when the device is opened. These include the <tt>tty_clk</tt> STREAMS module and <tt>ppsapi</tt> PPS interface described in the <a href="ldisc.html">Line Disciplines and Streams Modules</a> page. The <tt>tty_clk</tt> module reduces latency errors due to the operating system and serial port code in slower systems. The <tt>ppsapi</tt> PPS interface replaces the <tt>ppsclock</tt> STREAMS module and is expected to become the IETF standard cross-platform interface for PPS signals. In either case, the PPS signal can be connected via a level converter/pulse generator described in the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page.</p>
- <p>Radio and modem reference clocks by convention have addresses in the form <tt>127.127.<i>t</i>.<i>u</i></tt>, where <i>t</i> is the clock type and <i>u</i> in the range 0-3 is used to distinguish multiple instances of clocks of the same type. Most clocks require a serial or parallel port or special bus peripheral. The particular device is normally specified by adding a soft link <tt>/dev/device<i>d</i>d</tt> to the particular hardware device involved, where <tt><i>d</i></tt> corresponds to the unit number.</p>
- <p>By convention, reference clock drivers are named in the form <tt>refclock_<i>xxxx</i>.c</tt>, where <i>xxxx</i> is a unique string. Each driver is assigned a unique type number, long-form driver name, short-form driver name and device name. The existing assignments are in the <a href="refclock.html">Reference Clock Drivers</a> page and its dependencies. All drivers supported by the particular hardware and operating system are automatically detected in the autoconfigure phase and conditionally compiled. They are configured when the daemon is started according to the configuration file, as described in the <a href="config.html">Configuration Options</a> page.</p>
- <p>The standard clock driver interface includes a set of common support routines some of which do such things as start and stop the device, open the serial port, and establish special functions such as PPS signal support. Other routines read and write data to the device and process time values. Most drivers need only a little customizing code to, for instance, transform idiosyncratic timecode formats to standard form, poll the device as necessary, and handle exception conditions. A standard interface is available for remote debugging and monitoring programs, such as <tt>ntpq</tt> and <tt>ntpdc</tt>, as well as the <tt>filegen</tt> facility, which can be used to record device status on a continuous basis.</p>
- <p>The general organization of a typical clock driver includes a receive-interrupt routine to read a timecode from the I/O buffer and convert to internal format, generally in days, hours, minutes, seconds and fraction. Some timecode formats include provisions for leap-second warning and determine the clock hardware and software health. The interrupt routine then calls <tt>refclock_process()</tt> with these data and the timestamp captured at the on-time character of the timecode. This routine saves each sample as received in a circular buffer, which can store from a few up to 60 samples, in cases where the timecodes arrive one per second.</p>
- <p>The <tt>refclock_transmit()</tt> routine in the interface is called by the system at intervals defined by the poll interval in the peer structure, generally 64 s. This routine in turn calls the transmit poll routine in the driver. In the intended design, the driver calls the <tt>refclock_receive()</tt> to process the offset samples that have accumulated since the last poll and produce the final offset and variance. The samples are processed by recursively discarding median outlyers until about 60 percent of samples remain, then averaging the surviving samples. When a reference clock must be explicitly polled to produce a timecode, the driver can reset the poll interval so that the poll routine is called a specified number of times at 1-s intervals.</p>
- <p>The interface code and this documentation have been developed over some time and required not a little hard work converting old drivers, etc. Should you find success writing a driver for a new radio or modem service, please consider contributing it to the common good. Send the driver file itself and patches for the other files to Dave Mills (mills@udel.edu).</p>
- <h4>Conventions, Fudge Factors and Flags</h4>
- <p>Most drivers support manual or automatic calibration for systematic offset bias using values encoded in the <tt>fudge</tt> configuration command. By convention, the <tt>time1</tt> value defines the calibration offset in seconds. For those drivers that support statistics collection using the <tt>filegen</tt> utility and the <tt>clockstats</tt> file, the <tt>flag4</tt> switch enables the utility. When a PPS signal is available, a special automatic calibration facility is provided. If the <tt>flag1</tt> switch is set and the PPS signal is actively disciplining the system time, the calibration value is automatically adjusted to maintain a residual offset of zero. Should the PPS signal or the prefer peer fail, the adjustment is frozen and the remaining drivers continue to discipline the system clock with a minimum of residual error.</p>
- <h4 id="file">Files Which Need to be Changed</h4>
- <p>A new reference clock implementation needs to supply, in addition to the driver itself, several changes to existing files.</p>
- <dl>
- <dt><tt>./include/ntp.h</tt>
- <dd>The reference clock type defines are used in many places. Each driver is assigned a unique type number. Unused numbers are clearly marked in the list. A unique <tt>REFCLK_<i>xxxx</i></tt> identification code should be recorded in the list opposite its assigned type number.
- <dt><tt>./libntp/clocktypes.c</tt>
- <dd>The <tt>./libntp/clktype</tt> array is used by certain display functions. A unique short-form name of the driver should be entered together with its assigned identification code.
- <dt><tt>./ntpd/ntp_control.c</tt>
- <dd>The <tt>clocktypes</tt> array is used for certain control message displays functions. It should be initialized with the reference clock class assigned to the driver, as per the NTP specification RFC-1305. See the <tt>./include/ntp_control.h</tt> header file for the assigned classes.
- <dt><tt>./ntpd/refclock_conf.c</tt>
- <dd>This file contains a list of external structure definitions which are conditionally defined. A new set of entries should be installed similar to those already in the table. The <tt>refclock_conf</tt> array is a set of pointers to transfer vectors in the individual drivers. The external name of the transfer vector should be initialized in correspondence with the type number.
- <dt><tt>./configure.in</tt>
- <dd>This is a configuration file used by the autoconfigure scheme. Add lines similar to the following:
- <pre>
+ <body>
+ <h3>How to Write a Reference Clock Driver</h3>
+ <img src="pic/pogo4.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
+ <p>You need a little magic.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:39</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links10.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#desc">Description</a>
+ <li class="inline"><a href="#file">Files Which Need to be Changed</a>
+ <li class="inline"><a href="#intf">Interface Routine Overview</a>
+ </ul>
+ <hr>
+ <h4 id="desc">Description</h4>
+ <p>NTP reference clock support maintains the fiction that the clock is actually an ordinary peer in the NTP tradition, but operating at a synthetic stratum of zero. The entire suite of algorithms used to filter the received data, select the best clocks or peers and combine them to produce a system clock correction operate just like ordinary NTP peers. In this way, defective clocks can be detected and removed from the peer population. As no packets are exchanged with a reference clock; however, the transmit, receive and packet procedures are replaced with separate code to simulate them.</p>
+ <p>It is important to understand how the NTP clock driver interface works. The driver assumes three timescales: standard time maintained by a distant laboratory such as USNO or NIST, reference time maintained by the external radio and the system time maintained by NTP. The radio synchronizes reference time and frequency to standard time via radio, satellite or modem. As the transmission means may not always be reliable, most radios continue to provide clock updates for some time after signal loss using an internal reference oscillator. In such cases the radio may or may not reveal the time since last synchronized and/or the estimated time error.</p>
+ <p>All three timescales run <i>only</i> in Coordinated Universal Time (UTC), 24-hour format, and are not adjusted for local timezone or standard/daylight time. The local timezone, standard/daylight indicator and year, if provided, are ignored. However, it is important to determine whether a leap second is to be inserted in the UTC timescale in the near future so NTP can insert it in the system timescale at the appropriate epoch.</p>
+ <p>The NTP clock driver synchronizes the system time and frequency to the radio via serial or parallel port, PPS signal or other means. The driver routinely checks the radio timecode string or status indicators to determine whether it is operating correctly or not. If it is, the driver decodes the radio timecode in days, hours, minutes, seconds and nanoseconds and provides these data with the NTP receive timestamp corresponding to the on-time epoch of the timecode. The driver interface computes the difference between the timecode time and NTP timestamp and saves the difference in a circular buffer for later processing. Once each poll interval, usually 64 s, the driver provides ancillary data including leap bits and last reference time to the interface. The interface processes the circular buffer using a median/trimmed mean algorithm to extract the best estimate and provides this and the ancillary data to the clock filter as with ordinary NTP peers.</p>
+ <p>The audio drivers are designed to look like a typical external radio in that the reference oscillator is derived from the audio codec oscillator and separate from the system clock oscillator. In the WWV and IRIG drivers, the codec oscillator is disciplined in frequency to the standard timescale via radio or local sources and can be assumed to have the same reliability and accuracy as an external radio. In these cases the driver continues to provide updates to the clock filter even if the WWV or IRIG signals are lost. However, the interface is provided the last reference time when the signals were received and increases the dispersion as expected with an ordinary peer.</p>
+ <p>The best way to understand how the clock drivers work is to study the <tt>ntp_refclock.c</tt> module and one of the drivers already implemented, such as <tt>refclock_wwvb.c</tt>. Routines <tt>refclock_transmit()</tt> and <tt>refclock_receive()</tt> maintain the peer variables in a state analogous to a network peer and pass received data on through the clock filters. Routines <tt>refclock_peer()</tt> and <tt>refclock_unpeer()</tt> initialize and terminate reference clock associations, should this ever be necessary. A set of utility routines is included to open serial devices, process sample data, edit input lines to extract embedded timestamps and to perform various debugging functions.</p>
+ <p>The main interface used by these routines is the <tt>refclockproc</tt> structure, which contains for most drivers the decimal equivalents of the year, day, month, hour, second and nanosecond decoded from the radio timecode. Additional information includes the receive timestamp, reference timestamp, exception reports, statistics tallies, etc. The support routines are passed a pointer to the <tt>peer</tt> structure, which is used for all peer-specific processing and contains a pointer to the <tt>refclockproc</tt> structure, which in turn contains a pointer to the unit structure, if used. For legacy purposes, a table <tt>typeunit[type][unit]</tt> contains the peer structure pointer for each configured clock type and unit. This structure should not be used for new implementations.</p>
+ <p>The reference clock interface supports auxiliary functions to support in-stream timestamping, pulse-per-second (PPS) interfacing and precision time kernel support. In most cases the drivers do not need to be aware of them, since they are detected at autoconfigure time and loaded automatically when the device is opened. These include the <tt>tty_clk</tt> STREAMS module and <tt>ppsapi</tt> PPS interface described in the <a href="ldisc.html">Line Disciplines and Streams Modules</a> page. The <tt>tty_clk</tt> module reduces latency errors due to the operating system and serial port code in slower systems. The <tt>ppsapi</tt> PPS interface replaces the <tt>ppsclock</tt> STREAMS module and is expected to become the IETF standard cross-platform interface for PPS signals. In either case, the PPS signal can be connected via a level converter/pulse generator described in the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page.</p>
+ <p>Radio and modem reference clocks by convention have addresses in the form <tt>127.127.<i>t</i>.<i>u</i></tt>, where <i>t</i> is the clock type and <i>u</i> in the range 0-3 is used to distinguish multiple instances of clocks of the same type. Most clocks require a serial or parallel port or special bus peripheral. The particular device is normally specified by adding a soft link <tt>/dev/device<i>d</i>d</tt> to the particular hardware device involved, where <tt><i>d</i></tt> corresponds to the unit number.</p>
+ <p>By convention, reference clock drivers are named in the form <tt>refclock_<i>xxxx</i>.c</tt>, where <i>xxxx</i> is a unique string. Each driver is assigned a unique type number, long-form driver name, short-form driver name and device name. The existing assignments are in the <a href="refclock.html">Reference Clock Drivers</a> page and its dependencies. All drivers supported by the particular hardware and operating system are automatically detected in the autoconfigure phase and conditionally compiled. They are configured when the daemon is started according to the configuration file, as described in the <a href="build/config.html">Configuration Options</a> page.</p>
+ <p>The standard clock driver interface includes a set of common support routines some of which do such things as start and stop the device, open the serial port, and establish special functions such as PPS signal support. Other routines read and write data to the device and process time values. Most drivers need only a little customizing code to, for instance, transform idiosyncratic timecode formats to standard form, poll the device as necessary, and handle exception conditions. A standard interface is available for remote debugging and monitoring programs, such as <tt>ntpq</tt> and <tt>ntpdc</tt>, as well as the <tt>filegen</tt> facility, which can be used to record device status on a continuous basis.</p>
+ <p>The general organization of a typical clock driver includes a receive-interrupt routine to read a timecode from the I/O buffer and convert to internal format, generally in days, hours, minutes, seconds and fraction. Some timecode formats include provisions for leap-second warning and determine the clock hardware and software health. The interrupt routine then calls <tt>refclock_process()</tt> with these data and the timestamp captured at the on-time character of the timecode. This routine saves each sample as received in a circular buffer, which can store from a few up to 60 samples, in cases where the timecodes arrive one per second.</p>
+ <p>The <tt>refclock_transmit()</tt> routine in the interface is called by the system at intervals defined by the poll interval in the peer structure, generally 64 s. This routine in turn calls the transmit poll routine in the driver. In the intended design, the driver calls the <tt>refclock_receive()</tt> to process the offset samples that have accumulated since the last poll and produce the final offset and variance. The samples are processed by recursively discarding median outlyers until about 60 percent of samples remain, then averaging the surviving samples. When a reference clock must be explicitly polled to produce a timecode, the driver can reset the poll interval so that the poll routine is called a specified number of times at 1-s intervals.</p>
+ <p>The interface code and this documentation have been developed over some time and required not a little hard work converting old drivers, etc. Should you find success writing a driver for a new radio or modem service, please consider contributing it to the common good. Send the driver file itself and patches for the other files to Dave Mills (mills@udel.edu).</p>
+ <h4>Conventions, Fudge Factors and Flags</h4>
+ <p>Most drivers support manual or automatic calibration for systematic offset bias using values encoded in the <tt>fudge</tt> configuration command. By convention, the <tt>time1</tt> value defines the calibration offset in seconds. For those drivers that support statistics collection using the <tt>filegen</tt> utility and the <tt>clockstats</tt> file, the <tt>flag4</tt> switch enables the utility. When a PPS signal is available, a special automatic calibration facility is provided. If the <tt>flag1</tt> switch is set and the PPS signal is actively disciplining the system time, the calibration value is automatically adjusted to maintain a residual offset of zero. Should the PPS signal or the prefer peer fail, the adjustment is frozen and the remaining drivers continue to discipline the system clock with a minimum of residual error.</p>
+ <h4 id="file">Files Which Need to be Changed</h4>
+ <p>A new reference clock implementation needs to supply, in addition to the driver itself, several changes to existing files.</p>
+ <dl>
+ <dt><tt>./include/ntp.h</tt>
+ <dd>The reference clock type defines are used in many places. Each driver is assigned a unique type number. Unused numbers are clearly marked in the list. A unique <tt>REFCLK_<i>xxxx</i></tt> identification code should be recorded in the list opposite its assigned type number.
+ <dt><tt>./libntp/clocktypes.c</tt>
+ <dd>The <tt>./libntp/clktype</tt> array is used by certain display functions. A unique short-form name of the driver should be entered together with its assigned identification code.
+ <dt><tt>./ntpd/ntp_control.c</tt>
+ <dd>The <tt>clocktypes</tt> array is used for certain control message displays functions. It should be initialized with the reference clock class assigned to the driver, as per the NTP specification RFC-1305. See the <tt>./include/ntp_control.h</tt> header file for the assigned classes.
+ <dt><tt>./ntpd/refclock_conf.c</tt>
+ <dd>This file contains a list of external structure definitions which are conditionally defined. A new set of entries should be installed similar to those already in the table. The <tt>refclock_conf</tt> array is a set of pointers to transfer vectors in the individual drivers. The external name of the transfer vector should be initialized in correspondence with the type number.
+ <dt><tt>./configure.in</tt>
+ <dd>This is a configuration file used by the autoconfigure scheme. Add lines similar to the following:
+ <pre>
AC_MSG_CHECKING(FOO clock_description)
AC_ARG_ENABLE(FOO,
AC_HELP_STRING([--enable-FOO], [x clock_description]),
@@ -64,45 +65,45 @@
fi
AC_MSG_RESULT($ntp_ok)
</pre>
- <dd>(Note that <tt>$ntp_eac</tt> is the value from <tt>--{dis,en}able-all-clocks</tt> for non-PARSE clocks and <tt>$ntp_eacp</tt> is the value from <tt>--{dis,en}able-parse-clocks</tt> for PARSE clocks. See the documentation on the autoconf and automake tools from the GNU distributions.)
- <dt><tt>./ntpd/Makefile.am</tt>
- <dd>This is the makefile prototype used by the autoconfigure scheme. Add the driver file name to the entries already in the <tt>ntpd_SOURCES</tt> list.
- <dd>Do the following sequence of commands:
- <pre>
+ <dd>(Note that <tt>$ntp_eac</tt> is the value from <tt>--{dis,en}able-all-clocks</tt> for non-PARSE clocks and <tt>$ntp_eacp</tt> is the value from <tt>--{dis,en}able-parse-clocks</tt> for PARSE clocks. See the documentation on the autoconf and automake tools from the GNU distributions.)
+ <dt><tt>./ntpd/Makefile.am</tt>
+ <dd>This is the makefile prototype used by the autoconfigure scheme. Add the driver file name to the entries already in the <tt>ntpd_SOURCES</tt> list.
+ <dd>Do the following sequence of commands:
+ <pre>
autoreconf
configure
</pre>
- <dd>or simply run <tt>make</tt>, which will do this command sequence automatically.
- </dl>
- <h4 id="intf">Interface Routine Overview</h4>
- <dl>
- <dt><tt>refclock_newpeer</tt> - initialize and start a reference clock
- <dd>This routine allocates and initializes the interface structure which supports a reference clock in the form of an ordinary NTP peer. A driver-specific support routine completes the initialization, if used. Default peer variables which identify the clock and establish its reference ID and stratum are set here. It returns one if success and zero if the clock address is invalid or already running, insufficient resources are available or the driver declares a bum rap.
- <dt><tt>refclock_unpeer</tt> - shut down a clock
- <dd>This routine is used to shut down a clock and return its resources to the system.
- <dt><tt>refclock_transmit</tt> - simulate the transmit procedure
- <dd>This routine implements the NTP transmit procedure for a reference clock. This provides a mechanism to call the driver at the NTP poll interval, as well as provides a reachability mechanism to detect a broken radio or other madness.
- <dt><tt>refclock_sample</tt> - process a pile of samples from the clock
- <dd>This routine converts the timecode in the form days, hours, minutes, seconds, milliseconds/microseconds to internal timestamp format. It then calculates the difference from the receive timestamp and assembles the samples in a shift register. It implements a recursive median filter to suppress spikes in the data, as well as determine a rough dispersion estimate. A configuration constant time adjustment <tt>fudgetime1</tt> can be added to the final offset to compensate for various systematic errors. The routine returns one if success and zero if failure due to invalid timecode data or very noisy offsets.
- <dd>Note that no provision is included for the year, as provided by some (but not all) radio clocks. Ordinarily, the year is implicit in the Unix file system and hardware/software clock support, so this is ordinarily not a problem. Nevertheless, the absence of the year should be considered more a bug than a feature and may be supported in future.
- <dt><tt>refclock_receive</tt> - simulate the receive and packet procedures
- <dd>This routine simulates the NTP receive and packet procedures for a reference clock. This provides a mechanism in which the ordinary NTP filter, selection and combining algorithms can be used to suppress misbehaving radios and to mitigate between them when more than one is available for backup.
- <dt><tt>refclock_gtlin</tt> - groom next input line and extract timestamp
- <dd>This routine processes the timecode received from the clock and removes the parity bit and control characters. If a timestamp is present in the timecode, as produced by the <tt>tty_clk</tt> line discipline/streams module, it returns that as the timestamp; otherwise, it returns the buffer timestamp. The routine return code is the number of characters in the line.
- <dt><tt>refclock_open</tt> - open serial port for reference clock
- <dd>This routine opens a serial port for I/O and sets default options. It returns the file descriptor if success and zero if failure.
- <dt><tt>refclock_ioctl</tt> - set serial port control functions
- <dd>This routine attempts to hide the internal, system-specific details of serial ports. It can handle POSIX (<tt>termios</tt>), SYSV (<tt>termio</tt>) and BSD (<tt>sgtty</tt>) interfaces with varying degrees of success. The routine sets up the <tt>tty_clk, chu_clk</tt> and <tt>ppsclock</tt> streams module/line discipline, if compiled in the daemon and requested in the call. The routine returns one if success and zero if failure.
- <dt><tt>refclock_control</tt> - set and/or return clock values
- <dd>This routine is used mainly for debugging. It returns designated values from the interface structure that can be displayed using ntpdc and the clockstat command. It can also be used to initialize configuration variables, such as <tt>fudgetimes, fudgevalues,</tt> reference ID and stratum.
- <dt><tt>refclock_buginfo</tt> - return debugging info
- <dd>This routine is used mainly for debugging. It returns designated values from the interface structure that can be displayed using <tt>ntpdc</tt> and the <tt>clkbug</tt> command.
- </dl>
- <hr>
- <center>
- <img src="pic/pogo1a.gif" alt="gif"></center>
- <br>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <dd>or simply run <tt>make</tt>, which will do this command sequence automatically.
+ </dl>
+ <h4 id="intf">Interface Routine Overview</h4>
+ <dl>
+ <dt><tt>refclock_newpeer</tt> - initialize and start a reference clock
+ <dd>This routine allocates and initializes the interface structure which supports a reference clock in the form of an ordinary NTP peer. A driver-specific support routine completes the initialization, if used. Default peer variables which identify the clock and establish its reference ID and stratum are set here. It returns one if success and zero if the clock address is invalid or already running, insufficient resources are available or the driver declares a bum rap.
+ <dt><tt>refclock_unpeer</tt> - shut down a clock
+ <dd>This routine is used to shut down a clock and return its resources to the system.
+ <dt><tt>refclock_transmit</tt> - simulate the transmit procedure
+ <dd>This routine implements the NTP transmit procedure for a reference clock. This provides a mechanism to call the driver at the NTP poll interval, as well as provides a reachability mechanism to detect a broken radio or other madness.
+ <dt><tt>refclock_sample</tt> - process a pile of samples from the clock
+ <dd>This routine converts the timecode in the form days, hours, minutes, seconds, milliseconds/microseconds to internal timestamp format. It then calculates the difference from the receive timestamp and assembles the samples in a shift register. It implements a recursive median filter to suppress spikes in the data, as well as determine a rough dispersion estimate. A configuration constant time adjustment <tt>fudgetime1</tt> can be added to the final offset to compensate for various systematic errors. The routine returns one if success and zero if failure due to invalid timecode data or very noisy offsets.
+ <dd>Note that no provision is included for the year, as provided by some (but not all) radio clocks. Ordinarily, the year is implicit in the Unix file system and hardware/software clock support, so this is ordinarily not a problem. Nevertheless, the absence of the year should be considered more a bug than a feature and may be supported in future.
+ <dt><tt>refclock_receive</tt> - simulate the receive and packet procedures
+ <dd>This routine simulates the NTP receive and packet procedures for a reference clock. This provides a mechanism in which the ordinary NTP filter, selection and combining algorithms can be used to suppress misbehaving radios and to mitigate between them when more than one is available for backup.
+ <dt><tt>refclock_gtlin</tt> - groom next input line and extract timestamp
+ <dd>This routine processes the timecode received from the clock and removes the parity bit and control characters. If a timestamp is present in the timecode, as produced by the <tt>tty_clk</tt> line discipline/streams module, it returns that as the timestamp; otherwise, it returns the buffer timestamp. The routine return code is the number of characters in the line.
+ <dt><tt>refclock_open</tt> - open serial port for reference clock
+ <dd>This routine opens a serial port for I/O and sets default options. It returns the file descriptor if success and zero if failure.
+ <dt><tt>refclock_ioctl</tt> - set serial port control functions
+ <dd>This routine attempts to hide the internal, system-specific details of serial ports. It can handle POSIX (<tt>termios</tt>), SYSV (<tt>termio</tt>) and BSD (<tt>sgtty</tt>) interfaces with varying degrees of success. The routine sets up the <tt>tty_clk, chu_clk</tt> and <tt>ppsclock</tt> streams module/line discipline, if compiled in the daemon and requested in the call. The routine returns one if success and zero if failure.
+ <dt><tt>refclock_control</tt> - set and/or return clock values
+ <dd>This routine is used mainly for debugging. It returns designated values from the interface structure that can be displayed using ntpdc and the clockstat command. It can also be used to initialize configuration variables, such as <tt>fudgetimes, fudgevalues,</tt> reference ID and stratum.
+ <dt><tt>refclock_buginfo</tt> - return debugging info
+ <dd>This routine is used mainly for debugging. It returns designated values from the interface structure that can be displayed using <tt>ntpdc</tt> and the <tt>clkbug</tt> command.
+ </dl>
+ <hr>
+ <center>
+ <img src="pic/pogo1a.gif" alt="gif"></center>
+ <br>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/index.html b/contrib/ntp/html/index.html
index 57fd25a..5c19313 100644
--- a/contrib/ntp/html/index.html
+++ b/contrib/ntp/html/index.html
@@ -2,100 +2,100 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>The Network Time Protocol (NTP) Distribution</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>The Network Time Protocol (NTP) Distribution</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>The Network Time Protocol (NTP) Distribution</h3>
- <img src="pic/barnstable.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html"><i>P.T. Bridgeport Bear</i>; from <i>Pogo</i>, Walt Kelly</a>
- <p>Pleased to meet you.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:12 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
- <br clear="left">
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#intro">Introduction</a>
- <li class="inline"><a href="#build">Building and Installing NTP</a>
- <li class="inline"><a href="#conf">Configuring Clients and Servers</a>
- <li class="inline"><a href="#conf">Configuring Clients and Servers</a>
- <li class="inline"><a href="#prog">Program Manual Pages</a>
- <li class="inline"><a href="#docs">Supporting Documentation</a>
- <li class="inline"><a href="#back">Background Information</a>
- <li class="inline"><a href="#app">Application Notes</a>
- </ul>
- <hr>
- <h4 id="intro">Introduction</h4>
- <p>Note: The software contained in this distribution is available without charge under the conditions set forth in the <a href="copyright.html">Copyright Notice</a>.</p>
- <p>The Network Time Protocol (NTP) is used to synchronize the time of a computer client or server to another server or reference time source, such as a radio or satellite receiver or modem. It provides accuracies typically within a millisecond on LANs and up to a few tens of milliseconds on WANs relative to Coordinated Universal Time (UTC) via a Global Positioning Service (GPS) receiver, for example. Typical NTP configurations utilize multiple redundant servers and diverse network paths in order to achieve high accuracy and reliability.</p>
- <p>This software release implements NTP Version 4 (NTPv4), but is in general backwards compatible with previous versions except NTP Version 1, support for which is no longer viable. NTPv4 includes support for both symmetric key and public key cryptography to prevent accidental or malicious protocol attacks, as well as automatic server discovery using IP multicast means. This release includes full support for the IPv6 address family, where the operating system supports it, as well as the default IPv4 address family. Either or both families can be used at the same time on the same machine.</p>
- <p>Background information on computer network time synchronization can be found on the <a href="http://www.eecis.udel.edu/%7emills/exec.html">Executive Summary - Computer Network Time Synchronization</a> page. Discussion on protocol conformance issues and interoperability with previous NTP versions can be found on the <a href="http://www.eecis.udel.edu/%7emills/biblio.html">Protocol Conformance Statement</a> page. Discussion on how NTP reckons the time can be found on the <a href="http://www.eecis.udel.edu/%7emills/leap.html">NTP Timescale and Leap Seconds</a> page. Background information, bibliography and briefing slides suitable for presentations can be found on the <a href="http://www.eecis.udel.edu/%7emills/ntp.html">Network Time Synchronization Project</a> page. Additional information can be found at the NTP web site <a href="http://www.ntp.org">www.ntp.org</a>. Please send bug reports to <a href="mailto:bugs@mail.ntp.org">&lt;bugs@mail.ntp.org&gt;</a>.</p>
- <h4 id="build">Building and Installing NTP</h4>
- <p>NTP supports Unix and Windows (NT4 and 2000) systems. The <a href="build.html">Building and Installing the Distribution</a> page presents an overview of the procedures for compiling the distribution and installing it on a typical client or server. The build procedures inspect the system hardware and software environment and automatically select the appropriate options for that environment. While these procedures work with most computers and operating systems marketed today, exceptions requiring manual intervention do exist, as documented on the <a href="config.html">Configuration Options</a> and <a href="release.html">Release Notes</a> pages.</p>
- <p>Bringing up a NTP primary server requires a radio or satellite receiver or modem. The distribution includes hardware drivers for some forty radio and satellite clocks and modem services. A list of supported drivers is given on the <a href="refclock.html">Reference Clock Drivers</a> page. It is also possible to use an otherwise undisciplined machine as a primary or backup server, as described on the <a href="drivers/driver1.html">Undisciplined Local Clock</a> page. For most popular workstations marketed by Sun, Silicon Graphics and Hewlett Packard, as well as widely available Unix clones such as FreeBSD and Linux, the automatic build procedures select all drivers that run on the target machine. While this increases the size of the executable binary somewhat, individual drivers can be included or excluded using the configure utility documented in the Configuration Options page.</p>
- <p>Some programs included in this distribution use cryptographic algorithms to verify authenticity and credentials. Where local security policy permits relatively weak symmetric key cryptography, the required software is included in this distribution. However, where local policy requires stronger public key cryptography, additional software not in this distribution is required. This distribution uses the OpenSSL library available from <a href="http://www.openssl.org">http://www.openssl.org</a>. This library is also used by the Secure Shell facility, so is often already installed on Unix workstations and servers. It includes support for most message digest and digital signature algorithms used in the industry, as well as X.509 certificate generation, signing and verification.</p>
- <p>While public key cryptography is optional but highly recommended for all NTP operations, it is required for the NTPv4 Autokey protocol described on the <a href="http://www.eecis.udel.edu/%7emills/autokey.html">Autonomous Authentication</a> page and is an integral component of the generic automatic configuration scheme described on the <a href="http://www.eecis.udel.edu/%7emills/autocfg.html">Autonomous Configuration</a> page. In addition, access can be restricted in various ways described on the <a href="accopt.html">Access Control Options</a> page.</p>
- <h4 id="conf">Configuring Clients and Servers</h4>
- <p>NTP is by its very nature a complex distributed network application and can be configured and used for a great many widely divergent timekeeping scenarios. The documentation presented on these pages attempts to cover the entire suite of configuration, operation and maintenance facilities which this distribution supports. However, most applications will need only a few of these facilities. If this is the case, the <a href="quick.html">Quick Start</a> page may be useful to get a simple workstation on the air with an existing server.</p>
- <p>However, in order to participate in the existing NTP synchronization subnet and obtain accurate, reliable time, it is usually necessary to construct an appropriate configuration file, commonly called <tt>ntp.conf</tt>, which establishes the servers and/or external receivers or modems to be used by this particular machine. Directions for constructing this file are in the <a href="notes.html">Notes on Configuring NTP and Setting up a NTP Subnet</a> page. However, in many common cases involving simple network topologies and workstations, the configuration data can be specified entirely on the command line for the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a>.</p>
- <p>The most important factor in providing accurate, reliable time is the selection of modes and servers to be used in the configuration file. A discussion on the available modes is on the <a href="assoc.html">Association Management</a> page. NTP support for one or more computers is normally engineered as part of the existing public NTP synchronization subnet. The public subnet consists of a multiply redundant hierarchy of servers and clients, with each level in the hierarchy identified by stratum number. Primary servers operate at stratum one and provide synchronization to secondary servers operating at stratum two and so on to higher strata. In this hierarchy, clients are simply servers that have no dependents.</p>
- <p>Configuring a corporate or campus NTP subnet can be an engineering challenge. NTP contains many features designed to survive system and network failures, software bugs, clock errors and hacker attacks. Surviving these hazards requires intricate design of the timekeeping network using good principles of server redundancy and path diversity. The Manycast mode, new to NTPv4, is designed to track the current server and network states and adjust the client/server configuration for the best available accuracy and reliability. More information on the Manycast mode is on the <a href="authopt.html">Athentication Options</a> and <a href="manyopt.html">Automatic NTP Configuration Options</a> pages.</p>
- <p>The NTP subnet in early 2003 includes well over a hundred public primary (stratum 1) servers synchronized directly to UTC by radio, satellite or modem and located in every continent of the globe, including Antarctica. Normally, client workstations and servers with a relatively small number of clients do not synchronize to primary servers. There are well over a hundred public secondary (stratum 2) servers synchronized to the primary servers and providing synchronization to a total well over 100,000 clients and servers in the Internet. The current lists are maintained on the <a href="http://www.eecis.udel.edu/%7emills/ntp/index.html">Information on Time and Frequency Services</a> page, which is updated frequently. There are thousands upon thousands of private primary and secondary servers not normally available to the public, many hiding behind firewalls. Clients are strongly discouraged against using these servers, since they sometimes hide in little ghettos behind dinky links to the outside world and unwanted traffic can bring up expensive ISDN lines, causing much grief and frustration. There are defensive means described on the Access Control Options page, including the Kiss-of-Death packet.</p>
- <h4 id="prob">Resolving Problems</h4>
- <p>Like other things Internet, the NTP synchronization subnets tend to be large and devilishly intricate, with many opportunities for misconfiguration and network problems. The NTP engineering model is specifically designed to help isolate and repair such problems using an integrated management protocol, together with a suite of monitoring and debugging tools. There is an optional statistics data recording facility which can be used to record normal and aberrant operation, log problems to the system log facility, and retain records of client access. The <a href="debug.html">NTP Debugging Techniques</a> and <a href="hints.html">Hints and Kinks</a> pages contain useful information for identifying problems and devising solutions. In extreme cases, problems can be detected through the use of the <a href="ntpdsim.html"><tt>ntpdsim</tt> - Network Time Protocol (NTP) simulator</a> included in this software distribution.</p>
- <p>Users are requested to report bugs, offer suggestions and contribute additions to this distribution. The <a href="patches.html">Patching Procedures</a> page suggests procedures which greatly simplify distribution updates, while the <a href="porting.html">Porting Hints</a> page suggest ways to make porting this code to new hardware and operating systems easier. Additional information on reference clock driver construction and debugging can be found in the <a href="rdebug.html">Debugging Hints for Reference Clock Drivers</a> page.</p>
- <h4 id="prog">Program Manual Pages</h4>
- <ul>
- <li class="inline"><a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a>
- <li class="inline"><a href="ntpq.html"><tt>ntpq</tt> - standard NTP query program</a>
- <li class="inline"><a href="ntpdc.html"><tt>ntpdc</tt> - special NTP query program</a>
- <li class="inline"><a href="ntpdate.html"><tt>ntpdate</tt> - set the date and time via NTP</a>
- <li class="inline"><a href="ntptrace.html"><tt>ntptrace</tt> - trace a chain of NTP servers back to the primary source</a>
- <li class="inline"><a href="tickadj.html"><tt>tickadj</tt> - set time-related kernel variables</a>
- <li class="inline"><a href="ntptime.html"><tt>ntptime</tt> - read kernel time variables</a>
- <li class="inline"><a href="keygen.html"><tt>ntp-genkeys</tt> - generate public and private keys</a>
- <li class="inline"><a href="ntpdsim.html"><tt>ntpdsim</tt> - Network Time Protocol (NTP) simulator</a>
- </ul>
- <h4 id="docs">Supporting Documentation</h4>
- <ul>
- <li class="inline"><a href="copyright.html">Copyright Notice</a>
- <li class="inline"><a href="notes.html">Notes on Configuring NTP and Setting up a NTP Subnet</a>
- <li class="inline"><a href="release.html">NTP Version 4 Release Notes</a>
- <li class="inline"><a href="build.html">Building and Installing the Distribution</a>
- <li class="inline"><a href="config.html">Configuration Options</a>
- <li class="inline"><a href="refclock.html">Reference Clock Drivers</a>
- <li class="inline"><a href="debug.html">NTP Debugging Techniques</a>
- <li class="inline"><a href="rdebug.html">Debugging Reference Clock Drivers</a>
- <li class="inline"><a href="msyslog.html"><tt>ntpd</tt> System Log Messages</a>
- <li class="inline"><a href="patches.html">Patching Procedures</a>
- <li class="inline"><a href="hints.html">Hints and Kinks</a>
- <li class="inline"><a href="porting.html">Porting Hints</a>
- </ul>
- <h4 id="back">Background Information</h4>
- <ul>
- <li class="inline"><a href="http://www.eecis.udel.edu/%7emills/ntp.html">NTP Project and Reference Library</a>
- <li class="inline"><a href="http://www.eecis.udel.edu/%7emills/exec.html">Executive Summary - Computer Network Time Synchronization</a>
- <li class="inline"><a href="http://www.eecis.udel.edu/%7emills/y2k.html">The Network Time Protocol Timescale and Era Numbering</a>
- <li class="inline"><a href="http://www.eecis.udel.edu/%7emills/leap.html">NTP Timescale and Leap Seconds</a>
- <li class="inline"><a href="http://www.eecis.udel.edu/%7emills/biblio.html">Protocol Conformance Statement</a>
- </ul>
- <h4 id="app">Application Notes</h4>
- <ul>
- <li class="inline"><a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a>
- <li class="inline"><a href="assoc.html">Association Management</a>
- <li class="inline"><a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a>
- <li class="inline"><a href="measure.html">Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation</a>
- <li class="inline"><a href="kern.html">Kernel Model for Precision Timekeeping</a>
- </ul>
- <hr>
- <div align="center">
- <img src="pic/pogo1a.gif" alt="gif"></div>
- <br>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>The Network Time Protocol (NTP) Distribution</h3>
+ <img src="pic/barnstable.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html"><i>P.T. Bridgeport Bear</i>; from <i>Pogo</i>, Walt Kelly</a>
+ <p>Pleased to meet you.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:39</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
+ <br clear="left">
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#intro">Introduction</a>
+ <li class="inline"><a href="#build">Building and Installing NTP</a>
+ <li class="inline"><a href="#conf">Configuring Clients and Servers</a>
+ <li class="inline"><a href="#prog">Program Manual Pages</a>
+ <li class="inline"><a href="#docs">Supporting Documentation</a>
+ <li class="inline"><a href="#back">Background Information</a>
+ <li class="inline"><a href="#app">Application Notes</a>
+ </ul>
+ <hr>
+ <h4 id="intro">Introduction</h4>
+ <p>Note: The software contained in this distribution is available without charge under the conditions set forth in the <a href="copyright.html">Copyright Notice</a>.</p>
+ <p>The Network Time Protocol (NTP) is used to synchronize the time of a computer client or server to another server or reference time source, such as a radio or satellite receiver or modem. It provides accuracies typically within a millisecond on LANs and up to a few tens of milliseconds on WANs relative to Coordinated Universal Time (UTC) via a Global Positioning Service (GPS) receiver, for example. Typical NTP configurations utilize multiple redundant servers and diverse network paths in order to achieve high accuracy and reliability.</p>
+ <p>This software release implements NTP Version 4 (NTPv4), but is in general backwards compatible with previous versions except NTP Version 1, support for which is no longer viable. NTPv4 includes support for both symmetric key and public key cryptography to prevent accidental or malicious protocol attacks, as well as automatic server discovery using IP multicast means. This release includes full support for the IPv6 address family, where the operating system supports it, as well as the default IPv4 address family. Either or both families can be used at the same time on the same machine.</p>
+ <p>Background information on computer network time synchronization can be found on the <a href="http://www.eecis.udel.edu/%7emills/exec.html">Executive Summary - Computer Network Time Synchronization</a> page. Discussion on protocol conformance issues and interoperability with previous NTP versions can be found on the <a href="http://www.eecis.udel.edu/%7emills/biblio.html">Protocol Conformance Statement</a> page. Discussion on how NTP reckons the time can be found on the <a href="http://www.eecis.udel.edu/%7emills/leap.html">NTP Timescale and Leap Seconds</a> page. Background information, bibliography and briefing slides suitable for presentations can be found on the <a href="http://www.eecis.udel.edu/%7emills/ntp.html">Network Time Synchronization Project</a> page. Additional information can be found at the NTP web site <a href="http://www.ntp.org">www.ntp.org</a>. Please send bug reports to <a href="mailto:bugs@mail.ntp.org">&lt;bugs@mail.ntp.org&gt;</a>.</p>
+ <h4 id="build">Building and Installing NTP</h4>
+ <p>NTP supports Unix and Windows (XP, NT4 and 2000) systems. The <a href="build/build.html">Building and Installing the Distribution</a> page presents an overview of the procedures for compiling the distribution and installing it on a typical client or server. The build procedures inspect the system hardware and software environment and automatically select the appropriate options for that environment. While these procedures work with most computers and operating systems marketed today, exceptions requiring manual intervention do exist, as documented on the <a href="build/config.html">Configuration Options</a> and <a href="release.html">Release Notes</a> pages.</p>
+ <p>Bringing up a NTP primary server requires a radio or satellite receiver or modem. The distribution includes hardware drivers for some forty radio and satellite clocks and modem services. A list of supported drivers is given on the <a href="refclock.html">Reference Clock Drivers</a> page. It is also possible to use an otherwise undisciplined machine as a primary or backup server, as described on the <a href="drivers/driver1.html">Undisciplined Local Clock</a> page. For most popular workstations marketed by Sun, Silicon Graphics and Hewlett Packard, as well as widely available Unix clones such as FreeBSD and Linux, the automatic build procedures select all drivers that run on the target machine. While this increases the size of the executable binary somewhat, individual drivers can be included or excluded using the configure utility documented in the Configuration Options page.</p>
+ <p>Some programs included in this distribution use cryptographic algorithms to verify authenticity and credentials. Where local security policy permits relatively weak symmetric key cryptography, the required software is included in this distribution. However, where local policy requires stronger public key cryptography, additional software not in this distribution is required. This distribution uses the OpenSSL library available from <a href="http://www.openssl.org">http://www.openssl.org</a>. This library is also used by the Secure Shell facility, so is often already installed on Unix workstations and servers. It includes support for most message digest and digital signature algorithms used in the industry, as well as X.509 certificate generation, signing and verification.</p>
+ <p>While public key cryptography is optional but highly recommended for all NTP operations, it is required for the NTPv4 Autokey protocol described on the <a href="http://www.eecis.udel.edu/%7emills/autokey.html">Autonomous Authentication</a> page and is an integral component of the generic automatic configuration scheme described on the <a href="http://www.eecis.udel.edu/%7emills/autocfg.html">Autonomous Configuration</a> page. In addition, access can be restricted in various ways described on the <a href="accopt.html">Access Control Options</a> page.</p>
+ <h4 id="conf">Configuring Clients and Servers</h4>
+ <p>NTP is by its very nature a complex distributed network application and can be configured and used for a great many widely divergent timekeeping scenarios. The documentation presented on these pages attempts to cover the entire suite of configuration, operation and maintenance facilities which this distribution supports. However, most applications will need only a few of these facilities. If this is the case, the <a href="build/quick.html">Quick Start</a> page may be useful to get a simple workstation on the air with an existing server.</p>
+ <p>However, in order to participate in the existing NTP synchronization subnet and obtain accurate, reliable time, it is usually necessary to construct an appropriate configuration file, commonly called <tt>ntp.conf</tt>, which establishes the servers and/or external receivers or modems to be used by this particular machine. Directions for constructing this file are in the <a href="notes.html">Notes on Configuring NTP and Setting up a NTP Subnet</a> page. However, in many common cases involving simple network topologies and workstations, the configuration data can be specified entirely on the command line for the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a>.</p>
+ <p>The most important factor in providing accurate, reliable time is the selection of modes and servers to be used in the configuration file. A discussion on the available modes is on the <a href="assoc.html">Association Management</a> page. NTP support for one or more computers is normally engineered as part of the existing public NTP synchronization subnet. The public subnet consists of a multiply redundant hierarchy of servers and clients, with each level in the hierarchy identified by stratum number. Primary servers operate at stratum one and provide synchronization to secondary servers operating at stratum two and so on to higher strata. In this hierarchy, clients are simply servers that have no dependents.</p>
+ <p>Configuring a corporate or campus NTP subnet can be an engineering challenge. NTP contains many features designed to survive system and network failures, software bugs, clock errors and hacker attacks. Surviving these hazards requires intricate design of the timekeeping network using good principles of server redundancy and path diversity. The Manycast mode, new to NTPv4, is designed to track the current server and network states and adjust the client/server configuration for the best available accuracy and reliability. More information on the Manycast mode is on the <a href="authopt.html">Athentication Options</a> and <a href="manyopt.html">Automatic NTP Configuration Options</a> pages.</p>
+ <p>The NTP subnet in early 2003 includes well over a hundred public primary (stratum 1) servers synchronized directly to UTC by radio, satellite or modem and located in every continent of the globe, including Antarctica. Normally, client workstations and servers with a relatively small number of clients do not synchronize to primary servers. There are well over a hundred public secondary (stratum 2) servers synchronized to the primary servers and providing synchronization to a total well over 100,000 clients and servers in the Internet. The current lists are maintained on the <a href="http://www.eecis.udel.edu/%7emills/ntp/index.html">Information on Time and Frequency Services</a> page, which is updated frequently. There are thousands upon thousands of private primary and secondary servers not normally available to the public, many hiding behind firewalls. Clients are strongly discouraged against using these servers, since they sometimes hide in little ghettos behind dinky links to the outside world and unwanted traffic can bring up expensive ISDN lines, causing much grief and frustration. There are defensive means described on the Access Control Options page, including the Kiss-of-Death packet.</p>
+ <h4 id="prob">Resolving Problems</h4>
+ <p>Like other things Internet, the NTP synchronization subnets tend to be large and devilishly intricate, with many opportunities for misconfiguration and network problems. The NTP engineering model is specifically designed to help isolate and repair such problems using an integrated management protocol, together with a suite of monitoring and debugging tools. There is an optional statistics data recording facility which can be used to record normal and aberrant operation, log problems to the system log facility, and retain records of client access. The <a href="debug.html">NTP Debugging Techniques</a> and <a href="build/hints.html">Hints and Kinks</a> pages contain useful information for identifying problems and devising solutions. In extreme cases, problems can be detected through the use of the <a href="ntpdsim.html"><tt>ntpdsim</tt> - Network Time Protocol (NTP) simulator</a> included in this software distribution.</p>
+ <p>Users are requested to report bugs, offer suggestions and contribute additions to this distribution. The <a href="build/patches.html">Patching Procedures</a> page suggests procedures which greatly simplify distribution updates, while the <a href="build/porting.html">Porting Hints</a> page suggest ways to make porting this code to new hardware and operating systems easier. Additional information on reference clock driver construction and debugging can be found in the <a href="rdebug.html">Debugging Hints for Reference Clock Drivers</a> page.</p>
+ <h4 id="prog">Program Manual Pages</h4>
+ <ul>
+ <li class="inline"><a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a>
+ <li class="inline"><a href="ntpq.html"><tt>ntpq</tt> - standard NTP query program</a>
+ <li class="inline"><a href="ntpdc.html"><tt>ntpdc</tt> - special NTP query program</a>
+ <li class="inline"><a href="ntpdate.html"><tt>ntpdate</tt> - set the date and time via NTP</a>
+ <li class="inline"><a href="ntptrace.html"><tt>ntptrace</tt> - trace a chain of NTP servers back to the primary source</a>
+ <li class="inline"><a href="tickadj.html"><tt>tickadj</tt> - set time-related kernel variables</a>
+ <li class="inline"><a href="ntptime.html"><tt>ntptime</tt> - read kernel time variables</a>
+ <li class="inline"><a href="keygen.html"><tt>ntp-keygen</tt> - generate public and private keys</a>
+ <li class="inline"><a href="ntpdsim.html"><tt>ntpdsim</tt> - Network Time Protocol (NTP) simulator</a>
+ </ul>
+ <h4 id="docs">Supporting Documentation</h4>
+ <ul>
+ <li class="inline"><a href="copyright.html">Copyright Notice</a>
+ <li class="inline"><a href="notes.html">Notes on Configuring NTP and Setting up a NTP Subnet</a>
+ <li class="inline"><a href="release.html">NTP Version 4 Release Notes</a>
+ <li class="inline"><a href="build/build.html">Building and Installing the Distribution</a>
+ <li class="inline"><a href="build/config.html">Configuration Options</a>
+ <li class="inline"><a href="refclock.html">Reference Clock Drivers</a>
+ <li class="inline"><a href="debug.html">NTP Debugging Techniques</a>
+ <li class="inline"><a href="rdebug.html">Debugging Reference Clock Drivers</a>
+ <li class="inline"><a href="msyslog.html"><tt>ntpd</tt> System Log Messages</a>
+ <li class="inline"><a href="build/patches.html">Patching Procedures</a>
+ <li class="inline"><a href="build/hints.html">Hints and Kinks</a>
+ <li class="inline"><a href="build/porting.html">Porting Hints</a>
+ </ul>
+ <h4 id="back">Background Information</h4>
+ <ul>
+ <li class="inline"><a href="http://www.eecis.udel.edu/%7emills/ntp.html">NTP Project and Reference Library</a>
+ <li class="inline"><a href="http://www.eecis.udel.edu/%7emills/exec.html">Executive Summary - Computer Network Time Synchronization</a>
+ <li class="inline"><a href="http://www.eecis.udel.edu/%7emills/y2k.html">The Network Time Protocol Timescale and Era Numbering</a>
+ <li class="inline"><a href="http://www.eecis.udel.edu/%7emills/leap.html">NTP Timescale and Leap Seconds</a>
+ <li class="inline"><a href="http://www.eecis.udel.edu/%7emills/biblio.html">Protocol Conformance Statement</a>
+ </ul>
+ <h4 id="app">Application Notes</h4>
+ <ul>
+ <li class="inline"><a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a>
+ <li class="inline"><a href="assoc.html">Association Management</a>
+ <li class="inline"><a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a>
+ <li class="inline"><a href="measure.html">Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation</a>
+ <li class="inline"><a href="kern.html">Kernel Model for Precision Timekeeping</a>
+ </ul>
+ <hr>
+ <div align="center">
+ <img src="pic/pogo1a.gif" alt="gif"></div>
+ <br>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/kern.html b/contrib/ntp/html/kern.html
index 9a8a392..cc23504 100644
--- a/contrib/ntp/html/kern.html
+++ b/contrib/ntp/html/kern.html
@@ -2,32 +2,33 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Kernel Model for Precision Timekeeping</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Kernel Model for Precision Timekeeping</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Kernel Model for Precision Timekeeping</h3>
- <p><img src="pic/alice61.gif" alt="gif" align="left"> <a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a></p>
- <p>Alice touched the kernel and it exploded.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">20:26</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="257">Monday, December 02, 2002</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links11.txt"></script>
- <hr>
- <p>The technical report [2], which is a major revision and update of RFC-1589 [3], describes an engineering model for a precision time-of-day function for a generic operating system. The model is based on the principles of disciplined oscillators using phase-lock loops (PLL) and frequency-lock loops (FLL) often found in the engineering literature. The model uses a hybrid PLL/FLL discipline algorithm implemented in the kernel. The algorithm, which is very similar to the algorithm implemented in the NTP daemon, provides automatic time and frequency steering with update intervals from a few seconds to tens of minutes.</p>
- <p>The hybrid PLL/FLL code described in [2] is included in Solaris and Digital/Compaq/HP Tru64. It includes two system calls <tt>ntp_gettime()</tt> and <tt>ntp_adjtime()</tt> and can discipline the system clock with microsecond resolution. However, newer hardware and kernels with the same system calls can discipline the clock with nanosecond resolution. The new code described in [1] is available for Linux, FreeBSD, SunOS and Tru64; however, only the Linux and FreeBSD implementations, which do not include licensed code, are readily available. The software and documentation, including a simulator used to verify correct behavior, but not involving licensed code, is available at <a href="ftp://ftp.udel.edu/pub/ntp/software/nanokernel.tar.gz">nanokernel.tar.gz</a>.</p>
- <p>The model also changes the way the system clock is adjusted in time and frequency relative to an external precision timing source, such as described in the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page. The NTP software daemon uses the PPS to provide synchronization limited in principle only by the accuracy and stability of the external timing source.</p>
- <h4>References</h4>
- <ol>
- <li>Mills, D.L., and P.-H. Kamp. The nanokernel. <i>Proc. Precision Time and Time Interval (PTTI) Applications and Planning Meeting</i> (Reston VA, November 2000). Paper: <a href="http://www.eecis.udel.edu/%7emills/database/papers/nano/nano2.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/papers/nano/nano2.pdf">PDF</a>, Slides: <a href="http://www.eecis.udel.edu/%7emills/database/brief/nano/nano.html">HTML</a> | <a href="http://www.eecis.udel.edu/%7emills/database/brief/nano/nano.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/brief/nano/nano.pdf">PDF</a> | <a href="http://www.eecis.udel.edu/%7emills/database/brief/nano/nano.ppt">PowerPoint</a>
- <li>Mills, D.L. Unix kernel modifications for precision time synchronization. Electrical Engineering Department Report 94-10-1, University of Delaware, October 1994, 24 pp. Abstract: <a href="http://www.eecis.udel.edu/%7emills/database/reports/kern/kerna.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/reports/kern/kerna.pdf">PDF</a>, Body: <a href="http://www.eecis.udel.edu/%7emills/database/reports/kern/kernb.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/reports/kern/kernb.pdf">PDF</a>
- <li>Mills, D.L. A kernel model for precision timekeeping. Network Working Group Report RFC-1589, University of Delaware, March 1994. 31 pp. <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1589.txt">ASCII</a>
- </ol>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Kernel Model for Precision Timekeeping</h3>
+ <p><img src="pic/alice61.gif" alt="gif" align="left"> <a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a></p>
+ <p>Alice touched the kernel and it exploded.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:40</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links11.txt"></script>
+ <hr>
+ <p>The technical report [2], which is a major revision and update of RFC-1589 [3], describes an engineering model for a precision time-of-day function for a generic operating system. The model is based on the principles of disciplined oscillators using phase-lock loops (PLL) and frequency-lock loops (FLL) often found in the engineering literature. The model uses a hybrid PLL/FLL discipline algorithm implemented in the kernel. The algorithm, which is very similar to the algorithm implemented in the NTP daemon, provides automatic time and frequency steering with update intervals from a few seconds to tens of minutes.</p>
+ <p>The hybrid PLL/FLL code described in [2] is included in Solaris and Digital/Compaq/HP Tru64. It includes two system calls <tt>ntp_gettime()</tt> and <tt>ntp_adjtime()</tt> and can discipline the system clock with microsecond resolution. However, newer hardware and kernels with the same system calls can discipline the clock with nanosecond resolution. The new code described in [1] is available for Linux, FreeBSD, SunOS and Tru64; however, only the Linux and FreeBSD implementations, which do not include licensed code, are readily available. The software and documentation, including a simulator used to verify correct behavior, but not involving licensed code, is available at <a href="ftp://ftp.udel.edu/pub/ntp/software/nanokernel.tar.gz">nanokernel.tar.gz</a>.</p>
+ <p>The model also changes the way the system clock is adjusted in time and frequency relative to an external precision timing source, such as described in the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page. The NTP software daemon uses the PPS to provide synchronization limited in principle only by the accuracy and stability of the external timing source.</p>
+ <h4>References</h4>
+ <ol>
+ <li>Mills, D.L., and P.-H. Kamp. The nanokernel. <i>Proc. Precision Time and Time Interval (PTTI) Applications and Planning Meeting</i> (Reston VA, November 2000). Paper: <a href="http://www.eecis.udel.edu/%7emills/database/papers/nano/nano2.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/papers/nano/nano2.pdf">PDF</a>, Slides: <a href="http://www.eecis.udel.edu/%7emills/database/brief/nano/nano.html">HTML</a> | <a href="http://www.eecis.udel.edu/%7emills/database/brief/nano/nano.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/brief/nano/nano.pdf">PDF</a> | <a href="http://www.eecis.udel.edu/%7emills/database/brief/nano/nano.ppt">PowerPoint</a>
+ <li>Mills, D.L. Unix kernel modifications for precision time synchronization. Electrical Engineering Department Report 94-10-1, University of Delaware, October 1994, 24 pp. Abstract: <a href="http://www.eecis.udel.edu/%7emills/database/reports/kern/kerna.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/reports/kern/kerna.pdf">PDF</a>, Body: <a href="http://www.eecis.udel.edu/%7emills/database/reports/kern/kernb.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/reports/kern/kernb.pdf">PDF</a>
+ <li>Mills, D.L. A kernel model for precision timekeeping. Network Working Group Report RFC-1589, University of Delaware, March 1994. 31 pp. <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1589.txt">ASCII</a>
+ </ol>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/keygen.html b/contrib/ntp/html/keygen.html
index fcdb831..7953eb1 100644
--- a/contrib/ntp/html/keygen.html
+++ b/contrib/ntp/html/keygen.html
@@ -2,111 +2,115 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>ntp-keygen - generate public and private keys</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>ntp-keygen - generate public and private keys</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3><tt>ntp-keygen</tt> - generate public and private keys</h3>
- <img src="pic/alice23.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>Alice holds the key.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:13 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links9.txt"></script>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#synop">Synopsis</a>
- <li class="inline"><a href="#descrip">Description</a>
- <li class="inline"><a href="#run">Running the program</a>
- <li class="inline"><a href="#trust">Trusted Hosts and Groups</a>
- <li class="inline"><a href="#idexp">Identity Schemes</a>
- <li class="inline"><a href="#exam">Example</a>
- <li class="inline"><a href="#cmd">Command Line Options</a>
- <li class="inline"><a href="#rand">Random Seed File</a>
- <li class="inline"><a href="#fmt">Cryptographic Data FIles</a>
- <li class="inline"><a href="#bug">Bugs</a>
- </ul>
- <hr>
- <h4 id="synop">Synopsis</h4>
- <p id="intro"><tt>ntp-keygen [ -deGgHIMnPT ] [ -c [RSA-MD2 | RSA-MD5 | RSA-SHA | RSA-SHA1 | RSA-MDC2 | RSA-RIPEMD160 | DSA-SHA | DSA-SHA1 ] ] [ -i <i>name</i> ] [ -p <i>password</i> ] [ -S [ RSA | DSA ] ] [ -s <i>name</i> ] [ -v <i>nkeys</i> ]</tt></p>
- <h4 id="descrip">Description</h4>
- <p>This program generates cryptographic data files used by the NTPv4 authentication and identification schemes. It generates MD5 key files used in symmetric key cryptography. In addition, if the OpenSSL software library has been installed, it generates keys, certificate and identity files used in public key cryptography. These files are used for cookie encryption, digital signature and challenge/response identification algorithms compatible with the Internet standard security infrastructure.</p>
- <p>All files are in PEM-encoded printable ASCII format, so they can be embedded as MIME attachments in mail to other sites and certificate authorities. By default, files are not encrypted. The <tt>-p <i>password</i></tt> option specifies the write password and <tt>-q <i>password</i></tt> option the read password for previously encrypted files. The <tt>ntp-keygen</tt> program prompts for the password if it reads an encrypted file and the password is missing or incorrect. If an encrypted file is read successfully and no write password is specified, the read password is used as the write password by default.</p>
- <p>The <tt>ntpd</tt> configuration command <tt>crypto pw <i>password</i></tt> specifies the read password for previously encrypted files. The daemon expires on the spot if the password is missing or incorrect. For convenience, if a file has been previously encrypted, the default read password is the name of the host running the program. If the previous write password is specified as the host name, these files can be read by that host with no explicit password.</p>
- <p>File names begin with the prefix <tt>ntpkey_</tt> and end with the postfix <tt><i>_hostname.filestamp</i></tt>, where <tt><i>hostname</i></tt> is the owner name, usually the string returned by the Unix <tt>gethostname()</tt> routine, and <tt><i>filestamp</i></tt> is the NTP seconds when the file was generated, in decimal digits. This both guarantees uniqueness and simplifies maintenance procedures, since all files can be quickly removed by a <tt>rm ntpkey*</tt> command or all files generated at a specific time can be removed by a <tt>rm *<i>filestamp</i></tt> command. To further reduce the risk of misconfiguration, the first two lines of a file contain the file name and generation date and time as comments.</p>
- <p>All files are installed by default in the keys directory <tt>/usr/local/etc</tt>, which is normally in a shared filesystem in NFS-mounted networks. The actual location of the keys directory and each file can be overridden by configuration commands, but this is not recommended. Normally, the files for each host are generated by that host and used only by that host, although exceptions exist as noted later on this page.</p>
- <p>Normally, files containing private values, including the host key, sign key and identification parameters, are permitted root read/write-only; while others containing public values are permitted world readable. Alternatively, files containing private values can be encrypted and these files permitted world readable, which simplifies maintenance in shared file systems. Since uniqueness is insured by the hostname and file name extensions, the files for a NFS server and dependent clients can all be installed in the same shared directory.</p>
- <p>The recommended practice is to keep the file name extensions when installing a file and to install a soft link from the generic names specified elsewhere on this page to the generated files. This allows new file generations to be activated simply by changing the link. If a link is present, <tt>ntpd</tt> follows it to the file name to extract the filestamp. If a link is not present, <tt>ntpd</tt> extracts the filestamp from the file itself. This allows clients to verify that the file and generation times are always current. The <tt>ntp-keygen</tt> program uses the same timestamp extension for all files generated at one time, so each generation is distinct and can be readily recognized in monitoring data.</p>
- <h4 id="run">Running the program</h4>
- <p>The safest way to run the <tt>ntp-keygen</tt> program is logged in directly as root. The recommended procedure is change to the keys directory, usually <tt>/ust/local/etc</tt>, then run the program. When run for the first time, or if all <tt>ntpkey</tt> files have been removed, the program generates a RSA host key file and matching RSA-MD5 certificate file, which is all that is necessary in many cases. The program also generates soft links from the generic names to the respective files. If run again, the program uses the same host key file, but generates a new certificate file and link.</p>
- <p>The host key is used to encrypt the cookie when required and so must be RSA type. By default, the host key is also the sign key used to encrypt signatures. When necessary, a different sign key can be specified and this can be either RSA or DSA type. By default, the message digest type is MD5, but any combination of sign key type and message digest type supported by the OpenSSL library can be specified, including those using the MD2, MD5, SHA, SHA1, MDC2 and RIPE160 message digest algorithms. However, the scheme specified in the certificate must be compatible with the sign key. Certificates using any digest algorithm are compatible with RSA sign keys; however, only SHA and SHA1 certificates are compatible with DSA sign keys.</p>
- <p>Private/public key files and certificates are compatible with other OpenSSL applications and very likely other libraries as well. Certificates or certificate requests derived from them should be compatible with extant industry practice, although some users might find the interpretation of X509v3 extension fields somewhat liberal. However, the identification parameter files, although encoded as the other files, are probably not compatible with anything other than Autokey.</p>
- <p>Running the program as other than root and using the Unix <tt>su</tt> command to assume root may not work properly, since by default the OpenSSL library looks for the random seed file <tt>.rnd</tt> in the user home directory. However, there should be only one <tt>.rnd</tt>, most conveniently in the root directory, so it is convenient to define the <tt>$RANDFILE</tt> environment variable used by the OpenSSL library as the path to <tt>/.rnd</tt>.</p>
- <p>Installing the keys as root might not work in NFS-mounted shared file systems, as NFS clients may not be able to write to the shared keys directory, even as root. In this case, NFS clients can specify the files in another directory such as <tt>/etc</tt> using the <tt>keysdir</tt> command. There is no need for one client to read the keys and certificates of other clients or servers, as these data are obtained automatically by the Autokey protocol.</p>
- <p>Ordinarily, cryptographic files are generated by the host that uses them, but it is possible for a trusted agent (TA) to generate these files for other hosts; however, in such cases files should always be encrypted. The subject name and trusted name default to the hostname of the host generating the files, but can be changed by command line options. It is convenient to designate the owner name and trusted name as the subject and issuer fields, respectively, of the certificate. The owner name is also used for the host and sign key files, while the trusted name is used for the identity files.</p>
- <h4 id="trust">Trusted Hosts and Groups</h4>
- <p>Each cryptographic configuration involves selection of a signature scheme and identification scheme, called a cryptotype, as explained in the <a href="authopt.html">Authentication Options</a> page. The default cryptotype uses RSA encryption, MD5 message digest and TC identification. First, configure a NTP subnet including one or more low-stratum trusted hosts from which all other hosts derive synchronization directly or indirectly. Trusted hosts have trusted certificates; all other hosts have nontrusted certificates. These hosts will automatically and dynamically build authoritative certificate trails to one or more trusted hosts. A trusted group is the set of all hosts that have, directly or indirectly, a certificate trail ending at a trusted host. The trail is defined by static configuration file entries or dynamic means described on the <a href=manyopt.html>Automatic NTP Configuration Options</a> page.</p>
- <p>On each trusted host as root, change to the keys directory. To insure a fresh fileset, remove all <tt>ntpkey</tt> files. Then run <tt>ntp-keygen -T</tt> to generate keys and a trusted certificate. On all other hosts do the same, but leave off the <tt>-T</tt> flag to generate keys and nontrusted certificates. When complete, start the NTP daemons beginning at the lowest stratum and working up the tree. It may take some time for Autokey to instantiate the certificate trails throughout the subnet, but setting up the environment is completely automatic.</p>
- <p>If it is necessary to use a different sign key or different digest/signature scheme than the default, run <tt>ntp-keygen</tt> with the <tt>-S</tt><i><tt> type</tt></i> option, where <i><tt>type</tt></i> is either <tt>RSA</tt> or <tt>DSA</tt>. The most often need to do this is when a DSA-signed certificate is used. If it is necessary to use a different certificate scheme than the default, run <tt>ntp-keygen</tt> with the <tt>-c <i>scheme</i></tt> option and selected <i><tt>scheme</tt></i> as needed. If <tt>ntp-keygen</tt> is run again without these options, it generates a new certificate using the same scheme and sign key.</p>
- <p>After setting up the environment it is advisable to update certificates from time to time, if only to extend the validity interval. Simply run <tt>ntp-keygen</tt> with the same flags as before to generate new certificates using existing keys. However, if the host or sign key is changed, <tt>ntpd</tt> should be restarted. When ntpd is restarted, it loads any new files and restarts the protocol. Other dependent hosts will continue as usual until signatures are refreshed, at which time the protocol is restarted.</p>
- <h4 id="idexp">Identity Schemes</h4>
- <p>As mentioned on the Autonomous Authentication page, the default TC identity scheme is vulnerable to a middleman attack. However, there are more secure identity schemes available, including PC, IFF, GQ and MV described on the <a href="http://www.eecis.udel.edu/%7emills/keygen.html">Identification Schemes</a> page. These schemes are based on a TA, one or more trusted hosts and some number of nontrusted hosts. Trusted hosts prove identity using values provided by the TA, while the remaining hosts prove identity using values provided by a trusted host and certificate trails that end on that host. The name of a trusted host is also the name of its sugroup and also the subject and issuer name on its trusted certificate. The TA is not necessarily a trusted host in this sense, but often is.</p>
- <p>In some schemes there are separate keys for servers and clients. A server can also be a client of another server, but a client can never be a server for another client. In general, trusted hosts and nontrusted hosts that operate as both server and client have parameter files that contain both server and client keys. Hosts that operate only as clients have key files that contain only client keys.</p>
- <p>The PC scheme supports only one trusted host in the group. On trusted host <i>alice</i> run <tt>ntp-keygen -P -p <i>password</i></tt> to generate the host key file <tt>ntpkey_RSAkey_<i>alice.filestamp</i></tt> and trusted private certificate file <tt>ntpkey_RSA-MD5_cert_<i>alice.filestamp</i></tt>. Copy both files to all group hosts; they replace the files which would be generated in other schemes. On each host <i>bob</i> install a soft link from the generic name <tt>ntpkey_host_<i>bob</i></tt> to the host key file and soft link <tt>ntpkey_cert_<i>bob</i></tt> to the private certificate file. Note the generic links are on <i>bob</i>, but point to files generated by trusted host <i>alice</i>. In this scheme it is not possible to refresh either the keys or certificates without copying them to all other hosts in the group.</p>
- <p>For the IFF scheme proceed as in the TC scheme to generate keys and certificates for all group hosts, then for every trusted host in the group, generate the IFF&nbsp;parameter file. On trusted host <i>alice</i> run <tt>ntp-keygen -T </tt><tt>-I -p <i>password</i></tt> to produce her parameter file <tt>ntpkey_IFFpar_<i>alice.filestamp</i></tt>, which includes both server and client keys. Copy this file to all group hosts that operate as both servers and clients and install a soft link from the generic <tt>ntpkey_iff_<i>alice</i></tt> to this file. If there are no hosts restricted to operate only as clients, there is nothing further to do. As the IFF scheme is independent of keys and certificates, these files can be refreshed as needed.</p>
- <p>If a rogue client has the parameter file, it could masquerade as a legitimate server and present a middleman threat. To eliminate this threat, the client keys can be extracted from the parameter file and distributed to all restricted clients. After generating the parameter file, on <i>alice</i> run <tt>ntp-keygen</tt> <tt>-e</tt> and pipe the output to a file or mail program. Copy or mail this file to all restricted clients. On these clients install a soft link from the generic <tt>ntpkey_iff_<i>alice</i></tt> to this file. To further protect the integrity of the keys, each file can be encrypted with a secret password.</p>
- <p>For the GQ scheme proceed as in the TC scheme to generate keys and certificates for all group hosts, then for every trusted host in the group, generate the IFF parameter file. On trusted host <i>alice</i> run <tt>ntp-keygen -T </tt><tt>-G -p <i>password</i></tt> to produce her parameter file <tt>ntpkey_GQpar_<i>alice.filestamp</i></tt>, which includes both server and client keys. Copy this file to all group hosts and install a soft link from the generic <tt>ntpkey_gq_<i>alice</i></tt> to this file. In addition, on each host <i>bob</i> install a soft link from generic <tt>ntpkey_gq_<i>bob</i></tt> to this file. As the GQ scheme updates the GQ parameters file and certificate at the same time, keys and certificates can be regenerated as needed.</p>
- <p>For the MV scheme, proceed as in the TC scheme to generate keys and certificates for all group hosts. For illustration assume <i>trish</i> is the TA, <i>alice</i> one of several trusted hosts and <i>bob</i> one of her clients. On TA <i>trish</i> run <tt>ntp-keygen </tt><tt>-V&nbsp;<i>n</i> -p <i>password</i></tt>, where <i>n</i> is the number of revokable keys (typically 5) to produce the parameter file <tt>ntpkeys_MVpar_<i>trish.filestamp </i></tt>and client key files <tt>ntpkeys_MVkey<i>d</i>_<i>trish.filestamp</i></tt> where <i><tt>d</tt></i> is the key number (0 &lt; <i><tt>d</tt></i> &lt; <i>n</i>). Copy the parameter file to <i>alice</i> and install a soft link from the generic <tt>ntpkey_mv_<i>alice</i></tt> to this file. Copy one of the client key files to <i>alice</i> for later distribution to her clients. It doesn't matter which client key file goes to <i>alice</i>, since they all work the same way. <i>Alice</i> copies the client key file to all of her cliens. On client <i>bob</i> install a soft link from generic <tt>ntpkey_mvkey_<i>bob </i></tt>to the client key file. As the MV scheme is independent of keys and certificates, these files can be refreshed as needed.</p>
- <h4 id="cmd">Command Line Options</h4>
- <dl>
- <dt><tt>-c [ RSA-MD2 | RSA-MD5 | RSA-SHA | RSA-SHA1 | RSA-MDC2 | RSA-RIPEMD160 | DSA-SHA | DSA-SHA1 ]</tt>
- <dd>Select certificate message digest/signature encryption scheme. Note that RSA schemes must be used with a RSA sign key and DSA schemes must be used with a DSA sign key. The default without this option is <tt>RSA-MD5</tt>.
- <dt><tt>-d</tt>
- <dd>Enable debugging. This option displays the cryptographic data produced in eye-friendly billboards.
- <dt><tt>-e</tt>
- <dd>Write the IFF&nbsp;client keys to the standard output. This is intended for automatic key distribution by mail. <dt><tt>-G</tt>
- <dd>Generate parameters and keys for the GQ identification scheme, obsoleting any that may exist.
- <dt><tt>-g</tt>
- <dd>Generate keys for the GQ identification scheme using the existing GQ parameters. If the GQ parameters do not yet exist, create them first.
- <dt><tt>-H</tt>
- <dd>Generate new host keys, obsoleting any that may exist.
- <dt><tt>-I</tt>
- <dd>Generate parameters for the IFF identification scheme, obsoleting any that may exist.
- <dt><tt>-i <i>name</i></tt>
- <dd>Set the suject name to <i>name</i>. This is used as the subject field in certificates and in the file name for host and sign keys. <dt><tt>-M</tt>
- <dd>Generate MD5 keys, obsoleting any that may exist.
- <dt><tt>-P</tt>
- <dd>Generate a private certificate. By default, the program generates public certificates.
- <dt><tt>-p <i>password</i><tt></tt></tt>
- <dd>Encrypt generated files containing private data with <tt><i>password</i></tt> and the DES-CBC algorithm.
- <dt><tt>-q</tt>
- <dd>Set the password for reading files to <tt><i>password</i></tt>.
- <dt><tt>-S [ RSA | DSA ]</tt>
- <dd>Generate a new sign key of the designated type, obsoleting any that may exist. By default, the program uses the host key as the sign key.
- <dt><tt>-s <i>name</i></tt>
- <dd>Set the issuer name to <i>name</i>. This is used for the issuer field in certificates and in the file name for identity files. <dt><tt>-T</tt>
- <dd>Generate a trusted certificate. By default, the program generates a non-trusted certificate.
- <dt><tt>-V <i>nkeys</i></tt>
- <dd>Generate parameters and keys for the Mu-Varadharajan (MV) identification scheme.
-</dl>
- <h4 id="rand">Random Seed File</h4>
- <p>All cryptographically sound key generation schemes must have means to randomize the entropy seed used to initialize the internal pseudo-random number generator used by the library routines. The OpenSSL library uses a designated random seed file for this purpose. The file must be available when starting the NTP daemon and <tt>ntp-keygen</tt> program. If a site supports OpenSSL or its companion OpenSSH, it is very likely that means to do this are already available.</p>
- <p>It is important to understand that entropy must be evolved for each generation, for otherwise the random number sequence would be predictable. Various means dependent on external events, such as keystroke intervals, can be used to do this and some systems have built-in entropy sources. Suitable means are described in the OpenSSL software documentation, but are outside the scope of this page.</p>
- <p>The entropy seed used by the OpenSSL library is contained in a file, usually called <tt>.rnd</tt>, which must be available when starting the NTP daemon or the <tt>ntp-keygen</tt> program. The NTP daemon will first look for the file using the path specified by the <tt>randfile</tt> subcommand of the <tt>crypto</tt> configuration command. If not specified in this way, or when starting the <tt>ntp-keygen</tt> program, the OpenSSL library will look for the file using the path specified by the <tt>RANDFILE</tt> environment variable in the user home directory, whether root or some other user. If the <tt>RANDFILE</tt> environment variable is not present, the library will look for the <tt>.rnd</tt> file in the user home directory. If the file is not available or cannot be written, the daemon exits with a message to the system log and the program exits with a suitable error message.</p>
- <h4 id="priv">Cryptographic Data Files</h4>
- <p>All other file formats begin with two lines. The first contains the file name, including the generated host name and filestamp. The second contains the datestamp in conventional Unix <tt>date</tt> format. Lines beginning with <tt>#</tt> are considered comments and ignored by the <i><tt>ntp-keygen </tt></i>program and <tt>ntpd</tt> daemon. Cryptographic values are encoded first using ASN.1 rules, then encrypted if necessary, and finally written PEM-encoded printable ASCII format preceded and followed by MIME content identifier lines.</p>
- <p id="symkey">The format of the symmetric keys file is somewhat different than the other files in the interest of backward compatibility. Since DES-CBC is deprecated in NTPv4, the only key format of interest is MD5 alphanumeric strings. Following hte heard the keys are entered one per line in the format</p>
- <p><i><tt>keyno type key</tt></i></p>
- <p>where <i><tt>keyno</tt></i> is a positive integer in the range 1-65,535, <i><tt>type</tt></i> is the string <tt>MD5</tt> defining the key format and <i><tt>key</tt></i> is the key itself, which is a printable ASCII string 16 characters or less in length. Each character is chosen from the 93 printable characters in the range 0x21 through 0x7f excluding space and the '#' character.</p>
- <p>Note that the keys used by the <tt>ntpq</tt> and <tt>ntpdc</tt> programs are checked against passwords requested by the programs and entered by hand, so it is generally appropriate to specify these keys in human readable ASCII format.</p>
- <p>The <tt>ntp-keygen</tt> program generates a MD5 symmetric keys file <tt>ntpkey_MD5key_<i>hostname.filestamp</i></tt>. Since the file contains private shared keys, it should be visible only to root and distributed by secure means to other subnet hosts. The NTP daemon loads the file <tt>ntp.keys</tt>, so <tt>ntp-keygen</tt> installs a soft link from this name to the generated file. Subsequently, similar soft links must be installed by manual or automated means on the other subnet hosts. While this file is not used with the Autokey Version 2 protocol, it is needed to authenticate some remote configuration commands used by the <a href="ntpdc.html"><tt>ntpq</tt></a> and <a href="ntpq.html"><tt>ntpdc</tt></a> utilities.</p>
- <h4 id="bug">Bugs</h4>
- <p>It can take quite a while to generate some cryptographic values, from one to several minutes with modern architectures such as UltraSPARC and up to tens of minutes to an hour with older architectures such as SPARC IPC.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3><tt>ntp-keygen</tt> - generate public and private keys</h3>
+ <img src="pic/alice23.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>Alice holds the key.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">22:32</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="294">Monday, November 07, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links9.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#synop">Synopsis</a>
+ <li class="inline"><a href="#descrip">Description</a>
+ <li class="inline"><a href="#run">Running the program</a>
+ <li class="inline"><a href="#trust">Trusted Hosts and Groups</a>
+ <li class="inline"><a href="#idexp">Identity Schemes</a>
+ <li class="inline"><a href="#exam">Example</a>
+ <li class="inline"><a href="#cmd">Command Line Options</a>
+ <li class="inline"><a href="#rand">Random Seed File</a>
+ <li class="inline"><a href="#fmt">Cryptographic Data Files</a>
+ <li class="inline"><a href="#bug">Bugs</a>
+ </ul>
+ <hr>
+ <h4 id="synop">Synopsis</h4>
+ <p id="intro"><tt>ntp-keygen [ -deGgHIMnPT ] [ -c [RSA-MD2 | RSA-MD5 | RSA-SHA | RSA-SHA1 | RSA-MDC2 | RSA-RIPEMD160 | DSA-SHA | DSA-SHA1 ] ] [ -i <i>name</i> ] [ -p <i>password</i> ] [ -S [ RSA | DSA ] ] [ -s <i>name</i> ] [ -v <i>nkeys</i> ]</tt></p>
+ <h4 id="descrip">Description</h4>
+ <p>This program generates cryptographic data files used by the NTPv4 authentication and identification schemes. It generates MD5 key files used in symmetric key cryptography. In addition, if the OpenSSL software library has been installed, it generates keys, certificate and identity files used in public key cryptography. These files are used for cookie encryption, digital signature and challenge/response identification algorithms compatible with the Internet standard security infrastructure.</p>
+ <p>By default, files are not encrypted by <tt>ntp-keygen</tt>. The <tt>-p <i>password</i></tt> option specifies the write password and <tt>-q <i>password</i></tt> option the read password for previously encrypted files. The <tt>ntp-keygen</tt> program prompts for the password if it reads an encrypted file and the password is missing or incorrect. If an encrypted file is read successfully and no write password is specified, the read password is used as the write password by default.</p>
+ <p>The <tt>ntpd</tt> configuration command <tt>crypto pw <i>password</i></tt> specifies the read password for previously encrypted files. The daemon expires on the spot if the password is missing or incorrect. For convenience, if a file has been previously encrypted, the default read password is the name of the host running the program. If the previous write password is specified as the host name, these files can be read by that host with no explicit password.</p>
+ <p>All files are in PEM-encoded printable ASCII format, so they can be embedded as MIME attachments in mail to other sites and certificate authorities. File names begin with the prefix <tt>ntpkey_</tt> and end with the postfix <tt><i>_hostname.filestamp</i></tt>, where <tt><i>hostname</i></tt> is usually the string returned by the Unix <tt>gethostname()</tt> routine, and <tt><i>filestamp</i></tt> is the NTP seconds when the file was generated, in decimal digits. This both guarantees uniqueness and simplifies maintenance procedures, since all files can be quickly removed by a <tt>rm ntpkey*</tt> command or all files generated at a specific time can be removed by a <tt>rm *<i>filestamp</i></tt> command. To further reduce the risk of misconfiguration, the first two lines of a file contain the file name and generation date and time as comments.</p>
+ <p>All files are installed by default in the keys directory <tt>/usr/local/etc</tt>, which is normally in a shared filesystem in NFS-mounted networks. The actual location of the keys directory and each file can be overridden by configuration commands, but this is not recommended. Normally, the files for each host are generated by that host and used only by that host, although exceptions exist as noted later on this page.</p>
+ <p>Normally, files containing private values, including the host key, sign key and identification parameters, are permitted root read/write-only; while others containing public values are permitted world readable. Alternatively, files containing private values can be encrypted and these files permitted world readable, which simplifies maintenance in shared file systems. Since uniqueness is insured by the hostname and file name extensions, the files for a NFS server and dependent clients can all be installed in the same shared directory.</p>
+ <p>The recommended practice is to keep the file name extensions when installing a file and to install a soft link from the generic names specified elsewhere on this page to the generated files. This allows new file generations to be activated simply by changing the link. If a link is present, <tt>ntpd</tt> follows it to the file name to extract the filestamp. If a link is not present, <tt>ntpd</tt> extracts the filestamp from the file itself. This allows clients to verify that the file and generation times are always current. The <tt>ntp-keygen</tt> program uses the same extension for all files generated at one time, so each generation is distinct and can be readily recognized in monitoring data.</p>
+ <h4 id="run">Running the program</h4>
+ <p>The safest way to run the <tt>ntp-keygen</tt> program is logged in directly as root. The recommended procedure is change to the keys directory, usually <tt>/ust/local/etc</tt>, then run the program. When run for the first time, or if all <tt>ntpkey</tt> files have been removed, the program generates a RSA host key file and matching RSA-MD5 certificate file, which is all that is necessary in many cases. The program also generates soft links from the generic names to the respective files. If run again, the program uses the same host key file, but generates a new certificate file and link.</p>
+ <p>The host key is used to encrypt the cookie when required and so must be RSA type. By default, the host key is also the sign key used to encrypt signatures. When necessary, a different sign key can be specified and this can be either RSA or DSA type. By default, the message digest type is MD5, but any combination of sign key type and message digest type supported by the OpenSSL library can be specified, including those using the MD2, MD5, SHA, SHA1, MDC2 and RIPE160 message digest algorithms. However, the scheme specified in the certificate must be compatible with the sign key. Certificates using any digest algorithm are compatible with RSA sign keys; however, only SHA and SHA1 certificates are compatible with DSA sign keys.</p>
+ <p>Private/public key files and certificates are compatible with other OpenSSL applications and very likely other libraries as well. Certificates or certificate requests derived from them should be compatible with extant industry practice, although some users might find the interpretation of X509v3 extension fields somewhat liberal. However, the identification parameter files, although encoded as the other files, are probably not compatible with anything other than Autokey.</p>
+ <p>Running the program as other than root and using the Unix <tt>su</tt> command to assume root may not work properly, since by default the OpenSSL library looks for the random seed file <tt>.rnd</tt> in the user home directory. However, there should be only one <tt>.rnd</tt>, most conveniently in the root directory, so it is convenient to define the <tt>$RANDFILE</tt> environment variable used by the OpenSSL library as the path to <tt>/.rnd</tt>.</p>
+ <p>Installing the keys as root might not work in NFS-mounted shared file systems, as NFS clients may not be able to write to the shared keys directory, even as root. In this case, NFS clients can specify the files in another directory such as <tt>/etc</tt> using the <tt>keysdir</tt> command. There is no need for one client to read the keys and certificates of other clients or servers, as these data are obtained automatically by the Autokey protocol.</p>
+ <p>Ordinarily, cryptographic files are generated by the host that uses them, but it is possible for a trusted agent (TA) to generate these files for other hosts; however, in such cases files should always be encrypted. The subject name and trusted name default to the hostname of the host generating the files, but can be changed by command line options. It is convenient to designate the owner name and trusted name as the subject and issuer fields, respectively, of the certificate. The owner name is also used for the host and sign key files, while the trusted name is used for the identity files.</p>
+ <h4 id="trust">Trusted Hosts and Groups</h4>
+ <p>Each cryptographic configuration involves selection of a signature scheme and identification scheme, called a cryptotype, as explained in the <a href="authopt.html">Authentication Options</a> page. The default cryptotype uses RSA encryption, MD5 message digest and TC identification. First, configure a NTP subnet including one or more low-stratum trusted hosts from which all other hosts derive synchronization directly or indirectly. Trusted hosts have trusted certificates; all other hosts have nontrusted certificates. These hosts will automatically and dynamically build authoritative certificate trails to one or more trusted hosts. A trusted group is the set of all hosts that have, directly or indirectly, a certificate trail ending at a trusted host. The trail is defined by static configuration file entries or dynamic means described on the <a href="manyopt.html">Automatic NTP Configuration Options</a> page.</p>
+ <p>On each trusted host as root, change to the keys directory. To insure a fresh fileset, remove all <tt>ntpkey</tt> files. Then run <tt>ntp-keygen -T</tt> to generate keys and a trusted certificate. On all other hosts do the same, but leave off the <tt>-T</tt> flag to generate keys and nontrusted certificates. When complete, start the NTP daemons beginning at the lowest stratum and working up the tree. It may take some time for Autokey to instantiate the certificate trails throughout the subnet, but setting up the environment is completely automatic.</p>
+ <p>If it is necessary to use a different sign key or different digest/signature scheme than the default, run <tt>ntp-keygen</tt> with the <tt>-S</tt><i><tt> type</tt></i> option, where <i><tt>type</tt></i> is either <tt>RSA</tt> or <tt>DSA</tt>. The most often need to do this is when a DSA-signed certificate is used. If it is necessary to use a different certificate scheme than the default, run <tt>ntp-keygen</tt> with the <tt>-c <i>scheme</i></tt> option and selected <i><tt>scheme</tt></i> as needed. If <tt>ntp-keygen</tt> is run again without these options, it generates a new certificate using the same scheme and sign key.</p>
+ <p>After setting up the environment it is advisable to update certificates from time to time, if only to extend the validity interval. Simply run <tt>ntp-keygen</tt> with the same flags as before to generate new certificates using existing keys. However, if the host or sign key is changed, <tt>ntpd</tt> should be restarted. When ntpd is restarted, it loads any new files and restarts the protocol. Other dependent hosts will continue as usual until signatures are refreshed, at which time the protocol is restarted.</p>
+ <h4 id="idexp">Identity Schemes</h4>
+ <p>As mentioned on the Autonomous Authentication page, the default TC identity scheme is vulnerable to a middleman attack. However, there are more secure identity schemes available, including PC, IFF, GQ and MV described on the <a href="http://www.eecis.udel.edu/%7emills/keygen.html">Identification Schemes</a> page. These schemes are based on a TA, one or more trusted hosts and some number of nontrusted hosts. Trusted hosts prove identity using values provided by the TA, while the remaining hosts prove identity using values provided by a trusted host and certificate trails that end on that host. The name of a trusted host is also the name of its sugroup and also the subject and issuer name on its trusted certificate. The TA is not necessarily a trusted host in this sense, but often is.</p>
+ <p>In some schemes there are separate keys for servers and clients. A server can also be a client of another server, but a client can never be a server for another client. In general, trusted hosts and nontrusted hosts that operate as both server and client have parameter files that contain both server and client keys. Hosts that operate only as clients have key files that contain only client keys.</p>
+ <p>The PC scheme supports only one trusted host in the group. On trusted host <i>alice</i> run <tt>ntp-keygen -P -p <i>password</i></tt> to generate the host key file <tt>ntpkey_RSAkey_<i>alice.filestamp</i></tt> and trusted private certificate file <tt>ntpkey_RSA-MD5_cert_<i>alice.filestamp</i></tt>. Copy both files to all group hosts; they replace the files which would be generated in other schemes. On each host <i>bob</i> install a soft link from the generic name <tt>ntpkey_host_<i>bob</i></tt> to the host key file and soft link <tt>ntpkey_cert_<i>bob</i></tt> to the private certificate file. Note the generic links are on <i>bob</i>, but point to files generated by trusted host <i>alice</i>. In this scheme it is not possible to refresh either the keys or certificates without copying them to all other hosts in the group.</p>
+ <p>For the IFF scheme proceed as in the TC scheme to generate keys and certificates for all group hosts, then for every trusted host in the group, generate the IFF&nbsp;parameter file. On trusted host <i>alice</i> run <tt>ntp-keygen -T </tt><tt>-I -p <i>password</i></tt> to produce her parameter file <tt>ntpkey_IFFpar_<i>alice.filestamp</i></tt>, which includes both server and client keys. Copy this file to all group hosts that operate as both servers and clients and install a soft link from the generic <tt>ntpkey_iff_<i>alice</i></tt> to this file. If there are no hosts restricted to operate only as clients, there is nothing further to do. As the IFF scheme is independent of keys and certificates, these files can be refreshed as needed.</p>
+ <p>If a rogue client has the parameter file, it could masquerade as a legitimate server and present a middleman threat. To eliminate this threat, the client keys can be extracted from the parameter file and distributed to all restricted clients. After generating the parameter file, on <i>alice</i> run <tt>ntp-keygen</tt> <tt>-e</tt> and pipe the output to a file or mail program. Copy or mail this file to all restricted clients. On these clients install a soft link from the generic <tt>ntpkey_iff_<i>alice</i></tt> to this file. To further protect the integrity of the keys, each file can be encrypted with a secret password.</p>
+ <p>For the GQ scheme proceed as in the TC scheme to generate keys and certificates for all group hosts, then for every trusted host in the group, generate the IFF parameter file. On trusted host <i>alice</i> run <tt>ntp-keygen -T </tt><tt>-G -p <i>password</i></tt> to produce her parameter file <tt>ntpkey_GQpar_<i>alice.filestamp</i></tt>, which includes both server and client keys. Copy this file to all group hosts and install a soft link from the generic <tt>ntpkey_gq_<i>alice</i></tt> to this file. In addition, on each host <i>bob</i> install a soft link from generic <tt>ntpkey_gq_<i>bob</i></tt> to this file. As the GQ scheme updates the GQ parameters file and certificate at the same time, keys and certificates can be regenerated as needed.</p>
+ <p>For the MV scheme, proceed as in the TC scheme to generate keys and certificates for all group hosts. For illustration assume <i>trish</i> is the TA, <i>alice</i> one of several trusted hosts and <i>bob</i> one of her clients. On TA <i>trish</i> run <tt>ntp-keygen </tt><tt>-V&nbsp;<i>n</i> -p <i>password</i></tt>, where <i>n</i> is the number of revokable keys (typically 5) to produce the parameter file <tt>ntpkeys_MVpar_<i>trish.filestamp </i></tt>and client key files <tt>ntpkeys_MVkey<i>d</i>_<i>trish.filestamp</i></tt> where <i><tt>d</tt></i> is the key number (0 &lt; <i><tt>d</tt></i> &lt; <i>n</i>). Copy the parameter file to <i>alice</i> and install a soft link from the generic <tt>ntpkey_mv_<i>alice</i></tt> to this file. Copy one of the client key files to <i>alice</i> for later distribution to her clients. It doesn't matter which client key file goes to <i>alice</i>, since they all work the same way. <i>Alice</i> copies the client key file to all of her cliens. On client <i>bob</i> install a soft link from generic <tt>ntpkey_mvkey_<i>bob </i></tt>to the client key file. As the MV scheme is independent of keys and certificates, these files can be refreshed as needed.</p>
+ <h4 id="cmd">Command Line Options</h4>
+ <dl>
+ <dt><tt>-c [ RSA-MD2 | RSA-MD5 | RSA-SHA | RSA-SHA1 | RSA-MDC2 | RSA-RIPEMD160 | DSA-SHA | DSA-SHA1 ]</tt>
+ <dd>Select certificate message digest/signature encryption scheme. Note that RSA schemes must be used with a RSA sign key and DSA schemes must be used with a DSA sign key. The default without this option is <tt>RSA-MD5</tt>.
+ <dt><tt>-d</tt>
+ <dd>Enable debugging. This option displays the cryptographic data produced in eye-friendly billboards.
+ <dt><tt>-e</tt>
+ <dd>Write the IFF&nbsp;client keys to the standard output. This is intended for automatic key distribution by mail.
+ <dt><tt>-G</tt>
+ <dd>Generate parameters and keys for the GQ identification scheme, obsoleting any that may exist.
+ <dt><tt>-g</tt>
+ <dd>Generate keys for the GQ identification scheme using the existing GQ parameters. If the GQ parameters do not yet exist, create them first.
+ <dt><tt>-H</tt>
+ <dd>Generate new host keys, obsoleting any that may exist.
+ <dt><tt>-I</tt>
+ <dd>Generate parameters for the IFF identification scheme, obsoleting any that may exist.
+ <dt><tt>-i <i>name</i></tt>
+ <dd>Set the suject name to <i>name</i>. This is used as the subject field in certificates and in the file name for host and sign keys.
+ <dt><tt>-M</tt>
+ <dd>Generate MD5 keys, obsoleting any that may exist.
+ <dt><tt>-P</tt>
+ <dd>Generate a private certificate. By default, the program generates public certificates.
+ <dt><tt>-p <i>password</i></tt>
+ <dd>Encrypt generated files containing private data with <tt><i>password</i></tt> and the DES-CBC algorithm.
+ <dt><tt>-q</tt>
+ <dd>Set the password for reading files to <tt><i>password</i></tt>.
+ <dt><tt>-S [ RSA | DSA ]</tt>
+ <dd>Generate a new sign key of the designated type, obsoleting any that may exist. By default, the program uses the host key as the sign key.
+ <dt><tt>-s <i>name</i></tt>
+ <dd>Set the issuer name to <i>name</i>. This is used for the issuer field in certificates and in the file name for identity files.
+ <dt><tt>-T</tt>
+ <dd>Generate a trusted certificate. By default, the program generates a non-trusted certificate.
+ <dt><tt>-V <i>nkeys</i></tt>
+ <dd>Generate parameters and keys for the Mu-Varadharajan (MV) identification scheme.
+ </dl>
+ <h4 id="rand">Random Seed File</h4>
+ <p>All cryptographically sound key generation schemes must have means to randomize the entropy seed used to initialize the internal pseudo-random number generator used by the library routines. The OpenSSL library uses a designated random seed file for this purpose. The file must be available when starting the NTP daemon and <tt>ntp-keygen</tt> program. If a site supports OpenSSL or its companion OpenSSH, it is very likely that means to do this are already available.</p>
+ <p>It is important to understand that entropy must be evolved for each generation, for otherwise the random number sequence would be predictable. Various means dependent on external events, such as keystroke intervals, can be used to do this and some systems have built-in entropy sources. Suitable means are described in the OpenSSL software documentation, but are outside the scope of this page.</p>
+ <p>The entropy seed used by the OpenSSL library is contained in a file, usually called <tt>.rnd</tt>, which must be available when starting the NTP daemon or the <tt>ntp-keygen</tt> program. The NTP daemon will first look for the file using the path specified by the <tt>randfile</tt> subcommand of the <tt>crypto</tt> configuration command. If not specified in this way, or when starting the <tt>ntp-keygen</tt> program, the OpenSSL library will look for the file using the path specified by the <tt>RANDFILE</tt> environment variable in the user home directory, whether root or some other user. If the <tt>RANDFILE</tt> environment variable is not present, the library will look for the <tt>.rnd</tt> file in the user home directory. If the file is not available or cannot be written, the daemon exits with a message to the system log and the program exits with a suitable error message.</p>
+ <h4 id="priv">Cryptographic Data Files</h4>
+ <p>All other file formats begin with two lines. The first contains the file name, including the generated host name and filestamp. The second contains the datestamp in conventional Unix <tt>date</tt> format. Lines beginning with <tt>#</tt> are considered comments and ignored by the <i><tt>ntp-keygen </tt></i>program and <tt>ntpd</tt> daemon. Cryptographic values are encoded first using ASN.1 rules, then encrypted if necessary, and finally written PEM-encoded printable ASCII format preceded and followed by MIME content identifier lines.</p>
+ <p id="symkey">The format of the symmetric keys file is somewhat different than the other files in the interest of backward compatibility. Since DES-CBC is deprecated in NTPv4, the only key format of interest is MD5 alphanumeric strings. Following hte heard the keys are entered one per line in the format</p>
+ <p><i><tt>keyno type key</tt></i></p>
+ <p>where <i><tt>keyno</tt></i> is a positive integer in the range 1-65,535, <i><tt>type</tt></i> is the string <tt>MD5</tt> defining the key format and <i><tt>key</tt></i> is the key itself, which is a printable ASCII string 16 characters or less in length. Each character is chosen from the 93 printable characters in the range 0x21 through 0x7f excluding space and the '#' character.</p>
+ <p>Note that the keys used by the <tt>ntpq</tt> and <tt>ntpdc</tt> programs are checked against passwords requested by the programs and entered by hand, so it is generally appropriate to specify these keys in human readable ASCII format.</p>
+ <p>The <tt>ntp-keygen</tt> program generates a MD5 symmetric keys file <tt>ntpkey_MD5key_<i>hostname.filestamp</i></tt>. Since the file contains private shared keys, it should be visible only to root and distributed by secure means to other subnet hosts. The NTP daemon loads the file <tt>ntp.keys</tt>, so <tt>ntp-keygen</tt> installs a soft link from this name to the generated file. Subsequently, similar soft links must be installed by manual or automated means on the other subnet hosts. While this file is not used with the Autokey Version 2 protocol, it is needed to authenticate some remote configuration commands used by the <a href="ntpdc.html"><tt>ntpq</tt></a> and <a href="ntpq.html"><tt>ntpdc</tt></a> utilities.</p>
+ <h4 id="bug">Bugs</h4>
+ <p>It can take quite a while to generate some cryptographic values, from one to several minutes with modern architectures such as UltraSPARC and up to tens of minutes to an hour with older architectures such as SPARC IPC.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/ldisc.html b/contrib/ntp/html/ldisc.html
index 40e5804..428a251 100644
--- a/contrib/ntp/html/ldisc.html
+++ b/contrib/ntp/html/ldisc.html
@@ -2,45 +2,46 @@
<html>
- <head>
- <title>Line Disciplines and Streams Modules</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Line Disciplines and Streams Modules</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Line Disciplines and Streams Modules</h3>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">14:45</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="235">Monday, January 20, 2003</csobj></p>
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links11.txt"></script>
- <hr>
- <h4>Description</h4>
- <p>Most radio and modem clocks used for a primary (stratum-1) NTP server utilize serial ports operating at speeds of 9600 baud or greater. The intrinsic delay and jitter contributed by the serial port hardware and software driver can accumulate up to a millisecond in newer Unix systems and tens of milliseconds in older ones. In order to reduce the effects of delay and jitter, a set of special line disciplines, stream modules and operating system calls (<tt>ioctls</tt>) can be configured in some Unix kernels. These routines intercept special characters or signals provided by the radio or modem clock and save a timestamp for later processing.</p>
- <p>The routines provide two important functions. Some insert a timestamp in the receive data stream upon occurance of a designated character or characters at the serial interface. This can be used to timestamp an on-time character produced by a radio clock, for example. Other routines support an application program interface for pulse-per-second (PPS) signals generated by some radio clocks and laboratory instruments. These routines are normally accessed through the PPSAPI application program interface described below.</p>
- <p>The routines can be compiled in the kernel in older BSD-derived systems, or installed as System V streams modules and either compiled in the kernel or dynamically loaded when required. In either case, they require minor changes in some kernel files and in the NTP daemon <tt>ntpd</tt>. The streams modules can be pushed and popped from the streams stack using conventional System V streams program primitives. Note that some Unix kernels do not support line disciplines and some do not support System V streams. The routines described here are known to work correctly with the Unix kernels called out in the descriptions, but have not been tested for other kernels.</p>
- <h4><tt>tty_clk</tt> Line Discipline/Streams Module</h4>
- <p>This routine intercepts characters received from the serial port and passes unchanged all except a set of designated characters to the generic serial port discipline. For each of the exception characters, the character is inserted in the receiver buffer followed by a local timestamp in Unix <tt>timeval</tt> format. Both <tt>select()</tt> and <tt>SIGIO</tt> are supported by the routine. Support for this routine is automatically detected during the NTP build process and interface code compiled as necessary.</p>
- <p>There are two versions of the <tt>tty_clk</tt> routine. The <tt>tty_clk.c</tt> line discipline is designed for older BSD systems and is compiled in the kernel. The <tt>tty_clk_STREAMS.c</tt> is designed for System V streams, in which case it can be either compiled in the kernel or dynamically loaded. Since these programs are small, unobtrusive, and do nothing unless specifically enabled by an application program, it probably doesn't matter which version is chosen. Instructions on how to configure and build a kernel supporting either of these routines is in the <tt>README</tt> file in the <tt>./kernel</tt> directory.</p>
- <p>The <tt>tty_clk</tt> routine defines a new ioctl <tt>CLK_SETSTR</tt>, which takes a pointer to a string of no more than 32 characters. Until the first <tt>CLK_SETSTR</tt> is performed, the routine will simply pass through characters. Once it is passed a string by <tt>CLK_SETSTR</tt>, any character in that string will be immediately followed by a timestamp in Unix <tt>timeval</tt> format. You can change the string whenever you want by doing another <tt>CLK_SETSTR</tt>. The character must be an exact, 8 bit match. The character '\000' cannot, be used, as it is the string terminator. Passing an empty string to <tt>CLK_SETSTR</tt> turns off timestamping. Passing <tt>NULL</tt> may produce surprising results.</p>
- <h4><tt>TIOCDCDTIMESTAMP</tt> ioctl in FreeBSD</h4>
- <p>This ioctl is included in FreeBSD 2.2 and later. It causes a timestamp to be inserted in the serial port receive data stream when the data carrier detect (DCD) signal is asserted. This is useful for those radio clocks that indicate the on-time epoch by means of a modem control signal. It is not recommended that this be used for PPS timestamps, as this function is available using the PPS application program interface included in FreeBSD 3.4 and later.</p>
- <p>The <tt>TIOCDCDTIMESTAMP</tt> ioctl() is detected and compiled automatically on FreeBSD systems if available. With FreeBSD 2.2 the measured delay between activation of the DCD signal and the time the timestamp is captured on a 66MHz 486DX2 is 19 <font face="Symbol">m</font>s and on a 100MHz Pentium is 6 <font face="Symbol">m</font>s.</p>
- <h4><tt>ppsclock</tt>Streams Module (depredated)</h4>
- <p>This routine is a streams module which causes a timestamp to be captured when the DCD signal is asserted. It is normally used in connection with a PPS signal generated by some radio clocks. However, it is normally used only by the PPSAPI interface and SunOS 4.1.3 and should be avoided in other contexts. Instructions on how to configure and build a kernel supporting either of these routines is in the <tt>README</tt> file in the <tt>./kernel</tt> directory.</p>
- <p>The ppsclock streams module implements the <tt>CIOGETEV</tt> ioctl, which takes a pointer to the structure</p>
- <pre>
+ <body>
+ <h3>Line Disciplines and Streams Modules</h3>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:40</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links11.txt"></script>
+ <hr>
+ <h4>Description</h4>
+ <p>Most radio and modem clocks used for a primary (stratum-1) NTP server utilize serial ports operating at speeds of 9600 baud or greater. The intrinsic delay and jitter contributed by the serial port hardware and software driver can accumulate up to a millisecond in newer Unix systems and tens of milliseconds in older ones. In order to reduce the effects of delay and jitter, a set of special line disciplines, stream modules and operating system calls (<tt>ioctls</tt>) can be configured in some Unix kernels. These routines intercept special characters or signals provided by the radio or modem clock and save a timestamp for later processing.</p>
+ <p>The routines provide two important functions. Some insert a timestamp in the receive data stream upon occurance of a designated character or characters at the serial interface. This can be used to timestamp an on-time character produced by a radio clock, for example. Other routines support an application program interface for pulse-per-second (PPS) signals generated by some radio clocks and laboratory instruments. These routines are normally accessed through the PPSAPI application program interface described below.</p>
+ <p>The routines can be compiled in the kernel in older BSD-derived systems, or installed as System V streams modules and either compiled in the kernel or dynamically loaded when required. In either case, they require minor changes in some kernel files and in the NTP daemon <tt>ntpd</tt>. The streams modules can be pushed and popped from the streams stack using conventional System V streams program primitives. Note that some Unix kernels do not support line disciplines and some do not support System V streams. The routines described here are known to work correctly with the Unix kernels called out in the descriptions, but have not been tested for other kernels.</p>
+ <h4><tt>tty_clk</tt> Line Discipline/Streams Module</h4>
+ <p>This routine intercepts characters received from the serial port and passes unchanged all except a set of designated characters to the generic serial port discipline. For each of the exception characters, the character is inserted in the receiver buffer followed by a local timestamp in Unix <tt>timeval</tt> format. Both <tt>select()</tt> and <tt>SIGIO</tt> are supported by the routine. Support for this routine is automatically detected during the NTP build process and interface code compiled as necessary.</p>
+ <p>There are two versions of the <tt>tty_clk</tt> routine. The <tt>tty_clk.c</tt> line discipline is designed for older BSD systems and is compiled in the kernel. The <tt>tty_clk_STREAMS.c</tt> is designed for System V streams, in which case it can be either compiled in the kernel or dynamically loaded. Since these programs are small, unobtrusive, and do nothing unless specifically enabled by an application program, it probably doesn't matter which version is chosen. Instructions on how to configure and build a kernel supporting either of these routines is in the <tt>README</tt> file in the <tt>./kernel</tt> directory.</p>
+ <p>The <tt>tty_clk</tt> routine defines a new ioctl <tt>CLK_SETSTR</tt>, which takes a pointer to a string of no more than 32 characters. Until the first <tt>CLK_SETSTR</tt> is performed, the routine will simply pass through characters. Once it is passed a string by <tt>CLK_SETSTR</tt>, any character in that string will be immediately followed by a timestamp in Unix <tt>timeval</tt> format. You can change the string whenever you want by doing another <tt>CLK_SETSTR</tt>. The character must be an exact, 8 bit match. The character '\000' cannot, be used, as it is the string terminator. Passing an empty string to <tt>CLK_SETSTR</tt> turns off timestamping. Passing <tt>NULL</tt> may produce surprising results.</p>
+ <h4><tt>TIOCDCDTIMESTAMP</tt> ioctl in FreeBSD</h4>
+ <p>This ioctl is included in FreeBSD 2.2 and later. It causes a timestamp to be inserted in the serial port receive data stream when the data carrier detect (DCD) signal is asserted. This is useful for those radio clocks that indicate the on-time epoch by means of a modem control signal. It is not recommended that this be used for PPS timestamps, as this function is available using the PPS application program interface included in FreeBSD 3.4 and later.</p>
+ <p>The <tt>TIOCDCDTIMESTAMP</tt> ioctl() is detected and compiled automatically on FreeBSD systems if available. With FreeBSD 2.2 the measured delay between activation of the DCD signal and the time the timestamp is captured on a 66MHz 486DX2 is 19 <font face="Symbol">m</font>s and on a 100MHz Pentium is 6 <font face="Symbol">m</font>s.</p>
+ <h4><tt>ppsclock</tt>Streams Module (depredated)</h4>
+ <p>This routine is a streams module which causes a timestamp to be captured when the DCD signal is asserted. It is normally used in connection with a PPS signal generated by some radio clocks. However, it is normally used only by the PPSAPI interface and SunOS 4.1.3 and should be avoided in other contexts. Instructions on how to configure and build a kernel supporting either of these routines is in the <tt>README</tt> file in the <tt>./kernel</tt> directory.</p>
+ <p>The ppsclock streams module implements the <tt>CIOGETEV</tt> ioctl, which takes a pointer to the structure</p>
+ <pre>
struct ppsclockev {
struct timeval tv;
u_int serial;
};
</pre>
- <p>The <tt>ppsclock</tt> module is pushed on the streams stack of the serial port connected to the DCD line. At each positive-going edge of the PPS signal, the routine latches the current local timestamp and increments a counter. At each <tt>CIOGETEV</tt> ioctl call, the current values of the timestamp and counter are returned in the <tt>ppsclockev</tt> structure.</p>
- <h4><tt>TIOCSPPS</tt> and <tt>TIOCGETPPSEV</tt> ioctls in Solaris</h4>
- <p>These ioctls are included in Solaris 2.4 and later. They implement the same function as the <tt>ppsclock</tt> streams module, but are implemented as integrated system calls independent of the streams facility. They are normally used in connection with a pulse-per-second (PPS) signal generated by some radio clocks. However, these ioctls are normally used only by the PPSAPI interface and should be avoided in other contexts. See the Sun documentation for the calling sequence and return values.</p>
- <p>Users are cautioned that these ioctls function improperly in Solaris versions prior to 2.8 with patch Generic_108528-02.</p>
- <h4><tt>tty_chu</tt> Line Discipline/Streams Module (depredated)</h4>
- <p>This routine is a special purpose line discipline for receiving a special timecode broadcast by Canadian time and frequency standard station CHU. It has been removed from the distribution since its function has been replaced by the <a href="drivers/driver7.html">Radio CHU Audio Demodulator/Decoder (type 7)</a> clock driver.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <p>The <tt>ppsclock</tt> module is pushed on the streams stack of the serial port connected to the DCD line. At each positive-going edge of the PPS signal, the routine latches the current local timestamp and increments a counter. At each <tt>CIOGETEV</tt> ioctl call, the current values of the timestamp and counter are returned in the <tt>ppsclockev</tt> structure.</p>
+ <h4><tt>TIOCSPPS</tt> and <tt>TIOCGETPPSEV</tt> ioctls in Solaris</h4>
+ <p>These ioctls are included in Solaris 2.4 and later. They implement the same function as the <tt>ppsclock</tt> streams module, but are implemented as integrated system calls independent of the streams facility. They are normally used in connection with a pulse-per-second (PPS) signal generated by some radio clocks. However, these ioctls are normally used only by the PPSAPI interface and should be avoided in other contexts. See the Sun documentation for the calling sequence and return values.</p>
+ <p>Users are cautioned that these ioctls function improperly in Solaris versions prior to 2.8 with patch Generic_108528-02.</p>
+ <h4><tt>tty_chu</tt> Line Discipline/Streams Module (depredated)</h4>
+ <p>This routine is a special purpose line discipline for receiving a special timecode broadcast by Canadian time and frequency standard station CHU. It has been removed from the distribution since its function has been replaced by the <a href="drivers/driver7.html">Radio CHU Audio Demodulator/Decoder (type 7)</a> clock driver.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/manyopt.html b/contrib/ntp/html/manyopt.html
index d2003d3..83869ca 100644
--- a/contrib/ntp/html/manyopt.html
+++ b/contrib/ntp/html/manyopt.html
@@ -2,68 +2,82 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Automatic NTP Configuration Options</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Automatic NTP Configuration Options</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Automatic NTP Configuration Options</h3>
- <img src="pic/alice51.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>Make sure who your friends are.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:13 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links9.txt"></script>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#many">Manycasting</a>
- <li class="inline"><a href="#auto">Manycast Interactions with Autokey</a>
- <li class="inline"><a href="#opt">Manycast Options</a>
- </ul>
- <hr>
- <h4 id="many">Manycasting</h4>
- <p>Manycasting is a automatic discovery and configuration paradigm new to NTPv4. It is intended as a means for a multicast client to troll the nearby network neighborhood to find cooperating manycast servers, validate them using cryptographic means and evaluate their time values with respect to other servers that might be lurking in the vicinity. The intended result is that each manycast client mobilizes client associations with some number of the &quot;best&quot; of the nearby manycast servers, yet automatically reconfigures to sustain this number of servers should one or another fail.</p>
- <p>Note that the manycasting paradigm does not coincide with the anycast paradigm described in RFC-1546, which is designed to find a single server from a clique of servers providing the same service. The manycast paradigm is designed to find a plurality of redundant servers satisfying defined optimality criteria.</p>
- <p>Manycasting can be used with either symmetric key or public key cryptography. The public key infrastructure (PKI) offers the best protection against compromised keys and is generally considered stronger, at least with relatively large key sizes. It is implemented using the Autokey protocol and the OpenSSL cryptographic library available from <a href="http://www.openssl.org">http://www.openssl.org</a>. The library can also be used with other NTPv4 modes as well and is highly recommended, especially for broadcast modes.</p>
- <p>A persistent manycast client association is configured using the <tt>manycastclient</tt> command, which is similar to the <tt>server</tt> command but with a multicast (IPv4 class D or IPv6 prefix <tt>FF</tt>) group address. The IANA has designated IPv4 address 224.1.1.1 and IPv6 address FF05::101 (site local) for NTP. When more servers are needed, it broadcasts manycast client messages to this address at the minimum feasible rate and minimum feasible time-to-live (TTL) hops, depending on how many servers have already been found. There can be as many manycast client associations as different group address, each one serving as a template for a future ephemeral unicast client/server association.</p>
- <p>Manycast servers configured with the <tt>manycastserver</tt> command listen on the specified group address for manycast client messages. Note the distinction between manycast client, which actively broadcasts messages, and manycast server, which passively responds to them. If a manycast server is in scope of the current TTL and is itself synchronized to a valid source and operating at a stratum level equal to or lower than the manycast client, it replies to the manycast client message with an ordinary unicast server message.</p>
- <p>The manycast client receiving this message mobilizes an ephemeral client/server association according to the matching manycast client template, but only if cryptographically authenticated and the server stratum is less than or equal to the client stratum. Authentication is explicitly required and either symmetric key or public key (Autokey) can be used. Then, the client polls the server at its unicast address in burst mode in order to reliably set the host clock and validate the source. This normally results in a volley of eight client/server at 2-s intervals during which both the synchronization and cryptographic protocols run concurrently. Following the volley, the client runs the NTP intersection and clustering algorithms, which act to discard all but the &quot;best&quot; associations according to stratum and synchronization distance. The surviving associations then continue in ordinary client/server mode.</p>
- <p>The manycast client polling strategy is designed to reduce as much as possible the volume of manycast client messages and the effects of implosion due to near-simultaneous arrival of manycast server messages. The strategy is determined by the <tt>manycastclient</tt>, <tt>tos</tt> and <tt>ttl</tt> configuration commands. The manycast poll interval is normally eight times the system poll interval, which starts out at the <tt>minpoll</tt> value specified in the <tt>manycastclient</tt>, command and, under normal circumstances, increments to the <tt>maxpolll</tt> value specified in this command. Initially, the TTL is set at the minimum hops specified by the <tt>ttl</tt> command. At each retransmission the TTL is increased until reaching the maximum hops specified by this command or a sufficient number client associations have been found. Further retransmissions use the same TTL.</p>
- <p>The quality and reliability of the suite of associations discovered by the manycast client is determined by the NTP mitigation algorithms and the <tt>minclock</tt> and <tt>minsane</tt> values specified in the <tt>tos</tt> configuration command. At least <tt>minsane</tt> candidate servers must be available and the mitigation algorithms produce at least <tt>minclock</tt> survivors in order to synchronize the clock. Byzantine agreement principles require at least four candidates in order to correctly discard a single falseticker. For legacy purposes, <tt>minsane</tt> defaults to 1 and <tt>minclock</tt> defaults to 3. For manycast service <tt>minsane</tt> should be explicitly set to 4. assuming at least that number of servers are available.</p>
- <p>If at least <tt>minclock</tt> servers are found, the manycast poll interval is immediately set to eight times <tt>maxpoll</tt>. If less than <tt>minclock</tt> servers are found when the TTL has reached the maximum hops, the manycast poll interval is doubled. For each transmission after that, the poll interval is doubled again until reaching the maximum of eight times <tt>maxpoll</tt>. Further transmissions use the same poll interval and TTL values. Note that while all this is going on, each client/server association found is operating normally it the system poll interval.</p>
- <p>Administratively scoped multicast boundaries are normally specified by the network router configuration and, in the case of IPv6, the link/site scope prefix. By default, the increment for TTL hops is 32 starting from 31; however, the <tt>ttl</tt> configuration command can be used to modify the values to match the scope rules.</p>
- <p>It is often useful to narrow the range of acceptable servers which can be found by manycast client associations. Because manycast servers respond only when the client stratum is equal to or greater than the server stratum, primary (stratum 1) servers fill find only primary servers in TTL range, which is probably the most common objective. However, unless configured otherwise, all manycast clients in TTL range will eventually find all primary servers in TTL range, which is probably not the most common objective in large networks. The <tt>tos</tt> command can be used to modify this behavior. Servers with stratum below <tt>floor</tt> or above <tt>ceiling</tt> specified in the <tt>tos</tt> command are strongly discouraged during the selection process; however, these servers may be temporally accepted if the number of servers within TTL range is less than <tt>minclock</tt>.</p>
- <p>The above actions occur for each manycast client message, which repeats at the designated poll interval. However, once the ephemeral client association is mobilized, subsequent manycast server replies are discarded, since that would result in a duplicate association. If during a poll interval the number of client associations falls below <tt>minclock</tt>, all manycast client prototype associations are reset to the initial poll interval and TTL hops and operation resumes from the beginning. It is important to avoid frequent manycast client messages, since each one requires all manycast servers in TTL range to respond. The result could well be an implosion, either minor or major, depending on the number of servers in range. The recommended value for <tt>maxpoll</tt> is 12 (4,096 s).</p>
- <p>It is possible and frequently useful to configure a host as both manycast client and manycast server. A number of hosts configured this way and sharing a common group address will automatically organize themselves in an optimum configuration based on stratum and synchronization distance. For example, consider an NTP subnet of two primary servers and a hundred or more dependent clients. With two exceptions, all servers and clients have identical configuration files including both <tt>multicastclient</tt> and <tt>multicastserver</tt> commands using, for instance, multicast group address 239.1.1.1. The only exception is that each primary server configuration file must include commands for the primary reference source such as a GPS receiver.</p>
- <p>The remaining configuration files for all secondary servers and clients have the same contents, except for the <tt>tos</tt> command, which is specific for each stratum level. For stratum 1 and stratum 2 servers, that command is not necessary. For stratum 3 and above servers the <tt>floor</tt> value is set to the intended stratum number. Thus, all stratum 3 configuration files are identical, all stratum 4 files are identical and so forth.</p>
- <p>Once operations have stabilized in this scenario, the primary servers will find the primary reference source and each other, since they both operate at the same stratum (1), but not with any secondary server or client, since these operate at a higher stratum. The secondary servers will find the servers at the same stratum level. If one of the primary servers loses its GPS receiver, it will continue to operate as a client and other clients will time out the corresponding association and re-associate accordingly.</p>
- <p>Some administrators prefer to avoid running <tt>ntpd</tt> continuously and run either <tt>ntpdate</tt> or <tt>ntpd -q</tt> as a cron job. In either case the servers must be configured in advance and the program fails if none are available when the cron job runs. A really slick application of manycast is with <tt>ntpd -q</tt>. The program wakes up, scans the local landscape looking for the usual suspects, selects the best from among the rascals, sets the clock and then departs. Servers do not have to be configured in advance and all clients throughout the network can have the same configuration file.</p>
- <h4 id="auto">Manycast Interactions with Autokey</h4>
- <p>Each time a manycast client sends a client mode packet to a multicast group address, all manycast servers in scope generate a reply including the host name and status word. The manycast clients then run the Autokey protocol, which collects and verifies all certificates involved. Following the burst interval all but three survivors are cast off, but the certificates remain in the local cache. It often happens that several complete signing trails from the client to the primary servers are collected in this way.</p>
- <p>About once an hour or less often if the poll interval exceeds this, the client regenerates the Autokey key list. This is in general transparent in client/server mode. However, about once per day the server private value used to generate cookies is refreshed along with all manycast client associations. In this case all cryptographic values including certificates is refreshed. If a new certificate has been generated since the last refresh epoch, it will automatically revoke all prior certificates that happen to be in the certificate cache. At the same time, the manycast scheme starts all over from the beginning and the expanding ring shrinks to the minimum and increments from there while collecting all servers in scope.</p>
- <h4 id="opt">Manycast Options</h4>
- <dl>
- <dt><tt>tos [ ceiling <i>ceiling</i> | cohort {0 | 1} |floor <i>floor</i> | minclock <i>minclock</i> | minsane <i>minsane</i> ]</tt>
- <dd>This command affects the clock selection and clustering algorithms. It can be used to select the quality and quantity of peers used to synchronize the system clock and is most useful in manycast mode. The variables operate as follows:
- <dl>
- <dt><tt>ceiling <i>ceiling</i></tt>
- <dd>Peers with strata above <i>ceiling</i> will be discarded if there are at least <i>minclock</i> peers remaining. This value defaults to 15, but can be changed to any number from 1 to 15.
- <dt><tt>cohort { 0 | 1 }</tt>
- <dd>This is a binary flag which enables (0) or disables (1) manycast server replies to manycast clients with the same stratum level. This is useful to reduce implosions where large numbers of clients with the same stratum level are present. The default is to enable these replies.
- <dt><tt>floor <i>floor</i></tt>
- <dd>Peers with strata below <i>floor</i> will be discarded if there are at least <i>minclock</i> peers remaining. This value defaults to 1, but can be changed to any number from 1 to 15.
- <dt><tt>minclock <i>minclock</i></tt>
- <dd>The clustering algorithm repeatedly casts out outlyer associations until no more than <i>minclock</i> associations remain. This value defaults to 3, but can be changed to any number from 1 to the number of configured sources.
- <dt><tt>minsane <i>minsane</i></tt>
- <dd>This is the minimum number of candidates available to the clock selection algorithm in order to produce one or more truechimers for the clustering algorithm. If fewer than this number are available, the clock is undisciplined and allowed to run free. The default is 1 for legacy purposes. However, according to principles of Byzantine agreement, <i>minsane</i> should be at least 4 in order to detect and discard a single falseticker.
- </dl>
- <dt><tt>ttl <i>hop</i> ...</tt>
- <dd>This command specifies a list of TTL values in increasing order. up to 8 values can be specified. In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31.
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Automatic NTP Configuration Options</h3>
+ <img src="pic/alice51.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>Make sure who your friends are.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">20:55</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="275">Tuesday, October 11, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links9.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#bcst">Broadcasting</a>
+ <li class="inline"><a href="#mcst">Manycasting</a>
+ <li class="inline"><a href="#orphan">Orphan Mode</a>
+ <li class="inline"><a href="#opt">Server Discovery Options</a>
+ </ul>
+ <hr>
+ <h4 id="bcst">Broadcasting</h4>
+ <p>Broadcasting is the simplest way to provide automatic server discovery. It uses the multi-destination paradigm, where the subnet spanning tree is constructed automatically, either by the switches in an Ethernet LAN&nbsp;or the DVMRP&nbsp;or PIM&nbsp;protocols when spanning multiple networks.</p>
+ <p>A broadcast or multicast server is mobilized by the broadcast configuration command. The addresses can be either from the IPv4 broadcast/mulitcast address family or the IPv6 address family. Multiple broadcast server associations can be specified for a single host.</p>
+ <p>A host is enabled for broadcast reception using the <tt>broadcastclient</tt> configuration command, with or without the <tt>novolley</tt> option. Upon receiving the first message from a broadcast server, the client mobilizes an ephemeral client association and exchanges a volley of client/server messages in order to quickly authenticate the source, set the clock and measure the propagation delay, then reverts to listen-only mode. A multicast client is mobilized in the same way using the <tt>multicastclient</tt> configuration command and specified multicast group address.</p>
+ <p>Broadcasting can be used with either symmetric key or public key cryptography. Public key cryptography offers the best protection against compromised keys and is generally considered stronger. By default, either of these two means is required, but this can be overridden by the <tt>disable auth</tt> command.</p>
+ <p>In both broadcast and multicast client operations the client association is demobilized in case of error or timeout due to loss of server or connectivity. </p>
+ <h4 id="mcst">Manycasting</h4>
+ <p>Manycasting is a automatic discovery and configuration paradigm new to NTPv4. It is intended as a means for a client to troll the nearby network neighborhood to find cooperating servers, validate them using cryptographic means and evaluate their time values with respect to other servers that might be lurking in the vicinity. The intended result is that each client mobilizes associations with a given number of the &quot;best&quot; nearby servers, yet automatically reconfigures to sustain this number of servers should one or another fail.</p>
+ <p>Note that the manycast paradigm does not coincide with the anycast paradigm described in RFC-1546, which is designed to find a single server from a clique of servers providing the same service. The manycast paradigm is designed to find a plurality of redundant servers satisfying defined optimality criteria.</p>
+ <p>Manycasting can be used with either symmetric key or public key cryptography. Public key cryptography offers the best protection against compromised keys and is generally considered stronger. By default, either of these two means is required, but this can be overridden by the <tt>disable auth</tt> command.</p>
+ <p>A manycast client association is configured using the <tt>manycastclient</tt> configuration command, which is similar to the <tt>server</tt> configuration command, but with a broadcast or multicast address. Depending on address family. The manycast client sends ordinary client mode messages, but with a broadcast address rather than a unicast address. It sends only if less than a given threshold of servers have been found and then only at the minimum feasible rate and minimum feasible time-to-live (TTL) hops. There can be as many manycast client associations as different broadcast addresses, each one serving as a template for a future unicast client/server association.</p>
+ <p>Manycast servers configured with the <tt>manycastserver</tt> command listen on the specified broadcast address for manycast client messages. If a manycast server is in scope of the current TTL and is itself synchronized to a valid source and operating at a stratum level equal to or lower than the manycast client, it replies to the manycast client message with an ordinary unicast server message.</p>
+ <p>The manycast client receiving this message mobilizes a preemptable client association according to the matching manycast client template, but only if cryptographically authenticated and the server stratum is less than or equal to the client stratum. The client runs the NTP mitigation algorithms, which act to demobilize all but a threshold number of associations according to stratum and synchronization distance. The surviving associations then continue in ordinary client/server mode.</p>
+ <p>If for some reason the number of available servers falls below the threshold, the manycast client resumes sending broadcast messages. The polling strategy is designed to reduce as much as possible the volume of broadcast messages and the effects of implosion due to near-simultaneous arrival of manycast server messages. The strategy is determined by the <tt>tos</tt> and <tt>ttl</tt> configuration commands described below.</p>
+ <p>It is possible and frequently useful to configure a host as both manycast client and manycast server. A number of hosts configured this way and sharing a common group address will automatically organize themselves in an optimum configuration based on stratum and synchronization distance.</p>
+ <p>For example, consider an NTP subnet of two primary servers and several secondary servers and a number of dependent clients. With twoAll servers and clients have identical configuration files including both <tt>multicastclient</tt> and <tt>multicastserver</tt> commands using, for instance, multicast group address 239.1.1.1. Each primary server configuration file must include commands for the primary reference source such as a GPS receiver.</p>
+ <p>The remaining configuration files for all secondary servers and clients have the same contents, except for the <tt>tos</tt> command, which is specific for each stratum level. For stratum 1 and stratum 2 servers, that command is not necessary. For stratum 3 and above servers the <tt>tos floor</tt> value is set to the intended stratum number. Thus, all stratum 3 configuration files use <tt>tos floor 3</tt>, all stratum 4 files use <tt>tos floor 4</tt> and so forth.</p>
+ <p>Once operations have stabilized, the primary servers will find the primary reference source and each other, since they both operate at the same stratum (1), but not with any secondary server or client, since these operate at a higher stratum. The secondary servers will find the servers at the same stratum level. If one of the primary servers loses its GPS receiver, it will continue to operate as a client and other clients will time out the corresponding association and re-associate accordingly.</p>
+ <h4 id="orphan">Orphan Mode</h4>
+ <p>Sometimes it is necessary to operate an NTP&nbsp;subnet in isolation, because a local reference clock is unavailable or connectivity to the Internet is not provided. In such cases it may be necessary that the subnet servers and clients remain synchronized to a common timescale, not necessarily the UTC&nbsp;timescale. Previously, this function was provided by the local clock driver, which could be configured for a server that could be reached, directly or indirectly from all other servers and clients in the subnet.</p>
+ <p>There are many disadvantages using the local clock driver: multiple source redundancy is not possible and the subnet is vulnerable to single-point failures. Orphan mode is intended to replace the need for the local clock driver. It operates in subnet configurations in all modes, including broadcast, and multiple servers and clients and handles seamless switching as primary sources fail and recover.</p>
+ <p>A server or client is enabled for orphan mode using the <tt>tos orphan <i>stratum</i></tt> command, where <tt><i>stratum</i></tt> is some stratum less than 16 and greater than any anticipated stratum that might occur with ordinary Internet servers. This is the same consideration that guides the local clock driver stratum.</p>
+ <p>As long as the stratum of any orphan is less than the orphan stratum, the servers and clients operate in the normal way. However, if the stratum equals or exceeds this stratum, the server or client is considered an orphan. If under these conditions a host has no sources of the same or lower stratum, it is designated an orphan parent; otherwise, it is considered an orphan child. Orphan parents show offset zero, root delay zero and reference ID&nbsp;127.0.0.1, which of course is the Unix loopback address. Orphan children show the mitigated offset of their servers, root delay randomized over a moderate range and reference ID of their system peer. An important distinction is that the entire subnet operates at the same orphan stratum and that the order of preference is the root delay, not the stratum and root distance as usual.</p>
+ <p>For the most flexible and reliable operation, all servers and clients in the subnet should include the <tt>orphan</tt> command in the configuration file and with the same orphan stratum. This provides mutual redundancy and diversity for all NTP&nbsp;modes of operation, including broadcast.</p>
+ <p>For example, consider the case where several campus secondary (stratum 2) servers are configured for public Internet primary servers and with each other using symmetric modes. These servers provide synchronization with a number of department servers using broadcast mode, where each of these servers is configured as both a broadcast server and broadcast client. Individual workstations on the department LAN&nbsp;are configured as broadcast clients only. All servers (not necessarily the clients) have the <tt>orphan 5</tt> command, for example.</p>
+ <p>In normal operation all servers and clients operate below stratum 5, so operate with the subnet configuration determined by stratum and root distance. If all sources are lost at any stratum level, the server or client continues operation as orphan parent. However, if sources at the orphan stratum are found, the host synchronizes to the source with lowest root delay. Since orphan root delay is determined randomly at startup, loops are avoided, even in broadcast modes where multiple servers are available.</p>
+ <h4 id="opt">Server Discovery Options</h4>
+ <dl>
+ <dt><tt>tos [ ceiling <i>ceiling</i> | cohort {0 | 1} | floor <i>floor</i> | orphan <i>orphan</i> | maxdistance <i>maxdistance</i> | minclock <i>minclock</i> | minsane <i>minsane</i> ]</tt>
+ <dd>This command affects the clock selection and clustering algorithms. It can be used to select the quality and quantity of peers used to synchronize the system clock and is most useful in manycast mode. The variables operate as follows:
+ <dl> <dt><tt>beacon <i>beacon</i></tt>
+ <dd>The manycast server sends packets at intervals of 64 s if less than <i><tt>maxclock</tt></i> servers are available. Otherwise, it sends packets at the <i><tt>beacon</tt></i> interval in seconds. The default is 3600 s.<dt><tt>ceiling <i>ceiling</i></tt>
+ <dd>Servers with stratum at or above <i>ceiling</i> will be discarded if there are at least <i><tt>minclock</tt></i> peers remaining. This value defaults to 15, but can be changed to any number from 1 to 15.
+ <dt><tt>cohort { 0 | 1 }</tt>
+ <dd>This is a binary flag which enables (0) or disables (1) manycast server replies to manycast clients with the same stratum level. This is useful to reduce implosions where large numbers of clients with the same stratum level are present. The default is to enable these replies.
+ <dt><tt>floor <i>floor</i></tt>
+ <dd>Peers with strata below <i>floor</i> will be discarded if there are at least <i>minclock</i> peers remaining. This value defaults to 1, but can be changed to any number from 1 to 15.
+ <dt><tt>orphan <i>stratum</i></tt>
+ <dd>If <tt><i>stratum</i></tt> is set at some value less than 16 a special orphan mode is enterred when no outside source of synchronization is available. To use orphan mode a number of participants are identically configured both as broadcast client and as broadcast server. One or more participants are configured to use an outside source, either a reference clock or another Internet server. When the source or sources fail, the system stratum is set at <tt><i>stratum</i></tt> and a leader is elected to serve as the reference source. When an outside source of synchronization is again available, the orphan mode is disabled.<dt><tt>mindist <i>mindistance</i></tt>
+ <dd>The slection algorithm normally pads each intersection a minimum of one millisecond to avoid needless classification. In some cases, such as reference clocks with high jitter and a PPS signal, it is useful to increase the padding. This command can be used for that purpose. As a general rule, set the mindistance to the maximum expected offset plus the maxiumum expected jitter, in seconds.
+ <dt><tt>maxdist <i>maxdistance</i></tt>
+ <dd>The selection algorithm accumulates a number of packets before setting the clock in order to use the best data available. The number is determined by the synchronization distance for each association and a limit called the distance threshold. The synchronization distance starts at 16, then drops by a factor of about two as each packet is received. The default distance threshold is 1.0, which usually results in four packets. Setting maxdistance to some value between 1 and 16 can be used to change the number of packets required. For instance, setting it to 16 will set the clock on the first packet received; howver, setting it to this value essentially disables the mitigation and grooming algorithms.
+ <dt><tt>minclock <i>minclock</i></tt>
+ <dd>The clustering algorithm repeatedly casts out outlyer associations until no more than <i>minclock</i> associations remain. This value defaults to 3, but can be changed to any number from 1 to the number of configured sources.
+ <dt><tt>minsane <i>minsane</i></tt>
+ <dd>This is the minimum number of candidates available to the clock selection algorithm in order to produce one or more truechimers for the clustering algorithm. If fewer than this number are available, the clock is undisciplined and allowed to run free. The default is 1 for legacy purposes. However, according to principles of Byzantine agreement, <i>minsane</i> should be at least 4 in order to detect and discard a single falseticker.
+ </dl>
+
+ <dt><tt>ttl <i>hop</i> ...</tt>
+ <dd>This command specifies a list of TTL values in increasing order. up to 8 values can be specified. In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31.
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/measure.html b/contrib/ntp/html/measure.html
index c254627..9cce97a 100644
--- a/contrib/ntp/html/measure.html
+++ b/contrib/ntp/html/measure.html
@@ -2,21 +2,22 @@
<html>
- <head>
- <title>Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation</h3>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">20:24</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="257">Monday, December 02, 2002</csobj></p>
- <hr>
- <p>The technical memorandum: <cite>Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation</cite><a href="http://www.eecis.udel.edu/%7emills/database/memos/memo96a.ps">(PostScript) </a>describes a number of techniques for conducting experiments typical of computer network and transmission systems engineering.</p>
- <p>In most experiments in which time is involved, it is necessary to develop estimates of time, frequency and measurement errors from a series of time measurements between the clocks of a number of computers and ancillary devices interconnected by some kind of computer network. However, time is not a physical quantity, such as mass, nor can it be measured relative to an absolute frame of reference, such as velocity. The only way to measure time in our universe is to compare the reading of one clock, which runs according to its own timescale, with another clock, which runs according to a given timescale, at some given instant or epoch. The errors arise from the precision of time comparisons and the accuracy of frequency estimates between the timescales involved.</p>
- <p>The usual data collected during a performance run of some experiment might include time offsets, time delays, frequency offsets and various error statistics. While time offsets between two clocks can be measured directly, frequency offsets can be estimated only from two or more time offsets made over some time interval in the experiment. In practice, a sequence of time comparisons can be performed over the lifetime of the experiment and the instantaneous frequency estimated either in real time with a recurrence relation, or retrospectively with a polynomial fit to the data.</p>
- <p>Estimating time and frequency errors in real time has been studied by a distinct subspecies of physicists who have made a career of the technology involved. Various means including autoregressive models, Kalman filters and simple weighted-average algorithms are used extensively by national standards laboratories to model cesium-clock ensembles. These techniques have been adapted to computer network and transmission engineering problems as well. This memorandum explores issues in performing experiments of this type and summarizes various techniques found useful in practice.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation</h3>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:41</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <hr>
+ <p>The technical memorandum: <cite>Time and Time Interval Measurement with Application to Computer and Network Performance Evaluation</cite><a href="http://www.eecis.udel.edu/%7emills/database/memos/memo96a.ps">(PostScript) </a>describes a number of techniques for conducting experiments typical of computer network and transmission systems engineering.</p>
+ <p>In most experiments in which time is involved, it is necessary to develop estimates of time, frequency and measurement errors from a series of time measurements between the clocks of a number of computers and ancillary devices interconnected by some kind of computer network. However, time is not a physical quantity, such as mass, nor can it be measured relative to an absolute frame of reference, such as velocity. The only way to measure time in our universe is to compare the reading of one clock, which runs according to its own timescale, with another clock, which runs according to a given timescale, at some given instant or epoch. The errors arise from the precision of time comparisons and the accuracy of frequency estimates between the timescales involved.</p>
+ <p>The usual data collected during a performance run of some experiment might include time offsets, time delays, frequency offsets and various error statistics. While time offsets between two clocks can be measured directly, frequency offsets can be estimated only from two or more time offsets made over some time interval in the experiment. In practice, a sequence of time comparisons can be performed over the lifetime of the experiment and the instantaneous frequency estimated either in real time with a recurrence relation, or retrospectively with a polynomial fit to the data.</p>
+ <p>Estimating time and frequency errors in real time has been studied by a distinct subspecies of physicists who have made a career of the technology involved. Various means including autoregressive models, Kalman filters and simple weighted-average algorithms are used extensively by national standards laboratories to model cesium-clock ensembles. These techniques have been adapted to computer network and transmission engineering problems as well. This memorandum explores issues in performing experiments of this type and summarizes various techniques found useful in practice.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/miscopt.html b/contrib/ntp/html/miscopt.html
index 13f8981..54041b1 100644
--- a/contrib/ntp/html/miscopt.html
+++ b/contrib/ntp/html/miscopt.html
@@ -2,92 +2,122 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Miscellaneous Options</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Miscellaneous Options</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Miscellaneous Options</h3>
- <img src="pic/boom3.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
- <p>We have three, now looking for more.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">01:50</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="217">Friday, May 02, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
- <hr>
- <dl>
- <dt><tt>broadcastdelay <i>seconds</i></tt>
- <dd>The broadcast and multicast modes require a special calibration to determine the network delay between the local and remote servers. Ordinarily, this is done automatically by the initial protocol exchanges between the client and server. In some cases, the calibration procedure may fail due to network or server access controls, for example. This command specifies the default delay to be used under these circumstances. Typically (for Ethernet), a number between 0.003 and 0.007 seconds is appropriate. The default when this command is not used is 0.004 seconds.
- <dt><tt>calldelay <i>delay</i></tt>
- <dd>This option controls the delay in seconds between the first and second packets sent in burst or iburst mode to allow additional time for a modem or ISDN call to complete.
- <dt><tt>driftfile <i>driftfile</i></tt>
- <dd>This command specifies the complete path and name of the file used to record the frequency of the local clock oscillator. This is the same operation as the <tt>-f</tt> command linke option. If the file exists, it is read at startup in order to set the initial frequency and then updated once per hour with the current frequency computed by the daemon. If the file name is specified, but the file itself does not exist, the starts with an initial frequency of zero and creates the file when writing it for the first time. If this command is not given, the daemon will always start with an initial frequency of zero.
- <p>The file format consists of a single line containing a single floating point number, which records the frequency offset measured in parts-per-million (PPM). The file is updated by first writing the current drift value into a temporary file and then renaming this file to replace the old version. This implies that <tt>ntpd</tt> must have write permission for the directory the drift file is located in, and that file system links, symbolic or otherwise, should be avoided.</p>
- <dt><tt>enable [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats]</tt><br>
- <tt>disable [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats ]</tt>
- <dd>Provides a way to enable or disable various system options. Flags not mentioned are unaffected. Note that all of these flags can be controlled remotely using the <a href="ntpdc.html"><tt>ntpdc</tt></a> utility program.
- <dl>
- <dt><tt>auth</tt>
- <dd>Enables the server to synchronize with unconfigured peers only if the peer has been correctly authenticated using either public key or private key cryptography. The default for this flag is enable.
- <dt><tt>bclient</tt>
- <dd>Enables the server to listen for a message from a broadcast or multicast server, as in the <tt>multicastclient</tt> command with default address. The default for this flag is disable.
- <dt><tt>calibrate</tt>
- <dd>Enables the calibrate feature for reference clocks. The default for this flag is disable.
- <dt><tt>kernel</tt>
- <dd>Enables the kernel time discipline, if available. The default for this flag is enable if support is available, otherwise disable.
- <dt><tt>monitor</tt>
- <dd>Enables the monitoring facility. See the <tt>ntpdc</tt> program and the <tt>monlist</tt> command or further information. The default for this flag is enable.
- <dt><tt>ntp</tt>
- <dd>Enables time and frequency discipline. In effect, this switch opens and closes the feedback loop, which is useful for testing. The default for this flag is enable.
- <dt><tt>pps</tt>
- <dd>Enables the pulse-per-second (PPS) signal when frequency and time is disciplined by the precision time kernel modifications. See the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page for further information. The default for this flag is disable.
- <dt><tt>stats</tt>
- <dd>Enables the statistics facility. See the <a href="monopt.html">Monitoring Options</a> page for further information. The default for this flag is disable
- </dl>
- <dt><tt>includefile <i>includefile</i></tt>
- <dd>This command allows additional configuration commands to be included from a separate file. Include files may be nested to a depth of five; upon reaching the end of any include file, command processing resumes in the previous configuration file. This option is useful for sites that run <tt>ntpd</tt> on multiple hosts, with (mostly) common options (e.g., a restriction list).
- <dt><tt>logconfig <i>configkeyword</i></tt>
- <dd>This command controls the amount and type of output written to the system <tt>syslog</tt> facility or the alternate <tt>logfile</tt> log file. By default, all output is turned on. All <i><tt>configkeyword</tt></i> keywords can be prefixed with <tt>=</tt>, <tt>+</tt> and <tt>-</tt>, where <tt>=</tt> sets the <tt>syslogmask</tt>, <tt>+</tt> adds and <tt>-</tt> removes messages. <tt>syslog messages</tt> can be controlled in four classes (<tt>clock</tt>, <tt>peer</tt>, <tt>sys</tt> and <tt>sync</tt>). Within these classes four types of messages can be controlled: informational messages (<tt>info</tt>), event messages (<tt>events</tt>), statistics messages (<tt>statistics</tt>) and status messages (<tt>status</tt>).
- <p>Configuration keywords are formed by concatenating the message class with the event class. The <tt>all</tt> prefix can be used instead of a message class. A message class may also be followed by the <tt>all</tt> keyword to enable/disable all messages of the respective message class.Thus, a minimal log configuration could look like this:</p>
- <p><tt>logconfig=syncstatus +sysevents</tt></p>
- <p>This would just list the synchronizations state of <tt>ntpd</tt> and the major system events. For a simple reference server, the following minimum message configuration could be useful:</p>
- <p><tt>logconfig=syncall +clockall</tt></p>
- <p>This configuration will list all clock information and synchronization information. All other events and messages about peers, system events and so on is suppressed.</p>
- <p><tt>logfile <i>logfile</i></tt></p>
- <p>This command specifies the location of an alternate log file to be used instead of the default system <tt>syslog</tt> facility. This is the same operation as the <tt>-l </tt>command line option.</p>
- <dt><tt>setvar <i>variable</i> [default]</tt>
- <dd>This command adds an additional system variable. These variables can be used to distribute additional information such as the access policy. If the variable of the form <tt><i>name</i> = <i>value</i></tt> is followed by the <tt>default</tt> keyword, the variable will be listed as part of the default system variables (<tt>ntpq rv</tt> command). These additional variables serve informational purposes only. They are not related to the protocol other that they can be listed. The known protocol variables will always override any variables defined via the <tt>setvar</tt> mechanism. There are three special variables that contain the names of all variable of the same group. The <tt>sys_var_list</tt> holds the names of all system variables. The <tt>peer_var_list</tt> holds the names of all peer variables and the <tt>clock_var_list</tt> holds the names of the reference clock variables.
- <dt><tt>tinker [ allan <i>allan</i> | dispersion <i>dispersion</i> | freq <i>freq</i> | huffpuff | <i>huffpuff</i> | panic <i>panic</i> | step <i>step</i> | stepout <i>stepout</i> ]</tt>
- <dd>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. The default values of these variables have been carefully optimized for a wide range of network speeds and reliability expectations. In general, they interact in intricate ways that are hard to predict and some combinations can result in some very nasty behavior. Very rarely is it necessary to change the default values; but, some folks can't resist twisting the knobs anyway and this command is for them. Emphasis added: twisters are on their own and can expect no help from the support group.
- <p>The variables operate as follows:</p>
- <dl>
- <dt><tt>allan <i>allan</i></tt>
- <dd>The argument becomes the new value for the minimum Allan intercept, which is a parameter of the PLL/FLL clock discipline algorithm. The value in log2 seconds defaults to 7 (1024 s), which is also the lower limit.
- <dt><tt>dispersion <i>dispersion</i></tt>
- <dd>The argument becomes the new value for the dispersion increase rate, normally .000015 s/s.
- <dt><tt>freq <i>freq</i></tt>
- <dd>The argument becomes the initial value of the frequency offset in parts-per-million. This overrides the value in the frequency file, if present, and avoids the initial training state if it is not.
- <dt><tt>huffpuff <i>huffpuff</i></tt>
- <dd>The argument becomes the new value for the experimental huff-n'-puff filter span, which determines the most recent interval the algorithm will search for a minimum delay. The lower limit is 900 s (15 m), but a more reasonable value is 7200 (2 hours). There is no default, since the filter is not enabled unless this command is given.
- <dt><tt>panic <i>panic</i></tt>
- <dd>The argument is the panic threshold, normally 1000 s. If set to zero, the panic sanity check is disabled and a clock offset of any value will be accepted.
- <dt><tt>step <i>step</i></tt>
- <dd>The argument is the step threshold, which by default is 0.128 s. It can be set to any positive number in seconds. If set to zero, step adjustments will never occur. Note:&nbsp;The kernel time discipline is disabled if the step threshold is set to zero or greater than the default.
- <dt><tt>stepout <i>stepout</i></tt>
- <dd>The argument is the stepout timeout, which by default is 900 s. It can be set to any positive number in seconds. If set to zero, the stepout pulses will not be suppressed.
- </dl>
- <dt><tt>trap <i>host_address</i> [port <i>port_number</i>] [interface <i>interface_address</i>]</tt>
- <dd>This command configures a trap receiver at the given host address and port number for sending messages with the specified local interface address. If the port number is unspecified, a value of 18447 is used. If the interface address is not specified, the message is sent with a source address of the local interface the message is sent through. Note that on a multihomed host the interface used may vary from time to time with routing changes.
- <p>The trap receiver will generally log event messages and other information from the server in a log file. While such monitor programs may also request their own trap dynamically, configuring a trap receiver will ensure that no messages are lost when the server is started.</p>
- <dt><tt>ttl <i>hop</i> ...</tt>
- <dd>This command specifies a list of TTL values in increasing order. up to 8 values can be specified. In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31.
- </dl>
- <h4>Files</h4>
- <tt>ntp.drift</tt> frequency compensation (PPM)
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Miscellaneous Options</h3>
+ <img src="pic/boom3.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
+ <p>We have three, now looking for more.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:50</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="271">Monday, January 09, 2006</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
+ <hr>
+ <dl>
+ <dt><tt>broadcastdelay <i>seconds</i></tt>
+ <dd>The broadcast and multicast modes require a special calibration to determine the network delay between the local and remote servers. Ordinarily, this is done automatically by the initial protocol exchanges between the client and server. In some cases, the calibration procedure may fail due to network or server access controls, for example. This command specifies the default delay to be used under these circumstances. Typically (for Ethernet), a number between 0.003 and 0.007 seconds is appropriate. The default when this command is not used is 0.004 seconds.
+ <dt><tt>calldelay <i>delay</i></tt>
+ <dd>This option controls the delay in seconds between the first and second packets sent in burst or iburst mode to allow additional time for a modem or ISDN call to complete.
+ <dt><tt>driftfile <i>driftfile</i> [<i>
+ minutes </i> [<i> tolerance </i>] ]</tt>
+ <dd>This command specifies the complete path and name of the file used to record the frequency of the local clock oscillator. This is the same operation as the <tt>-f</tt> command linke option. If the file exists, it is read at startup in order to set the initial frequency and then updated once per hour with the current frequency computed by the daemon. If the file name is specified, but the file itself does not exist, the starts with an initial frequency of zero and creates the file when writing it for the first time. If this command is not given, the daemon will always start with an initial frequency of zero.
+ <p>The file format consists of a single line containing a single floating point number, which records the frequency offset measured in parts-per-million (PPM). The file is updated by first writing the current drift value into a temporary file and then renaming this file to replace the old version. This implies that <tt>ntpd</tt> must have write permission for the directory the drift file is located in, and that file system links, symbolic or otherwise, should be avoided.</p>
+
+<p>The two optional values determine how often the file is written, and
+are particuarly useful when is it desirable to avoid spinning up the
+disk unnecessarily. The parameter <tt>minutes</tt> is how often the file will be written. If omitted or less
+than 1, the interval will be 60 minutes (one hour). The parameter <tt>tolerance</tt> is the
+threshold to skip writing the new value. If the new value is within
+<tt>tolerance</tt> percent of the last value written (compared out to 3
+decimal places), the write will be
+skipped. The default is 0.0, which means that the write will occur
+unless the current and previous values are the same. A tolerance of
+.1 equates roughly to a difference in the 2nd decimal place.</p>
+<dt><tt>enable [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats]</tt><br>
+ <tt>disable [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats ]</tt>
+ <dd>Provides a way to enable or disable various system options. Flags not mentioned are unaffected. Note that all of these flags can be controlled remotely using the <a href="ntpdc.html"><tt>ntpdc</tt></a> utility program.
+ <dl>
+ <dt><tt>auth</tt>
+ <dd>Enables the server to synchronize with unconfigured peers only if the peer has been correctly authenticated using either public key or private key cryptography. The default for this flag is enable.
+ <dt><tt>bclient</tt>
+ <dd>Enables the server to listen for a message from a broadcast or multicast server, as in the <tt>multicastclient</tt> command with default address. The default for this flag is disable.
+ <dt><tt>calibrate</tt>
+ <dd>Enables the calibrate feature for reference clocks. The default for this flag is disable.
+ <dt><tt>kernel</tt>
+ <dd>Enables the kernel time discipline, if available. The default for this flag is enable if support is available, otherwise disable.
+ <dt><tt>monitor</tt>
+ <dd>Enables the monitoring facility. See the <tt>ntpdc</tt> program and the <tt>monlist</tt> command or further information. The default for this flag is enable.
+ <dt><tt>ntp</tt>
+ <dd>Enables time and frequency discipline. In effect, this switch opens and closes the feedback loop, which is useful for testing. The default for this flag is enable.
+ <dt><tt>pps</tt>
+ <dd>Enables the pulse-per-second (PPS) signal when frequency and time is disciplined by the precision time kernel modifications. See the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page for further information. The default for this flag is disable.
+ <dt><tt>stats</tt>
+ <dd>Enables the statistics facility. See the <a href="monopt.html">Monitoring Options</a> page for further information. The default for this flag is disable
+ </dl>
+ <dt><tt>includefile <i>includefile</i></tt>
+ <dd>This command allows additional configuration commands to be included from a separate file. Include files may be nested to a depth of five; upon reaching the end of any include file, command processing resumes in the previous configuration file. This option is useful for sites that run <tt>ntpd</tt> on multiple hosts, with (mostly) common options (e.g., a restriction list).
+ <dt><tt>logconfig <i>configkeyword</i></tt>
+ <dd>This command controls the amount and type of output written to the system <tt>syslog</tt> facility or the alternate <tt>logfile</tt> log file. All <i><tt>configkeyword</tt></i> keywords can be prefixed with <tt>=</tt>, <tt>+</tt> and <tt>-</tt>, where <tt>=</tt> sets the <tt>syslogmask</tt>, <tt>+</tt> adds and <tt>-</tt> removes messages. <tt>syslog messages</tt> can be controlled in four classes (<tt>clock</tt>, <tt>peer</tt>, <tt>sys</tt> and <tt>sync</tt>). Within these classes four types of messages can be controlled: informational messages (<tt>info</tt>), event messages (<tt>events</tt>), statistics messages (<tt>statistics</tt>) and status messages (<tt>status</tt>).
+ <p>Configuration keywords are formed by concatenating the message class with the event class. The <tt>all</tt> prefix can be used instead of a message class. A message class may also be followed by the <tt>all</tt> keyword to enable/disable all messages of the respective message class. By default, <tt>logconfig</tt> output is set to <tt>allsync</tt>.
+ <p>Thus, a minimal log configuration could look like this:</p>
+ <p><tt>logconfig=syncstatus +sysevents</tt></p>
+ <dl>
+ <dd>
+ <p>This would just list the synchronizations state of <tt>ntpd</tt> and the major system events. For a simple reference server, the following minimum message configuration could be useful:</p>
+
+ </dl>
+
+ <dd>
+ <p><tt>logconfig=allsync +allclock</tt></p>
+ <dl>
+ <dd>
+ <p>This configuration will list all clock information and synchronization information. All other events and messages about peers, system events and so on is suppressed.</p>
+
+ </dl>
+ <dt><tt>logfile <i>logfile</i></tt>
+ <dl>
+ <dd>
+ <p>This command specifies the location of an alternate log file to be used instead of the default system <tt>syslog</tt> facility. This is the same operation as the <tt>-l </tt>command line option.</p>
+
+ </dl>
+ <dt><tt>phone <i>dial</i>1 <i>dial</i>2 ...</tt>
+ <dl>
+ <dd>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&nbsp;is normally prepended to the number, which can contain other modem control codes as well.
+ </dl>
+ <dt><tt>setvar <i>variable</i> [default]</tt>
+ <dd>This command adds an additional system variable. These variables can be used to distribute additional information such as the access policy. If the variable of the form <tt><i>name</i> = <i>value</i></tt> is followed by the <tt>default</tt> keyword, the variable will be listed as part of the default system variables (<tt>ntpq rv</tt> command). These additional variables serve informational purposes only. They are not related to the protocol other that they can be listed. The known protocol variables will always override any variables defined via the <tt>setvar</tt> mechanism. There are three special variables that contain the names of all variable of the same group. The <tt>sys_var_list</tt> holds the names of all system variables. The <tt>peer_var_list</tt> holds the names of all peer variables and the <tt>clock_var_list</tt> holds the names of the reference clock variables.
+ <dt><tt>tinker [ allan <i>allan</i> | dispersion <i>dispersion</i> | freq <i>freq</i> | huffpuff <i>huffpuff</i> | panic <i>panic</i> | step <i>step</i> | stepout <i>stepout</i> ]</tt>
+ <dd>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. The default values of these variables have been carefully optimized for a wide range of network speeds and reliability expectations. In general, they interact in intricate ways that are hard to predict and some combinations can result in some very nasty behavior. Very rarely is it necessary to change the default values; but, some folks can't resist twisting the knobs anyway and this command is for them. Emphasis added: twisters are on their own and can expect no help from the support group.
+ <p>The variables operate as follows:</p>
+ <dl>
+ <dt><tt>allan <i>allan</i></tt>
+ <dd>The argument becomes the new value for the Allan intercept, which is a parameter of the PLL/FLL clock discipline algorithm. The value is in seconds with default 1500 s, which is appropriate for most computer clocks.<dt><tt>dispersion <i>dispersion</i></tt>
+ <dd>The argument becomes the new value for the dispersion increase rate, normally .000015 s/s.
+ <dt><tt>freq <i>freq</i></tt>
+ <dd>The argument becomes the initial value of the frequency offset in parts-per-million. This overrides the value in the frequency file, if present, and avoids the initial training state if it is not.
+ <dt><tt>huffpuff <i>huffpuff</i></tt>
+ <dd>The argument becomes the new value for the experimental huff-n'-puff filter span, which determines the most recent interval the algorithm will search for a minimum delay. The lower limit is 900 s (15 m), but a more reasonable value is 7200 (2 hours). There is no default, since the filter is not enabled unless this command is given.
+ <dt><tt>panic <i>panic</i></tt>
+ <dd>The argument is the panic threshold, by default 1000 s. If set to zero, the panic sanity check is disabled and a clock offset of any value will be accepted.
+ <dt><tt>step <i>step</i></tt>
+ <dd>The argument is the step threshold, by default 0.128 s. It can be set to any positive number in seconds. If set to zero, step adjustments will never occur. Note:&nbsp;The kernel time discipline is disabled if the step threshold is set to zero or greater than the default.
+ <dt><tt>stepout <i>stepout</i></tt>
+ <dd>The argument is the stepout timeout, by default 900 s. It can be set to any positive number in seconds. If set to zero, the stepout pulses will not be suppressed.
+ </dl>
+ <dt><tt>trap <i>host_address</i> [port <i>port_number</i>] [interface <i>interface_address</i>]</tt>
+ <dd>This command configures a trap receiver at the given host address and port number for sending messages with the specified local interface address. If the port number is unspecified, a value of 18447 is used. If the interface address is not specified, the message is sent with a source address of the local interface the message is sent through. Note that on a multihomed host the interface used may vary from time to time with routing changes.
+ <p>The trap receiver will generally log event messages and other information from the server in a log file. While such monitor programs may also request their own trap dynamically, configuring a trap receiver will ensure that no messages are lost when the server is started.</p>
+ <dt><tt>ttl <i>hop</i> ...</tt>
+ <dd>This command specifies a list of TTL values in increasing order. up to 8 values can be specified. In manycast mode these values are used in turn in an expanding-ring search. The default is eight multiples of 32 starting at 31.
+ </dl>
+ <h4>Files</h4>
+ <tt>ntp.drift</tt> frequency compensation (PPM)
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
-</html> \ No newline at end of file
+</html>
diff --git a/contrib/ntp/html/monopt.html b/contrib/ntp/html/monopt.html
index f790bc8..a4c073a 100644
--- a/contrib/ntp/html/monopt.html
+++ b/contrib/ntp/html/monopt.html
@@ -2,122 +2,131 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Monitoring Options</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Monitoring Options</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Monitoring Options</h3>
- <img src="pic/pogo8.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
- <p>The pig watches the logs.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">17:22</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="230">Friday, February 07, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
- <hr>
- <tt>ntpd</tt> includes a comprehensive monitoring facility suitable for continuous, long term recording of server and client timekeeping performance. See the <tt>statistics</tt> command below for a listing and example of each type of statistics currently supported. Statistic files are managed using file generation sets and scripts in the <tt>./scripts</tt> directory of this distribution. Using these facilities and Unix <tt>cron</tt> jobs, the datacan be automatically summarized and archived for retrospective analysis.
- <h4>Monitoring Commands</h4>
- <dl>
- <dt><tt>statistics <i>name</i> [...]</tt>
- <dd>Enables writing of statistics records. Currently, four kinds of <i><tt>name</tt></i>statistics are supported.
- <dl>
- <dt><tt>clockstats</tt>
- <dd>Enables recording of clock driver statistics information. Each update received from a clock driver appends a line of the following form to the file generation set named <tt>clockstats</tt>:
- <dd><tt>49213 525.624 127.127.4.1 93 226 00:08:29.606 D</tt>
- <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next field shows the clock address in dotted-quad notation, The final field shows the last timecode received from the clock in decoded ASCII format, where meaningful. In some clock drivers a good deal of additional information can be gathered and displayed as well. See information specific to each clock for further details.
- <dt><tt>cryptostats</tt>
- <dd>This option requires the OpenSSL cryptographic software library. It enables recording of cryptographic public key protocol information. Each message received by the protocol module appends a line of the following form to the file generation set named <tt>cryptostats</tt>:
- <dd><tt>49213 525.624 127.127.4.1 <i>message</i></tt>
- <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next field shows the peer address in dotted-quad notation, The final <tt><i>message</i></tt> field includes the message type and certain ancillary information. See the <a href="authopt.html">Authentication Options</a> page for further information.
- <dt><tt>loopstats</tt>
- <dd>Enables recording of loop filter statistics information. Each update of the local clock outputs a line of the following form to the file generation set named <tt>loopstats</tt>:
- <dd><tt>50935 75440.031 0.000006019 13.778190 0.000351733 0.0133806</tt>
- <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next five fields show time offset (seconds), frequency offset (parts per million - PPM), RMS jitter (seconds), Allan deviation (PPM) and clock discipline time constant.
- <dt><tt>peerstats</tt>
- <dd>Enables recording of peer statistics information. This includes statistics records of all peers of a NTP server and of special signals, where present and configured. Each valid update appends a line of the following form to the current element of a file generation set named <tt>peerstats</tt>:
- <dt><tt>48773 10847.650 127.127.4.1 9714 -0.001605376 0.000000000 0.001424877 0.000958674</tt>
- <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next two fields show the peer address in dotted-quad notation and status, respectively. The status field is encoded in hex in the format described in Appendix A of the NTP specification RFC 1305. The final four fields show the offset, delay, dispersion and RMS jitter, all in seconds.
- <dt><tt>rawstats</tt>
- <dd>Enables recording of raw-timestamp statistics information. This includes statistics records of all peers of a NTP server and of special signals, where present and configured. Each NTP message received from a peer or clock driver appends a line of the following form to the file generation set named <tt>rawstats</tt>:
- <dt><tt>50928 2132.543 128.4.1.1 128.4.1.20 3102453281.584327000 3102453281.58622800031 02453332.540806000 3102453332.541458000</tt>
- <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next two fields show the remote peer or clock address followed by the local address in dotted-quad notation, The final four fields show the originate, receive, transmit and final NTP timestamps in order. The timestamp values are as received and before processing by the various data smoothing and mitigation algorithms.
+ <body>
+ <h3>Monitoring Options</h3>
+ <img src="pic/pogo8.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
+ <p>The pig watches the logs.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">00:40</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="290">Sunday, December 24, 2006</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
+ <hr>
+ <tt>ntpd</tt> includes a comprehensive monitoring facility suitable for continuous, long term recording of server and client timekeeping performance. See the <tt>statistics</tt> command below for a listing and example of each type of statistics currently supported. Statistic files are managed using file generation sets and scripts in the <tt>./scripts</tt> directory of this distribution. Using these facilities and Unix <tt>cron</tt> jobs, the datacan be automatically summarized and archived for retrospective analysis.
+ <h4>Monitoring Commands</h4>
+ <dl>
+ <dt><tt>statistics <i>name</i> [...]</tt>
+ <dd>Enables writing of statistics records. Currently, six kinds of <i><tt>name</tt></i>statistics are supported.
+ <dl>
+ <dt><tt>clockstats</tt>
+ <dd>Enables recording of clock driver statistics information. Each update received from a clock driver appends a line of the following form to the file generation set named <tt>clockstats</tt>:
+ <dd><tt>49213 525.624 127.127.4.1 93 226 00:08:29.606 D</tt>
+ <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next field shows the clock address in dotted-quad notation, The final field shows the last timecode received from the clock in decoded ASCII format, where meaningful. In some clock drivers a good deal of additional information can be gathered and displayed as well. See information specific to each clock for further details.
+ <dt><tt>cryptostats</tt>
+ <dd>This option requires the OpenSSL cryptographic software library. It enables recording of cryptographic public key protocol information. Each message received by the protocol module appends a line of the following form to the file generation set named <tt>cryptostats</tt>:
+ <dd><tt>49213 525.624 127.127.4.1 <i>message</i></tt>
+ <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next field shows the peer address in dotted-quad notation, The final <tt><i>message</i></tt> field includes the message type and certain ancillary information. See the <a href="authopt.html">Authentication Options</a> page for further information.
+ <dt><tt>loopstats</tt>
+ <dd>Enables recording of loop filter statistics information. Each update of the local clock outputs a line of the following form to the file generation set named <tt>loopstats</tt>:
+ <dd><tt>50935 75440.031 0.000006019 13.778190 0.000351733 0.0133806 6</tt>
+ <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next five fields show time offset (seconds), frequency offset (parts per million - PPM), RMS jitter (seconds), Allan deviation (PPM) and clock discipline time constant.
+ <dt><tt>peerstats</tt>
+ <dd>Enables recording of peer statistics information. This includes statistics records of all peers of a NTP server and of special signals, where present and configured. Each valid update appends a line of the following form to the current element of a file generation set named <tt>peerstats</tt>:
+ <dt><tt>48773 10847.650 127.127.4.1 9714 -0.001605376 0.000000000 0.001424877 0.000958674</tt>
+ <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next two fields show the peer address in dotted-quad notation and status, respectively. The status field is encoded in hex in the format described in Appendix B of the NTP specification RFC 1305. The final four fields show the offset, delay, dispersion and RMS jitter, all in seconds.
+ <dt><tt>rawstats</tt>
+ <dd>Enables recording of raw-timestamp statistics information. This includes statistics records of all peers of a NTP server and of special signals, where present and configured. Each NTP message received from a peer or clock driver appends a line of the following form to the file generation set named <tt>rawstats</tt>:
+ <dt><tt>50928 2132.543 128.4.1.1 128.4.1.20 3102453281.584327000 3102453281.58622800031 02453332.540806000 3102453332.541458000</tt>
+ <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next two fields show the remote peer or clock address followed by the local address in dotted-quad notation, The final four fields show the originate, receive, transmit and final NTP timestamps in order. The timestamp values are as received and before processing by the various data smoothing and mitigation algorithms.
+ <dt><tt>sysstats</tt>
+ <dd>Enables recording of <tt>ntpd</tt> statistics counters on a periodic basis. Each hour a line of the following form is appended to the file generation set named <tt>sysstats</tt>:
+ <dd><tt>50928 2132.543 36000 81965 0 9546 56 71793 512 540 10 147</tt>
+ <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The remaining ten fields show the statistics counter values accumulated since the last generated line.
+ <dl>
+ <dt>Time since restart <tt>36000</tt>
+ <dd>Time in hours since the system was last rebooted.
+ <dt>Packets received <tt>81965</tt>
+ <dd>Total number of packets received.
+ <dt>Packets processed <tt>0</tt>
+ <dd>Number of packets received in response to previous packets sent
+ <dt>Current version <tt>9546</tt>
+ <dd>Number of packets matching the current NTP version.
+ <dt>Previous version <tt>56</tt>
+ <dd>Number of packets matching the previous NTP version.
+ <dt>Bad version <tt>71793</tt>
+ <dd>Number of packets matching neither NTP version.
+ <dt>Access denied <tt>512</tt>
+ <dd>Number of packets denied access for any reason.
+ <dt>Bad length or format <tt>540</tt>
+ <dd>Number of packets with invalid length, format or port number.
+ <dt>Bad authentication <tt>10</tt>
+ <dd>Number of packets not verified as authentic.
+ <dt>Rate exceeded <tt>147</tt>
+ <dd>Number of packets discarded due to rate limitation.
+ </dl>
+ <dt><tt>timingstats</tt>
+ <dd><b>ONLY</b> available when the deamon is compiled with process time debugging support (--enable-debug-timing - costs performance). Enables recording of <tt>ntpd</tt> processing time information for various selected code paths:
+ <dd><tt>53876 36.920 10.0.3.5 1 0.000014592 input processing delay</tt>
+ <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The next field is a potential <tt>peer address</tt>, <tt>-</tt> or <tt>-REFCLOCK-</tt> depending on the associated io source. Then an event count for the number of processed events in the code path follows. The fifth field is the total time spend for the events. The rest of the line denotes the code path description (see source for more information).
+ <dt><tt>statsdir <i>directory_path</i></tt>
+ <dd>Indicates the full path of a directory where statistics files should be created (see below). This keyword allows the (otherwise constant) <tt>filegen</tt> filename prefix to be modified for file generation sets, which is useful for handling statistics logs.
+ <dt><tt>filegen <i>name</i> [file <i>filename</i>] [type <i>typename</i>] [link | nolink] [enable | disable]</tt>
+ <dd>Configures setting of generation file set <i>name</i>. Generation file sets provide a means for handling files that are continuously growing during the lifetime of a server. Server statistics are a typical example for such files. Generation file sets provide access to a set of files used to store the actual data. At any time at most one element of the set is being written to. The type given specifies when and how data will be directed to a new element of the set. This way, information stored in elements of a file set that are currently unused are available for administrational operations without the risk of disturbing the operation of <tt>ntpd</tt>. (Most important: they can be removed to free space for new data produced.)
+ <dd>Note that this command can be sent from the <tt>ntpdc</tt> program running at a remote location.
+ <dl>
+ <dt><i><tt>name</tt></i>
+ <dd>This is the type of the statistics records, as shown in the <tt>statistics</tt> command.
+ </dl>
+ <dd><tt>file <i>filename</i></tt>
+ <dl>
+ <dd>This is the file name for the statistics records. Filenames of set members are built from three concatenated elements <i><tt>prefix</tt></i>, <i><tt>filename</tt></i> and <i><tt>suffix</tt></i>:
+ <dl>
+ <dt><i><tt>prefix</tt></i>
+ <dd>This is a constant filename path. It is not subject to modifications via the <tt>filegen</tt> option. It is defined by the server, usually specified as a compile-time constant. It may, however, be configurable for individual file generation sets via other commands. For example, the prefix used with <tt>loopstats</tt> and <tt>peerstats</tt> generation can be configured using the <tt>statsdir</tt> option explained above.
+ <dt><i><tt>filename</tt></i>
+ <dd>This string is directly concatenated to the prefix mentioned above (no intervening <tt>/</tt> (slash)). This can be modified using the <tt>file</tt> argument to the <tt>filegen</tt> statement. No <tt>..</tt> elements are allowed in this component to prevent filenames referring to parts outside the filesystem hierarchy denoted by <tt>prefix</tt>.
+ <dt><i><tt>suffix</tt></i>
+ <dd>This part is reflects individual elements of a file set. It is generated according to the type of a file set.
+ </dl>
+ </dl>
+ <dd><tt>type <i>typename</i></tt>
+ <dl>
+ <dd>A file generation set is characterized by its type. The following types are supported:
+ <dl>
+ <dt><tt>none</tt>
+ <dd>The file set is actually a single plain file.
+ <dt><tt>pid</tt>
+ <dd>One element of file set is used per incarnation of a <tt>ntpd</tt> server. This type does not perform any changes to file set members during runtime, however it provides an easy way of separating files belonging to different <tt>ntpd</tt> server incarnations. The set member filename is built by appending a <tt>.</tt> (dot) to concatenated <i>prefix</i> and <i>filename</i> strings, and appending the decimal representation of the process ID of the <tt>ntpd</tt> server process.
+ <dt><tt>day</tt>
+ <dd>One file generation set element is created per day. A day is defined as the period between 00:00 and 24:00 UTC. The file set member suffix consists of a <tt>.</tt> (dot) and a day specification in the form <tt>YYYYMMdd. YYYY</tt> is a 4-digit year number (e.g., 1992). <tt>MM</tt> is a two digit month number. <tt>dd</tt> is a two digit day number. Thus, all information written at 10 December 1992 would end up in a file named <tt><i>prefix filename</i>.19921210</tt>.
+ <dt><tt>week</tt>
+ <dd>Any file set member contains data related to a certain week of a year. The term week is defined by computing day-of-year modulo 7. Elements of such a file generation set are distinguished by appending the following suffix to the file set filename base: A dot, a 4-digit year number, the letter <tt>W</tt>, and a 2-digit week number. For example, information from January, 10th 1992 would end up in a file with suffix <tt>.1992W1</tt>.
+ <dt><tt>month</tt>
+ <dd>One generation file set element is generated per month. The file name suffix consists of a dot, a 4-digit year number, and a 2-digit month.
+ <dt><tt>year</tt>
+ <dd>One generation file element is generated per year. The filename suffix consists of a dot and a 4 digit year number.
+ <dt><tt>age</tt>
+ <dd>This type of file generation sets changes to a new element of the file set every 24 hours of server operation. The filename suffix consists of a dot, the letter <tt>a</tt>, and an 8-digit number. This number is taken to be the number of seconds the server is running at the start of the corresponding 24-hour period. Information is only written to a file generation by specifying <tt>enable</tt>; output is prevented by specifying <tt>disable</tt>.
+ </dl>
+ </dl>
+ <dd><tt>link | nolink</tt>
+ <dl>
+ <dd>It is convenient to be able to access the current element of a file generation set by a fixed name. This feature is enabled by specifying <tt>link</tt> and disabled using <tt>nolink</tt>. If <tt>link</tt> is specified, a hard link from the current file set element to a file without suffix is created. When there is already a file with this name and the number of links of this file is one, it is renamed appending a dot, the letter <tt>C</tt>, and the pid of the <tt>ntpd</tt> server process. When the number of links is greater than one, the file is unlinked. This allows the current file to be accessed by a constant name.
+ </dl>
+ <dd><tt>enable | disable</tt>
+ <dl>
+ <dd>Enables or disables the recording function.
+ </dl>
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </dl>
+ </body>
- <dt><tt>sysstats</tt>
- <dd>Enables recording of <tt>ntpd</tt> statistics counters on a periodic basis. Each hour a line of the following form is appended to the file generation set named <tt>sysstats</tt>:
-
- <dd><tt>50928 2132.543 36000 81965 0 9546 56 71793 512 540 10 147</tt>
- <dd>The first two fields show the date (Modified Julian Day) and time (seconds and fraction past UTC midnight). The remaining ten fields show the statistics counter values accumulated since the last generated line. <dl>
- <dt>Time since restart <tt>36000</tt>
- <dd>Time in hours since the system was last rebooted. <dt>Packets received <tt>81965</tt>
- <dd>Total number of packets received.
- <dt>Packets processed <tt>0</tt>
- <dd>Number of packets received in response to previous packets sent
- <dt>Current version <tt>9546</tt>
- <dd>Number of packets matching the current NTP version.
- <dt>Previous version <tt>56</tt>
- <dd>Number of packets matching the previous NTP version. <dt>Bad version <tt>71793</tt>
- <dd>Number of packets matching neither NTP version. <dt>Access denied <tt>512</tt>
- <dd>Number of packets denied access for any reason.
- <dt>Bad length or format <tt>540</tt>
- <dd>Number of packets with invalid length, format or port number.
- <dt>Bad authentication <tt>10</tt>
- <dd>Number of packets not verified as authentic. <dt>Rate exceeded <tt>147</tt>
- <dd>Number of packets discarded due to rate limitation.
- </dl>
- <dt><tt>statsdir <i>directory_path</i></tt>
- <dd>Indicates the full path of a directory where statistics files should be created (see below). This keyword allows the (otherwise constant) <tt>filegen</tt> filename prefix to be modified for file generation sets, which is useful for handling statistics logs.
- <dt><tt>filegen <i>name</i> [file <i>filename</i>] [type <i>typename</i>] [link | nolink] [enable | disable]</tt>
- <dd>Configures setting of generation file set <i>name</i>. Generation file sets provide a means for handling files that are continuously growing during the lifetime of a server. Server statistics are a typical example for such files. Generation file sets provide access to a set of files used to store the actual data. At any time at most one element of the set is being written to. The type given specifies when and how data will be directed to a new element of the set. This way, information stored in elements of a file set that are currently unused are available for administrational operations without the risk of disturbing the operation of <tt>ntpd</tt>. (Most important: they can be removed to free space for new data produced.)
- <dd>Note that this command can be sent from the <tt>ntpdc</tt> program running at a remote location.
- <dl>
- <dt><i><tt>name</tt></i>
- <dd>This is the type of the statistics records, as shown in the <tt>statistics</tt> command.
- </dl>
- <dd><tt>file <i>filename</i></tt>
- <dl>
- <dd>This is the file name for the statistics records. Filenames of set members are built from three concatenated elements <i><tt>prefix</tt></i>, <i><tt>filename</tt></i> and <i><tt>suffix</tt></i>:
- <dl>
- <dt><i><tt>prefix</tt></i>
- <dd>This is a constant filename path. It is not subject to modifications via the <tt>filegen</tt> option. It is defined by the server, usually specified as a compile-time constant. It may, however, be configurable for individual file generation sets via other commands. For example, the prefix used with <tt>loopstats</tt> and <tt>peerstats</tt> generation can be configured using the <tt>statsdir</tt> option explained above.
- <dt><i><tt>filename</tt></i>
- <dd>This string is directly concatenated to the prefix mentioned above (no intervening <tt>/</tt> (slash)). This can be modified using the <tt>file</tt> argument to the <tt>filegen</tt> statement. No <tt>..</tt> elements are allowed in this component to prevent filenames referring to parts outside the filesystem hierarchy denoted by <tt>prefix</tt>.
- <dt><i><tt>suffix</tt></i>
- <dd>This part is reflects individual elements of a file set. It is generated according to the type of a file set.
- </dl>
- </dl>
- <dd><tt>type <i>typename</i></tt>
- <dl>
- <dd>A file generation set is characterized by its type. The following types are supported:
- <dl>
- <dt><tt>none</tt>
- <dd>The file set is actually a single plain file.
- <dt><tt>pid</tt>
- <dd>One element of file set is used per incarnation of a <tt>ntpd</tt> server. This type does not perform any changes to file set members during runtime, however it provides an easy way of separating files belonging to different <tt>ntpd</tt> server incarnations. The set member filename is built by appending a <tt>.</tt> (dot) to concatenated <i>prefix</i> and <i>filename</i> strings, and appending the decimal representation of the process ID of the <tt>ntpd</tt> server process.
- <dt><tt>day</tt>
- <dd>One file generation set element is created per day. A day is defined as the period between 00:00 and 24:00 UTC. The file set member suffix consists of a <tt>.</tt> (dot) and a day specification in the form <tt>YYYYMMdd. YYYY</tt> is a 4-digit year number (e.g., 1992). <tt>MM</tt> is a two digit month number. <tt>dd</tt> is a two digit day number. Thus, all information written at 10 December 1992 would end up in a file named <tt><i>prefix filename</i>.19921210</tt>.
- <dt><tt>week</tt>
- <dd>Any file set member contains data related to a certain week of a year. The term week is defined by computing day-of-year modulo 7. Elements of such a file generation set are distinguished by appending the following suffix to the file set filename base: A dot, a 4-digit year number, the letter <tt>W</tt>, and a 2-digit week number. For example, information from January, 10th 1992 would end up in a file with suffix <tt>.1992W1</tt>.
- <dt><tt>month</tt>
- <dd>One generation file set element is generated per month. The file name suffix consists of a dot, a 4-digit year number, and a 2-digit month.
- <dt><tt>year</tt>
- <dd>One generation file element is generated per year. The filename suffix consists of a dot and a 4 digit year number.
- <dt><tt>age</tt>
- <dd>This type of file generation sets changes to a new element of the file set every 24 hours of server operation. The filename suffix consists of a dot, the letter <tt>a</tt>, and an 8-digit number. This number is taken to be the number of seconds the server is running at the start of the corresponding 24-hour period. Information is only written to a file generation by specifying <tt>enable</tt>; output is prevented by specifying <tt>disable</tt>.
- </dl>
- </dl>
- <dd><tt>link | nolink</tt>
- <dl>
- <dd>It is convenient to be able to access the current element of a file generation set by a fixed name. This feature is enabled by specifying <tt>link</tt> and disabled using <tt>nolink</tt>. If <tt>link</tt> is specified, a hard link from the current file set element to a file without suffix is created. When there is already a file with this name and the number of links of this file is one, it is renamed appending a dot, the letter <tt>C</tt>, and the pid of the <tt>ntpd</tt> server process. When the number of links is greater than one, the file is unlinked. This allows the current file to be accessed by a constant name.
- </dl>
- <dd><tt>enable | disable</tt>
- <dl>
- <dd>Enables or disables the recording function.
- </dl>
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
-
-</html> \ No newline at end of file
+</html>
diff --git a/contrib/ntp/html/msyslog.html b/contrib/ntp/html/msyslog.html
index 8a9a78f..9e03cf8 100644
--- a/contrib/ntp/html/msyslog.html
+++ b/contrib/ntp/html/msyslog.html
@@ -1,125 +1,122 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
<html>
-
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>ntpd System Log Messages</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
-
- <body>
- <h3><tt>ntpd</tt> System Log Messages</h3>
- <img src="pic/alice47.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>The mushroom knows all the error codes, which is more than most of us do.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">02:23</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="254">Saturday, February 01, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <p>
- <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
- </p>
- <hr>
- <p>You have come here because you found a cryptic message in the system log. This page by no means lists all messages that might be found, since new ones come and old ones go. Generally, however, the most common ones will be found here. They are listed by program module and log severity code in bold: <tt><b>LOG_ERR</b></tt>, <b><tt>LOG_NOTICE</tt></b> and <tt><b>LOG_INFO</b></tt>.</p>
- <p>Most of the time <b><tt>LOG_ERR</tt></b> messages are fatal, but often <tt>ntpd</tt> limps onward in the hopes of discovering more errors. The <tt><b>LOG_NOTICE</b></tt> messages usually mean the time has changed or some other condition that probably should be noticed. The <tt><b>LOG_INFO</b></tt>&nbsp;messages usually say something about the system operations, but do not affect the time.</p>
- <p>In the following a '?' character stands for text in the message. The meaning should be clear from context.</p>
- <h4>Protocol Module</h4>
- <p><tt><b>LOG_ERR</b></tt></p>
- <dl>
- <dt>buffer overflow ?
- <dd>Fatal error. An input packet is too long for processing.
- </dl>
- <p><tt><b>LOG_NOTICE</b></tt></p>
- <dl>
- <dt><tt>no reply; clock not set </tt>
- <dd>In <tt>ntpdate</tt> mode no servers have been found. The server(s) and/or network may be down. Standard debugging procedures apply.
- </dl>
- <p><tt><b>LOG_INFO</b></tt></p>
- <dl>
- <dt><tt>proto_config: illegal item ?, value ? </tt>
- <dd>Program error. Please report to bugs@ntp.org.
- <dt><tt>pps sync enabled </tt>
- <dd>The PPS signal has been detected and enabled.
- <dt><tt>transmit: encryption key ? not found </tt>
- <dd>The key cache is inconsistent. Please report to bugs@ntp.org.
- <dt><tt>precision = ? usec </tt>
- <dd>This reports the precision measured for this machine.
- <dt><tt>using 10ms tick adjustments </tt>
- <dd>Gotcha for some machines with dirty rotten clock hardware.
- <dt><tt>no servers reachable </tt>
- <dd>The system clock is running on internal batteries. The server(s) and/or network may be down.
- </dl>
- <h4>Clock Discipline Module</h4>
- <p><tt><b>LOG_ERR</b></tt></p>
- <dl>
- <dt><tt>time correction of ? seconds exceeds sanity limit (?); set clock manually to the correct UTC time</tt>.
- <dd>Fatal error. Better do what it says, then restart the daemon. Be advised NTP and Unix know nothing about local time zones. The clock must be set to Coordinated Universal Time (UTC). Believe it; by international agreement abbreviations are in French and descriptions are in English.
- <dt><tt>sigaction() fails to save SIGSYS trap: ? </tt>
- <dt><tt>sigaction() fails to restore SIGSYS trap: ? </tt>
- <dd>Program error. Please report to bugs@ntp.org.
- </dl>
- <p><tt><b>LOG_NOTICE</b></tt></p>
- <dl>
- <dt><tt>frequency error ? exceeds tolerance 500 PPM</tt>
- <dd>The hardware clock frequency error exceeds the rate the kernel can correct. This could be a hardware or a kernel problem. <dt><tt>time slew ? s </tt>
- <dd>The time error exceeds the step threshold and is being slewed to the correct time. You may have to wait a very long time.
- <dt><tt>time reset ? s </tt>
- <dd>The time error exceeds the step threshold and has been reset to the correct time. Computer scientists don't like this, but they can set the <tt>ntpd -x</tt> option and wait forever.
- <dt><tt>kernel time sync disabled ? </tt>
- <dd>The kernel reports an error. See the codes in the <tt>timex.h</tt> file.
- <dt><tt>pps sync disabled </tt>
- <dd>The PPS signal has died, probably due to a dead radio, broken wire or loose connector.
- </dl>
- <p><tt><b>LOG_INFO</b></tt></p>
- <tt>kernel time sync status ? </tt>
- <dl>
- <dd>For information only. See the codes in the <tt>timex.h</tt> file.
- </dl>
- <h4>Cryptographic Module</h4>
- <p><tt><b>LOG_ERR</b></tt></p>
- <dl>
- <dt><tt>cert_parse ? </tt>
- <dt><tt>cert_sign ? </tt>
- <dt><tt>crypto_cert ? </tt>
- <dt><tt>crypto_encrypt ? </tt>
- <dt><tt>crypto_gq ? </tt>
- <dt><tt>crypto_iff ? </tt>
- <dt><tt>crypto_key ? </tt>
- <dt><tt>crypto_mv ? </tt>
- <dt><tt>crypto_setup ? </tt>
- <dt><tt>make_keys ? </tt>
- <dd>Usually fatal errors. These messages display error codes returned from the OpenSSL library. See the OpenSSL documentation for explanation.
- <dt><tt>crypto_setup: certificate ? is trusted, but not self signed. </tt>
- <dt><tt>crypto_setup: certificate ? not for this host </tt>
- <dt><tt>crypto_setup: certificate file ? not found or corrupt </tt>
- <dt><tt>crypto_setup: host key file ? not found or corrupt </tt>
- <dt><tt>crypto_setup: host key is not RSA key type </tt>
- <dt><tt>crypto_setup: random seed file ? not found</tt>
- <dt><tt>crypto_setup: random seed file not specified </tt>
- <dd>Fatal errors. These messages show problems during the initialization procedure.
- </dl>
- <p><tt><b>LOG_INFO</b></tt></p>
- <dl>
- <dt><tt>cert_parse: expired ? </tt>
- <dt><tt>cert_parse: invalid issuer ? </tt>
- <dt><tt>cert_parse: invalid signature ? </tt>
- <dt><tt>cert_parse: invalid subject ? </tt>
- <dd>There is a problem with a certificate. Operation cannot proceed untill the problem is fixed. If the certificate is local, it can be regenerated using the <tt>ntp-keygen</tt> program. If it is held somewhere else, it must be fixed by the holder.
- <dt><tt>crypto_?: defective key </tt>
- <dt><tt>crypto_?: invalid filestamp </tt>
- <dt><tt>crypto_?: missing challenge </tt>
- <dt><tt>crypto_?: scheme unavailable </tt>
- <dd>There is a problem with the identity scheme. Operation cannot proceed untill the problem is fixed. Usually errors are due to misconfiguration or an orphan association. If the latter, <tt>ntpd</tt> will usually time out and recover by itself.
- <dt><tt>crypto_cert: wrong PEM type ? </tt>
- <dd>The certificate does not have MIME type <tt>CERTIFICATE</tt>. You are probably using the wrong type from OpenSSL or an external certificate authority.
- <dt><tt>crypto_ident: no compatible identity scheme found </tt>
- <dd>Configuration error. The server and client identity schemes are incompatible.
- <dt><tt>crypto_tai: kernel TAI update failed </tt>
- <dd>The kernel does not support this function. You may need a new kernel or patch.
- <dt><tt>crypto_tai: leapseconds file ? error ? </tt>
- <dd>The leapseconds file is corrupt. Obtain the latest file from <tt>time.nist.gov</tt>.
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>ntpd System Log Messages</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
+ <body>
+ <h3><tt>ntpd</tt> System Log Messages</h3>
+ <img src="pic/alice47.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>The mushroom knows all the error codes, which is more than most of us do.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">19:24</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="284">Saturday, October 01, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <p><script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
+ </p>
+ <hr>
+ <p>You have come here because you found a cryptic message in the system log. This page by no means lists all messages that might be found, since new ones come and old ones go. Generally, however, the most common ones will be found here. They are listed by program module and log severity code in bold: <tt><b>LOG_ERR</b></tt>, <b><tt>LOG_NOTICE</tt></b> and <tt><b>LOG_INFO</b></tt>.</p>
+ <p>Most of the time <b><tt>LOG_ERR</tt></b> messages are fatal, but often <tt>ntpd</tt> limps onward in the hopes of discovering more errors. The <tt><b>LOG_NOTICE</b></tt> messages usually mean the time has changed or some other condition that probably should be noticed. The <tt><b>LOG_INFO</b></tt>&nbsp;messages usually say something about the system operations, but do not affect the time.</p>
+ <p>In the following a '?' character stands for text in the message. The meaning should be clear from context.</p>
+ <h4>Protocol Module</h4>
+ <p><tt><b>LOG_ERR</b></tt></p>
+ <dl>
+ <dt><tt>buffer overflow ?
+ </tt>
+ <dd>Fatal error. An input packet is too long for processing.
+ </dl>
+ <p><tt><b>LOG_NOTICE</b></tt></p>
+ <dl>
+ <dt><tt>no reply; clock not set</tt>
+ <dd>In <tt>ntpdate</tt> mode no servers have been found. The server(s) and/or network may be down. Standard debugging procedures apply.
+ <p><tt><b>LOG_INFO</b></tt></p>
+ <dt><tt>proto_config: illegal item ?, value ?</tt>
+ <dd>Program error. Please report to bugs@ntp.org.
+ <dt><tt>pps sync enabled</tt>
+ <dd>The PPS signal has been detected and enabled.
+ <dt><tt>transmit: encryption key ? not found</tt>
+ <dd>The encryption key is not defined or not trusted.
+ <dt><tt>precision = ? usec </tt>
+ <dd>This reports the precision measured for this machine.
+ <dt><tt>using 10ms tick adjustments</tt>
+ <dd>Gotcha for some machines with dirty rotten clock hardware.
+ <dt><tt>no servers reachable</tt>
+ <dd>The system clock is running on internal batteries. The server(s) and/or network may be down.
+ </dl>
+ <h4>Clock Discipline Module</h4>
+ <p><tt><b>LOG_ERR</b></tt></p>
+ <dl>
+ <dt><tt>time correction of ? seconds exceeds sanity limit (?); set clock manually to the correct UTC time</tt>.
+ <dd>Fatal error. Better do what it says, then restart the daemon. Be advised NTP and Unix know nothing about local time zones. The clock must be set to Coordinated Universal Time (UTC). Believe it; by international agreement abbreviations are in French and descriptions are in English.
+ <dt><tt>sigaction() fails to save SIGSYS trap: ?<br>
+ </tt><tt>sigaction() fails to restore SIGSYS trap: ?</tt>
+ <dt>Program error. Please report to bugs@ntp.org.
+ </dl>
+ <p><tt><b>LOG_NOTICE</b></tt></p>
+ <dl>
+ <dt><tt>frequency error ? exceeds tolerance 500 PPM</tt>
+ <dd>The hardware clock frequency error exceeds the rate the kernel can correct. This could be a hardware or a kernel problem.
+ <dt><tt>time slew ? s</tt>
+ <dd>The time error exceeds the step threshold and is being slewed to the correct time. You may have to wait a very long time.
+ <dt><tt>time reset ? s</tt>
+ <dd>The time error exceeds the step threshold and has been reset to the correct time. Computer scientists don't like this, but they can set the <tt>ntpd -x</tt> option and wait forever.
+ <dt><tt>kernel time sync disabled ?</tt>
+ <dd>The kernel reports an error. See the codes in the <tt>timex.h</tt> file.
+ <dt><tt>pps sync disabled</tt>
+ <dd>The PPS signal has died, probably due to a dead radio, broken wire or loose connector.
+ </dl>
+ <p><tt><b>LOG_INFO</b></tt></p>
+ <dl>
+ <dt><tt>kernel time sync status ? </tt>
+ <dd>For information only. See the codes in the <tt>timex.h</tt> file.
+ </dl>
+ <h4>Cryptographic Module</h4>
+ <p><tt><b>LOG_ERR</b></tt></p>
+ <dl>
+ <dt><tt>cert_parse ?<br>
+ </tt><tt>cert_sign ?<br>
+ </tt><tt>crypto_cert ?<br>
+ </tt><tt>crypto_encrypt ?<br>
+ </tt><tt>crypto_gq ?<br>
+ </tt><tt>crypto_iff ?<br>
+ </tt><tt>crypto_key ?<br>
+ </tt><tt>crypto_mv ?<br>
+ </tt><tt>crypto_setup ?<br>
+ </tt><tt>make_keys ?</tt>
+ <dd>Usually fatal errors. These messages display error codes returned from the OpenSSL library. See the OpenSSL documentation for explanation.
+ <dt><tt>crypto_setup: certificate ? is trusted, but not self signed.<br>
+ </tt><tt>crypto_setup: certificate ? not for this host<br>
+ </tt><tt>crypto_setup: certificate file ? not found or corrupt<br>
+ </tt><tt>crypto_setup: host key file ? not found or corrupt<br>
+ </tt><tt>crypto_setup: host key is not RSA key type<br>
+ </tt><tt>crypto_setup: random seed file ? not found<br>
+ </tt><tt>rypto_setup: random seed file not specified</tt>
+ <dd>Fatal errors. These messages show problems during the initialization procedure.
+ </dl>
+ <p><tt><b>LOG_INFO</b></tt></p>
+ <dl>
+ <dt><tt>cert_parse: expired ?<br>
+ </tt><tt>cert_parse: invalid issuer ?<br>
+ </tt><tt>cert_parse: invalid signature ?<br>
+ </tt><tt>cert_parse: invalid subject ?</tt>
+ <dd>There is a problem with a certificate. Operation cannot proceed untill the problem is fixed. If the certificate is local, it can be regenerated using the <tt>ntp-keygen</tt> program. If it is held somewhere else, it must be fixed by the holder.
+ <dt><tt>crypto_?: defective key<br>
+ </tt><tt>crypto_?: invalid filestamp<br>
+ </tt><tt>crypto_?: missing challenge<br>
+ </tt><tt>crypto_?: scheme unavailable</tt>
+ <dd>There is a problem with the identity scheme. Operation cannot proceed untill the problem is fixed. Usually errors are due to misconfiguration or an orphan association. If the latter, <tt>ntpd</tt> will usually time out and recover by itself.
+ <dt><tt>crypto_cert: wrong PEM type ?</tt>
+ <dd>The certificate does not have MIME type <tt>CERTIFICATE</tt>. You are probably using the wrong type from OpenSSL or an external certificate authority.
+ <dt><tt>crypto_ident: no compatible identity scheme found</tt>
+ <dd>Configuration error. The server and client identity schemes are incompatible.
+ <dt><tt>crypto_tai: kernel TAI update failed</tt>
+ <dd>The kernel does not support this function. You may need a new kernel or patch.
+ <dt><tt>crypto_tai: leapseconds file ? error ?</tt>
+ <dd>The leapseconds file is corrupt. Obtain the latest file from <tt>time.nist.gov</tt>.
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/mx4200data.html b/contrib/ntp/html/mx4200data.html
index c2ab03a..7bf66b1 100644
--- a/contrib/ntp/html/mx4200data.html
+++ b/contrib/ntp/html/mx4200data.html
@@ -1,1073 +1,1074 @@
<html>
- <head>
- <title>MX4200 Receiver Data Format</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>MX4200 Receiver Data Format</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h1>MX4200 Receiver Data Format</h1>
- <hr>
- <h2>Table of Contents</h2>
- <ul>
- <li><a href="#control">Control Port Sentences</a>
- <li><a href="#input">Control Port Input Sentences</a>
- <ul>
- <li><a href="#input_000">$PMVXG,000</a> Initialization/Mode Control - Part A
- <li><a href="#input_001">$PMVXG,001</a> Initialization/Mode Control - Part B
- <li><a href="#input_007">$PMVXG,007</a> Control Port Configuration
- <li><a href="#input_023">$PMVXG,023</a> Time Recovery Configuration
- <li><a href="#input_gpq">$CDGPQ,YYY</a> Query From a Remote Device / Request to Output a Sentence
- </ul>
- <li><a href="#output">Control Port Output Sentences</a>
- <ul>
- <li><a href="#output_000">$PMVXG,000</a> Receiver Status
- <li><a href="#output_021">$PMVXG,021</a> Position, Height, Velocity
- <li><a href="#output_022">$PMVXG,022</a> DOPs
- <li><a href="#output_030">$PMVXG,030</a> Software Configuration
- <li><a href="#output_101">$PMVXG,101</a> Control Sentence Accept/Reject
- <li><a href="#output_523">$PMVXG,523</a> Time Recovery Configuration
- <li><a href="#output_830">$PMVXG,830</a> Time Recovery Results
- </ul>
- </ul>
- <hr>
- <h2><a name="control">Control Port Sentences</a></h2>
- <p>The Control (CDU) Port is used to initialize, monitor, and control the receiver. The structure of the control port sentences is based on the <cite>NMEA-0183</cite> Standard for Interfacing Marine Electronics Navigation Devices (version 1.5). For more details, please refer to the <cite>NMEA-0183</cite> Specification available from the <a href="http://www.nmea.org/">National Marine Electronics Association</a>.</p>
- <p>Reserved characters are used to indicate the beginning and the end of records in the data stream, and to delimit data fields within a sentence. Only printable ASCII characters (Hex 20 through 7F) may be used in a sentence. <a href="#table_2">Table 2</a> lists the reserved characters and defines their usage. <a href="#table_1">Table 1</a> illustrates the general Magnavox proprietary NMEA sentence format.</p>
- <h4><a name="table_1">Table 1. Magnavox Proprietary NMEA Sentence Format</a></h4>
- <code>$PMVXG,XXX,...................*CK </code>
- <p></p>
- <table border>
- <tr>
- <th>Character</th>
- <th>Meaning</th>
- </tr>
- <tr>
- <td><code>$</code></td>
- <td>Sentence Start Character</td>
- </tr>
- <tr>
- <td><code>P</code></td>
- <td>Special ID (P = Proprietary)</td>
- </tr>
- <tr>
- <td><code>MVX</code></td>
- <td>Originator ID (MVX = Magnavox)</td>
- </tr>
- <tr>
- <td><code>G</code></td>
- <td>Interface ID (G = GPS)</td>
- </tr>
- <tr>
- <td><code>XXX</code></td>
- <td>Sentence Type</td>
- </tr>
- <tr>
- <td><code>...</code></td>
- <td>Data</td>
- </tr>
- <tr>
- <td><code>*</code></td>
- <td>Optional Checksum Field Delimiter</td>
- </tr>
- <tr>
- <td><code>CK</code></td>
- <td>Optional Checksum</td>
- </tr>
- </table>
- <h4><a name="table_2">Table 2. NMEA Sentence Reserved Characters</a></h4>
- <table border>
- <tr>
- <th>Character</th>
- <th>Hex Value</th>
- <th>Usage</th>
- </tr>
- <tr>
- <td><code>$</code></td>
- <td>24</td>
- <td>Start of Sentence Identifier</td>
- </tr>
- <tr>
- <td><code>{cr}{lf}</code></td>
- <td>0D 0A</td>
- <td>End of Sentence Identifier</td>
- </tr>
- <tr>
- <td><code>,</code></td>
- <td>2C</td>
- <td>Sentence Delimiter</td>
- </tr>
- <tr>
- <td><code>*</code></td>
- <td>2A</td>
- <td>Optional Checksum Field Delimiter</td>
- </tr>
- </table>
- <p>Following the start character <code>$</code>, are five characters which constitute the block label of the sentence. For Magnavox proprietary sentences, this label is always <code>PMVXG</code>. The next field after the block label is the sentence type, consisting of three decimal digits.</p>
- <p>The data, delimited by commas, follows the sentence type. Note that the receiver uses a free-format parsing algorithm, so you need not send the exact number of characters shown in the examples. You will need to use the commas to determine how many bytes of data need to be retrieved.</p>
- <p>The notation <code>CK</code> shown in <a href="#table_1">Table 1</a> symbolically indicates the optional checksum in the examples. The checksum is computed by exclusive-ORing all of the bytes between the <code>$</code> and the <code>*</code> characters. The <code>$</code>, <code>*</code> and the checksum are not included in the checksum computation.</p>
- <p>Checksums are optional for Control Port input sentences, but are highly recommended to limit the effects of communication errors. Magnavox receivers always generate checksums for Control Port output sentences.</p>
- <p>ASCII data characters are transmitted in the following format:</p>
- <table border>
- <tr>
- <td>Data Bits</td>
- <td>8 (msb always 0)</td>
- </tr>
- <tr>
- <td>Parity</td>
- <td>None</td>
- </tr>
- <tr>
- <td>Stop Bits</td>
- <td>1</td>
- </tr>
- </table>
- <p>NULL fields are fields which do not contain any data. They would appear as two commas together in the sentence format, except for the final field. Some Magnavox proprietary sentences require that the format contain NULL fields. mandatory NULL fields are identified by an '*' next to the respective field.</p>
- <hr>
- <h2><a name="input">Control Port Input Sentences</a></h2>
- These are the subset of the MX4200 control port input sentences sent by the NTP driver to the GPS receiver.
- <hr>
- <h3><a name="input_000">$PMVXG,000</a></h3>
- <h4>Initialization/Mode Control - Part A</h4>
- Initializes the time, position and antenna height of the MX4200.
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Default</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>1</td>
- <td>Day</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>&nbsp;</td>
- <td>1-31</td>
- </tr>
- <tr>
- <td>2</td>
- <td>Month</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>&nbsp;</td>
- <td>1-12</td>
- </tr>
- <tr>
- <td>3</td>
- <td>Year</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>&nbsp;</td>
- <td>1991-9999</td>
- </tr>
- <tr>
- <td>4</td>
- <td>GMT Time</td>
- <td>HHMMSS</td>
- <td>Int</td>
- <td>&nbsp;</td>
- <td>000000-235959</td>
- </tr>
- <tr>
- <td>5</td>
- <td>WGS-84 Latitude</td>
- <td>DDMM.MMMM</td>
- <td>Float</td>
- <td>0.0</td>
- <td>0 - 8959.9999</td>
- </tr>
- <tr>
- <td>6</td>
- <td>North/South Indicator</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>N</td>
- <td>N,S</td>
- </tr>
- <tr>
- <td>7</td>
- <td>WGS-84 Longitude</td>
- <td>DDDMM.MMMM</td>
- <td>Float</td>
- <td>0.0</td>
- <td>0 - 17959.9999</td>
- </tr>
- <tr>
- <td>8</td>
- <td>East/West Indicator</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>E</td>
- <td>E,W</td>
- </tr>
- <tr>
- <td>9</td>
- <td>Altitude (height above Mean Sea Level) in meters (WGS-84)</td>
- <td>Meters</td>
- <td>Float</td>
- <td>0.0</td>
- <td>+/-99999.0</td>
- </tr>
- <tr>
- <td>10</td>
- <td>Not Used</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- </table>
- Example:<br>
- <code>$PMVXG,000,,,,,,,,,,*48</code><br>
- <code>$PMVXG,000,,,,,5128.4651,N,00020.0715,W,58.04,*4F</code>
- <hr>
- <h3><a name="input_001">$PMVXG,001</a></h3>
- <h4>Initialization/Mode Control - Part B</h4>
- Specifies various navigation parameters: Altitude aiding, acceleration DOP limits, and satellite elevation limits.
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Default</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>*1</td>
- <td>Constrain Altitude</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1</td>
- <td>0=3D Only<br>
- 1=Auto<br>
- 2=2D Only</td>
- </tr>
- <tr>
- <td>2</td>
- <td>Not Used</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>*3</td>
- <td>Horizontal Acceleration Factor</td>
- <td>m/sec^2</td>
- <td>Float</td>
- <td>1.0</td>
- <td>0.5-10.0</td>
- </tr>
- <tr>
- <td>*4</td>
- <td>Not Used</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>*5</td>
- <td>VDOP Limit</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>10</td>
- <td>1-9999</td>
- </tr>
- <tr>
- <td>*6</td>
- <td>HDOP Limit</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>10</td>
- <td>1-9999</td>
- </tr>
- <tr>
- <td>7</td>
- <td>Elevation Limit</td>
- <td>Deg</td>
- <td>Int</td>
- <td>5</td>
- <td>0-90</td>
- </tr>
- <tr>
- <td>8</td>
- <td>Time Output Mode</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>U</td>
- <td>U=UTC<br>
- L=Local Time</td>
- </tr>
- <tr>
- <td>9</td>
- <td>Local Time Offset</td>
- <td>HHMM</td>
- <td>Int</td>
- <td>0</td>
- <td>+/- 0-2359</td>
- </tr>
- </table>
- Example:<br>
- <code>$PMVXG,001,3,,0.1,0.1,10,10,5,U,0*06</code>
- <hr>
- <h3><a name="input_007">$PMVXG,007</a></h3>
- <h4>Control Port Output Configuration</h4>
- This message enables or disables output of the specified sentence and defines the output rate. The user sends this message for each sentence that the receiver is to output.
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Default</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>1</td>
- <td>Control Port Output Block Label</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>2</td>
- <td>Clear Current Output List</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>&nbsp;</td>
- <td>0=No<br>
- 1=Yes</td>
- </tr>
- <tr>
- <td>3</td>
- <td>Add/Delete Sentence from List</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>&nbsp;</td>
- <td>1=Append<br>
- 2=Delete</td>
- </tr>
- <tr>
- <td>4</td>
- <td>Not Used</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>5</td>
- <td>Sentence Output Rate</td>
- <td>Sec</td>
- <td>Int</td>
- <td>&nbsp;</td>
- <td>1-9999</td>
- </tr>
- <tr>
- <td>6</td>
- <td># digits of Precision for CGA and GLL sentences</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>2</td>
- <td>2-4</td>
- </tr>
- <tr>
- <td>7</td>
- <td>Not Used</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>8</td>
- <td>Not Used</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- </table>
- Example:<br>
- <code>$PMVXG,007,022,0,1,,1,,,*4F</code>
- <hr>
- <h3><a name="input_023">$PMVXG,023</a></h3>
- <h4>Time Recovery Configuration</h4>
- This message is used to enable/disable the time recovery feature of the receiver. The time synchronization for the 1PPS output is specified in addition to a user time bias and an error tolerance for a valid pulse. This record is accepted in units configured for time recovery. If the back panel contains a 1PPS outlet, the receiver is a time recovery unit.
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Default</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>*1</td>
- <td>Time Recovery Mode</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>D</td>
- <td>D=Dynamic<br>
- S=Static<br>
- K=Known Position<br>
- N=No Time Recovery</td>
- </tr>
- <tr>
- <td>2</td>
- <td>Time Synchronization</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>G</td>
- <td>U=UTC<br>
- G=GPS</td>
- </tr>
- <tr>
- <td>3</td>
- <td>Time Mark Mode</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>A</td>
- <td>A=Always<br>
- V=Valid Pulses Only</td>
- </tr>
- <tr>
- <td>4</td>
- <td>Maximum Time Error</td>
- <td>Nsec</td>
- <td>Int</td>
- <td>100</td>
- <td>50-1000</td>
- </tr>
- <tr>
- <td>5</td>
- <td>User Time Bias</td>
- <td>Nsec</td>
- <td>Int</td>
- <td>0</td>
- <td>+/- 99999</td>
- </tr>
- <tr>
- <td>6</td>
- <td>ASCII Time Message Control</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>0</td>
- <td>0=No Output<br>
- 1=830 to Control Port<br>
- 2=830 to Equipment Port</td>
- </tr>
- <tr>
- <td>7</td>
- <td>Known Pos PRN</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>0</td>
- <td>1-32<br>
- 0=Track All Sats</td>
- </tr>
- </table>
- Example:<br>
- <code>$PMVXG,023,S,U,A,500,0,1,*16</code>
- <hr>
- <h3><a name="input_gpq">$CDGPQ,YYY</a></h3>
- <h4>Query From a Remote Device / Request to Output a Sentence</h4>
- Enables the controller to request a one-time transmission of a specific block label. To output messages at a periodic rate, refer to input sentence <a href="#input_007">$PMVXG,007</a>.
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Default</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>1:CD</td>
- <td>ID of Remote Device</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>&nbsp;</td>
- <td>(See <cite>NMEA-0183</cite>)</td>
- </tr>
- <tr>
- <td>2:GP</td>
- <td>GPS</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>&nbsp;</td>
- <td>(See <cite>NMEA-0183</cite>)</td>
- </tr>
- <tr>
- <td>3:Q</td>
- <td>Query</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>&nbsp;</td>
- <td>(See <cite>NMEA-0183</cite>)</td>
- </tr>
- <tr>
- <td>4:YYY</td>
- <td>Label of Desired Sentence</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>&nbsp;</td>
- <td>Any Valid NMEA or Magnavox Sentence Type</td>
- </tr>
- </table>
- Example:<br>
- <code>$CDGPQ,030*5E</code>
- <hr>
- <h2><a name="output">Control Port Output Sentences</a></h2>
- These are the subset of the MX4200 control port output sentences recognized by the NTP driver.
- <hr>
- <h3><a name="output_000">$PMVXG,000</a></h3>
- <h4>Receiver Status</h4>
- Returns the current status of the receiver including the operating mode, number of satellites visible, and the number of satellites being tracked.
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>1</td>
- <td>Current Receiver Status</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>ACQ=Reacquisition<br>
- ALT=Constellation Selection<br>
- IAC=Initial Acquisition<br>
- IDL=Idle, No Satellites<br>
- NAV=Navigating<br>
- STS=Search The Sky<br>
- TRK=Tracking</td>
- </tr>
- <tr>
- <td>2</td>
- <td>Number of Satellites that should be Visible</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>0-12</td>
- </tr>
- <tr>
- <td>3</td>
- <td>Number of Satellites being Tracked</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>0-12</td>
- </tr>
- <tr>
- <td>4</td>
- <td>Time since Last Navigation</td>
- <td>HHMM</td>
- <td>Int</td>
- <td>0-2359</td>
- </tr>
- <tr>
- <td>5</td>
- <td>Initialization Status</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>0=Waiting for Initialization<br>
- 1=Initialization Complete</td>
- </tr>
- </table>
- Example:<br>
- <code>$PMVXG,000,TRK,3,3,0122,1*19</code>
- <hr>
- <h3><a name="output_021">$PMVXG,021</a></h3>
- <h4>Position, Height, Velocity</h4>
- This sentence gives the receiver position, height, navigation mode and velocity north/east. <em>This sentence is intended for post analysis applications.</em>
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>1</td>
- <td>UTC Measurement Time</td>
- <td>Seconds into the week</td>
- <td>Float</td>
- <td>0-604800.00</td>
- </tr>
- <tr>
- <td>2</td>
- <td>WGS-84 Latitude</td>
- <td>DDMM.MMMM</td>
- <td>Float</td>
- <td>0-89.9999</td>
- </tr>
- <tr>
- <td>3</td>
- <td>North/South Indicator</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>N, S</td>
- </tr>
- <tr>
- <td>4</td>
- <td>WGS-84 Longitude</td>
- <td>DDDMM.MMMM</td>
- <td>Float</td>
- <td>0-179.9999</td>
- </tr>
- <tr>
- <td>5</td>
- <td>East/West Indicator</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>E, W</td>
- </tr>
- <tr>
- <td>6</td>
- <td>Altitude (MSL)</td>
- <td>Meters</td>
- <td>Float</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>7</td>
- <td>Geoidal Height</td>
- <td>Meters</td>
- <td>Float</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>8</td>
- <td>Velocity East</td>
- <td>M/Sec</td>
- <td>Float</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>9</td>
- <td>Velocity North</td>
- <td>M/Sec</td>
- <td>Float</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>10</td>
- <td>Navigation Mode</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td><em>Navigating</em><br>
- 1=Position From a Remote Device<br>
- 2=2D<br>
- 3=3D<br>
- 4=2D differential<br>
- 5=3D differential<br>
- <em>Not Navigating</em><br>
- 51=Too Few Satellites<br>
- 52=DOPs too large<br>
- 53=Position STD too large<br>
- 54=Velocity STD too large<br>
- 55=Too many iterations for velocity<br>
- 56=Too many iterations for position<br>
- 57=3 Sat Startup failed</td>
- </tr>
- </table>
- Example:<br>
- <code>$PMVXG,021,142244.00,5128.4744,N,00020.0593,W,00054.4,0047.4,0000.1,-000.2,03*66</code>
- <hr>
- <h3><a name="output_022">$PMVXG,022</a></h3>
- <h4>DOPs</h4>
- This sentence reports the DOP (Dilution Of Precision) values actually used in the measurement processing corresponding to the satellites listed. The satellites are listed in receiver channel order. Fields 11-16 are output only on 12-channel receivers.
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>1</td>
- <td>UTC Measurement Time</td>
- <td>Seconds into the week</td>
- <td>Float</td>
- <td>0-604800.00</td>
- </tr>
- <tr>
- <td>2</td>
- <td>East DOP (EDOP)</td>
- <td>&nbsp;</td>
- <td>Float</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>3</td>
- <td>North DOP (NDOP)</td>
- <td>&nbsp;</td>
- <td>Float</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>4</td>
- <td>Vertical DOP (VDOP)</td>
- <td>&nbsp;</td>
- <td>Float</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>5</td>
- <td>PRN on Channel #1</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- <tr>
- <td>6</td>
- <td>PRN on Channel #2</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- <tr>
- <td>7</td>
- <td>PRN on Channel #3</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- <tr>
- <td>8</td>
- <td>PRN on Channel #4</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- <tr>
- <td>9</td>
- <td>PRN on Channel #5</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- <tr>
- <td>10</td>
- <td>PRN on Channel #6</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- <tr>
- <td>11</td>
- <td>PRN on Channel #7</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- <tr>
- <td>12</td>
- <td>PRN on Channel #8</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- <tr>
- <td>13</td>
- <td>PRN on Channel #9</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- <tr>
- <td>14</td>
- <td>PRN on Channel #10</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- <tr>
- <td>15</td>
- <td>PRN on Channel #11</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- <tr>
- <td>16</td>
- <td>PRN on Channel #12</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-32</td>
- </tr>
- </table>
- Example:<br>
- <code>$PMVXG,022,142243.00,00.7,00.8,01.9,27,26,10,09,13,23*77</code>
- <hr>
- <h3><a name="output_030">$PMVXG,030</a></h3>
- <h4>Software Configuration</h4>
- This sentence contains the navigation processor and baseband firmware version numbers.
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>1</td>
- <td>Nav Processor Version Number</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>2</td>
- <td>Baseband Firmware Version Number</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>&nbsp;</td>
- </tr>
- </table>
- Example:<br>
- <code>$PMVXG,030,DA35,015</code>
- <hr>
- <h3><a name="output_101">$PMVXG,101</a></h3>
- <h4>Control Sentence Accept/Reject</h4>
- This sentence is returned (on the Control Port) for every <strong>$PMVXG</strong> and <strong>$XXGPQ</strong> sentence that is received.
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>1</td>
- <td>Sentence ID</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>2</td>
- <td>Accept/Reject Status</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>0=Sentence Accepted<br>
- 1=Bad Checksum<br>
- 2=Illegal Value<br>
- 3=Unrecognized ID<br>
- 4=Wrong # of fields<br>
- 5=Required Data Field Missing<br>
- 6=Requested Sentence Unavailable</td>
- </tr>
- <tr>
- <td>3</td>
- <td>Bad Field Index</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>4</td>
- <td>Requested Sentence ID (If field #1 = GPQ)</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>&nbsp;</td>
- </tr>
- </table>
- Example:<br>
- <code>$PMVXG,101,GPQ,0,,030*0D</code>
- <hr>
- <h3><a name="output_523">$PMVXG,523</a></h3>
- <h4>Time Recovery Configuration</h4>
- This sentence contains the configuration of the time recovery function of the receiver.
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>1</td>
- <td>Time Recovery Mode</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>D=Dynamic<br>
- S=Static<br>
- K=Known Position<br>
- N=No Time Recovery</td>
- </tr>
- <tr>
- <td>2</td>
- <td>Time Synchronization</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>U=UTC Time<br>
- G=GPS Time</td>
- </tr>
- <tr>
- <td>3</td>
- <td>Time Mark Mode</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>A=Always Output Time Pulse<br>
- V=Only when Valid</td>
- </tr>
- <tr>
- <td>4</td>
- <td>Maximum Time Error for which a time mark will be considered valid</td>
- <td>Nsec</td>
- <td>Int</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>5</td>
- <td>User Time Bias</td>
- <td>Nsec</td>
- <td>Int</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>6</td>
- <td>Time Message Control</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>0=No Message<br>
- 1=830 to Control Port<br>
- 2=830 to Equipment Port</td>
- </tr>
- <tr>
- <td>7</td>
- <td>Not Used</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- <td>&nbsp;</td>
- </tr>
- </table>
- Example:<br>
- <code>$PMVXG,523,S,U,A,0500,000000,1,0*23</code>
- <hr>
- <h3><a name="output_830">$PMVXG,830</a></h3>
- <h4>Time Recovery Results</h4>
- This sentence is output approximately 1 second preceding the 1PPS output. It indicates the exact time of the next pulse, whether or not the time mark will be valid (based on operator-specified error tolerance), the time to which the pulse is synchronized, the receiver operating mode, and the time error of the <strong>last</strong> 1PPS output. The leap second flag (Field #11) is not output by older receivers.
- <p></p>
- <table border>
- <tr>
- <th>Field</th>
- <th>Description</th>
- <th>Units</th>
- <th>Format</th>
- <th>Range</th>
- </tr>
- <tr>
- <td>1</td>
- <td>Time Mark Valid</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>T=Valid<br>
- F=Not Valid</td>
- </tr>
- <tr>
- <td>2</td>
- <td>Year</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1993-</td>
- </tr>
- <tr>
- <td>3</td>
- <td>Month</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>1-12</td>
- </tr>
- <tr>
- <td>4</td>
- <td>Day</td>
- <td>Nsec</td>
- <td>Int</td>
- <td>1-31</td>
- </tr>
- <tr>
- <td>5</td>
- <td>Time</td>
- <td>HH:MM:SS</td>
- <td>Int</td>
- <td>00:00:00-23:59:59</td>
- </tr>
- <tr>
- <td>6</td>
- <td>Time Synchronization</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>U=UTC<br>
- G=GPS</td>
- </tr>
- <tr>
- <td>7</td>
- <td>Operating Mode</td>
- <td>&nbsp;</td>
- <td>Char</td>
- <td>D=Dynamic<br>
- S=Static<br>
- K=Known Position</td>
- </tr>
- <tr>
- <td>8</td>
- <td>Oscillator Offset - estimate of oscillator frequency error</td>
- <td>PPB</td>
- <td>Int</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>9</td>
- <td>Time Mark Error of last pulse</td>
- <td>Nsec</td>
- <td>Int</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>10</td>
- <td>User Time Bias</td>
- <td>Nsec</td>
- <td>Int</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td>11</td>
- <td>Leap Second Flag - indicates that a leap second will occur. This value is usually zero except during the week prior to a leap second occurrence, when this value will be set to +/-1. A value of +1 indicates that GPS time will be 1 second further ahead of UTC time.</td>
- <td>&nbsp;</td>
- <td>Int</td>
- <td>-1,0,1</td>
- </tr>
- </table>
- Example:<br>
- <code>$PMVXG,830,T,1998,10,12,15:30:46,U,S,000298,00003,000000,01*02</code>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h1>MX4200 Receiver Data Format</h1>
+ <hr>
+ <h2>Table of Contents</h2>
+ <ul>
+ <li><a href="#control">Control Port Sentences</a>
+ <li><a href="#input">Control Port Input Sentences</a>
+ <ul>
+ <li><a href="#input_000">$PMVXG,000</a> Initialization/Mode Control - Part A
+ <li><a href="#input_001">$PMVXG,001</a> Initialization/Mode Control - Part B
+ <li><a href="#input_007">$PMVXG,007</a> Control Port Configuration
+ <li><a href="#input_023">$PMVXG,023</a> Time Recovery Configuration
+ <li><a href="#input_gpq">$CDGPQ,YYY</a> Query From a Remote Device / Request to Output a Sentence
+ </ul>
+ <li><a href="#output">Control Port Output Sentences</a>
+ <ul>
+ <li><a href="#output_000">$PMVXG,000</a> Receiver Status
+ <li><a href="#output_021">$PMVXG,021</a> Position, Height, Velocity
+ <li><a href="#output_022">$PMVXG,022</a> DOPs
+ <li><a href="#output_030">$PMVXG,030</a> Software Configuration
+ <li><a href="#output_101">$PMVXG,101</a> Control Sentence Accept/Reject
+ <li><a href="#output_523">$PMVXG,523</a> Time Recovery Configuration
+ <li><a href="#output_830">$PMVXG,830</a> Time Recovery Results
+ </ul>
+ </ul>
+ <hr>
+ <h2><a name="control">Control Port Sentences</a></h2>
+ <p>The Control (CDU) Port is used to initialize, monitor, and control the receiver. The structure of the control port sentences is based on the <cite>NMEA-0183</cite> Standard for Interfacing Marine Electronics Navigation Devices (version 1.5). For more details, please refer to the <cite>NMEA-0183</cite> Specification available from the <a href="http://www.nmea.org/">National Marine Electronics Association</a>.</p>
+ <p>Reserved characters are used to indicate the beginning and the end of records in the data stream, and to delimit data fields within a sentence. Only printable ASCII characters (Hex 20 through 7F) may be used in a sentence. <a href="#table_2">Table 2</a> lists the reserved characters and defines their usage. <a href="#table_1">Table 1</a> illustrates the general Magnavox proprietary NMEA sentence format.</p>
+ <h4><a name="table_1">Table 1. Magnavox Proprietary NMEA Sentence Format</a></h4>
+ <code>$PMVXG,XXX,...................*CK </code>
+ <p></p>
+ <table border>
+ <tr>
+ <th>Character</th>
+ <th>Meaning</th>
+ </tr>
+ <tr>
+ <td><code>$</code></td>
+ <td>Sentence Start Character</td>
+ </tr>
+ <tr>
+ <td><code>P</code></td>
+ <td>Special ID (P = Proprietary)</td>
+ </tr>
+ <tr>
+ <td><code>MVX</code></td>
+ <td>Originator ID (MVX = Magnavox)</td>
+ </tr>
+ <tr>
+ <td><code>G</code></td>
+ <td>Interface ID (G = GPS)</td>
+ </tr>
+ <tr>
+ <td><code>XXX</code></td>
+ <td>Sentence Type</td>
+ </tr>
+ <tr>
+ <td><code>...</code></td>
+ <td>Data</td>
+ </tr>
+ <tr>
+ <td><code>*</code></td>
+ <td>Optional Checksum Field Delimiter</td>
+ </tr>
+ <tr>
+ <td><code>CK</code></td>
+ <td>Optional Checksum</td>
+ </tr>
+ </table>
+ <h4><a name="table_2">Table 2. NMEA Sentence Reserved Characters</a></h4>
+ <table border>
+ <tr>
+ <th>Character</th>
+ <th>Hex Value</th>
+ <th>Usage</th>
+ </tr>
+ <tr>
+ <td><code>$</code></td>
+ <td>24</td>
+ <td>Start of Sentence Identifier</td>
+ </tr>
+ <tr>
+ <td><code>{cr}{lf}</code></td>
+ <td>0D 0A</td>
+ <td>End of Sentence Identifier</td>
+ </tr>
+ <tr>
+ <td><code>,</code></td>
+ <td>2C</td>
+ <td>Sentence Delimiter</td>
+ </tr>
+ <tr>
+ <td><code>*</code></td>
+ <td>2A</td>
+ <td>Optional Checksum Field Delimiter</td>
+ </tr>
+ </table>
+ <p>Following the start character <code>$</code>, are five characters which constitute the block label of the sentence. For Magnavox proprietary sentences, this label is always <code>PMVXG</code>. The next field after the block label is the sentence type, consisting of three decimal digits.</p>
+ <p>The data, delimited by commas, follows the sentence type. Note that the receiver uses a free-format parsing algorithm, so you need not send the exact number of characters shown in the examples. You will need to use the commas to determine how many bytes of data need to be retrieved.</p>
+ <p>The notation <code>CK</code> shown in <a href="#table_1">Table 1</a> symbolically indicates the optional checksum in the examples. The checksum is computed by exclusive-ORing all of the bytes between the <code>$</code> and the <code>*</code> characters. The <code>$</code>, <code>*</code> and the checksum are not included in the checksum computation.</p>
+ <p>Checksums are optional for Control Port input sentences, but are highly recommended to limit the effects of communication errors. Magnavox receivers always generate checksums for Control Port output sentences.</p>
+ <p>ASCII data characters are transmitted in the following format:</p>
+ <table border>
+ <tr>
+ <td>Data Bits</td>
+ <td>8 (msb always 0)</td>
+ </tr>
+ <tr>
+ <td>Parity</td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td>Stop Bits</td>
+ <td>1</td>
+ </tr>
+ </table>
+ <p>NULL fields are fields which do not contain any data. They would appear as two commas together in the sentence format, except for the final field. Some Magnavox proprietary sentences require that the format contain NULL fields. mandatory NULL fields are identified by an '*' next to the respective field.</p>
+ <hr>
+ <h2><a name="input">Control Port Input Sentences</a></h2>
+ These are the subset of the MX4200 control port input sentences sent by the NTP driver to the GPS receiver.
+ <hr>
+ <h3><a name="input_000">$PMVXG,000</a></h3>
+ <h4>Initialization/Mode Control - Part A</h4>
+ Initializes the time, position and antenna height of the MX4200.
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Default</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Day</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ <td>1-31</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Month</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ <td>1-12</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Year</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ <td>1991-9999</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>GMT Time</td>
+ <td>HHMMSS</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ <td>000000-235959</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>WGS-84 Latitude</td>
+ <td>DDMM.MMMM</td>
+ <td>Float</td>
+ <td>0.0</td>
+ <td>0 - 8959.9999</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td>North/South Indicator</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>N</td>
+ <td>N,S</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td>WGS-84 Longitude</td>
+ <td>DDDMM.MMMM</td>
+ <td>Float</td>
+ <td>0.0</td>
+ <td>0 - 17959.9999</td>
+ </tr>
+ <tr>
+ <td>8</td>
+ <td>East/West Indicator</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>E</td>
+ <td>E,W</td>
+ </tr>
+ <tr>
+ <td>9</td>
+ <td>Altitude (height above Mean Sea Level) in meters (WGS-84)</td>
+ <td>Meters</td>
+ <td>Float</td>
+ <td>0.0</td>
+ <td>+/-99999.0</td>
+ </tr>
+ <tr>
+ <td>10</td>
+ <td>Not Used</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$PMVXG,000,,,,,,,,,,*48</code><br>
+ <code>$PMVXG,000,,,,,5128.4651,N,00020.0715,W,58.04,*4F</code>
+ <hr>
+ <h3><a name="input_001">$PMVXG,001</a></h3>
+ <h4>Initialization/Mode Control - Part B</h4>
+ Specifies various navigation parameters: Altitude aiding, acceleration DOP limits, and satellite elevation limits.
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Default</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>*1</td>
+ <td>Constrain Altitude</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1</td>
+ <td>0=3D Only<br>
+ 1=Auto<br>
+ 2=2D Only</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Not Used</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>*3</td>
+ <td>Horizontal Acceleration Factor</td>
+ <td>m/sec^2</td>
+ <td>Float</td>
+ <td>1.0</td>
+ <td>0.5-10.0</td>
+ </tr>
+ <tr>
+ <td>*4</td>
+ <td>Not Used</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>*5</td>
+ <td>VDOP Limit</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>10</td>
+ <td>1-9999</td>
+ </tr>
+ <tr>
+ <td>*6</td>
+ <td>HDOP Limit</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>10</td>
+ <td>1-9999</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td>Elevation Limit</td>
+ <td>Deg</td>
+ <td>Int</td>
+ <td>5</td>
+ <td>0-90</td>
+ </tr>
+ <tr>
+ <td>8</td>
+ <td>Time Output Mode</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>U</td>
+ <td>U=UTC<br>
+ L=Local Time</td>
+ </tr>
+ <tr>
+ <td>9</td>
+ <td>Local Time Offset</td>
+ <td>HHMM</td>
+ <td>Int</td>
+ <td>0</td>
+ <td>+/- 0-2359</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$PMVXG,001,3,,0.1,0.1,10,10,5,U,0*06</code>
+ <hr>
+ <h3><a name="input_007">$PMVXG,007</a></h3>
+ <h4>Control Port Output Configuration</h4>
+ This message enables or disables output of the specified sentence and defines the output rate. The user sends this message for each sentence that the receiver is to output.
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Default</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Control Port Output Block Label</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Clear Current Output List</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ <td>0=No<br>
+ 1=Yes</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Add/Delete Sentence from List</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ <td>1=Append<br>
+ 2=Delete</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Not Used</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>Sentence Output Rate</td>
+ <td>Sec</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ <td>1-9999</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td># digits of Precision for CGA and GLL sentences</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>2</td>
+ <td>2-4</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td>Not Used</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>8</td>
+ <td>Not Used</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$PMVXG,007,022,0,1,,1,,,*4F</code>
+ <hr>
+ <h3><a name="input_023">$PMVXG,023</a></h3>
+ <h4>Time Recovery Configuration</h4>
+ This message is used to enable/disable the time recovery feature of the receiver. The time synchronization for the 1PPS output is specified in addition to a user time bias and an error tolerance for a valid pulse. This record is accepted in units configured for time recovery. If the back panel contains a 1PPS outlet, the receiver is a time recovery unit.
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Default</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>*1</td>
+ <td>Time Recovery Mode</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>D</td>
+ <td>D=Dynamic<br>
+ S=Static<br>
+ K=Known Position<br>
+ N=No Time Recovery</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Time Synchronization</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>G</td>
+ <td>U=UTC<br>
+ G=GPS</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Time Mark Mode</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>A</td>
+ <td>A=Always<br>
+ V=Valid Pulses Only</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Maximum Time Error</td>
+ <td>Nsec</td>
+ <td>Int</td>
+ <td>100</td>
+ <td>50-1000</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>User Time Bias</td>
+ <td>Nsec</td>
+ <td>Int</td>
+ <td>0</td>
+ <td>+/- 99999</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td>ASCII Time Message Control</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>0</td>
+ <td>0=No Output<br>
+ 1=830 to Control Port<br>
+ 2=830 to Equipment Port</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td>Known Pos PRN</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>0</td>
+ <td>1-32<br>
+ 0=Track All Sats</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$PMVXG,023,S,U,A,500,0,1,*16</code>
+ <hr>
+ <h3><a name="input_gpq">$CDGPQ,YYY</a></h3>
+ <h4>Query From a Remote Device / Request to Output a Sentence</h4>
+ Enables the controller to request a one-time transmission of a specific block label. To output messages at a periodic rate, refer to input sentence <a href="#input_007">$PMVXG,007</a>.
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Default</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>1:CD</td>
+ <td>ID of Remote Device</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>&nbsp;</td>
+ <td>(See <cite>NMEA-0183</cite>)</td>
+ </tr>
+ <tr>
+ <td>2:GP</td>
+ <td>GPS</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>&nbsp;</td>
+ <td>(See <cite>NMEA-0183</cite>)</td>
+ </tr>
+ <tr>
+ <td>3:Q</td>
+ <td>Query</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>&nbsp;</td>
+ <td>(See <cite>NMEA-0183</cite>)</td>
+ </tr>
+ <tr>
+ <td>4:YYY</td>
+ <td>Label of Desired Sentence</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>&nbsp;</td>
+ <td>Any Valid NMEA or Magnavox Sentence Type</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$CDGPQ,030*5E</code>
+ <hr>
+ <h2><a name="output">Control Port Output Sentences</a></h2>
+ These are the subset of the MX4200 control port output sentences recognized by the NTP driver.
+ <hr>
+ <h3><a name="output_000">$PMVXG,000</a></h3>
+ <h4>Receiver Status</h4>
+ Returns the current status of the receiver including the operating mode, number of satellites visible, and the number of satellites being tracked.
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Current Receiver Status</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>ACQ=Reacquisition<br>
+ ALT=Constellation Selection<br>
+ IAC=Initial Acquisition<br>
+ IDL=Idle, No Satellites<br>
+ NAV=Navigating<br>
+ STS=Search The Sky<br>
+ TRK=Tracking</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Number of Satellites that should be Visible</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>0-12</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Number of Satellites being Tracked</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>0-12</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Time since Last Navigation</td>
+ <td>HHMM</td>
+ <td>Int</td>
+ <td>0-2359</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>Initialization Status</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>0=Waiting for Initialization<br>
+ 1=Initialization Complete</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$PMVXG,000,TRK,3,3,0122,1*19</code>
+ <hr>
+ <h3><a name="output_021">$PMVXG,021</a></h3>
+ <h4>Position, Height, Velocity</h4>
+ This sentence gives the receiver position, height, navigation mode and velocity north/east. <em>This sentence is intended for post analysis applications.</em>
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>UTC Measurement Time</td>
+ <td>Seconds into the week</td>
+ <td>Float</td>
+ <td>0-604800.00</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>WGS-84 Latitude</td>
+ <td>DDMM.MMMM</td>
+ <td>Float</td>
+ <td>0-89.9999</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>North/South Indicator</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>N, S</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>WGS-84 Longitude</td>
+ <td>DDDMM.MMMM</td>
+ <td>Float</td>
+ <td>0-179.9999</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>East/West Indicator</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>E, W</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td>Altitude (MSL)</td>
+ <td>Meters</td>
+ <td>Float</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td>Geoidal Height</td>
+ <td>Meters</td>
+ <td>Float</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>8</td>
+ <td>Velocity East</td>
+ <td>M/Sec</td>
+ <td>Float</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>9</td>
+ <td>Velocity North</td>
+ <td>M/Sec</td>
+ <td>Float</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>10</td>
+ <td>Navigation Mode</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td><em>Navigating</em><br>
+ 1=Position From a Remote Device<br>
+ 2=2D<br>
+ 3=3D<br>
+ 4=2D differential<br>
+ 5=3D differential<br>
+ <em>Not Navigating</em><br>
+ 51=Too Few Satellites<br>
+ 52=DOPs too large<br>
+ 53=Position STD too large<br>
+ 54=Velocity STD too large<br>
+ 55=Too many iterations for velocity<br>
+ 56=Too many iterations for position<br>
+ 57=3 Sat Startup failed</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$PMVXG,021,142244.00,5128.4744,N,00020.0593,W,00054.4,0047.4,0000.1,-000.2,03*66</code>
+ <hr>
+ <h3><a name="output_022">$PMVXG,022</a></h3>
+ <h4>DOPs</h4>
+ This sentence reports the DOP (Dilution Of Precision) values actually used in the measurement processing corresponding to the satellites listed. The satellites are listed in receiver channel order. Fields 11-16 are output only on 12-channel receivers.
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>UTC Measurement Time</td>
+ <td>Seconds into the week</td>
+ <td>Float</td>
+ <td>0-604800.00</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>East DOP (EDOP)</td>
+ <td>&nbsp;</td>
+ <td>Float</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>North DOP (NDOP)</td>
+ <td>&nbsp;</td>
+ <td>Float</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Vertical DOP (VDOP)</td>
+ <td>&nbsp;</td>
+ <td>Float</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>PRN on Channel #1</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td>PRN on Channel #2</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td>PRN on Channel #3</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ <tr>
+ <td>8</td>
+ <td>PRN on Channel #4</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ <tr>
+ <td>9</td>
+ <td>PRN on Channel #5</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ <tr>
+ <td>10</td>
+ <td>PRN on Channel #6</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ <tr>
+ <td>11</td>
+ <td>PRN on Channel #7</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ <tr>
+ <td>12</td>
+ <td>PRN on Channel #8</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ <tr>
+ <td>13</td>
+ <td>PRN on Channel #9</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ <tr>
+ <td>14</td>
+ <td>PRN on Channel #10</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ <tr>
+ <td>15</td>
+ <td>PRN on Channel #11</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ <tr>
+ <td>16</td>
+ <td>PRN on Channel #12</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-32</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$PMVXG,022,142243.00,00.7,00.8,01.9,27,26,10,09,13,23*77</code>
+ <hr>
+ <h3><a name="output_030">$PMVXG,030</a></h3>
+ <h4>Software Configuration</h4>
+ This sentence contains the navigation processor and baseband firmware version numbers.
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Nav Processor Version Number</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Baseband Firmware Version Number</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>&nbsp;</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$PMVXG,030,DA35,015</code>
+ <hr>
+ <h3><a name="output_101">$PMVXG,101</a></h3>
+ <h4>Control Sentence Accept/Reject</h4>
+ This sentence is returned (on the Control Port) for every <strong>$PMVXG</strong> and <strong>$XXGPQ</strong> sentence that is received.
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Sentence ID</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Accept/Reject Status</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>0=Sentence Accepted<br>
+ 1=Bad Checksum<br>
+ 2=Illegal Value<br>
+ 3=Unrecognized ID<br>
+ 4=Wrong # of fields<br>
+ 5=Required Data Field Missing<br>
+ 6=Requested Sentence Unavailable</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Bad Field Index</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Requested Sentence ID (If field #1 = GPQ)</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>&nbsp;</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$PMVXG,101,GPQ,0,,030*0D</code>
+ <hr>
+ <h3><a name="output_523">$PMVXG,523</a></h3>
+ <h4>Time Recovery Configuration</h4>
+ This sentence contains the configuration of the time recovery function of the receiver.
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Time Recovery Mode</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>D=Dynamic<br>
+ S=Static<br>
+ K=Known Position<br>
+ N=No Time Recovery</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Time Synchronization</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>U=UTC Time<br>
+ G=GPS Time</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Time Mark Mode</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>A=Always Output Time Pulse<br>
+ V=Only when Valid</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Maximum Time Error for which a time mark will be considered valid</td>
+ <td>Nsec</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>User Time Bias</td>
+ <td>Nsec</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td>Time Message Control</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>0=No Message<br>
+ 1=830 to Control Port<br>
+ 2=830 to Equipment Port</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td>Not Used</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ <td>&nbsp;</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$PMVXG,523,S,U,A,0500,000000,1,0*23</code>
+ <hr>
+ <h3><a name="output_830">$PMVXG,830</a></h3>
+ <h4>Time Recovery Results</h4>
+ This sentence is output approximately 1 second preceding the 1PPS output. It indicates the exact time of the next pulse, whether or not the time mark will be valid (based on operator-specified error tolerance), the time to which the pulse is synchronized, the receiver operating mode, and the time error of the <strong>last</strong> 1PPS output. The leap second flag (Field #11) is not output by older receivers.
+ <p></p>
+ <table border>
+ <tr>
+ <th>Field</th>
+ <th>Description</th>
+ <th>Units</th>
+ <th>Format</th>
+ <th>Range</th>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Time Mark Valid</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>T=Valid<br>
+ F=Not Valid</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Year</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1993-</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Month</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>1-12</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Day</td>
+ <td>Nsec</td>
+ <td>Int</td>
+ <td>1-31</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>Time</td>
+ <td>HH:MM:SS</td>
+ <td>Int</td>
+ <td>00:00:00-23:59:59</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td>Time Synchronization</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>U=UTC<br>
+ G=GPS</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td>Operating Mode</td>
+ <td>&nbsp;</td>
+ <td>Char</td>
+ <td>D=Dynamic<br>
+ S=Static<br>
+ K=Known Position</td>
+ </tr>
+ <tr>
+ <td>8</td>
+ <td>Oscillator Offset - estimate of oscillator frequency error</td>
+ <td>PPB</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>9</td>
+ <td>Time Mark Error of last pulse</td>
+ <td>Nsec</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>10</td>
+ <td>User Time Bias</td>
+ <td>Nsec</td>
+ <td>Int</td>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td>11</td>
+ <td>Leap Second Flag - indicates that a leap second will occur. This value is usually zero except during the week prior to a leap second occurrence, when this value will be set to +/-1. A value of +1 indicates that GPS time will be 1 second further ahead of UTC time.</td>
+ <td>&nbsp;</td>
+ <td>Int</td>
+ <td>-1,0,1</td>
+ </tr>
+ </table>
+ Example:<br>
+ <code>$PMVXG,830,T,1998,10,12,15:30:46,U,S,000298,00003,000000,01*02</code>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/notes.html b/contrib/ntp/html/notes.html
index 96fc1db..e757dbd 100644
--- a/contrib/ntp/html/notes.html
+++ b/contrib/ntp/html/notes.html
@@ -2,60 +2,61 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Notes on setting up a NTP subnet</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Notes on setting up a NTP subnet</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Notes on setting up a NTP subnet</h3>
- <img src="pic/tonea.gif" alt="gif" align="left">From NBS Special Publication 432 (out of print)
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">20:23</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="257">Monday, December 02, 2002</csobj></p>
- <br clear="left">
- <hr>
- <h4>Introduction</h4>
- <p>This document is a collection of notes concerning the use of ntpd and related programs, and on coping with the Network Time Protocol (NTP) in general. It is a major rewrite and update of an earlier document written by Dennis Ferguson of the University of Toronto and includes many changes and additions resulting from the NTP Version 3 specification and new Version 4 implementation features. It supersedes earlier documents, which should no longer be used for new configurations.</p>
- <p><tt>ntpd</tt> includes a complete implementation of the NTP Version 3 specification, as defined in:</p>
- <ul>
- <li>Mills, D.L. Network Time Protocol (Version 3) specification, implementation and analysis. Network Working Group Report RFC-1305, University of Delaware, March 1992, 113 pp. Abstract: <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305a.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305a.pdf">PDF</a>, Body: <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305b.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305b.pdf">PDF</a>, Appendices: <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305c.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305c.pdf">PDF</a>
- </ul>
- <p>Additional features have are described for <a href="release.html">NTP Version 4 Release Notes</a>. It also retains compatibility with both NTP Version 2, as defined in RFC-1119, and NTP Version 1, as defined in RFC-1059, although this compatibility is sometimes strained and only semiautomatic. In order to support in principle the ultimate precision of about 232 picoseconds in the NTP specification, <tt>ntpd</tt> uses NTP timestamp format for external communication and double precision floating point arithmetic internally. <tt>ntpd</tt> fully implements NTP Versions 2 and 3 authentication and in addition Version 4 autokey. It supports the NTP mode-6 control message facility along with a private mode-7 control- message facility used to remotely reconfigure the system and monitor a considerable amount of internal detail. As extensions to the specification, a flexible address-and-mask restriction facility has been included.</p>
- <p>The code is biased towards the needs of a busy time server with numerous, often hundreds, of clients and other servers. Tables are hashed to allow efficient handling of many associations, though at the expense of additional overhead when the number of associations is small. Many fancy features have been included to permit efficient management and monitoring of a busy primary server, features which are probably excess baggage for a high stratum client. In such cases, a stripped-down version of the protocol, the Simple Network Time Protocol (SNTP) can be used. SNTP and NTP servers and clients can interwork in most situations, as described in: Mills, D.L. Simple Network Time Protocol (SNTP). Network Working Group Report RFC-2030, University of Delaware, October 1996, 14 pp. <a href="http://www.eecis.udel.edu/%7emills/database/rfc2030.txt">(ASCII)</a>.</p>
- <p>The code was written with near demonic attention to details which can affect precision and as a consequence should be able to make good use of high performance, special purpose hardware such as precision oscillators and radio clocks. The present code supports a number of radio clocks, including those for the WWV, CHU, WWVB, MSF, DCF77, GOES and GPS radio and satellite time services and USNO, ACTS and PTB modem time services. It also supports the IRIG-B and IRIG-E signal format connected via an audio codec. The server methodically avoids the use of Unix-specific library routines where possible by implementing local versions, in order to aid in porting the code to perverse Unix and non-Unix platforms.</p>
- <p>While this implementation conforms in most respects to the NTP Version 3 specification RFC-1305, a number of improvements have been made which are described in the conformance statement in the <a href="http://www.eecis.udel.edu/%7emills/biblio.html">NTP Protocol Conformance Statement</a> page. It has been specifically tuned to achieve the highest accuracy possible on whatever hardware and operating-system platform is available. In general, its precision and stability are limited only by the characteristics of the onboard clock source used by the hardware and operating system, usually an uncompensated crystal oscillator. On modern RISC-based processors connected directly to radio clocks via serial-asynchronous interfaces, the accuracy is usually limited by the radio clock and interface to the order of a millisecond or less. The code includes special features to support a pulse-per-second (PPS) signal and/or an IRIG-B signal generated by some radio clocks. When used in conjunction with a suitable hardware level converter, the accuracy can be improved to a few tens of microseconds. Further improvement is possible using an outboard, stabilized frequency source, in which the accuracy and stability are limited only by the characteristics of that source.</p>
- <p>The NTP Version 4 distribution includes, in addition to the daemon itself (<tt><a href="ntpd.html">ntpd</a></tt>), several utility programs, including two remote-monitoring programs (<a href="ntpq.html"><tt>ntpq</tt></a>, <tt><a href="ntpdc.html">ntpdc</a></tt>), a remote clock-setting program similar to the Unix rdate program (<tt>ntpdate</tt>), a traceback utility u seful to discover suitable synchronization sources (<tt>ntptrace</tt>), and various programs used to configure the local platform and calibrate the intrinsic errors. NTP has been ported to a large number of platforms, including most RISC and CISC workstations and mainframes manufactured today. Example configuration files for many models of these machines are included in the distribution. While in most cases the standard version of the implementation runs with no hardware or operating system modifications, not all features of the distribution are available on all platforms. For instance, a special feature allowing Sun workstations to achieve accuracies in the order of 100 microseconds requires some minor changes and additions to the kernel and input/output support.</p>
- <p>There are, however, several drawbacks to all of this. <tt>ntpd</tt> is quite fat. This is rotten if your intended platform for the daemon is memory limited. <tt>ntpd</tt> uses <tt>SIGIO</tt> for all input, a facility which appears to not enjoy universal support and whose use seems to exercise the parts of your vendors' kernels which are most likely to have been done poorly. The code is unforgiving in the face of kernel problems which affect performance, and generally requires that you repair the problems in order to achieve acceptable performance. The code has a distinctly experimental flavour and contains features which could charitably be termed failed experiments, but which have not been completely hacked out. Much was learned from the addition of support for a variety of radio clocks, with the result that some radio clock drivers could use some rewriting.</p>
- <h4>How NTP Works</h4>
- <p>The approach used by NTP to achieve reliable time synchronization from a set of possibly unreliable remote time servers is somewhat different than other protocols. In particular, NTP does not attempt to synchronize clocks to each other. Rather, each server attempts to synchronize to Universal Coordinated Time (UTC) using the best available source and available transmission paths to that source. This is a fine point which is worth understanding. A group of NTP-synchronized clocks may be close to each other in time, but this is not a consequence of the clocks in the group having synchronized to each other, but rather because each clock has synchronized closely to UTC via the best source it has access to. As such, trying to synchronize a set of clocks to a set of servers whose time is not in mutual agreement may not result in any sort of useful synchronization of the clocks, even if you don't care about UTC. However, in networks isolated from UTC sources, provisions can made to nominate one of them as a phantom UTC source.</p>
- <p>NTP operates on the premise that there is one true standard time, and that if several servers which claim synchronization to standard time disagree about what that time is, then one or more of them must be broken. There is no attempt to resolve differences more gracefully since the premise is that substantial differences cannot exist. In essence, NTP expects that the time being distributed from the root of the synchronization subnet will be derived from some external source of UTC (e.g., a radio clock). This makes it somewhat inconvenient (though by no means impossible) to synchronize hosts together without a reliable source of UTC to synchronize them to. If your network is isolated and you cannot access other people's servers across the Internet, a radio clock may make a good investment.</p>
- <p>Time is distributed through a hierarchy of NTP servers, with each server adopting a <i>stratum</i> which indicates how far away from an external source of UTC it is operating at. Stratum-1 servers, which are at the top of the pile (or bottom, depending on your point of view), have access to some external time source, usually a radio clock synchronized to time signal broadcasts from radio stations which explicitly provide a standard time service. A stratum-2 server is one which is currently obtaining time from a stratum-1 server, a stratum-3 server gets its time from a stratum-2 server, and so on. To avoid long lived synchronization loops the number of strata is limited to 15.</p>
- <p>Each client in the synchronization subnet (which may also be a server for other, higher stratum clients) chooses exactly one of the available servers to synchronize to, usually from among the lowest stratum servers it has access to. This is, however, not always an optimal configuration, for indeed NTP operates under another premise as well, that each server's time should be viewed with a certain amount of distrust. NTP really prefers to have access to several sources of lower stratum time (at least three) since it can then apply an agreement algorithm to detect insanity on the part of any one of these. Normally, when all servers are in agreement, NTP will choose the best of these, where &quot;best&quot; is defined in terms of lowest stratum, closest (in terms of network delay) and claimed precision, along with several other considerations. The implication is that, while one should aim to provide each client with three or more sources of lower stratum time, several of these will only be providing backup service and may be of lesser quality in terms of network delay and stratum (i.e., a same-stratum peer which receives time from lower stratum sources the local server doesn't access directly can also provide good backup service).</p>
- <p>Finally, there is the issue of association modes. There are a number of modes in which NTP servers can associate with each other, with the mode of each server in the pair indicating the behaviour the other server can expect from it. In particular, when configuring a server to obtain time from other servers, there is a choice of two modes which may be used. Configuring an association in symmetric-active mode (usually indicated by a <tt>peer</tt> declaration in the configuration file) indicates to the remote server that one wishes to obtain time from the remote server and that one is also willing to supply time to the remote server if need be. This mode is appropriate in configurations involving a number of redundant time servers interconnected via diverse network paths, which is presently the case for most stratum-1 and stratum-2 servers on the Internet today. Configuring an association in client mode (usually indicated by a <tt>server</tt> declaration in the configuration file) indicates that one wishes to obtain time from the remote server, but that one is not willing to provide time to the remote server. This mode is appropriate for file-server and workstation clients that do not provide synchronization to other local clients. Client mode is also useful for boot-date-setting programs and the like, which really have no time to provide and which don't retain state about associations over the longer term.</p>
- <p>Where the requirements in accuracy and reliability are modest, clients can be configured to use broadcast and/or multicast modes. These modes are not normally utilized by servers with dependent clients. The advantage of these modes is that clients do not need to be configured for a specific server, so that all clients operating can use the same configuration file. Broadcast mode requires a broadcast server on the same subnet, while multicast mode requires support for IP multicast on the client machine, as well as connectivity via the MBONE to a multicast server. Since broadcast messages are not propagated by routers, only those broadcast servers on the same subnet will be used. There is at present no way to select which of possibly many multicast servers will be used, since all operate on the same group address.</p>
- <p>Where the maximum accuracy and reliability provided by NTP are needed, clients and servers operate in either client/server or symmetric modes. Symmetric modes are most often used between two or more servers operating as a mutually redundant group. In these modes, the servers in the group members arrange the synchronization paths for maximum performance, depending on network jitter and propagation delay. If one or more of the group members fail, the remaining members automatically reconfigure as required. Dependent clients and servers normally operate in client/server mode, in which a client or dependent server can be synchronized to a group member, but no group member can synchronize to the client or dependent server. This provides protection against malfunctions or protocol attacks.</p>
- <p>Servers that provide synchronization to a sizeable population of clients normally operate as a group of three or more mutually redundant servers, each operating with three or more stratum-one or stratum-two servers in client-server modes, as well as all other members of the group in symmetric modes. This provides protection against malfunctions in which one or more servers fail to operate or provide incorrect time. The NTP algorithms have been specifically engineered to resist attacks where some fraction of the configured synchronization sources accidently or purposely provide incorrect time. In these cases a special voting procedure is used to identify spurious sources and discard their data.</p>
- <h4>Configuring Your Subnet</h4>
- At startup time the <tt>ntpd</tt> daemon running on a host reads the initial configuration information from a file, usually <tt>/etc/ntp.conf</tt>, unless a different name has been specified at compile time. Putting something in this file which will enable the host to obtain time from somewhere else is usually the first big hurdle after installation of the software itself, which is described in the <a href="build.html">Building and Installing the Distribution</a> page. At its simplest, what you need to do in the configuration file is declare the servers that the daemon should poll for time synchronization. In principle, no such list is needed if some other time server operating in broadcast/multicast mode is available, which requires the client to operate in a broadcastclient mode.
- <p>In the case of a workstation operating in an enterprise network for a public or private organization, there is often an administrative department that coordinates network services, including NTP. Where available, the addresses of appropriate servers can be provided by that department. However, if this infrastructure is not available, it is necessary to explore some portion of the existing NTP subnet now running in the Internet. There are at present many thousands of time servers running NTP in the Internet, a significant number of which are willing to provide a public time- synchronization service. Some of these are listed in the list of public time servers, which can be accessed via the <a href="http://www.eecis.udel.edu/%7entp">NTP web page</a>. These data are updated on a regular basis using information provided voluntarily by various site administrators. There are other ways to explore the nearby subnet using the <tt><a href="ntptrace.html">ntptrace</a></tt> and <tt><a href="ntpdc.html">ntpdc</a></tt> programs.</p>
- <p>It is vital to carefully consider the issues of robustness and reliability when selecting the sources of synchronization. Normally, not less than three sources should be available, preferably selected to avoid common points of failure. It is usually better to choose sources which are likely to be &quot;close&quot; to you in terms of network topology, though you shouldn't worry overly about this if you are unable to determine who is close and who isn't. Normally, it is much more serious when a server becomes faulty and delivers incorrect time than when it simply stops operating, since an NTP-synchronized host normally can coast for hours or even days without its clock accumulating serious error approaching a second, for instance. Selecting at least three sources from different operating administrations, where possible, is the minimum recommended, although a lesser number could provide acceptable service with a degraded degree of robustness.</p>
- <p>Normally, it is not considered good practice for a single workstation to request synchronization from a primary (stratum-1) time server. At present, these servers provide synchronization for hundreds of clients in many cases and could, along with the network access paths, become seriously overloaded if large numbers of workstation clients requested synchronization directly. Therefore, workstations located in sparsely populated administrative domains with no local synchronization infrastructure should request synchronization from nearby stratum-2 servers instead. In most cas es the keepers of those servers in the lists of public servers provide unrestricted access without prior permission; however, in all cases it is considered polite to notify the administrator listed in the file upon commencement of regular service. In all cases the access mode and notification requirements listed in the file must be respected. Under no conditions should servers not in these lists be used without prior permission, as to do so can create severe problems in the local infrastructure, especially in cases of dial-up access to the Internet.</p>
- <p>In the case of a gateway or file server providing service to a significant number of workstations or file servers in an enterprise network it is even more important to provide multiple, redundant sources of synchronization and multiple, diversity-routed, network access paths. The preferred configuration is at least three administratively coordinated time servers providing service throughout the administrative domain including campus networks and subnetworks. Each of these should obtain service from at least two different outside sources of synchronization, preferably via different gateways and access paths. These sources should all operate at the same stratum level, which is one less than the stratum level to be used by the local time servers themselves. In addition, each of these time servers should peer with all of the other time servers in the local administrative domain at the stratum level used by the local time servers, as well as at least one (different) outside source at this level. This configuration results in the use of six outside sources at a lower stratum level (toward the primary source of synchronization, usually a radio clock), plus three outside sources at the same stratum level, for a total of nine outside sources of synchronization. While this may seem excessive, the actual load on network resources is minimal, since the interval between polling messages exchanged between peers usually ratchets back to no more than one message every 17 minutes.</p>
- <p>The stratum level to be used by the local time servers is an engineering choice. As a matter of policy, and in order to reduce the load on the primary servers, it is desirable to use the highest stratum consistent with reliable, accurate time synchronization throughout the administrative domain. In the case of enterprise networks serving hundreds or thousands of client file servers and workstations, conventional practice is to obtain service from stratum-1 primary servers listed for public access. When choosing sources away from the primary sources, the particular synchronization path in use at any time can be verified using the <tt>ntptrace</tt> program included in this distribution. It is important to avoid loops and possible common points of failure when selecting these sources. Note that, while NTP detects and rejects loops involving neighboring servers, it does not detect loops involving intervening servers. In the unlikely case that all primary sources of synchronization are lost throughout the subnet, the remaining servers on that subnet can form temporary loops and, if the loss continues for an interval of many hours, the servers will drop off the subnet and free-run with respect to their internal (disciplined) timing sources. After some period with no outside timing source (currently one day), a host will declare itself unsynchronized and provide this information to local application programs.</p>
- <p>In many cases the purchase of one or more radio clocks is justified, in which cases good engineering practice is to use the configurations described above anyway and connect the radio clock to one of the local servers. This server is then encouraged to participate in a special primary-server subnetwork in which each radio-equipped server peers with several other similarly equipped servers. In this way the radio-equipped server may provide synchronization, as well as receive synchronization, should the local or remote radio clock(s) fail or become faulty. <tt>ntpd</tt> treats attached radio clock(s) in the same way as other servers and applies the same criteria and algorithms to the time indications, so can detect when the radio fails or becomes faulty and switch to alternate sources of synchronization. It is strongly advised, and in practice for most primary servers today, to employ the authentication or access-control features of the NTP specification in order to protect against hostile intruders and possible destabilization of the time service. Using this or similar strategies, the remaining hosts in the same administrative domain can be synchronized to the three (or more) selected time servers. Assuming these servers are synchronized directly to stratum-1 sources and operate normally as stratum-2, the next level away from the primary source of synchronization, for instance various campus file servers, will operate at stratum 3 and dependent workstations at stratum 4. Engineered correctly, such a subnet will survive all but the most exotic failures or even hostile penetrations of the various, distributed timekeeping resources.</p>
- <p>The above arrangement should provide very good, robust time service with a minimum of traffic to distant servers and with manageable loads on the local servers. While it is theoretically possible to extend the synchronization subnet to even higher strata, this is seldom justified and can make the maintenance of configuration files unmanageable. Serving time to a higher stratum peer is very inexpensive in terms of the load on the lower stratum server if the latter is located on the same concatenated LAN. When justified by the accuracy expectations, NTP can be operated in broadcast and multicast modes, so that clients need only listen for periodic broadcasts and do not need to send anything.</p>
- <p>When planning your network you might, beyond this, keep in mind a few generic don'ts, in particular:</p>
- <ul>
- <li>Don't synchronize a local time server to another peer at the same stratum, unless the latter is receiving time from lower stratum sources the former doesn't talk to directly. This minimizes the occurrence of common points of failure, but does not eliminate them in cases where the usual chain of associations to the primary sources of synchronization are disrupted due to failures.
- <li style="list-style: none"><br>
- <li>Don't configure peer associations with higher stratum servers. Let the higher strata configure lower stratum servers, but not the reverse. This greatly simplifies configuration file maintenance, since there is usually much greater configuration churn in the high stratum clients such as personal workstations.
- <li style="list-style: none"><br>
- <li>Don't synchronize more than one time server in a particular administrative domain to the same time server outside that domain. Such a practice invites common points of failure, as well as raises the possibility of massive abuse, should the configuration file be automatically distributed do a large number of clients.
- </ul>
- There are many useful exceptions to these rules. When in doubt, however, follow them.
- <h4>Configuring Your Server or Client</h4>
- <p>As mentioned previously, the configuration file is usually called /etc/ntp.conf. This is an ASCII file conforming to the usual comment and whitespace conventions. A working configuration file might look like (in this and other examples, do not copy this directly):</p>
- <pre>
+ <body>
+ <h3>Notes on setting up a NTP subnet</h3>
+ <img src="pic/tonea.gif" alt="gif" align="left">From NBS Special Publication 432 (out of print)
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:44</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <hr>
+ <h4>Introduction</h4>
+ <p>This document is a collection of notes concerning the use of ntpd and related programs, and on coping with the Network Time Protocol (NTP) in general. It is a major rewrite and update of an earlier document written by Dennis Ferguson of the University of Toronto and includes many changes and additions resulting from the NTP Version 3 specification and new Version 4 implementation features. It supersedes earlier documents, which should no longer be used for new configurations.</p>
+ <p><tt>ntpd</tt> includes a complete implementation of the NTP Version 3 specification, as defined in:</p>
+ <ul>
+ <li>Mills, D.L. Network Time Protocol (Version 3) specification, implementation and analysis. Network Working Group Report RFC-1305, University of Delaware, March 1992, 113 pp. Abstract: <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305a.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305a.pdf">PDF</a>, Body: <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305b.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305b.pdf">PDF</a>, Appendices: <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305c.ps">PostScript</a> | <a href="http://www.eecis.udel.edu/%7emills/database/rfc/rfc1305/rfc1305c.pdf">PDF</a>
+ </ul>
+ <p>Additional features have are described for <a href="release.html">NTP Version 4 Release Notes</a>. It also retains compatibility with both NTP Version 2, as defined in RFC-1119, and NTP Version 1, as defined in RFC-1059, although this compatibility is sometimes strained and only semiautomatic. In order to support in principle the ultimate precision of about 232 picoseconds in the NTP specification, <tt>ntpd</tt> uses NTP timestamp format for external communication and double precision floating point arithmetic internally. <tt>ntpd</tt> fully implements NTP Versions 2 and 3 authentication and in addition Version 4 autokey. It supports the NTP mode-6 control message facility along with a private mode-7 control- message facility used to remotely reconfigure the system and monitor a considerable amount of internal detail. As extensions to the specification, a flexible address-and-mask restriction facility has been included.</p>
+ <p>The code is biased towards the needs of a busy time server with numerous, often hundreds, of clients and other servers. Tables are hashed to allow efficient handling of many associations, though at the expense of additional overhead when the number of associations is small. Many fancy features have been included to permit efficient management and monitoring of a busy primary server, features which are probably excess baggage for a high stratum client. In such cases, a stripped-down version of the protocol, the Simple Network Time Protocol (SNTP) can be used. SNTP and NTP servers and clients can interwork in most situations, as described in: Mills, D.L. Simple Network Time Protocol (SNTP). Network Working Group Report RFC-2030, University of Delaware, October 1996, 14 pp. <a href="http://www.eecis.udel.edu/%7emills/database/rfc2030.txt">(ASCII)</a>.</p>
+ <p>The code was written with near demonic attention to details which can affect precision and as a consequence should be able to make good use of high performance, special purpose hardware such as precision oscillators and radio clocks. The present code supports a number of radio clocks, including those for the WWV, CHU, WWVB, MSF, DCF77, GOES and GPS radio and satellite time services and USNO, ACTS and PTB modem time services. It also supports the IRIG-B and IRIG-E signal format connected via an audio codec. The server methodically avoids the use of Unix-specific library routines where possible by implementing local versions, in order to aid in porting the code to perverse Unix and non-Unix platforms.</p>
+ <p>While this implementation conforms in most respects to the NTP Version 3 specification RFC-1305, a number of improvements have been made which are described in the conformance statement in the <a href="http://www.eecis.udel.edu/%7emills/biblio.html">NTP Protocol Conformance Statement</a> page. It has been specifically tuned to achieve the highest accuracy possible on whatever hardware and operating-system platform is available. In general, its precision and stability are limited only by the characteristics of the onboard clock source used by the hardware and operating system, usually an uncompensated crystal oscillator. On modern RISC-based processors connected directly to radio clocks via serial-asynchronous interfaces, the accuracy is usually limited by the radio clock and interface to the order of a millisecond or less. The code includes special features to support a pulse-per-second (PPS) signal and/or an IRIG-B signal generated by some radio clocks. When used in conjunction with a suitable hardware level converter, the accuracy can be improved to a few tens of microseconds. Further improvement is possible using an outboard, stabilized frequency source, in which the accuracy and stability are limited only by the characteristics of that source.</p>
+ <p>The NTP Version 4 distribution includes, in addition to the daemon itself (<tt><a href="ntpd.html">ntpd</a></tt>), several utility programs, including two remote-monitoring programs (<a href="ntpq.html"><tt>ntpq</tt></a>, <tt><a href="ntpdc.html">ntpdc</a></tt>), a remote clock-setting program similar to the Unix rdate program (<tt>ntpdate</tt>), a traceback utility useful to discover suitable synchronization sources (<tt>ntptrace</tt>), and various programs used to configure the local platform and calibrate the intrinsic errors. NTP has been ported to a large number of platforms, including most RISC and CISC workstations and mainframes manufactured today. Example configuration files for many models of these machines are included in the distribution. While in most cases the standard version of the implementation runs with no hardware or operating system modifications, not all features of the distribution are available on all platforms. For instance, a special feature allowing Sun workstations to achieve accuracies in the order of 100 microseconds requires some minor changes and additions to the kernel and input/output support.</p>
+ <p>There are, however, several drawbacks to all of this. <tt>ntpd</tt> is quite fat. This is rotten if your intended platform for the daemon is memory limited. <tt>ntpd</tt> uses <tt>SIGIO</tt> for all input, a facility which appears to not enjoy universal support and whose use seems to exercise the parts of your vendors' kernels which are most likely to have been done poorly. The code is unforgiving in the face of kernel problems which affect performance, and generally requires that you repair the problems in order to achieve acceptable performance. The code has a distinctly experimental flavour and contains features which could charitably be termed failed experiments, but which have not been completely hacked out. Much was learned from the addition of support for a variety of radio clocks, with the result that some radio clock drivers could use some rewriting.</p>
+ <h4>How NTP Works</h4>
+ <p>The approach used by NTP to achieve reliable time synchronization from a set of possibly unreliable remote time servers is somewhat different than other protocols. In particular, NTP does not attempt to synchronize clocks to each other. Rather, each server attempts to synchronize to Universal Coordinated Time (UTC) using the best available source and available transmission paths to that source. This is a fine point which is worth understanding. A group of NTP-synchronized clocks may be close to each other in time, but this is not a consequence of the clocks in the group having synchronized to each other, but rather because each clock has synchronized closely to UTC via the best source it has access to. As such, trying to synchronize a set of clocks to a set of servers whose time is not in mutual agreement may not result in any sort of useful synchronization of the clocks, even if you don't care about UTC. However, in networks isolated from UTC sources, provisions can made to nominate one of them as a phantom UTC source.</p>
+ <p>NTP operates on the premise that there is one true standard time, and that if several servers which claim synchronization to standard time disagree about what that time is, then one or more of them must be broken. There is no attempt to resolve differences more gracefully since the premise is that substantial differences cannot exist. In essence, NTP expects that the time being distributed from the root of the synchronization subnet will be derived from some external source of UTC (e.g., a radio clock). This makes it somewhat inconvenient (though by no means impossible) to synchronize hosts together without a reliable source of UTC to synchronize them to. If your network is isolated and you cannot access other people's servers across the Internet, a radio clock may make a good investment.</p>
+ <p>Time is distributed through a hierarchy of NTP servers, with each server adopting a <i>stratum</i> which indicates how far away from an external source of UTC it is operating at. Stratum-1 servers, which are at the top of the pile (or bottom, depending on your point of view), have access to some external time source, usually a radio clock synchronized to time signal broadcasts from radio stations which explicitly provide a standard time service. A stratum-2 server is one which is currently obtaining time from a stratum-1 server, a stratum-3 server gets its time from a stratum-2 server, and so on. To avoid long lived synchronization loops the number of strata is limited to 15.</p>
+ <p>Each client in the synchronization subnet (which may also be a server for other, higher stratum clients) chooses exactly one of the available servers to synchronize to, usually from among the lowest stratum servers it has access to. This is, however, not always an optimal configuration, for indeed NTP operates under another premise as well, that each server's time should be viewed with a certain amount of distrust. NTP really prefers to have access to several sources of lower stratum time (at least three) since it can then apply an agreement algorithm to detect insanity on the part of any one of these. Normally, when all servers are in agreement, NTP will choose the best of these, where &quot;best&quot; is defined in terms of lowest stratum, closest (in terms of network delay) and claimed precision, along with several other considerations. The implication is that, while one should aim to provide each client with three or more sources of lower stratum time, several of these will only be providing backup service and may be of lesser quality in terms of network delay and stratum (i.e., a same-stratum peer which receives time from lower stratum sources the local server doesn't access directly can also provide good backup service).</p>
+ <p>Finally, there is the issue of association modes. There are a number of modes in which NTP servers can associate with each other, with the mode of each server in the pair indicating the behaviour the other server can expect from it. In particular, when configuring a server to obtain time from other servers, there is a choice of two modes which may be used. Configuring an association in symmetric-active mode (usually indicated by a <tt>peer</tt> declaration in the configuration file) indicates to the remote server that one wishes to obtain time from the remote server and that one is also willing to supply time to the remote server if need be. This mode is appropriate in configurations involving a number of redundant time servers interconnected via diverse network paths, which is presently the case for most stratum-1 and stratum-2 servers on the Internet today. Configuring an association in client mode (usually indicated by a <tt>server</tt> declaration in the configuration file) indicates that one wishes to obtain time from the remote server, but that one is not willing to provide time to the remote server. This mode is appropriate for file-server and workstation clients that do not provide synchronization to other local clients. Client mode is also useful for boot-date-setting programs and the like, which really have no time to provide and which don't retain state about associations over the longer term.</p>
+ <p>Where the requirements in accuracy and reliability are modest, clients can be configured to use broadcast and/or multicast modes. These modes are not normally utilized by servers with dependent clients. The advantage of these modes is that clients do not need to be configured for a specific server, so that all clients operating can use the same configuration file. Broadcast mode requires a broadcast server on the same subnet, while multicast mode requires support for IP multicast on the client machine, as well as connectivity via the MBONE to a multicast server. Since broadcast messages are not propagated by routers, only those broadcast servers on the same subnet will be used. There is at present no way to select which of possibly many multicast servers will be used, since all operate on the same group address.</p>
+ <p>Where the maximum accuracy and reliability provided by NTP are needed, clients and servers operate in either client/server or symmetric modes. Symmetric modes are most often used between two or more servers operating as a mutually redundant group. In these modes, the servers in the group members arrange the synchronization paths for maximum performance, depending on network jitter and propagation delay. If one or more of the group members fail, the remaining members automatically reconfigure as required. Dependent clients and servers normally operate in client/server mode, in which a client or dependent server can be synchronized to a group member, but no group member can synchronize to the client or dependent server. This provides protection against malfunctions or protocol attacks.</p>
+ <p>Servers that provide synchronization to a sizeable population of clients normally operate as a group of three or more mutually redundant servers, each operating with three or more stratum-one or stratum-two servers in client-server modes, as well as all other members of the group in symmetric modes. This provides protection against malfunctions in which one or more servers fail to operate or provide incorrect time. The NTP algorithms have been specifically engineered to resist attacks where some fraction of the configured synchronization sources accidently or purposely provide incorrect time. In these cases a special voting procedure is used to identify spurious sources and discard their data.</p>
+ <h4>Configuring Your Subnet</h4>
+ At startup time the <tt>ntpd</tt> daemon running on a host reads the initial configuration information from a file, usually <tt>/etc/ntp.conf</tt>, unless a different name has been specified at compile time. Putting something in this file which will enable the host to obtain time from somewhere else is usually the first big hurdle after installation of the software itself, which is described in the <a href="build/build.html">Building and Installing the Distribution</a> page. At its simplest, what you need to do in the configuration file is declare the servers that the daemon should poll for time synchronization. In principle, no such list is needed if some other time server operating in broadcast/multicast mode is available, which requires the client to operate in a broadcastclient mode.
+ <p>In the case of a workstation operating in an enterprise network for a public or private organization, there is often an administrative department that coordinates network services, including NTP. Where available, the addresses of appropriate servers can be provided by that department. However, if this infrastructure is not available, it is necessary to explore some portion of the existing NTP subnet now running in the Internet. There are at present many thousands of time servers running NTP in the Internet, a significant number of which are willing to provide a public time- synchronization service. Some of these are listed in the list of public time servers, which can be accessed via the <a href="http://www.eecis.udel.edu/%7entp">NTP web page</a>. These data are updated on a regular basis using information provided voluntarily by various site administrators. There are other ways to explore the nearby subnet using the <tt><a href="ntptrace.html">ntptrace</a></tt> and <tt><a href="ntpdc.html">ntpdc</a></tt> programs.</p>
+ <p>It is vital to carefully consider the issues of robustness and reliability when selecting the sources of synchronization. Normally, not less than three sources should be available, preferably selected to avoid common points of failure. It is usually better to choose sources which are likely to be &quot;close&quot; to you in terms of network topology, though you shouldn't worry overly about this if you are unable to determine who is close and who isn't. Normally, it is much more serious when a server becomes faulty and delivers incorrect time than when it simply stops operating, since an NTP-synchronized host normally can coast for hours or even days without its clock accumulating serious error approaching a second, for instance. Selecting at least three sources from different operating administrations, where possible, is the minimum recommended, although a lesser number could provide acceptable service with a degraded degree of robustness.</p>
+ <p>Normally, it is not considered good practice for a single workstation to request synchronization from a primary (stratum-1) time server. At present, these servers provide synchronization for hundreds of clients in many cases and could, along with the network access paths, become seriously overloaded if large numbers of workstation clients requested synchronization directly. Therefore, workstations located in sparsely populated administrative domains with no local synchronization infrastructure should request synchronization from nearby stratum-2 servers instead. In most cases the keepers of those servers in the lists of public servers provide unrestricted access without prior permission; however, in all cases it is considered polite to notify the administrator listed in the file upon commencement of regular service. In all cases the access mode and notification requirements listed in the file must be respected. Under no conditions should servers not in these lists be used without prior permission, as to do so can create severe problems in the local infrastructure, especially in cases of dial-up access to the Internet.</p>
+ <p>In the case of a gateway or file server providing service to a significant number of workstations or file servers in an enterprise network it is even more important to provide multiple, redundant sources of synchronization and multiple, diversity-routed, network access paths. The preferred configuration is at least three administratively coordinated time servers providing service throughout the administrative domain including campus networks and subnetworks. Each of these should obtain service from at least two different outside sources of synchronization, preferably via different gateways and access paths. These sources should all operate at the same stratum level, which is one less than the stratum level to be used by the local time servers themselves. In addition, each of these time servers should peer with all of the other time servers in the local administrative domain at the stratum level used by the local time servers, as well as at least one (different) outside source at this level. This configuration results in the use of six outside sources at a lower stratum level (toward the primary source of synchronization, usually a radio clock), plus three outside sources at the same stratum level, for a total of nine outside sources of synchronization. While this may seem excessive, the actual load on network resources is minimal, since the interval between polling messages exchanged between peers usually ratchets back to no more than one message every 17 minutes.</p>
+ <p>The stratum level to be used by the local time servers is an engineering choice. As a matter of policy, and in order to reduce the load on the primary servers, it is desirable to use the highest stratum consistent with reliable, accurate time synchronization throughout the administrative domain. In the case of enterprise networks serving hundreds or thousands of client file servers and workstations, conventional practice is to obtain service from stratum-1 primary servers listed for public access. When choosing sources away from the primary sources, the particular synchronization path in use at any time can be verified using the <tt>ntptrace</tt> program included in this distribution. It is important to avoid loops and possible common points of failure when selecting these sources. Note that, while NTP detects and rejects loops involving neighboring servers, it does not detect loops involving intervening servers. In the unlikely case that all primary sources of synchronization are lost throughout the subnet, the remaining servers on that subnet can form temporary loops and, if the loss continues for an interval of many hours, the servers will drop off the subnet and free-run with respect to their internal (disciplined) timing sources. After some period with no outside timing source (currently one day), a host will declare itself unsynchronized and provide this information to local application programs.</p>
+ <p>In many cases the purchase of one or more radio clocks is justified, in which cases good engineering practice is to use the configurations described above anyway and connect the radio clock to one of the local servers. This server is then encouraged to participate in a special primary-server subnetwork in which each radio-equipped server peers with several other similarly equipped servers. In this way the radio-equipped server may provide synchronization, as well as receive synchronization, should the local or remote radio clock(s) fail or become faulty. <tt>ntpd</tt> treats attached radio clock(s) in the same way as other servers and applies the same criteria and algorithms to the time indications, so can detect when the radio fails or becomes faulty and switch to alternate sources of synchronization. It is strongly advised, and in practice for most primary servers today, to employ the authentication or access-control features of the NTP specification in order to protect against hostile intruders and possible destabilization of the time service. Using this or similar strategies, the remaining hosts in the same administrative domain can be synchronized to the three (or more) selected time servers. Assuming these servers are synchronized directly to stratum-1 sources and operate normally as stratum-2, the next level away from the primary source of synchronization, for instance various campus file servers, will operate at stratum 3 and dependent workstations at stratum 4. Engineered correctly, such a subnet will survive all but the most exotic failures or even hostile penetrations of the various, distributed timekeeping resources.</p>
+ <p>The above arrangement should provide very good, robust time service with a minimum of traffic to distant servers and with manageable loads on the local servers. While it is theoretically possible to extend the synchronization subnet to even higher strata, this is seldom justified and can make the maintenance of configuration files unmanageable. Serving time to a higher stratum peer is very inexpensive in terms of the load on the lower stratum server if the latter is located on the same concatenated LAN. When justified by the accuracy expectations, NTP can be operated in broadcast and multicast modes, so that clients need only listen for periodic broadcasts and do not need to send anything.</p>
+ <p>When planning your network you might, beyond this, keep in mind a few generic don'ts, in particular:</p>
+ <ul>
+ <li>Don't synchronize a local time server to another peer at the same stratum, unless the latter is receiving time from lower stratum sources the former doesn't talk to directly. This minimizes the occurrence of common points of failure, but does not eliminate them in cases where the usual chain of associations to the primary sources of synchronization are disrupted due to failures.
+ <li style="list-style: none"><br>
+ <li>Don't configure peer associations with higher stratum servers. Let the higher strata configure lower stratum servers, but not the reverse. This greatly simplifies configuration file maintenance, since there is usually much greater configuration churn in the high stratum clients such as personal workstations.
+ <li style="list-style: none"><br>
+ <li>Don't synchronize more than one time server in a particular administrative domain to the same time server outside that domain. Such a practice invites common points of failure, as well as raises the possibility of massive abuse, should the configuration file be automatically distributed do a large number of clients.
+ </ul>
+ There are many useful exceptions to these rules. When in doubt, however, follow them.
+ <h4>Configuring Your Server or Client</h4>
+ <p>As mentioned previously, the configuration file is usually called /etc/ntp.conf. This is an ASCII file conforming to the usual comment and whitespace conventions. A working configuration file might look like (in this and other examples, do not copy this directly):</p>
+ <pre>
# peer configuration for host whimsy
# (expected to operate at stratum 2)
@@ -65,21 +66,21 @@
driftfile /etc/ntp.drift
</pre>
- (Note the use of host names, although host addresses in dotted-quad notation can also be used. It is always preferable to use names rather than addresses, since over time the addresses can change, while the names seldom change.)
- <p>This particular host is expected to operate as a client at stratum 2 by virtue of the <tt>server</tt> keyword and the fact that two of the three servers declared (the first two) have radio clocks and usually run at stratum 1. The third server in the list has no radio clock, but is known to maintain associations with a number of stratum 1 peers and usually operates at stratum 2. Of particular importance with the last host is that it maintains associations with peers besides the two stratum 1 peers mentioned. This can be verified using the <tt>ntpq</tt> program mentioned above. When configured using the <tt>server</tt> keyword, this host can receive synchronization from any of the listed servers, but can never provide synchronization to them.</p>
- <p>Unless restricted using facilities described later, this host can provide synchronization to dependent clients, which do not have to be listed in the configuration file. Associations maintained for these clients are transitory and result in no persistent state in the host. These clients are normally not visible using the <tt>ntpq</tt> program included in the distribution; however, <tt>ntpd</tt> includes a monitoring feature (described later) which caches a minimal amount of client information useful for debugging administrative purposes.</p>
- <p>A time server expected to both receive synchronization from another server, as well as to provide synchronization to it, is declared using the <tt>peer</tt> keyword instead of the <tt>server</tt> keyword. In all other aspects the server operates the same in either mode and can provide synchronization to dependent clients or other peers. If a local source of UTC time is available, it is considered good engineering practice to declare time servers outside the administrative domain as <tt>peer</tt> and those inside as <tt>server</tt> in order to provide redundancy in the global Internet, while minimizing the possibility of instability within the domain itself. A time server in one domain can in principle heal another domain temporarily isolated from all other sources of synchronization. However, it is probably unwise for a casual workstation to bridge fragments of the local domain which have become temporarily isolated.</p>
- <p>Note the inclusion of a <tt>driftfile</tt> declaration. One of the things the NTP daemon does when it is first started is to compute the error in the intrinsic frequency of the clock on the computer it is running on. It usually takes about a day or so after the daemon is started to compute a good estimate of this (and it needs a good estimate to synchronize closely to its server). Once the initial value is computed, it will change only by relatively small amounts during the course of continued operation. The <tt>driftfile</tt> declaration indicates to the daemon the name of a file where it may store the current value of the frequency error so that, if the daemon is stopped and restarted, it can reinitialize itself to the previous estimate and avoid the day's worth of time it will take to recompute the frequency estimate. Since this is a desirable feature, a <tt>driftfile</tt> declaration should always be included in the configuration file.</p>
- <p>An implication in the above is that, should <tt>ntpd</tt> be stopped for some reason, the local platform time will diverge from UTC by an amount that depends on the intrinsic error of the clock oscillator and the time since last synchronized. In view of the length of time necessary to refine the frequency estimate, every effort should be made to operate the daemon on a continuous basis and minimize the intervals when for some reason it is not running.</p>
- <h4>Configuring NTP with NetInfo</h4>
- If NetInfo support is compiled into NTP, you can opt to configure ntp in your NetInfo domain. NTP will look int he NetInfo directory <tt>/locations/ntp</tt> for property/value pairs which are equivalent the the lines in the configuration file described above. Each configuration keyword may have a coresponding property in NetInfo. Each value for a given property is treated as arguments to that property, similar to a line in the configuration file.
- <p>For example, the configuration shown in the configuration file above can be duplicated in NetInfo by adding a property &quot;<tt>server</tt>&quot; with values &quot;<tt>rackety.udel.edu</tt>&quot;, &quot;<tt>umd1.umd.edu</tt>&quot;, and &quot;<tt>lilben.tn.cornell.edu</tt>&quot;; and a property &quot;<tt>driftfile</tt>&quot; with the single value &quot;<tt>/etc/ntp.drift</tt>&quot;.</p>
- <p>Values may contain multiple tokens similar to the arguments available in the configuration file. For example, to use <tt>mimsy.mil</tt> as an NTP version 1 time server, you would add a value &quot;<tt>mimsy.mil version 1</tt>&quot; to the &quot;<tt>server</tt>&quot; property.</p>
- <h4>Ntp4 Versus Previous Versions</h4>
- There are several items of note when dealing with a mixture of <tt>ntp4</tt> and previous distributions of NTP Version 2 (<tt>ntpd</tt>) and NTP Version 1 (<tt>ntp3.4</tt>). The <tt>ntp4</tt> implementation conforms to the NTP Version 3 specification RFC-1305 and, in addition, contains additional feaures documented in the <a href="release.html">Release Notes</a> page. As such, by default when no additional information is available concerning the preferences of the peer, <tt>ntpd</tt> claims to be version 4 in the packets that it sends from configured associations. The <tt>version</tt> subcommand of the <tt>server</tt>, <tt>peer</tt>, <tt>broadcast</tt> and <tt>manycastclient</tt> command can be used to change the default. In unconfigured (ephemeral) associaitons, the daemon always replies in the same version as the request.
- <p>An NTP implementation conforming to a previous version specification ordinarily discards packets from a later version. However, in most respects documented in RFC-1305, The version 2 implementation is compatible with the version 3 algorithms and protocol. The version 1 implementation contains most of the version 2 algorithms, but without important features for clock selection and robustness. Nevertheless, in most respects the NTP versions are backwards compatible. The sticky part here is that, when a previous version implementation receives a packet claiming to be from a version 4 server, it discards it without further processing. Hence there is a danger that in some situations synchronization with previous versions will fail.</p>
- <p>The trouble occurs when an previous version is to be included in an <tt>ntpd</tt> configuration file. With no further indication, <tt>ntpd</tt> will send packets claiming to be version 4 when it polls. To get around this, <tt>ntpd</tt> allows a qualifier to be added to configuration entries to indicate which version to use when polling. Hence the entries</p>
- <pre>
+ (Note the use of host names, although host addresses in dotted-quad notation can also be used. It is always preferable to use names rather than addresses, since over time the addresses can change, while the names seldom change.)
+ <p>This particular host is expected to operate as a client at stratum 2 by virtue of the <tt>server</tt> keyword and the fact that two of the three servers declared (the first two) have radio clocks and usually run at stratum 1. The third server in the list has no radio clock, but is known to maintain associations with a number of stratum 1 peers and usually operates at stratum 2. Of particular importance with the last host is that it maintains associations with peers besides the two stratum 1 peers mentioned. This can be verified using the <tt>ntpq</tt> program mentioned above. When configured using the <tt>server</tt> keyword, this host can receive synchronization from any of the listed servers, but can never provide synchronization to them.</p>
+ <p>Unless restricted using facilities described later, this host can provide synchronization to dependent clients, which do not have to be listed in the configuration file. Associations maintained for these clients are transitory and result in no persistent state in the host. These clients are normally not visible using the <tt>ntpq</tt> program included in the distribution; however, <tt>ntpd</tt> includes a monitoring feature (described later) which caches a minimal amount of client information useful for debugging administrative purposes.</p>
+ <p>A time server expected to both receive synchronization from another server, as well as to provide synchronization to it, is declared using the <tt>peer</tt> keyword instead of the <tt>server</tt> keyword. In all other aspects the server operates the same in either mode and can provide synchronization to dependent clients or other peers. If a local source of UTC time is available, it is considered good engineering practice to declare time servers outside the administrative domain as <tt>peer</tt> and those inside as <tt>server</tt> in order to provide redundancy in the global Internet, while minimizing the possibility of instability within the domain itself. A time server in one domain can in principle heal another domain temporarily isolated from all other sources of synchronization. However, it is probably unwise for a casual workstation to bridge fragments of the local domain which have become temporarily isolated.</p>
+ <p>Note the inclusion of a <tt>driftfile</tt> declaration. One of the things the NTP daemon does when it is first started is to compute the error in the intrinsic frequency of the clock on the computer it is running on. It usually takes about a day or so after the daemon is started to compute a good estimate of this (and it needs a good estimate to synchronize closely to its server). Once the initial value is computed, it will change only by relatively small amounts during the course of continued operation. The <tt>driftfile</tt> declaration indicates to the daemon the name of a file where it may store the current value of the frequency error so that, if the daemon is stopped and restarted, it can reinitialize itself to the previous estimate and avoid the day's worth of time it will take to recompute the frequency estimate. Since this is a desirable feature, a <tt>driftfile</tt> declaration should always be included in the configuration file.</p>
+ <p>An implication in the above is that, should <tt>ntpd</tt> be stopped for some reason, the local platform time will diverge from UTC by an amount that depends on the intrinsic error of the clock oscillator and the time since last synchronized. In view of the length of time necessary to refine the frequency estimate, every effort should be made to operate the daemon on a continuous basis and minimize the intervals when for some reason it is not running.</p>
+ <h4>Configuring NTP with NetInfo</h4>
+ If NetInfo support is compiled into NTP, you can opt to configure NTP in your NetInfo domain. NTP will look in the NetInfo directory <tt>/locations/ntp</tt> for property/value pairs which are equivalent to the lines in the configuration file described above. Each configuration keyword may have a corresponding property in NetInfo. Each value for a given property is treated as arguments to that property, similar to a line in the configuration file.
+ <p>For example, the configuration shown in the configuration file above can be duplicated in NetInfo by adding a property &quot;<tt>server</tt>&quot; with values &quot;<tt>rackety.udel.edu</tt>&quot;, &quot;<tt>umd1.umd.edu</tt>&quot;, and &quot;<tt>lilben.tn.cornell.edu</tt>&quot;; and a property &quot;<tt>driftfile</tt>&quot; with the single value &quot;<tt>/etc/ntp.drift</tt>&quot;.</p>
+ <p>Values may contain multiple tokens similar to the arguments available in the configuration file. For example, to use <tt>mimsy.mil</tt> as an NTP version 1 time server, you would add a value &quot;<tt>mimsy.mil version 1</tt>&quot; to the &quot;<tt>server</tt>&quot; property.</p>
+ <h4>Ntp4 Versus Previous Versions</h4>
+ There are several items of note when dealing with a mixture of <tt>ntp4</tt> and previous distributions of NTP Version 2 (<tt>ntpd</tt>) and NTP Version 1 (<tt>ntp3.4</tt>). The <tt>ntp4</tt> implementation conforms to the NTP Version 3 specification RFC-1305 and, in addition, contains additional features documented in the <a href="release.html">Release Notes</a> page. As such, by default when no additional information is available concerning the preferences of the peer, <tt>ntpd</tt> claims to be version 4 in the packets that it sends from configured associations. The <tt>version</tt> subcommand of the <tt>server</tt>, <tt>peer</tt>, <tt>broadcast</tt> and <tt>manycastclient</tt> command can be used to change the default. In unconfigured (ephemeral) associaitons, the daemon always replies in the same version as the request.
+ <p>An NTP implementation conforming to a previous version specification ordinarily discards packets from a later version. However, in most respects documented in RFC-1305, The version 2 implementation is compatible with the version 3 algorithms and protocol. The version 1 implementation contains most of the version 2 algorithms, but without important features for clock selection and robustness. Nevertheless, in most respects the NTP versions are backwards compatible. The sticky part here is that, when a previous version implementation receives a packet claiming to be from a version 4 server, it discards it without further processing. Hence there is a danger that in some situations synchronization with previous versions will fail.</p>
+ <p>The trouble occurs when an previous version is to be included in an <tt>ntpd</tt> configuration file. With no further indication, <tt>ntpd</tt> will send packets claiming to be version 4 when it polls. To get around this, <tt>ntpd</tt> allows a qualifier to be added to configuration entries to indicate which version to use when polling. Hence the entries</p>
+ <pre>
# specify NTP version 1
server mimsy.mil version
@@ -87,25 +88,25 @@
server apple.com version
2 # server running ntpd version 2
</pre>
- will cause version 1 packets to be sent to the host mimsy.mil and version 2 packets to be sent to apple.com. If you are testing <tt>ntpd</tt> against previous version servers you will need to be careful about this. Note that, as indicated in the RFC-1305 specification, there is no longer support for the original NTP specification, once called NTP Version 0.
- <h4>Traffic Monitoring</h4>
- <tt>ntpd</tt> handles peers whose stratum is higher than the stratum of the local server and polls using client mode by a fast path which minimizes the work done in responding to their polls, and normally retains no memory of these pollers. Sometimes, however, it is interesting to be able to determine who is polling the server, and how often, as well as who has been sending other types of queries to the server.
- <p>To allow this, <tt>ntpd</tt> implements a traffic monitoring facility which records the source address and a minimal amount of other information from each packet which is received by the server. This feature is normally enabled, but can be disabled if desired using the configuration file entry:</p>
- <pre>
+ will cause version 1 packets to be sent to the host mimsy.mil and version 2 packets to be sent to apple.com. If you are testing <tt>ntpd</tt> against previous version servers you will need to be careful about this. Note that, as indicated in the RFC-1305 specification, there is no longer support for the original NTP specification, once called NTP Version 0.
+ <h4>Traffic Monitoring</h4>
+ <tt>ntpd</tt> handles peers whose stratum is higher than the stratum of the local server and polls using client mode by a fast path which minimizes the work done in responding to their polls, and normally retains no memory of these pollers. Sometimes, however, it is interesting to be able to determine who is polling the server, and how often, as well as who has been sending other types of queries to the server.
+ <p>To allow this, <tt>ntpd</tt> implements a traffic monitoring facility which records the source address and a minimal amount of other information from each packet which is received by the server. This feature is normally enabled, but can be disabled if desired using the configuration file entry:</p>
+ <pre>
# disable monitoring feature
disable monitor
</pre>
- The recorded information can be displayed using the <tt>ntpdc</tt> query program, described briefly below.
- <h4>Address-and-Mask Restrictions</h4>
- The address-and-mask configuration facility supported by <tt>ntpd</tt> is quite flexible and general, but is not an integral part of the NTP Version 3 specification. The major drawback is that, while the internal implementation is very nice, the user interface is not. For this reason it is probably worth doing an example here. Briefly, the facility works as follows. There is an internal list, each entry of which holds an address, a mask and a set of flags. On receipt of a packet, the source address of the packet is compared to each entry in the list, with a match being posted when the following is true:
- <pre>
+ The recorded information can be displayed using the <tt>ntpdc</tt> query program, described briefly below.
+ <h4>Address-and-Mask Restrictions</h4>
+ The address-and-mask configuration facility supported by <tt>ntpd</tt> is quite flexible and general, but is not an integral part of the NTP Version 3 specification. The major drawback is that, while the internal implementation is very nice, the user interface is not. For this reason it is probably worth doing an example here. Briefly, the facility works as follows. There is an internal list, each entry of which holds an address, a mask and a set of flags. On receipt of a packet, the source address of the packet is compared to each entry in the list, with a match being posted when the following is true:
+ <pre>
(source_addr &amp; mask) == (address &amp;
mask)
</pre>
- A particular source address may match several list entries. In this case the entry with the most one bits in the mask is chosen. The flags associated with this entry are used to control the access.
- <p>In the current implementation the flags always add restrictions. In effect, an entry with no flags set leaves matching hosts unrestricted. An entry can be added to the internal list using a <tt>restrict</tt> declaration. The flags associated with the entry are specified textually. For example, the <tt>notrust</tt> flag indicates that hosts matching this entry, while treated normally in other respects, shouldn't be trusted to provide synchronization even if otherwise so enabled. The <tt>nomodify</tt> flag indicates that hosts matching this entry should not be allowed to do run-time configuration. There are many more flags, see the <a href="ntpd.html"><tt>ntpd</tt></a> page.</p>
- <p>Now the example. Suppose you are running the server on a host whose address is 128.100.100.7. You would like to ensure that run time reconfiguration requests can only be made from the local host and that the server only ever synchronizes to one of a pair of off-campus servers or, failing that, a time source on net 128.100. The following entries in the configuration file would implement this policy:</p>
- <pre>
+ A particular source address may match several list entries. In this case the entry with the most one bits in the mask is chosen. The flags associated with this entry are used to control the access.
+ <p>In the current implementation the flags always add restrictions. In effect, an entry with no flags set leaves matching hosts unrestricted. An entry can be added to the internal list using a <tt>restrict</tt> declaration. The flags associated with the entry are specified textually. For example, the <tt>notrust</tt> flag indicates that hosts matching this entry, while treated normally in other respects, shouldn't be trusted to provide synchronization even if otherwise so enabled. The <tt>nomodify</tt> flag indicates that hosts matching this entry should not be allowed to do run-time configuration. There are many more flags, see the <a href="ntpd.html"><tt>ntpd</tt></a> page.</p>
+ <p>Now the example. Suppose you are running the server on a host whose address is 128.100.100.7. You would like to ensure that run time reconfiguration requests can only be made from the local host and that the server only ever synchronizes to one of a pair of off-campus servers or, failing that, a time source on net 128.100. The following entries in the configuration file would implement this policy:</p>
+ <pre>
# by default, don't trust and don't allow
modifications
@@ -123,12 +124,12 @@ modifications allowed
restrict 128.100.100.7
restrict 127.0.0.1
</pre>
- The first entry is the default entry, which all hosts match and hence which provides the default set of flags. The next three entries indicate that matching hosts will only have the <tt>nomodify</tt> flag set and hence will be trusted for time. If the mask isn't specified in the <tt>restrict</tt> keyword, it defaults to 255.255.255.255. Note that the address 128.100.100.7 matches three entries in the table, the default entry (mask 0.0.0.0), the entry for net 128.100 (mask 255.255.0.0) and the entry for the host itself (mask 255.255.255.255). As expected, the flags for the host are derived from the last entry since the mask has the most bits set.
- <p>The only other thing worth mentioning is that the <tt>restrict</tt> declarations apply to packets from all hosts, including those that are configured elsewhere in the configuration file and even including your clock pseudopeer(s), if any. Hence, if you specify a default set of restrictions which you don't wish to be applied to your configured peers, you must remove those restrictions for the configured peers with additional <tt>restrict</tt> declarations mentioning each peer separately.</p>
- <h4>Authentication</h4>
- <tt>ntpd</tt> supports the optional authentication procedure specified in the NTP Version 2 and 3 specifications. Briefly, when an association runs in authenticated mode, each packet transmitted has appended to it a 32-bit key ID and a 64/128-bit cryptographic checksum of the packet contents computed using either the Data Encryption Standard (DES) or Message Digest (MD5) algorithms. Note that, while either of these algorithms provide sufficient protection from message- modification attacks, distribution of the former algorithm implementation is restricted to the U.S. and Canada, while the latter presently is free from such restrictions. For this reason, the DES algorithm is not included in the current distribution. Directions for obtaining it in other countries is in the <a href="build.html">Building and Installing the Distribution</a> page. With either algorithm the receiving peer recomputes the checksum and compares it with the one included in the packet. For this to work, the peers must share at least one encryption key and, furthermore, must associate the shared key with the same key ID.
- <p>This facility requires some minor modifications to the basic packet processing procedures, as required by the specification. These modifications are enabled by the <tt>enable auth</tt> configuration declaration, which is currently the default. In authenticated mode, peers which send unauthenticated packets, peers which send authenticated packets which the local server is unable to decrypt and peers which send authenticated packets encrypted using a key we don't trust are all marked untrustworthy and unsuitable for synchronization. Note that, while the server may know many keys (identified by many key IDs), it is possible to declare only a subset of these as trusted. This allows the server to share keys with a client which requires authenticated time and which trusts the server, but which is not trusted by the server. Also, some additional configuration language is required to specify the key ID to be used to authenticate each configured peer association. Hence, for a server running in authenticated mode, the configuration file might look similar to the following:</p>
- <pre>
+ The first entry is the default entry, which all hosts match and hence which provides the default set of flags. The next three entries indicate that matching hosts will only have the <tt>nomodify</tt> flag set and hence will be trusted for time. If the mask isn't specified in the <tt>restrict</tt> keyword, it defaults to 255.255.255.255. Note that the address 128.100.100.7 matches three entries in the table, the default entry (mask 0.0.0.0), the entry for net 128.100 (mask 255.255.0.0) and the entry for the host itself (mask 255.255.255.255). As expected, the flags for the host are derived from the last entry since the mask has the most bits set.
+ <p>The only other thing worth mentioning is that the <tt>restrict</tt> declarations apply to packets from all hosts, including those that are configured elsewhere in the configuration file and even including your clock pseudopeer(s), if any. Hence, if you specify a default set of restrictions which you don't wish to be applied to your configured peers, you must remove those restrictions for the configured peers with additional <tt>restrict</tt> declarations mentioning each peer separately.</p>
+ <h4>Authentication</h4>
+ <tt>ntpd</tt> supports the optional authentication procedure specified in the NTP Version 2 and 3 specifications. Briefly, when an association runs in authenticated mode, each packet transmitted has appended to it a 32-bit key ID and a 64/128-bit cryptographic checksum of the packet contents computed using either the Data Encryption Standard (DES) or Message Digest (MD5) algorithms. Note that, while either of these algorithms provide sufficient protection from message- modification attacks, distribution of the former algorithm implementation is restricted to the U.S. and Canada, while the latter presently is free from such restrictions. For this reason, the DES algorithm is not included in the current distribution. Directions for obtaining it in other countries is in the <a href="build/build.html">Building and Installing the Distribution</a> page. With either algorithm the receiving peer recomputes the checksum and compares it with the one included in the packet. For this to work, the peers must share at least one encryption key and, furthermore, must associate the shared key with the same key ID.
+ <p>This facility requires some minor modifications to the basic packet processing procedures, as required by the specification. These modifications are enabled by the <tt>enable auth</tt> configuration declaration, which is currently the default. In authenticated mode, peers which send unauthenticated packets, peers which send authenticated packets which the local server is unable to decrypt and peers which send authenticated packets encrypted using a key we don't trust are all marked untrustworthy and unsuitable for synchronization. Note that, while the server may know many keys (identified by many key IDs), it is possible to declare only a subset of these as trusted. This allows the server to share keys with a client which requires authenticated time and which trusts the server, but which is not trusted by the server. Also, some additional configuration language is required to specify the key ID to be used to authenticate each configured peer association. Hence, for a server running in authenticated mode, the configuration file might look similar to the following:</p>
+ <pre>
# peer configuration for 128.100.100.7
# (expected to operate at stratum 2)
# fully authenticated this time
@@ -155,14 +156,14 @@ key (6) for accessing server variables
0.000094 # authentication delay
(Sun4c/50 IPX)
</pre>
- There are a couple of previously unmentioned things in here. The <tt>keys</tt> line specifies the path to the keys file (see below and the <tt>ntpd</tt> document page for details of the file format). The <tt>trustedkey</tt> declaration identifies those keys that are known to be uncompromised; the remainder presumably represent the expired or possibly compromised keys. Both sets of keys must be declared by key identifier in the <tt>ntp.keys</tt> file described below. This provides a way to retire old keys while minimizing the frequency of delicate key-distribution procedures. The <tt>requestkey</tt> line establishes the key to be used for mode-6 control messages as specified in RFC-1305 and used by the <tt>ntpq</tt> utility program, while the <tt>controlkey</tt> line establishes the key to be used for mode-7 private control messages used by the <tt>ntpdc</tt> utility program. These keys are used to prevent unauthorized modification of daemon variables.
- <p>Ordinarily, the authentication delay; that is, the processing time taken between the freezing of a transmit timestamp and the actual transmission of the packet when authentication is enabled (i.e. more or less the time it takes for the DES or MD5 routine to encrypt a single block) is computed automatically by the daemon. If necessary, the delay can be overriden by the <tt>authdelay</tt> line, which is used as a correction for the transmit timestamp.</p>
- Additional utility programs included in the <tt>./authstuff</tt> directory can be used to generate random keys, certify implementation correctness and display sample keys. As a general rule, keys should be chosen randomly, except possibly the request and control keys, which must be entered by the user as a password.
- <p>The <tt>ntp.keys</tt> file contains the list of keys and associated key IDs the server knows about (for obvious reasons this file is better left unreadable by anyone except root). The contents of this file might look like:</p>
- <pre>
+ There are a couple of previously unmentioned things in here. The <tt>keys</tt> line specifies the path to the keys file (see below and the <tt>ntpd</tt> document page for details of the file format). The <tt>trustedkey</tt> declaration identifies those keys that are known to be uncompromised; the remainder presumably represent the expired or possibly compromised keys. Both sets of keys must be declared by key identifier in the <tt>ntp.keys</tt> file described below. This provides a way to retire old keys while minimizing the frequency of delicate key-distribution procedures. The <tt>requestkey</tt> line establishes the key to be used for mode-6 control messages as specified in RFC-1305 and used by the <tt>ntpq</tt> utility program, while the <tt>controlkey</tt> line establishes the key to be used for mode-7 private control messages used by the <tt>ntpdc</tt> utility program. These keys are used to prevent unauthorized modification of daemon variables.
+ <p>Ordinarily, the authentication delay; that is, the processing time taken between the freezing of a transmit timestamp and the actual transmission of the packet when authentication is enabled (i.e. more or less the time it takes for the DES or MD5 routine to encrypt a single block) is computed automatically by the daemon. If necessary, the delay can be overridden by the <tt>authdelay</tt> line, which is used as a correction for the transmit timestamp.</p>
+ Additional utility programs included in the <tt>./authstuff</tt> directory can be used to generate random keys, certify implementation correctness and display sample keys. As a general rule, keys should be chosen randomly, except possibly the request and control keys, which must be entered by the user as a password.
+ <p>The <tt>ntp.keys</tt> file contains the list of keys and associated key IDs the server knows about (for obvious reasons this file is better left unreadable by anyone except root). The contents of this file might look like:</p>
+ <pre>
# ntp keys file (ntp.keys)
1 N
-29233E0461ECD6AE # des key in NTP format
+29233E0461ECD6AE # DES key in NTP format
2 M
RIrop8KPPvQvYotM # md5 key as an ASCII random string
14 M
@@ -170,7 +171,7 @@ sundial
; # md5 key as an ASCII string
15 A
sundial
-; # des key as an ASCII string
+; # DES key as an ASCII string
# the following 3 keys are identical
@@ -180,16 +181,16 @@ d3e54352e5548080
10 S
a7cb86a4cba80101
</pre>
- In the keys file the first token on each line indicates the key ID, the second token the format of the key and the third the key itself. There are four key formats. An <tt>A</tt> indicates a DES key written as a 1- to-8 character string in 7-bit ASCII representation, with each character standing for a key octet (like a Unix password). An <tt>S</tt> indicates a DES key written as a hex number in the DES standard format, with the low order bit (LSB) of each octet being the (odd) parity bit. An <tt>N</tt> indicates a DES key again written as a hex number, but in NTP standard format with the high order bit of each octet being the (odd) parity bit (confusing enough?). An <tt>M</tt> indicates an MD5 key written as a 1-to-31 character ASCII string in the <tt>A</tt> format. Note that, because of the simple tokenizing routine, the characters <tt>' ', '#', '\t', '\n'</tt> and <tt>'\0'</tt> can't be used in either a DES or MD5 ASCII key. Everything else is fair game, though. Key 0 (zero) is used for special purposes and should not appear in this file.
- <p>The big trouble with the authentication facility is the keys file. It is a maintenance headache and a security problem. This should be fixed some day. Presumably, this whole bag of worms goes away if/when a generic security regime for the Internet is established. An alternative with NTP Version 4 is the autokey feature, which uses random session keys and public-key cruptography and avoids the key file entirely. While this feature is not completely finished yet, details can be found in the <a href="release.html">Release Notes</a> page.</p>
- <h4>Query Programs</h4>
- Three utility query programs are included with the distribution, <tt>ntpq</tt>, <tt>ntptrace</tt> and <tt>ntpdc</tt>. <tt>ntpq</tt> is a handy program which sends queries and receives responses using NTP standard mode-6 control messages. Since it uses the standard control protocol specified in RFC- 1305, it may be used with NTP Version 2 and Version 3 implementations for both Unix and Fuzzball, but not Version 1 implementations. It is most useful to query remote NTP implementations to assess timekeeping accuracy and expose bugs in configuration or operation.
- <p><tt>ntptrace</tt> can be used to display the current synchronization path from a selected host through possibly intervening servers to the primary source of synchronization, usually a radio clock. It works with both version 2 and version 3 servers, but not version 1.</p>
- <p><tt>ntpdc</tt> is a horrid program which uses NTP private mode-7 control messages to query local or remote servers. The format and contents of these messages are specific to this version of <tt>ntpd</tt> and some older versions. The program does allow inspection of a wide variety of internal counters and other state data, and hence does make a pretty good debugging tool, even if it is frustrating to use. The other thing of note about <tt>ntpdc</tt> is that it provides a user interface to the run time reconfiguration facility. See the respective document pages for details on the use of these programs.</p>
- <h4>Run-Time Reconfiguration</h4>
- <tt>ntpd</tt> was written specifically to allow its configuration to be fully modifiable at run time. Indeed, the only way to configure the server is at run time. The configuration file is read only after the rest of the server has been initialized into a running default-configured state. This facility was included not so much for the benefit of Unix, where it is handy but not strictly essential, but rather for dedicated platforms where the feature is more important for maintenance. Nevertheless, run time configuration works very nicely for Unix servers as well.
- <p>Nearly all of the things it is possible to configure in the configuration file may be altered via NTP mode-7 messages using the <tt>ntpdc</tt> program. Mode-6 messages may also provide some limited configuration functionality (though the only thing you can currently do with mode-6 messages is set the leap-second warning bits) and the <tt>ntpq</tt> program provides generic support for the latter. The leap bits that can be set in the <tt>leap_warning</tt> variable (up to one month ahead) and in the <tt>leap_indication</tt> variable have a slightly different encoding than the usual interpretation:</p>
- <pre>
+ In the keys file the first token on each line indicates the key ID, the second token the format of the key and the third the key itself. There are four key formats. An <tt>A</tt> indicates a DES key written as a 1- to-8 character string in 7-bit ASCII representation, with each character standing for a key octet (like a Unix password). An <tt>S</tt> indicates a DES key written as a hex number in the DES standard format, with the low order bit (LSB) of each octet being the (odd) parity bit. An <tt>N</tt> indicates a DES key again written as a hex number, but in NTP standard format with the high order bit of each octet being the (odd) parity bit (confusing enough?). An <tt>M</tt> indicates an MD5 key written as a 1-to-31 character ASCII string in the <tt>A</tt> format. Note that, because of the simple tokenizing routine, the characters <tt>' ', '#', '\t', '\n'</tt> and <tt>'\0'</tt> can't be used in either a DES or MD5 ASCII key. Everything else is fair game, though. Key 0 (zero) is used for special purposes and should not appear in this file.
+ <p>The big trouble with the authentication facility is the keys file. It is a maintenance headache and a security problem. This should be fixed some day. Presumably, this whole bag of worms goes away if/when a generic security regime for the Internet is established. An alternative with NTP Version 4 is the autokey feature, which uses random session keys and public-key cryptography and avoids the key file entirely. While this feature is not completely finished yet, details can be found in the <a href="release.html">Release Notes</a> page.</p>
+ <h4>Query Programs</h4>
+ Three utility query programs are included with the distribution, <tt>ntpq</tt>, <tt>ntptrace</tt> and <tt>ntpdc</tt>. <tt>ntpq</tt> is a handy program which sends queries and receives responses using NTP standard mode-6 control messages. Since it uses the standard control protocol specified in RFC- 1305, it may be used with NTP Version 2 and Version 3 implementations for both Unix and Fuzzball, but not Version 1 implementations. It is most useful to query remote NTP implementations to assess timekeeping accuracy and expose bugs in configuration or operation.
+ <p><tt>ntptrace</tt> can be used to display the current synchronization path from a selected host through possibly intervening servers to the primary source of synchronization, usually a radio clock. It works with both version 2 and version 3 servers, but not version 1.</p>
+ <p><tt>ntpdc</tt> is a horrid program which uses NTP private mode-7 control messages to query local or remote servers. The format and contents of these messages are specific to this version of <tt>ntpd</tt> and some older versions. The program does allow inspection of a wide variety of internal counters and other state data, and hence does make a pretty good debugging tool, even if it is frustrating to use. The other thing of note about <tt>ntpdc</tt> is that it provides a user interface to the run time reconfiguration facility. See the respective document pages for details on the use of these programs.</p>
+ <h4>Run-Time Reconfiguration</h4>
+ <tt>ntpd</tt> was written specifically to allow its configuration to be fully modifiable at run time. Indeed, the only way to configure the server is at run time. The configuration file is read only after the rest of the server has been initialized into a running default-configured state. This facility was included not so much for the benefit of Unix, where it is handy but not strictly essential, but rather for dedicated platforms where the feature is more important for maintenance. Nevertheless, run time configuration works very nicely for Unix servers as well.
+ <p>Nearly all of the things it is possible to configure in the configuration file may be altered via NTP mode-7 messages using the <tt>ntpdc</tt> program. Mode-6 messages may also provide some limited configuration functionality (though the only thing you can currently do with mode-6 messages is set the leap-second warning bits) and the <tt>ntpq</tt> program provides generic support for the latter. The leap bits that can be set in the <tt>leap_warning</tt> variable (up to one month ahead) and in the <tt>leap_indication</tt> variable have a slightly different encoding than the usual interpretation:</p>
+ <pre>
Value Action
@@ -210,8 +211,8 @@ p; Leap information from the synchronization source
is
ignored (thus LEAP_NOWARNING is passed on)
</pre>
- Mode-6 and mode-7 messages which would modify the configuration of the server are required to be authenticated using standard NTP authentication. To enable the facilities one must, in addition to specifying the location of a keys file, indicate in the configuration file the key IDs to be used for authenticating reconfiguration commands. Hence the following fragment might be added to a configuration file to enable the mode-6 (ntpq) and mode-7 (ntpdc) facilities in the daemon:
- <pre>
+ Mode-6 and mode-7 messages which would modify the configuration of the server are required to be authenticated using standard NTP authentication. To enable the facilities one must, in addition to specifying the location of a keys file, indicate in the configuration file the key IDs to be used for authenticating reconfiguration commands. Hence the following fragment might be added to a configuration file to enable the mode-6 (ntpq) and mode-7 (ntpdc) facilities in the daemon:
+ <pre>
# specify mode-6 and mode-7 trusted keys
requestkey 65535 # for mode-7
@@ -219,61 +220,61 @@ requests
controlkey 65534 # for mode-6
requests
</pre>
- If the <tt>requestkey</tt> and/or the <tt>controlkey</tt> configuration declarations are omitted from the configuration file, the corresponding run-time reconfiguration facility is disabled.
- <p>The query programs require the user to specify a key ID and a key to use for authenticating requests to be sent. The key ID provided should be the same as the one mentioned in the configuration file, while the key should match that corresponding to the key ID in the keys file. As the query programs prompt for the key as a password, it is useful to make the request and control authentication keys typeable (in ASCII format) from the keyboard.</p>
- <h4>Name Resolution</h4>
- <tt>ntpd</tt> includes the capability to specify host names requiring resolution in <tt>peer</tt> and <tt>server</tt> declarations in the configuration file. However, in some outposts of the Internet, name resolution is unreliable and the interface to the Unix resolver routines is synchronous. The hangups and delays resulting from name-resolver clanking can be unacceptable once the NTP server is running (and remember it is up and running before the configuration file is read). However, it is advantageous to resolve time server names, since their addresses are occasionally changed.
- <p>In order to prevent configuration delays due to the name resolver, the daemon runs the name resolution process in parallel with the main daemon code. When the daemon comes across a <tt>peer</tt> or <tt>server</tt> entry with a non-numeric host address, it records the relevant information in a temporary file and continues on. When the end of the configuration file has been reached and one or more entries requiring name resolution have been found, the server runs the name resolver from the temporary file. The server then continues on normally but with the offending peers/servers omitted from its configuration.</p>
- <p>As each name is resolved, it configures the associated entry into the server using the same mode-7 run time reconfiguration facility that <tt>ntpdc</tt> uses. If temporary resolver failures occur, the resolver will periodically retry the requests until a definite response is received. The program will continue to run until all entries have been resolved.</p>
- <h4>Dealing with Frequency Tolerance Violations (<tt>tickadj</tt> and Friends)</h4>
- The NTP Version 3 specification RFC-1305 calls for a maximum oscillator frequency tolerance of +-100 parts-per-million (PPM), which is representative of those components suitable for use in relatively inexpensive workstation platforms. For those platforms meeting this tolerance, NTP will automatically compensate for the frequency errors of the individual oscillator and no further adjustments are required, either to the configuration file or to various kernel variables. For the NTP Version 4 release, this tolerance has been increased to +-500 PPM.
- <p>However, in the case of certain notorious platforms, in particular Sun 4.1.1 systems, the performance can be improved by adjusting the values of certain kernel variables; in particular, <tt>tick</tt> and <tt>tickadj</tt>. The variable <tt>tick</tt> is the increment in microseconds added to the system time on each interval- timer interrupt, while the variable <tt>tickadj</tt> is used by the time adjustment code as a slew rate, in microseconds per tick. When the time is being adjusted via a call to the system routine <tt>adjtime()</tt>, the kernel increases or reduces tick by <tt>tickadj</tt> microseconds per tick until the specified adjustment has been completed. Unfortunately, in most Unix implementations the tick increment must be either zero or plus/minus exactly <tt>tickadj</tt> microseconds, meaning that adjustments are truncated to be an integral multiple of <tt>tickadj</tt> (this latter behaviour is a misfeature, and is the only reason the <tt>tickadj</tt> code needs to concern itself with the internal implementation of <tt>tickadj</tt> at all). In addition, the stock Unix implementation considers it an error to request another adjustment before a prior one has completed.</p>
- <p>Thus, to make very sure it avoids problems related to the roundoff, the <tt>tickadj</tt> program can be used to adjust the values of <tt>tick</tt> and <tt>tickadj</tt>. This ensures that all adjustments given to <tt>adjtime()</tt> are an even multiple of <tt>tickadj</tt> microseconds and computes the largest adjustment that can be completed in the adjustment interval (using both the value of <tt>tick</tt> and the value of <tt>tickadj</tt>) so it can avoid exceeding this limit. It is important to note that not all systems will allow inspection or modification of kernel variables other than at system build time. It is also important to know that, with the current NTP tolerances, it is rarely necessary to make these changes, but in many cases they will substantially improve the general accurace of the time service.</p>
- <p>Unfortunately, the value of <tt>tickadj</tt> set by default is almost always too large for <tt>ntpd</tt>. NTP operates by continuously making small adjustments to the clock, usually at one-second intervals. If <tt>tickadj</tt> is set too large, the adjustments will disappear in the roundoff; while, if <tt>tickadj</tt> is too small, NTP will have difficulty if it needs to make an occasional large adjustment. While the daemon itself will read the kernel's values of these variables, it will not change the values, even if they are unsuitable. You must do this yourself before the daemon is started using the <tt>tickadj</tt> program included in the <tt>./util</tt> directory of the distribution. Note that the latter program will also compute an optimal value of <tt>tickadj</tt> for NTP use based on the kernel's value of <tt>tick</tt>.</p>
- <p>The <tt>tickadj</tt> program can reset several other kernel variables if asked. It can change the value of <tt>tick</tt> if asked. This is handy to compensate for kernel bugs which cause the clock to run with a very large frequency error, as with SunOS 4.1.1 systems. It can also be used to set the value of the kernel <tt>dosynctodr</tt> variable to zero. This variable controls whether to synchronize the system clock to the time-of-day clock, something you really don't want to be happen when <tt>ntpd</tt> is trying to keep it under control. In some systems, such as recent Sun Solaris kernels, the <tt>dosynctodr</tt> variable is the only one that can be changed by the <tt>tickadj</tt> program. In this and other modern kernels, it is not necessary to change the other variables in any case.</p>
- <p>We have a report that says starting with Solaris 2.6 we should leave <i>dosynctodr</i> alone.</p>
- <p>In order to maintain reasonable correctness bounds, as well as reasonably good accuracy with acceptable polling intervals, <tt>ntpd</tt> will complain if the frequency error is greater than 500 PPM. For machines with a value of <tt>tick</tt> in the 10-ms range, a change of one in the value of <tt>tick</tt> will change the frequency by about 100 PPM. In order to determine the value of <tt>tick</tt> for a particular CPU, disconnect the machine from all sources of time (<tt>dosynctodr</tt> = 0) and record its actual time compared to an outside source (eyeball-and-wristwatch will do) over a day or more. Multiply the time change over the day by 0.116 and add or subtract the result to tick, depending on whether the CPU is fast or slow. An example call to <tt>tickadj</tt> useful on SunOS 4.1.1 is:</p>
- <pre>
+ If the <tt>requestkey</tt> and/or the <tt>controlkey</tt> configuration declarations are omitted from the configuration file, the corresponding run-time reconfiguration facility is disabled.
+ <p>The query programs require the user to specify a key ID and a key to use for authenticating requests to be sent. The key ID provided should be the same as the one mentioned in the configuration file, while the key should match that corresponding to the key ID in the keys file. As the query programs prompt for the key as a password, it is useful to make the request and control authentication keys typeable (in ASCII format) from the keyboard.</p>
+ <h4>Name Resolution</h4>
+ <tt>ntpd</tt> includes the capability to specify host names requiring resolution in <tt>peer</tt> and <tt>server</tt> declarations in the configuration file. However, in some outposts of the Internet, name resolution is unreliable and the interface to the Unix resolver routines is synchronous. The hangups and delays resulting from name-resolver clanking can be unacceptable once the NTP server is running (and remember it is up and running before the configuration file is read). However, it is advantageous to resolve time server names, since their addresses are occasionally changed.
+ <p>In order to prevent configuration delays due to the name resolver, the daemon runs the name resolution process in parallel with the main daemon code. When the daemon comes across a <tt>peer</tt> or <tt>server</tt> entry with a non-numeric host address, it records the relevant information in a temporary file and continues on. When the end of the configuration file has been reached and one or more entries requiring name resolution have been found, the server runs the name resolver from the temporary file. The server then continues on normally but with the offending peers/servers omitted from its configuration.</p>
+ <p>As each name is resolved, it configures the associated entry into the server using the same mode-7 run time reconfiguration facility that <tt>ntpdc</tt> uses. If temporary resolver failures occur, the resolver will periodically retry the requests until a definite response is received. The program will continue to run until all entries have been resolved.</p>
+ <h4>Dealing with Frequency Tolerance Violations (<tt>tickadj</tt> and Friends)</h4>
+ The NTP Version 3 specification RFC-1305 calls for a maximum oscillator frequency tolerance of +-100 parts-per-million (PPM), which is representative of those components suitable for use in relatively inexpensive workstation platforms. For those platforms meeting this tolerance, NTP will automatically compensate for the frequency errors of the individual oscillator and no further adjustments are required, either to the configuration file or to various kernel variables. For the NTP Version 4 release, this tolerance has been increased to +-500 PPM.
+ <p>However, in the case of certain notorious platforms, in particular Sun 4.1.1 systems, the performance can be improved by adjusting the values of certain kernel variables; in particular, <tt>tick</tt> and <tt>tickadj</tt>. The variable <tt>tick</tt> is the increment in microseconds added to the system time on each interval- timer interrupt, while the variable <tt>tickadj</tt> is used by the time adjustment code as a slew rate, in microseconds per tick. When the time is being adjusted via a call to the system routine <tt>adjtime()</tt>, the kernel increases or reduces tick by <tt>tickadj</tt> microseconds per tick until the specified adjustment has been completed. Unfortunately, in most Unix implementations the tick increment must be either zero or plus/minus exactly <tt>tickadj</tt> microseconds, meaning that adjustments are truncated to be an integral multiple of <tt>tickadj</tt> (this latter behaviour is a misfeature, and is the only reason the <tt>tickadj</tt> code needs to concern itself with the internal implementation of <tt>tickadj</tt> at all). In addition, the stock Unix implementation considers it an error to request another adjustment before a prior one has completed.</p>
+ <p>Thus, to make very sure it avoids problems related to the roundoff, the <tt>tickadj</tt> program can be used to adjust the values of <tt>tick</tt> and <tt>tickadj</tt>. This ensures that all adjustments given to <tt>adjtime()</tt> are an even multiple of <tt>tickadj</tt> microseconds and computes the largest adjustment that can be completed in the adjustment interval (using both the value of <tt>tick</tt> and the value of <tt>tickadj</tt>) so it can avoid exceeding this limit. It is important to note that not all systems will allow inspection or modification of kernel variables other than at system build time. It is also important to know that, with the current NTP tolerances, it is rarely necessary to make these changes, but in many cases they will substantially improve the general accuracy of the time service.</p>
+ <p>Unfortunately, the value of <tt>tickadj</tt> set by default is almost always too large for <tt>ntpd</tt>. NTP operates by continuously making small adjustments to the clock, usually at one-second intervals. If <tt>tickadj</tt> is set too large, the adjustments will disappear in the roundoff; while, if <tt>tickadj</tt> is too small, NTP will have difficulty if it needs to make an occasional large adjustment. While the daemon itself will read the kernel's values of these variables, it will not change the values, even if they are unsuitable. You must do this yourself before the daemon is started using the <tt>tickadj</tt> program included in the <tt>./util</tt> directory of the distribution. Note that the latter program will also compute an optimal value of <tt>tickadj</tt> for NTP use based on the kernel's value of <tt>tick</tt>.</p>
+ <p>The <tt>tickadj</tt> program can reset several other kernel variables if asked. It can change the value of <tt>tick</tt> if asked. This is handy to compensate for kernel bugs which cause the clock to run with a very large frequency error, as with SunOS 4.1.1 systems. It can also be used to set the value of the kernel <tt>dosynctodr</tt> variable to zero. This variable controls whether to synchronize the system clock to the time-of-day clock, something you really don't want to be happen when <tt>ntpd</tt> is trying to keep it under control. In some systems, such as recent Sun Solaris kernels, the <tt>dosynctodr</tt> variable is the only one that can be changed by the <tt>tickadj</tt> program. In this and other modern kernels, it is not necessary to change the other variables in any case.</p>
+ <p>We have a report that says starting with Solaris 2.6 we should leave <i>dosynctodr</i> alone.</p>
+ <p>In order to maintain reasonable correctness bounds, as well as reasonably good accuracy with acceptable polling intervals, <tt>ntpd</tt> will complain if the frequency error is greater than 500 PPM. For machines with a value of <tt>tick</tt> in the 10-ms range, a change of one in the value of <tt>tick</tt> will change the frequency by about 100 PPM. In order to determine the value of <tt>tick</tt> for a particular CPU, disconnect the machine from all sources of time (<tt>dosynctodr</tt> = 0) and record its actual time compared to an outside source (eyeball-and-wristwatch will do) over a day or more. Multiply the time change over the day by 0.116 and add or subtract the result to tick, depending on whether the CPU is fast or slow. An example call to <tt>tickadj</tt> useful on SunOS 4.1.1 is:</p>
+ <pre>
<tt>tickadj</tt> -t 9999 -a 5 -s
</pre>
- which sets tick 100 PPM fast, <tt>tickadj</tt> to 5 microseconds and turns off the clock/calendar chip fiddle. This line can be added to the <tt>rc.local</tt> configuration file to automatically set the kernel variables at boot time.
- <p>All this stuff about diddling kernel variables so the NTP daemon will work is really silly. If vendors would ship machines with clocks that kept reasonable time and would make their <tt>adjtime()</tt> system call apply the slew it is given exactly, independent of the value of <tt>tickadj</tt>, all this could go away. This is in fact the case on many current Unix systems.</p>
- <h4>Tuning Your Subnet</h4>
- There are several parameters available for tuning the NTP subnet for maximum accuracy and minimum jitter. One of these is the <tt>prefer</tt> configuration declaration described in <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> documentation page. When more than one eligible server exists, the NTP clock-selection and combining algorithms act to winnow out all except the &quot;best&quot; set of servers using several criteria based on differences between the readings of different servers and between successive readings of the same server. The result is usually a set of surviving servers that are apparently statistically equivalent in accuracy, jitter and stability. The population of survivors remaining in this set depends on the individual server characteristics measured during the selection process and may vary from time to time as the result of normal statistical variations. In LANs with high speed RISC-based time servers, the population can become somewhat unstable, with individual servers popping in and out of the surviving population, generally resulting in a regime called <i>clockhopping</i>.
- <p>When only the smallest residual jitter can be tolerated, it may be convenient to elect one of the servers at each stratum level as the preferred one using the keyword <tt>prefer</tt> on the configuration declaration for the selected server:</p>
- <pre>
+ which sets tick 100 PPM fast, <tt>tickadj</tt> to 5 microseconds and turns off the clock/calendar chip fiddle. This line can be added to the <tt>rc.local</tt> configuration file to automatically set the kernel variables at boot time.
+ <p>All this stuff about diddling kernel variables so the NTP daemon will work is really silly. If vendors would ship machines with clocks that kept reasonable time and would make their <tt>adjtime()</tt> system call apply the slew it is given exactly, independent of the value of <tt>tickadj</tt>, all this could go away. This is in fact the case on many current Unix systems.</p>
+ <h4>Tuning Your Subnet</h4>
+ There are several parameters available for tuning the NTP subnet for maximum accuracy and minimum jitter. One of these is the <tt>prefer</tt> configuration declaration described in <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> documentation page. When more than one eligible server exists, the NTP clock-selection and combining algorithms act to winnow out all except the &quot;best&quot; set of servers using several criteria based on differences between the readings of different servers and between successive readings of the same server. The result is usually a set of surviving servers that are apparently statistically equivalent in accuracy, jitter and stability. The population of survivors remaining in this set depends on the individual server characteristics measured during the selection process and may vary from time to time as the result of normal statistical variations. In LANs with high speed RISC-based time servers, the population can become somewhat unstable, with individual servers popping in and out of the surviving population, generally resulting in a regime called <i>clockhopping</i>.
+ <p>When only the smallest residual jitter can be tolerated, it may be convenient to elect one of the servers at each stratum level as the preferred one using the keyword <tt>prefer</tt> on the configuration declaration for the selected server:</p>
+ <pre>
# preferred server declaration
peer rackety.udel.edu prefer
# preferred server
</pre>
- The preferred server will always be included in the surviving population, regardless of its characteristics and as long as it survives preliminary sanity checks and validation procedures.
- <p>The most useful application of the <tt>prefer</tt> keyword is in high speed LANs equipped with precision radio clocks, such as a GPS receiver. In order to insure robustness, the hosts need to include outside peers as well as the GPS-equipped server; however, as long as that server is running, the synchronization preference should be that server. The keyword should normally be used in all cases in order to prefer an attached radio clock. It is probably inadvisable to use this keyword for peers outside the LAN, since it interferes with the carefully crafted judgement of the selection and combining algorithms.</p>
- <h4>Provisions for Leap Seconds and Accuracy Metrics</h4>
- <tt>ntpd</tt> understands leap seconds and will attempt to take appropriate action when one occurs. In principle, every host running ntpd will insert a leap second in the local timescale in precise synchronization with UTC. This requires that the leap-warning bits be activated some time prior to the occurrence of a leap second at the primary (stratum 1) servers. Subsequently, these bits are propagated throughout the subnet depending on these servers by the NTP protocol itself and automatically implemented by <tt>ntpd</tt> and the time- conversion routines of each host. The implementation is independent of the idiosyncrasies of the particular radio clock, which vary widely among the various devices, as long as the idiosyncratic behavior does not last for more than about 20 minutes following the leap. Provisions are included to modify the behavior in cases where this cannot be guaranteed. While provisions for leap seconds have been carefully crafted so that correct timekeeping immediately before, during and after the occurrence of a leap second is scrupulously correct, stock Unix systems are mostly inept in responding to the available information. This caveat goes also for the maximum-error and statistical-error bounds carefully calculated for all clients and servers, which could be very useful for application programs needing to calibrate the delays and offsets to achieve a near- simultaneous commit procedure, for example. While this information is maintained in the <tt>ntpd</tt> data structures, there is at present no way for application programs to access it. This may be a topic for further development.
- <h4>Clock Support Overview</h4>
- <tt>ntpd</tt> was designed to support radio (and other external) clocks and does some parts of this function with utmost care. Clocks are treated by the protocol as ordinary NTP peers, even to the point of referring to them with an (invalid) IP host address. Clock addresses are of the form 127.127.<i>t.u</i>, where <i>t</i> specifies the particular type of clock (i.e., refers to a particular clock driver) and <i>u</i> is a unit number whose interpretation is clock-driver dependent. This is analogous to the use of major and minor device numbers by Unix and permits multiple instantiations of clocks of the same type on the same server, should such magnificent redundancy be required.
- <p>Because clocks look much like peers, both configuration file syntax and run time reconfiguration commands can be used to control clocks in the same way as ordinary peers. Clocks are configured via <tt>server</tt> declarations in the configuration file, can be started and stopped using ntpdc and are subject to address-and-mask restrictions much like a normal peer, should this stretch of imagination ever be useful. As a concession to the need to sometimes transmit additional information to clock drivers, an additional configuration file is available: the <tt>fudge</tt> statement. This enables one to specify the values of two time quantities, two integral values and two flags, the use of which is dependent on the particular clock driver. For example, to configure a PST radio clock which can be accessed through the serial device <tt>/dev/pst1</tt>, with propagation delays to WWV and WWVH of 7.5 and 26.5 milliseconds, respectively, on a machine with an imprecise system clock and with the driver set to disbelieve the radio clock once it has gone 30 minutes without an update, one might use the following configuration file entries:</p>
- <pre>
+ The preferred server will always be included in the surviving population, regardless of its characteristics and as long as it survives preliminary sanity checks and validation procedures.
+ <p>The most useful application of the <tt>prefer</tt> keyword is in high speed LANs equipped with precision radio clocks, such as a GPS receiver. In order to insure robustness, the hosts need to include outside peers as well as the GPS-equipped server; however, as long as that server is running, the synchronization preference should be that server. The keyword should normally be used in all cases in order to prefer an attached radio clock. It is probably inadvisable to use this keyword for peers outside the LAN, since it interferes with the carefully crafted judgement of the selection and combining algorithms.</p>
+ <h4>Provisions for Leap Seconds and Accuracy Metrics</h4>
+ <tt>ntpd</tt> understands leap seconds and will attempt to take appropriate action when one occurs. In principle, every host running ntpd will insert a leap second in the local timescale in precise synchronization with UTC. This requires that the leap-warning bits be activated some time prior to the occurrence of a leap second at the primary (stratum 1) servers. Subsequently, these bits are propagated throughout the subnet depending on these servers by the NTP protocol itself and automatically implemented by <tt>ntpd</tt> and the time- conversion routines of each host. The implementation is independent of the idiosyncrasies of the particular radio clock, which vary widely among the various devices, as long as the idiosyncratic behavior does not last for more than about 20 minutes following the leap. Provisions are included to modify the behavior in cases where this cannot be guaranteed. While provisions for leap seconds have been carefully crafted so that correct timekeeping immediately before, during and after the occurrence of a leap second is scrupulously correct, stock Unix systems are mostly inept in responding to the available information. This caveat goes also for the maximum-error and statistical-error bounds carefully calculated for all clients and servers, which could be very useful for application programs needing to calibrate the delays and offsets to achieve a near- simultaneous commit procedure, for example. While this information is maintained in the <tt>ntpd</tt> data structures, there is at present no way for application programs to access it. This may be a topic for further development.
+ <h4>Clock Support Overview</h4>
+ <tt>ntpd</tt> was designed to support radio (and other external) clocks and does some parts of this function with utmost care. Clocks are treated by the protocol as ordinary NTP peers, even to the point of referring to them with an (invalid) IP host address. Clock addresses are of the form 127.127.<i>t.u</i>, where <i>t</i> specifies the particular type of clock (i.e., refers to a particular clock driver) and <i>u</i> is a unit number whose interpretation is clock-driver dependent. This is analogous to the use of major and minor device numbers by Unix and permits multiple instantiations of clocks of the same type on the same server, should such magnificent redundancy be required.
+ <p>Because clocks look much like peers, both configuration file syntax and run time reconfiguration commands can be used to control clocks in the same way as ordinary peers. Clocks are configured via <tt>server</tt> declarations in the configuration file, can be started and stopped using ntpdc and are subject to address-and-mask restrictions much like a normal peer, should this stretch of imagination ever be useful. As a concession to the need to sometimes transmit additional information to clock drivers, an additional configuration file is available: the <tt>fudge</tt> statement. This enables one to specify the values of two time quantities, two integral values and two flags, the use of which is dependent on the particular clock driver. For example, to configure a PST radio clock which can be accessed through the serial device <tt>/dev/pst1</tt>, with propagation delays to WWV and WWVH of 7.5 and 26.5 milliseconds, respectively, on a machine with an imprecise system clock and with the driver set to disbelieve the radio clock once it has gone 30 minutes without an update, one might use the following configuration file entries:</p>
+ <pre>
# radio clock fudge fiddles
server 127.127.3.1
fudge 127.127.3.1 time1 0.0075 time2 0.0265
fudge 127.127.3.1 value2 30 flag1 1
</pre>
- Additional information on the interpretation of these data with respect to various radio clock drivers is given in the <a href="refclock.html">Reference Clock Drivers</a> document page and in the individual driver documents accessible via that page.
- <h4>Towards the Ultimate Tick</h4>
- This section considers issues in providing precision time synchronization in NTP subnets which need the highest quality time available in the present technology. These issues are important in subnets supporting real-time services such as distributed multimedia conferencing and wide-area experiment control and monitoring.
- <p>In the Internet of today synchronization paths often span continents and oceans with moderate to high variations in delay due to traffic spasms. NTP is specifically designed to minimize timekeeping jitter due to delay variations using intricately crafted filtering and selection algorithms; however, in cases where these variations are as much as a second or more, the residual jitter following these algorithms may still be excessive. Sometimes, as in the case of some isolated NTP subnets where a local source of precision time is available, such as a PPS signal produced by a calibrated cesium clock, it is possible to remove the jitter and retime the local clock oscillator of the NTP server. This has turned out to be a useful feature to improve the synchronization quality of time distributed in remote places where radio clocks are not available. In these cases special features of the distribution are used together with the PPS signal to provide a jitter-free timing signal, while NTP itself is used to provide the coarse timing and resolve the seconds numbering.</p>
- <p>Most available radio clocks can provide time to an accuracy in the order of milliseconds, depending on propagation conditions, local noise levels and so forth. However, as a practical matter, all clocks can occasionally display errors significantly exceeding nominal specifications. Usually, the algorithms used by NTP for ordinary network peers, as well as radio clock peers will detect and discard these errors as discrepancies between the disciplined local clock oscillator and the decoded time message produced by the radio clock. Some radio clocks can produce a special PPS signal which can be interfaced to the server platform in a number of ways and used to substantially improve the (disciplined) clock oscillator jitter and wander characteristics by at least an order of magnitude. Using these features it is possible to achieve accuracies in the order of a few tens of microseconds with a fast RISC- based platform.</p>
- <p>There are three ways to implement PPS support, depending on the radio clock model, platform model and serial line interface. These are described in detail in the application notes mentioned in the <a href="index.html">The Network Time Protocol (NTP) Distribution</a> document page. Each of these requires circuitry to convert the TTL signal produced by most clocks to the EIA levels used by most serial interfaces. The <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page describes a device designed to do this. Besides being useful for this purpose, this device includes an inexpensive modem designed for use with the Canadian CHU time/frequency radio station.</p>
- <p>In order to select the appropriate implementation, it is important to understand the underlying PPS mechanism used by ntpd. The PPS support depends on a continuous source of PPS pulses used to calculate an offset within +-500 milliseconds relative to the local clock. The serial timecode produced by the radio or the time determined by NTP in absence of the radio is used to adjust the local clock within +-128 milliseconds of the actual time. As long as the local clock is within this interval the PPS support is used to discipline the local clock and the timecode used only to verify that the local clock is in fact within the interval. Outside this interval the PPS support is disabled and the timecode used directly to control the local clock.</p>
- <h4>Parting Shots</h4>
- There are several undocumented programs which can be useful in unusual cases. They can be found in the <tt>./clockstuff</tt> and <tt>./authstuff</tt> directories of the distribution. One of these is the <tt>propdelay</tt> program, which can compute high frequency radio propagation delays between any two points whose latitude and longitude are known. The program understands something about the phenomena which allow high frequency radio propagation to occur, and will generally provide a better estimate than a calculation based on the great circle distance. Other programs of interest include <tt>clktest</tt>, which allows one to exercise the generic clock line discipline, and <tt>chutest</tt>, which runs the basic reduction algorithms used by the daemon on data received from a serial port.&nbsp;
- <hr>
- <center>
- <img src="pic/pogo1a.gif" alt="gif"></center>
- <br>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ Additional information on the interpretation of these data with respect to various radio clock drivers is given in the <a href="refclock.html">Reference Clock Drivers</a> document page and in the individual driver documents accessible via that page.
+ <h4>Towards the Ultimate Tick</h4>
+ This section considers issues in providing precision time synchronization in NTP subnets which need the highest quality time available in the present technology. These issues are important in subnets supporting real-time services such as distributed multimedia conferencing and wide-area experiment control and monitoring.
+ <p>In the Internet of today synchronization paths often span continents and oceans with moderate to high variations in delay due to traffic spasms. NTP is specifically designed to minimize timekeeping jitter due to delay variations using intricately crafted filtering and selection algorithms; however, in cases where these variations are as much as a second or more, the residual jitter following these algorithms may still be excessive. Sometimes, as in the case of some isolated NTP subnets where a local source of precision time is available, such as a PPS signal produced by a calibrated cesium clock, it is possible to remove the jitter and retime the local clock oscillator of the NTP server. This has turned out to be a useful feature to improve the synchronization quality of time distributed in remote places where radio clocks are not available. In these cases special features of the distribution are used together with the PPS signal to provide a jitter-free timing signal, while NTP itself is used to provide the coarse timing and resolve the seconds numbering.</p>
+ <p>Most available radio clocks can provide time to an accuracy in the order of milliseconds, depending on propagation conditions, local noise levels and so forth. However, as a practical matter, all clocks can occasionally display errors significantly exceeding nominal specifications. Usually, the algorithms used by NTP for ordinary network peers, as well as radio clock peers will detect and discard these errors as discrepancies between the disciplined local clock oscillator and the decoded time message produced by the radio clock. Some radio clocks can produce a special PPS signal which can be interfaced to the server platform in a number of ways and used to substantially improve the (disciplined) clock oscillator jitter and wander characteristics by at least an order of magnitude. Using these features it is possible to achieve accuracies in the order of a few tens of microseconds with a fast RISC- based platform.</p>
+ <p>There are three ways to implement PPS support, depending on the radio clock model, platform model and serial line interface. These are described in detail in the application notes mentioned in the <a href="index.html">The Network Time Protocol (NTP) Distribution</a> document page. Each of these requires circuitry to convert the TTL signal produced by most clocks to the EIA levels used by most serial interfaces. The <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page describes a device designed to do this. Besides being useful for this purpose, this device includes an inexpensive modem designed for use with the Canadian CHU time/frequency radio station.</p>
+ <p>In order to select the appropriate implementation, it is important to understand the underlying PPS mechanism used by ntpd. The PPS support depends on a continuous source of PPS pulses used to calculate an offset within +-500 milliseconds relative to the local clock. The serial timecode produced by the radio or the time determined by NTP in absence of the radio is used to adjust the local clock within +-128 milliseconds of the actual time. As long as the local clock is within this interval the PPS support is used to discipline the local clock and the timecode used only to verify that the local clock is in fact within the interval. Outside this interval the PPS support is disabled and the timecode used directly to control the local clock.</p>
+ <h4>Parting Shots</h4>
+ There are several undocumented programs which can be useful in unusual cases. They can be found in the <tt>./clockstuff</tt> and <tt>./authstuff</tt> directories of the distribution. One of these is the <tt>propdelay</tt> program, which can compute high frequency radio propagation delays between any two points whose latitude and longitude are known. The program understands something about the phenomena which allow high frequency radio propagation to occur, and will generally provide a better estimate than a calculation based on the great circle distance. Other programs of interest include <tt>clktest</tt>, which allows one to exercise the generic clock line discipline, and <tt>chutest</tt>, which runs the basic reduction algorithms used by the daemon on data received from a serial port.&nbsp;
+ <hr>
+ <center>
+ <img src="pic/pogo1a.gif" alt="gif"></center>
+ <br>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
-</html> \ No newline at end of file
+</html>
diff --git a/contrib/ntp/html/ntp_conf.html b/contrib/ntp/html/ntp_conf.html
new file mode 100644
index 0000000..520ce45
--- /dev/null
+++ b/contrib/ntp/html/ntp_conf.html
@@ -0,0 +1,173 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Configuration File Definition (Advanced)</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
+
+ <body>
+ <h3>Configuration File Definition (Advanced)</h3>
+ <img src="pic/bustardfly.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
+ <p>A typical NTP monitoring packet</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">19:46</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="223">Friday, June 16, 2006</csobj></p>
+ <br clear="left">
+ <hr>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#synopsis">Synopsis</a><br>
+ <li class="inline"><a href="#files">Files</a>
+ <li class="inline"><a href="#high-level">High-Level Description</a>
+ <li class="inline"><a href="#detailed">Detailed Description</a>
+ <li class="inline"><a href="#guidelines">Guidelines for Adding Configuration Commands </a>
+ </ul>
+ <h4 id="synopsis">Synopsis</h4>
+ <p>The NTP configuration process is driven by a phrase-structure grammar which is used to specify the format of the configuration commands and the actions needed to build an abstract syntax tree (AST). The grammar is fed to a parser generator (Bison) which produces a parser for the configuration file.</p>
+ <p>The generated parser is used to parse an NTP configuration file and check it for syntax and semantic errors. The result of the parse is an AST, which contains a representation of the various commands and options. This AST is then traversed to set up the NTP daemon to the correct configuration.</p>
+ <p>This document is intended for developers who wish to modify the configuration code and/or add configuration commands and options. It contains a description of the files used in the configuration process as well as guidelines on how to construct them.</p>
+ <h4 id="files">Files</h4>
+ <p>A brief description of the files used by the configuration code is given below:</p>
+ <table border="1">
+ <tbody>
+ <tr>
+ <th width="179">File</th>
+ <th width="537">Description</th>
+ </tr>
+ <tr>
+ <td valign="top"><b>ntp_config.y</b></td>
+ <td>This file is a Bison source file that contains the phrase-structure grammar and the actions that need to be performed to generate an AST.</td>
+ </tr>
+ <tr>
+ <td valign="top"><b>ntp_config.c</b></td>
+ <td>This file contains the major chunk of the configuration code. It contains all the functions that are called for building the AST as well as the functions that are needed for traversing the AST.</td>
+ </tr>
+ <tr>
+ <td valign="top"><b>ntp_config.h</b></td>
+ <td>This file is the header file for <b>ntp_config.c</b>. It mainly contains the structure definitions needed to build the AST. </td>
+ </tr>
+ <tr>
+ <td valign="top"><b>ntp_scanner.c</b></td>
+ <td>This file contains the code for a simple lexical analyzer. This file is directly included into the <b>ntp_config.c</b> file since this code is only used by the configuration code. The most important function in this file is <tt>yylex</tt>, which is called by the generated parser to get the next token on the input line.</td>
+ </tr>
+ <tr>
+ <td valign="top"><b>ntp_data_structures.c</b></td>
+ <td>This file contains a generic implementation of a priority queue and a simple queue. This code can be used to create a queue for any structure.</td>
+ </tr>
+ <tr>
+ <td valign="top"><b>ntp_data_structures.h</b></td>
+ <td>This header file contains the structure declarations and function prototypes needed to use the data structures defined in <b>ntp_data_structures.c</b>. This file forms the public interface of the data structures.</td>
+ </tr>
+ <tr>
+ <td valign="top"><b>ntp_config.tab.c</b></td>
+ <td>This file is generated by Bison from the <b>ntp_config.y</b> file. This file is also included directly into the configuration code.</td>
+ </tr>
+ </tbody>
+ </table>
+ <h4 id="high-level">High-Level Description</h4>
+ <p>A high-level description of the configuration process showing where all the files fit in is given below:</p>
+ <p><img src="pic/description.jpg" alt="JPEG" border="0"></p>
+ <p>The scanner reads in an NTP configuration file and converts it into tokens. The Bison generated parser reads these tokens and converts them into an AST. The AST traverser consists of a set of functions that configure parts of NTP on the basis of what is on the tree. A more detailed description of these parts and the files used is given below:</p>
+ <h4 id="detailed">Detailed Description</h4>
+ <dl>
+ <dt><b>ntp_scanner.c</b>
+ <dd>This file contains the scanner. The scanner is a small program that converts an input NTP configuration file into a set of <b>tokens</b> that correspond to <b>lexemes</b> in the input. Lexemes are strings in the input, delimited by whitespace and/or special characters. Tokens are basically unique integers that represent these lexemes. A different token is generated for each reserved word and special character in the input. There are two main functions in the public interface of this file:
+ <dt><tt>int yylex</tt>()
+ <dd>This function is called <tt>yylex</tt> for historical reasons; <tt>lex</tt> is a program that takes a set of regular expressions and generates a scanner that returns tokens corresponding to those regular expressions. The name of the generated function is called <tt>yylex</tt>. We aren't using<b> </b><tt>lex</tt><b> </b>because it requires linking against an external library and we didn't want to increase the compile-time requirements of NTP.
+ <dd>History lessons aside, this function basically checks to see if the next input character is a special character as defined in the array <tt>char special_char[]</tt>. (The function <tt>int is_special(char ch)</tt>, can be used for this.) If yes, the special character is returned as the token. If not, a set of characters is read until the next whitespace or special character is encountered. This set of characters forms the lexeme; <tt>yylex</tt> then checks whether this lexeme is an integer, a double, an IP address or a reserved word. If yes, the corresponding token is returned. If not, a token for a string is returned as the default token.
+ <dt><tt>struct state *create_keyword_scanner(struct key_tok *<i>keyword_list</i>)</tt>
+ <dd>This function takes a list of (<i>keyword, token</i>) pairs and converts them into a trie that can recognize the keywords (reserved words). Every time the scanner reads a lexeme, it compares it against the list of reserved words. If it finds a match, it returns the corresponding token for that keyword.
+ <dt><b>ntp_data_structures.c</b>
+ <dd>This file contains an implementation of a generic priority queue and FIFO queue. By generic, we mean that these queues can hold element of any type (integers, user-defined structs, etc.), provided that these elements are allocated on the heap using the function <tt>void</tt> *<tt>get_node(size_t size)</tt>. Note that the prototype for this function is exactly the same as that of <tt>malloc</tt> and that it can be used in the exact same way. Behind the scenes, <tt>get_node</tt> calls <tt>malloc</tt> to allocate <i>size</i> plus some extra memory needed for bookkeeping. The allocated memory can be freed using the function <tt>void free_node (void *<i>my_node</i>)</tt>. In addition to these two functions, the public interface of this file contains the following functions:
+ <dt><tt>queue *create_priority_queue(int (*get_order)(void *, void*))</tt>
+ <dd>This function creates a priority queue in which the order of the elements is determined by the <tt>get_order</tt><b> </b>function that is passed as input to the priority queue. The <tt>get_order</tt><b> </b>function should return positive if the priority of the first element is less than the priority of the second element.
+ <dt><tt>queue *create_queue(void)</tt>
+ <dd>This function creates a FIFO queue. It basically calls the <tt>create_priority_queue</tt> function with the <tt>get_fifo_order</tt><b> </b>function as its argument.
+ <dt><tt>void destroy_queue(queue *<i>my_queue</i>)</tt>
+ <dd>This function deletes <tt><i>my_queue</i></tt><b> </b>and frees up all the memory allocated to it an its elements.
+ <dt><tt>int empty(queue *</tt><i><tt>my_queue</tt></i><tt>)</tt>
+ <dd>This function checks to see if <i><tt>my_queue</tt></i> is empty. Returns <tt>true</tt> if <tt><i>my_queue</i></tt> does not have any elements, else it returns false.
+ <dt><tt>queue *enqueue(queue *<i>my_queue</i>, void *<i>my_node</i>)</tt>
+ <dd>This function adds an element, <i><tt>my_node</tt></i>, to a queue, <i><tt>my_queue</tt></i>. <i><tt>my_node</tt></i> must be allocated on the heap using the <tt>get_node</tt> function instead of <tt>malloc</tt>.
+ <dt><tt>void *dequeue(queue *<i>my_queue</i>)</tt>
+ <dd>This function returns the element at the front of the queue. This element will be element with the highest priority.
+ <dt><tt>int get_no_of_elements(queue *<i>my_queue</i>)</tt>
+ <dd>This function returns the number of elements in <tt><i>my_queue</i></tt>.
+ <dt><tt>void append_queue(queue *<i>q</i>1, queue *<i>q</i>2)</tt>
+ <dd>This function adds all the elements of <tt><i>q</i>2</tt> to <tt><i>q</i>1</tt>. The queue <tt><i>q</i>2</tt> is destroyed in the process.
+ <dt><b>ntp_config.y</b>
+ <dd>This file is structured as a standard Bison file and consists of three main parts, separated by <tt>%%</tt>:
+ </dl>
+ <ol>
+ <li>The prologue and bison declarations: This section contains a list of the terminal symbols, the non-terminal symbols and the types of these symbols.<li>The rules section: This section contains a description of the actual phrase-structure rules that are used to parse the configuration commands. Each rule consists of a left-hand side (LHS), a right-hand side (RHS) and an optional action. As is standard with phrase-structure grammars, the LHS consists of a single non-terminal symbol. The RHS can contain both terminal and non-terminal symbols, while the optional action can consist of any arbitrary C code.
+ <li>The epilogue: This section is left empty on purpose. It is traditionally used to code the support functions needed to build the ASTs Since, we have moved all the support functions to <b>ntp_config.c</b>, this section is left empty.
+ </ol>
+ <h4>Prologue and Bison Declarations</h4>
+ <p>All the terminal symbols (also known as tokens) have to be declared in the prologue section. Note that terminals and non-terminals may have values associated with them and these values have types. (More on this later). An unnamed union has to be declared with all the possible types at the start of the prologue section. For example, we declare the following union at the start of the <b>ntp_config.y</b> file:</p>
+ <p class="style1"><tt>%union {<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;char *String;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;double Double;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;int Integer;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;void *VoidPtr;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;queue *Queue;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;struct attr_val *Attr_val;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;struct address_node *Address_node;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;struct setvar_node *Set_var;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;/* Simulation types */<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;server_info *Sim_server;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;script_info *Sim_script;<br>
+ }</tt></p>
+ <p>Some tokens may not have any types. For example, tokens that correspond to reserved words do not usually have types as they simply indicate that a reserved word has been read in the input file. Such tokens have to be declared as follows:</p>
+ <p><tt>%token T_Discard<br>
+ %token T_Dispersion</tt></p>
+ <p>Other tokens do have types. For example, a <tt>T_Double</tt> token is returned by the scanner whenever it sees a floating-point double in the configuration file. The value associated with the token is the actual number that was read in the configuration file and its type (after conversion) is double. Hence, the token <tt>T_Double</tt> will have to be declared as follows in the prologue of <b>ntp_config.y</b> file:</p>
+ <p><tt>%token &lt;Double&gt; T_Double </tt></p>
+ <p>Note that the declaration given in the angled brackets is not <tt>double</tt> but <tt>Double</tt>, which is the name of the variable given in the <tt>%union {}</tt> declaration above.</p>
+ <p>Finally, non-terminal symbols may also have values associated with them, which have types. This is because Bison allows non-terminal symbols to have actions associated with them. Actions may be thought of as small functions which get executed whenever the RHS of a non-terminal is detected. The return values of these functions are the values associated with the non-terminals. The types of the non-terminals are specified with a <tt>%type</tt> declaration as shown below:</p>
+ <p><tt>%type &lt;Queue&gt; address_list<br>
+ %type &lt;Integer&gt; boolean</tt></p>
+ <p>The <tt>%type</tt> declaration may be omitted for non-terminals that do not return any value and do not have type information associated with them.</p>
+ <h4>The Rules Section </h4>
+ <p>The rule section only consists of phrase-structure grammar rules. Each rule typically has the following format:</p>
+ <p><tt>LHS : RHS [{ Actions }]<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;;</tt></p>
+ <p>where LHS consists of a single non-terminal symbol and the RHS consists of one or more terminal and non-terminal symbols. The <tt>Actions</tt> are optional and may consist of any number of arbitrary C statements. Note that Bison can only process LALR(1) grammars, which imposes additional restrictions on the kind of rules that can be specified. Examples of rules are shown below:</p>
+ <p><tt>orphan_mode_command<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;: T_Tos tos_option_list<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ append_queue(my_config.orphan_cmds, $2); }<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;;</tt></p>
+ <p><tt>tos_option_list<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;: tos_option_list tos_option { $$ = enqueue($1, $2); }<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;| tos_option { $$ = enqueue_in_new_queue($1); }<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;;</tt></p>
+ <p>The <tt>$n</tt> notation, where <tt>n</tt> is an integer, is used to refer to the value of a terminal or non-terminal symbol. All terminals and non-terminal symbols within a particular rule are numbered (starting from 1) according to the order in which they appear within the RHS of a rule. <tt>$$</tt> is used to refer to the value of the LHS terminal symbol - it is used to return a value for the non-terminal symbol specified in the LHS of the rule.</p>
+ <h4>Invoking Bison </h4>
+ <p>Bison needs to be invoked in order to convert the <b>ntp_config.y</b> file into a C source file. To invoke Bison, simply enter the command:</p>
+ <p><tt>bison ntp_config.y</tt></p>
+ <p>at the command prompt. If no errors are detected, an <b>ntp_config.tab.c</b> file will be generated by default. This generated file can be directly included into the <b>ntp_config.c</b> file.</p>
+ <p>If Bison report shift-reduce errors or reduce-reduce errors, it means that the grammar specified using the rules in not LALR(1). To debug such a grammar, invoke Bison with a <tt>-v</tt> switch, as shown below. This will generate a <b>ntp_config.output</b> file, which will contain a description of the generated state machine, together with a list of states that have shift-reduce/reduce-reduce conflicts. You can then change the rules to remove such conflicts.</p>
+ <p><tt>bison -v ntp_config.y</tt></p>
+ <p>For more information, refer to the <a href="http://www.gnu.org/software/bison/manual/html_mono/bison.html">Bison manual</a>.</p>
+ <p><b>ntp_config.c</b></p>
+ <p>This file contains the major chunk of the configuration code including all the support functions needed for building and traversing the ASTs. As such, most of the functions in this file can be divided into two groups:</p>
+ <ol>
+ <li>Functions that have a <tt>create_</tt> prefix. These functions are used to build a node of the AST.
+ <li>Functions that have a <tt>config_</tt> prefix. These functions are used to traverse the AST and configure NTP according to the nodes present on the tree.
+ </ol>
+ <h4>Guidelines for Adding Configuration Commands</h4>
+ <p>The following steps may be used to add a new configuration command to the NTP reference implementation:</p>
+ <ol>
+ <li>Write phrase-structure grammar rules for the syntax of the new command. Add these rules to the rules section of the <b>ntp_config.y</b> file.
+ <li>Write the action to be performed on recognizing the rules. These actions will be used to build the AST.
+ <li>If new reserved words are needed, add these to the <tt>struct key_tok keyword_list[]</tt>structure in the <b>ntp_config.c </b>file. This will allow the scanner to recognize these reserved words and generate the desired tokens on recognizing them.
+ <li>Specify the types of all the terminals and non-terminal symbols in the prologue section of the <b>ntp_config.c</b> file.
+ <li>Write a function with a <tt>config_</tt> prefix that will be executed for this new command. Make sure this function is called in the <tt>config_ntpd()</tt>function.
+ </ol>
+ <hr>
+ <address><a href="mailto:skamboj@udel.edu">Sachin Kamboj</a></address>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
+
+</html>
diff --git a/contrib/ntp/html/ntpd.html b/contrib/ntp/html/ntpd.html
index ccfd9d4..3b70694 100644
--- a/contrib/ntp/html/ntpd.html
+++ b/contrib/ntp/html/ntpd.html
@@ -2,183 +2,184 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>ntpd - Network Time Protocol (NTP) daemon</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>ntpd - Network Time Protocol (NTP) daemon</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</h3>
- <img src="pic/alice47.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>The mushroom knows all the command line options.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:15 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#synop">Synopsis</a><br>
- <li class="inline"><a href="#descr">Description</a><br>
- <li class="inline"><a href="#op">How NTP Operates</a><br>
- <li class="inline"><a href="#freq">Frequency Discipline</a><br>
- <li class="inline"><a href="#modes">Operating Modes</a><br>
- <li class="inline"><a href="#poll">Poll Interval Control</a><br>
- <li class="inline"><a href="#poll">Poll Interval Control</a><br>
- <li class="inline"><a href="#notes">Notes</a><br>
- <li class="inline"><a href="#cmd">Command Line Options</a><br>
- <li class="inline"><a href="#cfg">The Configuration File</a><br>
- <li class="inline"><a href="#opt">Configuration Options</a><br>
- <li class="inline"><a href="#files">Files</a>
- </ul>
- <hr>
- <h4 id="synop">Synopsis</h4>
- <tt>ntpd [ -46aAbdDgLmnNPqx ] [ -c <i>conffile</i> ] [ -f <i>driftfile</i> ] [ -k <i>keyfile</i> ] [ -l <i>logfile</i> ] [ -p <i>pidfile</i> ] [ -r <i>broadcastdelay</i> ] [ -s <i>statsdir</i> ] [ -t <i>key</i> ] [ -v <i>variable</i> ] [ -V <i>variable</i> ]</tt>
- <h4 id="descr">Description</h4>
- <p>The <tt>ntpd</tt> program is an operating system daemon which sets and maintains the system time of day in synchronism with Internet standard time servers. It is a complete implementation of the Network Time Protocol (NTP) version 4, but also retains compatibility with version 3, as defined by RFC-1305, and version 1 and 2, as defined by RFC-1059 and RFC-1119, respectively. <tt>ntpd</tt> does most computations in 64-bit floating point arithmetic and does relatively clumsy 64-bit fixed point operations only when necessary to preserve the ultimate precision, about 232 picoseconds. While the ultimate precision is not achievable with ordinary workstations and networks of today, it may be required with future gigahertz CPU clocks and gigabit LANs.</p>
- <h4 id="op">How NTP Operates</h4>
- <p>The <tt>ntpd</tt> program operates by exchanging messages with one or more configured servers at designated poll intervals. When started, whether for the first or subsequent times, the program requires several exchanges from the majority of these servers so the signal processing and mitigation algorithms can accumulate and groom the data and set the clock. In order to protect the network from bursts, the initial poll interval for each server is delayed an interval randomized over a few seconds. At the default initial poll interval of 64s, several minutes can elapse before the clock is set. The initial delay to set the clock can be reduced using the <tt>iburst</tt> keyword with the <tt>server</tt> configuration command, as described on the <a href="confopt.html">Configuration Options</a> page.</p>
- <p>Most operating systems and hardware of today incorporate a time-of-year (TOY) chip to maintain the time during periods when the power is off. When the machine is booted, the chip is used to initialize the operating system time. After the machine has synchronized to a NTP server, the operating system corrects the chip from time to time. In case there is no TOY chip or for some reason its time is more than 1000s from the server time, <tt>ntpd</tt> assumes something must be terribly wrong and the only reliable action is for the operator to intervene and set the clock by hand. This causes <tt>ntpd</tt> to exit with a panic message to the system log. The <tt>-g</tt> option overrides this check and the clock will be set to the server time regardless of the chip time. However, and to protect against broken hardware, such as when the CMOS battery fails or the clock counter becomes defective, once the clock has been set, an error greater than 1000s will cause <tt>ntpd</tt> to exit anyway.</p>
- <p>Under ordinary conditions, <tt>ntpd</tt> adjusts the clock in small steps so that the timescale is effectively continuous and without discontinuities. Under conditions of extreme network congestion, the roundtrip delay jitter can exceed three seconds and the synchronization distance, which is equal to one-half the roundtrip delay plus error budget terms, can become very large. The <tt>ntpd</tt> algorithms discard sample offsets exceeding 128 ms, unless the interval during which no sample offset is less than 128 ms exceeds 900s. The first sample after that, no matter what the offset, steps the clock to the indicated time. In practice this reduces the false alarm rate where the clock is stepped in error to a vanishingly low incidence.</p>
- <p>As the result of this behavior, once the clock has been set, it very rarely strays more than 128 ms, even under extreme cases of network path congestion and jitter. Sometimes, in particular when <tt>ntpd</tt> is first started, the error might exceed 128 ms. This may on occasion cause the clock to be set backwards if the local clock time is more than 128 s in the future relative to the server. In some applications, this behavior may be unacceptable. If the <tt>-x</tt> option is included on the command line, the clock will never be stepped and only slew corrections will be used.</p>
- <p>The issues should be carefully explored before deciding to use the <tt>-x</tt> option. The maximum slew rate possible is limited to 500 parts-per-million (PPM) as a consequence of the correctness principles on which the NTP protocol and algorithm design are based. As a result, the local clock can take a long time to converge to an acceptable offset, about 2,000 s for each second the clock is outside the acceptable range. During this interval the local clock will not be consistent with any other network clock and the system cannot be used for distributed applications that require correctly synchronized network time.</p>
- <p>In spite of the above precautions, sometimes when large frequency errors are present the resulting time offsets stray outside the 128-ms range and an eventual step or slew time correction is required. If following such a correction the frequency error is so large that the first sample is outside the acceptable range, <tt>ntpd</tt> enters the same state as when the <tt>ntp.drift</tt> file is not present. The intent of this behavior is to quickly correct the frequency and restore operation to the normal tracking mode. In the most extreme cases (<tt>time.ien.it</tt> comes to mind), there may be occasional step/slew corrections and subsequent frequency corrections. It helps in these cases to use the <tt>burst</tt> keyword when configuring the server.</p>
- <h4 id="freq">Frequency Discipline</h4>
- <p>The <tt>ntpd</tt> behavior at startup depends on whether the frequency file, usually <tt>ntp.drift</tt>, exists. This file contains the latest estimate of clock frequency error. When the <tt>ntpd</tt> is started and the file does not exist, the <tt>ntpd</tt> enters a special mode designed to quickly adapt to the particular system clock oscillator time and frequency error. This takes approximately 15 minutes, after which the time and frequency are set to nominal values and the <tt>ntpd</tt> enters normal mode, where the time and frequency are continuously tracked relative to the server. After one hour the frequency file is created and the current frequency offset written to it. When the <tt>ntpd</tt> is started and the file does exist, the <tt>ntpd</tt> frequency is initialized from the file and enters normal mode immediately. After that the current frequency offset is written to the file at hourly intervals.</p>
- <h4 id="modes">Operating Modes</h4>
- <p><tt>ntpd</tt> can operate in any of several modes, including symmetric active/passive, client/server broadcast/multicast and manycast, as described in the <a href="assoc.html">Association Management</a> page. It normally operates continuously while monitoring for small changes in frequency and trimming the clock for the ultimate precision. However, it can operate in a one-time mode where the time is set from an external server and frequency is set from a previously recorded frequency file. A broadcast/multicast or manycast client can discover remote servers, compute server-client propagation delay correction factors and configure itself automatically. This makes it possible to deploy a fleet of workstations without specifying configuration details specific to the local environment.</p>
- <p>By default, <tt>ntpd</tt> runs in continuous mode where each of possibly several external servers is polled at intervals determined by an intricate state machine. The state machine measures the incidental roundtrip delay jitter and oscillator frequency wander and determines the best poll interval using a heuristic algorithm. Ordinarily, and in most operating environments, the state machine will start with 64s intervals and eventually increase in steps to 1024s. A small amount of random variation is introduced in order to avoid bunching at the servers. In addition, should a server become unreachable for some time, the poll interval is increased in steps to 1024s in order to reduce network overhead.</p>
- <p>In some cases it may not be practical for <tt>ntpd</tt> to run continuously. A common workaround has been to run the <tt>ntpdate</tt> program from a <tt>cron</tt> job at designated times. However, this program does not have the crafted signal processing, error checking and mitigation algorithms of <tt>ntpd</tt>. The <tt>-q</tt> option is intended for this purpose. Setting this option will cause <tt>ntpd</tt> to exit just after setting the clock for the first time. The procedure for initially setting the clock is the same as in continuous mode; most applications will probably want to specify the <tt>iburst</tt> keyword with the <tt>server</tt> configuration command. With this keyword a volley of messages are exchanged to groom the data and the clock is set in about 10 s. If nothing is heard after a couple of minutes, the daemon times out and exits. After a suitable period of mourning, the <tt>ntpdate</tt> program may be retired.</p>
- <p>When kernel support is available to discipline the clock frequency, which is the case for stock Solaris, Tru64, Linux and FreeBSD, a useful feature is available to discipline the clock frequency. First, <tt>ntpd</tt> is run in continuous mode with selected servers in order to measure and record the intrinsic clock frequency offset in the frequency file. It may take some hours for the frequency and offset to settle down. Then the <tt>ntpd</tt> is stopped and run in one-time mode as required. At each startup, the frequency is read from the file and initializes the kernel frequency.</p>
- <h4 id="poll">Poll Interval Control</h4>
- <p>This version of NTP includes an intricate state machine to reduce the network load while maintaining a quality of synchronization consistent with the observed jitter and wander. There are a number of ways to tailor the operation in order enhance accuracy by reducing the interval or to reduce network overhead by increasing it. However, the user is advised to carefully consider the consequences of changing the poll adjustment range from the default minimum of 64 s to the default maximum of 1,024 s. The default minimum can be changed with the <tt>tinker minpoll</tt> command to a value not less than 16 s. This value is used for all configured associations, unless overriden by the <tt>minpoll</tt> option on the configuration command. Note that most device drivers will not operate properly if the poll interval is less than 64 s and that the broadcast server and manycast client associations will also use the default, unless overriden.</p>
- <p>In some cases involving dial up or toll services, it may be useful to increase the minimum interval to a few tens of minutes and maximum interval to a day or so. Under normal operation conditions, once the clock discipline loop has stabilized the interval will be increased in steps from the minimum to the maximum. However, this assumes the intrinsic clock frequency error is small enough for the discipline loop correct it. The capture range of the loop is 500 PPM at an interval of 64s decreasing by a factor of two for each doubling of interval. At a minimum of 1,024 s, for example, the capture range is only 31 PPM. If the intrinsic error is greater than this, the drift file <tt>ntp.drift</tt> will have to be specially tailored to reduce the residual error below this limit. Once this is done, the drift file is automatically updated once per hour and is available to initialize the frequency on subsequent daemon restarts.</p>
- <h4 id="huff">The huff-n'-puff Filter</h4>
- <p>In scenarios where a considerable amount of data are to be downloaded or uploaded over telephone modems, timekeeping quality can be seriously degraded. This occurs because the differential delays on the two directions of transmission can be quite large. In many cases the apparent time errors are so large as to exceed the step threshold and a step correction can occur during and after the data transfer is in progress.</p>
- <p>The huff-n'-puff filter is designed to correct the apparent time offset in these cases. It depends on knowledge of the propagation delay when no other traffic is present. In common scenarios this occurs during other than work hours. The filter maintains a shift register that remembers the minimum delay over the most recent interval measured usually in hours. Under conditions of severe delay, the filter corrects the apparent offset using the sign of the offset and the difference between the apparent delay and minimum delay. The name of the filter reflects the negative (huff) and positive (puff) correction, which depends on the sign of the offset.</p>
- <p>The filter is activated by the <tt>tinker</tt> command and <tt>huffpuff</tt> keyword, as described in the <a href="miscopt.html">Miscellaneous Options</a> page.</p>
- <h4 id="notes">Notes</h4>
- <p>If NetInfo support is built into <tt>ntpd</tt>, then <tt>ntpd</tt> will attempt to read its configuration from the NetInfo if the default ntp.conf file cannot be read and no file is specified by the <tt>-c</tt> option.</p>
- <p>In contexts where a host name is expected, a <tt>-4</tt> qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a <tt>-6</tt> qualifier forces DNS resolution to the IPv6 namespace.</p>
- <p>Various internal <tt>ntpd</tt> variables can be displayed and configuration options altered while the <tt>ntpd</tt> is running using the <tt><a href="ntpq.html">ntpq</a></tt> and <tt><a href="ntpdc.html">ntpdc</a></tt> utility programs.</p>
- <p>When <tt>ntpd</tt> starts it looks at the value of <tt>umask</tt>, and if zero <tt>ntpd</tt> will set the <tt>umask</tt> to <tt>022</tt>.</p>
- <h4 id="cmd">Command Line Options</h4>
- <dl>
- <dt><tt>-4</tt>
- <dd>Force DNS resolution of following host names to the IPv4 namespace.
- <dt><tt>-6</tt>
- <dd>Force DNS resolution of following host names to the IPv6 namespace.
- <dt><tt>-a</tt>
- <dd>Require cryptographic authentication for broadcast client, multicast client and symmetric passive associations. This is the default.
- <dt><tt>-A</tt>
- <dd>Do not require cryptographic authentication for broadcast client, multicast client and symmetric passive associations. This is almost never a good idea.
- <dt><tt>-b</tt>
- <dd>Enable the client to synchronize to broadcast servers.
- <dt><tt>-c <i>conffile</i></tt>
- <dd>Specify the name and path of the configuration file, default <tt>/etc/ntp.conf</tt>.
- <dt><tt>-d</tt>
- <dd>Specify debugging mode. This option may occur more than once, with each occurrence indicating greater detail of display.
- <dt><tt>-D <i>level</i></tt>
- <dd>Specify debugging level directly.
- <dt><tt>-f <i>driftfile</i></tt>
- <dd>Specify the name and path of the frequency file, default <tt>/etc/ntp.drift</tt>. This is the same operation as the <tt>driftfile <i>driftfile</i></tt> configuration command.
- <dt><tt>-g</tt>
- <dd>Normally, <tt>ntpd</tt> exits with a message to the system log if the offset exceeds the panic threshold, which is 1000 s by default. This option allows the time to be set to any value without restriction; however, this can happen only once. If the threshold is exceeded after that, <tt>ntpd</tt> will exit with a message to the system log. This option can be used with the <tt>-q</tt> and <tt>-x</tt> options. See the <tt>tinker</tt> command for other options.
- <dt><tt>-k <i>keyfile</i></tt>
- <dd>Specify the name and path of the symmetric key file, default <tt>/etc/ntp.keys</tt>. This is the same operation as the <tt>keys <i>keyfile</i></tt> configuration command.
- <dt><tt>-l <i>logfile</i></tt>
- <dd>Specify the name and path of the log file. The default is the system log file. This is the same operation as the <tt>logfile <i>logfile</i></tt> configuration command.
- <dt><tt>-L</tt>
- <dd>Do not listen to virtual IPs. The default is to listen.
- <dt><tt>-m</tt>
- <dd>Enable the client to synchronize to multicast servers at the IPv4 multicast group address 224.0.1.1.
- <dt><tt>-n</tt>
- <dd>Don't fork.
- <dt><tt>-N</tt>
- <dd>To the extent permitted by the operating system, run the <tt>ntpd</tt> at the highest priority.
- <dt><tt>-p <i>pidfile</i></tt>
- <dd>Specify the name and path of the file used to record the <tt>ntpd</tt> process ID. This is the same operation as the <tt>pidfile <i>pidfile</i></tt> configuration command.
- <dt><tt>-P <i>priority</i></tt>
- <dd>To the extent permitted by the operating system, run the <tt>ntpd</tt> at the specified priority.
- <dt><tt>-q</tt>
- <dd>Exit the <tt>ntpd</tt> just after the first time the clock is set. This behavior mimics that of the <tt>ntpdate</tt> program, which is to be retired. The <tt>-g</tt> and <tt>-x</tt> options can be used with this option. Note:&nbsp;The kernel time discipline is disabled with this option.
- <dt><tt>-r <i>broadcastdelay</i></tt>
- <dd>Specify the default propagation delay from the broadcast/multicast server to this client. This is necessary only if the delay cannot be computed automatically by the protocol.
- <dt><tt>-s <i>statsdir</i></tt>
- <dd>Specify the directory path for files created by the statistics facility. This is the same operation as the <tt>statsdir <i>statsdir</i></tt> configuration command.
- <dt><tt>-t <i>key</i></tt>
- <dd>Add a key number to the trusted key list. This option can occur more than once.
- <dt><tt>-v <i>variable</i></tt>
- <dt><tt>-V <i>variable</i></tt>
- <dd>Add a system variable listed by default.
- <dt><tt>-x</tt>
- <dd>Normally, the time is slewed if the offset is less than the step threshold, which is 128 ms by default, and stepped if above the threshold. This option sets the threshold to 600 s, which is well within the accuracy window to set the clock manually. Note: Since the slew rate of typical Unix kernels is limited to 0.5 ms/s, each second of adjustment requires an amortization interval of 2000 s. Thus, an adjustment as much as 600 s will take almost 14 days to complete. This option can be used with the <tt>-g</tt> and <tt>-q</tt> options. See the <tt>tinker</tt> command for other options. Note:&nbsp;The kernel time discipline is disabled with this option.
- </dl>
- <h4 id="cfg">The Configuration File</h4>
- <p>Ordinarily, <tt>ntpd</tt> reads the <tt>ntp.conf</tt> configuration file at startup time in order to determine the synchronization sources and operating modes. It is also possible to specify a working, although limited, configuration entirely on the command line, obviating the need for a configuration file. This may be particularly useful when the local host is to be configured as a broadcast/multicast client, with all peers being determined by listening to broadcasts at run time.</p>
- <p>Usually, the configuration file is installed in the <tt>/etc</tt> directory, but could be installed elsewhere (see the <tt>-c <i>conffile</i></tt> command line option). The file format is similar to other Unix configuration files - comments begin with a <tt>#</tt> character and extend to the end of the line; blank lines are ignored.</p>
- <p>Configuration commands consist of an initial keyword followed by a list of arguments, some of which may be optional, separated by whitespace. Commands may not be continued over multiple lines. Arguments may be host names, host addresses written in numeric, dotted-quad form, integers, floating point numbers (when specifying times in seconds) and text strings. Optional arguments are delimited by <tt>[ ]</tt> in the following descriptions, while alternatives are separated by <tt>|</tt>. The notation <tt>[ ... ]</tt> means an optional, indefinite repetition of the last item before the <tt>[ ... ]</tt>.</p>
- <h4 id="opt">Configuration Options</h4>
- <p><a href="confopt.html">Server Options</a><br>
- <a href="authopt.html">Authentication Options</a><br>
- <a href="monopt.html">Monitoring Options</a><br>
- <a href="accopt.html">Access Control Options</a><br>
- <a href="manyopt.html">Automatic NTP Configuration Options</a><br>
- <a href="clockopt.html">Reference Clock Options</a><br>
- <a href="miscopt.html">Miscellaneous Options</a></p>
- <h4 id="files">Files</h4>
- <table width="100%" border="1" cellspacing="2" cellpadding="0">
- <tr>
- <td width="30%">File</td>
- <td width="30%">Default</td>
- <td width="20%">Option</td>
- <td width="20%">Command</td>
- </tr>
- <tr>
- <td width="30%">configuration file</td>
- <td width="30%"><tt>/etc/ntp.conf</tt></td>
- <td width="20%"><tt>-c</tt></td>
- <td width="20%">none</td>
- </tr>
- <tr>
- <td width="30%">frequency file</td>
- <td width="30%"><tt>/etc/ntp.drift</tt></td>
- <td width="20%"><tt>-f</tt></td>
- <td width="20%"><tt>driftfile</tt></td>
- </tr>
- <tr>
- <td width="30%">process ID file</td>
- <td width="30%">none</td>
- <td width="20%"><tt>-p</tt></td>
- <td width="20%"><tt>pidfile</tt></td>
- </tr>
- <tr>
- <td width="30%">log file</td>
- <td width="30%">system log</td>
- <td width="20%"><tt>-l</tt></td>
- <td width="20%"><tt>logfile</tt></td>
- </tr>
- <tr>
- <td width="30%">include file</td>
- <td width="30%">none</td>
- <td width="20%">none</td>
- <td width="20%"><tt>includefile</tt></td>
- </tr>
- <tr>
- <td width="30%">statistics path</td>
- <td width="30%"><tt>/var/NTP</tt></td>
- <td width="20%"><tt>-s</tt></td>
- <td width="20%"><tt>statsdir</tt></td>
- </tr>
- <tr>
- <td width="30%">keys path</td>
- <td width="30%"><tt>/usr/local/etc</tt></td>
- <td width="20%"><tt>-k</tt></td>
- <td width="20%"><tt>keysdir</tt></td>
- </tr>
- </table>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</h3>
+ <img src="pic/alice47.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>The mushroom knows all the command line options.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:44</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#synop">Synopsis</a><br>
+ <li class="inline"><a href="#descr">Description</a><br>
+ <li class="inline"><a href="#op">How NTP Operates</a><br>
+ <li class="inline"><a href="#freq">Frequency Discipline</a><br>
+ <li class="inline"><a href="#modes">Operating Modes</a><br>
+ <li class="inline"><a href="#poll">Poll Interval Control</a><br>
+ <li class="inline"><a href="#poll">Poll Interval Control</a><br>
+ <li class="inline"><a href="#notes">Notes</a><br>
+ <li class="inline"><a href="#cmd">Command Line Options</a><br>
+ <li class="inline"><a href="#cfg">The Configuration File</a><br>
+ <li class="inline"><a href="#opt">Configuration Options</a><br>
+ <li class="inline"><a href="#files">Files</a>
+ </ul>
+ <hr>
+ <h4 id="synop">Synopsis</h4>
+ <tt>ntpd [ -46aAbdDgLmnNqx ] [ -c <i>conffile</i> ] [ -f <i>driftfile</i> ] [ -i <i>jaildir</i> ] [ -k <i>keyfile</i> ] [ -l <i>logfile</i> ] [ -p <i>pidfile</i> ] [ -P <i>priority</i> ] [ -r <i>broadcastdelay</i> ] [ -s <i>statsdir</i> ] [ -t <i>key</i> ] [ -u <i>user</i>[:<i>group</i>] ] [ -U <i>interface_update_interval</i> ] [ -v <i>variable</i> ] [ -V <i>variable</i> ]</tt>
+ <h4 id="descr">Description</h4>
+ <p>The <tt>ntpd</tt> program is an operating system daemon which sets and maintains the system time of day in synchronism with Internet standard time servers. It is a complete implementation of the Network Time Protocol (NTP) version 4, but also retains compatibility with version 3, as defined by RFC-1305, and version 1 and 2, as defined by RFC-1059 and RFC-1119, respectively. <tt>ntpd</tt> does most computations in 64-bit floating point arithmetic and does relatively clumsy 64-bit fixed point operations only when necessary to preserve the ultimate precision, about 232 picoseconds. While the ultimate precision is not achievable with ordinary workstations and networks of today, it may be required with future gigahertz CPU clocks and gigabit LANs.</p>
+ <h4 id="op">How NTP Operates</h4>
+ <p>The <tt>ntpd</tt> program operates by exchanging messages with one or more configured servers at designated poll intervals. When started, whether for the first or subsequent times, the program requires several exchanges from the majority of these servers so the signal processing and mitigation algorithms can accumulate and groom the data and set the clock. In order to protect the network from bursts, the initial poll interval for each server is delayed an interval randomized over a few seconds. At the default initial poll interval of 64s, several minutes can elapse before the clock is set. The initial delay to set the clock can be reduced using the <tt>iburst</tt> keyword with the <tt>server</tt> configuration command, as described on the <a href="confopt.html">Configuration Options</a> page.</p>
+ <p>Most operating systems and hardware of today incorporate a time-of-year (TOY) chip to maintain the time during periods when the power is off. When the machine is booted, the chip is used to initialize the operating system time. After the machine has synchronized to a NTP server, the operating system corrects the chip from time to time. In case there is no TOY chip or for some reason its time is more than 1000s from the server time, <tt>ntpd</tt> assumes something must be terribly wrong and the only reliable action is for the operator to intervene and set the clock by hand. This causes <tt>ntpd</tt> to exit with a panic message to the system log. The <tt>-g</tt> option overrides this check and the clock will be set to the server time regardless of the chip time. However, and to protect against broken hardware, such as when the CMOS battery fails or the clock counter becomes defective, once the clock has been set, an error greater than 1000s will cause <tt>ntpd</tt> to exit anyway.</p>
+ <p>Under ordinary conditions, <tt>ntpd</tt> adjusts the clock in small steps so that the timescale is effectively continuous and without discontinuities. Under conditions of extreme network congestion, the roundtrip delay jitter can exceed three seconds and the synchronization distance, which is equal to one-half the roundtrip delay plus error budget terms, can become very large. The <tt>ntpd</tt> algorithms discard sample offsets exceeding 128 ms, unless the interval during which no sample offset is less than 128 ms exceeds 900s. The first sample after that, no matter what the offset, steps the clock to the indicated time. In practice this reduces the false alarm rate where the clock is stepped in error to a vanishingly low incidence.</p>
+ <p>As the result of this behavior, once the clock has been set, it very rarely strays more than 128 ms, even under extreme cases of network path congestion and jitter. Sometimes, in particular when <tt>ntpd</tt> is first started, the error might exceed 128 ms. This may on occasion cause the clock to be set backwards if the local clock time is more than 128 s in the future relative to the server. In some applications, this behavior may be unacceptable. If the <tt>-x</tt> option is included on the command line, the clock will never be stepped and only slew corrections will be used.</p>
+ <p>The issues should be carefully explored before deciding to use the <tt>-x</tt> option. The maximum slew rate possible is limited to 500 parts-per-million (PPM) as a consequence of the correctness principles on which the NTP protocol and algorithm design are based. As a result, the local clock can take a long time to converge to an acceptable offset, about 2,000 s for each second the clock is outside the acceptable range. During this interval the local clock will not be consistent with any other network clock and the system cannot be used for distributed applications that require correctly synchronized network time.</p>
+ <p>In spite of the above precautions, sometimes when large frequency errors are present the resulting time offsets stray outside the 128-ms range and an eventual step or slew time correction is required. If following such a correction the frequency error is so large that the first sample is outside the acceptable range, <tt>ntpd</tt> enters the same state as when the <tt>ntp.drift</tt> file is not present. The intent of this behavior is to quickly correct the frequency and restore operation to the normal tracking mode. In the most extreme cases (<tt>time.ien.it</tt> comes to mind), there may be occasional step/slew corrections and subsequent frequency corrections. It helps in these cases to use the <tt>burst</tt> keyword when configuring the server.</p>
+ <h4 id="freq">Frequency Discipline</h4>
+ <p>The <tt>ntpd</tt> behavior at startup depends on whether the frequency file, usually <tt>ntp.drift</tt>, exists. This file contains the latest estimate of clock frequency error. When the <tt>ntpd</tt> is started and the file does not exist, the <tt>ntpd</tt> enters a special mode designed to quickly adapt to the particular system clock oscillator time and frequency error. This takes approximately 15 minutes, after which the time and frequency are set to nominal values and the <tt>ntpd</tt> enters normal mode, where the time and frequency are continuously tracked relative to the server. After one hour the frequency file is created and the current frequency offset written to it. When the <tt>ntpd</tt> is started and the file does exist, the <tt>ntpd</tt> frequency is initialized from the file and enters normal mode immediately. After that the current frequency offset is written to the file at hourly intervals.</p>
+ <h4 id="modes">Operating Modes</h4>
+ <p><tt>ntpd</tt> can operate in any of several modes, including symmetric active/passive, client/server broadcast/multicast and manycast, as described in the <a href="assoc.html">Association Management</a> page. It normally operates continuously while monitoring for small changes in frequency and trimming the clock for the ultimate precision. However, it can operate in a one-time mode where the time is set from an external server and frequency is set from a previously recorded frequency file. A broadcast/multicast or manycast client can discover remote servers, compute server-client propagation delay correction factors and configure itself automatically. This makes it possible to deploy a fleet of workstations without specifying configuration details specific to the local environment.</p>
+ <p>By default, <tt>ntpd</tt> runs in continuous mode where each of possibly several external servers is polled at intervals determined by an intricate state machine. The state machine measures the incidental roundtrip delay jitter and oscillator frequency wander and determines the best poll interval using a heuristic algorithm. Ordinarily, and in most operating environments, the state machine will start with 64s intervals and eventually increase in steps to 1024s. A small amount of random variation is introduced in order to avoid bunching at the servers. In addition, should a server become unreachable for some time, the poll interval is increased in steps to 1024s in order to reduce network overhead.</p>
+ <p>In some cases it may not be practical for <tt>ntpd</tt> to run continuously. A common workaround has been to run the <tt>ntpdate</tt> program from a <tt>cron</tt> job at designated times. However, this program does not have the crafted signal processing, error checking and mitigation algorithms of <tt>ntpd</tt>. The <tt>-q</tt> option is intended for this purpose. Setting this option will cause <tt>ntpd</tt> to exit just after setting the clock for the first time. The procedure for initially setting the clock is the same as in continuous mode; most applications will probably want to specify the <tt>iburst</tt> keyword with the <tt>server</tt> configuration command. With this keyword a volley of messages are exchanged to groom the data and the clock is set in about 10 s. If nothing is heard after a couple of minutes, the daemon times out and exits. After a suitable period of mourning, the <tt>ntpdate</tt> program may be retired.</p>
+ <p>When kernel support is available to discipline the clock frequency, which is the case for stock Solaris, Tru64, Linux and FreeBSD, a useful feature is available to discipline the clock frequency. First, <tt>ntpd</tt> is run in continuous mode with selected servers in order to measure and record the intrinsic clock frequency offset in the frequency file. It may take some hours for the frequency and offset to settle down. Then the <tt>ntpd</tt> is stopped and run in one-time mode as required. At each startup, the frequency is read from the file and initializes the kernel frequency.</p>
+ <h4 id="poll">Poll Interval Control</h4>
+ <p>This version of NTP includes an intricate state machine to reduce the network load while maintaining a quality of synchronization consistent with the observed jitter and wander. There are a number of ways to tailor the operation in order enhance accuracy by reducing the interval or to reduce network overhead by increasing it. However, the user is advised to carefully consider the consequences of changing the poll adjustment range from the default minimum of 64 s to the default maximum of 1,024 s. The default minimum can be changed with the <tt>tinker minpoll</tt> command to a value not less than 16 s. This value is used for all configured associations, unless overridden by the <tt>minpoll</tt> option on the configuration command. Note that most device drivers will not operate properly if the poll interval is less than 64 s and that the broadcast server and manycast client associations will also use the default, unless overridden.</p>
+ <p>In some cases involving dial up or toll services, it may be useful to increase the minimum interval to a few tens of minutes and maximum interval to a day or so. Under normal operation conditions, once the clock discipline loop has stabilized the interval will be increased in steps from the minimum to the maximum. However, this assumes the intrinsic clock frequency error is small enough for the discipline loop correct it. The capture range of the loop is 500 PPM at an interval of 64s decreasing by a factor of two for each doubling of interval. At a minimum of 1,024 s, for example, the capture range is only 31 PPM. If the intrinsic error is greater than this, the drift file <tt>ntp.drift</tt> will have to be specially tailored to reduce the residual error below this limit. Once this is done, the drift file is automatically updated once per hour and is available to initialize the frequency on subsequent daemon restarts.</p>
+ <h4 id="huff">The huff-n'-puff Filter</h4>
+ <p>In scenarios where a considerable amount of data are to be downloaded or uploaded over telephone modems, timekeeping quality can be seriously degraded. This occurs because the differential delays on the two directions of transmission can be quite large. In many cases the apparent time errors are so large as to exceed the step threshold and a step correction can occur during and after the data transfer is in progress.</p>
+ <p>The huff-n'-puff filter is designed to correct the apparent time offset in these cases. It depends on knowledge of the propagation delay when no other traffic is present. In common scenarios this occurs during other than work hours. The filter maintains a shift register that remembers the minimum delay over the most recent interval measured usually in hours. Under conditions of severe delay, the filter corrects the apparent offset using the sign of the offset and the difference between the apparent delay and minimum delay. The name of the filter reflects the negative (huff) and positive (puff) correction, which depends on the sign of the offset.</p>
+ <p>The filter is activated by the <tt>tinker</tt> command and <tt>huffpuff</tt> keyword, as described in the <a href="miscopt.html">Miscellaneous Options</a> page.</p>
+ <h4 id="notes">Notes</h4>
+ <p>If NetInfo support is built into <tt>ntpd</tt>, then <tt>ntpd</tt> will attempt to read its configuration from the NetInfo if the default ntp.conf file cannot be read and no file is specified by the <tt>-c</tt> option.</p>
+ <p>In contexts where a host name is expected, a <tt>-4</tt> qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a <tt>-6</tt> qualifier forces DNS resolution to the IPv6 namespace.</p>
+ <p>Various internal <tt>ntpd</tt> variables can be displayed and configuration options altered while the <tt>ntpd</tt> is running using the <tt><a href="ntpq.html">ntpq</a></tt> and <tt><a href="ntpdc.html">ntpdc</a></tt> utility programs.</p>
+ <p>When <tt>ntpd</tt> starts it looks at the value of <tt>umask</tt>, and if zero <tt>ntpd</tt> will set the <tt>umask</tt> to <tt>022</tt>.</p>
+ <h4 id="cmd">Command Line Options</h4>
+ <dl>
+ <dt><tt>-a</tt>
+ <dd>Require cryptographic authentication for broadcast client, multicast client and symmetric passive associations. This is the default.
+ <dt><tt>-A</tt>
+ <dd>Do not require cryptographic authentication for broadcast client, multicast client and symmetric passive associations. This is almost never a good idea.
+ <dt><tt>-b</tt>
+ <dd>Enable the client to synchronize to broadcast servers.
+ <dt><tt>-c <i>conffile</i></tt>
+ <dd>Specify the name and path of the configuration file, default <tt>/etc/ntp.conf</tt>.
+ <dt><tt>-d</tt>
+ <dd>Specify debugging mode. This option may occur more than once, with each occurrence indicating greater detail of display.
+ <dt><tt>-D <i>level</i></tt>
+ <dd>Specify debugging level directly.
+ <dt><tt>-f <i>driftfile</i></tt>
+ <dd>Specify the name and path of the frequency file, default <tt>/etc/ntp.drift</tt>. This is the same operation as the <tt>driftfile <i>driftfile</i></tt> configuration command.
+ <dt><tt>-g</tt>
+ <dd>Normally, <tt>ntpd</tt> exits with a message to the system log if the offset exceeds the panic threshold, which is 1000 s by default. This option allows the time to be set to any value without restriction; however, this can happen only once. If the threshold is exceeded after that, <tt>ntpd</tt> will exit with a message to the system log. This option can be used with the <tt>-q</tt> and <tt>-x</tt> options. See the <tt>tinker</tt> command for other options.
+ <dt><tt>-i <i>jaildir</i></tt>
+ <dd>Chroot the server to the directory <i>jaildir</i>. This option also implies that the server attempts to drop root privileges at startup (otherwise, chroot gives very little additional security), and it is only available if the OS supports to run the server without full root privileges. You may need to also specify a <tt>-u</tt> option.
+ <dt><tt>-k <i>keyfile</i></tt>
+ <dd>Specify the name and path of the symmetric key file, default <tt>/etc/ntp.keys</tt>. This is the same operation as the <tt>keys <i>keyfile</i></tt> configuration command.
+ <dt><tt>-l <i>logfile</i></tt>
+ <dd>Specify the name and path of the log file. The default is the system log file. This is the same operation as the <tt>logfile <i>logfile</i></tt> configuration command.
+ <dt><tt>-L</tt>
+ <dd>Do not listen to virtual IPs. The default is to listen.
+ <dt><tt>-n</tt>
+ <dd>Don't fork.
+ <dt><tt>-N</tt>
+ <dd>To the extent permitted by the operating system, run the <tt>ntpd</tt> at the highest priority.
+ <dt><tt>-p <i>pidfile</i></tt>
+ <dd>Specify the name and path of the file used to record the <tt>ntpd</tt> process ID. This is the same operation as the <tt>pidfile <i>pidfile</i></tt> configuration command.
+ <dt><tt>-P <i>priority</i></tt>
+ <dd>To the extent permitted by the operating system, run the <tt>ntpd</tt> at the specified priority.
+ <dt><tt>-q</tt>
+ <dd>Exit the <tt>ntpd</tt> just after the first time the clock is set. This behavior mimics that of the <tt>ntpdate</tt> program, which is to be retired. The <tt>-g</tt> and <tt>-x</tt> options can be used with this option. Note:&nbsp;The kernel time discipline is disabled with this option.
+ <dt><tt>-r <i>broadcastdelay</i></tt>
+ <dd>Specify the default propagation delay from the broadcast/multicast server to this client. This is necessary only if the delay cannot be computed automatically by the protocol.
+ <dt><tt>-s <i>statsdir</i></tt>
+ <dd>Specify the directory path for files created by the statistics facility. This is the same operation as the <tt>statsdir <i>statsdir</i></tt> configuration command.
+ <dt><tt>-t <i>key</i></tt>
+ <dd>Add a key number to the trusted key list. This option can occur more than once.
+ <dt><tt>-u <i>user[:group]</i> </tt>
+ <dd>Specify a user, and optionally a group, to switch to. This option is only available if the OS supports to run the server without full root privileges. Currently, this option is supported under NetBSD (configure with --enable-clockctl) and Linux (configure with --enable-linuxcaps).
+ <dt><tt>-U <i>interface update interval</i></tt>
+ <dd>Number of seconds to wait between interface list scans to pick up new and delete network interface. Set to 0 to disable dynamic interface list updating. The default is to scan every 5 minutes.</dd>
+ <dt><tt>-v <i>variable</i></tt>
+ <dt><tt>-V <i>variable</i></tt>
+ <dd>Add a system variable listed by default.
+ <dt><tt>-x</tt>
+ <dd>Normally, the time is slewed if the offset is less than the step threshold, which is 128 ms by default, and stepped if above the threshold. This option sets the threshold to 600 s, which is well within the accuracy window to set the clock manually. Note: Since the slew rate of typical Unix kernels is limited to 0.5 ms/s, each second of adjustment requires an amortization interval of 2000 s. Thus, an adjustment as much as 600 s will take almost 14 days to complete. This option can be used with the <tt>-g</tt> and <tt>-q</tt> options. See the <tt>tinker</tt> command for other options. Note:&nbsp;The kernel time discipline is disabled with this option.
+ </dl>
+ <h4 id="cfg">The Configuration File</h4>
+ <p>Ordinarily, <tt>ntpd</tt> reads the <tt>ntp.conf</tt> configuration file at startup time in order to determine the synchronization sources and operating modes. It is also possible to specify a working, although limited, configuration entirely on the command line, obviating the need for a configuration file. This may be particularly useful when the local host is to be configured as a broadcast/multicast client, with all peers being determined by listening to broadcasts at run time.</p>
+ <p>Usually, the configuration file is installed in the <tt>/etc</tt> directory, but could be installed elsewhere (see the <tt>-c <i>conffile</i></tt> command line option). The file format is similar to other Unix configuration files - comments begin with a <tt>#</tt> character and extend to the end of the line; blank lines are ignored.</p>
+ <p>Configuration commands consist of an initial keyword followed by a list of arguments, some of which may be optional, separated by whitespace. Commands may not be continued over multiple lines. Arguments may be host names, host addresses written in numeric, dotted-quad form, integers, floating point numbers (when specifying times in seconds) and text strings. Optional arguments are delimited by <tt>[ ]</tt> in the following descriptions, while alternatives are separated by <tt>|</tt>. The notation <tt>[ ... ]</tt> means an optional, indefinite repetition of the last item before the <tt>[ ... ]</tt>.</p>
+ <h4 id="opt">Configuration Options</h4>
+ <p><a href="confopt.html">Server Options</a><br>
+ <a href="authopt.html">Authentication Options</a><br>
+ <a href="monopt.html">Monitoring Options</a><br>
+ <a href="accopt.html">Access Control Options</a><br>
+ <a href="manyopt.html">Automatic NTP Configuration Options</a><br>
+ <a href="clockopt.html">Reference Clock Options</a><br>
+ <a href="miscopt.html">Miscellaneous Options</a></p>
+ <h4 id="files">Files</h4>
+ <table width="100%" border="1">
+ <tr>
+ <td width="30%">File</td>
+ <td width="30%">Default</td>
+ <td width="20%">Option</td>
+ <td width="20%">Command</td>
+ </tr>
+ <tr>
+ <td width="30%">configuration file</td>
+ <td width="30%"><tt>/etc/ntp.conf</tt></td>
+ <td width="20%"><tt>-c</tt></td>
+ <td width="20%">none</td>
+ </tr>
+ <tr>
+ <td width="30%">frequency file</td>
+ <td width="30%"><tt>/etc/ntp.drift</tt></td>
+ <td width="20%"><tt>-f</tt></td>
+ <td width="20%"><tt>driftfile</tt></td>
+ </tr>
+ <tr>
+ <td width="30%">process ID file</td>
+ <td width="30%">none</td>
+ <td width="20%"><tt>-p</tt></td>
+ <td width="20%"><tt>pidfile</tt></td>
+ </tr>
+ <tr>
+ <td width="30%">log file</td>
+ <td width="30%">system log</td>
+ <td width="20%"><tt>-l</tt></td>
+ <td width="20%"><tt>logfile</tt></td>
+ </tr>
+ <tr>
+ <td width="30%">include file</td>
+ <td width="30%">none</td>
+ <td width="20%">none</td>
+ <td width="20%"><tt>includefile</tt></td>
+ </tr>
+ <tr>
+ <td width="30%">statistics path</td>
+ <td width="30%"><tt>/var/NTP</tt></td>
+ <td width="20%"><tt>-s</tt></td>
+ <td width="20%"><tt>statsdir</tt></td>
+ </tr>
+ <tr>
+ <td width="30%">keys path</td>
+ <td width="30%"><tt>/usr/local/etc</tt></td>
+ <td width="20%"><tt>-k</tt></td>
+ <td width="20%"><tt>keysdir</tt></td>
+ </tr>
+ </table>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
-</html> \ No newline at end of file
+</html>
diff --git a/contrib/ntp/html/ntpdate.html b/contrib/ntp/html/ntpdate.html
index fe51195..30d8cad 100644
--- a/contrib/ntp/html/ntpdate.html
+++ b/contrib/ntp/html/ntpdate.html
@@ -2,68 +2,71 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>ntpdate - set the date and time via NTP</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>ntpdate - set the date and time via NTP</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3><tt>ntpdate</tt> - set the date and time via NTP</h3>
- <img src="pic/rabbit.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>I told you it was eyeball and wristwatch.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">01:13</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="252">Sunday, December 22, 2002</csobj></p>
- <br clear="left">
- <hr>
- <p>Disclaimer: The functionality of this program is now available in the <tt>ntpd</tt> program. See the <tt>-q</tt> command line option in the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a> page. After a suitable period of mourning, the <tt>ntpdate</tt> program is to be retired from this distribution</p>
- <h4>Synopsis</h4>
- <tt>ntpdate [ -bBdoqsuv ] [ -a <i>key</i> ] [ -e <i>authdelay</i> ] [ -k <i>keyfile</i> ] [ -o <i>version</i> ] [ -p <i>samples</i> ] [ -t <i>timeout</i> ] <i>server</i> [ ... ]</tt>
- <h4>Description</h4>
- <tt>ntpdate</tt> sets the local date and time by polling the Network Time Protocol (NTP) server(s) given as the <i>server</i> arguments to determine the correct time. It must be run as root on the local host. A number of samples are obtained from each of the servers specified and a subset of the NTP clock filter and selection algorithms are applied to select the best of these. Note that the accuracy and reliability of <tt>ntpdate</tt> depends on the number of servers, the number of polls each time it is run and the interval between runs.
- <p><tt>ntpdate</tt> can be run manually as necessary to set the host clock, or it can be run from the host startup script to set the clock at boot time. This is useful in some cases to set the clock initially before starting the NTP daemon <tt>ntpd</tt>. It is also possible to run <tt>ntpdate</tt> from a <tt>cron</tt> script. However, it is important to note that <tt>ntpdate</tt> with contrived <tt>cron</tt> scripts is no substitute for the NTP daemon, which uses sophisticated algorithms to maximize accuracy and reliability while minimizing resource use. Finally, since <tt>ntpdate</tt> does not discipline the host clock frequency as does <tt>ntpd</tt>, the accuracy using <tt>ntpdate</tt> is limited.</p>
- <p>Time adjustments are made by <tt>ntpdate</tt> in one of two ways. If <tt>ntpdate</tt> determines the clock is in error more than 0.5 second it will simply step the time by calling the system <tt>settimeofday()</tt> routine. If the error is less than 0.5 seconds, it will slew the time by calling the system <tt>adjtime()</tt> routine. The latter technique is less disruptive and more accurate when the error is small, and works quite well when <tt>ntpdate</tt> is run by <tt>cron</tt> every hour or two.</p>
- <p><tt>ntpdate</tt> will decline to set the date if an NTP server daemon (e.g., <tt>ntpd</tt>) is running on the same host. When running <tt>ntpdate</tt> on a regular basis from <tt>cron</tt> as an alternative to running a daemon, doing so once every hour or two will result in precise enough timekeeping to avoid stepping the clock.</p>
- <p>Note that in contexts where a host name is expected, a <tt>-4</tt> qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a <tt>-6</tt> qualifier forces DNS resolution to the IPv6 namespace.</p>
- <p>If NetInfo support is compiled into <tt>ntpdate</tt>, then the <tt>server</tt> argument is optional if <tt>ntpdate</tt> can find a time server in the NetInfo configuration for <tt>ntpd</tt>.</p>
- <h4>Command Line Options</h4>
- <dl>
- <dt><tt>-4</tt>
- <dd>Force DNS resolution of following host names on the command line to the IPv4 namespace.
- <dt><tt>-6</tt>
- <dd>Force DNS resolution of following host names on the command line to the IPv6 namespace.
- <dt><tt>-a <i>key</i></tt>
- <dd>Enable the authentication function and specify the key identifier to be used for authentication as the argument <i>key</i><tt>ntpdate</tt>. The keys and key identifiers must match in both the client and server key files. The default is to disable the authentication function.
- <dt><tt>-B</tt>
- <dd>Force the time to always be slewed using the adjtime() system call, even if the measured offset is greater than +-128 ms. The default is to step the time using settimeofday() if the offset is greater than +-128 ms. Note that, if the offset is much greater than +-128 ms in this case, that it can take a long time (hours) to slew the clock to the correct value. During this time. the host should not be used to synchronize clients.
- <dt><tt>-b</tt>
- <dd>Force the time to be stepped using the settimeofday() system call, rather than slewed (default) using the adjtime() system call. This option should be used when called from a startup file at boot time.
- <dt><tt>-d</tt>
- <dd>Enable the debugging mode, in which <tt>ntpdate</tt> will go through all the steps, but not adjust the local clock. Information useful for general debugging will also be printed.
- <dt><tt>-e <i>authdelay</i></tt>
- <dd>Specify the processing delay to perform an authentication function as the value <i>authdelay</i>, in seconds and fraction (see <tt>ntpd</tt> for details). This number is usually small enough to be negligible for most purposes, though specifying a value may improve timekeeping on very slow CPU's.
- <dt><tt>-k <i>keyfile</i></tt>
- <dd>Specify the path for the authentication key file as the string <i>keyfile</i>. The default is <tt>/etc/ntp.keys</tt>. This file should be in the format described in <tt>ntpd</tt>.
- <dt><tt>-o <i>version</i></tt>
- <dd>Specify the NTP version for outgoing packets as the integer <i>version</i>, which can be 1 or 2. The default is 3. This allows <tt>ntpdate</tt> to be used with older NTP versions.
- <dt><tt>-p <i>samples</i></tt>
- <dd>Specify the number of samples to be acquired from each server as the integer <i>samples</i>, with values from 1 to 8 inclusive. The default is 4.
- <dt><i><tt>-q</tt></i>
- <dd>Query only - don't set the clock.
- <dt><tt>-s</tt>
- <dd>Divert logging output from the standard output (default) to the system <tt>syslog</tt> facility. This is designed primarily for convenience of <tt>cron</tt> scripts.
- <dt><tt>-t <i>timeout</i></tt>
- <dd>Specify the maximum time waiting for a server response as the value <i>timeout</i>, in seconds and fraction. The value is is rounded to a multiple of 0.2 seconds. The default is 1 second, a value suitable for polling across a LAN.
- <dt><tt>-u</tt>
- <dd>Direct <tt>ntpdate</tt> to use an unprivileged port or outgoing packets. This is most useful when behind a firewall that blocks incoming traffic to privileged ports, and you want to synchronise with hosts beyond the firewall. Note that the <tt>-d</tt> option always uses unprivileged ports.
- <dt><tt>-<i>v</i></tt>
- <dd>Be verbose. This option will cause <tt>ntpdate</tt>'s version identification string to be logged.
- </dl>
- <h4>Files</h4>
- <tt>/etc/ntp.keys</tt> - encryption keys used by <tt>ntpdate</tt>.
- <h4>Bugs</h4>
- The slew adjustment is actually 50% larger than the measured offset, since this (it is argued) will tend to keep a badly drifting clock more accurate. This is probably not a good idea and may cause a troubling hunt for some values of the kernel variables <tt>tick</tt> and <tt>tickadj</tt>.&nbsp;
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3><tt>ntpdate</tt> - set the date and time via NTP</h3>
+ <img src="pic/rabbit.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>I told you it was eyeball and wristwatch.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:44</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <hr>
+ <p>Disclaimer: The functionality of this program is now available in the <tt>ntpd</tt> program. See the <tt>-q</tt> command line option in the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a> page. After a suitable period of mourning, the <tt>ntpdate</tt> program is to be retired from this distribution</p>
+ <h4>Synopsis</h4>
+ <tt>ntpdate [ -bBdoqsuv ] [ -a <i>key</i> ] [ -e <i>authdelay</i> ] [ -k <i>keyfile</i> ] [ -o <i>version</i> ] [ -p <i>samples</i> ] [ -t <i>timeout</i> ] <i>server</i> [ ... ]</tt>
+ <h4>Description</h4>
+ <tt>ntpdate</tt> sets the local date and time by polling the Network Time Protocol (NTP) server(s) given as the <i>server</i> arguments to determine the correct time. It must be run as root on the local host. A number of samples are obtained from each of the servers specified and a subset of the NTP clock filter and selection algorithms are applied to select the best of these. Note that the accuracy and reliability of <tt>ntpdate</tt> depends on the number of servers, the number of polls each time it is run and the interval between runs.
+ <p><tt>ntpdate</tt> can be run manually as necessary to set the host clock, or it can be run from the host startup script to set the clock at boot time. This is useful in some cases to set the clock initially before starting the NTP daemon <tt>ntpd</tt>. It is also possible to run <tt>ntpdate</tt> from a <tt>cron</tt> script. However, it is important to note that <tt>ntpdate</tt> with contrived <tt>cron</tt> scripts is no substitute for the NTP daemon, which uses sophisticated algorithms to maximize accuracy and reliability while minimizing resource use. Finally, since <tt>ntpdate</tt> does not discipline the host clock frequency as does <tt>ntpd</tt>, the accuracy using <tt>ntpdate</tt> is limited.</p>
+ <p>Time adjustments are made by <tt>ntpdate</tt> in one of two ways. If <tt>ntpdate</tt> determines the clock is in error more than 0.5 second it will simply step the time by calling the system <tt>settimeofday()</tt> routine. If the error is less than 0.5 seconds, it will slew the time by calling the system <tt>adjtime()</tt> routine. The latter technique is less disruptive and more accurate when the error is small, and works quite well when <tt>ntpdate</tt> is run by <tt>cron</tt> every hour or two.</p>
+ <p><tt>ntpdate</tt> will decline to set the date if an NTP server daemon (e.g., <tt>ntpd</tt>) is running on the same host. When running <tt>ntpdate</tt> on a regular basis from <tt>cron</tt> as an alternative to running a daemon, doing so once every hour or two will result in precise enough timekeeping to avoid stepping the clock.</p>
+ <p>Note that in contexts where a host name is expected, a <tt>-4</tt> qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a <tt>-6</tt> qualifier forces DNS resolution to the IPv6 namespace.</p>
+ <p>If NetInfo support is compiled into <tt>ntpdate</tt>, then the <tt>server</tt> argument is optional if <tt>ntpdate</tt> can find a time server in the NetInfo configuration for <tt>ntpd</tt>.</p>
+ <h4>Command Line Options</h4>
+ <dl>
+ <dt><tt>-4</tt>
+ <dd>Force DNS resolution of following host names on the command line to the IPv4 namespace.
+ <dt><tt>-6</tt>
+ <dd>Force DNS resolution of following host names on the command line to the IPv6 namespace.
+ <dt><tt>-a <i>key</i></tt>
+ <dd>Enable the authentication function and specify the key identifier to be used for authentication as the argument <i>key</i><tt>ntpdate</tt>. The keys and key identifiers must match in both the client and server key files. The default is to disable the authentication function.
+ <dt><tt>-B</tt>
+ <dd>Force the time to always be slewed using the adjtime() system call, even if the measured offset is greater than +-128 ms. The default is to step the time using settimeofday() if the offset is greater than +-128 ms. Note that, if the offset is much greater than +-128 ms in this case, that it can take a long time (hours) to slew the clock to the correct value. During this time. the host should not be used to synchronize clients.
+ <dt><tt>-b</tt>
+ <dd>Force the time to be stepped using the settimeofday() system call, rather than slewed (default) using the adjtime() system call. This option should be used when called from a startup file at boot time.
+ <dt><tt>-d</tt>
+ <dd>Enable the debugging mode, in which <tt>ntpdate</tt> will go through all the steps, but not adjust the local clock. Information useful for general debugging will also be printed.
+ <dt><tt>-e <i>authdelay</i></tt>
+ <dd>Specify the processing delay to perform an authentication function as the value <i>authdelay</i>, in seconds and fraction (see <tt>ntpd</tt> for details). This number is usually small enough to be negligible for most purposes, though specifying a value may improve timekeeping on very slow CPU's.
+ <dt><tt>-k <i>keyfile</i></tt>
+ <dd>Specify the path for the authentication key file as the string <i>keyfile</i>. The default is <tt>/etc/ntp.keys</tt>. This file should be in the format described in <tt>ntpd</tt>.
+ <dt><tt>-o <i>version</i></tt>
+ <dd>Specify the NTP version for outgoing packets as the integer <i>version</i>, which can be 1 or 2. The default is 3. This allows <tt>ntpdate</tt> to be used with older NTP versions.
+ <dt><tt>-p <i>samples</i></tt>
+ <dd>Specify the number of samples to be acquired from each server as the integer <i>samples</i>, with values from 1 to 8 inclusive. The default is 4.
+ <dt><i><tt>-q</tt></i>
+ <dd>Query only - don't set the clock.
+ <dt><tt>-s</tt>
+ <dd>Divert logging output from the standard output (default) to the system <tt>syslog</tt> facility. This is designed primarily for convenience of <tt>cron</tt> scripts.
+ <dt><tt>-t <i>timeout</i></tt>
+ <dd>Specify the maximum time waiting for a server response as the value <i>timeout</i>, in seconds and fraction. The value is is rounded to a multiple of 0.2 seconds. The default is 1 second, a value suitable for polling across a LAN.
+ <dt><tt>-u</tt>
+ <dd>Direct <tt>ntpdate</tt> to use an unprivileged port or outgoing packets. This is most useful when behind a firewall that blocks incoming traffic to privileged ports, and you want to synchronise with hosts beyond the firewall. Note that the <tt>-d</tt> option always uses unprivileged ports.
+ <dt><tt>-<i>v</i></tt>
+ <dd>Be verbose. This option will cause <tt>ntpdate</tt>'s version identification string to be logged.
+ </dl>
+ <h4>Diagnostics</h4>
+ <tt>ntpdate</tt>'s exit status is zero if it finds a server and updates the clock, and nonzero otherwise.
+ <h4>Files</h4>
+ <tt>/etc/ntp.keys</tt> - encryption keys used by <tt>ntpdate</tt>.
+ <h4>Bugs</h4>
+ The slew adjustment is actually 50% larger than the measured offset, since this (it is argued) will tend to keep a badly drifting clock more accurate. This is probably not a good idea and may cause a troubling hunt for some values of the kernel variables <tt>tick</tt> and <tt>tickadj</tt>.&nbsp;
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
-</html> \ No newline at end of file
+</html>
diff --git a/contrib/ntp/html/ntpdc.html b/contrib/ntp/html/ntpdc.html
index c29c0a2..92fde1d 100644
--- a/contrib/ntp/html/ntpdc.html
+++ b/contrib/ntp/html/ntpdc.html
@@ -2,157 +2,214 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>ntpdc - special NTP query program</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>ntpdc - special NTP query program</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3><tt>ntpdc</tt> - special NTP query program</h3>
- <img src="pic/alice31.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>This program is a big puppy.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">21:39</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="230">Sunday, January 26, 2003</csobj></p>
- <br clear="left">
- <h4>More Help</h4>
- <script type="text/javascript" language="javascript" src="scripts/links12.txt"></script>
- <hr>
- <h4>Synopsis</h4>
- <tt>ntpdc [ -ilnps ] [ -c <i>command</i> ] [ <i>host</i> ] [ ... ]</tt>
- <h4>Description</h4>
- <tt>ntpdc</tt> is used to query the <tt>ntpd</tt> daemon about its current state and to request changes in that state. The program may be run either in interactive mode or controlled using command line arguments. Extensive state and statistics information is available through the <tt>ntpdc</tt> interface. In addition, nearly all the configuration options which can be specified at startup using ntpd's configuration file may also be specified at run time using <tt>ntpdc</tt>.
- <p>If one or more request options are included on the command line when <tt>ntpdc</tt> is executed, each of the requests will be sent to the NTP servers running on each of the hosts given as command line arguments, or on localhost by default. If no request options are given, <tt>ntpdc</tt> will attempt to read commands from the standard input and execute these on the NTP server running on the first host given on the command line, again defaulting to localhost when no other host is specified. <tt>ntpdc</tt> will prompt for commands if the standard input is a terminal device.</p>
- <p><tt>ntpdc</tt> uses NTP mode 7 packets to communicate with the NTP server, and hence can be used to query any compatible server on the network which permits it. Note that since NTP is a UDP protocol this communication will be somewhat unreliable, especially over large distances in terms of network topology. <tt>ntpdc</tt> makes no attempt to retransmit requests, and will time requests out if the remote host is not heard from within a suitable timeout time.</p>
- <p>The operation of <tt>ntpdc</tt> are specific to the particular implementation of the <tt>ntpd</tt> daemon and can be expected to work only with this and maybe some previous versions of the daemon. Requests from a remote <tt>ntpdc</tt> program which affect the state of the local server must be authenticated, which requires both the remote program and local server share a common key and key identifier.</p>
- <p>Note that in contexts where a host name is expected, a <tt>-4</tt> qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a <tt>-6</tt> qualifier forces DNS resolution to the IPv6 namespace.</p>
- <h4>Command Line Options</h4>
- <p>Specifying a command line option other than <tt>-i</tt> or <tt>-n</tt> will cause the specified query (queries) to be sent to the indicated host(s) immediately. Otherwise, <tt>ntpdc</tt> will attempt to read interactive format commands from the standard input.</p>
- <dl>
- <dt><tt>-4</tt>
- <dd>Force DNS resolution of following host names on the command line to the IPv4 namespace.
- <dt><tt>-6</tt>
- <dd>Force DNS resolution of following host names on the command line to the IPv6 namespace.
- <dt><tt>-c <i>command</i></tt>
- <dd>The following argument is interpreted as an interactive format command and is added to the list of commands to be executed on the specified host(s). Multiple -c options may be given.
- <dt><tt>-i</tt>
- <dd>Force <tt>ntpdc</tt> to operate in interactive mode. Prompts will be written to the standard output and commands read from the standard input.
- <dt><tt>-l</tt>
- <dd>Obtain a list of peers which are known to the server(s). This switch is equivalent to <tt>-c listpeers</tt>.
- <dt><tt>-n</tt>
- <dd>Output all host addresses in dotted-quad numeric format rather than converting to the canonical host names.
- <dt><tt>-p</tt>
- <dd>Print a list of the peers known to the server as well as a summary of their state. This is equivalent to <tt>-c peers</tt>.
- <dt><tt>-s</tt>
- <dd>Print a list of the peers known to the server as well as a summary of their state, but in a slightly different format than the -p switch. This is equivalent to <tt>-c dmpeers</tt>.
- </dl>
- <h4>Interactive Commands</h4>
- <p>Interactive format commands consist of a keyword followed by zero to four arguments. Only enough characters of the full keyword to uniquely identify the command need be typed. The output of a command is normally sent to the standard output, but optionally the output of individual commands may be sent to a file by appending a <tt>&lt;</tt>, followed by a file name, to the command line.</p>
- <p>A number of interactive format commands are executed entirely within the <tt>ntpdc</tt> program itself and do not result in NTP mode 7 requests being sent to a server. These are described following.</p>
- <dl>
- <dt><tt>? [ <i>command_keyword</i> ]</tt><br>
- <tt>help [ <i>command_keyword</i> ]</tt>
- <dd>A <tt>?</tt> by itself will print a list of all the command keywords known to this incarnation of <tt>ntpq</tt>. A <tt>?</tt> followed by a command keyword will print function and usage information about the command. This command is probably a better source of information about <tt>ntpq</tt> than this manual page.
- <dt><tt>delay <i>milliseconds</i></tt>
- <dd>Specify a time interval to be added to timestamps included in requests which require authentication. This is used to enable (unreliable) server reconfiguration over long delay network paths or between machines whose clocks are unsynchronized. Actually the server does not now require timestamps in authenticated requests, so this command may be obsolete.
- <dt><tt>host <i>hostname</i></tt>
- <dd>Set the host to which future queries will be sent. Hostname may be either a host name or a numeric address.
- <dt><tt>hostnames [ yes | no ]</tt>
- <dd>If <tt>yes</tt> is specified, host names are printed in information displays. If <tt>no</tt> is specified, numeric addresses are printed instead. The default is <tt>yes</tt>, unless modified using the command line <tt>-n</tt> switch.
- <dt><tt>keyid <i>keyid</i></tt>
- <dd>This command allows the specification of a key number to be used to authenticate configuration requests. This must correspond to a key number the server has been configured to use for this purpose.
- <dt><tt>quit</tt>
- <dd>Exit <tt>ntpdc</tt>.
- <dt><tt>passwd</tt>
- <dd>This command prompts you to type in a password (which will not be echoed) which will be used to authenticate configuration requests. The password must correspond to the key configured for use by the NTP server for this purpose if such requests are to be successful.
- <dt><tt>timeout <i>millseconds</i></tt>
- <dd>Specify a timeout period for responses to server queries. The default is about 8000 milliseconds. Note that since <tt>ntpdc</tt> retries each query once after a timeout, the total waiting time for a timeout will be twice the timeout value set.
- </dl>
- <h4>Control Message Commands</h4>
- <p>Query commands result in NTP mode 7 packets containing requests for information being sent to the server. These are read-only commands in that they make no modification of the server configuration state.</p>
- <dl>
- <dt><tt>listpeers</tt>
- <dd>Obtains and prints a brief list of the peers for which the server is maintaining state. These should include all configured peer associations as well as those peers whose stratum is such that they are considered by the server to be possible future synchronization candidates.
- <dt><tt>peers</tt>
- <dd>Obtains a list of peers for which the server is maintaining state, along with a summary of that state. Summary information includes the address of the remote peer, the local interface address (0.0.0.0 if a local address has yet to be determined), the stratum of the remote peer (a stratum of 16 indicates the remote peer is unsynchronized), the polling interval, in seconds, the reachability register, in octal, and the current estimated delay, offset and dispersion of the peer, all in seconds.
- <p>The character in the left margin indicates the mode this peer entry is operating in. A <tt>+</tt> denotes symmetric active, a <tt>-</tt> indicates symmetric passive, a <tt>=</tt> means the remote server is being polled in client mode, a <tt>^</tt> indicates that the server is broadcasting to this address, a <tt>~</tt> denotes that the remote peer is sending broadcasts and a <tt>*</tt> marks the peer the server is currently synchronizing to.</p>
- <p>The contents of the host field may be one of four forms. It may be a host name, an IP address, a reference clock implementation name with its parameter or <tt>REFCLK(<i>implementation number</i>, <i>parameter</i>)</tt>. On <tt>hostnames no</tt> only IP-addresses will be displayed.</p>
- <dt><tt>dmpeers</tt>
- <dd>A slightly different peer summary list. Identical to the output of the <tt>peers</tt> command, except for the character in the leftmost column. Characters only appear beside peers which were included in the final stage of the clock selection algorithm. A <tt>.</tt> indicates that this peer was cast off in the falseticker detection, while a <tt>+</tt> indicates that the peer made it through. A <tt>*</tt> denotes the peer the server is currently synchronizing with.
- <dt><tt>showpeer <i>peer_address</i> [...]</tt>
- <dd>Shows a detailed display of the current peer variables for one or more peers. Most of these values are described in the NTP Version 2 specification.
- <dt><tt>pstats <i>peer_address</i> [...]</tt>
- <dd>Show per-peer statistic counters associated with the specified peer(s).
- <dt><tt>clockinfo <i>clock_peer_address</i> [...]</tt>
- <dd>Obtain and print information concerning a peer clock. The values obtained provide information on the setting of fudge factors and other clock performance information.
- <dt><tt>kerninfo</tt>
- <dd>Obtain and print kernel phase-lock loop operating parameters. This information is available only if the kernel has been specially modified for a precision timekeeping function.
- <dt><tt>loopinfo [ oneline | multiline ]</tt>
- <dd>Print the values of selected loop filter variables. The loop filter is the part of NTP which deals with adjusting the local system clock. The <tt>offset</tt> is the last offset given to the loop filter by the packet processing code. The <tt>frequency</tt> is the frequency error of the local clock in parts-per-million (ppm). The <tt>time_const</tt> controls the stiffness of the phase-lock loop and thus the speed at which it can adapt to oscillator drift. The <tt>watchdog timer</tt> value is the number of seconds which have elapsed since the last sample offset was given to the loop filter. The <tt>oneline</tt> and <tt>multiline</tt> options specify the format in which this information is to be printed, with <tt>multiline</tt> as the default.
- <dt><tt>sysinfo</tt>
- <dd>Print a variety of system state variables, i.e., state related to the local server. All except the last four lines are described in the NTP Version 3 specification, RFC-1305.
- <p>The <tt>system flags</tt> show various system flags, some of which can be set and cleared by the <tt>enable</tt> and <tt>disable</tt> configuration commands, respectively. These are the <tt>auth</tt>, <tt>bclient</tt>, <tt>monitor</tt>, <tt>pll</tt>, <tt>pps</tt> and <tt>stats</tt> flags. See the <tt>ntpd</tt> documentation for the meaning of these flags. There are two additional flags which are read only, the <tt>kernel_pll</tt> and <tt>kernel_pps</tt>. These flags indicate the synchronization status when the precision time kernel modifications are in use. The <tt>kernel_pll</tt> indicates that the local clock is being disciplined by the kernel, while the kernel_pps indicates the kernel discipline is provided by the PPS signal.</p>
- <p>The <tt>stability</tt> is the residual frequency error remaining afterthe system frequency correction is applied and is intended for maintenance and debugging. In most architectures, this value will initially decrease from as high as 500 ppm to a nominal value in the range .01 to 0.1 ppm. If it remains high for some time after starting the daemon, something may be wrong with the local clock, or the value of the kernel variable <tt>tick</tt> may be incorrect.</p>
- <p>The <tt>broadcastdelay</tt> shows the default broadcast delay, as set by the <tt>broadcastdelay</tt> configuration command.</p>
- <p>The <tt>authdelay</tt> shows the default authentication delay, as set by the <tt>authdelay</tt> configuration command.</p>
- <dt><tt>sysstats</tt>
- <dd>Print statistics counters maintained in the protocol module.
- <dt><tt>memstats</tt>
- <dd>Print statistics counters related to memory allocation code.
- <dt><tt>iostats</tt>
- <dd>Print statistics counters maintained in the input-output module.
- <dt><tt>timerstats</tt>
- <dd>Print statistics counters maintained in the timer/event queue support code.
- <dt><tt>reslist</tt>
- <dd>Obtain and print the server's restriction list. This list is (usually) printed in sorted order and may help to understand how the restrictions are applied.
- <dt><tt>monlist [ <i>version</i> ]</tt>
- <dd>Obtain and print traffic counts collected and maintained by the monitor facility. The version number should not normally need to be specified.
- <dt><tt>clkbug <i>clock_peer_address</i> [...]</tt>
- <dd>Obtain debugging information for a reference clock driver. This information is provided only by some clock drivers and is mostly undecodable without a copy of the driver source in hand.
- </dl>
- <h4>Runtime Configuration Requests</h4>
- <p>All requests which cause state changes in the server are authenticated by the server using a configured NTP key (the facility can also be disabled by the server by not configuring a key). The key number and the corresponding key must also be made known to <tt>ntpdc<\tt>. This can be done using the keyid and passwd commands, the latter of which will prompt at the terminal for a password to use as the encryption key. You will also be prompted automatically for both the key number and password the first time a command which would result in an authenticated request to the server is given. Authentication not only provides verification that the requester has permission to make such changes, but also gives an extra degree of protection again transmission errors.</p>
- <p>Authenticated requests always include a timestamp in the packet data, which is included in the computation of the authentication code. This timestamp is compared by the server to its receive time stamp. If they differ by more than a small amount the request is rejected. This is done for two reasons. First, it makes simple replay attacks on the server, by someone who might be able to overhear traffic on your LAN, much more difficult. Second, it makes it more difficult to request configuration changes to your server from topologically remote hosts. While the reconfiguration facility will work well with a server on the local host, and may work adequately between time-synchronized hosts on the same LAN, it will work very poorly for more distant hosts. As such, if reasonable passwords are chosen, care is taken in the distribution and protection of keys and appropriate source address restrictions are applied, the run time reconfiguration facility should provide an adequate level of security.</p>
- <p>The following commands all make authenticated requests.</p>
- <dl>
- <dt><tt>addpeer <i>peer_address</i> [ <i>keyid</i> ] [ <i>version</i> ] [ <i>prefer</i> ]</tt>
- <dd>Add a configured peer association at the given address and operating in symmetric active mode. Note that an existing association with the same peer may be deleted when this command is executed, or may simply be converted to conform to the new configuration, as appropriate. If the optional <tt>keyid</tt> is a nonzero integer, all outgoing packets to the remote server will have an authentication field attached encrypted with this key. If the value is 0 (or not given) no authentication will be done. The <tt>version#</tt> can be 1, 2 or 3 and defaults to 3. The <tt>prefer</tt> keyword indicates a preferred peer (and thus will be used primarily for clock synchronisation if possible). The preferred peer also determines the validity of the PPS signal - if the preferred peer is suitable for synchronisation so is the PPS signal.
- <dt><tt>addserver <i>peer_address</i> [ <i>keyid</i> ] [ <i>version</i> ] [ <i>prefer</i> ]</tt>
- <dd>Identical to the addpeer command, except that the operating mode is client.
- <dt><tt>broadcast <i>peer_address</i> [ <i>keyid</i> ] [ <i>version</i> ] [ <i>prefer</i> ]</tt>
- <dd>Identical to the addpeer command, except that the operating mode is broadcast. In this case a valid key identifier and key are required. The <tt>peer_address</tt> parameter can be the broadcast address of the local network or a multicast group address assigned to NTP. If a multicast address, a multicast-capable kernel is required.
- <dt><tt>unconfig <i>peer_address</i> [...]</tt>
- <dd>This command causes the configured bit to be removed from the specified peer(s). In many cases this will cause the peer association to be deleted. When appropriate, however, the association may persist in an unconfigured mode if the remote peer is willing to continue on in this fashion.
- <dt><tt>fudge <i>peer_address</i> [ <i>time1</i> ] [ <i>time2</i> ] [ <i>stratum</i> ] [ <i>refid</i> ]</tt>
- <dd>This command provides a way to set certain data for a reference clock. See the source listing for further information.
- <dt><tt>enable [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats]</tt><br>
- <tt>disable [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats]</tt>
- <dd>These commands operate in the same way as the <tt>enable</tt> and <tt>disable</tt> configuration file commands of <tt>ntpd</tt>. See the <a href="miscopt.html">Miscellaneous Options</a> page for further information.
- <dt><tt>restrict <i>address mask flag</i> [ <i>flag</i> ]</tt>
- <dd>This command operates in the same way as the <tt>restrict</tt> configuration file commands of <tt>ntpd</tt>.
- <dt><tt>unrestrict <i>address mask flag</i> [ <i>flag</i> ]</tt>
- <dd>Unrestrict the matching entry from the restrict list.
- <dt><tt>delrestrict <i>address mask [ ntpport ]</i></tt>
- <dd>Delete the matching entry from the restrict list.
- <dt><tt>readkeys</tt>
- <dd>Causes the current set of authentication keys to be purged and a new set to be obtained by rereading the keys file (which must have been specified in the <tt>ntpd</tt> configuration file). This allows encryption keys to be changed without restarting the server.
- <dt><tt>trustedkey <i>keyid</i> [...]</tt>
- <dt><tt>untrustedkey <i>keyid</i> [...]</tt>
- <dd>These commands operate in the same way as the <tt>trustedkey</tt> and <tt>untrustedkey</tt> configuration file commands of <tt>ntpd</tt>.
- <dt><tt>authinfo</tt>
- <dd>Returns information concerning the authentication module, including known keys and counts of encryptions and decryptions which have been done.
- <dt><tt>traps</tt>
- <dd>Display the traps set in the server. See the source listing for further information.
- <dt><tt>addtrap [ <i>address</i> [ <i>port</i> ] [ <i>interface</i> ]</tt>
- <dd>Set a trap for asynchronous messages. See the source listing for further information.
- <dt><tt>clrtrap [ <i>address</i> [ <i>port</i> ] [ <i>interface</i>]</tt>
- <dd>Clear a trap for asynchronous messages. See the source listing for further information.
- <dt><tt>reset</tt>
- <dd>Clear the statistics counters in various modules of the server. See the source listing for further information.
- </dl>
- <h4>Bugs</h4>
- <p><tt>ntpdc</tt> is a crude hack. Much of the information it shows is deadly boring and could only be loved by its implementer. The program was designed so that new (and temporary) features were easy to hack in, at great expense to the program's ease of use. Despite this, the program is occasionally useful.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3><tt>ntpdc</tt> - special NTP query program</h3>
+ <img src="pic/alice31.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>This program is a big puppy.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">04:11 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="294">Monday, November 27, 2006</csobj></p>
+ <br clear="left">
+ <h4>More Help</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links12.txt"></script>
+ <hr>
+ <h4>Synopsis</h4>
+ <tt>ntpdc [ -ilnps ] [ -c <i>command</i> ] [ <i>host</i> ] [ ... ]</tt>
+ <h4>Description</h4>
+ <tt>ntpdc</tt> is used to query the <tt>ntpd</tt> daemon about its current state and to request changes in that state. The program may be run either in interactive mode or controlled using command line arguments. Extensive state and statistics information is available through the <tt>ntpdc</tt> interface. In addition, nearly all the configuration options which can be specified at startup using ntpd's configuration file may also be specified at run time using <tt>ntpdc</tt>.
+ <p>If one or more request options are included on the command line when <tt>ntpdc</tt> is executed, each of the requests will be sent to the NTP servers running on each of the hosts given as command line arguments, or on localhost by default. If no request options are given, <tt>ntpdc</tt> will attempt to read commands from the standard input and execute these on the NTP server running on the first host given on the command line, again defaulting to localhost when no other host is specified. <tt>ntpdc</tt> will prompt for commands if the standard input is a terminal device.</p>
+ <p><tt>ntpdc</tt> uses NTP mode 7 packets to communicate with the NTP server, and hence can be used to query any compatible server on the network which permits it. Note that since NTP is a UDP protocol this communication will be somewhat unreliable, especially over large distances in terms of network topology. <tt>ntpdc</tt> makes no attempt to retransmit requests, and will time requests out if the remote host is not heard from within a suitable timeout time.</p>
+ <p>The operation of <tt>ntpdc</tt> are specific to the particular implementation of the <tt>ntpd</tt> daemon and can be expected to work only with this and maybe some previous versions of the daemon. Requests from a remote <tt>ntpdc</tt> program which affect the state of the local server must be authenticated, which requires both the remote program and local server share a common key and key identifier.</p>
+ <p>Note that in contexts where a host name is expected, a <tt>-4</tt> qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a <tt>-6</tt> qualifier forces DNS resolution to the IPv6 namespace.</p>
+ <h4>Command Line Options</h4>
+ <p>Specifying a command line option other than <tt>-i</tt> or <tt>-n</tt> will cause the specified query (queries) to be sent to the indicated host(s) immediately. Otherwise, <tt>ntpdc</tt> will attempt to read interactive format commands from the standard input.</p>
+ <dl>
+ <dt><tt>-4</tt>
+ <dd>Force DNS resolution of following host names on the command line to the IPv4 namespace.
+ <dt><tt>-6</tt>
+ <dd>Force DNS resolution of following host names on the command line to the IPv6 namespace.
+ <dt><tt>-c <i>command</i></tt>
+ <dd>The following argument is interpreted as an interactive format command and is added to the list of commands to be executed on the specified host(s). Multiple -c options may be given.
+ <dt><tt>-i</tt>
+ <dd>Force <tt>ntpdc</tt> to operate in interactive mode. Prompts will be written to the standard output and commands read from the standard input.
+ <dt><tt>-l</tt>
+ <dd>Obtain a list of peers which are known to the server(s). This switch is equivalent to <tt>-c listpeers</tt>.
+ <dt><tt>-n</tt>
+ <dd>Output all host addresses in dotted-quad numeric format rather than converting to the canonical host names.
+ <dt><tt>-p</tt>
+ <dd>Print a list of the peers known to the server as well as a summary of their state. This is equivalent to <tt>-c peers</tt>.
+ <dt><tt>-s</tt>
+ <dd>Print a list of the peers known to the server as well as a summary of their state, but in a slightly different format than the -p switch. This is equivalent to <tt>-c dmpeers</tt>.
+ </dl>
+ <h4>Interactive Commands</h4>
+ <p>Interactive format commands consist of a keyword followed by zero to four arguments. Only enough characters of the full keyword to uniquely identify the command need be typed. The output of a command is normally sent to the standard output, but optionally the output of individual commands may be sent to a file by appending a <tt>&lt;</tt>, followed by a file name, to the command line.</p>
+ <p>A number of interactive format commands are executed entirely within the <tt>ntpdc</tt> program itself and do not result in NTP mode 7 requests being sent to a server. These are described following.</p>
+ <dl>
+ <dt><tt>? [ <i>command_keyword</i> ]</tt><br>
+ <tt>help [ <i>command_keyword</i> ]</tt>
+ <dd>A <tt>?</tt> by itself will print a list of all the command keywords known to this incarnation of <tt>ntpq</tt>. A <tt>?</tt> followed by a command keyword will print function and usage information about the command. This command is probably a better source of information about <tt>ntpq</tt> than this manual page.
+ <dt><tt>delay <i>milliseconds</i></tt>
+ <dd>Specify a time interval to be added to timestamps included in requests which require authentication. This is used to enable (unreliable) server reconfiguration over long delay network paths or between machines whose clocks are unsynchronized. Actually the server does not now require timestamps in authenticated requests, so this command may be obsolete.
+ <dt><tt>host <i>hostname</i></tt>
+ <dd>Set the host to which future queries will be sent. Hostname may be either a host name or a numeric address.
+ <dt><tt>hostnames [ yes | no ]</tt>
+ <dd>If <tt>yes</tt> is specified, host names are printed in information displays. If <tt>no</tt> is specified, numeric addresses are printed instead. The default is <tt>yes</tt>, unless modified using the command line <tt>-n</tt> switch.
+ <dt><tt>keyid <i>keyid</i></tt>
+ <dd>This command allows the specification of a
+ key number to be used to authenticate configuration
+ requests from ntpdc to the host(s). This must
+ correspond to a key number which the host/server has
+ been configured to use for this purpose (server
+ options: <tt>trustedkey</tt>, and
+ <tt>requestkey</tt>). If authentication is not
+ enabled on the host(s) for ntpdc
+ commands, the command
+ <tt>"keyid 0"</tt> should be given; otherwise the
+ <i>keyid</i> of the next subsequent <tt>addpeer/addserver/broadcast
+ </tt> command will
+ be used.
+ <dt><tt>quit</tt>
+ <dd>Exit <tt>ntpdc</tt>.
+ <dt><tt>passwd</tt>
+ <dd>This command prompts you to type in a password (which will not be echoed) which will be used to authenticate configuration requests. The password must correspond to the key configured for use by the NTP server for this purpose if such requests are to be successful.
+ <dt><tt>timeout <i>milliseconds</i></tt>
+ <dd>Specify a timeout period for responses to server queries. The default is about 8000 milliseconds. Note that since <tt>ntpdc</tt> retries each query once after a timeout, the total waiting time for a timeout will be twice the timeout value set.
+ </dl>
+ <h4>Control Message Commands</h4>
+ <p>Query commands result in NTP mode 7 packets containing requests for information being sent to the server. These are read-only commands in that they make no modification of the server configuration state.</p>
+ <dl>
+ <dt><tt>listpeers</tt>
+ <dd>Obtains and prints a brief list of the peers for which the server is maintaining state. These should include all configured peer associations as well as those peers whose stratum is such that they are considered by the server to be possible future synchronization candidates.
+ <dt><tt>peers</tt>
+ <dd>Obtains a list of peers for which the server is maintaining state, along with a summary of that state. Summary information includes the address of the remote peer, the local interface address (0.0.0.0 if a local address has yet to be determined), the stratum of the remote peer (a stratum of 16 indicates the remote peer is unsynchronized), the polling interval, in seconds, the reachability register, in octal, and the current estimated delay, offset and dispersion of the peer, all in seconds.
+ <p>The character in the left margin indicates the mode this peer entry is operating in. A <tt>+</tt> denotes symmetric active, a <tt>-</tt> indicates symmetric passive, a <tt>=</tt> means the remote server is being polled in client mode, a <tt>^</tt> indicates that the server is broadcasting to this address, a <tt>~</tt> denotes that the remote peer is sending broadcasts and a <tt>*</tt> marks the peer the server is currently synchronizing to.</p>
+ <p>The contents of the host field may be one of four forms. It may be a host name, an IP address, a reference clock implementation name with its parameter or <tt>REFCLK(<i>implementation number</i>, <i>parameter</i>)</tt>. On <tt>hostnames no</tt> only IP-addresses will be displayed.</p>
+ <dt><tt>dmpeers</tt>
+ <dd>A slightly different peer summary list. Identical to the output of the <tt>peers</tt> command, except for the character in the leftmost column. Characters only appear beside peers which were included in the final stage of the clock selection algorithm. A <tt>.</tt> indicates that this peer was cast off in the falseticker detection, while a <tt>+</tt> indicates that the peer made it through. A <tt>*</tt> denotes the peer the server is currently synchronizing with.
+ <dt><tt>showpeer <i>peer_address</i> [...]</tt>
+ <dd>Shows a detailed display of the current peer variables for one or more peers. Most of these values are described in the NTP Version 2 specification.
+ <dt><tt>pstats <i>peer_address</i> [...]</tt>
+ <dd>Show per-peer statistic counters associated with the specified peer(s).
+ <dt><tt>clockinfo <i>clock_peer_address</i> [...]</tt>
+ <dd>Obtain and print information concerning a peer clock. The values obtained provide information on the setting of fudge factors and other clock performance information.
+ <dt><tt>kerninfo</tt>
+ <dd>Obtain and print kernel phase-lock loop operating parameters. This information is available only if the kernel has been specially modified for a precision timekeeping function.
+ <dt><tt>loopinfo [ oneline | multiline ]</tt>
+ <dd>Print the values of selected loop filter variables. The loop filter is the part of NTP which deals with adjusting the local system clock. The <tt>offset</tt> is the last offset given to the loop filter by the packet processing code. The <tt>frequency</tt> is the frequency error of the local clock in parts-per-million (ppm). The <tt>time_const</tt> controls the stiffness of the phase-lock loop and thus the speed at which it can adapt to oscillator drift. The <tt>watchdog timer</tt> value is the number of seconds which have elapsed since the last sample offset was given to the loop filter. The <tt>oneline</tt> and <tt>multiline</tt> options specify the format in which this information is to be printed, with <tt>multiline</tt> as the default.
+ <dt><tt>sysinfo</tt>
+ <dd>Print a variety of system state variables, i.e., state related to the local server. All except the last four lines are described in the NTP Version 3 specification, RFC-1305.
+ <p>The <tt>system flags</tt> show various system flags, some of which can be set and cleared by the <tt>enable</tt> and <tt>disable</tt> configuration commands, respectively. These are the <tt>auth</tt>, <tt>bclient</tt>, <tt>monitor</tt>, <tt>pll</tt>, <tt>pps</tt> and <tt>stats</tt> flags. See the <tt>ntpd</tt> documentation for the meaning of these flags. There are two additional flags which are read only, the <tt>kernel_pll</tt> and <tt>kernel_pps</tt>. These flags indicate the synchronization status when the precision time kernel modifications are in use. The <tt>kernel_pll</tt> indicates that the local clock is being disciplined by the kernel, while the kernel_pps indicates the kernel discipline is provided by the PPS signal.</p>
+ <p>The <tt>stability</tt> is the residual frequency error remaining after the system frequency correction is applied and is intended for maintenance and debugging. In most architectures, this value will initially decrease from as high as 500 ppm to a nominal value in the range .01 to 0.1 ppm. If it remains high for some time after starting the daemon, something may be wrong with the local clock, or the value of the kernel variable <tt>tick</tt> may be incorrect.</p>
+ <p>The <tt>broadcastdelay</tt> shows the default broadcast delay, as set by the <tt>broadcastdelay</tt> configuration command.</p>
+ <p>The <tt>authdelay</tt> shows the default authentication delay, as set by the <tt>authdelay</tt> configuration command.</p>
+ <dt><tt>sysstats</tt>
+ <dd>Print statistics counters maintained in the protocol module.
+ <dt><tt>memstats</tt>
+ <dd>Print statistics counters related to memory allocation code.
+ <dt><tt>iostats</tt>
+ <dd>Print statistics counters maintained in the input-output module.
+ <dt><tt>timerstats</tt>
+ <dd>Print statistics counters maintained in the timer/event queue support code.
+ <dt><tt>reslist</tt>
+ <dd>Obtain and print the server's restriction list. This list is (usually) printed in sorted order and may help to understand how the restrictions are applied.
+ <dt><tt>ifstats</tt>
+ <dd>List interface statistics for interfaces used by ntpd for network communication.</dd>
+ <dt><tt>ifreload</tt>
+ <dd>Force rescan of current system interfaces. Outputs interface statistics for interfaces that could possibly change. Marks unchanged interfaces with <b>.</b>, added interfaces with <b>+</b> and deleted interfaces with <b>-</b>.</dd>
+ <dt><tt>monlist [ <i>version</i> ]</tt>
+ <dd>Obtain and print traffic counts collected and maintained by the monitor facility. The version number should not normally need to be specified.
+ <dt><tt>clkbug <i>clock_peer_address</i> [...]</tt>
+ <dd>Obtain debugging information for a reference clock driver. This information is provided only by some clock drivers and is mostly undecodable without a copy of the driver source in hand.
+ </dl>
+ <h4>Runtime Configuration Requests</h4>
+ <p>All requests which cause state changes in the server are authenticated by the server using a configured NTP key (the facility can also be disabled by the server by not configuring a key). The key number and the corresponding key must also be made known to <tt>ntpdc</tt>. This can be done using the keyid and passwd commands, the latter of which will prompt at the terminal for a password to use as the encryption key. You will also be prompted automatically for both the key number and password the first time a command which would result in an authenticated request to the server is given. Authentication not only provides verification that the requester has permission to make such changes, but also gives an extra degree of protection again transmission errors.</p>
+ <p>Authenticated requests always include a timestamp in the packet data, which is included in the computation of the authentication code. This timestamp is compared by the server to its receive time stamp. If they differ by more than a small amount the request is rejected. This is done for two reasons. First, it makes simple replay attacks on the server, by someone who might be able to overhear traffic on your LAN, much more difficult. Second, it makes it more difficult to request configuration changes to your server from topologically remote hosts. While the reconfiguration facility will work well with a server on the local host, and may work adequately between time-synchronized hosts on the same LAN, it will work very poorly for more distant hosts. As such, if reasonable passwords are chosen, care is taken in the distribution and protection of keys and appropriate source address restrictions are applied, the run time reconfiguration facility should provide an adequate level of security.</p>
+ <p>The following commands all make authenticated requests.</p>
+ <dl>
+ <dt><tt>addpeer <i>peer_address</i> [
+ <i>keyid</i> ] [ <i>version</i> ] [
+ <tt>minpoll# | prefer | iburst | burst | minpoll
+ <i>N</i> | <tt>maxpoll</tt> <i>N</i> [...] ]</tt>
+ <dt><tt>addpeer <i>peer_address</i> [
+ <tt>prefer | iburst | burst | minpoll
+ <i>N</i> | <tt>maxpoll</tt> <i>N</i> | <tt>keyid</tt>
+ <i>N</i> | <tt>version</tt> <i>N</i> [...] ]</tt>
+ <dd>Add a configured peer association at the
+ given address and operating in symmetric
+ active mode. Note that an existing association
+ with the same peer may be deleted when this
+ command is executed, or may simply be
+ converted to conform to the new configuration,
+ as appropriate. If the <tt>keyid</tt>
+ is nonzero, all outgoing packets to
+ the remote server will have an authentication
+ field attached encrypted with this key. If the
+ value is 0 (or not given) no authentication
+ will be done. If ntpdc's key number has not
+ yet been set (<i>e.g.,</i> by the keyid
+ command), it will be set to this value.
+ The <tt>version#</tt> can be 1 through 4 and defaults to 3. The remaining
+ options are either a numeric value for <tt>minpoll</tt> or
+ literals <tt>prefer</tt>, <tt>iburst</tt>,
+ <tt>burst</tt>, <tt>minpoll </tt><i>N</i>,
+ <tt>keyid </tt><i>N</i>, <tt>version </tt> <i>N</i>, or
+ <tt>maxpoll </tt><i>N</i> (where <i>N</i> is a numeric value), and have the action as specified in the
+ <tt>peer</tt> configuration file command of
+ ntpd. See the <a href="confopt.html">Server Options</a> page for further information.
+ Each flag (or its absence) replaces the
+ previous setting. The <tt>prefer</tt> keyword indicates a preferred peer (and thus will be used primarily for clock synchronisation if possible). The preferred peer also determines the validity of the PPS signal - if the preferred peer is suitable for synchronisation so is the PPS signal.
+ <dt><tt>addserver <i>peer_address</i> [
+ <i>keyid</i> ] [ <i>version</i> ] [
+ <tt>minpoll# | prefer | iburst | burst | minpoll
+ <i>N</i> | <tt>maxpoll</tt> <i>N</i> [...] ]</tt>
+ <dt><tt>addserver <i>peer_address</i> [
+ <tt>prefer | iburst | burst | minpoll
+ <i>N</i> | <tt>maxpoll</tt> <i>N</i> | <tt>keyid</tt>
+ <i>N</i> | <tt>version</tt> <i>N</i> [...] ]</tt>
+ <dd>Identical to the addpeer command, except that the operating mode is client.
+ <dt><tt>broadcast <i>peer_address</i> [
+ <i>keyid</i> ] [ <i>version</i> ] [ <i>prefer</i> ]</tt>
+ <dd>Identical to the addpeer command, except
+ that the operating mode is broadcast. In this
+ case a valid non-zero key identifier and key are required. The <tt>peer_address</tt> parameter can be the broadcast address of the local network or a multicast group address assigned to NTP. If a multicast address, a multicast-capable kernel is required.
+ <dt><tt>unconfig <i>peer_address</i> [...]</tt>
+ <dd>This command causes the configured bit to be removed from the specified peer(s). In many cases this will cause the peer association to be deleted. When appropriate, however, the association may persist in an unconfigured mode if the remote peer is willing to continue on in this fashion.
+ <dt><tt>fudge <i>peer_address</i> [ <i>time1</i> ] [ <i>time2</i> ] [ <i>stratum</i> ] [ <i>refid</i> ]</tt>
+ <dd>This command provides a way to set certain data for a reference clock. See the source listing for further information.
+ <dt><tt>enable [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats]</tt><br>
+ <tt>disable [ auth | bclient | calibrate | kernel | monitor | ntp | pps | stats]</tt>
+ <dd>These commands operate in the same way as the <tt>enable</tt> and <tt>disable</tt> configuration file commands of <tt>ntpd</tt>. See the <a href="miscopt.html">Miscellaneous Options</a> page for further information.
+ <dt><tt>restrict <i>address mask flag</i> [ <i>flag</i> ]</tt>
+ <dd>This command operates in the same way as the <tt>restrict</tt> configuration file commands of <tt>ntpd</tt>.
+ <dt><tt>unrestrict <i>address mask flag</i> [ <i>flag</i> ]</tt>
+ <dd>Unrestrict the matching entry from the restrict list.
+ <dt><tt>delrestrict <i>address mask [ ntpport ]</i></tt>
+ <dd>Delete the matching entry from the restrict list.
+ <dt><tt>readkeys</tt>
+ <dd>Causes the current set of authentication keys to be purged and a new set to be obtained by rereading the keys file (which must have been specified in the <tt>ntpd</tt> configuration file). This allows encryption keys to be changed without restarting the server.
+ <dt><tt>trustedkey <i>keyid</i> [...]</tt>
+ <dt><tt>untrustedkey <i>keyid</i> [...]</tt>
+ <dd>These commands operate in the same way as the <tt>trustedkey</tt> and <tt>untrustedkey</tt> configuration file commands of <tt>ntpd</tt>.
+ <dt><tt>authinfo</tt>
+ <dd>Returns information concerning the authentication module, including known keys and counts of encryptions and decryptions which have been done.
+ <dt><tt>traps</tt>
+ <dd>Display the traps set in the server. See the source listing for further information.
+ <dt><tt>addtrap [ <i>address</i> [ <i>port</i> ] [ <i>interface</i> ]</tt>
+ <dd>Set a trap for asynchronous messages. See the source listing for further information.
+ <dt><tt>clrtrap [ <i>address</i> [ <i>port</i> ] [ <i>interface</i>]</tt>
+ <dd>Clear a trap for asynchronous messages. See the source listing for further information.
+ <dt><tt>reset</tt>
+ <dd>Clear the statistics counters in various modules of the server. See the source listing for further information.
+ </dl>
+ <h4>Bugs</h4>
+ <p><tt>ntpdc</tt> is a crude hack. Much of the information it shows is deadly boring and could only be loved by its implementer. The program was designed so that new (and temporary) features were easy to hack in, at great expense to the program's ease of use. Despite this, the program is occasionally useful.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html>
diff --git a/contrib/ntp/html/ntpdsim.html b/contrib/ntp/html/ntpdsim.html
index 25dc293..31eccf8 100644
--- a/contrib/ntp/html/ntpdsim.html
+++ b/contrib/ntp/html/ntpdsim.html
@@ -2,71 +2,72 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>ntpdsim - Network Time Protocol (NTP) simulator</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>ntpdsim - Network Time Protocol (NTP) simulator</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3><tt>ntpdsim</tt> - Network Time Protocol (NTP) simulator</h3>
- <img src="pic/alice47.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>The mushroom knows all the command line options.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:16 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#synop">Synopsis</a><br>
- <li class="inline"><a href="#descr">Description</a><br>
- <li class="inline"><a href="#cmd">Command Line Oprionts</a>
- <li class="inline"><a href="#files">Files</a>
- </ul>
- <hr>
- <h4 id="synop">Synopsis</h4>
- <tt>ntpdsim [ -B <i>bdly</i> ] [ -C <i>snse</i> ] [ -O <i>clk_time</i> ] [ -S <i>sim_time</i> ] [ -T <i>ferr</i> ] [ -W <i>fsne</i> ] [ -Y </tt><i><tt>ndly</tt></i><tt> ] [ -X </tt><i><tt>pdly</tt></i><tt> ]</tt>
- <h4 id="descr">Description</h4>
- <p>The <tt>ntpdsim</tt> program is an adaptation of the <tt>ntpd</tt> operating system daemon. The program operates as a discrete time simulator using specified systematic and random driving sources. It includes all the mitigation and discipline algorithms of the actual daemon, but with the packet I/O and system clock algorithms driven by simulation. Most functions of the real <tt>ntpd</tt> remain intact, including the monitoring, statistics recording, trace and host name resolution features. Further information on the simulator is on the <a href="http://www.eecis.udel.edu/~mills/ntpsim.html">NTP Discrete Event Simulator</a> page.</p>
- <p>The simulator is most useful to study NTP behavior in response to time and/or frequency transients under specific conditions of network jitter and oscillator wander. For this purpose the daemon can be driven by pseudorandom jitter and wander sample sequences characteristic of real networks and oscillators. The jitter generator produces samples from a Poisson distribution, while the wander generator produces samples from a Guassian distribution.</p>
- <p>The easiest way to use this program is to create a <tt>ntpstats</tt> directory, configuration file <tt>ntp.conf</tt> and frequency file <tt>ntp.drift</tt> and test shell <tt>test.sh</tt> in the base directory. The <tt>ntp.drift</tt> file and <tt>ntpstats</tt> directory can be empty to start. The <tt>test.sh</tt> script can contain something like</p>
- <pre>rm ./ntpstats/*
+ <body>
+ <h3><tt>ntpdsim</tt> - Network Time Protocol (NTP) simulator</h3>
+ <img src="pic/alice47.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>The mushroom knows all the command line options.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">20:07</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="223">Friday, June 16, 2006</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#synop">Synopsis</a><br>
+ <li class="inline"><a href="#descr">Description</a><br>
+ <li class="inline"><a href="#cmd">Command Line Oprionts</a>
+ <li class="inline"><a href="#files">Files</a>
+ </ul>
+ <hr>
+ <h4 id="synop">Synopsis</h4>
+ <tt>ntpdsim [ -B <i>bdly</i> ] [ -C <i>snse</i> ] [ -O <i>clk_time</i> ] [ -S <i>sim_time</i> ] [ -T <i>ferr</i> ] [ -W <i>fsne</i> ] [ -Y </tt><i><tt>ndly</tt></i><tt> ] [ -X </tt><i><tt>pdly</tt></i><tt> ]</tt>
+ <h4 id="descr">Description</h4>
+ <p>The <tt>ntpdsim</tt> program is an adaptation of the <tt>ntpd</tt> operating system daemon. The program operates as a discrete time simulator using specified systematic and random driving sources. It includes all the mitigation and discipline algorithms of the actual daemon, but with the packet I/O and system clock algorithms driven by simulation. Most functions of the real <tt>ntpd</tt> remain intact, including the monitoring, statistics recording, trace and host name resolution features. Further information on the simulator is on the <a href="http://www.eecis.udel.edu/%7emills/ntpsim.html">NTP Discrete Event Simulator</a> page.</p>
+ <p>The simulator is most useful to study NTP behavior in response to time and/or frequency transients under specific conditions of network jitter and oscillator wander. For this purpose the daemon can be driven by pseudorandom jitter and wander sample sequences characteristic of real networks and oscillators. The jitter generator produces samples from a Poisson distribution, while the wander generator produces samples from a Guassian distribution.</p>
+ <p>The easiest way to use this program is to create a <tt>ntpstats</tt> directory, configuration file <tt>ntp.conf</tt> and frequency file <tt>ntp.drift</tt> and test shell <tt>test.sh</tt> in the base directory. The <tt>ntp.drift</tt> file and <tt>ntpstats</tt> directory can be empty to start. The <tt>test.sh</tt> script can contain something like</p>
+ <pre>rm ./ntpstats/*
ntpdsim -O 0.1 -C .001 -T 400 -W 1 -c ./ntp.conf,
</pre>
- <p>which starts the simulator with a time offset 100 ms, network jitter 1 ms, frequency offset 400 PPM and oscillator wander 1 PPM/s. These parameters represent typical conditions with modern workstations on a Ethernet LAN. The ntp.conf file should contain something like</p>
- <pre>disable kernel
+ <p>which starts the simulator with a time offset 100 ms, network jitter 1 ms, frequency offset 400 PPM and oscillator wander 1 PPM/s. These parameters represent typical conditions with modern workstations on a Ethernet LAN. The ntp.conf file should contain something like</p>
+ <pre>disable kernel
server pogo
driftfile ./ntp.drift
statsdir ./ntpstats/
filegen loopstats type day enable
filegen peerstats type day enable
</pre>
- <h4 id="cmd">Command Line Options</h4>
- <dl>
- <dt>Most of the <tt>ntpd</tt> command line options apply also to <tt>ntpdsim</tt>. In addition, the following command line options apply to <tt>ntpdsim.</tt>
- <dt><tt>-B <i>bdly</i></tt>
- <dd>Specify beep delay (3600) s.
- <dt><tt>-C <i>snse</i></tt>
- <dd>Specify network jitter parameter (0) s.
- <dt><tt>-O <i>clk_time</i></tt>
- <dd>Specify initial time offset (0) s.
- <dt><tt>-S <i>sim_time</i></tt>
- <dd>Specify simulation duration (86400) s.
- <dt><tt>-T <i>ferr</i></tt>
- <dd>Specify initial frequency offset (0) PPM.
- <dt><tt>-W <i>fnse</i></tt>
- <dd>Specify oscillator wander parameter (0) PPM/s.
- <dt><tt>-Y <i>ndly</i></tt>
- <dd>Specify network propagation delay (.001) s.
- <dt><tt>-Z <i>pdly</i></tt>
- <dd>Specify server processing delay (.001) s.
- </dl>
- <h4 id="files">Files</h4>
- <tt>/etc/ntp.conf</tt> - the default name of the configuration file<br>
- <tt>/etc/ntp.drift</tt> - the default name of the drift file<br>
- <tt>/etc/ntp.keys</tt> - the default name of the key file
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <h4 id="cmd">Command Line Options</h4>
+ <dl>
+ <dt>Note:&nbsp;The NTP&nbsp;development team is moving to the use of a syntax-directed configuration file design. When complete these options will be replaced by a <a href="ntpdsim_new.html">new one</a>. Most of the <tt>ntpd</tt> command line options apply also to <tt>ntpdsim</tt>. In addition, the following command line options apply to <tt>ntpdsim.</tt>
+ <dt><tt>-B <i>bdly</i></tt>
+ <dd>Specify beep delay (3600) s.
+ <dt><tt>-C <i>snse</i></tt>
+ <dd>Specify network jitter parameter (0) s.
+ <dt><tt>-O <i>clk_time</i></tt>
+ <dd>Specify initial time offset (0) s.
+ <dt><tt>-S <i>sim_time</i></tt>
+ <dd>Specify simulation duration (86400) s.
+ <dt><tt>-T <i>ferr</i></tt>
+ <dd>Specify initial frequency offset (0) PPM.
+ <dt><tt>-W <i>fnse</i></tt>
+ <dd>Specify oscillator wander parameter (0) PPM/s.
+ <dt><tt>-Y <i>ndly</i></tt>
+ <dd>Specify network propagation delay (.001) s.
+ <dt><tt>-Z <i>pdly</i></tt>
+ <dd>Specify server processing delay (.001) s.
+ </dl>
+ <h4 id="files">Files</h4>
+ <tt>/etc/ntp.conf</tt> - the default name of the configuration file<br>
+ <tt>/etc/ntp.drift</tt> - the default name of the drift file<br>
+ <tt>/etc/ntp.keys</tt> - the default name of the key file
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/ntpdsim_new.html b/contrib/ntp/html/ntpdsim_new.html
new file mode 100644
index 0000000..47c226a
--- /dev/null
+++ b/contrib/ntp/html/ntpdsim_new.html
@@ -0,0 +1,102 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>ntpdsim - Network Time Protocol (NTP) simulator</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
+
+ <body>
+ <h3><tt>ntpdsim</tt> - Network Time Protocol (NTP) simulator</h3>
+ <img src="pic/alice47.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>The mushroom knows all the command line options.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">21:32</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="223">Friday, June 16, 2006</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links7.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li><a href="#description">Description</a><br>
+ <li><a href="#configuration">Configuration</a>
+ <li><a href="#sample">Sample Configuration File</a>
+ </ul>
+ <h4 id="description">Description</h4>
+ <p>The ntpdsim program is used to simulate and study the behavior of an NTP daemon that derives its time from a number of different simulated time sources (servers). Each simulated server can be configured to have a different time offset, frequency offset, propagation delay, processing delay, network jitter and oscillator wander.</p>
+ <p>The ntpdsim program runs all the same selection, mitigation, and discipline algorithms as the actual ntpd daemon at the client. (It actually uses the same code). However, the input/output routines and servers are simulated. That is, instead of sending the client messages over the network to the actual servers, the client messages are intercepted by the ntpdsim program, which then generates the replies to those messages. The reply messages are carefully "inserted" into the input queue of the client at the right time according to the specified server properties (like propagation delay).</p>
+ <p>Each simulated server runs according to a specified script that describes the server properties at a particular time. Each script consists of a series of consecutive acts. Each act runs for a particular duration and specifies the frequency offset, propagation delay, processing delay, network jitter and oscillator wander of the server for that duration. Once the duration of an act expires, the simulated server reconfigures itself according to the properties specified in the next act.</p>
+ <h4 id="configuration">Configuration</h4>
+ <p>The ntpdsim program is configured by providing a configuration file at startup. The crux of the simulator configuration is specified using a <tt>simulate</tt> command, the syntax of which is given below. Note that all time quantities are in seconds and all frequency quantities are in parts per million (PPM):</p>
+ <p>&lt;<i>simulate_command</i>&gt; ::= <tt>simulate</tt> { &lt;<i>init_statement_list</i>&gt; &lt;<i>server_list</i>&gt; }<br>
+ &lt;<i>init_statement_list</i>&gt; ::= &lt;init_statement_list&gt; &lt;init_statement&gt; | &lt;init_statement&gt;<br>
+ &lt;<i>init_statement</i>&gt; ::= <tt>beep_delay</tt> = &lt;number&gt; | <tt>simulation_duration</tt> = &lt;number&gt;<br>
+ &lt;<i>server_list</i>&gt; ::= &lt;<i>server_list</i>&gt; &lt;server&gt; | &lt;server&gt;<br>
+ &lt;<i>server_list</i>&gt; ::= <tt>server</tt> = &lt;address&gt; { <tt>server_offset</tt> = &lt;number&gt; &lt;act_list&gt; }<br>
+ &lt;<i>act_list</i>&gt; ::= &lt;<i>act_list</i>&gt; &lt;<i>act</i>&gt; | &lt;<i>act</i>&gt;<br>
+ &lt;<i>act</i>&gt; ::= <tt>duration</tt> = &lt;number&gt; { &lt;<i>act_stmt_list</i>&gt; }<br>
+ &lt;<i>act_stmt_list</i>&gt; ::= &lt;<i>act_stmt_list</i>&gt; &lt;<i>act_stmt</i>&gt; | &lt;<i>act_stmt</i>&gt;<br>
+ &lt;<i>act_stmt</i>&gt; ::= <tt>freq_offset</tt> = &lt;number&gt; | <tt>wander</tt> = &lt;number&gt; | <tt>jitter</tt> = &lt;number&gt; | <tt>prop_delay</tt> = &lt;number&gt; | <tt>proc_delay</tt> = &lt;number&gt;</p>
+ <p>In addition to the simulate command, other standard NTP configuration commands can be specified. These commands have the same meaning as in the ntpd configuration. Note that newlines are <b>not</b> significant within the simulate command even though they are used to mark the end of a normal NTP configuration command.</p>
+ <h4 id="sample">Sample Configuration File</h4>
+ <p>A sample ntpdsim configuration file is given below. It specifies two simulated servers, each of which has two acts.</p>
+ <pre>
+ # Client configuration
+ disable kernel
+ server pogo
+ driftfile ./ntp.drift
+ statsdir ./ntpstats/
+ filegen loopstats type day enable
+ filegen peerstats type day enable
+
+ # Simulation configuration
+ simulate {
+ simulation_duration = 86400
+ beep_delay = 3600
+
+ # Server 1
+ server = louie.udel.edu {
+ server_offset = 0
+ duration = 50000 {
+ freq_offset = 400
+ wander = 1.0
+ jitter = 0.001
+ prop_delay = 0.001
+ proc_delay = 0.001
+ }
+ duration = 6400 {
+ freq_offset = 200
+ wander = 1.0
+ jitter = 0.001
+ prop_delay = 0.001
+ proc_delay = 0.001
+ }
+ }
+
+ # Server 2
+ server = baldwin.udel.edu {
+ server_offset = 0.02
+ duration = 10000 {
+ freq_offset = 400
+ wander = 1.0
+ jitter = 0.001
+ prop_delay = 0.5
+ proc_delay = 0.001
+ }
+ duration = 60000 {
+ freq_offset = 200
+ wander = 1.0
+ jitter = 0.05
+ prop_delay = 0.005
+ proc_delay = 0.001
+ }
+ }
+ }
+ </pre>
+ <hr>
+ <address><a href="mailto:skamboj@udel.edu">Sachin Kamboj</a></address>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
+
+</html>
diff --git a/contrib/ntp/html/ntpq.html b/contrib/ntp/html/ntpq.html
index ce6baa5..4c077e2 100644
--- a/contrib/ntp/html/ntpq.html
+++ b/contrib/ntp/html/ntpq.html
@@ -2,261 +2,263 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>ntpq - standard NTP query program</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>ntpq - standard NTP query program</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3><tt>ntpq</tt> - standard NTP query program</h3>
- <img src="pic/bustardfly.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
- <p>A typical NTP monitoring packet</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">21:38</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="230">Sunday, January 26, 2003</csobj></p>
- <br clear="left">
- <h4>More Help</h4>
- <script type="text/javascript" language="javascript" src="scripts/links12.txt"></script>
- <hr>
- <h4>Synopsis</h4>
- <tt>ntpq [-inp] [-c <i>command</i>] [<i>host</i>] [...]</tt>
- <h4>Description</h4>
- <p>The <tt>ntpq</tt> utility program is used to monitor NTP daemon <tt>ntpd</tt> operations and determine performance. It uses the standard NTP mode 6 control message formats defined in Appendix B of the NTPv3 specification RFC1305. The same formats are used in NTPv4, although some of the variables have changed and new ones added. The description on this page is for the NTPv4 variables.</p>
- <p>The program can be run either in interactive mode or controlled using command line arguments. Requests to read and write arbitrary variables can be assembled, with raw and pretty-printed output options being available. The <tt>ntpq</tt> can also obtain and print a list of peers in a common format by sending multiple queries to the server.</p>
- <p>If one or more request options is included on the command line when <tt>ntpq</tt> is executed, each of the requests will be sent to the NTP servers running on each of the hosts given as command line arguments, or on localhost by default. If no request options are given, <tt>ntpq</tt> will attempt to read commands from the standard input and execute these on the NTP server running on the first host given on the command line, again defaulting to localhost when no other host is specified. <tt>ntpq</tt>will prompt for commands if the standard input is a terminal device.</p>
- <p><tt>ntpq</tt> uses NTP mode 6 packets to communicate with the NTP server, and hence can be used to query any compatible server on the network which permits it. Note that since NTP is a UDP protocol this communication will be somewhat unreliable, especially over large distances in terms of network topology. <tt>ntpq</tt> makes one attempt to retransmit requests, and will time requests out if the remote host is not heard from within a suitable timeout time.</p>
- <p>Note that in contexts where a host name is expected, a <tt>-4</tt> qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a <tt>-6</tt> qualifier forces DNS resolution to the IPv6 namespace.</p>
- <p>For examples and usage, see the <a href="debug.html">NTP Debugging Techniques</a> page.</p>
- <p>Command line options are described following. Specifying a command line option other than <tt>-i</tt> or <tt>-n</tt> will cause the specified query (queries) to be sent to the indicated host(s) immediately. Otherwise, <tt>ntpq</tt> will attempt to read interactive format commands from the standard input.</p>
- <dl>
- <dt><tt>-4</tt>
- <dd>Force DNS resolution of following host names on the command line to the IPv4 namespace.
- <dt><tt>-6</tt>
- <dd>Force DNS resolution of following host names on the command line to the IPv6 namespace.
- <dt><tt>-c</tt>
- <dd>The following argument is interpreted as an interactive format command and is added to the list of commands to be executed on the specified host(s). Multiple <tt>-c</tt> options may be given.
- <dt><tt>-d</tt>
- <dd>Turn on debugging mode.
- <dt><tt>-i</tt>
- <dd>Force <tt>ntpq</tt> to operate in interactive mode. Prompts will be written to the standard output and commands read from the standard input.
- <dt><tt>-n</tt>
- <dd>Output all host addresses in dotted-quad numeric format rather than converting to the canonical host names.
- <dt><tt>-p</tt>
- <dd>Print a list of the peers known to the server as well as a summary of their state. This is equivalent to the <tt>peers</tt> interactive command.
- </dl>
- <h4>Internal Commands</h4>
- <p>Interactive format commands consist of a keyword followed by zero to four arguments. Only enough characters of the full keyword to uniquely identify the command need be typed. The output of a command is normally sent to the standard output, but optionally the output of individual commands may be sent to a file by appending a <tt>&gt;</tt>, followed by a file name, to the command line. A number of interactive format commands are executed entirely within the <tt>ntpq</tt> program itself and do not result in NTP mode 6 requests being sent to a server. These are described following.</p>
- <dl>
- <dt><tt>? [<i>command_keyword</i>]</tt><br>
- <tt>helpl [<i>command_keyword</i>]</tt>
- <dd>A <tt>?</tt> by itself will print a list of all the command keywords known to this incarnation of <tt>ntpq</tt>. A <tt>?</tt> followed by a command keyword will print function and usage information about the command. This command is probably a better source of information about <tt>ntpq</tt> than this manual page.
- <dt><tt>addvars <i>variable_name</i> [ = <i>value</i>] [...]</tt><br>
- <tt>rmvars <i>variable_name</i> [...]</tt><br>
- <tt>clearvars</tt>
- <dd>The data carried by NTP mode 6 messages consists of a list of items of the form <tt><i>variable_name</i> = <i>value</i></tt>, where the <tt>= <i>value</i></tt> is ignored, and can be omitted, in requests to the server to read variables. <tt>ntpq</tt> maintains an internal list in which data to be included in control messages can be assembled, and sent using the <tt>readlist</tt> and <tt>writelist</tt> commands described below. The <tt>addvars</tt> command allows variables and their optional values to be added to the list. If more than one variable is to be added, the list should be comma-separated and not contain white space. The <tt>rmvars</tt> command can be used to remove individual variables from the list, while the <tt>clearlist</tt> command removes all variables from the list.
- <dt><tt>cooked</tt>
- <dd>Causes output from query commands to be &quot;cooked&quot;, so that variables which are recognized by <tt>ntpq</tt> will have their values reformatted for human consumption. Variables which <tt>ntpq</tt> thinks should have a decodable value but didn't are marked with a trailing <tt>?</tt>.
- <dt><tt>debug more | less | off</tt>
- <dd>Turns internal query program debugging on and off.
- <dt><tt>delay <i>milliseconds</i></tt>
- <dd>Specify a time interval to be added to timestamps included in requests which require authentication. This is used to enable (unreliable) server reconfiguration over long delay network paths or between machines whose clocks are unsynchronized. Actually the server does not now require timestamps in authenticated requests, so this command may be obsolete.
- <dt><tt>host <i>hostname</i></tt>
- <dd>Set the host to which future queries will be sent. Hostname may be either a host name or a numeric address.
- <dt><tt>hostnames [yes | no]</tt>
- <dd>If <tt>yes</tt> is specified, host names are printed in information displays. If <tt>no</tt> is specified, numeric addresses are printed instead. The default is <tt>yes</tt>, unless modified using the command line <tt>-n</tt> switch.
- <dt><tt>keyid <i>keyid</i></tt>
- <dd>This command specifies the key number to be used to authenticate configuration requests. This must correspond to a key number the server has been configured to use for this purpose.
- <dt><tt>ntpversion 1 | 2 | 3 | 4</tt>
- <dd>Sets the NTP version number which <tt>ntpq</tt> claims in packets. Defaults to 3, Note that mode 6 control messages (and modes, for that matter) didn't exist in NTP version 1.
- <dt><tt>passwd</tt>
- <dd>This command prompts for a password (which will not be echoed) which will be used to authenticate configuration requests. The password must correspond to the key configured for NTP server for this purpose.
- <dt><tt>quit</tt>
- <dd>Exit <tt>ntpq</tt>.
- <dt><tt>raw</tt>
- <dd>Causes all output from query commands is printed as received from the remote server. The only formating/interpretation done on the data is to transform nonascii data into a printable (but barely understandable) form.
- <dt><tt>timeout <i>millseconds</i></tt>
- <dd>Specify a timeout period for responses to server queries. The default is about 5000 milliseconds. Note that since <tt>ntpq</tt> retries each query once after a timeout, the total waiting time for a timeout will be twice the timeout value set.
- </dl>
- <h4>Control Message Commands</h4>
- <p>Each association known to an NTP server has a 16 bit integer association identifier. NTP control messages which carry peer variables must identify the peer the values correspond to by including its association ID. An association ID of 0 is special, and indicates the variables are system variables, whose names are drawn from a separate name space.</p>
- <p>Control message commands result in one or more NTP mode 6 messages being sent to the server, and cause the data returned to be printed in some format. Most commands currently implemented send a single message and expect a single response. The current exceptions are the peers command, which will send a preprogrammed series of messages to obtain the data it needs, and the mreadlist and mreadvar commands, which will iterate over a range of associations.</p>
- <dl>
- <dt><tt>associations</tt>
- <dd>Obtains and prints a list of association identifiers and peer statuses for in-spec peers of the server being queried. The list is printed in columns. The first of these is an index numbering the associations from 1 for internal use, the second the actual association identifier returned by the server and the third the status word for the peer. This is followed by a number of columns containing data decoded from the status word See the peers command for a decode of the <tt>condition</tt> field. Note that the data returned by the <tt>associations&quot;</tt> command is cached internally in <tt>ntpq</tt>. The index is then of use when dealing with stupid servers which use association identifiers which are hard for humans to type, in that for any subsequent commands which require an association identifier as an argument, the form &amp;index may be used as an alternative.
- <dt><tt>clockvar [<i>assocID</i>] [<i>variable_name</i> [ = <i>value</i> [...]] [...]</tt>
- <dt><tt>cv [<i>assocID</i>] [<i>variable_name</i> [ = <i>value</i> [...] ][...]</tt>
- <dd>Requests that a list of the server's clock variables be sent. Servers which have a radio clock or other external synchronization will respond positively to this. If the association identifier is omitted or zero the request is for the variables of the <tt>system clock</tt> and will generally get a positive response from all servers with a clock. If the server treats clocks as pseudo-peers, and hence can possibly have more than one clock connected at once, referencing the appropriate peer association ID will show the variables of a particular clock. Omitting the variable list will cause the server to return a default variable display.
- <dt><tt>lassociations</tt>
- <dd>Obtains and prints a list of association identifiers and peer statuses for all associations for which the server is maintaining state. This command differs from the <tt>associations</tt> command only for servers which retain state for out-of-spec client associations (i.e., fuzzballs). Such associations are normally omitted from the display when the <tt>associations</tt> command is used, but are included in the output of <tt>lassociations</tt>.
- <dt><tt>lpassociations</tt>
- <dd>Print data for all associations, including out-of-spec client associations, from the internally cached list of associations. This command differs from <tt>passociations</tt> only when dealing with fuzzballs.
- <dt><tt>lpeers</tt>
- <dd>Like R peers, except a summary of all associations for which the server is maintaining state is printed. This can produce a much longer list of peers from fuzzball servers.
- <dt><tt>mreadlist <i>assocID</i> <i>assocID</i></tt><br>
- <tt>mrl <i>assocID</i> <i>assocID</i></tt>
- <dd>Like the <tt>readlist</tt> command, except the query is done for each of a range of (nonzero) association IDs. This range is determined from the association list cached by the most recent <tt>associations</tt> command.
- <dt><tt>mreadvar <i>assocID</i> <i>assocID</i> [ <i>variable_name</i> [ = <i>value</i>[ ... ]</tt><br>
- <tt>mrv <i>assocID</i> <i>assocID</i> [ <i>variable_name</i> [ = <i>value</i>[ ... ]</tt>
- <dd>Like the <tt>readvar</tt> command, except the query is done for each of a range of (nonzero) association IDs. This range is determined from the association list cached by the most recent <tt>associations</tt> command.
- <dt><tt>opeers</tt>
- <dd>An old form of the <tt>peers</tt> command with the reference ID replaced by the local interface address.
- <dt><tt>passociations</tt>
- <dd>Displays association data concerning in-spec peers from the internally cached list of associations. This command performs identically to the <tt>associations</tt> except that it displays the internally stored data rather than making a new query.
- <dt><tt>peers</tt>
- <dd>Obtains a current list peers of the server, along with a summary of each peer's state. Summary information includes the address of the remote peer, the reference ID (0.0.0.0 if this is unknown), the stratum of the remote peer, the type of the peer (local, unicast, multicast or broadcast), when the last packet was received, the polling interval, in seconds, the reachability register, in octal, and the current estimated delay, offset and dispersion of the peer, all in milliseconds. The character at the left margin of each line shows the synchronization status of the association and is a valuable diagnostic tool. The encoding and meaning of this character, called the tally code, is given later in this page.
- <dt><tt>pstatus <i>assocID</i></tt>
- <dd>Sends a read status request to the server for the given association. The names and values of the peer variables returned will be printed. Note that the status word from the header is displayed preceding the variables, both in hexadecimal and in pidgeon English.
- <dt><tt>readlist [ <i>assocID</i> ]</tt><br>
- <tt>rl [ <i>assocID</i> ]</tt>
- <dd>Requests that the values of the variables in the internal variable list be returned by the server. If the association ID is omitted or is 0 the variables are assumed to be system variables. Otherwise they are treated as peer variables. If the internal variable list is empty a request is sent without data, which should induce the remote server to return a default display.
- <dt><tt>readvar <i>assocID</i> <i>variable_name</i> [ = <i>value</i> ] [ ...]</tt><br>
- <tt>rv <i>assocID</i> [ <i>variable_name</i> [ = <i>value</i> ] [...]</tt>
- <dd>Requests that the values of the specified variables be returned by the server by sending a read variables request. If the association ID is omitted or is given as zero the variables are system variables, otherwise they are peer variables and the values returned will be those of the corresponding peer. Omitting the variable list will send a request with no data which should induce the server to return a default display. The encoding and meaning of the variables derived from NTPv3 is given in RFC-1305; the encoding and meaning of the additional NTPv4 variables are given later in this page.
- <dt><tt>writevar <i>assocID</i> <i>variable_name</i> [ = <i>value</i> [ ...]</tt>
- <dd>Like the readvar request, except the specified variables are written instead of read.
- <dt><tt>writelist [ <i>assocID</i> ]</tt>
- <dd>Like the readlist request, except the internal list variables are written instead of read.
- </dl>
- <h4>Tally Codes</h4>
- <p>The character in the left margin in the <tt>peers</tt> billboard, called the tally code, shows the fate of each association in the clock selection process. Following is a list of these characters, the pigeon used in the <tt>rv</tt> command, and a short explanation of the condition revealed.</p>
- <dl>
- <dt><tt>space reject</tt>
- <dd>The peer is discarded as unreachable, synchronized to this server (synch loop) or outrageous synchronization distance.
- <dt><tt>x&nbsp;&nbsp;falsetick</tt>
- <dd>The peer is discarded by the intersection algorithm as a falseticker.
- <dt><tt>.&nbsp;&nbsp;excess</tt>
- <dd>The peer is discarded as not among the first ten peers sorted by synchronization distance and so is probably a poor candidate for further consideration.
- <dt><tt>-&nbsp;&nbsp;outlyer</tt>
- <dd>The peer is discarded by the clustering algorithm as an outlyer.
- <dt><tt>+&nbsp;&nbsp;candidat</tt>
- <dd>The peer is a survivor and a candidate for the combining algorithm.
- <dt><tt>#&nbsp;&nbsp;selected</tt>
- <dd>The peer is a survivor, but not among the first six peers sorted by synchronization distance. If the association is ephemeral, it may be demobilized to conserve resources. <dt><tt>*&nbsp;&nbsp;sys.peer</tt>
- <dd>The peer has been declared the system peer and lends its variables to the system variables.
- <dt><tt>o&nbsp;&nbsp;pps.peer</tt>
- <dd>The peer has been declared the system peer and lends its variables to thesystem variables. However, the actual system synchronization is derived from a pulse-per-second (PPS) signal, either indirectly via the PPS reference clock driver or directly via kernel interface.
- </dl>
- <h4>System Variables</h4>
- <p>The <tt>status, leap, stratum, precision, rootdelay, rootdispersion, refid, reftime, poll, offset, and frequency</tt> variables are described in RFC-1305 specification. Additional NTPv4 system variables include the following.</p>
- <dl>
- <dt><tt>version</tt>
- <dd>Everything you might need to know about the software version and generation time.
- <dt><tt>processor</tt>
- <dd>The processor and kernel identification string.
- <dt><tt>system</tt>
- <dd>The operating system version and release identifier.
- <dt><tt>state</tt>
- <dd>The state of the clock discipline state machine. The values are described in the architecture briefing on the NTP Project page linked from www.ntp.org.
- <dt><tt>peer</tt>
- <dd>The internal integer used to identify the association currently designated the system peer.
- <dt><tt>jitter</tt>
- <dd>The estimated time error of the system clock measured as an exponential average of RMS time differences.
- <dt><tt>stability</tt>
- <dd>The estimated frequency stability of the system clock measured as an exponential average of RMS frequency differences.
- </dl>
- <p>When the NTPv4 daemon is compiled with the OpenSSL software library, additional system variables are displayed, including some or all of the following, depending on the particular dance:</p>
- <dl>
- <dt><tt>flags</tt>
- <dd>The current flags word bits and message digest algorithm identifier (NID) in hex format. The high order 16 bits of the four-byte word contain the NID from the OpenSSL ligrary, while the low-order bits are interpreted as follows:
- <dd>
- <dl>
- <dt><tt>0x01</tt>
- <dd>autokey enabled
- <dt><tt>0x02</tt>
- <dd>NIST leapseconds file loaded
- <dt><tt>0x10</tt>
- <dd>PC identity scheme
- <dt><tt>0x20</tt>
- <dd>IFF identity scheme
- <dt><tt>0x40</tt>
- <dd>GQ identity scheme
- </dl>
- <dt><tt>hostname</tt>
- <dd>The name of the host as returned by the Unix <tt>gethostname()</tt> library function.
- <dt><tt>hostkey</tt>
- <dd>The NTP filestamp of the host key file.
- <dt><tt>cert</tt>
- <dd>A list of certificates held by the host. Each entry includes the subject, issuer, flags and NTP filestamp in order. The bits are interpreted as follows:
- <dd>
- <dl>
- <dt><tt>0x01</tt>
- <dd>certificate has been signed by the server
- <dt><tt>0x02</tt>
- <dd>certificate is trusted
- <dt><tt>0x04</tt>
- <dd>certificate is private
- <dt><tt>0x08</tt>
- <dd>certificate contains errors and should not be trusted
- </dl>
- <dt><tt>leapseconds</tt>
- <dd>The NTP filestamp of the NIST leapseconds file.
- <dt><tt>refresh</tt>
- <dd>The NTP timestamp when the host public cryptographic values were refreshed and signed.
- <dt><tt>signature</tt>
- <dd>The host digest/signature scheme name from the OpenSSL library.
- <dt><tt>tai</tt>
- <dd>The TAI-UTC offset in seconds obtained from the NIST leapseconds table.
- </dl>
- <h4>Peer Variables</h4>
- <p>The <tt>status, srcadr, srcport, dstadr, dstport, leap, stratum, precision, rootdelay, rootdispersion, readh, hmode, pmode, hpoll, ppoll, offset, delay, dspersion, reftime</tt> variables are described in the RFC-1305 specification, as are the timestamps <tt>org, rec and xmt</tt>. Additional NTPv4 system variables include the following.</p>
- <dl>
- <dt><tt>flash</tt>
- <dd>The flash code for the most recent packet received. The encoding and meaning of these codes is given later in this page.
- <dt><tt>jitter</tt>
- <dd>The estimated time error of the peer clock measured as an exponential average of RMS time differences.
- <dt><tt>unreach</tt>
- <dd>The value of the counter which records the number of poll intervals since the last valid packet was received.
- </dl>
- <p>When the NTPv4 daemon is compiled with the OpenSSL software library, additional peer variables are displayed, including the following:</p>
- <dl>
- <dt><tt>flags</tt>
- <dd>The current flag bits. This word is the server host status word with additional bits used by the Autokey state machine. See the source code for the bit encoding.
- <dt><tt>hostname</tt>
- <dd>The server host name.
- <dt><tt>initkey <i>key</i></tt>
- <dd>The initial key used by the key list generator in the Autokey protocol.
- <dt><tt>initsequence <i>index</i></tt>
- <dd>The initial index used by the key list generator in the Autokey protocol.
- <dt><tt>signature</tt>
- <dd>The server message digest/signature scheme name from the OpenSSL software library.
- <dt><tt>timestamp <i>time</i></tt>
- <dd>The NTP timestamp when the last Autokey key list was generated and signed.
- </dl>
- <h4>Flash Codes</h4>
- <p>The <tt>flash</tt> code is a valuable debugging aid displayed in the peer variables list. It shows the results of the original sanity checks defined in the NTP specification RFC-1305 and additional ones added in NTPv4. There are 12 tests designated <tt>TEST1</tt> through <tt>TEST12</tt>. The tests are performed in a certain order designed to gain maximum diagnostic information while protecting against accidental or malicious errors. The <tt>flash</tt> variable is initialized to zero as each packet is received. If after each set of tests one or more bits are set, the packet is discarded.</p>
- <p>Tests <tt>TEST1</tt> through <tt>TEST3</tt> check the packet timestamps from which the offset and delay are calculated. If any bits are set, the packet is discarded; otherwise, the packet header variables are saved. <tt>TEST4</tt> and <tt>TEST5</tt> are associated with access control and cryptographic authentication. If any bits are set, the packet is discarded immediately with nothing changed.</p>
- <p>Tests <tt>TEST6</tt> through <tt>TEST8</tt> check the health of the server. If any bits are set, the packet is discarded; otherwise, the offset and delay relative to the server are calculated and saved. <tt>TEST9</tt> checks the health of the association itself. If any bits are set, the packet is discarded; otherwise, the saved variables are passed to the clock filter and mitigation algorithms.</p>
- <p>Tests <tt>TEST10</tt> through <tt>TEST12</tt> check the authentication state using Autokey public-key cryptography, as described in the <a href="authopt.html">Authentication Options</a> page. If any bits are set and the association has previously been marked reachable, the packet is discarded; otherwise, the originate and receive timestamps are saved, as required by the NTP protocol, and processing continues.</p>
- <p>The <tt>flash</tt> bits for each test are defined as follows.</p>
- <dl>
- <dt><tt>0x001 TEST1</tt>
- <dd>Duplicate packet. The packet is at best a casual retransmission and at worst a malicious replay.
- <dt><tt>0x002 TEST2</tt>
- <dd>Bogus packet. The packet is not a reply to a message previously sent. This can happen when the NTP daemon is restarted and before somebody else notices.
- <dt><tt>0x004 TEST3</tt>
- <dd>Unsynchronized. One or more timestamp fields are invalid. This normally happens when the first packet from a peer is received.
- <dt><tt>0x008 TEST4</tt>
- <dd>Access is denied. See the <a href="accopt.html">Access Control Options</a> page.
- <dt><tt>0x010 TEST5</tt>
- <dd>Cryptographic authentication fails. See the <a href="authopt.html">Authentication Options</a> page.
- <dt><tt>0x020TEST6</tt>
- <dd>The server is unsynchronized. Wind up its clock first.
- <dt><tt>0x040 TEST7</tt>
- <dd>The server stratum is at the maximum than 15. It is probably unsynchronized and its clock needs to be wound up.
- <dt><tt>0x080 TEST8</tt>
- <dd>Either the root delay or dispersion is greater than one second, which is highly unlikely unless the peer is unsynchronized to Mars.
- <dt><tt>0x100 TEST9</tt>
- <dd>Either the peer delay or dispersion is greater than one second, which is higly unlikely unless the peer is on Mars.
- <dt><tt>0x200 TEST10</tt>
- <dd>The autokey protocol has detected an authentication failure. See the <a href="authopt.html">Authentication Options</a> page.
- <dt><tt>0x400 TEST11</tt>
- <dd>The autokey protocol has not verified the server or peer is proventic and has valid public key credentials. See the <a href="authopt.html">Authentication Options</a> page.
- <dt><tt>0x800 TEST12</tt>
- <dd>A protocol or configuration error has occurred in the public key algorithms or a possible intrusion event has been detected. See the <a href="authopt.html">Authentication Options</a> page.
- </dl>
- <h4>Bugs</h4>
- <p>The peers command is non-atomic and may occasionally result in spurious error messages about invalid associations occurring and terminating the command. The timeout time is a fixed constant, which means you wait a long time for timeouts since it assumes sort of a worst case. The program should improve the timeout estimate as it sends queries to a particular host, but doesn't.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3><tt>ntpq</tt> - standard NTP query program</h3>
+ <img src="pic/bustardfly.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
+ <p>A typical NTP monitoring packet</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:45</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>More Help</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links12.txt"></script>
+ <hr>
+ <h4>Synopsis</h4>
+ <tt>ntpq [-inp] [-c <i>command</i>] [<i>host</i>] [...]</tt>
+ <h4>Description</h4>
+ <p>The <tt>ntpq</tt> utility program is used to monitor NTP daemon <tt>ntpd</tt> operations and determine performance. It uses the standard NTP mode 6 control message formats defined in Appendix B of the NTPv3 specification RFC1305. The same formats are used in NTPv4, although some of the variables have changed and new ones added. The description on this page is for the NTPv4 variables.</p>
+ <p>The program can be run either in interactive mode or controlled using command line arguments. Requests to read and write arbitrary variables can be assembled, with raw and pretty-printed output options being available. The <tt>ntpq</tt> can also obtain and print a list of peers in a common format by sending multiple queries to the server.</p>
+ <p>If one or more request options is included on the command line when <tt>ntpq</tt> is executed, each of the requests will be sent to the NTP servers running on each of the hosts given as command line arguments, or on localhost by default. If no request options are given, <tt>ntpq</tt> will attempt to read commands from the standard input and execute these on the NTP server running on the first host given on the command line, again defaulting to localhost when no other host is specified. <tt>ntpq</tt>will prompt for commands if the standard input is a terminal device.</p>
+ <p><tt>ntpq</tt> uses NTP mode 6 packets to communicate with the NTP server, and hence can be used to query any compatible server on the network which permits it. Note that since NTP is a UDP protocol this communication will be somewhat unreliable, especially over large distances in terms of network topology. <tt>ntpq</tt> makes one attempt to retransmit requests, and will time requests out if the remote host is not heard from within a suitable timeout time.</p>
+ <p>Note that in contexts where a host name is expected, a <tt>-4</tt> qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a <tt>-6</tt> qualifier forces DNS resolution to the IPv6 namespace.</p>
+ <p>For examples and usage, see the <a href="debug.html">NTP Debugging Techniques</a> page.</p>
+ <p>Command line options are described following. Specifying a command line option other than <tt>-i</tt> or <tt>-n</tt> will cause the specified query (queries) to be sent to the indicated host(s) immediately. Otherwise, <tt>ntpq</tt> will attempt to read interactive format commands from the standard input.</p>
+ <dl>
+ <dt><tt>-4</tt>
+ <dd>Force DNS resolution of following host names on the command line to the IPv4 namespace.
+ <dt><tt>-6</tt>
+ <dd>Force DNS resolution of following host names on the command line to the IPv6 namespace.
+ <dt><tt>-c</tt>
+ <dd>The following argument is interpreted as an interactive format command and is added to the list of commands to be executed on the specified host(s). Multiple <tt>-c</tt> options may be given.
+ <dt><tt>-d</tt>
+ <dd>Turn on debugging mode.
+ <dt><tt>-i</tt>
+ <dd>Force <tt>ntpq</tt> to operate in interactive mode. Prompts will be written to the standard output and commands read from the standard input.
+ <dt><tt>-n</tt>
+ <dd>Output all host addresses in dotted-quad numeric format rather than converting to the canonical host names.
+ <dt><tt>-p</tt>
+ <dd>Print a list of the peers known to the server as well as a summary of their state. This is equivalent to the <tt>peers</tt> interactive command.
+ </dl>
+ <h4>Internal Commands</h4>
+ <p>Interactive format commands consist of a keyword followed by zero to four arguments. Only enough characters of the full keyword to uniquely identify the command need be typed. The output of a command is normally sent to the standard output, but optionally the output of individual commands may be sent to a file by appending a <tt>&gt;</tt>, followed by a file name, to the command line. A number of interactive format commands are executed entirely within the <tt>ntpq</tt> program itself and do not result in NTP mode 6 requests being sent to a server. These are described following.</p>
+ <dl>
+ <dt><tt>? [<i>command_keyword</i>]</tt><br>
+ <tt>helpl [<i>command_keyword</i>]</tt>
+ <dd>A <tt>?</tt> by itself will print a list of all the command keywords known to this incarnation of <tt>ntpq</tt>. A <tt>?</tt> followed by a command keyword will print function and usage information about the command. This command is probably a better source of information about <tt>ntpq</tt> than this manual page.
+ <dt><tt>addvars <i>variable_name</i> [ = <i>value</i>] [...]</tt><br>
+ <tt>rmvars <i>variable_name</i> [...]</tt><br>
+ <tt>clearvars</tt>
+ <dd>The data carried by NTP mode 6 messages consists of a list of items of the form <tt><i>variable_name</i> = <i>value</i></tt>, where the <tt>= <i>value</i></tt> is ignored, and can be omitted, in requests to the server to read variables. <tt>ntpq</tt> maintains an internal list in which data to be included in control messages can be assembled, and sent using the <tt>readlist</tt> and <tt>writelist</tt> commands described below. The <tt>addvars</tt> command allows variables and their optional values to be added to the list. If more than one variable is to be added, the list should be comma-separated and not contain white space. The <tt>rmvars</tt> command can be used to remove individual variables from the list, while the <tt>clearlist</tt> command removes all variables from the list.
+ <dt><tt>cooked</tt>
+ <dd>Causes output from query commands to be &quot;cooked&quot;, so that variables which are recognized by <tt>ntpq</tt> will have their values reformatted for human consumption. Variables which <tt>ntpq</tt> thinks should have a decodable value but didn't are marked with a trailing <tt>?</tt>.
+ <dt><tt>debug more | less | off</tt>
+ <dd>Turns internal query program debugging on and off.
+ <dt><tt>delay <i>milliseconds</i></tt>
+ <dd>Specify a time interval to be added to timestamps included in requests which require authentication. This is used to enable (unreliable) server reconfiguration over long delay network paths or between machines whose clocks are unsynchronized. Actually the server does not now require timestamps in authenticated requests, so this command may be obsolete.
+ <dt><tt>host <i>hostname</i></tt>
+ <dd>Set the host to which future queries will be sent. Hostname may be either a host name or a numeric address.
+ <dt><tt>hostnames [yes | no]</tt>
+ <dd>If <tt>yes</tt> is specified, host names are printed in information displays. If <tt>no</tt> is specified, numeric addresses are printed instead. The default is <tt>yes</tt>, unless modified using the command line <tt>-n</tt> switch.
+ <dt><tt>keyid <i>keyid</i></tt>
+ <dd>This command specifies the key number to be used to authenticate configuration requests. This must correspond to a key number the server has been configured to use for this purpose.
+ <dt><tt>ntpversion 1 | 2 | 3 | 4</tt>
+ <dd>Sets the NTP version number which <tt>ntpq</tt> claims in packets. Defaults to 2, Note that mode 6 control messages (and modes, for that matter) didn't exist in NTP version 1.
+ <dt><tt>passwd</tt>
+ <dd>This command prompts for a password (which will not be echoed) which will be used to authenticate configuration requests. The password must correspond to the key configured for NTP server for this purpose.
+ <dt><tt>quit</tt>
+ <dd>Exit <tt>ntpq</tt>.
+ <dt><tt>raw</tt>
+ <dd>Causes all output from query commands is printed as received from the remote server. The only formating/interpretation done on the data is to transform nonascii data into a printable (but barely understandable) form.
+ <dt><tt>timeout <i>millseconds</i></tt>
+ <dd>Specify a timeout period for responses to server queries. The default is about 5000 milliseconds. Note that since <tt>ntpq</tt> retries each query once after a timeout, the total waiting time for a timeout will be twice the timeout value set.
+ </dl>
+ <h4>Control Message Commands</h4>
+ <p>Each association known to an NTP server has a 16 bit integer association identifier. NTP control messages which carry peer variables must identify the peer the values correspond to by including its association ID. An association ID of 0 is special, and indicates the variables are system variables, whose names are drawn from a separate name space.</p>
+ <p>Control message commands result in one or more NTP mode 6 messages being sent to the server, and cause the data returned to be printed in some format. Most commands currently implemented send a single message and expect a single response. The current exceptions are the peers command, which will send a preprogrammed series of messages to obtain the data it needs, and the mreadlist and mreadvar commands, which will iterate over a range of associations.</p>
+ <dl>
+ <dt><tt>associations</tt>
+ <dd>Obtains and prints a list of association identifiers and peer statuses for in-spec peers of the server being queried. The list is printed in columns. The first of these is an index numbering the associations from 1 for internal use, the second the actual association identifier returned by the server and the third the status word for the peer. This is followed by a number of columns containing data decoded from the status word. See the peers command for a decode of the <tt>condition</tt> field. Note that the data returned by the <tt>associations</tt> command is cached internally in <tt>ntpq</tt>. The index is then of use when dealing with stupid servers which use association identifiers which are hard for humans to type, in that for any subsequent commands which require an association identifier as an argument, the form &amp;index may be used as an alternative.
+ <dt><tt>clockvar [<i>assocID</i>] [<i>variable_name</i> [ = <i>value</i> [...]] [...]</tt>
+ <dt><tt>cv [<i>assocID</i>] [<i>variable_name</i> [ = <i>value</i> [...] ][...]</tt>
+ <dd>Requests that a list of the server's clock variables be sent. Servers which have a radio clock or other external synchronization will respond positively to this. If the association identifier is omitted or zero the request is for the variables of the <tt>system clock</tt> and will generally get a positive response from all servers with a clock. If the server treats clocks as pseudo-peers, and hence can possibly have more than one clock connected at once, referencing the appropriate peer association ID will show the variables of a particular clock. Omitting the variable list will cause the server to return a default variable display.
+ <dt><tt>lassociations</tt>
+ <dd>Obtains and prints a list of association identifiers and peer statuses for all associations for which the server is maintaining state. This command differs from the <tt>associations</tt> command only for servers which retain state for out-of-spec client associations (i.e., fuzzballs). Such associations are normally omitted from the display when the <tt>associations</tt> command is used, but are included in the output of <tt>lassociations</tt>.
+ <dt><tt>lpassociations</tt>
+ <dd>Print data for all associations, including out-of-spec client associations, from the internally cached list of associations. This command differs from <tt>passociations</tt> only when dealing with fuzzballs.
+ <dt><tt>lpeers</tt>
+ <dd>Like R peers, except a summary of all associations for which the server is maintaining state is printed. This can produce a much longer list of peers from fuzzball servers.
+ <dt><tt>mreadlist <i>assocID</i> <i>assocID</i></tt><br>
+ <tt>mrl <i>assocID</i> <i>assocID</i></tt>
+ <dd>Like the <tt>readlist</tt> command, except the query is done for each of a range of (nonzero) association IDs. This range is determined from the association list cached by the most recent <tt>associations</tt> command.
+ <dt><tt>mreadvar <i>assocID</i> <i>assocID</i> [ <i>variable_name</i> [ = <i>value</i>[ ... ]</tt><br>
+ <tt>mrv <i>assocID</i> <i>assocID</i> [ <i>variable_name</i> [ = <i>value</i>[ ... ]</tt>
+ <dd>Like the <tt>readvar</tt> command, except the query is done for each of a range of (nonzero) association IDs. This range is determined from the association list cached by the most recent <tt>associations</tt> command.
+ <dt><tt>opeers</tt>
+ <dd>An old form of the <tt>peers</tt> command with the reference ID replaced by the local interface address.
+ <dt><tt>passociations</tt>
+ <dd>Displays association data concerning in-spec peers from the internally cached list of associations. This command performs identically to the <tt>associations</tt> except that it displays the internally stored data rather than making a new query.
+ <dt><tt>peers</tt>
+ <dd>Obtains a current list peers of the server, along with a summary of each peer's state. Summary information includes the address of the remote peer, the reference ID (0.0.0.0 if this is unknown), the stratum of the remote peer, the type of the peer (local, unicast, multicast or broadcast), when the last packet was received, the polling interval, in seconds, the reachability register, in octal, and the current estimated delay, offset and dispersion of the peer, all in milliseconds. The character at the left margin of each line shows the synchronization status of the association and is a valuable diagnostic tool. The encoding and meaning of this character, called the tally code, is given later in this page.
+ <dt><tt>pstatus <i>assocID</i></tt>
+ <dd>Sends a read status request to the server for the given association. The names and values of the peer variables returned will be printed. Note that the status word from the header is displayed preceding the variables, both in hexadecimal and in pidgeon English.
+ <dt><tt>readlist [ <i>assocID</i> ]</tt><br>
+ <tt>rl [ <i>assocID</i> ]</tt>
+ <dd>Requests that the values of the variables in the internal variable list be returned by the server. If the association ID is omitted or is 0 the variables are assumed to be system variables. Otherwise they are treated as peer variables. If the internal variable list is empty a request is sent without data, which should induce the remote server to return a default display.
+ <dt><tt>readvar <i>assocID</i> <i>variable_name</i> [ = <i>value</i> ] [ ...]</tt><br>
+ <tt>rv <i>assocID</i> [ <i>variable_name</i> [ = <i>value</i> ] [...]</tt>
+ <dd>Requests that the values of the specified variables be returned by the server by sending a read variables request. If the association ID is omitted or is given as zero the variables are system variables, otherwise they are peer variables and the values returned will be those of the corresponding peer. Omitting the variable list will send a request with no data which should induce the server to return a default display. The encoding and meaning of the variables derived from NTPv3 is given in RFC-1305; the encoding and meaning of the additional NTPv4 variables are given later in this page.
+ <dt><tt>writevar <i>assocID</i> <i>variable_name</i> [ = <i>value</i> [ ...]</tt>
+ <dd>Like the readvar request, except the specified variables are written instead of read.
+ <dt><tt>writelist [ <i>assocID</i> ]</tt>
+ <dd>Like the readlist request, except the internal list variables are written instead of read.
+ </dl>
+ <h4>Tally Codes</h4>
+ <p>The character in the left margin in the <tt>peers</tt> billboard, called the tally code, shows the fate of each association in the clock selection process. Following is a list of these characters, the pigeon used in the <tt>rv</tt> command, and a short explanation of the condition revealed.</p>
+ <dl>
+ <dt><tt>space reject</tt>
+ <dd>The peer is discarded as unreachable, synchronized to this server (synch loop) or outrageous synchronization distance.
+ <dt><tt>x&nbsp;&nbsp;falsetick</tt>
+ <dd>The peer is discarded by the intersection algorithm as a falseticker.
+ <dt><tt>.&nbsp;&nbsp;excess</tt>
+ <dd>The peer is discarded as not among the first ten peers sorted by synchronization distance and so is probably a poor candidate for further consideration.
+ <dt><tt>-&nbsp;&nbsp;outlyer</tt>
+ <dd>The peer is discarded by the clustering algorithm as an outlyer.
+ <dt><tt>+&nbsp;&nbsp;candidat</tt>
+ <dd>The peer is a survivor and a candidate for the combining algorithm.
+ <dt><tt>#&nbsp;&nbsp;selected</tt>
+ <dd>The peer is a survivor, but not among the first six peers sorted by synchronization distance. If the association is ephemeral, it may be demobilized to conserve resources.
+ <dt><tt>*&nbsp;&nbsp;sys.peer</tt>
+ <dd>The peer has been declared the system peer and lends its variables to the system variables.
+ <dt><tt>o&nbsp;&nbsp;pps.peer</tt>
+ <dd>The peer has been declared the system peer and lends its variables to thesystem variables. However, the actual system synchronization is derived from a pulse-per-second (PPS) signal, either indirectly via the PPS reference clock driver or directly via kernel interface.
+ </dl>
+ <h4>System Variables</h4>
+ <p>The <tt>status, leap, stratum, precision, rootdelay, rootdispersion, refid, reftime, poll, offset, and frequency</tt> variables are described in RFC-1305 specification. Additional NTPv4 system variables include the following.</p>
+ <dl>
+ <dt><tt>version</tt>
+ <dd>Everything you might need to know about the software version and generation time.
+ <dt><tt>processor</tt>
+ <dd>The processor and kernel identification string.
+ <dt><tt>system</tt>
+ <dd>The operating system version and release identifier.
+ <dt><tt>state</tt>
+ <dd>The state of the clock discipline state machine. The values are described in the architecture briefing on the NTP Project page linked from www.ntp.org.
+ <dt><tt>peer</tt>
+ <dd>The internal integer used to identify the association currently designated the system peer.
+ <dt><tt>jitter</tt>
+ <dd>The estimated time error of the system clock measured as an exponential average of RMS time differences.
+ <dt><tt>stability</tt>
+ <dd>The estimated frequency stability of the system clock measured as an exponential average of RMS frequency differences.
+ </dl>
+ <p>When the NTPv4 daemon is compiled with the OpenSSL software library, additional system variables are displayed, including some or all of the following, depending on the particular dance:</p>
+ <dl>
+ <dt><tt>flags</tt>
+ <dd>The current flags word bits and message digest algorithm identifier (NID) in hex format. The high order 16 bits of the four-byte word contain the NID from the OpenSSL ligrary, while the low-order bits are interpreted as follows:
+ <dd>
+ <dl>
+ <dt><tt>0x01</tt>
+ <dd>autokey enabled
+ <dt><tt>0x02</tt>
+ <dd>NIST leapseconds file loaded
+ <dt><tt>0x10</tt>
+ <dd>PC identity scheme
+ <dt><tt>0x20</tt>
+ <dd>IFF identity scheme
+ <dt><tt>0x40</tt>
+ <dd>GQ identity scheme
+ </dl>
+ <dt><tt>hostname</tt>
+ <dd>The name of the host as returned by the Unix <tt>gethostname()</tt> library function.
+ <dt><tt>hostkey</tt>
+ <dd>The NTP filestamp of the host key file.
+ <dt><tt>cert</tt>
+ <dd>A list of certificates held by the host. Each entry includes the subject, issuer, flags and NTP filestamp in order. The bits are interpreted as follows:
+ <dd>
+ <dl>
+ <dt><tt>0x01</tt>
+ <dd>certificate has been signed by the server
+ <dt><tt>0x02</tt>
+ <dd>certificate is trusted
+ <dt><tt>0x04</tt>
+ <dd>certificate is private
+ <dt><tt>0x08</tt>
+ <dd>certificate contains errors and should not be trusted
+ </dl>
+ <dt><tt>leapseconds</tt>
+ <dd>The NTP filestamp of the NIST leapseconds file.
+ <dt><tt>refresh</tt>
+ <dd>The NTP timestamp when the host public cryptographic values were refreshed and signed.
+ <dt><tt>signature</tt>
+ <dd>The host digest/signature scheme name from the OpenSSL library.
+ <dt><tt>tai</tt>
+ <dd>The TAI-UTC offset in seconds obtained from the NIST leapseconds table.
+ </dl>
+ <h4>Peer Variables</h4>
+ <p>The <tt>status, srcadr, srcport, dstadr, dstport, leap, stratum, precision, rootdelay, rootdispersion, readh, hmode, pmode, hpoll, ppoll, offset, delay, dspersion, reftime</tt> variables are described in the RFC-1305 specification, as are the timestamps <tt>org, rec and xmt</tt>. Additional NTPv4 system variables include the following.</p>
+ <dl>
+ <dt><tt>flash</tt>
+ <dd>The flash code for the most recent packet received. The encoding and meaning of these codes is given later in this page.
+ <dt><tt>jitter</tt>
+ <dd>The estimated time error of the peer clock measured as an exponential average of RMS time differences.
+ <dt><tt>unreach</tt>
+ <dd>The value of the counter which records the number of poll intervals since the last valid packet was received.
+ </dl>
+ <p>When the NTPv4 daemon is compiled with the OpenSSL software library, additional peer variables are displayed, including the following:</p>
+ <dl>
+ <dt><tt>flags</tt>
+ <dd>The current flag bits. This word is the server host status word with additional bits used by the Autokey state machine. See the source code for the bit encoding.
+ <dt><tt>hostname</tt>
+ <dd>The server host name.
+ <dt><tt>initkey <i>key</i></tt>
+ <dd>The initial key used by the key list generator in the Autokey protocol.
+ <dt><tt>initsequence <i>index</i></tt>
+ <dd>The initial index used by the key list generator in the Autokey protocol.
+ <dt><tt>signature</tt>
+ <dd>The server message digest/signature scheme name from the OpenSSL software library.
+ <dt><tt>timestamp <i>time</i></tt>
+ <dd>The NTP timestamp when the last Autokey key list was generated and signed.
+ </dl>
+ <h4>Flash Codes</h4>
+ <p>The <tt>flash</tt> code is a valuable debugging aid displayed in the peer variables list. It shows the results of the original sanity checks defined in the NTP specification RFC-1305 and additional ones added in NTPv4. There are 12 tests designated <tt>TEST1</tt> through <tt>TEST12</tt>. The tests are performed in a certain order designed to gain maximum diagnostic information while protecting against accidental or malicious errors. The <tt>flash</tt> variable is initialized to zero as each packet is received. If after each set of tests one or more bits are set, the packet is discarded.</p>
+ <p>Tests <tt>TEST1</tt> through <tt>TEST3</tt> check the packet timestamps from which the offset and delay are calculated. If any bits are set, the packet is discarded; otherwise, the packet header variables are saved. <tt>TEST4</tt> and <tt>TEST5</tt> are associated with access control and cryptographic authentication. If any bits are set, the packet is discarded immediately with nothing changed.</p>
+ <p>Tests <tt>TEST6</tt> through <tt>TEST8</tt> check the health of the server. If any bits are set, the packet is discarded; otherwise, the offset and delay relative to the server are calculated and saved. <tt>TEST9</tt> checks the health of the association itself. If any bits are set, the packet is discarded; otherwise, the saved variables are passed to the clock filter and mitigation algorithms.</p>
+ <p>Tests <tt>TEST10</tt> through <tt>TEST12</tt> check the authentication state using Autokey public-key cryptography, as described in the <a href="authopt.html">Authentication Options</a> page. If any bits are set and the association has previously been marked reachable, the packet is discarded; otherwise, the originate and receive timestamps are saved, as required by the NTP protocol, and processing continues.</p>
+ <p>The <tt>flash</tt> bits for each test are defined as follows.</p>
+ <dl>
+ <dt><tt>0x001 TEST1</tt>
+ <dd>Duplicate packet. The packet is at best a casual retransmission and at worst a malicious replay.
+ <dt><tt>0x002 TEST2</tt>
+ <dd>Bogus packet. The packet is not a reply to a message previously sent. This can happen when the NTP daemon is restarted and before somebody else notices.
+ <dt><tt>0x004 TEST3</tt>
+ <dd>Unsynchronized. One or more timestamp fields are invalid. This normally happens when the first packet from a peer is received.
+ <dt><tt>0x008 TEST4</tt>
+ <dd>Access is denied. See the <a href="accopt.html">Access Control Options</a> page.
+ <dt><tt>0x010 TEST5</tt>
+ <dd>Cryptographic authentication fails. See the <a href="authopt.html">Authentication Options</a> page.
+ <dt><tt>0x020TEST6</tt>
+ <dd>The server is unsynchronized. Wind up its clock first.
+ <dt><tt>0x040 TEST7</tt>
+ <dd>The server stratum is at the maximum than 15. It is probably unsynchronized and its clock needs to be wound up.
+ <dt><tt>0x080 TEST8</tt>
+ <dd>Either the root delay or dispersion is greater than one second, which is highly unlikely unless the peer is unsynchronized to Mars.
+ <dt><tt>0x100 TEST9</tt>
+ <dd>Either the peer delay or dispersion is greater than one second, which is higly unlikely unless the peer is on Mars.
+ <dt><tt>0x200 TEST10</tt>
+ <dd>The autokey protocol has detected an authentication failure. See the <a href="authopt.html">Authentication Options</a> page.
+ <dt><tt>0x400 TEST11</tt>
+ <dd>The autokey protocol has not verified the server or peer is proventic and has valid public key credentials. See the <a href="authopt.html">Authentication Options</a> page.
+ <dt><tt>0x800 TEST12</tt>
+ <dd>A protocol or configuration error has occurred in the public key algorithms or a possible intrusion event has been detected. See the <a href="authopt.html">Authentication Options</a> page.
+ </dl>
+ <h4>Bugs</h4>
+ <p>The peers command is non-atomic and may occasionally result in spurious error messages about invalid associations occurring and terminating the command. The timeout time is a fixed constant, which means you wait a long time for timeouts since it assumes sort of a worst case. The program should improve the timeout estimate as it sends queries to a particular host, but doesn't.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
-</html>
+</html> \ No newline at end of file
diff --git a/contrib/ntp/html/ntptime.html b/contrib/ntp/html/ntptime.html
index 0ddd8e4..a9ea33b 100644
--- a/contrib/ntp/html/ntptime.html
+++ b/contrib/ntp/html/ntptime.html
@@ -2,46 +2,47 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>ntptime - read kernel time variables</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>ntptime - read kernel time variables</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3><tt>ntptime</tt> - read kernel time variables</h3>
- <img src="pic/pogo5.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
- <p>The turtle has been swimming in the kernel.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">20:19</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="257">Monday, December 02, 2002</csobj></p>
- <br clear="left">
- <hr>
- <h4>Synopsis</h4>
- <tt>ntptime [ -chr ] [ -e <i>est_error</i> ] [ -f <i>frequency</i> ] [ -m <i>max_error</i> ] [ -o <i>offset</i> ] [ -s <i>status</i> ] [ -t <i>time_constant</i>]</tt>
- <h4>Description</h4>
- <p>This program is useful only with special kernels described in the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page. It reads and displays time-related kernel variables using the <tt>ntp_gettime()</tt> system call. A similar display can be obtained using the <tt>ntpdc</tt> program and <tt>kerninfo</tt> command.</p>
- <h4>Options</h4>
- <dl>
- <dt><tt>-c</tt>
- <dd>Display the execution time of <tt>ntptime</tt> itself.
- <dt><tt>-e <i>est_error</i></tt>
- <dd>Specify estimated error, in microseconds.
- <dt><tt>-f <i>frequency</i></tt>
- <dd>Specify frequency offset, in parts per million.
- <dt><tt>-h</tt>
- <dd>Display help information.
- <dt><tt>-m <i>max_error</i></tt>
- <dd>Specify max possible errors, in microseconds.
- <dt><tt>-o <i>offset</i></tt>
- <dd>Specify clock offset, in microseconds.
- <dt><tt>-r</tt>
- <dd>Display Unix and NTP times in raw format.
- <dt><tt>-s <i>status</i></tt>
- <dd>Specify clock status. Better know what you are doing.
- <dt><tt>-t <i>time_constant</i></tt>
- <dd>Specify time constant, an integer in the range 0-10.
- </dl>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3><tt>ntptime</tt> - read kernel time variables</h3>
+ <img src="pic/pogo5.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Pogo</i>, Walt Kelly</a>
+ <p>The turtle has been swimming in the kernel.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:46</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <hr>
+ <h4>Synopsis</h4>
+ <tt>ntptime [ -chr ] [ -e <i>est_error</i> ] [ -f <i>frequency</i> ] [ -m <i>max_error</i> ] [ -o <i>offset</i> ] [ -s <i>status</i> ] [ -t <i>time_constant</i>]</tt>
+ <h4>Description</h4>
+ <p>This program is useful only with special kernels described in the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page. It reads and displays time-related kernel variables using the <tt>ntp_gettime()</tt> system call. A similar display can be obtained using the <tt>ntpdc</tt> program and <tt>kerninfo</tt> command.</p>
+ <h4>Options</h4>
+ <dl>
+ <dt><tt>-c</tt>
+ <dd>Display the execution time of <tt>ntptime</tt> itself.
+ <dt><tt>-e <i>est_error</i></tt>
+ <dd>Specify estimated error, in microseconds.
+ <dt><tt>-f <i>frequency</i></tt>
+ <dd>Specify frequency offset, in parts per million.
+ <dt><tt>-h</tt>
+ <dd>Display help information.
+ <dt><tt>-m <i>max_error</i></tt>
+ <dd>Specify max possible errors, in microseconds.
+ <dt><tt>-o <i>offset</i></tt>
+ <dd>Specify clock offset, in microseconds.
+ <dt><tt>-r</tt>
+ <dd>Display Unix and NTP times in raw format.
+ <dt><tt>-s <i>status</i></tt>
+ <dd>Specify clock status. Better know what you are doing.
+ <dt><tt>-t <i>time_constant</i></tt>
+ <dd>Specify time constant, an integer in the range 0-10.
+ </dl>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/ntptrace.html b/contrib/ntp/html/ntptrace.html
index 76002bf..3b533f9 100644
--- a/contrib/ntp/html/ntptrace.html
+++ b/contrib/ntp/html/ntptrace.html
@@ -2,47 +2,48 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>ntptrace - trace a chain of NTP servers back to the primary source</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>ntptrace - trace a chain of NTP servers back to the primary source</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3><tt>ntptrace</tt> - trace a chain of NTP servers back to the primary source</h3>
- <img src="pic/alice13.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>The rabbit knows the way back.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">20:19</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="257">Monday, December 02, 2002</csobj></p>
- <br clear="left">
- <hr>
- <h4>Synopsis</h4>
- <tt>ntptrace [ -vdn ] [ -r <i>retries</i> ] [ -t <i>timeout</i> ] [ <i>server</i> ]</tt>
- <h4>Description</h4>
- <p><tt>ntptrace</tt> determines where a given Network Time Protocol (NTP) server gets its time from, and follows the chain of NTP servers back to their master time source. If given no arguments, it starts with <tt>localhost</tt>. Here is an example of the output from <tt>ntptrace</tt>:</p>
- <pre>
+ <body>
+ <h3><tt>ntptrace</tt> - trace a chain of NTP servers back to the primary source</h3>
+ <img src="pic/alice13.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>The rabbit knows the way back.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:47</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <hr>
+ <h4>Synopsis</h4>
+ <tt>ntptrace [ -vdn ] [ -r <i>retries</i> ] [ -t <i>timeout</i> ] [ <i>server</i> ]</tt>
+ <h4>Description</h4>
+ <p><tt>ntptrace</tt> determines where a given Network Time Protocol (NTP) server gets its time from, and follows the chain of NTP servers back to their master time source. If given no arguments, it starts with <tt>localhost</tt>. Here is an example of the output from <tt>ntptrace</tt>:</p>
+ <pre>
% ntptrace
localhost: stratum 4, offset 0.0019529, synch distance 0.144135
server2ozo.com: stratum 2, offset 0.0124263, synch distance 0.115784
usndh.edu: stratum 1, offset 0.0019298, synch distance 0.011993, refid 'WWVB'
</pre>
- <p>On each line, the fields are (left to right): the host name, the host stratum, the time offset between that host and the local host (as measured by <tt>ntptrace</tt>; this is why it is not always zero for &quot;<tt>localhost</tt>&quot;), the host synchronization distance, and (only for stratum-1 servers) the reference clock ID. All times are given in seconds. Note that the stratum is the server hop count to the primary source, while the synchronization distance is the estimated error relative to the primary source. These terms are precisely defined in RFC-1305.</p>
- <h4>Options</h4>
- <dl>
- <dt><tt>-d</tt>
- <dd>Turns on some debugging output.
- <dt><tt>-n</tt>
- <dd>Turns off the printing of host names; instead, host IP addresses are given. This may be useful if a nameserver is down.
- <dt><tt>-r <i>retries</i></tt>
- <dd>Sets the number of retransmission attempts for each host (default = 5).
- <dt><tt>-t <i>timeout</i></tt>
- <dd>Sets the retransmission timeout (in seconds) (default = 2).
- <dt><tt>-v</tt>
- <dd>Prints verbose information about the NTP servers.
- </dl>
- <h4>Bugs</h4>
- <p>This program makes no attempt to improve accuracy by doing multiple samples.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <p>On each line, the fields are (left to right): the host name, the host stratum, the time offset between that host and the local host (as measured by <tt>ntptrace</tt>; this is why it is not always zero for &quot;<tt>localhost</tt>&quot;), the host synchronization distance, and (only for stratum-1 servers) the reference clock ID. All times are given in seconds. Note that the stratum is the server hop count to the primary source, while the synchronization distance is the estimated error relative to the primary source. These terms are precisely defined in RFC-1305.</p>
+ <h4>Options</h4>
+ <dl>
+ <dt><tt>-d</tt>
+ <dd>Turns on some debugging output.
+ <dt><tt>-n</tt>
+ <dd>Turns off the printing of host names; instead, host IP addresses are given. This may be useful if a nameserver is down.
+ <dt><tt>-r <i>retries</i></tt>
+ <dd>Sets the number of retransmission attempts for each host (default = 5).
+ <dt><tt>-t <i>timeout</i></tt>
+ <dd>Sets the retransmission timeout (in seconds) (default = 2).
+ <dt><tt>-v</tt>
+ <dd>Prints verbose information about the NTP servers.
+ </dl>
+ <h4>Bugs</h4>
+ <p>This program makes no attempt to improve accuracy by doing multiple samples.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/parsedata.html b/contrib/ntp/html/parsedata.html
index d5b2383..301d8e7 100644
--- a/contrib/ntp/html/parsedata.html
+++ b/contrib/ntp/html/parsedata.html
@@ -2,123 +2,136 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>NTP PARSE clock data formats</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>NTP PARSE clock data formats</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>NTP PARSE clock data formats</h3>
- <p>The parse driver currently supports several clocks with different query mechanisms. In order for you to find a sample that might be similar to a clock you might want to integrate into parse i'll sum up the major features of the clocks (this information is distributed in the parse/clk_*.c and ntpd/refclock_parse.c files).</p>
- <hr>
- <h4>Meinberg clocks</h4>
- <pre>
+ <body>
+ <h3>NTP PARSE clock data formats</h3>
+ <p>The parse driver currently supports several clocks with different query mechanisms. In order for you to find a sample that might be similar to a clock you might want to integrate into parse I'll sum up the major features of the clocks (this information is distributed in the parse/clk_*.c and ntpd/refclock_parse.c files).</p>
+ <hr>
+ <h4>Meinberg clocks</h4>
+ <pre>
Meinberg: start=&lt;STX&gt;, end=&lt;ETX&gt;, sync on start
pattern=&quot;\2D: . . ;T: ;U: . . ; \3&quot;
pattern=&quot;\2 . . ; ; : : ; \3&quot;
pattern=&quot;\2 . . ; ; : : ; : ; ; . . &quot;
</pre>
- <p>Meinberg is a German manufacturer of time code receivers. Those clocks have a pretty common output format in the stock version. In order to support NTP Meinberg was so kind to produce some special versions of the firmware for the use with NTP. So, if you are going to use a Meinberg clock please ask whether there is a special Uni Erlangen version. You can reach <a href="http://www.meinberg.de/">Meinberg</a> via the Web. Information can also be ordered via eMail from <a href="mailto:%20info@meinberg.de">info@meinberg.de</a></p>
- <p>General characteristics:<br>
- Meinberg clocks primarily output pulse per second and a describing ASCII string. This string can be produced in two modes. either upon the reception of a question mark or every second. NTP uses the latter mechanism. The DCF77 variants have a pretty good relationship between RS232 time code and the PPS signal while the GPS receiver has no fixed timeing between the datagram and the pulse (you need to use PPS with GPS!) on DCF77 you might get away without the PPS signal.</p>
- <p>The preferred tty setting for Meinberg is:</p>
- <pre>
+ <p>Meinberg is a German manufacturer of time code receivers. Those clocks have a pretty common output format in the stock version. In order to support NTP Meinberg was so kind to produce some special versions of the firmware for the use with NTP. So, if you are going to use a Meinberg clock please ask whether there is a special Uni Erlangen version. You can reach <a href="http://www.meinberg.de/">Meinberg</a> via the Web. Information can also be ordered via eMail from <a href="mailto:%20info@meinberg.de">info@meinberg.de</a></p>
+ <p>General characteristics:<br>
+ Meinberg clocks primarily output pulse per second and a describing ASCII string. This string can be produced in two modes: either upon the reception of a question mark or every second. NTP uses the latter mechanism. DCF77 AM clocks have a limited accuracy of a few milliseconds. The DCF77 PZF5xx variants provide higher accuracy and have a pretty good relationship between RS232 time code and the PPS signal. Except for early versions of the old GPS166 receiver type, Meinberg GPS receivers have a very good timing relationship between the datagram and the pulse. The beginning of the start bit of the first character has basically the same accuracy as the PPS signal, plus a jitter of up to 1 bit time depending on the selected baud rate, i.e. 52 &mu;s @ 19200. PPS support should always be used, if possible, in order to yield the highest possible accuracy.</p>
+ <p>The preferred tty setting for Meinberg DCF77 receivers is 9600/7E2:</p>
+ <pre>
CFLAG (B9600|CS7|PARENB|CREAD|HUPCL)
IFLAG (IGNBRK|IGNPAR|ISTRIP)
OFLAG 0
LFLAG 0
</pre>
- <p>The tty setting for Meinberg GPS 166/167 receivers is:</p>
- <pre>
+ <p>The tty setting for Meinberg GPS16x/17x receivers is 19200/8N1:</p>
+ <pre>
CFLAG (B19200|CS8|PARENB|CREAD|HUPCL)
IFLAG (IGNBRK|IGNPAR|ISTRIP)
OFLAG 0
LFLAG 0
</pre>
- <p>The clock is run at datagram once per second. Stock dataformat is:</p>
- <pre>
- &lt;STX&gt;D:&lt;dd&gt;.&lt;mm&gt;.&lt;yy&gt;;T:&lt;w&gt;;U:&lt;hh&gt;:&lt;mm&gt;:&lt;ss&gt;;&lt;S&gt;&lt;F&gt;&lt;D&gt;&lt;A&gt;&lt;ETX&gt;
-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
+ <p>All clocks should be run at datagram once per second.<br><br></p>
+ <p>Format of the Meinberg standard time string:</p>
+<pre>
+ <b><i>&lt;STX&gt;</i>D:<i>dd.mm.yy</i>;T:<i>w</i>;U:<i>hh.mm.ss</i>;<i>uvxy</i><i>&lt;ETX&gt;</i></b>
+ pos: 0 000000001111111111222222222233 3
+ 1 234567890123456789012345678901 2
-&lt;STX&gt; = '\002' ASCII start of text
-&lt;ETX&gt; = '\003' ASCII end of text
-&lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt; = day, month, year(2 digits!!)
-&lt;w&gt; = day of week (sunday= 0)
-&lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt; = hour, minute, second
-&lt;S&gt; = '#' if never synced since powerup else ' ' for DCF U/A 31
- '#' if not PZF sychronisation available else ' ' for PZF 535
-&lt;F&gt; = '*' if time comes from internal quartz else ' '
-&lt;D&gt; = 'S' if daylight saving time is active else ' '
-&lt;D&gt; = 'U' if UTC time code is deliverd else ' '
-&lt;A&gt; = '!' during the hour preceeding an daylight saving time
- start/end change
-&lt;A&gt; = 'A' if a leap second is announced
+ <i>&lt;STX&gt;</i> = start-of-text, ASCII code 0x02
+ <i>dd.mm.yy</i> = day of month, month, year of the century, separated by dots
+ <i>w</i> = day of week (1..7, Monday = 1)
+ <i>hh:mm:ss</i> = hour, minute, second, separated by dots
+ <i>u</i> = '#' for GPS receivers: time is <b>not</b> synchronized
+ '#' for older PZF5xx receivers: no correlation, not synchronized
+ '#' for other devices: never sync'ed since powerup
+ ' ' if nothing of the above applies
+ <i>v</i> = '*' for GPS receivers: position has <b>not</b> been verified
+ '*' for other devices: freewheeling based on internal quartz
+ ' ' if nothing of the above applies
+ <i>x</i> = 'U' if UTC time is transmitted
+ 'S' if daylight saving time is active
+ ' ' if nothing of the above applies
+ <i>y</i> = '!' during the hour preceding start or end of daylight saving time
+ 'A' during the hour preceding a leap second
+ ' ' if nothing of the above applies
+ <i>&lt;ETX&gt;</i> = end-of-text, ASCII code 0x03
</pre>
- <pre>
- &lt;STX&gt;&lt;dd&gt;.&lt;mm&gt;.&lt;yy&gt;; &lt;w&gt;; &lt;hh&gt;:&lt;mm&gt;:&lt;ss&gt;; &lt;U&gt;&lt;S&gt;&lt;F&gt;&lt;D&gt;&lt;A&gt;&lt;L&gt;&lt;R&gt;&lt;ETX&gt;
- pos: 0 00 0 00 0 00 11 1 11 11 1 11 2 22 22 2 2 2 2 2 3 3 3
- 1 23 4 56 7 89 01 2 34 56 7 89 0 12 34 5 6 7 8 9 0 1 2
- &lt;STX&gt; = '\002' ASCII start of text
- &lt;ETX&gt; = '\003' ASCII end of text
- &lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt; = day, month, year(2 digits!!)
- &lt;w&gt; = day of week (sunday= 0)
- &lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt; = hour, minute, second
- &lt;U&gt; = 'U' UTC time display
- &lt;S&gt; = '#' if never synced since powerup else ' ' for DCF U/A 31
- '#' if not PZF sychronisation available else ' ' for PZF 535
- &lt;F&gt; = '*' if time comes from internal quartz else ' '
- &lt;D&gt; = 'S' if daylight saving time is active else ' '
- &lt;A&gt; = '!' during the hour preceeding an daylight saving time
- start/end change
- &lt;L&gt; = 'A' LEAP second announcement
- &lt;R&gt; = 'R' alternate antenna
+ <p>Format of the Uni Erlangen time string for PZF5xx receivers:</p>
+<pre>
+ <b><i>&lt;STX&gt;</i><i>dd.mm.yy</i>; <i>w</i>; <i>hh:mm:ss</i>; <i>tuvxyza</i><i>&lt;ETX&gt;</i></b>
+ pos: 0 000000001111111111222222222233 3
+ 1 234567890123456789012345678901 2
+
+ <i>&lt;STX&gt;</i> = start-of-text, ASCII code 0x02
+ <i>dd.mm.yy</i> = day of month, month, year of the century, separated by dots
+ <i>w</i> = day of week (1..7, Monday = 1)
+ <i>hh:mm:ss</i> = hour, minute, second, separated by colons
+
+ <i>t</i> = 'U' if UTC time is transmitted, else ' '
+ <i>u</i> = '#' for older PZF5xx receivers: no correlation, not synchronized
+ '#' for PZF511 and newer: never sync'ed since powerup
+ ' ' if nothing of the above applies
+ <i>v</i> = '*' if freewheeling based on internal quartz, else ' '
+ <i>x</i> = 'S' if daylight saving time is active, else ' '
+ <i>y</i> = '!' during the hour preceding start or end of daylight saving time, else ' '
+ <i>z</i> = 'A' during the hour preceding a leap second, else ' '
+ <i>a</i> = 'R' alternate antenna (reminiscent of PZF5xx), usually ' ' for GPS receivers
+ <i>&lt;ETX&gt;</i> = end-of-text, ASCII code 0x03
+</pre>
+ <p>Format of the Uni Erlangen time string for GPS16x/GPS17x receivers:</p>
+<pre>
+ <b><i>&lt;STX&gt;</i><i>dd.mm.yy</i>; <i>w</i>; <i>hh:mm:ss</i>; <i>+uu:uu</i>; <i>uvxyzab</i>; <i>ll.lllln</i> <i>lll.lllle</i> <i>hhhh</i>m<i>&lt;ETX&gt;</i></b>
+ pos: 0 0000000011111111112222222222333333333344444444445555555555666666 6
+ 1 2345678901234567890123456789012345678901234567890123456789012345 6
+
+ <i>&lt;STX&gt;</i> = start-of-text, ASCII code 0x02
+ <i>dd.mm.yy</i> = day of month, month, year of the century, separated by dots
+ <i>w</i> = day of week (1..7, Monday = 1)
+ <i>hh:mm:ss</i> = hour, minute, second, separated by colons
+ <i>+uu:uu</i> = offset to UTC in hours and minutes, preceded by + or -
+ <i>u</i> = '#' if time is <b>not</b> synchronized, else ' '
+ <i>v</i> = '*' if position has <b>not</b> been verified, else ' '
+ <i>x</i> = 'S' if daylight saving time is active, else ' '
+ <i>y</i> = '!' during the hour preceding start or end of daylight saving time, else ' '
+ <i>z</i> = 'A' during the hour preceding a leap second, else ' '
+ <i>a</i> = 'R' alternate antenna (reminiscent of PZF5xx), usually ' ' for GPS receivers
+ <i>b</i> = 'L' during a leap second, i.e. if the seconds field is 60, else ' '
+ <i>ll.lllln</i> = position latitude in degrees, 'n' can actually be 'N' or 'S', i.e. North or South
+ <i>lll.lllle</i> = position longitude in degrees, 'e' can actually be 'E' or 'W', i.e. East or West
+ <i>hhhh</i> = position altitude in meters, always followed by 'm'
+ <i>&lt;ETX&gt;</i> = end-of-text, ASCII code 0x03
</pre>
- <p>Meinberg GPS166 receiver<br>
- You must get the Uni-Erlangen firmware for the GPS receiver support to work to full satisfaction !</p>
- <pre>
- &lt;STX&gt;&lt;dd&gt;.&lt;mm&gt;.&lt;yy&gt;; &lt;w&gt;; &lt;hh&gt;:&lt;mm&gt;:&lt;ss&gt;; &lt;+/-&gt;&lt;00:00&gt;; &lt;U&gt;&lt;S&gt;&lt;F&gt;&lt;D&gt;&lt;A&gt;&lt;L&gt;&lt;R&gt;&lt;L&gt;; &lt;position...&gt;&lt;ETX&gt;
- *
- 000000000111111111122222222223333333333444444444455555555556666666
- 123456789012345678901234567890123456789012345678901234567890123456
- \x0209.07.93; 5; 08:48:26; +00:00; ; 49.5736N 11.0280E 373m\x03
- *
-
- &lt;STX&gt; = '\002' ASCII start of text
- &lt;ETX&gt; = '\003' ASCII end of text
- &lt;dd&gt;,&lt;mm&gt;,&lt;yy&gt; = day, month, year(2 digits!!)
- &lt;w&gt; = day of week (sunday= 0)
- &lt;hh&gt;,&lt;mm&gt;,&lt;ss&gt; = hour, minute, second
- &lt;+/-&gt;,&lt;00:00&gt; = offset to UTC
- &lt;S&gt; = '#' if never synced since powerup else ' ' for DCF U/A 31
- '#' if not PZF sychronisation available else ' ' for PZF 535
- &lt;U&gt; = 'U' UTC time display
- &lt;F&gt; = '*' if time comes from internal quartz else ' '
- &lt;D&gt; = 'S' if daylight saving time is active else ' '
- &lt;A&gt; = '!' during the hour preceeding an daylight saving time
- start/end change
- &lt;L&gt; = 'A' LEAP second announcement
- &lt;R&gt; = 'R' alternate antenna (reminiscent of PZF535) usually ' '
- &lt;L&gt; = 'L' on 23:59:60
+ <p>Examples for Uni Erlangen strings from GPS receivers:</p>
+<pre>
+ \x02 09.07.93; 5; 08:48:26; +00:00; ; 49.5736N 11.0280E 373m \x03
+ \x02 08.11.06; 3; 14:39:39; +00:00; ; 51.9828N 9.2258E 176m \x03
</pre>
- <p>For the Meinberg parse look into clock_meinberg.c</p>
- <h4>Raw DCF77 Data via serial line</h4>
- <p>RAWDCF: end=TIMEOUT&gt;1.5s, sync each char (any char),generate psuedo time codes, fixed format</p>
- <p>direct DCF77 code input</p>
- <p>In Europe it is relatively easy/cheap the receive the german time code transmitter DCF77. The simplest version to process its signal is to feed the 100/200ms pulse of the demodulated AM signal via a level converter to an RS232 port at 50Baud. parse/clk_rawdcf.c holds all necessary decoding logic for the time code which is transmitted each minute for one minute. A bit of the time code is sent once a second.</p>
- <pre>
+ <p>The Uni Erlangen formats should be used preferably. Newer Meinberg GPS receivers can be configured to transmit that format, for older devices there may be a special firmware version available.</p>
+ <p>For the Meinberg parse look into clk_meinberg.c<br><br></p>
+ <hr>
+ <h4>Raw DCF77 Data via serial line</h4>
+ <p>RAWDCF: end=TIMEOUT&gt;1.5s, sync each char (any char),generate psuedo time codes, fixed format</p>
+ <p>direct DCF77 code input</p>
+ <p>In Europe it is relatively easy/cheap the receive the german time code transmitter DCF77. The simplest version to process its signal is to feed the 100/200ms pulse of the demodulated AM signal via a level converter to an RS232 port at 50Baud. parse/clk_rawdcf.c holds all necessary decoding logic for the time code which is transmitted each minute for one minute. A bit of the time code is sent once a second.</p>
+ <pre>
The preferred tty setting is:
CFLAG (B50|CS8|CREAD|CLOCAL)
IFLAG 0
OFLAG 0
LFLAG 0
</pre>
- <h4>DCF77 raw time code</h4>
- <p>From &quot;Zur Zeit&quot;, Physikalisch-Technische Bundesanstalt (PTB), Braunschweig und Berlin, M&#132;rz 1989<br>
- </p>
- <p>Timecode transmission:</p>
- <pre>
+ <h4>DCF77 raw time code</h4>
+ <p>From &quot;Zur Zeit&quot;, Physikalisch-Technische Bundesanstalt (PTB), Braunschweig und Berlin, M&auml;rz 1989<br>
+ </p>
+ <p>Timecode transmission:</p>
+ <pre>
AM:
time marks are send every second except for the second before the
@@ -129,8 +142,8 @@ pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
time marks of a 100ms duration constitute a logical 0
time marks of a 200ms duration constitute a logical 1
</pre>
- <p>see the spec. (basically a (non-)inverted psuedo random phase shift) encoding:</p>
- <pre>
+ <p>see the spec. (basically a (non-)inverted psuedo random phase shift) encoding:</p>
+ <pre>
FM:
Second Contents
@@ -143,29 +156,29 @@ pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
0 1 MEZ (MET)
1 0 MESZ (MED, MET DST)
1 1 illegal
- 19 A2 - expect leap insertion/deletion (1 hour before)
- 20 S - start of time code (1)
+ 19 A2 - expect leap insertion/deletion (1 hour before)
+ 20 S - start of time code (1)
21 - 24 M1 - BCD (lsb first) Minutes
25 - 27 M10 - BCD (lsb first) 10 Minutes
- 28 P1 - Minute Parity (even)
+ 28 P1 - Minute Parity (even)
29 - 32 H1 - BCD (lsb first) Hours
- 33 - 34 H10 - BCD (lsb first) 10 Hours
- 35 P2 - Hour Parity (even)
+ 33 - 34 H10 - BCD (lsb first) 10 Hours
+ 35 P2 - Hour Parity (even)
36 - 39 D1 - BCD (lsb first) Days
40 - 41 D10 - BCD (lsb first) 10 Days
42 - 44 DW - BCD (lsb first) day of week (1: Monday -&gt; 7: Sunday)
- 45 - 49 MO - BCD (lsb first) Month
- 50 MO0 - 10 Months
+ 45 - 49 MO1 - BCD (lsb first) Month
+ 50 MO10 - 10 Months
51 - 53 Y1 - BCD (lsb first) Years
54 - 57 Y10 - BCD (lsb first) 10 Years
- 58 P3 - Date Parity (even)
- 59 - usually missing (minute indication), except for leap insertion
+ 58 P3 - Date Parity (even)
+ 59 - usually missing (minute indication), except for leap insertion
</pre>
- <hr>
- <h4>Schmid clock</h4>
- <p>Schmid clock: needs poll, binary input, end='\xFC', sync start</p>
- <p>The Schmid clock is a DCF77 receiver that sends a binary time code at the reception of a flag byte. The contents if the flag byte determined the time code format. The binary time code is delimited by the byte 0xFC.</p>
- <pre>
+ <hr>
+ <h4>Schmid clock</h4>
+ <p>Schmid clock: needs poll, binary input, end='\xFC', sync start</p>
+ <p>The Schmid clock is a DCF77 receiver that sends a binary time code at the reception of a flag byte. The contents if the flag byte determined the time code format. The binary time code is delimited by the byte 0xFC.</p>
+ <pre>
TTY setup is:
CFLAG (B1200|CS8|CREAD|CLOCAL)
IFLAG 0
@@ -173,8 +186,8 @@ pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
LFLAG 0
</pre>
- <p>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).</p>
- <pre>
+ <p>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).</p>
+ <pre>
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)
@@ -191,19 +204,19 @@ pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
bits 5-7: Zero
Bit 6: time in backup mode, units of 5 minutes (unused here)
</pre>
- <hr>
- <h4>Trimble SV6 ASCII time code (TAIP)</h4>
- <p>Trimble SV6: needs poll, ascii timecode, start='&gt;', end='&lt;', query='&gt;QTM&lt;', eol='&lt;'</p>
- <p>Trimble SV6 is a GPS receiver with PPS output. It needs to be polled. It also need a special tty mode setup (EOL='&lt;').</p>
- <pre>
+ <hr>
+ <h4>Trimble SV6 ASCII time code (TAIP)</h4>
+ <p>Trimble SV6: needs poll, ascii timecode, start='&gt;', end='&lt;', query='&gt;QTM&lt;', eol='&lt;'</p>
+ <p>Trimble SV6 is a GPS receiver with PPS output. It needs to be polled. It also need a special tty mode setup (EOL='&lt;').</p>
+ <pre>
TTY setup is:
CFLAG (B4800|CS8|CREAD)
IFLAG (BRKINT|IGNPAR|ISTRIP|ICRNL|IXON)
OFLAG (OPOST|ONLCR)
LFLAG (ICANON|ECHOK)
</pre>
- <p>Special flags are:</p>
- <pre> PARSE_F_PPSPPS - use CIOGETEV for PPS time stamping
+ <p>Special flags are:</p>
+ <pre> PARSE_F_PPSPPS - use CIOGETEV for PPS time stamping
PARSE_F_PPSONSECOND - the time code is not related to
the PPS pulse (so use the time code
only for the second epoch)
@@ -215,11 +228,11 @@ pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
----33445566600112222BB7__-_____--99- Parse
&gt;RTM 1 ;* &lt; Check
</pre>
- <hr>
- <h4>ELV DCF7000</h4>
- <p>ELV DCF7000: end='\r', pattern=&quot; - - - - - - - \r&quot;</p>
- <p>The ELV DCF7000 is a cheap DCF77 receiver sending each second a time code (though not very precise!) delimited by '`r'</p>
- <pre>
+ <hr>
+ <h4>ELV DCF7000</h4>
+ <p>ELV DCF7000: end='\r', pattern=&quot; - - - - - - - \r&quot;</p>
+ <p>The ELV DCF7000 is a cheap DCF77 receiver sending each second a time code (though not very precise!) delimited by '`r'</p>
+ <pre>
Timecode
YY-MM-DD-HH-MM-SS-FF\r
@@ -227,10 +240,10 @@ pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
FF&amp;0x2 - DST switch warning
FF&amp;0x4 - unsynchronised
</pre>
- <hr>
- <h4>HOPF 6021 und Kompatible</h4>
- <p>HOPF Funkuhr 6021 mit serieller Schnittstelle Created by F.Schnekenbuehl &lt;frank@comsys.dofn.de&gt; from clk_rcc8000.c Nortel DASA Network Systems GmbH, Department: ND250 A Joint venture of Daimler-Benz Aerospace and Nortel.</p>
- <pre>
+ <hr>
+ <h4>HOPF 6021 und Kompatible</h4>
+ <p>HOPF Funkuhr 6021 mit serieller Schnittstelle Created by F.Schnekenbuehl &lt;frank@comsys.dofn.de&gt; from clk_rcc8000.c Nortel DASA Network Systems GmbH, Department: ND250 A Joint venture of Daimler-Benz Aerospace and Nortel.</p>
+ <pre>
hopf Funkuhr 6021
used with 9600,8N1,
UTC via serial line
@@ -241,8 +254,8 @@ pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
transmit with control characters
transmit evry second
</pre>
- <p>Type 6021 Serial Output format</p>
- <pre>
+ <p>Type 6021 Serial Output format</p>
+ <pre>
000000000011111111 / char
012345678901234567 \ position
sABHHMMSSDDMMYYnre Actual
@@ -277,10 +290,10 @@ pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
x 1 1 0 - Saturday
x 1 1 1 - Sunday
</pre>
- <hr>
- <h4>Diem Computime Clock</h4>
- <p>The Computime receiver sends a datagram in the following format every minute</p>
- <pre>
+ <hr>
+ <h4>Diem Computime Clock</h4>
+ <p>The Computime receiver sends a datagram in the following format every minute</p>
+ <pre>
Timestamp T:YY:MM:MD:WD:HH:MM:SSCRLF
Pos 0123456789012345678901 2 3
0000000000111111111122 2 2
@@ -296,10 +309,10 @@ pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
CR Carriage return
LF Linefeed
</pre>
- <hr>
- <h4>WHARTON 400A Series Clock with a 404.2 Serial interface</h4>
- <p>The WHARTON 400A Series clock is able to send date/time serial messages in 7 output formats. We use format 1 here because it is the shortest. We set up the clock to send a datagram every second. For use with this driver, the WHARTON 400A Series clock must be set-up as follows :</p>
- <pre>
+ <hr>
+ <h4>WHARTON 400A Series Clock with a 404.2 Serial interface</h4>
+ <p>The WHARTON 400A Series clock is able to send date/time serial messages in 7 output formats. We use format 1 here because it is the shortest. We set up the clock to send a datagram every second. For use with this driver, the WHARTON 400A Series clock must be set-up as follows :</p>
+ <pre>
Programmable Selected
Option No Option
BST or CET display 3 9 or 11
@@ -309,8 +322,8 @@ pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
Bit length 8 bits 11 8
Parity even 12 E
</pre>
- <p>WHARTON 400A Series output format 1 is as follows :</p>
- <pre>
+ <p>WHARTON 400A Series output format 1 is as follows :</p>
+ <pre>
Timestamp STXssmmhhDDMMYYSETX
Pos 0 12345678901234
0 00000000011111
@@ -329,8 +342,8 @@ pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3
bit 2 0 = not synchronised 1 = synchronised
bit 3 0 = no early warning 1 = early warning
</pre>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/parsenew.html b/contrib/ntp/html/parsenew.html
index 0f0e0b3..4f11a46 100644
--- a/contrib/ntp/html/parsenew.html
+++ b/contrib/ntp/html/parsenew.html
@@ -2,25 +2,26 @@
<html>
- <head>
- <title>Making PARSE Clocks</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
-
- <body>
- <h3>How to build new PARSE clocks</h3>
- <p>Here is an attempt to sketch out what you need to do in order to add another clock to the parse driver: Currently the implementation is being cleaned up - so not all information in here is completely correct. Refer to the included code where in doubt.</p>
- <p>Prerequisites:</p>
- <ul>
- <li>Does the system you want the clock connect to have the include files termio.h or termios.h ? (You need that for the parse driver)
- </ul>
- <p>What to do:</p>
- <p>Make a conversion module (libparse/clk_*.c)</p>
- <ol>
- <li>What ist the time code format ?
- <ul>
- <li>find year, month, day, hour, minute, second, status (synchronised or not), possibly time zone information (you need to give the offset to UTC) You will have to convert the data from a string into a struct clocktime:
- <pre>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Making PARSE Clocks</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
+
+ <body>
+ <h3>How to build new PARSE clocks</h3>
+ <p>Here is an attempt to sketch out what you need to do in order to add another clock to the parse driver: Currently the implementation is being cleaned up - so not all information in here is completely correct. Refer to the included code where in doubt.</p>
+ <p>Prerequisites:</p>
+ <ul>
+ <li>Does the system you want the clock connect to have the include files termio.h or termios.h ? (You need that for the parse driver)
+ </ul>
+ <p>What to do:</p>
+ <p>Make a conversion module (libparse/clk_*.c)</p>
+ <ol>
+ <li>What ist the time code format ?
+ <ul>
+ <li>find year, month, day, hour, minute, second, status (synchronised or not), possibly time zone information (you need to give the offset to UTC) You will have to convert the data from a string into a struct clocktime:
+ <pre>
struct clocktime /* clock time broken up from time code */
{
long day;
@@ -35,8 +36,8 @@
long flags; /* current clock status */
};
</pre>
- <p>Conversion is usually simple and straight forward. For the flags following values can be OR'ed together:</p>
- <pre>
+ <p>Conversion is usually simple and straight forward. For the flags following values can be OR'ed together:</p>
+ <pre>
PARSEB_ANNOUNCE switch time zone warning (informational only)
PARSEB_POWERUP no synchronisation - clock confused (must set then)
PARSEB_NOSYNC timecode currently not confirmed (must set then)
@@ -54,16 +55,16 @@
PARSEB_LEAPSECOND actual leap second (this time code is the leap
second - informational only)
</pre>
- <p>These are feature flags denoting items that are supported by the clock:</p>
- <pre>
+ <p>These are feature flags denoting items that are supported by the clock:</p>
+ <pre>
PARSEB_S_LEAP supports LEAP - might set PARSEB_LEAP
PARSEB_S_ANTENNA supports ANTENNA - might set PARSEB_ALTERNATE
PARSEB_S_PPS supports PPS time stamping
PARSEB_S_POSITION supports position information (GPS)
</pre>
- <p>If the utctime field is non zero this value will be take as time code value. This allows for conversion routines that already have the utc time value. The utctime field gives the seconds since Jan 1st 1970, 0:00:00. The useconds field gives the respective usec value. The fields for date and time (down to second resolution) will be ignored.</p>
- <p>Conversion is done in the cvt_* routine in parse/clk_*.c files. look in them for examples. The basic structure is:</p>
- <pre>
+ <p>If the utctime field is non zero this value will be take as time code value. This allows for conversion routines that already have the utc time value. The utctime field gives the seconds since Jan 1st 1970, 0:00:00. The useconds field gives the respective usec value. The fields for date and time (down to second resolution) will be ignored.</p>
+ <p>Conversion is done in the cvt_* routine in parse/clk_*.c files. look in them for examples. The basic structure is:</p>
+ <pre>
struct clockformat &lt;yourclock&gt;_format = {
lots of fields for you to fill out (see below)
};
@@ -82,8 +83,8 @@
}
}
</pre>
- <p>The struct clockformat is the interface to the rest of the parse driver - it holds all information necessary for finding the clock message and doing the appropriate time stamping.</p>
- <pre>
+ <p>The struct clockformat is the interface to the rest of the parse driver - it holds all information necessary for finding the clock message and doing the appropriate time stamping.</p>
+ <pre>
struct clockformat
{
u_long (*input)();
@@ -104,14 +105,14 @@ struct clockformat
/* information for the parser what to look for */
};
</pre>
- <p>The above should have given you some hints on how to build a clk_*.c file with the time code conversion. See the examples and pick a clock closest to yours and tweak the code to match your clock.</p>
- <p>In order to make your clk_*.c file usable a reference to the clockformat structure must be put into parse_conf.c.</p>
- </ul>
- <li>TTY setup and initialisation/configuration will be done in ntpd/refclock_parse.c.
- <ul>
- <li>Find out the exact tty settings for your clock (baud rate, parity, stop bits, character size, ...) and note them in terms of termio*.h c_cflag macros.
- <li>in ntpd/refclock_parse.c fill out a new the struct clockinfo element (that allocates a new &quot;IP&quot; address - see comments) (see all the other clocks for example)
- <pre>
+ <p>The above should have given you some hints on how to build a clk_*.c file with the time code conversion. See the examples and pick a clock closest to yours and tweak the code to match your clock.</p>
+ <p>In order to make your clk_*.c file usable a reference to the clockformat structure must be put into parse_conf.c.</p>
+ </ul>
+ <li>TTY setup and initialisation/configuration will be done in ntpd/refclock_parse.c.
+ <ul>
+ <li>Find out the exact tty settings for your clock (baud rate, parity, stop bits, character size, ...) and note them in terms of termio*.h c_cflag macros.
+ <li>in ntpd/refclock_parse.c fill out a new the struct clockinfo element (that allocates a new &quot;IP&quot; address - see comments) (see all the other clocks for example)
+ <pre>
struct clockinfo
{
u_long cl_flags; /* operation flags (io modes) */
@@ -180,16 +181,18 @@ struct clockformat
};
</pre>
- </ul>
- </ol>
- <p>Well, this is very sketchy, i know. But I hope it helps a little bit. The best way is to look which clock comes closest to your and tweak that code.</p>
- <p>Two sorts of clocks are used with parse. Clocks that automatically send their time code (once a second) do not need entries in the poll routines because they send the data all the time. The second sort are the clocks that need a command sent to them in order to reply with a time code (like the Trimble clock).</p>
- <p>For questions: <a href="mailto:%20kardel@acm.org">kardel@acm.org</a>.</p>
- <p>Please include an exact description on how your clock works. (initialisation, TTY modes, strings to be sent to it, responses received from the clock).</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
-
- <body></body>
-
-</html>
+ </ul>
+ </ol>
+ <p>Well, this is very sketchy, i know. But I hope it helps a little bit. The best way is to look which clock comes closest to your and tweak that code.</p>
+ <p>Two sorts of clocks are used with parse. Clocks that automatically send their time code (once a second) do not need entries in the poll routines because they send the data all the time. The second sort are the clocks that need a command sent to them in order to reply with a time code (like the Trimble clock).</p>
+ <p>For questions: <a href="mailto:%20kardel <AT> acm.org">kardel
+ <AT>
+ acm.org</a>.</p>
+ <p>Please include an exact description on how your clock works. (initialisation, TTY modes, strings to be sent to it, responses received from the clock).</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
+
+ <body></body>
+
+</html> \ No newline at end of file
diff --git a/contrib/ntp/html/pps.html b/contrib/ntp/html/pps.html
index c060148..b9fcd7f 100644
--- a/contrib/ntp/html/pps.html
+++ b/contrib/ntp/html/pps.html
@@ -2,39 +2,40 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Pulse-per-second (PPS) Signal Interfacing</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Pulse-per-second (PPS) Signal Interfacing</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Pulse-per-second (PPS) Signal Interfacing</h3>
- <img src="pic/alice32.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>Alice is trying to find the PPS signal connector.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">14:46</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="235">Monday, January 20, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links11.txt"></script>
- <hr>
- <p>Some radio clocks and related timekeeping gear have a pulse-per-second (PPS) signal that can be used to discipline the system clock to a high degree of precision, typically to the order less than 10 <font face="Symbol">m</font>s in time and 0.01 parts-per-million (PPM) in frequency. This page describes the hardware and software necessar for NTP to use this signal.</p>
- <img src="pic/gadget.jpg" alt="gif" align="left">A Gadget Box built by Chuck Hanavin<br clear="left">
- <h4>Gadget Box</h4>
- <p>The PPS signal can be connected in either of two ways: via the data carrier detector (DCD) pin of a serial port or via the acknowledge (ACK) pin of a parallel port, depending on the hardware and operating system. Note that NTP no longer supports connection via the data leads of a serial port. However, the PPS signal levels are usually incompatible with serial port levels. The gadget box consists of a handful of electronic components assembled in a small aluminum box. It includes level converters and a optional modem designed to decode the radio timecode signals transmitted by Canadian time and frequency station CHU. This can be used with the <a href="drivers/driver7.html">Radio CHU Audio Demodulator/Decoder</a>. A complete set of schematics, PCB artwork and drill templates can be obrtained via the web at <a href="ftp://ftp.udel.edu/pub/ntp/hardware/gadget.tar.Z">gadget.tar.Z</a>.</p>
- <h4>Operating System Support&nbsp;</h4>
- <p>Both the serial and parallel port connection require operating system support, which is available in only a few operating systems, including FreeBSD, Linux (with PPSkit patch) and Solaris. Support on an experimental basis is available for several other systems, including SunOS and HP/Compaq/Digital Tru64. The PPSAPI application program interface defined in [1] is the only interface currently supported. Older PPS interfaces based on the <tt>ppsclock</tt> and <tt>tty_clk</tt> streams modules are no longer supported. As the PPSAPI is expected to become an IETF cross-platform standard, it should be used by new applications.</p>
- <p>The entire PPS interface functionality is currently provided by inline code in the <tt>timepps.h</tt> header file. While not all implementations support the full PPSAPI specification, they do support all the functions required for the PPS driver described next. The FreeBSD, Linux and Solaris implementations can be used with the stock kernels provided with those systems; however, the Tru64 and SunOS kernels require additional functions not provided in the stock kernels. Solaris users are cautioned that these functions operate improperly in Solaris versions prior to 2.8 with patch Generic_108528-02. Header files for other systems can be found via the web at <a href="ftp://ftp.udel.edu/pub/ntp/software/nanokernel.tar.gz">nanokernel.tar.gz</a>.</p>
- <h4>PPS Driver</h4>
- <p>In the preferred mode of operation, PPS signals are processed by the <a href="drivers/driver22.html">PPS Clock Discipline</a> driver and other clock drivers which might be involved need not know or care about them. In some cases where there is no other driver, time might be obtained from remote NTP servers via the network and local PPS signals, for instance from a calibrated cesium oscillator, used to stabilize the frequency and remove network jitter. Note that the <tt>pps</tt> configuration command has been obsoleted by this driver.</p>
- <p>The PPS driver operates in conjunction with a preferred peer, as described in the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page. One of the drivers described in the <a href="refclock.html">Reference Clock Drivers</a> page or another NTP server furnishes the coarse timing and disambiguates the seconds numbering of the PPS signal itself. The NTP daemon mitigates between the clock driver or NTP server and the PPS driver as described in that page in order to provide the most accurate time, while respecting the various types of equipment failures that could happen.</p>
- <p>Some Unix system kernels support a PPS signal directly, as described in the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page. Specifically, the PPS driver can be used to direct the PPS signal to the kernel for use as a discipline source for both time and frequency. The presence of the kernel support is automatically detected during the NTP build process and supporting code automatically compiled. Note that the PPS driver does not normally enable the PPS kernel code, since performance is generally better without it. However, this code can be enabled by a driver fudge flag if necessary.</p>
- <p>Some configurations may include multiple radio clocks with individual PPS outputs. In some PPSAPI designs multiple PPS signals can be connected to multiple instances of the PPS driver. In such cases the NTP mitigation and grooming algorithms operate with all the radio timecodes and PPS signals to develop the highest degree of redundancy and survivability.</p>
- <h4>Reference</h4>
- <ol>
- <li>Mogul, J., D. Mills, J. Brittenson, J. Stone and U. Windl. Pulse-per-second API for Unix-like operating systems, version 1. Request for Comments RFC-2783, Internet Engineering Task Force, March 2000, 31 pp. <a href="http://www.eecis.udel.edu/mills/database/rfc/rfc2783.txt">ASCII</a>
- </ol>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Pulse-per-second (PPS) Signal Interfacing</h3>
+ <img src="pic/alice32.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>Alice is trying to find the PPS signal connector.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:48</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links11.txt"></script>
+ <hr>
+ <p>Some radio clocks and related timekeeping gear have a pulse-per-second (PPS) signal that can be used to discipline the system clock to a high degree of precision, typically to the order less than 10 <font face="Symbol">m</font>s in time and 0.01 parts-per-million (PPM) in frequency. This page describes the hardware and software necessar for NTP to use this signal.</p>
+ <img src="pic/gadget.jpg" alt="gif" align="left">A Gadget Box built by Chuck Hanavin<br clear="left">
+ <h4>Gadget Box</h4>
+ <p>The PPS signal can be connected in either of two ways: via the data carrier detector (DCD) pin of a serial port or via the acknowledge (ACK) pin of a parallel port, depending on the hardware and operating system. Note that NTP no longer supports connection via the data leads of a serial port. However, the PPS signal levels are usually incompatible with serial port levels. The gadget box consists of a handful of electronic components assembled in a small aluminum box. It includes level converters and a optional modem designed to decode the radio timecode signals transmitted by Canadian time and frequency station CHU. This can be used with the <a href="drivers/driver7.html">Radio CHU Audio Demodulator/Decoder</a>. A complete set of schematics, PCB artwork and drill templates can be obrtained via the web at <a href="ftp://ftp.udel.edu/pub/ntp/hardware/gadget.tar.Z">gadget.tar.Z</a>.</p>
+ <h4>Operating System Support&nbsp;</h4>
+ <p>Both the serial and parallel port connection require operating system support, which is available in only a few operating systems, including FreeBSD, Linux (with PPSkit patch) and Solaris. Support on an experimental basis is available for several other systems, including SunOS and HP/Compaq/Digital Tru64. The PPSAPI application program interface defined in [1] is the only interface currently supported. Older PPS interfaces based on the <tt>ppsclock</tt> and <tt>tty_clk</tt> streams modules are no longer supported. As the PPSAPI is expected to become an IETF cross-platform standard, it should be used by new applications.</p>
+ <p>The entire PPS interface functionality is currently provided by inline code in the <tt>timepps.h</tt> header file. While not all implementations support the full PPSAPI specification, they do support all the functions required for the PPS driver described next. The FreeBSD, Linux and Solaris implementations can be used with the stock kernels provided with those systems; however, the Tru64 and SunOS kernels require additional functions not provided in the stock kernels. Solaris users are cautioned that these functions operate improperly in Solaris versions prior to 2.8 with patch Generic_108528-02. Header files for other systems can be found via the web at <a href="ftp://ftp.udel.edu/pub/ntp/software/nanokernel.tar.gz">nanokernel.tar.gz</a>.</p>
+ <h4>PPS Driver</h4>
+ <p>In the preferred mode of operation, PPS signals are processed by the <a href="drivers/driver22.html">PPS Clock Discipline</a> driver and other clock drivers which might be involved need not know or care about them. In some cases where there is no other driver, time might be obtained from remote NTP servers via the network and local PPS signals, for instance from a calibrated cesium oscillator, used to stabilize the frequency and remove network jitter. Note that the <tt>pps</tt> configuration command has been obsoleted by this driver.</p>
+ <p>The PPS driver operates in conjunction with a preferred peer, as described in the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page. One of the drivers described in the <a href="refclock.html">Reference Clock Drivers</a> page or another NTP server furnishes the coarse timing and disambiguates the seconds numbering of the PPS signal itself. The NTP daemon mitigates between the clock driver or NTP server and the PPS driver as described in that page in order to provide the most accurate time, while respecting the various types of equipment failures that could happen.</p>
+ <p>Some Unix system kernels support a PPS signal directly, as described in the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page. Specifically, the PPS driver can be used to direct the PPS signal to the kernel for use as a discipline source for both time and frequency. The presence of the kernel support is automatically detected during the NTP build process and supporting code automatically compiled. Note that the PPS driver does not normally enable the PPS kernel code, since performance is generally better without it. However, this code can be enabled by a driver fudge flag if necessary.</p>
+ <p>Some configurations may include multiple radio clocks with individual PPS outputs. In some PPSAPI designs multiple PPS signals can be connected to multiple instances of the PPS driver. In such cases the NTP mitigation and grooming algorithms operate with all the radio timecodes and PPS signals to develop the highest degree of redundancy and survivability.</p>
+ <h4>Reference</h4>
+ <ol>
+ <li>Mogul, J., D. Mills, J. Brittenson, J. Stone and U. Windl. Pulse-per-second API for Unix-like operating systems, version 1. Request for Comments RFC-2783, Internet Engineering Task Force, March 2000, 31 pp. <a href="http://www.eecis.udel.edu/mills/database/rfc/rfc2783.txt">ASCII</a>
+ </ol>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/prefer.html b/contrib/ntp/html/prefer.html
index fe909b7..00225d1 100644
--- a/contrib/ntp/html/prefer.html
+++ b/contrib/ntp/html/prefer.html
@@ -2,70 +2,71 @@
<html>
- <head>
- <title>Mitigation Rules and the prefer Keyword</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Mitigation Rules and the prefer Keyword</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Mitigation Rules and the <tt>prefer</tt> Keyword</h3>
- <img src="pic/alice11.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html"> from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>Listen carefully to what I say; it is very complicated.</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:17 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links10.txt"></script>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#intro">Introduction</a>
- <li class="inline"><a href="#prefer">The <tt>prefer</tt> Peer</a>
- <li class="inline"><a href="#peer">Peer Classification</a>
- <li class="inline"><a href="#miti">Mitigation Rules</a>
- <li class="inline"><a href="#pps">Using the Pulse-per-Second (PPS) Signal</a>
- </ul>
- <hr>
- <h4 id="intro">Introduction</h4>
- <p>The mechanics of the NTP algorithms which select the best data sample from each available server and the best subset of the server population have been finely crafted to resist network jitter, faults in the network or server operations, and to deliver the best possible accuracy. Most of the time these algorithms do a good job without requiring explicit manual tailoring of the configuration file. However, there are times when the accuracy can be improved by some careful tailoring. The following sections explain how to do this using explicit configuration items and special signals, when available, that are generated by some radio clocks and laboratory instruments.</p>
- <p>In order to provide robust backup sources, primary (stratum-1) servers are usually operated in a diversity configuration, in which the server operates with a number of remote servers in addition to one or more radio or modem clocks. In these configurations the suite of algorithms used in NTP to refine the data from each peer separately and to select and combine the data from a number of servers and clocks. As the result of these algorithms, a set of <i>survivors</i> are identified which can presumably provide the most reliable and accurate time. Ordinarily, the individual clock offsets of the survivors are combined on a weighted average basis to produce an offset used to control the system clock.</p>
- <p>However, because of small but significant systematic time offsets between the survivors, it is in general not possible to achieve the lowest jitter and highest stability in these configurations. This happens because the selection algorithm tends to <i>clockhop</i> between survivors of substantially the same quality, but showing small systematic offsets between them. In addition, there are a number of configurations involving pulse-per-second (PPS) signals, modem backup services and other special cases, so that a set of mitigation rules becomes necessary to select a single peer from among the survivors. These rules are based on a set of special characteristics of the various remote servers and reference clock drivers specified in the configuration file.</p>
- <h4 id="prefer">The <tt>prefer</tt> Peer</h4>
- <p>The mitigation rules are designed to provide an intelligent selection between various sources of substantially the same statistical quality without compromising the normal operation of the NTP algorithms. While they have been implemented in NTP Version 4 and will be incorporated in the NTP Version 4 specification when published, they are not in the NTP Version 3 specification RFC-1305. The rules are based on the concept of <i>prefer peer</i>, which is specified by including the <tt>prefer</tt> keyword with the associated <tt>server</tt> or <tt>peer</tt> command in the configuration file. This keyword can be used with any server or peer, but is most commonly used with a radio clock. While the rules do not forbid it, it does not seem useful to designate more than one peer as preferred, since the additional complexities to mitigate among them do not seem justified from on-air experience.</p>
- <p>The prefer scheme works on the set of peers that have survived the sanity checks and intersection algorithms of the clock selection procedures. Ordinarily, the members of this set can be considered <i>truechimers</i> and any one of them could in principle provide correct time; however, due to various error contributions, not all can provide the most accurate and stable time. The job of the clustering algorithm, which is invoked at this point, is to select the best subset of the survivors providing the least variance in the combined ensemble average, compared to the variance in each member of the subset separately. The detailed operation of the clustering algorithm, which is given in RFC-1305, is beyond the scope of discussion here. It operates in rounds, where a survivor, presumably the worst of the lot, is discarded in each round until one of several termination conditions is met. An example terminating condition is when the number of survivors is about to be reduced below three.</p>
- <p>In the prefer scheme the clustering algorithm is modified so that the prefer peer is never discarded; on the contrary, its potential removal becomes a termination condition. If the original algorithm were about to toss out the prefer peer, the algorithm terminates immediately. The prefer peer can still be discarded by the sanity checks and intersection algorithm, of course, but it will always survive the clustering algorithm. If it does not survive or for some reason it fails to provide updates, it will eventually become unreachable and the clock selection will remitigate to select the next best source.</p>
- <p>Along with this behavior, the clock selection procedures are modified so that the combining algorithm is not used when a prefer peer is present. Instead, the offset of the prefer peer is used exclusively as the synchronization source. In the usual case involving a radio clock and a flock of remote stratum-1 peers, and with the radio clock designated a prefer peer, the result is that the high quality radio time disciplines the server clock as long as the radio itself remains operational and with valid time, as determined from the remote peers, sanity checks and intersection algorithm.</p>
- <h4 id="peer">Peer Classification</h4>
- <p>In order to understand the effects of the various intricate schemes involved, it is necessary to understand some arcane details on how the algorithms decide on a synchronization source when more than one source is available. This is done on the basis of a set of explicit mitigation rules, which define special classes of remote serves and local radio clocks as a function of configuration declarations and clock driver type:</p>
- <ol>
- <li>The prefer peer is designated using the <tt>prefer</tt> keyword with the <tt>server</tt> or <tt>peer</tt> commands. All other things being equal, this peer will be selected for synchronization over all other survivors of the clock selection procedures.
- <li>When a PPS signal is connected via the PPS Clock Discipline driver (type 22), this is called the <i>PPS peer</i>. This driver provides precision clock corrections only within one second, so is always operated in conjunction with another server or radio clock driver, which provides the seconds numbering. The PPS peer is active only under conditions explained below.
- <li>When the Undisciplined Local Clock driver (type 1) is configured, this is called the <i>local clock peer</i>. This is used either as a backup reference source (stratum greater than zero), should all other synchronization sources fail, or as the primary reference source (stratum zero) in cases where the kernel time is disciplined by some other means of synchronization, such as the NIST <tt>lockclock</tt> scheme, or another synchronization protocol, such as the Digital Time Synchronization Service (DTSS).
- <li>When a modem driver such as the Automated Computer Time Service driver (type 18) is configured, this is called the <i>modem peer</i>. This is used either as a backup reference source, should all other primary sources fail, or as the (only) primary reference source.
- <li>Where support is available, the PPS signal may be processed directly by the kernel, as described in the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page. This is called the <i>kernel discipline</i>. The PPS signal can discipline the kernel in both frequency and time. The frequency discipline is active as long as the PPS interface device and signal itself is operating correctly, as determined by the kernel algorithms. The time discipline is active only under conditions explained below.
- </ol>
- <p>Reference clock drivers operate in the manner described in the <a href="refclock.html">Reference Clock Drivers</a> page and its dependencies. The drivers are ordinarily operated at stratum zero, so that as the result of ordinary NTP operations, the server itself operates at stratum one, as required by the NTP specification. In some cases described below, the driver is intentionally operated at an elevated stratum, so that it will be selected only if no other survivor is present with a lower stratum. In the case of the PPS peer or kernel time discipline, these sources appear active only if the prefer peer has survived the intersection and clustering algorithms, as described below, and its clock offset relative to the current local clock is less than a specified value, currently 128 ms.</p>
- <p>The modem clock drivers are a special case. Ordinarily, the update interval between modem calls to synchronize the system clock is many times longer than the interval between polls of either a remote server or local radio clock. In order to provide the best stability, the operation of the clock discipline algorithm changes gradually from a phase-lock mode at the shorter update intervals to a frequency-lock mode at the longer update intervals. If remote servers or local radio clocks together with a modem peer operate in the same client, the following things can happen.</p>
- <p>First the clock selection algorithm can select one or more remote servers or local radio clocks and the clock discipline algorithm will optimize for the shorter update intervals. Then, the selection algorithm can select the modem peer, which requires a much different optimization. The intent in the design is to allow the modem peer to control the system clock either when no other source is available or, if the modem peer happens to be marked as prefer, then it always controls the clock, as long as it passes the sanity checks and intersection algorithm. There still is room for suboptimal operation in this scheme, since a noise spike can still cause a clockhop either way. Nevertheless, the optimization function is slow to adapt, so that a clockhop or two does not cause much harm.</p>
- <p>The local clock driver is another special case. Normally, this driver is eligible for selection only if no other source is available. When selected, vernier adjustments introduced via the configuration file or remotely using the <tt><a href="ntpdc.html">ntpdc</a> </tt>program can be used to trim the local clock frequency and time. However, if the local clock driver is designated the prefer peer, this driver is always selected and all other sources are ignored. This behavior is intended for use when the kernel time is controlled by some means external to NTP, such as the NIST <tt>lockclock</tt> algorithm or another time synchronization protocol such as DTSS. In this case the only way to disable the local clock driver is to mark it unsynchronized using the leap indicator bits. In the case of modified kernels with the <tt>ntp_adjtime()</tt> system call, this can be done automatically if the external synchronization protocol uses it to discipline the kernel time.</p>
- <h4 id="miti">Mitigation Rules</h4>
- <p>The mitigation rules apply in the intersection and clustering algorithms described in the NTP specification. The intersection algorithm first scans all peers with a persistent association and includes only those that satisfy specified sanity checks. In addition to the checks required by the specification, the mitigation rules require either the local-clock peer or modem peer to be included only if marked as the prefer peer. The intersection algorithm operates on the included population to select only those peers believed to represent the correct time. If one or more peers survive the algorithm, processing continues in the clustering algorithm. Otherwise, if there is a modem peer, it is declared the only survivor; otherwise, if there is a local-clock peer, it is declared the only survivor. Processing then continues in the clustering algorithm.</p>
- <p>The clustering algorithm repeatedly discards outlyers in order to reduce the residual jitter in the survivor population. As required by the NTP specification, these operations continue until either a specified minimum number of survivors remain or the minimum select dispersion of the population is greater than the maximum peer dispersion of any member. The mitigation rules require an additional terminating condition which stops these operations at the point where the prefer peer is about to be discarded.</p>
- <p>The mitigation rules establish the choice of <i>system peer</i>, which determines the stratum, reference identifier and several other system variables which are visible to clients of the server. In addition, they establish which source or combination of sources control the local clock.</p>
- <ol>
- <li>If there is a prefer peer and it is the local-clock peer or the modem peer; or, if there is a prefer peer and the kernel time discipline is active, choose the prefer peer as the system peer and its offset as the system clock offset. If the prefer peer is the local-clock peer, an offset can be calculated by the driver to produce a frequency offset in order to correct for systematic frequency errors. In case a source other than NTP is controlling the system clock, corrections determined by NTP can be ignored by using the <tt>disable pll</tt> in the configuration file. If the prefer peer is the modem peer, it must be the primary source for the reasons noted above. If the kernel time discipline is active, the system clock offset is ignored and the corrections handled directly by the kernel.
- <li>If the above is not the case and there is a PPS peer, then choose it as the system peer and its offset as the system clock offset.
- <li>If the above is not the case and there is a prefer peer (not the local-clock or modem peer in this case), then choose it as the system peer and its offset as the system clock offset.
- <li>If the above is not the case and the peer previously chosen as the system peer is in the surviving population, then choose it as the system peer and average its offset along with the other survivors to determine the system clock offset. This behavior is designed to avoid excess jitter due to clockhopping, when switching the system peer would not materially improve the time accuracy.
- <li>If the above is not the case, then choose the first candidate in the list of survivors ranked in order of synchronization distance and average its offset along with the other survivors to determine the system clock offset. This is the default case and the only case considered in the current NTP specification.
- </ol>
- <h4 id="pps">Using the Pulse-per-Second (PPS) Signal</h4>
- <p>Most radio clocks are connected using a serial port operating at speeds of 9600 bps or higher. The accuracy using typical timecode formats, where the on-time epoch is indicated by a designated ASCII character, like carriage-return <tt>&lt;cr&gt;</tt>, is limited to a millisecond or two. However, some radios produce a PPS signal which can be used to improve the accuracy with typical workstation servers to the order of microseconds. The details of how this can be accomplished are discussed in the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page. The following paragraphs discuss how the PPS signal is affected by the mitigation rules.</p>
- <p>First, it should be pointed out that the PPS signal is inherently ambiguous, in that it provides a precise seconds epoch, but does not provide a way to number the seconds. In principle and most commonly, another source of synchronization, either the timecode from an associated radio clock, or even one or more remote NTP servers, is available to perform that function. In all cases, a specific, configured peer or server must be designated as associated with the PPS signal. This is done using the <tt>prefer</tt> keyword as described previously. The PPS signal can be associated in this way with any peer, but is most commonly used with the radio clock generating the PPS signal.</p>
- <p>The PPS signal can be used in two ways to discipline the local clock, one using a special PPS driver described in the <a href="drivers/driver22.html">PPS Clock Discipline</a> page, the other using PPS signal support in the kernel, as described in the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page. In either case, the signal must be present and within nominal jitter and wander error tolerances. In addition, the associated prefer peer must have survived the sanity checks and intersection algorithms and the dispersion settled below 1 s. This insures that the radio clock hardware is operating correctly and that, presumably, the PPS signal is operating correctly as well. Second, the absolute offset of the local clock from that peer must be less than 128 ms, or well within the 0.5-s unambiguous range of the PPS signal itself. In the case of the PPS driver, the time offsets generated from the PPS signal are propagated via the clock filter to the clock selection procedures just like any other peer. Should these pass the sanity checks and intersection algorithms, they will show up along with the offsets of the prefer peer itself. Note that, unlike the prefer peer, the PPS peer samples are not protected from discard by the clustering algorithm. These complicated procedures insure that the PPS offsets developed in this way are the most accurate, reliable available for synchronization.</p>
- <p>The PPS peer remains active as long as it survives the intersection algorithm and the prefer peer is reachable; however, like any other clock driver, it runs a reachability algorithm on the PPS signal itself. If for some reason the signal fails or displays gross errors, the PPS peer will either become unreachable or stray out of the survivor population. In this case the clock selection remitigates as described above.</p>
- <p>When kernel support for the PPS signal is available, the PPS signal is interfaced to the kernel serial driver code via a modem control lead. As the PPS signal is derived from external equipment, cables, etc., which sometimes fail, a good deal of error checking is done in the kernel to detect signal failure and excessive noise. The way in which the mitigation rules affect the kernel discipline is as follows.</p>
- <p>PPS support requires the PPS driver (type 22) and PPSAPI interface described in the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page. In order to operate, the prefer peer must be designated and the kernel support enabled by the <tt>enable pps</tt> command in the configuration file and the signal must be present and within nominal jitter and wander error tolerances. In the NTP daemon, the PPS discipline is active only when the prefer peer is among the survivors of the clustering algorithm, and its absolute offset is within 128 ms, as determined by the PPS driver. Under these conditions the kernel disregards updates produced by the NTP daemon and uses its internal PPS source instead. The kernel maintains a watchdog timer for the PPS signal; if the signal has not been heard or is out of tolerance for more than some interval, currently two minutes, the kernel discipline is declared inoperable and operation continues as if it were not present.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Mitigation Rules and the <tt>prefer</tt> Keyword</h3>
+ <img src="pic/alice11.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html"> from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>Listen carefully to what I say; it is very complicated.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:49</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links10.txt"></script>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#intro">Introduction</a>
+ <li class="inline"><a href="#prefer">The <tt>prefer</tt> Peer</a>
+ <li class="inline"><a href="#peer">Peer Classification</a>
+ <li class="inline"><a href="#miti">Mitigation Rules</a>
+ <li class="inline"><a href="#pps">Using the Pulse-per-Second (PPS) Signal</a>
+ </ul>
+ <hr>
+ <h4 id="intro">Introduction</h4>
+ <p>The mechanics of the NTP algorithms which select the best data sample from each available server and the best subset of the server population have been finely crafted to resist network jitter, faults in the network or server operations, and to deliver the best possible accuracy. Most of the time these algorithms do a good job without requiring explicit manual tailoring of the configuration file. However, there are times when the accuracy can be improved by some careful tailoring. The following sections explain how to do this using explicit configuration items and special signals, when available, that are generated by some radio clocks and laboratory instruments.</p>
+ <p>In order to provide robust backup sources, primary (stratum-1) servers are usually operated in a diversity configuration, in which the server operates with a number of remote servers in addition to one or more radio or modem clocks. In these configurations the suite of algorithms used in NTP to refine the data from each peer separately and to select and combine the data from a number of servers and clocks. As the result of these algorithms, a set of <i>survivors</i> are identified which can presumably provide the most reliable and accurate time. Ordinarily, the individual clock offsets of the survivors are combined on a weighted average basis to produce an offset used to control the system clock.</p>
+ <p>However, because of small but significant systematic time offsets between the survivors, it is in general not possible to achieve the lowest jitter and highest stability in these configurations. This happens because the selection algorithm tends to <i>clockhop</i> between survivors of substantially the same quality, but showing small systematic offsets between them. In addition, there are a number of configurations involving pulse-per-second (PPS) signals, modem backup services and other special cases, so that a set of mitigation rules becomes necessary to select a single peer from among the survivors. These rules are based on a set of special characteristics of the various remote servers and reference clock drivers specified in the configuration file.</p>
+ <h4 id="prefer">The <tt>prefer</tt> Peer</h4>
+ <p>The mitigation rules are designed to provide an intelligent selection between various sources of substantially the same statistical quality without compromising the normal operation of the NTP algorithms. While they have been implemented in NTP Version 4 and will be incorporated in the NTP Version 4 specification when published, they are not in the NTP Version 3 specification RFC-1305. The rules are based on the concept of <i>prefer peer</i>, which is specified by including the <tt>prefer</tt> keyword with the associated <tt>server</tt> or <tt>peer</tt> command in the configuration file. This keyword can be used with any server or peer, but is most commonly used with a radio clock. While the rules do not forbid it, it does not seem useful to designate more than one peer as preferred, since the additional complexities to mitigate among them do not seem justified from on-air experience.</p>
+ <p>The prefer scheme works on the set of peers that have survived the sanity checks and intersection algorithms of the clock selection procedures. Ordinarily, the members of this set can be considered <i>truechimers</i> and any one of them could in principle provide correct time; however, due to various error contributions, not all can provide the most accurate and stable time. The job of the clustering algorithm, which is invoked at this point, is to select the best subset of the survivors providing the least variance in the combined ensemble average, compared to the variance in each member of the subset separately. The detailed operation of the clustering algorithm, which is given in RFC-1305, is beyond the scope of discussion here. It operates in rounds, where a survivor, presumably the worst of the lot, is discarded in each round until one of several termination conditions is met. An example terminating condition is when the number of survivors is about to be reduced below three.</p>
+ <p>In the prefer scheme the clustering algorithm is modified so that the prefer peer is never discarded; on the contrary, its potential removal becomes a termination condition. If the original algorithm were about to toss out the prefer peer, the algorithm terminates immediately. The prefer peer can still be discarded by the sanity checks and intersection algorithm, of course, but it will always survive the clustering algorithm. If it does not survive or for some reason it fails to provide updates, it will eventually become unreachable and the clock selection will remitigate to select the next best source.</p>
+ <p>Along with this behavior, the clock selection procedures are modified so that the combining algorithm is not used when a prefer peer is present. Instead, the offset of the prefer peer is used exclusively as the synchronization source. In the usual case involving a radio clock and a flock of remote stratum-1 peers, and with the radio clock designated a prefer peer, the result is that the high quality radio time disciplines the server clock as long as the radio itself remains operational and with valid time, as determined from the remote peers, sanity checks and intersection algorithm.</p>
+ <h4 id="peer">Peer Classification</h4>
+ <p>In order to understand the effects of the various intricate schemes involved, it is necessary to understand some arcane details on how the algorithms decide on a synchronization source when more than one source is available. This is done on the basis of a set of explicit mitigation rules, which define special classes of remote serves and local radio clocks as a function of configuration declarations and clock driver type:</p>
+ <ol>
+ <li>The prefer peer is designated using the <tt>prefer</tt> keyword with the <tt>server</tt> or <tt>peer</tt> commands. All other things being equal, this peer will be selected for synchronization over all other survivors of the clock selection procedures.
+ <li>When a PPS signal is connected via the PPS Clock Discipline driver (type 22), this is called the <i>PPS peer</i>. This driver provides precision clock corrections only within one second, so is always operated in conjunction with another server or radio clock driver, which provides the seconds numbering. The PPS peer is active only under conditions explained below.
+ <li>When the Undisciplined Local Clock driver (type 1) is configured, this is called the <i>local clock peer</i>. This is used either as a backup reference source (stratum greater than zero), should all other synchronization sources fail, or as the primary reference source (stratum zero) in cases where the kernel time is disciplined by some other means of synchronization, such as the NIST <tt>lockclock</tt> scheme, or another synchronization protocol, such as the Digital Time Synchronization Service (DTSS).
+ <li>When a modem driver such as the Automated Computer Time Service driver (type 18) is configured, this is called the <i>modem peer</i>. This is used either as a backup reference source, should all other primary sources fail, or as the (only) primary reference source.
+ <li>Where support is available, the PPS signal may be processed directly by the kernel, as described in the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page. This is called the <i>kernel discipline</i>. The PPS signal can discipline the kernel in both frequency and time. The frequency discipline is active as long as the PPS interface device and signal itself is operating correctly, as determined by the kernel algorithms. The time discipline is active only under conditions explained below.
+ </ol>
+ <p>Reference clock drivers operate in the manner described in the <a href="refclock.html">Reference Clock Drivers</a> page and its dependencies. The drivers are ordinarily operated at stratum zero, so that as the result of ordinary NTP operations, the server itself operates at stratum one, as required by the NTP specification. In some cases described below, the driver is intentionally operated at an elevated stratum, so that it will be selected only if no other survivor is present with a lower stratum. In the case of the PPS peer or kernel time discipline, these sources appear active only if the prefer peer has survived the intersection and clustering algorithms, as described below, and its clock offset relative to the current local clock is less than a specified value, currently 128 ms.</p>
+ <p>The modem clock drivers are a special case. Ordinarily, the update interval between modem calls to synchronize the system clock is many times longer than the interval between polls of either a remote server or local radio clock. In order to provide the best stability, the operation of the clock discipline algorithm changes gradually from a phase-lock mode at the shorter update intervals to a frequency-lock mode at the longer update intervals. If remote servers or local radio clocks together with a modem peer operate in the same client, the following things can happen.</p>
+ <p>First the clock selection algorithm can select one or more remote servers or local radio clocks and the clock discipline algorithm will optimize for the shorter update intervals. Then, the selection algorithm can select the modem peer, which requires a much different optimization. The intent in the design is to allow the modem peer to control the system clock either when no other source is available or, if the modem peer happens to be marked as prefer, then it always controls the clock, as long as it passes the sanity checks and intersection algorithm. There still is room for suboptimal operation in this scheme, since a noise spike can still cause a clockhop either way. Nevertheless, the optimization function is slow to adapt, so that a clockhop or two does not cause much harm.</p>
+ <p>The local clock driver is another special case. Normally, this driver is eligible for selection only if no other source is available. When selected, vernier adjustments introduced via the configuration file or remotely using the <tt><a href="ntpdc.html">ntpdc</a> </tt>program can be used to trim the local clock frequency and time. However, if the local clock driver is designated the prefer peer, this driver is always selected and all other sources are ignored. This behavior is intended for use when the kernel time is controlled by some means external to NTP, such as the NIST <tt>lockclock</tt> algorithm or another time synchronization protocol such as DTSS. In this case the only way to disable the local clock driver is to mark it unsynchronized using the leap indicator bits. In the case of modified kernels with the <tt>ntp_adjtime()</tt> system call, this can be done automatically if the external synchronization protocol uses it to discipline the kernel time.</p>
+ <h4 id="miti">Mitigation Rules</h4>
+ <p>The mitigation rules apply in the intersection and clustering algorithms described in the NTP specification. The intersection algorithm first scans all peers with a persistent association and includes only those that satisfy specified sanity checks. In addition to the checks required by the specification, the mitigation rules require either the local-clock peer or modem peer to be included only if marked as the prefer peer. The intersection algorithm operates on the included population to select only those peers believed to represent the correct time. If one or more peers survive the algorithm, processing continues in the clustering algorithm. Otherwise, if there is a modem peer, it is declared the only survivor; otherwise, if there is a local-clock peer, it is declared the only survivor. Processing then continues in the clustering algorithm.</p>
+ <p>The clustering algorithm repeatedly discards outlyers in order to reduce the residual jitter in the survivor population. As required by the NTP specification, these operations continue until either a specified minimum number of survivors remain or the minimum select dispersion of the population is greater than the maximum peer dispersion of any member. The mitigation rules require an additional terminating condition which stops these operations at the point where the prefer peer is about to be discarded.</p>
+ <p>The mitigation rules establish the choice of <i>system peer</i>, which determines the stratum, reference identifier and several other system variables which are visible to clients of the server. In addition, they establish which source or combination of sources control the local clock.</p>
+ <ol>
+ <li>If there is a prefer peer and it is the local-clock peer or the modem peer; or, if there is a prefer peer and the kernel time discipline is active, choose the prefer peer as the system peer and its offset as the system clock offset. If the prefer peer is the local-clock peer, an offset can be calculated by the driver to produce a frequency offset in order to correct for systematic frequency errors. In case a source other than NTP is controlling the system clock, corrections determined by NTP can be ignored by using the <tt>disable pll</tt> in the configuration file. If the prefer peer is the modem peer, it must be the primary source for the reasons noted above. If the kernel time discipline is active, the system clock offset is ignored and the corrections handled directly by the kernel.
+ <li>If the above is not the case and there is a PPS peer, then choose it as the system peer and its offset as the system clock offset.
+ <li>If the above is not the case and there is a prefer peer (not the local-clock or modem peer in this case), then choose it as the system peer and its offset as the system clock offset.
+ <li>If the above is not the case and the peer previously chosen as the system peer is in the surviving population, then choose it as the system peer and average its offset along with the other survivors to determine the system clock offset. This behavior is designed to avoid excess jitter due to clockhopping, when switching the system peer would not materially improve the time accuracy.
+ <li>If the above is not the case, then choose the first candidate in the list of survivors ranked in order of synchronization distance and average its offset along with the other survivors to determine the system clock offset. This is the default case and the only case considered in the current NTP specification.
+ </ol>
+ <h4 id="pps">Using the Pulse-per-Second (PPS) Signal</h4>
+ <p>Most radio clocks are connected using a serial port operating at speeds of 9600 bps or higher. The accuracy using typical timecode formats, where the on-time epoch is indicated by a designated ASCII character, like carriage-return <tt>&lt;cr&gt;</tt>, is limited to a millisecond or two. However, some radios produce a PPS signal which can be used to improve the accuracy with typical workstation servers to the order of microseconds. The details of how this can be accomplished are discussed in the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page. The following paragraphs discuss how the PPS signal is affected by the mitigation rules.</p>
+ <p>First, it should be pointed out that the PPS signal is inherently ambiguous, in that it provides a precise seconds epoch, but does not provide a way to number the seconds. In principle and most commonly, another source of synchronization, either the timecode from an associated radio clock, or even one or more remote NTP servers, is available to perform that function. In all cases, a specific, configured peer or server must be designated as associated with the PPS signal. This is done using the <tt>prefer</tt> keyword as described previously. The PPS signal can be associated in this way with any peer, but is most commonly used with the radio clock generating the PPS signal.</p>
+ <p>The PPS signal can be used in two ways to discipline the local clock, one using a special PPS driver described in the <a href="drivers/driver22.html">PPS Clock Discipline</a> page, the other using PPS signal support in the kernel, as described in the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page. In either case, the signal must be present and within nominal jitter and wander error tolerances. In addition, the associated prefer peer must have survived the sanity checks and intersection algorithms and the dispersion settled below 1 s. This insures that the radio clock hardware is operating correctly and that, presumably, the PPS signal is operating correctly as well. Second, the absolute offset of the local clock from that peer must be less than 128 ms, or well within the 0.5-s unambiguous range of the PPS signal itself. In the case of the PPS driver, the time offsets generated from the PPS signal are propagated via the clock filter to the clock selection procedures just like any other peer. Should these pass the sanity checks and intersection algorithms, they will show up along with the offsets of the prefer peer itself. Note that, unlike the prefer peer, the PPS peer samples are not protected from discard by the clustering algorithm. These complicated procedures insure that the PPS offsets developed in this way are the most accurate, reliable available for synchronization.</p>
+ <p>The PPS peer remains active as long as it survives the intersection algorithm and the prefer peer is reachable; however, like any other clock driver, it runs a reachability algorithm on the PPS signal itself. If for some reason the signal fails or displays gross errors, the PPS peer will either become unreachable or stray out of the survivor population. In this case the clock selection remitigates as described above.</p>
+ <p>When kernel support for the PPS signal is available, the PPS signal is interfaced to the kernel serial driver code via a modem control lead. As the PPS signal is derived from external equipment, cables, etc., which sometimes fail, a good deal of error checking is done in the kernel to detect signal failure and excessive noise. The way in which the mitigation rules affect the kernel discipline is as follows.</p>
+ <p>PPS support requires the PPS driver (type 22) and PPSAPI interface described in the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page. In order to operate, the prefer peer must be designated and the kernel support enabled by the <tt>enable pps</tt> command in the configuration file and the signal must be present and within nominal jitter and wander error tolerances. In the NTP daemon, the PPS discipline is active only when the prefer peer is among the survivors of the clustering algorithm, and its absolute offset is within 128 ms, as determined by the PPS driver. Under these conditions the kernel disregards updates produced by the NTP daemon and uses its internal PPS source instead. The kernel maintains a watchdog timer for the PPS signal; if the signal has not been heard or is out of tolerance for more than some interval, currently two minutes, the kernel discipline is declared inoperable and operation continues as if it were not present.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/rdebug.html b/contrib/ntp/html/rdebug.html
index 87598ed..d49514d 100644
--- a/contrib/ntp/html/rdebug.html
+++ b/contrib/ntp/html/rdebug.html
@@ -2,30 +2,31 @@
<html>
- <head>
- <title>Debugging Reference Clock Drivers</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Debugging Reference Clock Drivers</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Debugging Reference Clock Drivers</h3>
- <img src="pic/oz2.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>The Wizard of Oz</i>, L. Frank Baum</a>
- <p>Call the girls and the'll sweep your bugs.</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">21:31</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="230">Sunday, January 26, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links10.txt"></script>
- <h4>More Help</h4>
- <script type="text/javascript" language="javascript" src="scripts/links12.txt"></script>
- <hr>
- <p>The <a href="ntpq.html"><tt>ntpq</tt></a> and <a href="ntpdc.html"><tt>ntpdc</tt></a> utility programs can be used to debug reference clocks, either on the server itself or from another machine elsewhere in the network. The server is compiled, installed and started using the configuration file described in the <a href="ntpd.html"><tt>ntpd</tt></a> page and its dependencies. If the clock appears in the <tt>ntpq</tt> utility and <tt>pe</tt> command, no errors have occurred and the daemon has started, opened the devices specified and waiting for peers and radios to come up. If not, the first thing to look for are error messages on the system log. These are usually due to improper configuration, missing links or multiple instances of the daemon.</p>
- <p>It normally takes a minute or so for evidence to appear that the clock is running and the driver is operating correctly. The first indication is a nonzero value in the <tt>reach</tt> column in the <tt>pe</tt> billboard. If nothing appears after a few minutes, the next step is to be sure the RS232 messages, if used, are getting to and from the clock. The most reliable way to do this is with an RS232 tester and to look for data flashes as the driver polls the clock and/or as data arrive from the clock. Our experience is that the overwhelming fraction of problems occurring during installation are due to problems such as miswired connectors or improperly configured device links at this stage.</p>
- <p>If RS232 messages are getting to and from the clock, the variables of interest can be inspected using the <tt>ntpq</tt> program and various commands described on the documentation page. First, use the <tt>pe</tt> and <tt>as</tt> commands to display billboards showing the peer configuration and association IDs for all peers, including the radio clock. The assigned clock address should appear in the <tt>pe</tt> billboard and the association ID for it at the same relative line position in the <tt>as</tt> billboard.</p>
- <p>Additional information is available with the <tt>rv</tt> and <tt>clockvar</tt> commands, which take as argument the association ID shown in the <tt>as</tt> billboard. The <tt>rv</tt> command with no argument shows the system variables, while the <tt>rv</tt> command with association ID argument shows the peer variables for the clock, as well as other peers of interest. The <tt>clockvar</tt> command with argument shows the peer variables specific to reference clock peers, including the clock status, device name, last received timecode (if relevant), and various event counters. In addition, a subset of the <tt>fudge</tt> parameters is included. The poll and error counters in the <tt>clockvar</tt> billboard are useful debugging aids. The <tt>poll</tt> counts the poll messages sent to the clock, while the <tt>noreply</tt>, <tt>badformat</tt> and <tt>baddate</tt> count various errors. Check the timecode to be sure it matches what the driver expects. This may require consulting the clock hardware reference manual, which is probably pretty dusty at this stage.</p>
- <p>The <tt>ntpdc</tt> utility program can be used for detailed inspection of the clock driver status. The most useful are the <tt>clockstat</tt> and <tt>clkbug</tt> commands described in the document page. While these commands permit getting quite personal with the particular driver involved, their use is seldom necessary, unless an implementation bug shows up. If all else fails, turn on the debugging trace using two <tt>-d</tt> flags in the <tt>ntpd</tt> startup command line. Most drivers will dump status at every received message in this case. While the displayed trace can be intimidating, this provides the most detailed and revealing indicator of how the driver and clock are performing and where bugs might lurk.</p>
- <p>Most drivers write a message to the <tt>clockstats</tt> file as each timecode or surrogate is received from the radio clock. By convention, this is the last ASCII timecode (or ASCII gloss of a binary-coded one) received from the radio clock. This file is managed by the <tt>filegen</tt> facility described in the <tt>ntpd</tt> page and requires specific commands in the configuration file. This forms a highly useful record to discover anomalies during regular operation of the clock. The scripts included in the <tt>./scripts/stats</tt> directory can be run from a <tt>cron</tt> job to collect and summarize these data on a daily or weekly basis. The summary files have proven inspirational to detect infrequent misbehavior due to clock implementation bugs in some radios.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Debugging Reference Clock Drivers</h3>
+ <img src="pic/oz2.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>The Wizard of Oz</i>, L. Frank Baum</a>
+ <p>Call the girls and the'll sweep your bugs.</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:49</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links10.txt"></script>
+ <h4>More Help</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links12.txt"></script>
+ <hr>
+ <p>The <a href="ntpq.html"><tt>ntpq</tt></a> and <a href="ntpdc.html"><tt>ntpdc</tt></a> utility programs can be used to debug reference clocks, either on the server itself or from another machine elsewhere in the network. The server is compiled, installed and started using the configuration file described in the <a href="ntpd.html"><tt>ntpd</tt></a> page and its dependencies. If the clock appears in the <tt>ntpq</tt> utility and <tt>pe</tt> command, no errors have occurred and the daemon has started, opened the devices specified and waiting for peers and radios to come up. If not, the first thing to look for are error messages on the system log. These are usually due to improper configuration, missing links or multiple instances of the daemon.</p>
+ <p>It normally takes a minute or so for evidence to appear that the clock is running and the driver is operating correctly. The first indication is a nonzero value in the <tt>reach</tt> column in the <tt>pe</tt> billboard. If nothing appears after a few minutes, the next step is to be sure the RS232 messages, if used, are getting to and from the clock. The most reliable way to do this is with an RS232 tester and to look for data flashes as the driver polls the clock and/or as data arrive from the clock. Our experience is that the overwhelming fraction of problems occurring during installation are due to problems such as miswired connectors or improperly configured device links at this stage.</p>
+ <p>If RS232 messages are getting to and from the clock, the variables of interest can be inspected using the <tt>ntpq</tt> program and various commands described on the documentation page. First, use the <tt>pe</tt> and <tt>as</tt> commands to display billboards showing the peer configuration and association IDs for all peers, including the radio clock. The assigned clock address should appear in the <tt>pe</tt> billboard and the association ID for it at the same relative line position in the <tt>as</tt> billboard.</p>
+ <p>Additional information is available with the <tt>rv</tt> and <tt>clockvar</tt> commands, which take as argument the association ID shown in the <tt>as</tt> billboard. The <tt>rv</tt> command with no argument shows the system variables, while the <tt>rv</tt> command with association ID argument shows the peer variables for the clock, as well as other peers of interest. The <tt>clockvar</tt> command with argument shows the peer variables specific to reference clock peers, including the clock status, device name, last received timecode (if relevant), and various event counters. In addition, a subset of the <tt>fudge</tt> parameters is included. The poll and error counters in the <tt>clockvar</tt> billboard are useful debugging aids. The <tt>poll</tt> counts the poll messages sent to the clock, while the <tt>noreply</tt>, <tt>badformat</tt> and <tt>baddate</tt> count various errors. Check the timecode to be sure it matches what the driver expects. This may require consulting the clock hardware reference manual, which is probably pretty dusty at this stage.</p>
+ <p>The <tt>ntpdc</tt> utility program can be used for detailed inspection of the clock driver status. The most useful are the <tt>clockstat</tt> and <tt>clkbug</tt> commands described in the document page. While these commands permit getting quite personal with the particular driver involved, their use is seldom necessary, unless an implementation bug shows up. If all else fails, turn on the debugging trace using two <tt>-d</tt> flags in the <tt>ntpd</tt> startup command line. Most drivers will dump status at every received message in this case. While the displayed trace can be intimidating, this provides the most detailed and revealing indicator of how the driver and clock are performing and where bugs might lurk.</p>
+ <p>Most drivers write a message to the <tt>clockstats</tt> file as each timecode or surrogate is received from the radio clock. By convention, this is the last ASCII timecode (or ASCII gloss of a binary-coded one) received from the radio clock. This file is managed by the <tt>filegen</tt> facility described in the <tt>ntpd</tt> page and requires specific commands in the configuration file. This forms a highly useful record to discover anomalies during regular operation of the clock. The scripts included in the <tt>./scripts/stats</tt> directory can be run from a <tt>cron</tt> job to collect and summarize these data on a daily or weekly basis. The summary files have proven inspirational to detect infrequent misbehavior due to clock implementation bugs in some radios.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
-</html>
+</html> \ No newline at end of file
diff --git a/contrib/ntp/html/refclock.html b/contrib/ntp/html/refclock.html
index a9f74ab..733b7bf 100644
--- a/contrib/ntp/html/refclock.html
+++ b/contrib/ntp/html/refclock.html
@@ -2,102 +2,102 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>Reference Clock Drivers</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>Reference Clock Drivers</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Reference Clock Drivers</h3>
- <img src="pic/stack1a.jpg" alt="gif" align="left">Master Time Facility at the <a href="http://www.eecis.udel.edu/%7emills/lab.html">UDel Internet Research Laboratory</a>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="99">03:54 AM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 13, 2003</csobj></p>
- <br clear="left">
- <h4>Related Links</h4>
- <script type="text/javascript" language="javascript" src="scripts/links10.txt"></script>
- <h4>Pulse-Per-Second Interfacing Links</h4>
- <p>
- <script type="text/javascript" language="javascript" src="scripts/links11.txt"></script>
- </p>
- <h4>Audio Driver Links</h4>
- <p>
- <script type="text/javascript" language="javascript" src="scripts/links8.txt"></script>
- </p>
- <h4>Table of Contents</h4>
- <ul>
- <li class="inline"><a href="#clock">Reference Clock Drivers</a>
- <li class="inline"><a href="#cal">Driver Calibration</a>
- <li class="inline"><a href="#perf">Performance Enhancements</a>
- <li class="inline"><a href="#list">Comprehensive List of Clock Drivers</a>
- </ul>
- <hr>
- <h4 id="clock">Reference Clock Drivers</h4>
- <p>Support for most of the commonly available radio and modem reference clocks is included in the default configuration of the NTP daemon for Unix <tt>ntpd</tt>. Individual clocks can be activated by configuration file commands, specifically the <tt>server</tt> and <tt>fudge</tt> commands described in the <a href="ntpd.html"><tt>ntpd</tt> program manual page</a>. The following discussion presents Information on how to select and configure the device drivers in a running Unix system.</p>
- <p>Many radio reference clocks can be set to display local time as adjusted for timezone and daylight saving mode. For use with NTP the clock must be set for Coordinated Universal Time (UTC) only. Ordinarily, these adjustments are performed by the kernel, so the fact that the clock runs on UTC will be transparent to the user.</p>
- <p>Radio and modem clocks by convention have addresses in the form 127.127.<i>t.u</i>, where <i>t</i> is the clock type and <i>u</i> is a unit number in the range 0-3 used to distinguish multiple instances of clocks of the same type. Most of these clocks require support in the form of a serial port or special bus peripheral, but some can work directly from the audio codec found in some workstations. The particular device is normally specified by adding a soft link <tt>/dev/device<i>u</i></tt> to the particular hardware device involved, where <i><tt>u</tt></i> correspond to the unit number above.</p>
- <p>Most clock drivers communicate with the reference clock using a serial port, usually at 9600 bps. There are several application program interfaces (API) used in the various Unix and NT systems, most of which can be detected at configuration time. Thus, it is important that the NTP daemon and utilities be compiled on the target system or clone. In some cases special features are available, such as timestamping in the kernel or pulse-per-second (PPS) interface. In most cases these features can be detected at configuration time as well; however, the kernel may have to be recompiled in order for them to work.</p>
- <p>The audio drivers are a special case. These include support for the NIST time/frequency stations WWV and WWVH, the Canadian time/frequency station CHU and generic IRIG signals. Currently, support for the Solaris and SunOS audio API is included in the distribution. It is left to the volunteer corps to extend this support to other systems. Further information on hookup, debugging and monitoring is given in the <a href="audio.html">Audio Drivers</a> page.</p>
- <p>The local clock driver is also a special case. A server configured with this driver can operate as a primary server to synchronize other clients when no other external synchronization sources are available. If the server is connected directly or indirectly to the public Internet, there is some danger that it can adversely affect the operation of unrelated clients. Carefully read the <a href="drivers/driver1.html">Undisciplined Local Clock</a> page and respect the stratum limit.</p>
- <p>The local clock driver also supports an external synchronization source such as a high resolution counter disciplined by a GPS receiver, for example. Further information is on the <a href="extern.html">External Clock Discipline and the Local Clock Driver</a> page.</p>
- <h4 id="cal">Driver Calibration</h4>
- <p>Some drivers depending on longwave and shortwave radio services need to know the radio propagation time from the transmitter to the receiver, which can amount to some tens of milliseconds. This must be calculated for each specific receiver location and requires the geographic coordinates of both the transmitter and receiver. The transmitter coordinates for various radio services are given in the <a href="http://www.eecis.udel.edu/%7emills/qth.html">Time and Frequency Standard Station Information</a> page. Receiver coordinates can be obtained or estimated from various sources. The actual calculations are beyond the scope of this document.</p>
- <p>When more than one clock driver is supported, it is often the case that each shows small systematic offset differences relative to the rest. To reduce the effects of jitter when switching from one driver to the another, it is useful to calibrate the drivers to a common ensemble offset. The <tt>enable calibrate</tt> configuration command in the <a href="miscopt.html">Miscellaneous Options</a> page is useful for this purpose. The calibration function can also be enabled and disabled using the <tt>ntpdc</tt> program utility.</p>
- <p>Most clock drivers use the <tt>time1</tt> value specified in the <tt>fudge</tt> configuration command to provide the calibration correction when this cannot be provided by the clock or interface. When the calibration function is enabled, the <tt>time1</tt> value is automatically adjusted to match the offset of the remote server or local clock driver selected for synchronization. Ordinarily, the NTP selection algorithm chooses the best from among all sources, usually the best radio clock determined on the basis of stratum, synchronization distance and jitter. The calibration function adjusts the <tt>time1</tt> values for all clock drivers except this source so that their indicated offsets tend to zero. If the selected source is the kernel PPS discipline, the <tt>fudge time1</tt> values for all clock drivers are adjusted.</p>
- <p>The adjustment function is an exponential average designed to improve accuracy, so the function takes some time to converge. The recommended procedure is to enable the function, let it run for an hour or so, then edit the configuration file using the <tt>time1</tt> values displayed by the <tt>ntpq</tt> utility and <tt>clockvar</tt> command. Finally, disable the calibration function to avoid possible future disruptions due to misbehaving clocks or drivers.</p>
- <h4 id="perf">Performance Enhancements</h4>
- <p>In general, performance can be improved, especially when more than one clock driver is supported, to use the prefer peer function described in the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page. The prefer peer is ordinarily designated the remote peer or local clock driver which provides the best quality time. All other things equal, only the prefer peer source is used to discipline the system clock and jitter-producing &quot;clockhopping&quot; between sources is avoided. This is valuable when more than one clock driver is present and especially valuable when the PPS clock driver (type 22) is used. Support for PPS signals is summarized in the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page.</p>
- <p>Where the highest performance is required, generally better than one millisecond, additional hardware and/or software functions may be required. Kernel modifications for precision time are described in the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page. Special line discipline and streams modules for use in capturing precision timestamps are described in the <a href="ldisc.html">Line Disciplines and Streams Drivers</a> page.</p>
- <h4 id="list">Comprehensive List of Clock Drivers</h4>
- <p>Following is a list showing the type and title of each driver currently implemented. The compile-time identifier for each is shown in parentheses. Click on a selected type for specific description and configuration documentation, including the clock address, reference ID, driver ID, device name and serial line speed, and features (line disciplines, etc.). For those drivers without specific documentation, please contact the author listed in the <a href="copyright.html">Copyright Notice</a> page.</p>
- <ul>
- <li class="inline"><a href="drivers/driver1.html">Type 1</a> Undisciplined Local Clock (<tt>LOCAL</tt>)
- <li class="inline"><a href="drivers/driver2.html">Type 2</a> Trak 8820 GPS Receiver (<tt>GPS_TRAK</tt>)
- <li class="inline"><a href="drivers/driver3.html">Type 3</a> PSTI/Traconex 1020 WWV/WWVH Receiver (<tt>WWV_PST</tt>)
- <li class="inline"><a href="drivers/driver4.html">Type 4</a> Spectracom WWVB and GPS Receivers (<tt>WWVB_SPEC</tt>)
- <li class="inline"><a href="drivers/driver5.html">Type 5</a> TrueTime GPS/GOES/OMEGA Receivers (<tt>TRUETIME</tt>)
- <li class="inline"><a href="drivers/driver6.html">Type 6</a> IRIG Audio Decoder (<tt>IRIG_AUDIO</tt>)
- <li class="inline"><a href="drivers/driver7.html">Type 7</a> Radio CHU Audio Demodulator/Decoder (<tt>CHU</tt>)
- <li class="inline"><a href="drivers/driver8.html">Type 8</a> Generic Reference Driver (<tt>PARSE</tt>)
- <li class="inline"><a href="drivers/driver9.html">Type 9</a> Magnavox MX4200 GPS Receiver (<tt>GPS_MX4200</tt>)
- <li class="inline"><a href="drivers/driver10.html">Type 10</a> Austron 2200A/2201A GPS Receivers (<tt>GPS_AS2201</tt>)
- <li class="inline"><a href="drivers/driver11.html">Type 11</a> Arbiter 1088A/B GPS Receiver (<tt>GPS_ARBITER</tt>)
- <li class="inline"><a href="drivers/driver12.html">Type 12</a> KSI/Odetics TPRO/S IRIG Interface (<tt>IRIG_TPRO</tt>)
- <li class="inline">Type 13 Leitch CSD 5300 Master Clock Controller (<tt>ATOM_LEITCH</tt>)
- <li class="inline">Type 14 EES M201 MSF Receiver (<tt>MSF_EES</tt>)
- <li class="inline"><a href="drivers/driver5.html">Type 15</a> * TrueTime generic receivers
- <li class="inline"><a href="drivers/driver16.html">Type 16</a> Bancomm GPS/IRIG Receiver (<tt>GPS_BANCOMM</tt>)
- <li class="inline">Type 17 Datum Precision Time System (<tt>GPS_DATUM</tt>)
- <li class="inline"><a href="drivers/driver18.html">Type 18</a> NIST Modem Time Service (<tt>ACTS_NIST</tt>)
- <li class="inline"><a href="drivers/driver19.html">Type 19</a> Heath WWV/WWVH Receiver (<tt>WWV_HEATH</tt>)
- <li class="inline"><a href="drivers/driver20.html">Type 20</a> Generic NMEA GPS Receiver (<tt>NMEA</tt>)
- <li class="inline">Type 21 TrueTime GPS-VME Interface (<tt>GPS_VME</tt>)
- <li class="inline"><a href="drivers/driver22.html">Type 22</a> PPS Clock Discipline (<tt>PPS</tt>)
- <li class="inline"><a href="drivers/driver23.html">Type 23</a> PTB Modem Time Service (<tt>ACTS_PTB</tt>)
- <li class="inline"><a href="drivers/driver24.html">Type 24</a> USNO Modem Time Service (<tt>ACTS_USNO</tt>)
- <li class="inline"><a href="drivers/driver5.html">Type 25</a> * TrueTime generic receivers
- <li class="inline"><a href="drivers/driver26.html">Type 26</a> Hewlett Packard 58503A GPS Receiver (<tt>GPS_HP</tt>)
- <li class="inline"><a href="drivers/driver27.html">Type 27</a> Arcron MSF Receiver (<tt>MSF_ARCRON</tt>)
- <li class="inline"><a href="drivers/driver28.html">Type 28</a> Shared Memory Driver (<tt>SHM</tt>)
- <li class="inline"><a href="drivers/driver29.html">Type 29</a> Trimble Navigation Palisade GPS (<tt>GPS_PALISADE</tt>)
- <li class="inline"><a href="drivers/driver30.html">Type 30</a> Motorola UT Oncore GPS <tt>GPS_ONCORE</tt>)
- <li class="inline">Type 31 Rockwell Jupiter GPS (<tt>GPS_JUPITER</tt>)
- <li class="inline"><a href="drivers/driver32.html">Type 32</a> Chrono-log K-series WWVB receiver (<tt>CHRONOLOG</tt>)
- <li class="inline"><a href="drivers/driver33.html">Type 33</a> Dumb Clock (<tt>DUMBCLOCK</tt>)
- <li class="inline"><a href="drivers/driver34.html">Type 34</a> Ultralink WWVB Receivers (<tt>ULINK</tt>)
- <li class="inline"><a href="drivers/driver35.html">Type 35</a> Conrad Parallel Port Radio Clock (<tt>PCF</tt>)
- <li class="inline"><a href="drivers/driver36.html">Type 36</a> Radio WWV/H Audio Demodulator/Decoder (<tt>WWV</tt>)
- <li class="inline"><a href="drivers/driver37.html">Type 37</a> Forum Graphic GPS Dating station (<tt>FG</tt>)
- <li class="inline"><a href="drivers/driver38.html">Type 38</a> hopf GPS/DCF77 6021/komp for Serial Line (<tt>HOPF_S</tt>)
- <li class="inline"><a href="drivers/driver39.html">Type 39</a> hopf GPS/DCF77 6039 for PCI-Bus (<tt>HOPF_P</tt>)
- <li class="inline"><a href="drivers/driver40.html">Type 40</a> JJY Receivers (<tt>JJY</tt>)
- <li class="inline">Type 41 TrueTime 560 IRIG-B Decoder
- <li class="inline"><a href="drivers/driver42.html">Type 42</a> Zyfer GPStarplus Receiver
- <li class="inline"><a href="drivers/driver43.html">Type 43</a> RIPE NCC interface for Trimble Palisade
- <li class="inline"><a href="drivers/driver44.html">Type 44</a> NeoClock4X - DCF77 / TDF serial line
- </ul>
- <p>* All TrueTime receivers are now supported by one driver, type 5. Types 15 and 25 will be retained only for a limited time and may be reassigned in future.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Reference Clock Drivers</h3>
+ <img src="pic/stack1a.jpg" alt="gif" align="left">Master Time Facility at the <a href="http://www.eecis.udel.edu/%7emills/lab.html">UDel Internet Research Laboratory</a>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">13:06</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="298">Wednesday, August 10, 2005</csobj></p>
+ <br clear="left">
+ <h4>Related Links</h4>
+ <script type="text/javascript" language="javascript" src="scripts/links10.txt"></script>
+ <h4>Pulse-Per-Second Interfacing Links</h4>
+ <p>
+ <script type="text/javascript" language="javascript" src="scripts/links11.txt"></script>
+ </p>
+ <h4>Audio Driver Links</h4>
+ <p>
+ <script type="text/javascript" language="javascript" src="scripts/links8.txt"></script>
+ </p>
+ <h4>Table of Contents</h4>
+ <ul>
+ <li class="inline"><a href="#clock">Reference Clock Drivers</a>
+ <li class="inline"><a href="#cal">Driver Calibration</a>
+ <li class="inline"><a href="#perf">Performance Enhancements</a>
+ <li class="inline"><a href="#list">Comprehensive List of Clock Drivers</a>
+ </ul>
+ <hr>
+ <h4 id="clock">Reference Clock Drivers</h4>
+ <p>Support for most of the commonly available radio and modem reference clocks is included in the default configuration of the NTP daemon for Unix <tt>ntpd</tt>. Individual clocks can be activated by configuration file commands, specifically the <tt>server</tt> and <tt>fudge</tt> commands described in the <a href="ntpd.html"><tt>ntpd</tt> program manual page</a>. The following discussion presents Information on how to select and configure the device drivers in a running Unix system.</p>
+ <p>Many radio reference clocks can be set to display local time as adjusted for timezone and daylight saving mode. For use with NTP the clock must be set for Coordinated Universal Time (UTC) only. Ordinarily, these adjustments are performed by the kernel, so the fact that the clock runs on UTC will be transparent to the user.</p>
+ <p>Radio and modem clocks by convention have addresses in the form 127.127.<i>t.u</i>, where <i>t</i> is the clock type and <i>u</i> is a unit number in the range 0-3 used to distinguish multiple instances of clocks of the same type. Most of these clocks require support in the form of a serial port or special bus peripheral, but some can work directly from the audio codec found in some workstations. The particular device is normally specified by adding a soft link <tt>/dev/device<i>u</i></tt> to the particular hardware device involved, where <i><tt>u</tt></i> correspond to the unit number above.</p>
+ <p>Most clock drivers communicate with the reference clock using a serial port, usually at 9600 bps. There are several application program interfaces (API) used in the various Unix and NT systems, most of which can be detected at configuration time. Thus, it is important that the NTP daemon and utilities be compiled on the target system or clone. In some cases special features are available, such as timestamping in the kernel or pulse-per-second (PPS) interface. In most cases these features can be detected at configuration time as well; however, the kernel may have to be recompiled in order for them to work.</p>
+ <p>The audio drivers are a special case. These include support for the NIST time/frequency stations WWV and WWVH, the Canadian time/frequency station CHU and generic IRIG signals. Currently, support for the Solaris and SunOS audio API is included in the distribution. It is left to the volunteer corps to extend this support to other systems. Further information on hookup, debugging and monitoring is given in the <a href="audio.html">Audio Drivers</a> page.</p>
+ <p>The local clock driver is also a special case. A server configured with this driver can operate as a primary server to synchronize other clients when no other external synchronization sources are available. If the server is connected directly or indirectly to the public Internet, there is some danger that it can adversely affect the operation of unrelated clients. Carefully read the <a href="drivers/driver1.html">Undisciplined Local Clock</a> page and respect the stratum limit.</p>
+ <p>The local clock driver also supports an external synchronization source such as a high resolution counter disciplined by a GPS receiver, for example. Further information is on the <a href="extern.html">External Clock Discipline and the Local Clock Driver</a> page.</p>
+ <h4 id="cal">Driver Calibration</h4>
+ <p>Some drivers depending on longwave and shortwave radio services need to know the radio propagation time from the transmitter to the receiver, which can amount to some tens of milliseconds. This must be calculated for each specific receiver location and requires the geographic coordinates of both the transmitter and receiver. The transmitter coordinates for various radio services are given in the <a href="http://www.eecis.udel.edu/%7emills/ntp/qth.html">Time and Frequency Standard Station Information</a> page. Receiver coordinates can be obtained or estimated from various sources. The actual calculations are beyond the scope of this document.</p>
+ <p>When more than one clock driver is supported, it is often the case that each shows small systematic offset differences relative to the rest. To reduce the effects of jitter when switching from one driver to the another, it is useful to calibrate the drivers to a common ensemble offset. The <tt>enable calibrate</tt> configuration command in the <a href="miscopt.html">Miscellaneous Options</a> page is useful for this purpose. The calibration function can also be enabled and disabled using the <tt>ntpdc</tt> program utility.</p>
+ <p>Most clock drivers use the <tt>time1</tt> value specified in the <tt>fudge</tt> configuration command to provide the calibration correction when this cannot be provided by the clock or interface. When the calibration function is enabled, the <tt>time1</tt> value is automatically adjusted to match the offset of the remote server or local clock driver selected for synchronization. Ordinarily, the NTP selection algorithm chooses the best from among all sources, usually the best radio clock determined on the basis of stratum, synchronization distance and jitter. The calibration function adjusts the <tt>time1</tt> values for all clock drivers except this source so that their indicated offsets tend to zero. If the selected source is the kernel PPS discipline, the <tt>fudge time1</tt> values for all clock drivers are adjusted.</p>
+ <p>The adjustment function is an exponential average designed to improve accuracy, so the function takes some time to converge. The recommended procedure is to enable the function, let it run for an hour or so, then edit the configuration file using the <tt>time1</tt> values displayed by the <tt>ntpq</tt> utility and <tt>clockvar</tt> command. Finally, disable the calibration function to avoid possible future disruptions due to misbehaving clocks or drivers.</p>
+ <h4 id="perf">Performance Enhancements</h4>
+ <p>In general, performance can be improved, especially when more than one clock driver is supported, to use the prefer peer function described in the <a href="prefer.html">Mitigation Rules and the <tt>prefer</tt> Keyword</a> page. The prefer peer is ordinarily designated the remote peer or local clock driver which provides the best quality time. All other things equal, only the prefer peer source is used to discipline the system clock and jitter-producing &quot;clockhopping&quot; between sources is avoided. This is valuable when more than one clock driver is present and especially valuable when the PPS clock driver (type 22) is used. Support for PPS signals is summarized in the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page.</p>
+ <p>Where the highest performance is required, generally better than one millisecond, additional hardware and/or software functions may be required. Kernel modifications for precision time are described in the <a href="kern.html">A Kernel Model for Precision Timekeeping</a> page. Special line discipline and streams modules for use in capturing precision timestamps are described in the <a href="ldisc.html">Line Disciplines and Streams Drivers</a> page.</p>
+ <h4 id="list">Comprehensive List of Clock Drivers</h4>
+ <p>Following is a list showing the type and title of each driver currently implemented. The compile-time identifier for each is shown in parentheses. Click on a selected type for specific description and configuration documentation, including the clock address, reference ID, driver ID, device name and serial line speed, and features (line disciplines, etc.). For those drivers without specific documentation, please contact the author listed in the <a href="copyright.html">Copyright Notice</a> page.</p>
+ <ul>
+ <li class="inline"><a href="drivers/driver1.html">Type 1</a> Undisciplined Local Clock (<tt>LOCAL</tt>)
+ <li class="inline"><a href="drivers/driver2.html">Type 2</a> Trak 8820 GPS Receiver (<tt>GPS_TRAK</tt>)
+ <li class="inline"><a href="drivers/driver3.html">Type 3</a> PSTI/Traconex 1020 WWV/WWVH Receiver (<tt>WWV_PST</tt>)
+ <li class="inline"><a href="drivers/driver4.html">Type 4</a> Spectracom WWVB and GPS Receivers (<tt>WWVB_SPEC</tt>)
+ <li class="inline"><a href="drivers/driver5.html">Type 5</a> TrueTime GPS/GOES/OMEGA Receivers (<tt>TRUETIME</tt>)
+ <li class="inline"><a href="drivers/driver6.html">Type 6</a> IRIG Audio Decoder (<tt>IRIG_AUDIO</tt>)
+ <li class="inline"><a href="drivers/driver7.html">Type 7</a> Radio CHU Audio Demodulator/Decoder (<tt>CHU</tt>)
+ <li class="inline"><a href="drivers/driver8.html">Type 8</a> Generic Reference Driver (<tt>PARSE</tt>)
+ <li class="inline"><a href="drivers/driver9.html">Type 9</a> Magnavox MX4200 GPS Receiver (<tt>GPS_MX4200</tt>)
+ <li class="inline"><a href="drivers/driver10.html">Type 10</a> Austron 2200A/2201A GPS Receivers (<tt>GPS_AS2201</tt>)
+ <li class="inline"><a href="drivers/driver11.html">Type 11</a> Arbiter 1088A/B GPS Receiver (<tt>GPS_ARBITER</tt>)
+ <li class="inline"><a href="drivers/driver12.html">Type 12</a> KSI/Odetics TPRO/S IRIG Interface (<tt>IRIG_TPRO</tt>)
+ <li class="inline">Type 13 Leitch CSD 5300 Master Clock Controller (<tt>ATOM_LEITCH</tt>)
+ <li class="inline">Type 14 EES M201 MSF Receiver (<tt>MSF_EES</tt>)
+ <li class="inline">Type 15 reserved
+ <li class="inline"><a href="drivers/driver16.html">Type 16</a> Bancomm GPS/IRIG Receiver (<tt>GPS_BANCOMM</tt>)
+ <li class="inline">Type 17 Datum Precision Time System (<tt>GPS_DATUM</tt>)
+ <li class="inline"><a href="drivers/driver18.html">Type 18</a> Automated Computer Time Service (<tt>ACTS_MODEM</tt>)
+ <li class="inline"><a href="drivers/driver19.html">Type 19</a> Heath WWV/WWVH Receiver (<tt>WWV_HEATH</tt>)
+ <li class="inline"><a href="drivers/driver20.html">Type 20</a> Generic NMEA GPS Receiver (<tt>NMEA</tt>)
+ <li class="inline">Type 21 TrueTime GPS-VME Interface (<tt>GPS_VME</tt>)
+ <li class="inline"><a href="drivers/driver22.html">Type 22</a> PPS Clock Discipline (<tt>PPS</tt>)
+ <li class="inline">Type 23 reserved
+ <li class="inline">Type 24 reserved
+ <li class="inline">Type 25 reserved
+ <li class="inline"><a href="drivers/driver26.html">Type 26</a> Hewlett Packard 58503A GPS Receiver (<tt>GPS_HP</tt>)
+ <li class="inline"><a href="drivers/driver27.html">Type 27</a> Arcron MSF Receiver (<tt>MSF_ARCRON</tt>)
+ <li class="inline"><a href="drivers/driver28.html">Type 28</a> Shared Memory Driver (<tt>SHM</tt>)
+ <li class="inline"><a href="drivers/driver29.html">Type 29</a> Trimble Navigation Palisade GPS (<tt>GPS_PALISADE</tt>)
+ <li class="inline"><a href="drivers/driver30.html">Type 30</a> Motorola UT Oncore GPS <tt>GPS_ONCORE</tt>)
+ <li class="inline"><a href="drivers/driver31.html">Type 31</a> Rockwell Jupiter GPS (<tt>GPS_JUPITER</tt>)
+ <li class="inline"><a href="drivers/driver32.html">Type 32</a> Chrono-log K-series WWVB receiver (<tt>CHRONOLOG</tt>)
+ <li class="inline"><a href="drivers/driver33.html">Type 33</a> Dumb Clock (<tt>DUMBCLOCK</tt>)
+ <li class="inline"><a href="drivers/driver34.html">Type 34</a> Ultralink WWVB Receivers (<tt>ULINK</tt>)
+ <li class="inline"><a href="drivers/driver35.html">Type 35</a> Conrad Parallel Port Radio Clock (<tt>PCF</tt>)
+ <li class="inline"><a href="drivers/driver36.html">Type 36</a> Radio WWV/H Audio Demodulator/Decoder (<tt>WWV</tt>)
+ <li class="inline"><a href="drivers/driver37.html">Type 37</a> Forum Graphic GPS Dating station (<tt>FG</tt>)
+ <li class="inline"><a href="drivers/driver38.html">Type 38</a> hopf GPS/DCF77 6021/komp for Serial Line (<tt>HOPF_S</tt>)
+ <li class="inline"><a href="drivers/driver39.html">Type 39</a> hopf GPS/DCF77 6039 for PCI-Bus (<tt>HOPF_P</tt>)
+ <li class="inline"><a href="drivers/driver40.html">Type 40</a> JJY Receivers (<tt>JJY</tt>)
+ <li class="inline">Type 41 TrueTime 560 IRIG-B Decoder
+ <li class="inline"><a href="drivers/driver42.html">Type 42</a> Zyfer GPStarplus Receiver
+ <li class="inline"><a href="drivers/driver43.html">Type 43</a> RIPE NCC interface for Trimble Palisade
+ <li class="inline"><a href="drivers/driver44.html">Type 44</a> NeoClock4X - DCF77 / TDF serial line
+ </ul>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/release.html b/contrib/ntp/html/release.html
index 6c8d90f..b2f4d05 100644
--- a/contrib/ntp/html/release.html
+++ b/contrib/ntp/html/release.html
@@ -2,56 +2,69 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>NTP Version 4 Release Notes</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>NTP Version 4 Release Notes</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>NTP Version 4 Release Notes</h3>
- <img src="pic/hornraba.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>The rabbit toots to make sure you read this</p>
- <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="97">10:24 PM</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="266">Tuesday, August 05, 2003</csobj></p>
- .<br clear="left">
- <hr>
- <h4>NTP Version 4 Release Notes</h4>
- <p>This release of the NTP Version 4 (NTPv4) daemon for Unix, VMS and Windows incorporates new features and refinements to the NTP Version 3 (NTPv3) algorithms. However, it continues the tradition of retaining backwards compatibility with older versions, including NTPv3 and NTPv2, but not NTPv1. Support for NTPv1 has been discontinued because of certain security vulnerabilities. The NTPv4 version has been under development for quite a while and isn't finished yet. In fact, quite a number of NTPv4 features have already been retrofitted in the older NTPv3, although this version is not actively maintained by the NTPv4 developer corps.</p>
- <p>The code compiles and runs properly in all test host configurations available to the developer corps, including Sun Microsystems, Digital/Compaq, Hewlett Packard, FreeBSD and Linux. Other volunteers have verified it works in IRIX and certain versions of Windows NT and several others. We invite comments and corrections about the various architectures, operating systems and hardware complement that can't be verified by the developer corps. Of particular interest are Windows, VMS and various reference clock drivers. As always, corrections and bugfixes are warmly received, especially in the form of context diffs sent to <a href="mailto:bugs@ntp.org">bugs@ntp.org</a>.</p>
- <p>This release has been compiled and tested on many systems, including SunOS 4.1.3, Solaris 2.5.1-2.8, Alpha Tru64 4.0-5.1, Ultrix 4.4, Linux 2.4.2, FreeBSD 4.5 and HP-UX 10.02. It has been compiled and tested by others on Windows NT4, 2000 and XP, but not yet on other Windows versions or for VMS. There are several new features apparently incompatible with Linux systems, including some modes used with the Autokey protocol. The developers corps looks for help elsewhere to resolve these differences. We are relying on the NTP volunteer corps to do that.</p>
- <p>This note summarizes the differences between this software release of NTPv4, called ntp-4.x.x, and the previous NTPv3 version, called xntp3-5.x.x. Additional information on protocol compatibility details is on the <a href="http://www.eecis.udel.edu/%7emills/biblio.html">Protocol Conformance Statement</a> page.</p>
- <h4>New Features</h4>
- <ol>
- <li>Support for the IPv6 addressing family is included in this distribution. If the Basic Socket Interface Extensions for IPv6 (RFC-2553) is detected, support for the IPv6 address family is generated in addition to the default support for the IPv4 address family. Combination IPv6 and IPv4 configurations have been successfully tested in all protocol modes supported by NTP and using both symmetric and public key (Autokey) cryptography. However, users should note that IPv6 support is new and we have not had a lot of experience with it in various operational scenarios and local infrastructure environments. As always, feedback is welcome.
- <li>Most calculations are now done using 64-bit floating double format, rather than 64-bit fixed point format. The motivation for this is to reduce size, improve speed and avoid messy bounds checking. Workstations of today are much faster than when the original NTP version was designed in the early 1980s, and it is rare to find a processor architecture that does not support floating double. The fixed point format is still used with raw timestamps, in order to retain the full precision of about 212 picoseconds. However, the algorithms which process raw timestamps all produce fixed point differences before converting to floating double. The differences are ordinarily quite small so can be expressed without loss of accuracy in this format.
- <li>The clock discipline algorithms have been redesigned to improve accuracy, reduce the impact of network jitter and allow increased in poll intervals to well over one day with only moderate sacrifice in accuracy. A new feature called <i>huffpuff</i> maximizes accuracy in cases of highly asymmetric network delays typical of ISDN and modem access circuits. The NTPv4 design allows servers to increase the poll intervals even when synchronized directly to the peer. In NTPv3 the poll interval in such cases was clamped to the minimum, usually 64 s. For those servers with hundreds of clients, the new design can dramatically reduce the network load, especially when large numbers of potential clients, as in national laboratory services. A scheme designed to reduce &quot;clockhopping&quot; when the choice of servers changes frequently as the result of comparatively insignificant quality changes.
- <li>This release includes support for the <a href="ftp://ftp.udel.edu/usa/ftp/pub/ntp/software/"><i>nanokernel</i></a> precision time kernel support, which is now in stock Linux and FreeBSD kernels. If a precision time source such as a GPS timing receiver or cesium clock is available, kernel timekeeping can be improved to the order of one microsecond. The older <i>microtime</i> kernel for Digital/Compaq/HP Tru64, Digital Ultrix, as well as Sun Microsystems SunOS and Solaris, continues to be supported.
- <li>This release includes support for Autokey public-key cryptography, which is the preferred scheme for authenticating servers to clients. Autokey Version 2 uses NTP header extension fields and protocols as described on the NTP project page linked from www.ntp.org. This release includes support for additional message digest and digital signature schemes supported by the OpenSSL software library, as well as new identity schemes based on cryptographic challenge/responce algorithms. The new design greatly simplifies key generation and distribution and provides orderly key refreshment. Security procedures and media formats are consistent with industry standard X.509 Version 3 certificates and authority procedures. Specific improvements to the protocol include a reduction in the number of messages required and a method to protect the cookie used in client/server mode against disclosure. Additional information about Autokey cryptography is contained in the <a href="authopt.html">Authentication Options</a> page and links from there. See also the new <tt>cryptostats</tt> monitoring statistics file in the <a href="monopt.html">Monitoring Options</a> page.
- <li>This release includes support for a discrete event simulator (DES), which allows the NTP&nbsp;algorithms to be tested in an embedded environment with systematic and pseudorandom network delay and oscillator wander distributions. This has been used to verify correct operation under conditions of extreme error and misconfiguration. See the <a href="ntpdsim.html"><tt>ntpdsim</tt> - Network Time Protocol (NTP) simulator</a> page.
- <li>NTPv4 includes two new association modes which in most applications can avoid per-host configuration altogether. Both of these are based on IP multicast technology and Autokey cryptography. They provide automatic discovery, configuration and authentication of servers and clients without identifying servers or clients in advance. In multicast mode a server sends a message at fixed intervals using specified multicast group addresses, while clients listen on these addresses.
- <p>Upon receiving the the first message, a client exchanges several messages with the server in order to calibrate the multicast propagation delay between the client and server and run the authentication protocol. In manycast mode a client sends a message to a specified multicast group address and expects one or more servers to reply. Using engineered algorithms, the client selects an appropriate subset of servers from the messages received and continues an ordinary client/server campaign. The manycast scheme can provide somewhat better accuracy than the multicast scheme at the price of additional network overhead. See the <a href="manyopt.html">Automatic NTP Configuration Options</a> page for further information.</p>
- <li>There are two burst mode features available where special conditions apply. One of these is enabled by the <tt>iburst</tt> keyword in the <tt>server</tt> configuration command. It is intended for cases where it is important to set the clock quickly when an association is first mobilized. The other is enabled by the <tt>burst</tt> keyword in the <tt>server</tt> configuration command. It is intended for cases where the network attachment requires an initial calling or training procedure. See the <a href="assoc.html">Association Management</a> page for further information.
- <li>The reference clock driver interface is smaller, more rational and more accurate. Support for pulse-per-second (PPS) signals has been extended to all drivers as an intrinsic function. Most of the drivers in NTPv3 have been converted to the NTPv4 interface and continue to operate as before. New drivers have been added for several GPS receivers now on the market for a total of 44 drivers. Audio drivers for the Canadian standard time and frequency station CHU, the US standard time and frequency stations WWV/H and for IRIG signals have been updated and capabilities added to allow direct connection of these signals to a Sun or FreeBSD audio port. See the <a href="audio.html">Reference Clock Audio Drivers</a> page for further information.
- <li>In all except a very few cases, all timing intervals are randomized, so that the tendency for NTPv3 to self-synchronize and bunch messages, especially with a large number of configured associations, is minimized.
- <li>In NTPv3 a large number of weeds and useless code had grown over the years since the original NTPv1 code was implemented almost twenty years ago. Using a powerful weedwacker, much of the shrubbery has been removed, with effect a substantial reduction in size of almost 40 percent.
- <li>The entire distribution has been converted to gnu <tt>automake</tt>, which should greatly ease the task of porting to new and different programming environments, as well as reduce the incidence of bugs due to improper handling of idiosyncratic kernel functions. Version control is provided by <tt>Bitkeeper</tt> using an online repository at www.ntp.org.
- <li>Several new options have been added for the <tt>ntpd</tt> command line. For the inveterate knob twiddlers several of the more important performance variables can be changed to fit actual or perceived special conditions. It is possible to operate the daemon in a one-time mode similar to <tt>ntpdate</tt>, which program is headed for retirement. See the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a> page for the new features.
- </ol>
- <h4>Nasty Surprises</h4>
- <p>There are a few things different about this release that have changed since the latest NTP Version 3 release. Following are a few things to worry about:</p>
- <ol>
- <li>When both IPv4 and IPv6 address families are in use, the host's resolver library may not choose the intended address family if a server has an IPv4 and IPv6 address associated with the same DNS name. The solution is to use the IPv4 or IPv6 address directly in such cases or use another DNS name that only resolves to the intended address. Older versions of <tt>ntpdc</tt> will only show the IPv4 associations with the <tt>peers</tt> and other simular commands. Older versions of <tt>ntpq</tt> will show 0.0.0.0 for IPv6 associations with the <tt>peers</tt> and other simular commands.
- <li>There is a minor change to the reference ID field of the NTP packet header when operating with IPv6 associations. In IPv4 associations this field contains the 32-bit IPv4 address of the server, in order to detect and avoid loops. In IPv6 associations this field contains the first 32-bits of a MD5 hash formed from the address (IPv4 or IPv6) each of the configured associations. Normally, this detail would not be of concern; however, the <tt>ntptrace</tt> program originally depended on that field in order to display a server traceback to the primary reference source. This program has now been replaced by a script that does the same function, but does not depend on the reference ID field. The <tt>ntpdc</tt> utility now uses a special version number to communicate with the <tt>ntpd</tt> server. The server uses this version number to select which address family to used in reply packets. The <tt>ntpdc</tt> program falls back to the older version behavior when communicating with older NTP versions.
- <li>As required by Defense Trade Regulations (DTR), the cryptographic routines supporting the Data Encryption Standard (DES) have been removed from the base distribution of NTPv3. For NTPv4 a new interface has been implemented for the OpenSSL cryptographic library, which is widely available on the web at www.openssl.org. This library replaces the library formerly available from RSA Laboratories. Besides being somewhat faster and more widely available, the OpenSSL library supports many additional cryptographic algorithms, which are now selectable at run time. Directions for using OpenSSL are in the <a href="build.html">Building and Installing the Distribution</a> page.
- <li>As the result of the above, the <tt>./authstuff</tt> directory, intended as a development and testing aid for porting cryptographic routines to exotic architectures, has been removed. Testing and conformance validation tools are in the OpenSSL software distrbution.
- <li>The NTPv4 enable and disable commands have a few changes in the arguments. See the <tt>ntpd</tt> <a href="miscopt.html">Miscellaneous Options</a> page for details. Note that the <tt>authenticate</tt> command has been removed.
- <li>To help reduce the level of spurious network traffic due to obsolete configuration files, a special control message called the <i>kiss-o'-death</i> packet has been implemented. If enabled and a packet is denied service or exceeds the client limits, a compliant server will send this message to the client. A compliant client will cease further transmission and send a message to the system log. See the <a href="accopt.html">Authentication Options</a> page for further information.
- <li>The <tt>tty_clk</tt> and <tt>ppsclock</tt> pulse-per-second (PPS) line discipline/streams modules are no longer supported. The PPS function is now handled by the <a href="drivers/driver22.html">PPS Clock Discipline</a> driver, which uses the new PPSAPI application program interface proposed by the IETF. Note that the <tt>pps</tt> configuration file command has been obsoleted by the driver. See the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page for further information.
- <li>Support for the NTPv1 symmetric mode has been discontinued, since it hasn't worked for years. Support continues for the NTPv1 client mode, which is used in some SNTP clients.
- <li>The precision time support in stock Solaris 2.6 has bugs that were fixed in 2.7. A patch is available that fixes the 2.6 bugs. The 2.6 PPS kernel discipline has been disabled by default. For testing, the kernel can be enabled using the <tt>enable kernel</tt> command either in the configuration file or via <tt>ntpdc</tt>.
- <li>The HTML documentation has been partially updated. However, most of the NTPv3 documentation continues to apply to NTPv4. Until a comprehensive update happens, what you see is what you get. We are always happy to accept comments, corrections and bug reports. However, we are most thrilled upon receipt of patches to fix the dang bugs. <b>Please send bug reports to <a href="mailto:bugs@ntp.org">bugs@ntp.org</a>, not the individual members on the team</b>. </ol>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>NTP Version 4 Release Notes</h3>
+ <img src="pic/hornraba.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/%7emills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>The rabbit toots to make sure you read this</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">19:17</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="270">Monday, October 10, 2005</csobj></p>
+ .<br clear="left">
+ <hr>
+ <h4>NTP Version 4 Release Notes</h4>
+ <p>This release of the NTP Version 4 (NTPv4) daemon for Unix, VMS and Windows incorporates new features and refinements to the NTP Version 3 (NTPv3) algorithms. However, it continues the tradition of retaining backwards compatibility with older versions, including NTPv3 and NTPv2, but not NTPv1. Support for NTPv1 has been discontinued because of certain security vulnerabilities. The NTPv4 version has been under development for quite a while and isn't finished yet. In fact, quite a number of NTPv4 features have already been retrofitted in the older NTPv3, although this version is not actively maintained by the NTPv4 developer corps.</p>
+ <p>The code compiles and runs properly in all test host configurations available to the developer corps, including Sun Microsystems, Digital/Compaq, Hewlett Packard, FreeBSD and Linux. Other volunteers have verified it works in IRIX and Windows NT and XP. We invite comments and corrections about the various architectures, operating systems and hardware complement that can't be verified by the developer corps. Of particular interest are other Windows versions, VMS and various reference clock drivers. As always, corrections and bugfixes are warmly received, especially in the form of context diffs sent to <a href="mailto:bugs@ntp.org">bugs@ntp.org</a>.</p>
+ <p>This release has been compiled and tested on many systems, including SunOS 4.1.3, Solaris 2.5.1-2.10, Alpha Tru64 4.0-5.1, Ultrix 4.4, Linux 2.4.2, FreeBSD 4.5-5.3 and HP-UX 10.02. It has been compiled and tested by others on Windows NT4, 2000 and XP, but not yet on other Windows versions or for VMS. There are several new features apparently incompatible with Linux systems, including some modes used with the Autokey protocol. The developer corps looks for help elsewhere to resolve these differences.</p>
+ <p>This note summarizes the differences between this software release of NTPv4, called ntp-4.x.x, and the previous NTPv3 version, called xntp3-5.x.x. Additional information on protocol compatibility details is on the <a href="http://www.eecis.udel.edu/%7emills/biblio.html">Protocol Conformance Statement</a> page.</p>
+ <h4>New Features</h4>
+ <ol>
+ <li>Support for the IPv6 addressing family is included in this distribution. If the Basic Socket Interface Extensions for IPv6 (RFC-2553) is detected, support for the IPv6 address family is generated in addition to the default support for the IPv4 address family. Combination IPv6 and IPv4 configurations have been successfully tested in all protocol modes supported by NTP and using both symmetric and public key (Autokey) cryptography. However, users should note that IPv6 support is new and we have not had a lot of experience with it in various operational scenarios and local infrastructure environments. As always, feedback is welcome.
+ <li>Most calculations are now done using 64-bit floating double format, rather than 64-bit fixed point format. The motivation for this is to reduce size, improve speed and avoid messy bounds checking. Workstations of today are much faster than when the original NTP version was designed in the early 1980s, and it is rare to find a processor architecture that does not support floating double. The fixed point format is still used with raw timestamps, in order to retain the full precision of about 212 picoseconds. However, the algorithms which process raw timestamps all produce fixed point differences before converting to floating double. The differences are ordinarily quite small so can be expressed without loss of accuracy in this format.
+
+ <li>The clock discipline algorithm has been redesigned to improve accuracy, reduce the impact of network jitter and allow increased in poll intervals to well over one day with only moderate sacrifice in accuracy.
+ </ol>
+ <ul>
+ <ul>
+ <li>A new feature called <i>huffpuff</i> maximizes accuracy in cases of highly asymmetric network delays typical of ISDN and modem access circuits.
+ <li>The NTPv4 design allows clients to increase the poll intervals even when synchronized directly to the server. In NTPv3 the poll interval in such cases was clamped to the minimum, usually 64 s. For those servers with hundreds of clients, the new design can dramatically reduce the network load, especially when large numbers of potential clients, as in national laboratory services.
+ <li>A scheme designed to reduce &quot;clockhopping&quot; when the choice of servers changes frequently as the result of comparatively insignificant quality changes.
+ </ul>
+ </ul>
+ <ol>
+ <li>This release includes support for the <a href="ftp://ftp.udel.edu/usa/ftp/pub/ntp/software/"><i>nanokernel</i></a> precision time kernel support, which is now in stock FreeBSD and optional Linux kernels. If a precision time source such as a GPS timing receiver or cesium clock is available, kernel timekeeping can be improved to the order of one microsecond. The older <i>microtime</i> kernel for Digital/Compaq/HP Tru64, Digital Ultrix, as well as Sun Microsystems SunOS and Solaris, continues to be supported.
+ <li>This release includes support for Autokey public-key cryptography, which is the preferred scheme for authenticating servers to clients. Autokey Version 2 uses NTP header extension fields and protocols as described on the NTP project page linked from www.ntp.org. This release includes support for additional message digest and digital signature schemes supported by the OpenSSL software library, as well as new identity schemes based on cryptographic challenge/responce algorithms. The new design greatly simplifies key generation and distribution and provides orderly key refreshment. Security procedures and media formats are consistent with industry standard X.509 Version 3 certificates and authority procedures. Specific improvements to the protocol include a reduction in the number of messages required and a method to protect the cookie used in client/server mode against disclosure. Additional information about Autokey cryptography is contained in the <a href="authopt.html">Authentication Options</a> page and links from there. See also the new <tt>cryptostats</tt> monitoring statistics file in the <a href="monopt.html">Monitoring Options</a> page.
+ <li>This release includes support for a discrete event simulator (DES), which allows the NTP&nbsp;algorithms to be tested in an embedded environment with systematic and pseudorandom network delay and oscillator wander distributions. This has been used to verify correct operation under conditions of extreme error and misconfiguration. See the <a href="ntpdsim.html"><tt>ntpdsim</tt> - Network Time Protocol (NTP) simulator</a> page.
+ <li>NTPv4 includes two new association modes which in most applications can avoid per-host configuration altogether. Both of these are based on IP multicast technology and Autokey cryptography. They provide automatic discovery, configuration and authentication of servers and clients without identifying servers or clients in advance. In multicast mode a server sends a message at fixed intervals using specified multicast group addresses, while clients listen on these addresses.
+ <p>Upon receiving the the first message, a client exchanges several messages with the server in order to calibrate the multicast propagation delay between the client and server and run the authentication protocol. In manycast mode a client sends a message to a specified multicast group address and expects one or more servers to reply. Using engineered algorithms, the client selects an appropriate subset of servers from the messages received and continues an ordinary client/server campaign. The manycast scheme can provide somewhat better accuracy than the multicast scheme at the price of additional network overhead. See the <a href="manyopt.html">Automatic NTP Configuration Options</a> page for further information.</p>
+ <li>This release includes support for the orphan mode, which replaces the local clock driver for most configurations. The local clock driver provides a synchronization source for networks not connected to the public Internet or reference clock driver. However, it does not opperate with multiple sources nor multiple failures. The orphan mode provides an automatic, subnet-wide synchronization feature with multiple sources. It can be used in isolated networks or in Internet subnets where the servers or Internet connection have failed. See the <a href="manyopt.html">Automatic NTP Configuration Options</a> page for further information.<li>This release includes support for preemptable servers, which are provisionally mobilized in manycast mode or by participants in the pool scheme. Manycast mode is described in these notes. In the pool scheme multiple client associations are mobilized for a designated DNS&nbsp;name such as pool.ntp.org. The DNS resolver randomizes replies over a set of volunteer service providers. The NTP&nbsp;mitigation algorithms select the best three from among the set and demobilizes the excess. See the <a href="manyopt.html">Automatic NTP Configuration Options</a> page for further information.<li>There are two burst mode features available where special conditions apply. One of these is enabled by the <tt>iburst</tt> keyword in the <tt>server</tt> configuration command. It is intended for cases where it is important to set the clock quickly when an association is first mobilized. The other is enabled by the <tt>burst</tt> keyword in the <tt>server</tt> configuration command. It is intended for cases where the network attachment requires an initial calling or training procedure. See the <a href="assoc.html">Association Management</a> page for further information.
+ <li>The reference clock driver interface is smaller, more rational and more accurate. Support for pulse-per-second (PPS) signals has been extended to all drivers as an intrinsic function. Most of the drivers in NTPv3 have been converted to the NTPv4 interface and continue to operate as before. New drivers have been added for several GPS receivers now on the market for a total of 44 drivers. Audio drivers for the Canadian standard time and frequency station CHU, the US standard time and frequency stations WWV/H and for IRIG signals have been updated and capabilities added to allow direct connection of these signals to a Sun or FreeBSD audio port. See the <a href="audio.html">Reference Clock Audio Drivers</a> page for further information.
+ <li>In all except a very few cases, all timing intervals are randomized, so that the tendency for NTPv3 to self-synchronize and bunch messages, especially with a large number of configured associations, is minimized.
+ <li>In NTPv3 a large number of weeds and useless code had grown over the years since the original NTPv1 code was implemented almost twenty years ago. Using a powerful weedwacker, much of the shrubbery has been removed, with effect a substantial reduction in size of almost 40 percent.
+ <li>The entire distribution has been converted to gnu <tt>automake</tt>, which should greatly ease the task of porting to new and different programming environments, as well as reduce the incidence of bugs due to improper handling of idiosyncratic kernel functions. Version control is provided by <tt>Bitkeeper</tt> using an online repository at www.ntp.org.
+ <li>Several new options have been added for the <tt>ntpd</tt> command line. For the inveterate knob twiddlers several of the more important performance variables can be changed to fit actual or perceived special conditions. In particular, the tos command can be used to limit the accepted stratum range, specify minimum dispersion increment and maximum selection theshold, and activate orphan mode.
+ <li>The <tt>ntpd</tt> daemon can be operated in a one-time mode similar to <tt>ntpdate</tt>, which program is headed for retirement. See the <a href="ntpd.html"><tt>ntpd</tt> - Network Time Protocol (NTP) daemon</a> page for the new features.
+ </ol>
+ <h4>Nasty Surprises</h4>
+ <p>There are a few things different about this release that have changed since the latest NTP Version 3 release. Following are a few things to worry about:</p>
+ <ol>
+ <li>When both IPv4 and IPv6 address families are in use, the host's resolver library may not choose the intended address family if a server has an IPv4 and IPv6 address associated with the same DNS name. The solution is to use the IPv4 or IPv6 address directly in such cases or use another DNS name that resolves to the intended address family. Older versions of <tt>ntpdc</tt> will only show the IPv4 associations with the <tt>peers</tt> and other simular commands. Older versions of <tt>ntpq</tt> will show 0.0.0.0 for IPv6 associations with the <tt>peers</tt> and other simular commands.
+ <li>There is a minor change to the reference ID field of the NTP packet header when operating with IPv6 associations. In IPv4 associations this field contains the 32-bit IPv4 address of the server, in order to detect and avoid loops. In IPv6 associations this field contains the first 32-bits of a MD5 hash formed from the address (IPv4 or IPv6) each of the configured associations. Normally, this detail would not be of concern; however, the <tt>ntptrace</tt> program originally depended on that field in order to display a server traceback to the primary reference source. This program has now been replaced by a script that does the same function, but does not depend on the reference ID field. The <tt>ntpdc</tt> utility now uses a special version number to communicate with the <tt>ntpd</tt> server. The server uses this version number to select which address family to used in reply packets. The <tt>ntpdc</tt> program falls back to the older version behavior when communicating with older NTP versions.
+ <li>As required by Defense Trade Regulations (DTR), the cryptographic routines supporting the Data Encryption Standard (DES) have been removed from the base distribution of NTPv3. For NTPv4 a new interface has been implemented for the OpenSSL cryptographic library, which is widely available on the web at www.openssl.org. This library replaces the library formerly available from RSA Laboratories. Besides being somewhat faster and more widely available, the OpenSSL library supports many additional cryptographic algorithms, which are now selectable at run time. Directions for using OpenSSL are in the <a href="build/build.html">Building and Installing the Distribution</a> page.
+ <li>As the result of the above, the <tt>./authstuff</tt> directory, intended as a development and testing aid for porting cryptographic routines to exotic architectures, has been removed. Testing and conformance validation tools are in the OpenSSL software distrbution.
+ <li>The NTPv4 enable and disable commands have a few changes in the arguments. See the <tt>ntpd</tt> <a href="miscopt.html">Miscellaneous Options</a> page for details. Note that the <tt>authenticate</tt> command has been removed.
+ <li>To help reduce the level of spurious network traffic due to obsolete configuration files, a special control message called the <i>kiss-o'-death</i> packet has been implemented. If enabled and a packet is denied service or exceeds the client limits, a compliant server will send this message to the client. A compliant client will cease further transmission and send a message to the system log. See the <a href="accopt.html">Authentication Options</a> page for further information.
+ <li>The <tt>tty_clk</tt> and <tt>ppsclock</tt> pulse-per-second (PPS) line discipline/streams modules are no longer supported. The PPS function is now handled by the <a href="drivers/driver22.html">PPS Clock Discipline</a> driver, which uses the new PPSAPI application program interface adopted by the IETF. Note that the <tt>pps</tt> configuration file command has been obsoleted by the driver. See the <a href="pps.html">Pulse-per-second (PPS) Signal Interfacing</a> page for further information.
+ <li>Support for the NTPv1 symmetric mode has been discontinued, since it hasn't worked for years. Support continues for the NTPv1 client mode, which is used in some SNTP clients.
+ <li>The precision time support in stock Solaris 2.6 has bugs that were fixed in 2.7. A patch is available that fixes the 2.6 bugs. The 2.6 PPS kernel discipline has been disabled by default. For testing, the kernel can be enabled using the <tt>enable kernel</tt> command either in the configuration file or via <tt>ntpdc</tt>.
+ <li>The HTML documentation has been partially updated. However, most of the NTPv3 documentation continues to apply to NTPv4. Until a comprehensive update happens, what you see is what you get. We are always happy to accept comments, corrections and bug reports. However, we are most thrilled upon receipt of patches to fix the dang bugs. <b>Please send bug reports to <a href="mailto:bugs@ntp.org">bugs@ntp.org</a>, not the individual members on the team</b>.
+ </ol>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/scripts/links11.txt b/contrib/ntp/html/scripts/links11.txt
index 2f497f0..59e7017 100644
--- a/contrib/ntp/html/scripts/links11.txt
+++ b/contrib/ntp/html/scripts/links11.txt
@@ -2,4 +2,6 @@ document.write("<ul>\
<li class='inline'><a href='refclock.html'>Reference Clock Drivers</a><br>\
<li class='inline'><a href='pps.html'>Pulse-per-second (PPS) Signal Interfacing</a><br>\
<li class='inline'><a href='ldisc.html'>Line Disciplines and Streams Modules</a><br>\
+<li class='inline'><a href='kernpps.html'>PPSAPI Interface for Precision Time Signals</a><br>\
+<li class='inline'><a href='gadget.html'>Gadget Box PPS Level Converter and CHU Modem</a><br>\
</ul>") \ No newline at end of file
diff --git a/contrib/ntp/html/scripts/links7.txt b/contrib/ntp/html/scripts/links7.txt
index fa476e2..0d33473 100644
--- a/contrib/ntp/html/scripts/links7.txt
+++ b/contrib/ntp/html/scripts/links7.txt
@@ -2,4 +2,5 @@ document.write("<ul>\
<li class='inline'><a href='confopt.html'>Server Options</a><br>\
<li class='inline'><a href='authopt.html'>Authentication Options</a><br>\
<li class='inline'><a href='monopt.html'>Monitoring Options</a><br>\
+<li class='inline'><a href='ntp_conf.html'>Configuration File Definition (Advanced)</a><br>\
</ul>") \ No newline at end of file
diff --git a/contrib/ntp/html/scripts/links8.txt b/contrib/ntp/html/scripts/links8.txt
index 51c3a38..135310c 100644
--- a/contrib/ntp/html/scripts/links8.txt
+++ b/contrib/ntp/html/scripts/links8.txt
@@ -1,6 +1,6 @@
document.write("<ul>\
<li class='inline'><a href='refclock.html'>Reference Clock Drivers</a><br>\
-<li class='inline'><a href='driver7.html'>Radio CHU Audio Demodulator/Decoder</a><br>\
-<li class='inline'><a href='driver36.html'>Radio WWV/H Audio Demodulator/Decoder</a><br>\
-<li class='inline'><a href='driver6.html'>IRIG Audio Decoder</a>\
+<li class='inline'><a href='drivers/driver7.html'>Radio CHU Audio Demodulator/Decoder</a><br>\
+<li class='inline'><a href='drivers/driver36.html'>Radio WWV/H Audio Demodulator/Decoder</a><br>\
+<li class='inline'><a href='drivers/driver6.html'>IRIG Audio Decoder</a>\
</ul>") \ No newline at end of file
diff --git a/contrib/ntp/html/scripts/links9.txt b/contrib/ntp/html/scripts/links9.txt
index 06e3462..6ea32f0 100644
--- a/contrib/ntp/html/scripts/links9.txt
+++ b/contrib/ntp/html/scripts/links9.txt
@@ -2,6 +2,7 @@ document.write("<ul>\
<li class='inline'><a href='authopt.html'>Authentication Options</a><br>\
<li class='inline'><a href='manyopt.html'>Automatic NTP Configuration Options</a><br>\
<li class='inline'><a href='confopt.html'>Server Options</a><br>\
+<li class='inline'><a href='groups.html'>Trusted Hosts and Groups</a><br>\
<li class='inline'><a href='keygen.html'><tt>ntp-keygen</tt> - generate public and private keys</a>\
<li class='inline'><a href='http://www.eecis.udel.edu/~mills/autokey.html'>Autonomous Authentication</a>\
</ul>") \ No newline at end of file
diff --git a/contrib/ntp/html/sntp.html b/contrib/ntp/html/sntp.html
index de7b6f7..839271e 100644
--- a/contrib/ntp/html/sntp.html
+++ b/contrib/ntp/html/sntp.html
@@ -2,55 +2,56 @@
<html>
- <head>
- <title>Simple Network Time Protocol (SNTP) Client</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <title>Simple Network Time Protocol (SNTP) Client</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3>Simple Network Time Protocol (SNTP) Client</h3>
- <img src="pic/dogsnake.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
- <p>S is for snakeoil</p>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">23:27</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="250">Tuesday, February 11, 2003</csobj></p>
- <br clear="left">
- <hr>
- <h4>Synopsis</h4>
- <tt>sntp [{-h --help -?}][{ -v -V -W }][{-r -a}][-P <i>prompt</i>][-e <i>minerr</i>][-E <i>maxerr</i>][-c <i>count</i>][-d <i>delay</i>][address(es)]</tt>
- <h4>Description</h4>
- <p>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 <tt>cron</tt> job. The program implements the SNTP protocol defined in RFC-2030, which is a subset of the NTP&nbsp;protocol defined in RFC-1305, but does not provide the sanity checks, access controls, security functions and mitigation algorithms as in the full NTP implementation.</p>
- <p>While this program can do other things, including operation as a primitive server, some of these things are truly dangerous in a ubiquitous public time server network. A full disclosure is in the man page in the <tt>./sntp</tt> directory, but be truly advised RFC-2030 specifically <b>forbids</b> a SNTP client to operate as a server for other NTP or SNTP&nbsp;clients. If such operation is contemplated, do <b>not</b>&nbsp;allow access by clients on the public Internet.</p>
- <p>By default, <tt>sntp</tt> writes the local date and time (i.e., not UTC) to the standard output in the format</p>
- <p><tt>1996 Oct 15 20:17:25.123 + 4.567 +/- 0.089 secs</tt>,</p>
- <p>where the <tt>+ 4.567 +/- 0.089 secs</tt> indicates the time offset and error bound of the system clock relative to the server clock.</p>
- <p>If a NTP&nbsp;server <i>address</i> is explicitly specified, the program sends a single message to the server and waits up to <i>delay</i> seconds for a unicast server message. Otherwise, it sends no message and waits up to <i>delay</i> seconds for a broadcast server message.</p>
- <h4>Options</h4>
- <p><tt>sntp</tt> recognizes the following options:</p>
- <dl>
- <dt><tt>-h, --help</tt>
- <dd>displays usage information.
- <dt><tt>-v</tt>
- <dd>writes diagnostic messages and a limited amount of tracing to standard error. The <tt>-v, -V</tt> and <tt>-W</tt> give increasing levels of detail.
- <dt><tt>-r</tt>
- <dd>steps the system clock to the correct time by the Unix <tt>settimeofday</tt> system call. Requires root priviledge.
- <dt><tt>-a</tt>
- <dd>slews the system clock to the correct time by the Unix <tt>adjtime</tt> system call. Requires root priviledge.
- <dt><tt>-e <i>minerr</i></tt>
- <dd>sets the minimum offset to <tt><i>minerr</i></tt> seconds. Measured offsets less than this are ignored. Acceptable values are from 0.001 to 1 with default 0.1 if unicast mode and 0.5 for broadcast mode.
- <dt><tt>-E <i>maxerr</i></tt>
- <dd>sets the maximum offset to <tt><i>maxerr</i></tt> seconds. Measured offsets greater than this are ignored. Acceptable values are from 1 to 60 with default 5.
- <dt><tt>-P <i>prompt</i></tt>
- <dd>sets the maximum automatic offset to <tt><i>maxerr</i></tt> seconds. Acceptable values are from 1 to 3600 or <tt>no</tt>, with default 30. If the program is being run interactively, measured offsets greater than this will prompt the user for confirmation. Specifying <tt>no</tt> will disable this and the correction will be made regardless.
- <dt><tt>-c <i>count</i></tt>
- <dd>sets the maximum number of NTP packets required to <i>count</i>. Acceptable values are from 1 to 25 in unicast mode and 5 to 25 in broadcast mode. The default is 5 in either mode.
- <dt><tt>-d <i>delay</i></tt>
- <dd>sets the maximum waiting time in broadcast mode to <i>delay</i> seconds. Acceptable values are from 1 to 3600, with default 15 in unicast mode and 300 in broadcast mode.
- </dl>
- <h4>Return Value</h4>
- <p>The program returns an exit status of zero for success and non-zero otherwise.</p>
- <h4>Author</h4>
- <p><tt>sntp</tt> was developed by N.M. Maclaren of the University of Cambridge Computing Service.</p>
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <body>
+ <h3>Simple Network Time Protocol (SNTP) Client</h3>
+ <img src="pic/dogsnake.gif" alt="gif" align="left"><a href="http://www.eecis.udel.edu/~mills/pictures.html">from <i>Alice's Adventures in Wonderland</i>, Lewis Carroll</a>
+ <p>S is for snakeoil</p>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:50</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <br clear="left">
+ <hr>
+ <h4>Synopsis</h4>
+ <tt>sntp [{-h --help -?}][{ -v -V -W }][{-r -a}][-P <i>prompt</i>][-e <i>minerr</i>][-E <i>maxerr</i>][-c <i>count</i>][-d <i>delay</i>][address(es)]</tt>
+ <h4>Description</h4>
+ <p>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 <tt>cron</tt> job. The program implements the SNTP protocol defined in RFC-2030, which is a subset of the NTP&nbsp;protocol defined in RFC-1305, but does not provide the sanity checks, access controls, security functions and mitigation algorithms as in the full NTP implementation.</p>
+ <p>While this program can do other things, including operation as a primitive server, some of these things are truly dangerous in a ubiquitous public time server network. A full disclosure is in the man page in the <tt>./sntp</tt> directory, but be truly advised RFC-2030 specifically <b>forbids</b> a SNTP client to operate as a server for other NTP or SNTP&nbsp;clients. If such operation is contemplated, do <b>not</b>&nbsp;allow access by clients on the public Internet.</p>
+ <p>By default, <tt>sntp</tt> writes the local date and time (i.e., not UTC) to the standard output in the format</p>
+ <p><tt>1996 Oct 15 20:17:25.123 + 4.567 +/- 0.089 secs</tt>,</p>
+ <p>where the <tt>+ 4.567 +/- 0.089 secs</tt> indicates the time offset and error bound of the system clock relative to the server clock.</p>
+ <p>If a NTP&nbsp;server <i>address</i> is explicitly specified, the program sends a single message to the server and waits up to <i>delay</i> seconds for a unicast server message. Otherwise, it sends no message and waits up to <i>delay</i> seconds for a broadcast server message.</p>
+ <h4>Options</h4>
+ <p><tt>sntp</tt> recognizes the following options:</p>
+ <dl>
+ <dt><tt>-h, --help</tt>
+ <dd>displays usage information.
+ <dt><tt>-v</tt>
+ <dd>writes diagnostic messages and a limited amount of tracing to standard error. The <tt>-v, -V</tt> and <tt>-W</tt> give increasing levels of detail.
+ <dt><tt>-r</tt>
+ <dd>steps the system clock to the correct time by the Unix <tt>settimeofday</tt> system call. Requires root priviledge.
+ <dt><tt>-a</tt>
+ <dd>slews the system clock to the correct time by the Unix <tt>adjtime</tt> system call. Requires root priviledge.
+ <dt><tt>-e <i>minerr</i></tt>
+ <dd>sets the minimum offset to <tt><i>minerr</i></tt> seconds. Measured offsets less than this are ignored. Acceptable values are from 0.001 to 1 with default 0.1 if unicast mode and 0.5 for broadcast mode.
+ <dt><tt>-E <i>maxerr</i></tt>
+ <dd>sets the maximum offset to <tt><i>maxerr</i></tt> seconds. Measured offsets greater than this are ignored. Acceptable values are from 1 to 60 with default 5.
+ <dt><tt>-P <i>prompt</i></tt>
+ <dd>sets the maximum automatic offset to <tt><i>maxerr</i></tt> seconds. Acceptable values are from 1 to 3600 or <tt>no</tt>, with default 30. If the program is being run interactively, measured offsets greater than this will prompt the user for confirmation. Specifying <tt>no</tt> will disable this and the correction will be made regardless.
+ <dt><tt>-c <i>count</i></tt>
+ <dd>sets the maximum number of NTP packets required to <i>count</i>. Acceptable values are from 1 to 25 in unicast mode and 5 to 25 in broadcast mode. The default is 5 in either mode.
+ <dt><tt>-d <i>delay</i></tt>
+ <dd>sets the maximum waiting time in broadcast mode to <i>delay</i> seconds. Acceptable values are from 1 to 3600, with default 15 in unicast mode and 300 in broadcast mode.
+ </dl>
+ <h4>Return Value</h4>
+ <p>The program returns an exit status of zero for success and non-zero otherwise.</p>
+ <h4>Author</h4>
+ <p><tt>sntp</tt> was developed by N.M. Maclaren of the University of Cambridge Computing Service.</p>
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/html/tickadj.html b/contrib/ntp/html/tickadj.html
index 7153f77..14559ed 100644
--- a/contrib/ntp/html/tickadj.html
+++ b/contrib/ntp/html/tickadj.html
@@ -2,47 +2,48 @@
<html>
- <head>
- <meta name="generator" content="HTML Tidy, see www.w3.org">
- <title>tickadj - set time-related kernel variables</title>
- <link href="scripts/style.css" type="text/css" rel="stylesheet">
- </head>
+ <head>
+ <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
+ <meta name="generator" content="HTML Tidy, see www.w3.org">
+ <title>tickadj - set time-related kernel variables</title>
+ <link href="scripts/style.css" type="text/css" rel="stylesheet">
+ </head>
- <body>
- <h3><tt>tickadj</tt> - set time-related kernel variables</h3>
- <p>Last update: <csobj format="ShortTime" h="24" locale="00000409" region="0" t="DateTime" w="50">20:11</csobj> UTC <csobj format="LongDate" h="24" locale="00000409" region="0" t="DateTime" w="257">Monday, December 02, 2002</csobj></p>
- <hr>
- <h4>Synopsis</h4>
- <tt>tickadj [ -Aqs ] [ -a <i>tickadj</i> ] [ -t <i>tick</i> ]</tt>
- <h4>Description</h4>
- <p>The <tt>tickadj</tt> program reads, and optionally modifies, several timekeeping-related variables in older kernels that do not have support for precision ttimekeeping, including HP-UX, SunOS, Ultrix, SGI and probably others. Those machines provide means to patch the kernel <tt>/dev/kmem</tt>. Newer machines with precision time support, including Solaris, Tru64, FreeBSD and Linux (with PPSkit patch) should NOT use the program. The particular variables that can be changed with <tt>tickadj</tt> include <tt>tick</tt>, which is the number of microseconds added to the system time for a clock interrupt, <tt>tickadj</tt>, which sets the slew rate and resolution used by the <tt>adjtime</tt> system call, and <tt>dosynctodr</tt>, which indicates to the kernels on some machines whether they should internally adjust the system clock to keep it in line with time-of-day clock or not.</p>
- <p>By default, with no arguments, <tt>tickadj</tt> reads the variables of interest in the kernel and displays them. At the same time, it determines an &quot;optimal&quot; value for the value of the <tt>tickadj</tt> variable if the intent is to run the <tt>ntpd</tt> Network Time Protocol (NTP) daemon, and prints this as well. Since the operation of <tt>tickadj</tt> when reading the kernel mimics the operation of similar parts of the <tt>ntpd</tt> program fairly closely, this can be useful when debugging problems with <tt>ntpd</tt>.</p>
- <p>Note that <tt>tickadj</tt> should be run with some caution when being used for the first time on different types of machines. The operations which <tt>tickadj</tt> tries to perform are not guaranteed to work on all Unix machines and may in rare cases cause the kernel to crash.</p>
- <h4>Command Line Options</h4>
- <dl>
- <dt><tt>-a <i>tickadj</i></tt>
- <dd>Set the kernel variable <tt>tickadj</tt> to the value <i><tt>tickadj</tt></i>specified.
- <dt><tt>-A</tt>
- <dd>Set the kernel variable <tt>tickadj</tt> to an internally computed &quot;optimal&quot; value.
- <dt><tt>-t <i>tick</i></tt>
- <dd>Set the kernel variable <tt>tick</tt> to the value <i><tt>tick</tt></i> specified.
- <dt><tt>-s</tt>
- <dd>Set the kernel variable <tt>dosynctodr</tt> to zero, which disables the hardware time-of-year clock, a prerequisite for running the <tt>ntpd</tt> daemon under SunOS4.
- <dt><tt>-q</tt>
- <dd>Normally, <tt>tickadj</tt> is quite verbose about what it is doing. The <tt>-q</tt> flag tells it to shut up about everything except errors.
- </dl>
- <h4>Files</h4>
- <pre>
+ <body>
+ <h3><tt>tickadj</tt> - set time-related kernel variables</h3>
+ <p>Last update: <csobj format="ShortTime" h="25" locale="00000409" region="0" t="DateTime" w="61">18:50</csobj> UTC <csobj format="LongDate" h="25" locale="00000409" region="0" t="DateTime" w="246">Thursday, July 28, 2005</csobj></p>
+ <hr>
+ <h4>Synopsis</h4>
+ <tt>tickadj [ -Aqs ] [ -a <i>tickadj</i> ] [ -t <i>tick</i> ]</tt>
+ <h4>Description</h4>
+ <p>The <tt>tickadj</tt> program reads, and optionally modifies, several timekeeping-related variables in older kernels that do not have support for precision ttimekeeping, including HP-UX, SunOS, Ultrix, SGI and probably others. Those machines provide means to patch the kernel <tt>/dev/kmem</tt>. Newer machines with precision time support, including Solaris, Tru64, FreeBSD and Linux (with PPSkit patch) should NOT use the program. The particular variables that can be changed with <tt>tickadj</tt> include <tt>tick</tt>, which is the number of microseconds added to the system time for a clock interrupt, <tt>tickadj</tt>, which sets the slew rate and resolution used by the <tt>adjtime</tt> system call, and <tt>dosynctodr</tt>, which indicates to the kernels on some machines whether they should internally adjust the system clock to keep it in line with time-of-day clock or not.</p>
+ <p>By default, with no arguments, <tt>tickadj</tt> reads the variables of interest in the kernel and displays them. At the same time, it determines an &quot;optimal&quot; value for the value of the <tt>tickadj</tt> variable if the intent is to run the <tt>ntpd</tt> Network Time Protocol (NTP) daemon, and prints this as well. Since the operation of <tt>tickadj</tt> when reading the kernel mimics the operation of similar parts of the <tt>ntpd</tt> program fairly closely, this can be useful when debugging problems with <tt>ntpd</tt>.</p>
+ <p>Note that <tt>tickadj</tt> should be run with some caution when being used for the first time on different types of machines. The operations which <tt>tickadj</tt> tries to perform are not guaranteed to work on all Unix machines and may in rare cases cause the kernel to crash.</p>
+ <h4>Command Line Options</h4>
+ <dl>
+ <dt><tt>-a <i>tickadj</i></tt>
+ <dd>Set the kernel variable <tt>tickadj</tt> to the value <i><tt>tickadj</tt></i>specified.
+ <dt><tt>-A</tt>
+ <dd>Set the kernel variable <tt>tickadj</tt> to an internally computed &quot;optimal&quot; value.
+ <dt><tt>-t <i>tick</i></tt>
+ <dd>Set the kernel variable <tt>tick</tt> to the value <i><tt>tick</tt></i> specified.
+ <dt><tt>-s</tt>
+ <dd>Set the kernel variable <tt>dosynctodr</tt> to zero, which disables the hardware time-of-year clock, a prerequisite for running the <tt>ntpd</tt> daemon under SunOS4.
+ <dt><tt>-q</tt>
+ <dd>Normally, <tt>tickadj</tt> is quite verbose about what it is doing. The <tt>-q</tt> flag tells it to shut up about everything except errors.
+ </dl>
+ <h4>Files</h4>
+ <pre>
/vmunix
/unix
/dev/kmem
</pre>
- <h4>Bugs</h4>
- Fiddling with kernel variables at run time as a part of ordinary operations is a hideous practice which is only necessary to make up for deficiencies in the implementation of <tt>adjtime</tt> in many kernels and/or brokenness of the system clock in some vendors' kernels. It would be much better if the kernels were fixed and the <tt>tickadj</tt> program went away.
- <hr>
- <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
- </body>
+ <h4>Bugs</h4>
+ Fiddling with kernel variables at run time as a part of ordinary operations is a hideous practice which is only necessary to make up for deficiencies in the implementation of <tt>adjtime</tt> in many kernels and/or brokenness of the system clock in some vendors' kernels. It would be much better if the kernels were fixed and the <tt>tickadj</tt> program went away.
+ <hr>
+ <script type="text/javascript" language="javascript" src="scripts/footer.txt"></script>
+ </body>
</html> \ No newline at end of file
diff --git a/contrib/ntp/include/Makefile.am b/contrib/ntp/include/Makefile.am
index 8f8b934..1fbe6fc 100644
--- a/contrib/ntp/include/Makefile.am
+++ b/contrib/ntp/include/Makefile.am
@@ -1,7 +1,7 @@
#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
ETAGS_ARGS = $(srcdir)/Makefile.am
-#EXTRA_DIST = TAGS
+EXTRA_DIST = autogen-version.def copyright.def debug-opt.def homerc.def version.def
SUBDIRS = isc
@@ -28,6 +28,7 @@ noinst_HEADERS = \
ntp_control.h \
ntp_crypto.h \
ntp_datum.h \
+ ntp_debug.h \
ntp_filegen.h \
ntp_fp.h \
ntp_if.h \
@@ -36,6 +37,7 @@ noinst_HEADERS = \
ntp_malloc.h \
ntp_md5.h \
ntp_proto.h \
+ ntp_random.h \
ntp_refclock.h \
ntp_request.h \
ntp_rfc2553.h \
@@ -54,5 +56,8 @@ noinst_HEADERS = \
parse_conf.h \
recvbuff.h \
rsa_md5.h \
+ timepps-SCO.h \
+ timepps-Solaris.h \
+ timepps-SunOS.h \
trimble.h
diff --git a/contrib/ntp/include/Makefile.in b/contrib/ntp/include/Makefile.in
index d0a6882..b65fac8 100644
--- a/contrib/ntp/include/Makefile.in
+++ b/contrib/ntp/include/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -21,7 +21,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +36,44 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+subdir = include
+DIST_COMMON = README $(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/hs_ulong_const.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 =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +81,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +97,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +152,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +187,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,19 +195,13 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
ETAGS_ARGS = $(srcdir)/Makefile.am
-
-#EXTRA_DIST = TAGS
+EXTRA_DIST = autogen-version.def copyright.def debug-opt.def homerc.def version.def
SUBDIRS = isc
-
noinst_HEADERS = \
adjtime.h \
audio.h \
@@ -182,6 +225,7 @@ noinst_HEADERS = \
ntp_control.h \
ntp_crypto.h \
ntp_datum.h \
+ ntp_debug.h \
ntp_filegen.h \
ntp_fp.h \
ntp_if.h \
@@ -190,6 +234,7 @@ noinst_HEADERS = \
ntp_malloc.h \
ntp_md5.h \
ntp_proto.h \
+ ntp_random.h \
ntp_refclock.h \
ntp_request.h \
ntp_rfc2553.h \
@@ -208,33 +253,52 @@ noinst_HEADERS = \
parse_conf.h \
recvbuff.h \
rsa_md5.h \
+ timepps-SCO.h \
+ timepps-Solaris.h \
+ timepps-SunOS.h \
trimble.h
-subdir = include
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-HEADERS = $(noinst_HEADERS)
-
-
-RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
- ps-recursive install-info-recursive uninstall-info-recursive \
- all-recursive install-data-recursive install-exec-recursive \
- installdirs-recursive install-recursive uninstall-recursive \
- check-recursive installcheck-recursive
-DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.in \
- Makefile.am
-DIST_SUBDIRS = $(SUBDIRS)
all: all-recursive
.SUFFIXES:
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(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 include/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu include/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+ $(AUTOMAKE) --foreign include/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:
# This directory's subdirectories are mostly independent; you can cd
@@ -244,7 +308,13 @@ uninstall-info-am:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
- @set fnord $$MAKEFLAGS; amf=$$2; \
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -256,7 +326,7 @@ $(RECURSIVE_TARGETS):
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -264,7 +334,13 @@ $(RECURSIVE_TARGETS):
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
- @set fnord $$MAKEFLAGS; amf=$$2; \
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -285,7 +361,7 @@ maintainer-clean-recursive:
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -296,14 +372,6 @@ ctags-recursive:
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -312,19 +380,22 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
- if (etags --etags-include --version) >/dev/null 2>&1; then \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
+ empty_fix=.; \
else \
include_option=--include; \
+ empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -f $$subdir/TAGS && \
+ test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
@@ -334,10 +405,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -360,10 +432,6 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -377,7 +445,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -392,15 +460,17 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d $(distdir)/$$subdir \
- || mkdir $(distdir)/$$subdir \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$(top_distdir)" \
- distdir=../$(distdir)/$$subdir \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
@@ -410,7 +480,6 @@ check: check-recursive
all-am: Makefile $(HEADERS)
installdirs: installdirs-recursive
installdirs-am:
-
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
@@ -422,7 +491,7 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -430,23 +499,26 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -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-recursive
-clean-am: clean-generic mostlyclean-am
+clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
dvi: dvi-recursive
dvi-am:
+html: html-recursive
+
info: info-recursive
info-am:
@@ -467,7 +539,7 @@ maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
-mostlyclean-am: mostlyclean-generic
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
@@ -481,20 +553,18 @@ uninstall-am: uninstall-info-am
uninstall-info: uninstall-info-recursive
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
- clean-generic clean-recursive ctags ctags-recursive distclean \
- distclean-generic distclean-recursive distclean-tags distdir \
- dvi dvi-am dvi-recursive info info-am info-recursive install \
- install-am install-data install-data-am install-data-recursive \
- install-exec install-exec-am install-exec-recursive \
- install-info install-info-am install-info-recursive install-man \
- install-recursive install-strip installcheck installcheck-am \
- installdirs installdirs-am installdirs-recursive \
- maintainer-clean maintainer-clean-generic \
- maintainer-clean-recursive mostlyclean mostlyclean-generic \
- mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \
- ps-recursive tags tags-recursive uninstall uninstall-am \
- uninstall-info-am uninstall-info-recursive uninstall-recursive
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive 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 installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ 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.
diff --git a/contrib/ntp/include/adjtime.h b/contrib/ntp/include/adjtime.h
index b6e2a3e..74d91eb 100644
--- a/contrib/ntp/include/adjtime.h
+++ b/contrib/ntp/include/adjtime.h
@@ -39,10 +39,6 @@
#include "ntp_types.h"
-#ifdef __QNXNTO__
-int adjtime( const struct timeval * oldtime, struct timeval * newtime );
-#else /* not __QNXNTO__ */
-
#define KEY 659847L
typedef union {
@@ -65,5 +61,3 @@ typedef union {
*/
#define DELTA1 0
#define DELTA2 1
-
-#endif /* not __QNXNTO__ */
diff --git a/contrib/ntp/include/ascii.h b/contrib/ntp/include/ascii.h
index c679362..a789091 100644
--- a/contrib/ntp/include/ascii.h
+++ b/contrib/ntp/include/ascii.h
@@ -1,9 +1,36 @@
/*
- * /src/NTP/ntp-4/include/ascii.h,v 4.1 1998/07/11 10:05:22 kardel RELEASE_19990228_A
+ * /src/NTP/ntp4-dev/include/ascii.h,v 4.4 2005/04/16 17:32:10 kardel RELEASE_20050508_A
+ *
+ * ascii.h,v 4.4 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* $Created: Sun Jul 20 11:42:53 1997 $
*
- * Copyright (C) 1997 by Frank Kardel
+ * Copyright (c) 1997-2005 by Frank Kardel <kardel <AT> ntp.org>
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#ifndef ASCII_H
#define ASCII_H
@@ -48,7 +75,15 @@
#endif
/*
+ * History:
+ *
* ascii.h,v
+ * Revision 4.4 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.3 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.1 1998/07/11 10:05:22 kardel
* Release 4.0.73d reconcilation
*
diff --git a/contrib/ntp/include/autogen-version.def b/contrib/ntp/include/autogen-version.def
new file mode 100644
index 0000000..8943983
--- /dev/null
+++ b/contrib/ntp/include/autogen-version.def
@@ -0,0 +1,2 @@
+#assert (version-compare >= autogen-version "5.9.1")
+guard-option-names;
diff --git a/contrib/ntp/include/binio.h b/contrib/ntp/include/binio.h
index 49feee9..56e671f 100644
--- a/contrib/ntp/include/binio.h
+++ b/contrib/ntp/include/binio.h
@@ -1,9 +1,36 @@
/*
- * /src/NTP/ntp-4/include/binio.h,v 4.2 1998/06/28 16:52:15 kardel RELEASE_19990228_A
+ * /src/NTP/ntp4-dev/include/binio.h,v 4.5 2005/04/16 17:32:10 kardel RELEASE_20050508_A
+ *
+ * binio.h,v 4.5 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* $Created: Sun Jul 20 13:03:05 1997 $
*
- * Copyright (C) 1997-1998 by Frank Kardel
+ * Copyright (c) 1997-2005 by Frank Kardel <kardel <AT> ntp.org>
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#ifndef BINIO_H
#define BINIO_H
@@ -22,7 +49,15 @@ void put_msb_long P((unsigned char **, long));
#endif
/*
+ * History:
+ *
* binio.h,v
+ * Revision 4.5 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.4 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.2 1998/06/28 16:52:15 kardel
* added binio MSB prototypes for {get,put}_msb_{short,long}
*
diff --git a/contrib/ntp/include/copyright.def b/contrib/ntp/include/copyright.def
new file mode 100644
index 0000000..f86034b
--- /dev/null
+++ b/contrib/ntp/include/copyright.def
@@ -0,0 +1,18 @@
+/* -*- Mode: Text -*- */
+
+copyright = {
+ date = "1970-2008";
+ owner = "David L. Mills and/or others";
+ eaddr = "http://bugs.ntp.isc.org, bugs@ntp.org";
+ type = note;
+ text = "see html/copyright.html";
+};
+
+long-opts;
+config-header = config.h;
+environrc;
+
+version = `
+eval VERSION=\`sed -e 's/.*,\\[//' -e 's/\\].*//' < ../version.m4\`
+[ -z "${VERSION}" ] && echo "Cannot determine VERSION" && kill -TERM $AG_pid
+echo $VERSION`;
diff --git a/contrib/ntp/include/debug-opt.def b/contrib/ntp/include/debug-opt.def
new file mode 100644
index 0000000..2c3da2a
--- /dev/null
+++ b/contrib/ntp/include/debug-opt.def
@@ -0,0 +1,34 @@
+
+include = <<- _EOF_
+ #ifdef __windows
+ extern int atoi(const char*);
+ #else
+ # include <stdlib.h>
+ #endif
+ _EOF_;
+
+flag = {
+ name = debug-level;
+ value = d;
+ max = NOLIMIT;
+ ifdef = DEBUG;
+ nopreset;
+ descrip = "Increase output debug message level";
+ doc = <<- _EndOfDoc_
+ Increase the debugging message output level.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = set-debug-level;
+ value = D;
+ max = NOLIMIT;
+ ifdef = DEBUG;
+ descrip = "Set the output debug message level";
+ arg-type = string;
+ flag-code = 'DESC(DEBUG_LEVEL).optOccCt = atoi( pOptDesc->pzLastArg );';
+ doc = <<- _EndOfDoc_
+ Set the output debugging level. Can be supplied multiple times,
+ but each overrides the previous value(s).
+ _EndOfDoc_;
+};
diff --git a/contrib/ntp/include/homerc.def b/contrib/ntp/include/homerc.def
new file mode 100644
index 0000000..18b4dcb
--- /dev/null
+++ b/contrib/ntp/include/homerc.def
@@ -0,0 +1,9 @@
+/* -*- Mode: Text -*- */
+
+#ifndef __windows__
+rcfile = ".ntprc";
+#else
+rcfile = "ntp.ini";
+#endif
+
+homerc = $HOME, ".";
diff --git a/contrib/ntp/include/ieee754io.h b/contrib/ntp/include/ieee754io.h
index f691acc..6906731 100644
--- a/contrib/ntp/include/ieee754io.h
+++ b/contrib/ntp/include/ieee754io.h
@@ -1,9 +1,36 @@
/*
- * /src/NTP/ntp-4/include/ieee754io.h,v 4.0 1998/04/10 19:50:40 kardel RELEASE_19990228_A
+ * /src/NTP/ntp4-dev/include/ieee754io.h,v 4.3 2005/04/16 17:32:10 kardel RELEASE_20050508_A
+ *
+ * ieee754io.h,v 4.3 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* $Created: Sun Jul 13 12:22:11 1997 $
*
- * Copyright (C) 1997 by Frank Kardel
+ * Copyright (c) 1997-2005 by Frank Kardel <kardel <AT> ntp.org>
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#ifndef IEEE754IO_H
#define IEEE754IO_H
@@ -30,7 +57,15 @@ int put_ieee754 P((unsigned char **bufpp, int size, l_fp *lfpp, offsets_t offset
#endif
/*
+ * History:
+ *
* ieee754io.h,v
+ * Revision 4.3 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.2 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.0 1998/04/10 19:50:40 kardel
* Start 4.0 release version numbering
*
diff --git a/contrib/ntp/include/isc/Makefile.am b/contrib/ntp/include/isc/Makefile.am
index a5b253c..3d8c2a4 100644
--- a/contrib/ntp/include/isc/Makefile.am
+++ b/contrib/ntp/include/isc/Makefile.am
@@ -7,6 +7,7 @@ noinst_HEADERS = \
app.h \
assertions.h \
boolean.h \
+ buffer.h \
error.h \
formatcheck.h \
int.h \
@@ -22,11 +23,13 @@ noinst_HEADERS = \
mutex.h \
net.h \
netaddr.h \
+ netscope.h \
offset.h \
once.h \
platform.h \
print.h \
result.h \
+ region.h \
sockaddr.h \
strerror.h \
string.h \
diff --git a/contrib/ntp/include/isc/Makefile.in b/contrib/ntp/include/isc/Makefile.in
index 3270f4a..26ea36f 100644
--- a/contrib/ntp/include/isc/Makefile.in
+++ b/contrib/ntp/include/isc/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -21,7 +21,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ../..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +36,37 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+subdir = 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/hs_ulong_const.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 = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +74,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +90,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +145,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +180,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,21 +188,17 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
ETAGS_ARGS = $(srcdir)/Makefile.am
-
#EXTRA_DIST = TAGS
noinst_HEADERS = \
app.h \
assertions.h \
boolean.h \
+ buffer.h \
error.h \
formatcheck.h \
int.h \
@@ -176,44 +214,62 @@ noinst_HEADERS = \
mutex.h \
net.h \
netaddr.h \
+ netscope.h \
offset.h \
once.h \
platform.h \
print.h \
result.h \
+ region.h \
sockaddr.h \
strerror.h \
string.h \
types.h \
util.h
-subdir = include/isc
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-HEADERS = $(noinst_HEADERS)
-
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.in Makefile.am
all: all-am
.SUFFIXES:
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(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 include/isc/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu include/isc/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+ $(AUTOMAKE) --foreign 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:
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -222,6 +278,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -233,10 +290,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -259,10 +317,6 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ../..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -276,7 +330,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -294,7 +348,6 @@ distdir: $(DISTFILES)
check-am: all-am
check: check-am
all-am: Makefile $(HEADERS)
-
installdirs:
install: install-am
install-exec: install-exec-am
@@ -307,7 +360,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -315,24 +368,26 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -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 mostlyclean-am
+clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
-
-distclean-am: clean-am distclean-generic distclean-tags
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
@@ -349,12 +404,11 @@ 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-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
@@ -366,14 +420,16 @@ ps-am:
uninstall-am: uninstall-info-am
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic ctags \
- distclean distclean-generic distclean-tags distdir dvi dvi-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 pdf pdf-am ps ps-am tags \
- uninstall 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.
diff --git a/contrib/ntp/include/isc/buffer.h b/contrib/ntp/include/isc/buffer.h
new file mode 100644
index 0000000..47c8f0c
--- /dev/null
+++ b/contrib/ntp/include/isc/buffer.h
@@ -0,0 +1,800 @@
+/*
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1998-2002 Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* $Id: buffer.h,v 1.39.12.2 2004/03/08 09:04:51 marka Exp $ */
+
+#ifndef ISC_BUFFER_H
+#define ISC_BUFFER_H 1
+
+/*****
+ ***** Module Info
+ *****/
+
+/*
+ * Buffers
+ *
+ * A buffer is a region of memory, together with a set of related subregions.
+ * Buffers are used for parsing and I/O operations.
+ *
+ * The 'used region' and the 'available' region are disjoint, and their
+ * union is the buffer's region. The used region extends from the beginning
+ * of the buffer region to the last used byte. The available region
+ * extends from one byte greater than the last used byte to the end of the
+ * buffer's region. The size of the used region can be changed using various
+ * buffer commands. Initially, the used region is empty.
+ *
+ * The used region is further subdivided into two disjoint regions: the
+ * 'consumed region' and the 'remaining region'. The union of these two
+ * regions is the used region. The consumed region extends from the beginning
+ * of the used region to the byte before the 'current' offset (if any). The
+ * 'remaining' region the current pointer to the end of the used
+ * region. The size of the consumed region can be changed using various
+ * buffer commands. Initially, the consumed region is empty.
+ *
+ * The 'active region' is an (optional) subregion of the remaining region.
+ * It extends from the current offset to an offset in the remaining region
+ * that is selected with isc_buffer_setactive(). Initially, the active region
+ * is empty. If the current offset advances beyond the chosen offset, the
+ * active region will also be empty.
+ *
+ * /------------entire length---------------\
+ * /----- used region -----\/-- available --\
+ * +----------------------------------------+
+ * | consumed | remaining | |
+ * +----------------------------------------+
+ * a b c d e
+ *
+ * a == base of buffer.
+ * b == current pointer. Can be anywhere between a and d.
+ * c == active pointer. Meaningful between b and d.
+ * d == used pointer.
+ * e == length of buffer.
+ *
+ * a-e == entire length of buffer.
+ * a-d == used region.
+ * a-b == consumed region.
+ * b-d == remaining region.
+ * b-c == optional active region.
+ *
+ * The following invariants are maintained by all routines:
+ *
+ * length > 0
+ *
+ * base is a valid pointer to length bytes of memory
+ *
+ * 0 <= used <= length
+ *
+ * 0 <= current <= used
+ *
+ * 0 <= active <= used
+ * (although active < current implies empty active region)
+ *
+ * MP:
+ * Buffers have no synchronization. Clients must ensure exclusive
+ * access.
+ *
+ * Reliability:
+ * No anticipated impact.
+ *
+ * Resources:
+ * Memory: 1 pointer + 6 unsigned integers per buffer.
+ *
+ * Security:
+ * No anticipated impact.
+ *
+ * Standards:
+ * None.
+ */
+
+/***
+ *** Imports
+ ***/
+
+#include <isc/lang.h>
+#include <isc/magic.h>
+#include <isc/types.h>
+
+/*
+ * To make many functions be inline macros (via #define) define this.
+ * If it is undefined, a function will be used.
+ */
+#define ISC_BUFFER_USEINLINE
+
+ISC_LANG_BEGINDECLS
+
+/***
+ *** Magic numbers
+ ***/
+#define ISC_BUFFER_MAGIC 0x42756621U /* Buf!. */
+#define ISC_BUFFER_VALID(b) ISC_MAGIC_VALID(b, ISC_BUFFER_MAGIC)
+
+/*
+ * The following macros MUST be used only on valid buffers. It is the
+ * caller's responsibility to ensure this by using the ISC_BUFFER_VALID
+ * check above, or by calling another isc_buffer_*() function (rather than
+ * another macro.)
+ */
+
+/*
+ * Fundamental buffer elements. (A through E in the introductory comment.)
+ */
+#define isc_buffer_base(b) ((void *)(b)->base) /*a*/
+#define isc_buffer_current(b) \
+ ((void *)((unsigned char *)(b)->base + (b)->current)) /*b*/
+#define isc_buffer_active(b) \
+ ((void *)((unsigned char *)(b)->base + (b)->active)) /*c*/
+#define isc_buffer_used(b) \
+ ((void *)((unsigned char *)(b)->base + (b)->used)) /*d*/
+#define isc_buffer_length(b) ((b)->length) /*e*/
+
+/*
+ * Derived lengths. (Described in the introductory comment.)
+ */
+#define isc_buffer_usedlength(b) ((b)->used) /* d-a */
+#define isc_buffer_consumedlength(b) ((b)->current) /* b-a */
+#define isc_buffer_remaininglength(b) ((b)->used - (b)->current) /* d-b */
+#define isc_buffer_activelength(b) ((b)->active - (b)->current) /* c-b */
+#define isc_buffer_availablelength(b) ((b)->length - (b)->used) /* e-d */
+
+/*
+ * Note that the buffer structure is public. This is principally so buffer
+ * operations can be implemented using macros. Applications are strongly
+ * discouraged from directly manipulating the structure.
+ */
+
+struct isc_buffer {
+ unsigned int magic;
+ void *base;
+ /* The following integers are byte offsets from 'base'. */
+ unsigned int length;
+ unsigned int used;
+ unsigned int current;
+ unsigned int active;
+ /* linkable */
+ ISC_LINK(isc_buffer_t) link;
+ /* private internal elements */
+ isc_mem_t *mctx;
+};
+
+/***
+ *** Functions
+ ***/
+
+isc_result_t
+isc_buffer_allocate(isc_mem_t *mctx, isc_buffer_t **dynbuffer,
+ unsigned int length);
+/*
+ * Allocate a dynamic linkable buffer which has "length" bytes in the
+ * data region.
+ *
+ * Requires:
+ * "mctx" is valid.
+ *
+ * "dynbuffer" is non-NULL, and "*dynbuffer" is NULL.
+ *
+ * Returns:
+ * ISC_R_SUCCESS - success
+ * ISC_R_NOMEMORY - no memory available
+ *
+ * Note:
+ * Changing the buffer's length field is not permitted.
+ */
+
+void
+isc_buffer_free(isc_buffer_t **dynbuffer);
+/*
+ * Release resources allocated for a dynamic buffer.
+ *
+ * Requires:
+ * "dynbuffer" is not NULL.
+ *
+ * "*dynbuffer" is a valid dynamic buffer.
+ *
+ * Ensures:
+ * "*dynbuffer" will be NULL on return, and all memory associated with
+ * the dynamic buffer is returned to the memory context used in
+ * isc_buffer_allocate().
+ */
+
+void
+isc__buffer_init(isc_buffer_t *b, const void *base, unsigned int length);
+/*
+ * Make 'b' refer to the 'length'-byte region starting at base.
+ *
+ * Requires:
+ *
+ * 'length' > 0
+ *
+ * 'base' is a pointer to a sequence of 'length' bytes.
+ *
+ */
+
+void
+isc__buffer_invalidate(isc_buffer_t *b);
+/*
+ * Make 'b' an invalid buffer.
+ *
+ * Requires:
+ * 'b' is a valid buffer.
+ *
+ * Ensures:
+ * If assertion checking is enabled, future attempts to use 'b' without
+ * calling isc_buffer_init() on it will cause an assertion failure.
+ */
+
+void
+isc__buffer_region(isc_buffer_t *b, isc_region_t *r);
+/*
+ * Make 'r' refer to the region of 'b'.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer.
+ *
+ * 'r' points to a region structure.
+ */
+
+void
+isc__buffer_usedregion(isc_buffer_t *b, isc_region_t *r);
+/*
+ * Make 'r' refer to the used region of 'b'.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer.
+ *
+ * 'r' points to a region structure.
+ */
+
+void
+isc__buffer_availableregion(isc_buffer_t *b, isc_region_t *r);
+/*
+ * Make 'r' refer to the available region of 'b'.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer.
+ *
+ * 'r' points to a region structure.
+ */
+
+void
+isc__buffer_add(isc_buffer_t *b, unsigned int n);
+/*
+ * Increase the 'used' region of 'b' by 'n' bytes.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer
+ *
+ * used + n <= length
+ *
+ */
+
+void
+isc__buffer_subtract(isc_buffer_t *b, unsigned int n);
+/*
+ * Decrease the 'used' region of 'b' by 'n' bytes.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer
+ *
+ * used >= n
+ *
+ */
+
+void
+isc__buffer_clear(isc_buffer_t *b);
+/*
+ * Make the used region empty.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer
+ *
+ * Ensures:
+ *
+ * used = 0
+ *
+ */
+
+void
+isc__buffer_consumedregion(isc_buffer_t *b, isc_region_t *r);
+/*
+ * Make 'r' refer to the consumed region of 'b'.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer.
+ *
+ * 'r' points to a region structure.
+ */
+
+void
+isc__buffer_remainingregion(isc_buffer_t *b, isc_region_t *r);
+/*
+ * Make 'r' refer to the remaining region of 'b'.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer.
+ *
+ * 'r' points to a region structure.
+ */
+
+void
+isc__buffer_activeregion(isc_buffer_t *b, isc_region_t *r);
+/*
+ * Make 'r' refer to the active region of 'b'.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer.
+ *
+ * 'r' points to a region structure.
+ */
+
+void
+isc__buffer_setactive(isc_buffer_t *b, unsigned int n);
+/*
+ * Sets the end of the active region 'n' bytes after current.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer.
+ *
+ * current + n <= used
+ */
+
+void
+isc__buffer_first(isc_buffer_t *b);
+/*
+ * Make the consumed region empty.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer
+ *
+ * Ensures:
+ *
+ * current == 0
+ *
+ */
+
+void
+isc__buffer_forward(isc_buffer_t *b, unsigned int n);
+/*
+ * Increase the 'consumed' region of 'b' by 'n' bytes.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer
+ *
+ * current + n <= used
+ *
+ */
+
+void
+isc__buffer_back(isc_buffer_t *b, unsigned int n);
+/*
+ * Decrease the 'consumed' region of 'b' by 'n' bytes.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer
+ *
+ * n <= current
+ *
+ */
+
+void
+isc_buffer_compact(isc_buffer_t *b);
+/*
+ * Compact the used region by moving the remaining region so it occurs
+ * at the start of the buffer. The used region is shrunk by the size of
+ * the consumed region, and the consumed region is then made empty.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer
+ *
+ * Ensures:
+ *
+ * current == 0
+ *
+ * The size of the used region is now equal to the size of the remaining
+ * region (as it was before the call). The contents of the used region
+ * are those of the remaining region (as it was before the call).
+ */
+
+isc_uint8_t
+isc_buffer_getuint8(isc_buffer_t *b);
+/*
+ * Read an unsigned 8-bit integer from 'b' and return it.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer.
+ *
+ * The length of the available region of 'b' is at least 1.
+ *
+ * Ensures:
+ *
+ * The current pointer in 'b' is advanced by 1.
+ *
+ * Returns:
+ *
+ * A 8-bit unsigned integer.
+ */
+
+void
+isc__buffer_putuint8(isc_buffer_t *b, isc_uint8_t val);
+/*
+ * Store an unsigned 8-bit integer from 'val' into 'b'.
+ *
+ * Requires:
+ * 'b' is a valid buffer.
+ *
+ * The length of the unused region of 'b' is at least 1.
+ *
+ * Ensures:
+ * The used pointer in 'b' is advanced by 1.
+ */
+
+isc_uint16_t
+isc_buffer_getuint16(isc_buffer_t *b);
+/*
+ * Read an unsigned 16-bit integer in network byte order from 'b', convert
+ * it to host byte order, and return it.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer.
+ *
+ * The length of the available region of 'b' is at least 2.
+ *
+ * Ensures:
+ *
+ * The current pointer in 'b' is advanced by 2.
+ *
+ * Returns:
+ *
+ * A 16-bit unsigned integer.
+ */
+
+void
+isc__buffer_putuint16(isc_buffer_t *b, isc_uint16_t val);
+/*
+ * Store an unsigned 16-bit integer in host byte order from 'val'
+ * into 'b' in network byte order.
+ *
+ * Requires:
+ * 'b' is a valid buffer.
+ *
+ * The length of the unused region of 'b' is at least 2.
+ *
+ * Ensures:
+ * The used pointer in 'b' is advanced by 2.
+ */
+
+isc_uint32_t
+isc_buffer_getuint32(isc_buffer_t *b);
+/*
+ * Read an unsigned 32-bit integer in network byte order from 'b', convert
+ * it to host byte order, and return it.
+ *
+ * Requires:
+ *
+ * 'b' is a valid buffer.
+ *
+ * The length of the available region of 'b' is at least 4.
+ *
+ * Ensures:
+ *
+ * The current pointer in 'b' is advanced by 4.
+ *
+ * Returns:
+ *
+ * A 32-bit unsigned integer.
+ */
+
+void
+isc__buffer_putuint32(isc_buffer_t *b, isc_uint32_t val);
+/*
+ * Store an unsigned 32-bit integer in host byte order from 'val'
+ * into 'b' in network byte order.
+ *
+ * Requires:
+ * 'b' is a valid buffer.
+ *
+ * The length of the unused region of 'b' is at least 4.
+ *
+ * Ensures:
+ * The used pointer in 'b' is advanced by 4.
+ */
+
+void
+isc__buffer_putmem(isc_buffer_t *b, const unsigned char *base,
+ unsigned int length);
+/*
+ * Copy 'length' bytes of memory at 'base' into 'b'.
+ *
+ * Requires:
+ * 'b' is a valid buffer.
+ *
+ * 'base' points to 'length' bytes of valid memory.
+ *
+ */
+
+void
+isc__buffer_putstr(isc_buffer_t *b, const char *source);
+/*
+ * Copy 'source' into 'b', not including terminating NUL.
+ *
+ * Requires:
+ * 'b' is a valid buffer.
+ *
+ * 'source' to be a valid NULL terminated string.
+ *
+ * strlen(source) <= isc_buffer_available(b)
+ */
+
+isc_result_t
+isc_buffer_copyregion(isc_buffer_t *b, const isc_region_t *r);
+/*
+ * Copy the contents of 'r' into 'b'.
+ *
+ * Requires:
+ * 'b' is a valid buffer.
+ *
+ * 'r' is a valid region.
+ *
+ * Returns:
+ *
+ * ISC_R_SUCCESS
+ * ISC_R_NOSPACE The available region of 'b' is not
+ * big enough.
+ */
+
+ISC_LANG_ENDDECLS
+
+/*
+ * Inline macro versions of the functions. These should never be called
+ * directly by an application, but will be used by the functions within
+ * buffer.c. The callers should always use "isc_buffer_*()" names, never
+ * ones beginning with "isc__"
+ */
+
+/*
+ * XXXDCL Something more could be done with initializing buffers that
+ * point to const data. For example, a new function, isc_buffer_initconst,
+ * could be used, and a new boolean flag in the buffer structure could
+ * indicate whether the buffer was initialized with that function.
+ * (isc_bufer_init itself would be reprototyped to *not* have its "base"
+ * parameter be const.) Then if the boolean were true, the isc_buffer_put*
+ * functions could assert a contractual requirement for a non-const buffer.
+ * One drawback is that the isc_buffer_* functions (macros) that return
+ * pointers would still need to return non-const pointers to avoid compiler
+ * warnings, so it would be up to code that uses them to have to deal
+ * with the possibility that the buffer was initialized as const --
+ * a problem that they *already* have to deal with but have absolutely
+ * no ability to. With a new isc_buffer_isconst() function returning
+ * true/false, they could at least assert a contractual requirement for
+ * non-const buffers when needed.
+ */
+#define ISC__BUFFER_INIT(_b, _base, _length) \
+ do { \
+ union { \
+ const void * konst; \
+ void * var; \
+ } _u; \
+ _u.konst = (_base); \
+ (_b)->base = _u.var; \
+ (_b)->length = (_length); \
+ (_b)->used = 0; \
+ (_b)->current = 0; \
+ (_b)->active = 0; \
+ (_b)->mctx = NULL; \
+ ISC_LINK_INIT(_b, link); \
+ (_b)->magic = ISC_BUFFER_MAGIC; \
+ } while (0)
+
+#define ISC__BUFFER_INVALIDATE(_b) \
+ do { \
+ (_b)->magic = 0; \
+ (_b)->base = NULL; \
+ (_b)->length = 0; \
+ (_b)->used = 0; \
+ (_b)->current = 0; \
+ (_b)->active = 0; \
+ } while (0)
+
+#define ISC__BUFFER_REGION(_b, _r) \
+ do { \
+ (_r)->base = (_b)->base; \
+ (_r)->length = (_b)->length; \
+ } while (0)
+
+#define ISC__BUFFER_USEDREGION(_b, _r) \
+ do { \
+ (_r)->base = (_b)->base; \
+ (_r)->length = (_b)->used; \
+ } while (0)
+
+#define ISC__BUFFER_AVAILABLEREGION(_b, _r) \
+ do { \
+ (_r)->base = isc_buffer_used(_b); \
+ (_r)->length = isc_buffer_availablelength(_b); \
+ } while (0)
+
+#define ISC__BUFFER_ADD(_b, _n) \
+ do { \
+ (_b)->used += (_n); \
+ } while (0)
+
+#define ISC__BUFFER_SUBTRACT(_b, _n) \
+ do { \
+ (_b)->used -= (_n); \
+ if ((_b)->current > (_b)->used) \
+ (_b)->current = (_b)->used; \
+ if ((_b)->active > (_b)->used) \
+ (_b)->active = (_b)->used; \
+ } while (0)
+
+#define ISC__BUFFER_CLEAR(_b) \
+ do { \
+ (_b)->used = 0; \
+ (_b)->current = 0; \
+ (_b)->active = 0; \
+ } while (0)
+
+#define ISC__BUFFER_CONSUMEDREGION(_b, _r) \
+ do { \
+ (_r)->base = (_b)->base; \
+ (_r)->length = (_b)->current; \
+ } while (0)
+
+#define ISC__BUFFER_REMAININGREGION(_b, _r) \
+ do { \
+ (_r)->base = isc_buffer_current(_b); \
+ (_r)->length = isc_buffer_remaininglength(_b); \
+ } while (0)
+
+#define ISC__BUFFER_ACTIVEREGION(_b, _r) \
+ do { \
+ if ((_b)->current < (_b)->active) { \
+ (_r)->base = isc_buffer_current(_b); \
+ (_r)->length = isc_buffer_activelength(_b); \
+ } else { \
+ (_r)->base = NULL; \
+ (_r)->length = 0; \
+ } \
+ } while (0)
+
+#define ISC__BUFFER_SETACTIVE(_b, _n) \
+ do { \
+ (_b)->active = (_b)->current + (_n); \
+ } while (0)
+
+#define ISC__BUFFER_FIRST(_b) \
+ do { \
+ (_b)->current = 0; \
+ } while (0)
+
+#define ISC__BUFFER_FORWARD(_b, _n) \
+ do { \
+ (_b)->current += (_n); \
+ } while (0)
+
+#define ISC__BUFFER_BACK(_b, _n) \
+ do { \
+ (_b)->current -= (_n); \
+ } while (0)
+
+#define ISC__BUFFER_PUTMEM(_b, _base, _length) \
+ do { \
+ memcpy(isc_buffer_used(_b), (_base), (_length)); \
+ (_b)->used += (_length); \
+ } while (0)
+
+#define ISC__BUFFER_PUTSTR(_b, _source) \
+ do { \
+ unsigned int _length; \
+ unsigned char *_cp; \
+ _length = strlen(_source); \
+ _cp = isc_buffer_used(_b); \
+ memcpy(_cp, (_source), _length); \
+ (_b)->used += (_length); \
+ } while (0)
+
+#define ISC__BUFFER_PUTUINT8(_b, _val) \
+ do { \
+ unsigned char *_cp; \
+ isc_uint8_t _val2 = (_val); \
+ _cp = isc_buffer_used(_b); \
+ (_b)->used++; \
+ _cp[0] = _val2 & 0x00ff; \
+ } while (0)
+
+#define ISC__BUFFER_PUTUINT16(_b, _val) \
+ do { \
+ unsigned char *_cp; \
+ isc_uint16_t _val2 = (_val); \
+ _cp = isc_buffer_used(_b); \
+ (_b)->used += 2; \
+ _cp[0] = (unsigned char)((_val2 & 0xff00U) >> 8); \
+ _cp[1] = (unsigned char)(_val2 & 0x00ffU); \
+ } while (0)
+
+#define ISC__BUFFER_PUTUINT32(_b, _val) \
+ do { \
+ unsigned char *_cp; \
+ isc_uint32_t _val2 = (_val); \
+ _cp = isc_buffer_used(_b); \
+ (_b)->used += 4; \
+ _cp[0] = (unsigned char)((_val2 & 0xff000000) >> 24); \
+ _cp[1] = (unsigned char)((_val2 & 0x00ff0000) >> 16); \
+ _cp[2] = (unsigned char)((_val2 & 0x0000ff00) >> 8); \
+ _cp[3] = (unsigned char)((_val2 & 0x000000ff)); \
+ } while (0)
+
+#if defined(ISC_BUFFER_USEINLINE)
+#define isc_buffer_init ISC__BUFFER_INIT
+#define isc_buffer_invalidate ISC__BUFFER_INVALIDATE
+#define isc_buffer_region ISC__BUFFER_REGION
+#define isc_buffer_usedregion ISC__BUFFER_USEDREGION
+#define isc_buffer_availableregion ISC__BUFFER_AVAILABLEREGION
+#define isc_buffer_add ISC__BUFFER_ADD
+#define isc_buffer_subtract ISC__BUFFER_SUBTRACT
+#define isc_buffer_clear ISC__BUFFER_CLEAR
+#define isc_buffer_consumedregion ISC__BUFFER_CONSUMEDREGION
+#define isc_buffer_remainingregion ISC__BUFFER_REMAININGREGION
+#define isc_buffer_activeregion ISC__BUFFER_ACTIVEREGION
+#define isc_buffer_setactive ISC__BUFFER_SETACTIVE
+#define isc_buffer_first ISC__BUFFER_FIRST
+#define isc_buffer_forward ISC__BUFFER_FORWARD
+#define isc_buffer_back ISC__BUFFER_BACK
+#define isc_buffer_putmem ISC__BUFFER_PUTMEM
+#define isc_buffer_putstr ISC__BUFFER_PUTSTR
+#define isc_buffer_putuint8 ISC__BUFFER_PUTUINT8
+#define isc_buffer_putuint16 ISC__BUFFER_PUTUINT16
+#define isc_buffer_putuint32 ISC__BUFFER_PUTUINT32
+#else
+#define isc_buffer_init isc__buffer_init
+#define isc_buffer_invalidate isc__buffer_invalidate
+#define isc_buffer_region isc__buffer_region
+#define isc_buffer_usedregion isc__buffer_usedregion
+#define isc_buffer_availableregion isc__buffer_availableregion
+#define isc_buffer_add isc__buffer_add
+#define isc_buffer_subtract isc__buffer_subtract
+#define isc_buffer_clear isc__buffer_clear
+#define isc_buffer_consumedregion isc__buffer_consumedregion
+#define isc_buffer_remainingregion isc__buffer_remainingregion
+#define isc_buffer_activeregion isc__buffer_activeregion
+#define isc_buffer_setactive isc__buffer_setactive
+#define isc_buffer_first isc__buffer_first
+#define isc_buffer_forward isc__buffer_forward
+#define isc_buffer_back isc__buffer_back
+#define isc_buffer_putmem isc__buffer_putmem
+#define isc_buffer_putstr isc__buffer_putstr
+#define isc_buffer_putuint8 isc__buffer_putuint8
+#define isc_buffer_putuint16 isc__buffer_putuint16
+#define isc_buffer_putuint32 isc__buffer_putuint32
+#endif
+
+#endif /* ISC_BUFFER_H */
diff --git a/contrib/ntp/include/isc/interfaceiter.h b/contrib/ntp/include/isc/interfaceiter.h
index fbd1b82..f2d11ba 100644
--- a/contrib/ntp/include/isc/interfaceiter.h
+++ b/contrib/ntp/include/isc/interfaceiter.h
@@ -59,6 +59,8 @@ struct isc_interface {
isc_netaddr_t dstaddress; /* Destination address
(point-to-point only). */
isc_uint32_t flags; /* Flags; see below. */
+ unsigned int ifindex; /* Interface Index */
+ unsigned int scopeid; /* Scope id for Multicasting */
};
/* Interface flags. */
diff --git a/contrib/ntp/include/isc/ipv6.h b/contrib/ntp/include/isc/ipv6.h
index 18893b7..007de7c 100644
--- a/contrib/ntp/include/isc/ipv6.h
+++ b/contrib/ntp/include/isc/ipv6.h
@@ -1,21 +1,21 @@
/*
- * Copyright (C) 1999-2001 Internet Software Consortium.
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1999-2002 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: ipv6.h,v 1.19 2002/04/03 06:38:33 marka Exp $ */
+/* $Id: ipv6.h,v 1.17.12.4 2004/03/09 05:21:09 marka Exp $ */
#ifndef ISC_IPV6_H
#define ISC_IPV6_H 1
@@ -59,7 +59,7 @@
/*
* We probably don't need this on NTP
*/
-#ifdef ISC_ONLY_IPV6
+#ifdef ISC_ONLY_IPV6
/***
*** Types.
***/
@@ -76,8 +76,8 @@ struct in6_addr {
#define s6_addr16 _S6_un._S6_u16
#define s6_addr32 _S6_un._S6_u32
-#define IN6ADDR_ANY_INIT {{{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }}}
-#define IN6ADDR_LOOPBACK_INIT {{{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }}}
+#define IN6ADDR_ANY_INIT {{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }}
+#define IN6ADDR_LOOPBACK_INIT {{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }}
LIBISC_EXTERNAL_DATA extern const struct in6_addr in6addr_any;
LIBISC_EXTERNAL_DATA extern const struct in6_addr in6addr_loopback;
@@ -102,12 +102,13 @@ struct sockaddr_in6 {
/*
* Unspecified
*/
+#ifndef IN6_IS_ADDR_UNSPECIFIED
#define IN6_IS_ADDR_UNSPECIFIED(a) \
(((a)->s6_addr32[0] == 0) && \
((a)->s6_addr32[1] == 0) && \
((a)->s6_addr32[2] == 0) && \
((a)->s6_addr32[3] == 0))
-
+#endif
/*
* Loopback
*/
@@ -138,9 +139,10 @@ struct sockaddr_in6 {
/*
* Multicast
*/
+#ifndef IN6_IS_ADDR_MULTICAST
#define IN6_IS_ADDR_MULTICAST(a) \
((a)->s6_addr8[0] == 0xffU)
-
+#endif
/*
* Unicast link / site local.
*/
diff --git a/contrib/ntp/include/isc/msgs.h b/contrib/ntp/include/isc/msgs.h
index b166199..967005b 100644
--- a/contrib/ntp/include/isc/msgs.h
+++ b/contrib/ntp/include/isc/msgs.h
@@ -1,21 +1,21 @@
/*
- * Copyright (C) 2000, 2001 Internet Software Consortium.
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2000-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: msgs.h,v 1.7 2002/05/27 00:40:18 marka Exp $ */
+/* $Id: msgs.h,v 1.5.2.2.8.3 2004/03/06 08:14:44 marka Exp $ */
#ifndef ISC_MSGS_H
#define ISC_MSGS_H 1
@@ -48,6 +48,7 @@
#define ISC_MSGSET_TASK 18
#define ISC_MSGSET_TIMER 19
#define ISC_MSGSET_UTIL 20
+#define ISC_MSGSET_IFITERGETIFADDRS 21
/*
* Message numbers. They are only required to be unique per message set,
@@ -176,6 +177,7 @@
#define ISC_MSG_UTILWAIT 1710 /* "WAIT" */
#define ISC_MSG_WAITED 1711 /* "WAITED" */
+#define ISC_MSG_GETIFADDRS 1801 /* "getting interface addresses: ..." */
#endif /* ISC_MSGS_H */
diff --git a/contrib/ntp/include/isc/net.h b/contrib/ntp/include/isc/net.h
index 25924fe..dae5978 100644
--- a/contrib/ntp/include/isc/net.h
+++ b/contrib/ntp/include/isc/net.h
@@ -1,21 +1,21 @@
/*
- * Copyright (C) 1999-2001 Internet Software Consortium.
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1999-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: net.h,v 1.34 2002/04/03 06:38:38 marka Exp $ */
+/* $Id: net.h,v 1.31.2.2.10.8 2004/04/29 01:31:23 marka Exp $ */
#ifndef ISC_NET_H
#define ISC_NET_H 1
@@ -75,6 +75,8 @@
#include <sys/types.h>
#include <sys/socket.h> /* Contractual promise. */
+#include <net/if.h>
+
#include <netinet/in.h> /* Contractual promise. */
#include <arpa/inet.h> /* Contractual promise. */
#ifdef ISC_PLATFORM_NEEDNETINETIN6H
@@ -230,6 +232,10 @@ typedef isc_uint16_t in_port_t;
(((isc_uint32_t)(i) & ISC__IPADDR(0xf0000000)) \
== ISC__IPADDR(0xe0000000))
+#define ISC_IPADDR_ISEXPERIMENTAL(i) \
+ (((isc_uint32_t)(i) & ISC__IPADDR(0xf0000000)) \
+ == ISC__IPADDR(0xf0000000))
+
/***
*** Functions.
***/
@@ -245,6 +251,7 @@ isc_net_probeipv4(void);
*
* ISC_R_SUCCESS IPv4 is supported.
* ISC_R_NOTFOUND IPv4 is not supported.
+ * ISC_R_DISABLED IPv4 is disabled.
* ISC_R_UNEXPECTED
*/
@@ -257,25 +264,63 @@ isc_net_probeipv6(void);
*
* ISC_R_SUCCESS IPv6 is supported.
* ISC_R_NOTFOUND IPv6 is not supported.
+ * ISC_R_DISABLED IPv6 is disabled.
* ISC_R_UNEXPECTED
*/
+isc_result_t
+isc_net_probe_ipv6only(void);
+/*
+ * Check if the system's kernel supports the IPV6_V6ONLY socket option.
+ *
+ * Returns:
+ *
+ * ISC_R_SUCCESS the option is supported for both TCP and UDP.
+ * ISC_R_NOTFOUND IPv6 itself or the option is not supported.
+ * ISC_R_UNEXPECTED
+ */
+
+isc_result_t
+isc_net_probe_ipv6pktinfo(void);
+/*
+ * Check if the system's kernel supports the IPV6_(RECV)PKTINFO socket option
+ * for UDP sockets.
+ *
+ * Returns:
+ *
+ * ISC_R_SUCCESS the option is supported.
+ * ISC_R_NOTFOUND IPv6 itself or the option is not supported.
+ * ISC_R_UNEXPECTED
+ */
+
+void
+isc_net_disableipv4(void);
+
+void
+isc_net_disableipv6(void);
+
+void
+isc_net_enableipv4(void);
+
+void
+isc_net_enableipv6(void);
+
+#ifdef ISC_PLATFORM_NEEDNTOP
const char *
isc_net_ntop(int af, const void *src, char *dst, size_t size);
-#ifdef ISC_PLATFORM_NEEDNTOP
#define inet_ntop isc_net_ntop
#endif
+#ifdef ISC_PLATFORM_NEEDPTON
int
isc_net_pton(int af, const char *src, void *dst);
-#ifdef ISC_PLATFORM_NEEDPTON
#undef inet_pton
#define inet_pton isc_net_pton
#endif
+#ifdef ISC_PLATFORM_NEEDATON
int
isc_net_aton(const char *cp, struct in_addr *addr);
-#ifdef ISC_PLATFORM_NEEDATON
#define inet_aton isc_net_aton
#endif
diff --git a/contrib/ntp/include/isc/netaddr.h b/contrib/ntp/include/isc/netaddr.h
index 811e8dd..e209a9f 100644
--- a/contrib/ntp/include/isc/netaddr.h
+++ b/contrib/ntp/include/isc/netaddr.h
@@ -1,21 +1,21 @@
/*
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1998-2002 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: netaddr.h,v 1.21 2002/04/03 06:38:35 marka Exp $ */
+/* $Id: netaddr.h,v 1.18.12.7 2004/03/08 09:04:52 marka Exp $ */
#ifndef ISC_NETADDR_H
#define ISC_NETADDR_H 1
@@ -23,9 +23,6 @@
#include <isc/lang.h>
#include <isc/net.h>
#include <isc/types.h>
-#include "ntp_rfc2553.h"
-
-
ISC_LANG_BEGINDECLS
@@ -35,6 +32,7 @@ struct isc_netaddr {
struct in_addr in;
struct in6_addr in6;
} type;
+ isc_uint32_t zone;
};
isc_boolean_t
@@ -98,6 +96,12 @@ void
isc_netaddr_fromin6(isc_netaddr_t *netaddr, const struct in6_addr *ina6);
void
+isc_netaddr_setzone(isc_netaddr_t *netaddr, isc_uint32_t zone);
+
+isc_uint32_t
+isc_netaddr_getzone(const isc_netaddr_t *netaddr);
+
+void
isc_netaddr_any(isc_netaddr_t *netaddr);
/*
* Return the IPv4 wildcard address.
@@ -116,6 +120,12 @@ isc_netaddr_ismulticast(isc_netaddr_t *na);
*/
isc_boolean_t
+isc_netaddr_isexperimental(isc_netaddr_t *na);
+/*
+ * Returns ISC_TRUE if the address is a experimental (CLASS E) address.
+ */
+
+isc_boolean_t
isc_netaddr_islinklocal(isc_netaddr_t *na);
/*
* Returns ISC_TRUE if the address is a link local address.
diff --git a/contrib/ntp/include/isc/netscope.h b/contrib/ntp/include/isc/netscope.h
new file mode 100644
index 0000000..7cc0f18
--- /dev/null
+++ b/contrib/ntp/include/isc/netscope.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2002 Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* $Id: netscope.h,v 1.4.142.5 2004/03/08 09:04:52 marka Exp $ */
+
+#ifndef ISC_NETSCOPE_H
+#define ISC_NETSCOPE_H 1
+
+ISC_LANG_BEGINDECLS
+
+/*
+ * Convert a string of an IPv6 scope zone to zone index. If the conversion
+ * succeeds, 'zoneid' will store the index value.
+ * XXXJT: when a standard interface for this purpose is defined,
+ * we should use it.
+ *
+ * Returns:
+ * ISC_R_SUCCESS: conversion succeeds
+ * ISC_R_FAILURE: conversion fails
+ */
+isc_result_t
+isc_netscope_pton(int af, char *scopename, void *addr, isc_uint32_t *zoneid);
+
+ISC_LANG_ENDDECLS
+
+#endif /* ISC_NETADDR_H */
diff --git a/contrib/ntp/include/isc/region.h b/contrib/ntp/include/isc/region.h
new file mode 100644
index 0000000..5622394
--- /dev/null
+++ b/contrib/ntp/include/isc/region.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1998-2002 Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* $Id: region.h,v 1.16.12.3 2004/03/08 09:04:53 marka Exp $ */
+
+#ifndef ISC_REGION_H
+#define ISC_REGION_H 1
+
+#include <isc/types.h>
+
+struct isc_region {
+ unsigned char * base;
+ unsigned int length;
+};
+
+struct isc_textregion {
+ char * base;
+ unsigned int length;
+};
+
+/* XXXDCL questionable ... bears discussion. we have been putting off
+ * discussing the region api.
+ */
+struct isc_constregion {
+ const void * base;
+ unsigned int length;
+};
+
+struct isc_consttextregion {
+ const char * base;
+ unsigned int length;
+};
+
+/*
+ * The region structure is not opaque, and is usually directly manipulated.
+ * Some macros are defined below for convenience.
+ */
+
+#define isc_region_consume(r,l) \
+ do { \
+ isc_region_t *_r = (r); \
+ unsigned int _l = (l); \
+ INSIST(_r->length >= _l); \
+ _r->base += _l; \
+ _r->length -= _l; \
+ } while (0)
+
+#define isc_textregion_consume(r,l) \
+ do { \
+ isc_textregion_t *_r = (r); \
+ unsigned int _l = (l); \
+ INSIST(_r->length >= _l); \
+ _r->base += _l; \
+ _r->length -= _l; \
+ } while (0)
+
+#define isc_constregion_consume(r,l) \
+ do { \
+ isc_constregion_t *_r = (r); \
+ unsigned int _l = (l); \
+ INSIST(_r->length >= _l); \
+ _r->base += _l; \
+ _r->length -= _l; \
+ } while (0)
+
+int
+isc_region_compare(isc_region_t *r1, isc_region_t *r2);
+/*
+ * Compares the contents of two regions
+ *
+ * Requires:
+ * 'r1' is a valid region
+ * 'r2' is a valid region
+ *
+ * Returns:
+ * < 0 if r1 is lexicographically less than r2
+ * = 0 if r1 is lexicographically identical to r2
+ * > 0 if r1 is lexicographically greater than r2
+ */
+
+#endif /* ISC_REGION_H */
diff --git a/contrib/ntp/include/isc/result.h b/contrib/ntp/include/isc/result.h
index bf6b992..93f7cef 100644
--- a/contrib/ntp/include/isc/result.h
+++ b/contrib/ntp/include/isc/result.h
@@ -1,21 +1,21 @@
/*
- * Copyright (C) 1998-2001 Internet Software Consortium.
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1998-2001, 2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: result.h,v 1.59 2001/11/30 01:02:17 gson Exp $ */
+/* $Id: result.h,v 1.57.2.2.8.5 2004/05/15 03:46:13 jinmei Exp $ */
#ifndef ISC_RESULT_H
#define ISC_RESULT_H 1
@@ -80,11 +80,14 @@
#define ISC_R_CONNECTIONRESET 54 /* connection reset */
#define ISC_R_SOFTQUOTA 55 /* soft quota reached */
#define ISC_R_BADNUMBER 56 /* not a valid number */
+#define ISC_R_DISABLED 57 /* disabled */
+#define ISC_R_MAXSIZE 58 /* max size */
+#define ISC_R_BADADDRESSFORM 59 /* invalid address format */
/*
* Not a result code: the number of results.
*/
-#define ISC_R_NRESULTS 57
+#define ISC_R_NRESULTS 60
ISC_LANG_BEGINDECLS
diff --git a/contrib/ntp/include/isc/sockaddr.h b/contrib/ntp/include/isc/sockaddr.h
index 5257b05..635af38 100644
--- a/contrib/ntp/include/isc/sockaddr.h
+++ b/contrib/ntp/include/isc/sockaddr.h
@@ -174,6 +174,12 @@ isc_sockaddr_ismulticast(isc_sockaddr_t *sa);
*/
isc_boolean_t
+isc_sockaddr_isexperimental(isc_sockaddr_t *sa);
+/*
+ * Returns ISC_TRUE if the address is a experimental (CLASS E) address.
+ */
+
+isc_boolean_t
isc_sockaddr_islinklocal(isc_sockaddr_t *sa);
/*
* Returns ISC_TRUE if the address is a link local addresss.
diff --git a/contrib/ntp/include/l_stdlib.h b/contrib/ntp/include/l_stdlib.h
index 3f242b7..58bbeed 100644
--- a/contrib/ntp/include/l_stdlib.h
+++ b/contrib/ntp/include/l_stdlib.h
@@ -104,10 +104,6 @@ extern int mkstemp P((char *));
extern char *mktemp P((char *));
#endif
-#ifdef DECL_MRAND48_0
-extern long mrand48 P((void));
-#endif
-
#ifdef DECL_NLIST_0
struct nlist;
extern int nlist P((const char *, struct nlist *));
@@ -156,10 +152,6 @@ extern int snprintf P((char *, size_t, const char *, ...));
extern int vsnprintf P((char *, size_t, const char *, va_list));
#endif
-#ifdef DECL_SRAND48_0
-extern void srand48 P((long));
-#endif
-
#ifdef DECL_STDIO_0
#if defined(FILE) || defined(BUFSIZ)
extern int _flsbuf P((int, FILE *));
@@ -276,10 +268,7 @@ extern int fork P((void));
extern int getdtablesize P((void));
extern int qsort (void *, int , int,
int P((*compar)(void *, void *)));
-extern long random P((void));
-extern long mrand48 P((void));
extern int setpgrp P((int, int));
-extern void srandom P((unsigned int));
extern void bcopy P((const char *, char *, int));
#endif
@@ -481,8 +470,6 @@ extern int execve P((char *, char **,char **));
extern int fork P((void));
extern int getdtablesize P((void));
extern int ran P((void));
-extern int rand P((void));
-extern void srand P((unsigned int));
#ifdef _TIME_H_
extern int gettimeofday P((struct timeval *, struct timezone *));
extern int settimeofday P((struct timeval *, struct timezone *));
diff --git a/contrib/ntp/include/mbg_gps166.h b/contrib/ntp/include/mbg_gps166.h
index 7110751..edaae9d 100644
--- a/contrib/ntp/include/mbg_gps166.h
+++ b/contrib/ntp/include/mbg_gps166.h
@@ -1,9 +1,39 @@
/*
- * /src/NTP/ntp-4/include/mbg_gps166.h,v 4.1 1998/06/12 15:07:30 kardel RELEASE_19990228_A
+ * /src/NTP/REPOSITORY/ntp4-dev/include/mbg_gps166.h,v 4.7 2006/06/22 18:41:43 kardel RELEASE_20060622_A
+ *
+ * mbg_gps166.h,v 4.7 2006/06/22 18:41:43 kardel RELEASE_20060622_A
*
* $Created: Sun Jul 20 09:20:50 1997 $
*
- * Copyright (C) 1997, 1998 by Frank Kardel
+ * File GPSSERIO.H Copyright (c) by Meinberg Funkuhren (www.meinberg.de)
+ *
+ * Linkage to PARSE:
+ * Copyright (c) 1997-2005 by Frank Kardel <kardel <AT> ntp.org>
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#ifndef MBG_GPS166_H
#define MBG_GPS166_H
@@ -11,7 +41,7 @@
/***************************************************************************/
/* */
-/* File: GPSSERIO.H 4.1 */
+/* File: GPSSERIO.H 4.1 */
/* */
/* Project: Common C Library */
/* */
@@ -494,8 +524,8 @@ typedef struct {
} IONO;
-void mbg_tm_str P((unsigned char **, TM *));
-void mbg_tgps_str P((unsigned char **, T_GPS *));
+void mbg_tm_str P((char **, TM *, int));
+void mbg_tgps_str P((char **, T_GPS *, int));
void get_mbg_header P((unsigned char **, GPS_MSG_HDR *));
void put_mbg_header P((unsigned char **, GPS_MSG_HDR *));
void get_mbg_sw_rev P((unsigned char **, SW_REV *));
@@ -522,7 +552,21 @@ unsigned long mbg_csum P((unsigned char *, unsigned int));
#endif
/*
+ * History:
+ *
* mbg_gps166.h,v
+ * Revision 4.7 2006/06/22 18:41:43 kardel
+ * clean up signedness (gcc 4)
+ *
+ * Revision 4.6 2005/10/07 22:11:56 kardel
+ * bounded buffer implementation
+ *
+ * Revision 4.5.2.1 2005/09/25 10:23:48 kardel
+ * support bounded buffers
+ *
+ * Revision 4.5 2005/06/25 10:58:45 kardel
+ * add missing log keywords
+ *
* Revision 4.1 1998/06/12 15:07:30 kardel
* fixed prototyping
*
diff --git a/contrib/ntp/include/ntp.h b/contrib/ntp/include/ntp.h
index 1ce302b..dad9de1 100644
--- a/contrib/ntp/include/ntp.h
+++ b/contrib/ntp/include/ntp.h
@@ -9,6 +9,10 @@
#ifdef OPENSSL
#include "ntp_crypto.h"
#endif /* OPENSSL */
+#include <ntp_random.h>
+
+#include <isc/boolean.h>
+#include <isc/list.h>
/*
* Calendar arithmetic - contributed by G. Healton
@@ -99,7 +103,7 @@ typedef char s_char;
/*
* Poll interval parameters
*/
-#define NTP_UNREACH 16 /* poll interval backoff count */
+#define NTP_UNREACH 24 /* poll unreach threshold */
#define NTP_MINPOLL 4 /* log2 min poll interval (16 s) */
#define NTP_MINDPOLL 6 /* log2 default min poll (64 s) */
#define NTP_MAXDPOLL 10 /* log2 default max poll (~17 m) */
@@ -111,7 +115,6 @@ typedef char s_char;
/*
* Clock filter algorithm tuning parameters
*/
-#define MINDISPERSE .01 /* min dispersion */
#define MAXDISPERSE 16. /* max dispersion */
#define NTP_SHIFT 8 /* clock filter stages */
#define NTP_FWEIGHT .5 /* clock filter weight */
@@ -119,28 +122,29 @@ typedef char s_char;
/*
* Selection algorithm tuning parameters
*/
-#define NTP_MINCLOCK 4 /* minimum survivors */
-#define NTP_MAXCLOCK 50 /* maximum candidates */
-#define MAXDISTANCE 1. /* max root distance */
+#define NTP_MINCLOCK 3 /* min survivors */
+#define NTP_MAXCLOCK 10 /* max candidates */
+#define NTP_MAXASSOC 50 /* max associations */
+#define MINDISPERSE .005 /* min dispersion increment */
+#define MAXDISTANCE 1. /* max root distance (select threshold) */
#define CLOCK_SGATE 3. /* popcorn spike gate */
#define HUFFPUFF 900 /* huff-n'-puff sample interval (s) */
-#define HYST .5 /* anti-clockhop hysteresis */
-#define HYST_TC .875 /* anti-clockhop hysteresis decay */
+#define MAXHOP 2 /* anti-clockhop threshold */
#define MAX_TTL 8 /* max ttl mapping vector size */
-#define NTP_MAXEXTEN 1024 /* maximum extension field size */
+#define BEACON 7200 /* manycast beacon interval */
+#define NTP_MAXEXTEN 1024 /* max extension field size */
/*
* Miscellaneous stuff
*/
-#define NTP_MAXKEY 65535 /* maximum authentication key number */
+#define NTP_MAXKEY 65535 /* max authentication key number */
/*
* Limits of things
*/
#define MAXFILENAME 128 /* max length of file name */
#define MAXHOSTNAME 512 /* max length of host/node name */
-#define NTP_MAXSTRLEN 256 /* maximum string length */
-#define MAXINTERFACES 512 /* max number of interfaces */
+#define NTP_MAXSTRLEN 256 /* max string length */
/*
* Operations for jitter calculations (these use doubles).
@@ -169,47 +173,77 @@ typedef char s_char;
*/
struct interface {
SOCKET fd; /* socket this is opened on */
- SOCKET bfd; /* socket for receiving broadcasts */
+ SOCKET bfd; /* socket for receiving broadcasts */
struct sockaddr_storage sin; /* interface address */
- struct sockaddr_storage bcast; /* broadcast address */
- struct sockaddr_storage mask; /* interface mask */
- char name[32]; /* name of interface */
- int flags; /* interface flags */
- int last_ttl; /* last TTL specified */
- u_int addr_refid; /* IPv4 addr or IPv6 hash */
- int num_mcast; /* No. of IP addresses in multicast socket */
- volatile long received; /* number of incoming packets */
- long sent; /* number of outgoing packets */
- long notsent; /* number of send failures */
+ struct sockaddr_storage bcast; /* broadcast address */
+ struct sockaddr_storage mask; /* interface mask */
+ char name[32]; /* name of interface */
+ short family; /* Address family */
+ int flags; /* interface flags */
+ int last_ttl; /* last TTL specified */
+ u_int32 addr_refid; /* IPv4 addr or IPv6 hash */
+ int num_mcast; /* No. of IP addresses in multicast socket */
+ u_long starttime; /* current_time as of creation of interface structure */
+ volatile long received; /* number of incoming packets */
+ long sent; /* number of outgoing packets */
+ long notsent; /* number of send failures */
+ u_int scopeid; /* Scope used for Multicasting */
+ u_int ifindex; /* interface index */
+ u_int ifnum; /* sequential interface instance count */
+ u_char phase; /* phase in update cycle */
+ isc_boolean_t ignore_packets; /* Specify whether the packet should be ignored */
+ ISC_LIST(struct peer) peers; /* list of peers for the interface */
+ u_int peercnt; /* number of peers referencinf this interface - informational only */
+ ISC_LINK(struct interface) link; /* interface list */
};
/*
* Flags for interfaces
*/
-#define INT_UP 1 /* Interface is up */
-#define INT_PPP 2 /* Point-to-point interface */
-#define INT_LOOPBACK 4 /* the loopback interface */
-#define INT_BROADCAST 8 /* can broadcast out this interface */
-#define INT_MULTICAST 16 /* multicasting enabled */
-#define INT_BCASTOPEN 32 /* broadcast socket is open */
-
+#define INT_UP 0x001 /* Interface is up */
+#define INT_PPP 0x002 /* Point-to-point interface */
+#define INT_LOOPBACK 0x004 /* the loopback interface */
+#define INT_BROADCAST 0x008 /* can broadcast out this interface */
+#define INT_MULTICAST 0x010 /* can multicast out this interface */
+#define INT_BCASTOPEN 0x020 /* broadcast socket is open */
+#define INT_MCASTOPEN 0x040 /* multicasting enabled */
+#define INT_WILDCARD 0x080 /* wildcard interface - usually skipped */
+#define INT_MCASTIF 0x100 /* bound directly to MCAST address */
/*
* Define flasher bits (tests 1 through 11 in packet procedure)
* These reveal the state at the last grumble from the peer and are
* most handy for diagnosing problems, even if not strictly a state
* variable in the spec. These are recorded in the peer structure.
+ *
+ * Packet errors
*/
-#define TEST1 0x0001 /* duplicate packet received */
-#define TEST2 0x0002 /* bogus packet received */
+#define TEST1 0X0001 /* duplicate packet */
+#define TEST2 0x0002 /* bogus packet */
#define TEST3 0x0004 /* protocol unsynchronized */
#define TEST4 0x0008 /* access denied */
-#define TEST5 0x0010 /* authentication failed */
-#define TEST6 0x0020 /* peer clock unsynchronized */
-#define TEST7 0x0040 /* peer stratum out of bounds */
-#define TEST8 0x0080 /* root delay/dispersion bounds check */
-#define TEST9 0x0100 /* peer delay/dispersion bounds check */
-#define TEST10 0x0200 /* autokey failed */
-#define TEST11 0x0400 /* proventic not confirmed */
+#define TEST5 0x0010 /* authentication error */
+#define TEST6 0x0020 /* bad synch or stratum */
+#define TEST7 0x0040 /* bad header data */
+#define TEST8 0x0080 /* autokey error */
+#define TEST9 0x0100 /* crypto error */
+#define PKT_TEST_MASK (TEST1 | TEST2 | TEST3 | TEST4 | TEST5 |\
+ TEST6 | TEST7 | TEST8 | TEST9)
+/*
+ * Peer errors
+ */
+#define TEST10 0x0200 /* peer bad synch or stratum */
+#define TEST11 0x0400 /* peer distance exceeded */
+#define TEST12 0x0800 /* peer synchronization loop */
+#define TEST13 0x1000 /* peer unreacable */
+#define PEER_TEST_MASK (TEST10 | TEST11 | TEST12 | TEST13)
+
+/*
+ * Authentication codes
+ */
+#define AUTH_NONE 0 /* no authentication */
+#define AUTH_OK 1 /* authentication OK */
+#define AUTH_ERROR 2 /* authentication error */
+#define AUTH_CRYPTO 3 /* crypto-NAK */
/*
* The peer structure. Holds state information relating to the guys
@@ -221,14 +255,13 @@ struct peer {
struct peer *ass_next; /* link pointer in associd hash */
struct sockaddr_storage srcadr; /* address of remote host */
struct interface *dstadr; /* pointer to address on local host */
+ ISC_LINK(struct peer) ilink; /* interface link list */
associd_t associd; /* association ID */
u_char version; /* version number */
u_char hmode; /* local association mode */
u_char hpoll; /* local poll interval */
- u_char kpoll; /* last poll interval */
u_char minpoll; /* min poll interval */
u_char maxpoll; /* max poll interval */
- u_char burst; /* packets remaining in burst */
u_int flags; /* association flags */
u_char cast_flags; /* additional flags */
u_int flash; /* protocol error test tally bits */
@@ -239,10 +272,12 @@ struct peer {
/*
* Variables used by reference clock support
*/
+#ifdef REFCLOCK
struct refclockproc *procptr; /* refclock structure pointer */
u_char refclktype; /* reference clock type */
u_char refclkunit; /* reference clock unit number */
u_char sstclktype; /* clock type for system status word */
+#endif /* REFCLOCK */
/*
* Variables set by received packet
@@ -250,8 +285,10 @@ struct peer {
u_char leap; /* local leap indicator */
u_char pmode; /* remote association mode */
u_char stratum; /* remote stratum */
- s_char precision; /* remote clock precision */
u_char ppoll; /* remote poll interval */
+ s_char precision; /* remote clock precision */
+ double rootdelay; /* roundtrip delay to primary clock */
+ double rootdispersion; /* dispersion to primary clock */
u_int32 refid; /* remote reference ID */
l_fp reftime; /* update epoch */
@@ -275,7 +312,6 @@ struct peer {
BIGNUM *grpkey; /* GQ group key */
struct value cookval; /* cookie values */
struct value recval; /* receive autokey values */
- struct value tai_leap; /* leapseconds values */
struct exten *cmmd; /* extension pointer */
/*
@@ -285,6 +321,7 @@ struct peer {
int keynumber; /* current key number */
struct value encrypt; /* send encrypt values */
struct value sndval; /* send autokey values */
+ struct value tai_leap; /* send leapsecond table */
#else /* OPENSSL */
#define clear_to_zero status
#endif /* OPENSSL */
@@ -295,7 +332,8 @@ struct peer {
u_char status; /* peer status */
u_char reach; /* reachability register */
u_long epoch; /* reference epoch */
- u_short filter_nextpt; /* index into filter shift register */
+ u_int burst; /* packets remaining in burst */
+ u_int filter_nextpt; /* index into filter shift register */
double filter_delay[NTP_SHIFT]; /* delay shift register */
double filter_offset[NTP_SHIFT]; /* offset shift register */
double filter_disp[NTP_SHIFT]; /* dispersion shift register */
@@ -309,24 +347,18 @@ struct peer {
double jitter; /* peer jitter (squares) */
double disp; /* peer dispersion */
double estbdelay; /* clock offset to broadcast server */
- double hyst; /* anti-clockhop hysteresis */
-
- /*
- * Variables set by received packet
- */
- double rootdelay; /* roundtrip delay to primary clock */
- double rootdispersion; /* dispersion to primary clock */
/*
* End of clear-to-zero area
*/
u_long update; /* receive epoch */
-#define end_clear_to_zero update
u_int unreach; /* unreachable count */
+#define end_clear_to_zero unreach
u_long outdate; /* send time last packet */
u_long nextdate; /* send time next packet */
- u_long nextaction; /* peer local activity timeout (refclocks mainly) */
+ u_long nextaction; /* peer local activity timeout (refclocks) */
void (*action) P((struct peer *)); /* action timeout function */
+
/*
* Statistic counters
*/
@@ -340,9 +372,8 @@ struct peer {
u_long badauth; /* packets cryptosum failed */
u_long bogusorg; /* packets bogus origin */
u_long oldpkt; /* packets duplicate packet */
- u_long seldisptoolarge; /* packets dispersion to large*/
+ u_long seldisptoolarge; /* packets dispersion too large */
u_long selbroken; /* not used */
- u_long rank; /* number of times selected or in cluster */
};
/*
@@ -354,17 +385,27 @@ struct peer {
#define LEAP_NOTINSYNC 0x3 /* overload, clock is free running */
/*
- * Values for peer.mode
+ * Values for peer mode and packet mode. Only the modes through
+ * MODE_BROADCAST and MODE_BCLIENT appear in the transition
+ * function. MODE_CONTROL and MODE_PRIVATE can appear in packets,
+ * but those never survive to the transition function.
+ * is a
*/
#define MODE_UNSPEC 0 /* unspecified (old version) */
-#define MODE_ACTIVE 1 /* symmetric active */
-#define MODE_PASSIVE 2 /* symmetric passive */
+#define MODE_ACTIVE 1 /* symmetric active mode */
+#define MODE_PASSIVE 2 /* symmetric passive mode */
#define MODE_CLIENT 3 /* client mode */
#define MODE_SERVER 4 /* server mode */
#define MODE_BROADCAST 5 /* broadcast mode */
-#define MODE_CONTROL 6 /* control mode packet */
-#define MODE_PRIVATE 7 /* implementation defined function */
-#define MODE_BCLIENT 8 /* broadcast client mode */
+/*
+ * These can appear in packets
+ */
+#define MODE_CONTROL 6 /* control mode */
+#define MODE_PRIVATE 7 /* private mode */
+/*
+ * This is a madeup mode for broadcast client.
+ */
+#define MODE_BCLIENT 6 /* broadcast client mode */
/*
* Values for peer.stratum, sys_stratum
@@ -387,8 +428,11 @@ struct peer {
#define FLAG_PREFER 0x0080 /* this is the preferred peer */
#define FLAG_BURST 0x0100 /* burst mode */
#define FLAG_IBURST 0x0200 /* initial burst mode */
-#define FLAG_NOSELECT 0x0400 /* this is a "noselect" peer */
+#define FLAG_NOSELECT 0x0400 /* never select */
#define FLAG_ASSOC 0x0800 /* autokey request */
+#define FLAG_FIXPOLL 0x1000 /* stick at minpoll */
+#define FLAG_TRUE 0x2000 /* select truechimer */
+#define FLAG_PREEMPT 0x4000 /* preemptable association */
/*
* Definitions for the clear() routine. We use memset() to clear
@@ -430,13 +474,13 @@ struct peer {
#define REFCLK_GPSTM_TRUE 15 /* OLD TrueTime GPS/TM-TMD Receiver */
#define REFCLK_IRIG_BANCOMM 16 /* Bancomm GPS/IRIG Interface */
#define REFCLK_GPS_DATUM 17 /* Datum Programmable Time System */
-#define REFCLK_NIST_ACTS 18 /* NIST Auto Computer Time Service */
+#define REFCLK_ACTS 18 /* Generic Auto Computer Time Service */
#define REFCLK_WWV_HEATH 19 /* Heath GC1000 WWV/WWVH Receiver */
#define REFCLK_GPS_NMEA 20 /* NMEA based GPS clock */
#define REFCLK_GPS_VME 21 /* TrueTime GPS-VME Interface */
#define REFCLK_ATOM_PPS 22 /* 1-PPS Clock Discipline */
-#define REFCLK_PTB_ACTS 23 /* PTB Auto Computer Time Service */
-#define REFCLK_USNO 24 /* Naval Observatory dialup */
+#define REFCLK_PTB_ACTS 23 /* replaced by REFCLK_ACTS */
+#define REFCLK_USNO 24 /* replaced by REFCLK_ACTS */
#define REFCLK_GPS_HP 26 /* HP 58503A Time/Frequency Receiver */
#define REFCLK_ARCRON_MSF 27 /* ARCRON MSF radio clock. */
#define REFCLK_SHM 28 /* clock attached thru shared memory */
@@ -483,7 +527,7 @@ struct peer {
(sizeof(struct sockaddr_in)) : (sizeof(struct sockaddr_in6)))
#define ANYSOCK(sock) \
- memset(((struct sockaddr_in *)sock), 0, \
+ memset(((struct sockaddr_storage *)sock), 0, \
sizeof(struct sockaddr_storage))
#define ANY_INTERFACE_CHOOSE(sock) \
@@ -656,29 +700,15 @@ struct pkt {
* To speed lookups, peers are hashed by the low order bits of the
* remote IP address. These definitions relate to that.
*/
-#define HASH_SIZE 128
-#define HASH_MASK (HASH_SIZE-1)
-#define HASH_ADDR(src) sock_hash(src)
+#define NTP_HASH_SIZE 128
+#define NTP_HASH_MASK (NTP_HASH_SIZE-1)
+#define NTP_HASH_ADDR(src) sock_hash(src)
/*
- * How we randomize polls. The poll interval is a power of two.
- * We chose a random value which is between 1/4 and 3/4 of the
- * poll interval we would normally use and which is an even multiple
- * of the EVENT_TIMEOUT. The random number routine, given an argument
- * spread value of n, returns an integer between 0 and (1<<n)-1. This
- * is shifted by EVENT_TIMEOUT and added to the base value.
+ * How we randomize polls. The poll interval is a power of two. We chose
+ * a random interval which is this value plus-minus one second.
*/
-#if defined(HAVE_MRAND48)
-# define RANDOM (mrand48())
-# define SRANDOM(x) (srand48(x))
-#else
-# define RANDOM (random())
-# define SRANDOM(x) (srandom(x))
-#endif
-
-#define RANDPOLL(x) ((1 << (x)) - 1 + (RANDOM & 0x3))
-#define RANDOM_SPREAD(poll) ((poll) - (EVENT_TIMEOUT+1))
-#define RANDOM_POLL(poll, rval) ((((rval)+1)<<EVENT_TIMEOUT) + (1<<((poll)-2)))
+#define RANDPOLL(x) ((1 << (x)) - 1 + (ntp_random() & 0x3))
/*
* min, min3 and max. Makes it easier to transliterate the spec without
@@ -706,12 +736,18 @@ struct pkt {
#define PROTO_PPS 12
#define PROTO_CAL 13
#define PROTO_MINCLOCK 14
-#define PROTO_MINSANE 15
-#define PROTO_FLOOR 16
-#define PROTO_CEILING 17
-#define PROTO_COHORT 18
-#define PROTO_CALLDELAY 19
-#define PROTO_ADJ 20
+#define PROTO_MAXCLOCK 15
+#define PROTO_MINSANE 16
+#define PROTO_FLOOR 17
+#define PROTO_CEILING 18
+#define PROTO_COHORT 19
+#define PROTO_CALLDELAY 20
+#define PROTO_MINDISP 21
+#define PROTO_MAXDIST 22
+#define PROTO_ADJ 23
+#define PROTO_MAXHOP 24
+#define PROTO_BEACON 25
+#define PROTO_ORPHAN 26
/*
* Configuration items for the loop filter
@@ -726,6 +762,7 @@ struct pkt {
#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_KERN_CLEAR 11 /* reset kernel pll parameters */
/*
* Configuration items for the stats printer
@@ -839,6 +876,7 @@ struct restrictlist6 {
#define RESTRICT_FLAGS 1 /* add flags to restrict entry */
#define RESTRICT_UNFLAG 2 /* remove flags from restrict entry */
#define RESTRICT_REMOVE 3 /* remove a restrict entry */
+#define RESTRICT_REMOVEIF 4 /* remove an interface restrict entry */
/*
* Endpoint structure for the select algorithm
@@ -849,22 +887,17 @@ struct endpoint {
};
/*
- * Defines for association matching
- */
-#define AM_MODES 10 /* total number of modes */
-#define NO_PEER 0 /* action when no peer is found */
-
-/*
* Association matching AM[] return codes
*/
-#define AM_ERR -1
-#define AM_NOMATCH 0
-#define AM_PROCPKT 1
-#define AM_FXMIT 2
-#define AM_MANYCAST 3
-#define AM_NEWPASS 4
-#define AM_NEWBCL 5
-#define AM_POSSBCL 6
+#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_FXMIT 3 /* client packet */
+#define AM_MANYCAST 4 /* manycast packet */
+#define AM_NEWPASS 5 /* new passive */
+#define AM_NEWBCL 6 /* new broadcast */
+#define AM_POSSBCL 7 /* discard broadcast */
/* NetInfo configuration locations */
#ifdef HAVE_NETINFO
diff --git a/contrib/ntp/include/ntp_config.h b/contrib/ntp/include/ntp_config.h
index 01478d2..66d4f9f 100644
--- a/contrib/ntp/include/ntp_config.h
+++ b/contrib/ntp/include/ntp_config.h
@@ -28,7 +28,7 @@
#define CONFIG_AUTHENTICATE 7
#define CONFIG_KEYS 8
#define CONFIG_REVOKE 9
-#define CONFIG_PPS 10
+#define CONFIG_CDELAY 10
#define CONFIG_RESTRICT 11
#define CONFIG_BDELAY 12
#define CONFIG_TRUSTEDKEY 13
@@ -56,7 +56,7 @@
#define CONFIG_TTL 35
#define CONFIG_INCLUDEFILE 36
#define CONFIG_KEYSDIR 37
-#define CONFIG_CDELAY 38
+#define CONFIG_END 38
#ifdef OPENSSL
#define CONFIG_CRYPTO 39
#endif /* OPENSSL */
@@ -75,6 +75,9 @@
#define CONF_MOD_TTL 9
#define CONF_MOD_MODE 10
#define CONF_MOD_NOSELECT 11
+#define CONF_MOD_TRUE 12
+#define CONF_MOD_PREEMPT 13
+#define CONF_MOD_DYNAMIC 14
/*
* "restrict" modifier keywords
@@ -122,13 +125,6 @@
#define CONF_FGEN_FLAG_DISABLE 6
/*
- * "pps" modifier keywords
- */
-#define CONF_PPS_ASSERT 1
-#define CONF_PPS_CLEAR 2
-#define CONF_PPS_HARDPPS 3
-
-/*
* "discard" modifier keywords
*/
#define CONF_DISCARD_AVERAGE 1
@@ -150,10 +146,16 @@
* "tos" modifier keywords
*/
#define CONF_TOS_MINCLOCK 1
-#define CONF_TOS_MINSANE 2
-#define CONF_TOS_FLOOR 3
-#define CONF_TOS_CEILING 4
-#define CONF_TOS_COHORT 5
+#define CONF_TOS_MAXCLOCK 2
+#define CONF_TOS_MINSANE 3
+#define CONF_TOS_FLOOR 4
+#define CONF_TOS_CEILING 5
+#define CONF_TOS_COHORT 6
+#define CONF_TOS_MINDISP 7
+#define CONF_TOS_MAXDIST 8
+#define CONF_TOS_MAXHOP 9
+#define CONF_TOS_BEACON 10
+#define CONF_TOS_ORPHAN 11
#ifdef OPENSSL
/*
@@ -165,10 +167,11 @@
#define CONF_CRYPTO_CERT 4
#define CONF_CRYPTO_RAND 5
#define CONF_CRYPTO_KEYS 6
-#define CONF_CRYPTO_IFFPAR 7
-#define CONF_CRYPTO_GQPAR 8
-#define CONF_CRYPTO_MVPAR 9
-#define CONF_CRYPTO_PW 10
+#define CONF_CRYPTO_IDENT 7
+#define CONF_CRYPTO_IFFPAR 8
+#define CONF_CRYPTO_GQPAR 9
+#define CONF_CRYPTO_MVPAR 10
+#define CONF_CRYPTO_PW 11
#endif /* OPENSSL */
/*
diff --git a/contrib/ntp/include/ntp_control.h b/contrib/ntp/include/ntp_control.h
index c75d38b..c299794 100644
--- a/contrib/ntp/include/ntp_control.h
+++ b/contrib/ntp/include/ntp_control.h
@@ -158,22 +158,25 @@ struct ntp_control {
#define CS_OFFSET 11
#define CS_DRIFT 12
#define CS_JITTER 13
-#define CS_CLOCK 14
-#define CS_PROCESSOR 15
-#define CS_SYSTEM 16
-#define CS_VERSION 17
-#define CS_STABIL 18
-#define CS_VARLIST 19
+#define CS_ERROR 14
+#define CS_CLOCK 15
+#define CS_PROCESSOR 16
+#define CS_SYSTEM 17
+#define CS_VERSION 18
+#define CS_STABIL 19
+#define CS_VARLIST 20
#ifdef OPENSSL
-#define CS_FLAGS 20
-#define CS_HOST 21
-#define CS_PUBLIC 22
-#define CS_CERTIF 23
-#define CS_REVTIME 24
-#define CS_LEAPTAB 25
-#define CS_TAI 26
-#define CS_DIGEST 27
-#define CS_MAXCODE CS_DIGEST
+#define CS_FLAGS 21
+#define CS_HOST 22
+#define CS_PUBLIC 23
+#define CS_CERTIF 24
+#define CS_REVTIME 25
+#define CS_LEAPTAB 26
+#define CS_TAI 27
+#define CS_DIGEST 28
+#define CS_IDENT 29
+#define CS_REVOKE 30
+#define CS_MAXCODE CS_REVOKE
#else
#define CS_MAXCODE CS_VARLIST
#endif /* OPENSSL */
@@ -202,7 +205,7 @@ struct ntp_control {
#define CP_REC 19
#define CP_XMT 20
#define CP_REACH 21
-#define CP_VALID 22
+#define CP_UNREACH 22
#define CP_TIMER 23
#define CP_DELAY 24
#define CP_OFFSET 25
@@ -217,11 +220,11 @@ struct ntp_control {
#define CP_FILTERROR 34
#define CP_FLASH 35
#define CP_TTL 36
-#define CP_RANK 37
-#define CP_VARLIST 38
+#define CP_VARLIST 37
#ifdef OPENSSL
-#define CP_FLAGS 39
-#define CP_HOST 40
+#define CP_FLAGS 38
+#define CP_HOST 39
+#define CP_VALID 40
#define CP_INITSEQ 41
#define CP_INITKEY 42
#define CP_INITTSP 43
@@ -266,6 +269,7 @@ struct ctl_trap {
u_char tr_flags; /* trap flags */
u_char tr_version; /* version number of trapper */
};
+extern struct ctl_trap ctl_trap[];
/*
* Flag bits
diff --git a/contrib/ntp/include/ntp_crypto.h b/contrib/ntp/include/ntp_crypto.h
index fb1955c..14795e7 100644
--- a/contrib/ntp/include/ntp_crypto.h
+++ b/contrib/ntp/include/ntp_crypto.h
@@ -31,9 +31,10 @@
/*
* Flags used for certificate management
*/
-#define CERT_SIGN 0x01 /* certificate is signed */
-#define CERT_TRUST 0x02 /* certificate is trusted */
-#define CERT_PRIV 0x04 /* certificate is private */
+#define CERT_TRUST 0x01 /* certificate is trusted */
+#define CERT_SIGN 0x02 /* certificate is signed */
+#define CERT_VALID 0x04 /* certificate is valid */
+#define CERT_PRIV 0x08 /* certificate is private */
#define CERT_ERROR 0x80 /* certificate has errors */
/*
@@ -63,17 +64,19 @@
#define XEVNT_LEN XEVNT_CMD(1) /* bad field format or length */
#define XEVNT_TSP XEVNT_CMD(2) /* bad timestamp */
#define XEVNT_FSP XEVNT_CMD(3) /* bad filestamp */
-#define XEVNT_PUB XEVNT_CMD(4) /* bad procedure or data */
+#define XEVNT_PUB XEVNT_CMD(4) /* bad or missing public key */
#define XEVNT_MD XEVNT_CMD(5) /* unsupported digest type */
#define XEVNT_KEY XEVNT_CMD(6) /* unsupported identity type */
#define XEVNT_SGL XEVNT_CMD(7) /* bad signature length */
#define XEVNT_SIG XEVNT_CMD(8) /* signature not verified */
#define XEVNT_VFY XEVNT_CMD(9) /* certificate not verified */
-#define XEVNT_PER XEVNT_CMD(10) /* certificate expired */
+#define XEVNT_PER XEVNT_CMD(10) /* host certificate expired */
#define XEVNT_CKY XEVNT_CMD(11) /* bad or missing cookie */
#define XEVNT_DAT XEVNT_CMD(12) /* bad or missing leapseconds table */
#define XEVNT_CRT XEVNT_CMD(13) /* bad or missing certificate */
-#define XEVNT_ID XEVNT_CMD(14) /* bad or missing identification */
+#define XEVNT_ID XEVNT_CMD(14) /* bad or missing group key */
+#define XEVNT_ERR XEVNT_CMD(15) /* protocol error */
+#define XEVNT_SRV XEVNT_CMD(16) /* server certificate expired */
/*
* Configuration codes
@@ -90,6 +93,7 @@
#define CRYPTO_CONF_GQPAR 9 /* GQ parameters file name */
#define CRYPTO_CONF_MVPAR 10 /* GQ parameters file name */
#define CRYPTO_CONF_PW 11 /* private key password */
+#define CRYPTO_CONF_IDENT 12 /* specify identity scheme */
/*
* Miscellaneous crypto stuff
@@ -98,6 +102,7 @@
#define NTP_AUTOMAX 13 /* log2 default max session key life */
#define KEY_REVOKE 16 /* log2 default key revoke timeout */
#define NTP_MAXEXTEN 1024 /* maximum extension field size */
+#define TAI_1972 10 /* initial TAI offset (s) */
/*
* The autokey structure holds the values used to authenticate key IDs.
@@ -145,8 +150,8 @@ struct cert_info {
int nid; /* signature/digest ID */
const EVP_MD *digest; /* message digest algorithm */
u_long serial; /* serial number */
- tstamp_t first; /* valid not before */
- tstamp_t last; /* valid not after */
+ tstamp_t first; /* not valid before */
+ tstamp_t last; /* not valid after */
char *subject; /* subject common name */
char *issuer; /* issuer common name */
u_char *grpkey; /* GQ group key */
@@ -162,5 +167,4 @@ extern u_int crypto_flags; /* status word */
extern struct value hostval; /* host name/value */
extern struct cert_info *cinfo; /* host certificate information */
extern struct value tai_leap; /* leapseconds table */
-extern u_int sys_tai; /* current UTC offset from TAI */
#endif /* OPENSSL */
diff --git a/contrib/ntp/include/ntp_debug.h b/contrib/ntp/include/ntp_debug.h
new file mode 100644
index 0000000..376b24b
--- /dev/null
+++ b/contrib/ntp/include/ntp_debug.h
@@ -0,0 +1,26 @@
+/*
+ * $Header$
+ *
+ * $Created: Sat Aug 20 14:23:01 2005 $
+ *
+ * Copyright (C) 2005 by Frank Kardel
+ */
+#ifndef NTP_DEBUG_H
+#define NTP_DEBUG_H
+
+/*
+ * macros for debugging output - cut down on #ifdef pollution in the code
+ */
+
+#ifdef DEBUG
+#define DPRINTF(_lvl_, _arg_) \
+ if (debug >= (_lvl_)) \
+ printf _arg_;
+#else
+#define DPRINTF(_lvl_, _arg_)
+#endif
+
+#endif
+/*
+ * $Log$
+ */
diff --git a/contrib/ntp/include/ntp_filegen.h b/contrib/ntp/include/ntp_filegen.h
index 8217dbc..836ec04 100644
--- a/contrib/ntp/include/ntp_filegen.h
+++ b/contrib/ntp/include/ntp_filegen.h
@@ -48,4 +48,4 @@ typedef struct FILEGEN
extern void filegen_setup P((FILEGEN *, u_long));
extern void filegen_config P((FILEGEN *, char *, u_int, u_int));
extern FILEGEN *filegen_get P((char *));
-extern void filegen_register P((const char *, FILEGEN *));
+extern void filegen_register P((char *, const char *, FILEGEN *));
diff --git a/contrib/ntp/include/ntp_fp.h b/contrib/ntp/include/ntp_fp.h
index 256bab8..307ab10 100644
--- a/contrib/ntp/include/ntp_fp.h
+++ b/contrib/ntp/include/ntp_fp.h
@@ -7,9 +7,10 @@
#include <sys/types.h>
#include <sys/socket.h>
-#include "ntp_rfc2553.h"
#include <netinet/in.h>
+#include "ntp_rfc2553.h"
+
#include "ntp_types.h"
/*
@@ -281,7 +282,7 @@ typedef u_int32 u_fp;
#define L_SUBUF(r, uf) M_SUBUF((r)->l_ui, (r)->l_uf, (uf))
#define L_ADDF(r, f) M_ADDF((r)->l_ui, (r)->l_uf, (f))
#define L_RSHIFT(v) M_RSHIFT((v)->l_i, (v)->l_uf)
-#define L_RSHIFTU(v) M_RSHIFT((v)->l_ui, (v)->l_uf)
+#define L_RSHIFTU(v) M_RSHIFTU((v)->l_ui, (v)->l_uf)
#define L_LSHIFT(v) M_LSHIFT((v)->l_ui, (v)->l_uf)
#define L_CLR(v) ((v)->l_ui = (v)->l_uf = 0)
@@ -358,6 +359,8 @@ extern void get_systime P((l_fp *));
extern int step_systime P((double));
extern int adj_systime P((double));
+extern struct tm * ntp2unix_tm P((u_long ntp, int local));
+
#define lfptoa(_fpv, _ndec) mfptoa((_fpv)->l_ui, (_fpv)->l_uf, (_ndec))
#define lfptoms(_fpv, _ndec) mfptoms((_fpv)->l_ui, (_fpv)->l_uf, (_ndec))
diff --git a/contrib/ntp/include/ntp_machine.h b/contrib/ntp/include/ntp_machine.h
index 65ef5be..2a3b6e6 100644
--- a/contrib/ntp/include/ntp_machine.h
+++ b/contrib/ntp/include/ntp_machine.h
@@ -54,8 +54,6 @@ HOW TO GET IP INTERFACE INFORMATION
the stream in an I_STR ioctl. This ususally also implies
USE_STREAMS_DEVICE FOR IF_CONFIG. Dell UNIX is a notable exception.
- STREAMS_TLI - use ioctl(I_STR) to implement ioctl(SIOCGIFCONF)
-
WHAT DOES IOCTL(SIOCGIFCONF) RETURN IN THE BUFFER
UNIX V.4 machines implement a sockets library on top of streams.
@@ -81,11 +79,6 @@ MISC
RETSIGTYPE - Define signal function type.
NO_SIGNED_CHAR_DECL - No "signed char" see include/ntp.h
LOCK_PROCESS - Have plock.
- UDP_WILDCARD_DELIVERY
- - these systems deliver broadcast packets to the wildcard
- port instead to a port bound to the interface bound
- to the correct broadcast address - are these
- implementations broken or did the spec change ?
*/
/*
@@ -99,6 +92,10 @@ MISC
#endif /* not __STDC__ and not HAVE_PROTOTYPES */
#endif /* P */
+#if !defined(HAVE_NTP_ADJTIME) && defined(HAVE___ADJTIMEX)
+# define ntp_adjtime __adjtimex
+#endif
+
#if 0
/*
@@ -244,6 +241,7 @@ typedef unsigned long u_long;
#ifndef SYS_WINNT
# define SOCKET int
# define INVALID_SOCKET -1
+# define SOCKET_ERROR -1
# define closesocket close
#endif
/*
@@ -272,8 +270,6 @@ typedef unsigned long u_long;
# define unlink _unlink
# define fileno _fileno
# define write _write
-# define vsnprintf _vsnprintf
-# define snprintf _snprintf
#ifndef close
# define close _close
#endif
@@ -355,8 +351,6 @@ extern void alarm P((int seconds));
#define getclock clock_gettime
#define fcntl ioctl
#define _getch getchar
-#define random rand
-#define srandom srand
/* define this away for vxWorks */
#define openlog(x,y)
diff --git a/contrib/ntp/include/ntp_random.h b/contrib/ntp/include/ntp_random.h
new file mode 100644
index 0000000..766dcc3
--- /dev/null
+++ b/contrib/ntp/include/ntp_random.h
@@ -0,0 +1,14 @@
+
+#include <ntp_types.h>
+
+long ntp_random P((void));
+void ntp_srandom P((unsigned long));
+void ntp_srandomdev P((void));
+char * ntp_initstate P((unsigned long, /* seed for R.N.G. */
+ char *, /* pointer to state array */
+ long /* # bytes of state info */
+ ));
+char * ntp_setstate P((char *)); /* pointer to state array */
+
+
+
diff --git a/contrib/ntp/include/ntp_refclock.h b/contrib/ntp/include/ntp_refclock.h
index 5e33a8c..d63f3af 100644
--- a/contrib/ntp/include/ntp_refclock.h
+++ b/contrib/ntp/include/ntp_refclock.h
@@ -65,6 +65,7 @@ struct clktype {
const char *clocktype; /* long description */
const char *abbrev; /* short description */
};
+extern struct clktype clktypes[];
/*
* Configuration flag values
@@ -163,13 +164,16 @@ struct refclockbug {
* modules to be installed/loaded in the kernel. If specified, but not
* installed, the code runs as if unspecified.
*/
-#define LDISC_STD 0x0 /* standard */
-#define LDISC_CLK 0x1 /* tty_clk \n intercept */
-#define LDISC_CLKPPS 0x2 /* tty_clk \377 intercept */
-#define LDISC_ACTS 0x4 /* tty_clk #* intercept */
-#define LDISC_CHU 0x8 /* depredated */
+#define LDISC_STD 0x00 /* standard */
+#define LDISC_CLK 0x01 /* tty_clk \n intercept */
+#define LDISC_CLKPPS 0x02 /* tty_clk \377 intercept */
+#define LDISC_ACTS 0x04 /* tty_clk #* intercept */
+#define LDISC_CHU 0x08 /* depredated */
#define LDISC_PPS 0x10 /* ppsclock, ppsapi */
#define LDISC_RAW 0x20 /* raw binary */
+#define LDISC_ECHO 0x40 /* enable echo */
+#define LDISC_REMOTE 0x80 /* remote mode */
+#define LDISC_7O1 0x100 /* 7-bit, odd parity for Z3801A */
struct refclockproc {
struct refclockio io; /* I/O handler structure */
@@ -234,7 +238,7 @@ struct refclock {
struct refclockstat *, struct peer *));
void (*clock_init) P((void));
void (*clock_buginfo) P((int, struct refclockbug *, struct peer *));
- u_long clock_flags;
+ void (*clock_timer) P((int, struct peer *));
};
/*
@@ -254,14 +258,16 @@ extern void refclock_buginfo P((struct sockaddr_storage *,
extern void refclock_control P((struct sockaddr_storage *,
struct refclockstat *,
struct refclockstat *));
-extern int refclock_open P((char *, int, int));
+extern int refclock_open P((char *, u_int, u_int));
+extern int refclock_setup P((int, u_int, u_int));
+extern void refclock_timer P((struct peer *));
extern void refclock_transmit P((struct peer *));
-extern int refclock_ioctl P((int, int));
+extern int refclock_ioctl P((int, u_int));
extern int refclock_process P((struct refclockproc *));
extern void refclock_process_offset P((struct refclockproc *, l_fp, l_fp, double));
extern void refclock_report P((struct peer *, int));
-extern int refclock_gtlin P((struct recvbuf *, char *, int,
- l_fp *));
+extern int refclock_gtlin P((struct recvbuf *, char *, int, l_fp *));
+extern int refclock_gtraw P((struct recvbuf *, char *, int, l_fp *));
#endif /* REFCLOCK */
#endif /* NTP_REFCLOCK_H */
diff --git a/contrib/ntp/include/ntp_request.h b/contrib/ntp/include/ntp_request.h
index 8166a4d..eb13fad 100644
--- a/contrib/ntp/include/ntp_request.h
+++ b/contrib/ntp/include/ntp_request.h
@@ -112,6 +112,15 @@
*/
/*
+ * union of raw addresses to save space
+ */
+union addrun
+{
+ struct in6_addr addr6;
+ struct in_addr addr;
+};
+
+/*
* A request packet. These are almost a fixed length.
*/
struct req_pkt {
@@ -275,6 +284,8 @@ struct resp_pkt {
#define REQ_SET_PRECISION 41 /* (not used) */
#define REQ_MON_GETLIST_1 42 /* return collected v1 monitor data */
#define REQ_HOSTNAME_ASSOCID 43 /* Here is a hostname + assoc_id */
+#define REQ_IF_STATS 44 /* get interface statistics */
+#define REQ_IF_RELOAD 45 /* reload interface list */
/* Determine size of pre-v6 version of structures */
#define v4sizeof(type) offsetof(type, v6_flag)
@@ -290,6 +301,7 @@ struct resp_pkt {
#define INFO_FLAG_AUTHENABLE 0x20
#define INFO_FLAG_SEL_CANDIDATE 0x40
#define INFO_FLAG_SHORTLIST 0x80
+#define INFO_FLAG_IBURST 0x100
/*
* Flags in the system information returns
@@ -517,7 +529,7 @@ struct info_mem_stats {
u_int32 findpeer_calls;
u_int32 allocations;
u_int32 demobilizations;
- u_char hashcount[HASH_SIZE];
+ u_char hashcount[NTP_HASH_SIZE];
};
@@ -872,6 +884,36 @@ struct info_kernel {
};
/*
+ * interface statistics
+ */
+struct info_if_stats {
+ union addrun unaddr; /* address */
+ union addrun unbcast; /* broadcast */
+ union addrun unmask; /* mask */
+ u_int32 v6_flag; /* is this v6 */
+ char name[32]; /* name of interface */
+ int32 flags; /* interface flags */
+ int32 last_ttl; /* last TTL specified */
+ int32 num_mcast; /* No. of IP addresses in multicast socket */
+ int32 received; /* number of incoming packets */
+ int32 sent; /* number of outgoing packets */
+ int32 notsent; /* number of send failures */
+ int32 uptime; /* number of seconds this interface was active */
+ u_int32 scopeid; /* Scope used for Multicasting */
+ u_int32 ifindex; /* interface index - from system */
+ u_int32 ifnum; /* sequential interface number */
+ u_int32 peercnt; /* number of peers referencinf this interface - informational only */
+ u_short family; /* Address family */
+ u_char ignore_packets; /* Specify whether the packet should be ignored */
+ u_char action; /* reason the item is listed */
+ int32 _filler0; /* pad to a 64 bit size boundary */
+};
+
+#define IFS_EXISTS 1 /* just exists */
+#define IFS_CREATED 2 /* was just created */
+#define IFS_DELETED 3 /* was just delete */
+
+/*
* Info returned with IP -> hostname lookup
*/
/* 144 might need to become 32, matching data[] member of req_pkt */
diff --git a/contrib/ntp/include/ntp_rfc2553.h b/contrib/ntp/include/ntp_rfc2553.h
index 28ff004..662b118 100644
--- a/contrib/ntp/include/ntp_rfc2553.h
+++ b/contrib/ntp/include/ntp_rfc2553.h
@@ -68,54 +68,89 @@
#ifndef _NTP_RFC2553_H_
#define _NTP_RFC2553_H_
-#if defined(_SS_MAXSIZE) || defined(_SS_SIZE)
-#define HAVE_IPV6
-#else
+/*
+ * Ensure that we include the configuration file before we check
+ * for IPV6
+ */
+#include <config.h>
+
+#include <netdb.h>
-#include <sys/types.h>
#include "ntp_types.h"
+/*
+ * Don't include any additional IPv6 definitions
+ * We are defining our own here.
+ */
+#define ISC_IPV6_H 1
+
+ /*
+ * If various macros are not defined we need to define them
+ */
+
#ifndef AF_INET6
#define AF_INET6 AF_MAX
#define PF_INET6 AF_INET6
#endif
-#ifndef HAVE_TYPE_U_INT8_T
-typedef u_char u_int8_t;
-typedef u_short u_int16_t;
-typedef u_int32 u_int32_t;
-#endif /* HAVE_TYPE_U_INT8_T */
+#if !defined(_SS_MAXSIZE) && !defined(_SS_ALIGNSIZE)
-#ifndef HAVE_TYPE_U_INT64_T
-typedef struct u_int64_t { u_int32 val[2]; } u_int64_t;
-#endif /* HAVE_TYPE_U_INT64_T */
+#define _SS_MAXSIZE 128
+#define _SS_ALIGNSIZE (sizeof(ntp_uint64_t))
+#ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
+#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(u_char) - sizeof(ntp_u_int8_t))
+#define _SS_PAD2SIZE (_SS_MAXSIZE - sizeof(u_char) - sizeof(ntp_u_int8_t) - \
+ _SS_PAD1SIZE - _SS_ALIGNSIZE)
+#else
+#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(short))
+#define _SS_PAD2SIZE (_SS_MAXSIZE - sizeof(short) - \
+ _SS_PAD1SIZE - _SS_ALIGNSIZE)
+#endif /* HAVE_SA_LEN_IN_STRUCT_SOCKADDR */
+#endif
/*
- * IPv6 address
+ * If we don't have the sockaddr_storage structure
+ * we need to define it
*/
-#ifdef SYS_WINNT
-#define in6_addr in_addr6
+
+#ifndef HAVE_STRUCT_SOCKADDR_STORAGE
+struct sockaddr_storage {
+#ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
+ ntp_u_int8_t ss_len; /* address length */
+ ntp_u_int8_t ss_family; /* address family */
#else
+ short ss_family; /* address family */
+#endif
+ char __ss_pad1[_SS_PAD1SIZE];
+ ntp_uint64_t __ss_align; /* force desired structure storage alignment */
+ char __ss_pad2[_SS_PAD2SIZE];
+};
+#endif
+
/*
- * Don't include any additional IPv6 definitions
- * We are defining our own here.
+ * Finally if the platform doesn't support IPv6 we need some
+ * additional definitions
*/
-#define ISC_IPV6_H 1
-struct in6_addr {
- union {
- u_int8_t __u6_addr8[16];
- u_int16_t __u6_addr16[8];
- u_int32_t __u6_addr32[4];
- } __u6_addr; /* 128-bit IP6 address */
-};
+/*
+ * Flag values for getaddrinfo()
+ */
+#ifndef AI_NUMERICHOST
+#define AI_PASSIVE 0x00000001 /* get address to use bind() */
+#define AI_CANONNAME 0x00000002 /* fill ai_canonname */
+#define AI_NUMERICHOST 0x00000004 /* prevent name resolution */
+/* valid flags for addrinfo */
+#define AI_MASK \
+ (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | AI_ADDRCONFIG)
-#define s6_addr __u6_addr.__u6_addr8
+#define AI_ADDRCONFIG 0x00000400 /* only if any address is assigned */
#endif
+#ifndef ISC_PLATFORM_HAVEIPV6
/*
* Definition of some useful macros to handle IP6 addresses
*/
+#ifdef ISC_PLATFORM_NEEDIN6ADDRANY
#ifdef SYS_WINNT
#define IN6ADDR_ANY_INIT {{ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }}
#else
@@ -123,22 +158,44 @@ struct in6_addr {
{{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}}
#endif
+#endif
+
+/*
+ * IPv6 address
+ */
+#ifdef SYS_WINNT
+#define in6_addr in_addr6
+#else
+
+struct in6_addr {
+ union {
+ ntp_u_int8_t __u6_addr8[16];
+ ntp_u_int16_t __u6_addr16[8];
+ ntp_u_int32_t __u6_addr32[4];
+ } __u6_addr; /* 128-bit IP6 address */
+};
+
+#define s6_addr __u6_addr.__u6_addr8
+#endif
+
+#if defined(ISC_PLATFORM_HAVEIPV6) && defined(ISC_PLATFORM_NEEDIN6ADDRANY)
extern const struct in6_addr in6addr_any;
+#endif
#define SIN6_LEN
#ifndef HAVE_SOCKADDR_IN6
struct sockaddr_in6 {
#ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
- u_int8_t sin6_len; /* length of this struct(sa_family_t)*/
- u_int8_t sin6_family; /* AF_INET6 (sa_family_t) */
+ ntp_u_int8_t sin6_len; /* length of this struct(sa_family_t)*/
+ ntp_u_int8_t sin6_family; /* AF_INET6 (sa_family_t) */
#else
short sin6_family; /* AF_INET6 (sa_family_t) */
#endif
- u_int16_t sin6_port; /* Transport layer port # (in_port_t)*/
- u_int32_t sin6_flowinfo; /* IP6 flow information */
+ ntp_u_int16_t sin6_port; /* Transport layer port # (in_port_t)*/
+ ntp_u_int32_t sin6_flowinfo; /* IP6 flow information */
struct in6_addr sin6_addr; /* IP6 address */
- u_int32_t sin6_scope_id; /* scope zone index */
+ ntp_u_int32_t sin6_scope_id; /* scope zone index */
};
#endif
@@ -147,10 +204,10 @@ struct sockaddr_in6 {
*/
#ifndef IN6_IS_ADDR_UNSPECIFIED
#define IN6_IS_ADDR_UNSPECIFIED(a) \
- ((*(const u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
- (*(const u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
- (*(const u_int32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \
- (*(const u_int32_t *)(const void *)(&(a)->s6_addr[12]) == 0))
+ ((*(const ntp_u_int32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
+ (*(const ntp_u_int32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
+ (*(const ntp_u_int32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \
+ (*(const ntp_u_int32_t *)(const void *)(&(a)->s6_addr[12]) == 0))
#endif
/*
* Multicast
@@ -158,33 +215,20 @@ struct sockaddr_in6 {
#ifndef IN6_IS_ADDR_MULTICAST
#define IN6_IS_ADDR_MULTICAST(a) ((a)->s6_addr[0] == 0xff)
#endif
-
/*
- * RFC 2553: protocol-independent placeholder for socket addresses
+ * Unicast link / site local.
*/
-#define _SS_MAXSIZE 128
-#define _SS_ALIGNSIZE (sizeof(u_int64_t))
-#ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
-#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(u_char) - sizeof(u_int8_t))
-#define _SS_PAD2SIZE (_SS_MAXSIZE - sizeof(u_char) - sizeof(u_int8_t) - \
- _SS_PAD1SIZE - _SS_ALIGNSIZE)
-#else
-#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(short))
-#define _SS_PAD2SIZE (_SS_MAXSIZE - sizeof(short) - \
- _SS_PAD1SIZE - _SS_ALIGNSIZE)
-#endif /* HAVE_SA_LEN_IN_STRUCT_SOCKADDR */
+#ifndef IN6_IS_ADDR_LINKLOCAL
+#define IN6_IS_ADDR_LINKLOCAL(a) (\
+(*((u_long *)((a)->s6_addr) ) == 0xfe) && \
+((*((u_long *)((a)->s6_addr) + 1) & 0xc0) == 0x80))
+#endif
-struct sockaddr_storage {
-#ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
- u_int8_t ss_len; /* address length */
- u_int8_t ss_family; /* address family */
-#else
- short ss_family; /* address family */
+#ifndef IN6_IS_ADDR_SITELOCAL
+#define IN6_IS_ADDR_SITELOCAL(a) (\
+(*((u_long *)((a)->s6_addr) ) == 0xfe) && \
+((*((u_long *)((a)->s6_addr) + 1) & 0xc0) == 0xc0))
#endif
- char __ss_pad1[_SS_PAD1SIZE];
- u_int64_t __ss_align; /* force desired structure storage alignment */
- char __ss_pad2[_SS_PAD2SIZE];
-};
struct addrinfo {
int ai_flags; /* AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST */
@@ -215,40 +259,34 @@ struct addrinfo {
#define EAI_PROTOCOL 13
#define EAI_MAX 14
-/*
- * Flag values for getaddrinfo()
- */
-#define AI_PASSIVE 0x00000001 /* get address to use bind() */
-#define AI_CANONNAME 0x00000002 /* fill ai_canonname */
-#define AI_NUMERICHOST 0x00000004 /* prevent name resolution */
-/* valid flags for addrinfo */
-#define AI_MASK \
- (AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | AI_ADDRCONFIG)
-#define AI_ADDRCONFIG 0x00000400 /* only if any address is assigned */
+int getaddrinfo P((const char *, const char *,
+ const struct addrinfo *, struct addrinfo **));
+int getnameinfo P((const struct sockaddr *, u_int, char *,
+ size_t, char *, size_t, int));
+void freeaddrinfo P((struct addrinfo *));
+char *gai_strerror P((int));
/*
* Constants for getnameinfo()
*/
+#ifndef NI_MAXHOST
#define NI_MAXHOST 1025
#define NI_MAXSERV 32
+#endif
/*
* Flag values for getnameinfo()
*/
+#ifndef NI_NUMERICHOST
#define NI_NOFQDN 0x00000001
#define NI_NUMERICHOST 0x00000002
#define NI_NAMEREQD 0x00000004
#define NI_NUMERICSERV 0x00000008
#define NI_DGRAM 0x00000010
#define NI_WITHSCOPEID 0x00000020
+#endif
-int getaddrinfo P((const char *, const char *,
- const struct addrinfo *, struct addrinfo **));
-int getnameinfo P((const struct sockaddr *, u_int, char *,
- size_t, char *, size_t, int));
-void freeaddrinfo P((struct addrinfo *));
-char *gai_strerror P((int));
+#endif /* ISC_PLATFORM_HAVEIPV6 */
-#endif /* _SS_MAXSIZE */
#endif /* !_NTP_RFC2553_H_ */
diff --git a/contrib/ntp/include/ntp_stdlib.h b/contrib/ntp/include/ntp_stdlib.h
index 3dc6fe0..c389d1e 100644
--- a/contrib/ntp/include/ntp_stdlib.h
+++ b/contrib/ntp/include/ntp_stdlib.h
@@ -47,7 +47,6 @@ extern int authreadkeys P((const char *));
extern void authtrust P((keyid_t, u_long));
extern int authusekey P((keyid_t, int, const u_char *));
-extern u_long calleapwhen P((u_long));
extern u_long calyearstart P((u_long));
extern const char *clockname P((int));
extern int clocktime P((int, int, int, int, int, u_long, u_long *, u_int32 *));
@@ -60,7 +59,6 @@ extern void * emalloc P((u_int));
extern int ntp_getopt P((int, char **, const char *));
extern void init_auth P((void));
extern void init_lib P((void));
-extern void init_random P((void));
extern struct savekey *auth_findkey P((keyid_t));
extern int auth_moremem P((void));
extern int ymd2yd P((int, int, int));
@@ -102,7 +100,7 @@ extern const char * FindConfig P((const char *));
extern void signal_no_reset P((int, RETSIGTYPE (*func)(int)));
-extern void getauthkeys P((char *));
+extern void getauthkeys P((const char *));
extern void auth_agekeys P((void));
extern void rereadkeys P((void));
@@ -133,12 +131,6 @@ extern keyid_t cache_keyid; /* key identifier */
extern u_char * cache_key; /* key pointer */
extern u_int cache_keylen; /* key length */
-/* clocktypes.c */
-#ifdef NTP_REFCLOCK_H
-struct clktype;
-extern struct clktype clktypes[];
-#endif
-
/* getopt.c */
extern char * ntp_optarg; /* global argument pointer */
extern int ntp_optind; /* global argv index */
diff --git a/contrib/ntp/include/ntp_tty.h b/contrib/ntp/include/ntp_tty.h
index 3e12c8d..9833119 100644
--- a/contrib/ntp/include/ntp_tty.h
+++ b/contrib/ntp/include/ntp_tty.h
@@ -52,17 +52,4 @@
#define BSD_TTYS
#endif /* SYSV_TTYS STREAM BSD_TTYS */
-/*
- * Line discipline flags. These require line discipline or streams
- * modules to be installed/loaded in the kernel. If specified, but not
- * installed, the code runs as if unspecified.
- */
-#define LDISC_STD 0x0 /* standard */
-#define LDISC_CLK 0x1 /* tty_clk \n intercept */
-#define LDISC_CLKPPS 0x2 /* tty_clk \377 intercept */
-#define LDISC_ACTS 0x4 /* tty_clk #* intercept */
-#define LDISC_CHU 0x8 /* depredated */
-#define LDISC_PPS 0x10 /* ppsclock, ppsapi */
-#define LDISC_RAW 0x20 /* raw binary */
-
#endif /* NTP_TTY_H */
diff --git a/contrib/ntp/include/ntp_types.h b/contrib/ntp/include/ntp_types.h
index 348e95e..0b575c8 100644
--- a/contrib/ntp/include/ntp_types.h
+++ b/contrib/ntp/include/ntp_types.h
@@ -4,6 +4,7 @@
* as int and u_int.
* For 32 bit systems, define them as long and u_long
*/
+#include <sys/types.h>
#include "ntp_machine.h"
#ifndef _NTP_TYPES_
@@ -65,6 +66,12 @@ typedef unsigned int u_int;
# include "Bletch: what's 32 bits on this machine?"
#endif /* not sizeof(int) == 4 */
+typedef u_char ntp_u_int8_t;
+typedef u_short ntp_u_int16_t;
+typedef u_int32 ntp_u_int32_t;
+
+typedef struct ntp_uint64_t { u_int32 val[2]; } ntp_uint64_t;
+
typedef unsigned short associd_t; /* association ID */
typedef u_int32 keyid_t; /* cryptographic key ID */
typedef u_int32 tstamp_t; /* NTP seconds timestamp */
diff --git a/contrib/ntp/include/ntpd.h b/contrib/ntp/include/ntpd.h
index 54d3e13..d095719 100644
--- a/contrib/ntp/include/ntpd.h
+++ b/contrib/ntp/include/ntpd.h
@@ -5,20 +5,12 @@
#include "ntp_syslog.h"
#include "ntp_fp.h"
#include "ntp.h"
+#include "ntp_debug.h"
#include "ntp_select.h"
#include "ntp_malloc.h"
#include "ntp_refclock.h"
#include "recvbuff.h"
-#ifdef SYS_WINNT
-#define exit service_exit
-extern void service_exit (int);
-/* declare the service threads */
-void service_main (DWORD, LPTSTR *);
-void service_ctrl (DWORD);
-void worker_thread (void *);
-#define sleep(x) Sleep((DWORD) x * 1000 /* milliseconds */ );
-#endif /* SYS_WINNT */
/* ntp_config.c */
extern void getconfig P((int, char **));
@@ -63,7 +55,7 @@ struct ctl_var {
extern char * add_var P((struct ctl_var **, u_long, u_short));
extern void free_varlist P((struct ctl_var *));
extern void set_var P((struct ctl_var **, const char *, u_long, u_short));
-extern void set_sys_var P((char *, u_long, u_short));
+extern void set_sys_var P((const char *, u_long, u_short));
/* ntp_intres.c */
extern void ntp_res_name P((struct sockaddr_storage, u_short));
@@ -71,9 +63,23 @@ extern void ntp_res_recv P((void));
extern void ntp_intres P((void));
/* ntp_io.c */
+typedef struct interface_info {
+ struct interface *interface;
+ u_char action;
+} interface_info_t;
+
+typedef void (*interface_receiver_t)(void *, interface_info_t *);
+
+extern volatile int disable_dynamic_updates;
+
+extern void interface_enumerate P((interface_receiver_t, void *));
extern struct interface *findinterface P((struct sockaddr_storage *));
extern struct interface *findbcastinter P((struct sockaddr_storage *));
+extern void enable_broadcast P((struct interface *, struct sockaddr_storage *));
+extern void enable_multicast_if P((struct interface *, struct sockaddr_storage *));
+extern void interface_dump P((struct interface *));
+extern void interface_update P((interface_receiver_t, void *));
extern void init_io P((void));
extern void input_handler P((l_fp *));
extern void io_clr_stats P((void));
@@ -82,12 +88,19 @@ extern void io_unsetbclient P((void));
extern void io_multicast_add P((struct sockaddr_storage));
extern void io_multicast_del P((struct sockaddr_storage));
extern void kill_asyncio P((int));
-
extern void sendpkt P((struct sockaddr_storage *, struct interface *, int, struct pkt *, int));
+#ifdef DEBUG
+extern void collect_timing P((struct recvbuf *, const char *, int, l_fp *));
+#endif
#ifdef HAVE_SIGNALED_IO
extern void wait_for_signal P((void));
extern void unblock_io_and_alarm P((void));
extern void block_io_and_alarm P((void));
+#define UNBLOCK_IO_AND_ALARM() unblock_io_and_alarm()
+#define BLOCK_IO_AND_ALARM() block_io_and_alarm()
+#else
+#define UNBLOCK_IO_AND_ALARM()
+#define BLOCK_IO_AND_ALARM()
#endif
/* ntp_leap.c */
@@ -104,42 +117,47 @@ extern int leap_actual P((int));
/* ntp_loopfilter.c */
extern void init_loopfilter P((void));
-extern int local_clock P((struct peer *, double, double));
+extern int local_clock P((struct peer *, double));
extern void adj_host_clock P((void));
extern void loop_config P((int, double));
extern void huffpuff P((void));
+extern u_long sys_clocktime;
+extern u_long sys_tai;
/* ntp_monitor.c */
extern void init_mon P((void));
extern void mon_start P((int));
extern void mon_stop P((int));
-extern void ntp_monitor P((struct recvbuf *));
+extern int ntp_monitor P((struct recvbuf *));
+extern void ntp_monclearinterface P((struct interface *interface));
/* ntp_peer.c */
extern void init_peer P((void));
extern struct peer *findexistingpeer P((struct sockaddr_storage *, struct peer *, int));
-extern struct peer *findpeer P((struct sockaddr_storage *, struct interface *, int, int, int *));
+extern struct peer *findpeer P((struct sockaddr_storage *, struct interface *, int, int *));
extern struct peer *findpeerbyassoc P((u_int));
+extern void set_peerdstadr P((struct peer *peer, struct interface *interface));
extern struct peer *newpeer P((struct sockaddr_storage *, struct interface *, int, int, int, int, u_int, u_char, int, keyid_t));
extern void peer_all_reset P((void));
extern void peer_clr_stats P((void));
extern struct peer *peer_config P((struct sockaddr_storage *, struct interface *, int, int, int, int, u_int, int, keyid_t, u_char *));
extern void peer_reset P((struct peer *));
extern int peer_unconfig P((struct sockaddr_storage *, struct interface *, int));
+extern void refresh_all_peerinterfaces P((void));
extern void unpeer P((struct peer *));
extern void clear_all P((void));
+
#ifdef OPENSSL
extern void expire_all P((void));
#endif /* OPENSSL */
extern struct peer *findmanycastpeer P((struct recvbuf *));
-extern void resetmanycast P((void));
/* ntp_crypto.c */
#ifdef OPENSSL
extern int crypto_recv P((struct peer *, struct recvbuf *));
extern int crypto_xmit P((struct pkt *, struct sockaddr_storage *, int, struct exten *, keyid_t));
extern keyid_t session_key P((struct sockaddr_storage *, struct sockaddr_storage *, keyid_t, keyid_t, u_long));
-extern void make_keylist P((struct peer *, struct interface *));
+extern int make_keylist P((struct peer *, struct interface *));
extern void key_expire P((struct peer *));
extern void crypto_update P((void));
extern void crypto_config P((int, char *));
@@ -148,13 +166,21 @@ extern u_int crypto_ident P((struct peer *));
extern struct exten *crypto_args P((struct peer *, u_int, char *));
extern int crypto_public P((struct peer *, u_char *, u_int));
extern void value_free P((struct value *));
+extern char *iffpar_file;
+extern EVP_PKEY *iffpar_pkey;
+extern char *gqpar_file;
+extern EVP_PKEY *gqpar_pkey;
+extern char *mvpar_file;
+extern EVP_PKEY *mvpar_pkey;
+extern struct value tai_leap;
#endif /* OPENSSL */
/* ntp_proto.c */
extern void transmit P((struct peer *));
extern void receive P((struct recvbuf *));
+extern void peer_crypto_clear P((struct peer *peer));
extern void peer_clear P((struct peer *, char *));
-extern void process_packet P((struct peer *, struct pkt *, l_fp *));
+extern void process_packet P((struct peer *, struct pkt *));
extern void clock_select P((void));
extern void kod_proto P((void));
@@ -187,7 +213,7 @@ extern void process_private P((struct recvbuf *, int));
/* ntp_restrict.c */
extern void init_restrict P((void));
-extern int restrictions P((struct sockaddr_storage *));
+extern int restrictions P((struct sockaddr_storage *, int));
extern void hack_restrict P((int, struct sockaddr_storage *, struct sockaddr_storage *, int, int));
/* ntp_timer.c */
@@ -195,6 +221,9 @@ extern void init_timer P((void));
extern void reinit_timer P((void));
extern void timer P((void));
extern void timer_clr_stats P((void));
+extern void timer_interfacetimeout P((u_long));
+extern volatile int interface_interval;
+
#ifdef OPENSSL
extern char *sys_hostname;
extern l_fp sys_revoketime;
@@ -202,15 +231,19 @@ extern l_fp sys_revoketime;
/* ntp_util.c */
extern void init_util P((void));
-extern void hourly_stats P((void));
-extern void stats_config P((int, char *));
+extern void write_stats P((void));
+extern void stats_config P((int, const char *));
extern void record_peer_stats P((struct sockaddr_storage *, int, double, double, double, double));
extern void record_loop_stats P((double, double, double, double, int));
extern void record_clock_stats P((struct sockaddr_storage *, const char *));
extern void record_raw_stats P((struct sockaddr_storage *, struct sockaddr_storage *, l_fp *, l_fp *, l_fp *, l_fp *));
extern void record_sys_stats P((void));
extern void record_crypto_stats P((struct sockaddr_storage *, const char *));
+#ifdef DEBUG
+extern void record_timing_stats P((const char *));
+#endif
extern int sock_hash P((struct sockaddr_storage *));
+extern double old_drift;
/*
* Variable declarations for ntpd.
@@ -218,18 +251,13 @@ extern int sock_hash P((struct sockaddr_storage *));
/* ntp_config.c */
extern char const * progname;
-extern char sys_phone[][MAXDIAL]; /* ACTS phone numbers */
-extern char pps_device[]; /* PPS device name */
+extern char *sys_phone[]; /* ACTS phone numbers */
#if defined(HAVE_SCHED_SETSCHEDULER)
extern int config_priority_override;
extern int config_priority;
#endif
/* ntp_control.c */
-#if 0
-struct ctl_trap;
-extern struct ctl_trap ctl_trap[];
-#endif
extern int num_ctl_traps;
extern keyid_t ctl_auth_keyid; /* keyid used for authenticating write requests */
@@ -255,6 +283,11 @@ extern u_long numasyncmsgs; /* number of async messages we've sent */
/* ntp_intres.c */
extern keyid_t req_keyid; /* request keyid */
extern char * req_file; /* name of the file with configuration info */
+#ifdef SYS_WINNT
+extern HANDLE ResolverEventHandle;
+#else
+extern int resolver_pipe_fd[2]; /* used to let the resolver process alert the parent process */
+#endif /* SYS_WINNT */
/*
* Other statistics of possible interest
@@ -306,7 +339,6 @@ 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 peer_ntpdate; /* count of ntpdate peers */
-extern int forground_process; /* run the process in the forground */
/*
* Clock state machine variables
@@ -317,8 +349,8 @@ extern int tc_counter; /* poll-adjust counter */
extern u_long last_time; /* time of last clock update (s) */
extern double last_offset; /* last clock offset (s) */
extern double allan_xpt; /* Allan intercept (s) */
-extern double sys_error; /* system RMS error (s) */
-extern double sys_jitter; /* system RMS jitter (s) */
+extern double clock_jitter; /* clock jitter (s) */
+extern double sys_jitter; /* system jitter (s) */
/* ntp_monitor.c */
extern struct mon_data mon_mru_list;
@@ -341,8 +373,8 @@ extern u_long assocpeer_calls; /* number of calls to findpeerbyassoc */
extern u_long peer_allocations; /* number of allocations from the free list */
extern u_long peer_demobilizations; /* number of structs freed to free list */
extern int total_peer_structs; /* number of peer structs in circulation */
-extern int peer_associations; /* number of active associations */
-
+extern int peer_associations; /* mobilized associations */
+extern int peer_preempt; /* preemptable associations */
/* ntp_proto.c */
/*
* System variables are declared here. See Section 3.2 of the
@@ -356,6 +388,7 @@ extern double sys_rootdispersion; /* dispersion of system clock */
extern u_int32 sys_refid; /* reference source for local clock */
extern l_fp sys_reftime; /* time we were last updated */
extern struct peer *sys_peer; /* our current peer */
+extern struct peer *sys_pps; /* our current PPS peer */
extern struct peer *sys_prefer; /* our cherished peer */
extern u_long sys_automax; /* maximum session key lifetime */
@@ -374,6 +407,7 @@ extern int sys_floor; /* cluster stratum floor */
extern int sys_ceiling; /* cluster stratum ceiling */
extern u_char sys_ttl[]; /* ttl mapping vector */
extern int sys_ttlmax; /* max ttl mapping vector index */
+extern int leap_next; /* leap consensus */
/*
* Statistics counters
@@ -391,7 +425,7 @@ extern u_long sys_received; /* packets received */
/* ntp_refclock.c */
#ifdef REFCLOCK
-#if defined(PPS) || defined(HAVE_PPSAPI)
+#ifdef PPS
extern int fdpps; /* pps file descriptor */
#endif /* PPS */
#endif
@@ -417,12 +451,15 @@ extern u_long timer_xmtcalls;
/* ntp_util.c */
extern int stats_control; /* write stats to fileset? */
+extern int stats_write_period; /* # of seconds between writes. */
+extern double stats_write_tolerance;
/* ntpd.c */
extern volatile int debug; /* debugging flag */
extern int nofork; /* no-fork flag */
extern int initializing; /* initializing flag */
-#ifdef HAVE_CLOCKCTL
+#ifdef HAVE_DROPROOT
+extern int droproot; /* flag: try to drop root privileges after startup */
extern char *user; /* user to switch to */
extern char *group; /* group to switch to */
extern char *chrootdir; /* directory to chroot to */
diff --git a/contrib/ntp/include/parse.h b/contrib/ntp/include/parse.h
index 56a92e9..8b4edcf 100644
--- a/contrib/ntp/include/parse.h
+++ b/contrib/ntp/include/parse.h
@@ -1,21 +1,41 @@
/*
- * /src/NTP/ntp-4/include/parse.h,v 4.5 1998/08/09 22:23:32 kardel RELEASE_19990228_A
+ * /src/NTP/REPOSITORY/ntp4-dev/include/parse.h,v 4.12 2007/01/14 08:36:03 kardel RELEASE_20070114_A
*
- * parse.h,v 4.5 1998/08/09 22:23:32 kardel RELEASE_19990228_A
+ * parse.h,v 4.12 2007/01/14 08:36:03 kardel RELEASE_20070114_A
*
- * Copyright (C) 1989-1998 by Frank Kardel
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
*/
#ifndef __PARSE_H__
#define __PARSE_H__
#if !(defined(lint) || defined(__GNUC__))
- static char parsehrcsid[]="parse.h,v 4.5 1998/08/09 22:23:32 kardel RELEASE_19990228_A";
+ static char parsehrcsid[]="parse.h,v 4.12 2007/01/14 08:36:03 kardel RELEASE_20070114_A";
#endif
#include "ntp_types.h"
@@ -152,8 +172,11 @@ extern unsigned int splclock P((void));
/*
* operation flags - lower nibble contains fudge flags
*/
-#define PARSE_STATISTICS 0x08 /* enable statistics */
-#define PARSE_LEAP_DELETE 0x04 /* delete leap */
+#define PARSE_TRUSTTIME CLK_FLAG1 /* use flag1 to indicate the time2 references mean the trust time */
+#define PARSE_CLEAR CLK_FLAG2 /* use flag2 to control pps on assert */
+#define PARSE_PPSKERNEL CLK_FLAG3 /* use flag3 to bind PPS to kernel */
+#define PARSE_LEAP_DELETE CLK_FLAG4 /* use flag4 to force leap deletion - only necessary when earth slows down */
+
#define PARSE_FIXED_FMT 0x10 /* fixed format */
#define PARSE_PPSCLOCK 0x20 /* try to get PPS time stamp via ppsclock ioctl */
@@ -162,7 +185,7 @@ extern unsigned int splclock P((void));
*/
#define PARSE_TCMAX 400 /* maximum addition data size */
-typedef union timestamp
+typedef union
{
struct timeval tv; /* timeval - kernel view */
l_fp fp; /* fixed point - ntp view */
@@ -367,6 +390,13 @@ extern int parse_timedout P((parse_t *, timestamp_t *, struct timeval *));
* History:
*
* parse.h,v
+ * Revision 4.12 2007/01/14 08:36:03 kardel
+ * make timestamp union anonymous to avoid conflicts with
+ * some OSes that choose to create a nameing conflic here.
+ *
+ * Revision 4.11 2005/06/25 10:58:45 kardel
+ * add missing log keywords
+ *
* Revision 4.5 1998/08/09 22:23:32 kardel
* 4.0.73e2 adjustments
*
diff --git a/contrib/ntp/include/parse_conf.h b/contrib/ntp/include/parse_conf.h
index 0a30eb6..319dd54 100644
--- a/contrib/ntp/include/parse_conf.h
+++ b/contrib/ntp/include/parse_conf.h
@@ -1,21 +1,41 @@
/*
- * /src/NTP/ntp-4/include/parse_conf.h,v 4.2 1998/06/14 21:09:28 kardel RELEASE_19990228_A
+ * /src/NTP/ntp4-dev/include/parse_conf.h,v 4.7 2005/06/25 10:58:45 kardel RELEASE_20050625_A
*
- * parse_conf.h,v 4.2 1998/06/14 21:09:28 kardel RELEASE_19990228_A
+ * parse_conf.h,v 4.7 2005/06/25 10:58:45 kardel RELEASE_20050625_A
*
- * Copyright (c) 1993, 1994, 1995, 1996, 1997, 1998 by Frank Kardel
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
*/
#ifndef __PARSE_CONF_H__
#define __PARSE_CONF_H__
#if !(defined(lint) || defined(__GNUC__))
- static char prshrcsid[] = "parse_conf.h,v 4.2 1998/06/14 21:09:28 kardel RELEASE_19990228_A";
+ static char prshrcsid[] = "parse_conf.h,v 4.7 2005/06/25 10:58:45 kardel RELEASE_20050625_A";
#endif
/*
@@ -52,3 +72,12 @@ struct format
u_long flags;
};
#endif
+
+/*
+ * History:
+ *
+ * parse_conf.h,v
+ * Revision 4.7 2005/06/25 10:58:45 kardel
+ * add missing log keywords
+ *
+ */
diff --git a/contrib/ntp/include/recvbuff.h b/contrib/ntp/include/recvbuff.h
index 4fde7f1..771b90b 100644
--- a/contrib/ntp/include/recvbuff.h
+++ b/contrib/ntp/include/recvbuff.h
@@ -9,6 +9,9 @@
#include "ntp_fp.h"
#include "ntp_types.h"
+#include <isc/list.h>
+#include <isc/result.h>
+
/*
* recvbuf memory management
*/
@@ -45,8 +48,11 @@ extern HANDLE get_recv_buff_event P((void));
*/
#define RX_BUFF_SIZE 1000 /* hail Mary */
+
+typedef struct recvbuf recvbuf_t;
+
struct recvbuf {
- struct recvbuf *next; /* next buffer in chain */
+ ISC_LINK(recvbuf_t) link;
union {
struct sockaddr_storage X_recv_srcadr;
caddr_t X_recv_srcclock;
@@ -56,14 +62,14 @@ struct recvbuf {
#define recv_srcclock X_from_where.X_recv_srcclock
#define recv_peer X_from_where.X_recv_peer
#if defined HAVE_IO_COMPLETION_PORT
- IoCompletionInfo iocompletioninfo;
WSABUF wsabuff;
- DWORD AddressLength;
#else
struct sockaddr_storage srcadr; /* where packet came from */
#endif
+ int src_addr_len; /* source address length */
struct interface *dstadr; /* interface datagram arrived thru */
SOCKET fd; /* fd on which it was received */
+ int msg_flags; /* Flags received about the packet */
l_fp recv_time; /* time of arrival */
void (*receiver) P((struct recvbuf *)); /* routine to receive buffer */
int recv_length; /* number of octets received */
@@ -71,6 +77,7 @@ struct recvbuf {
struct pkt X_recv_pkt;
u_char X_recv_buffer[RX_BUFF_SIZE];
} recv_space;
+ int used;
#define recv_pkt recv_space.X_recv_pkt
#define recv_buffer recv_space.X_recv_buffer
};
@@ -81,16 +88,14 @@ extern void init_recvbuff P((int));
*/
extern void freerecvbuf P((struct recvbuf *));
-
-extern struct recvbuf * getrecvbufs P((void));
-
/* Get a free buffer (typically used so an async
* read can directly place data into the buffer
*
* The buffer is removed from the free list. Make sure
* you put it back with freerecvbuf() or
*/
-extern struct recvbuf *get_free_recv_buffer P((void));
+extern struct recvbuf *get_free_recv_buffer P((void)); /* signal safe - no malloc */
+extern struct recvbuf *get_free_recv_buffer_alloc P((void)); /* signal unsafe - may malloc */
/* Add a buffer to the full list
*/
@@ -109,5 +114,10 @@ extern u_long lowater_additions P((void));
*/
extern struct recvbuf *get_full_recv_buffer P((void));
+/*
+ * Checks to see if there are buffers to process
+ */
+extern isc_boolean_t has_full_recv_buffer P((void));
+
#endif /* defined __recvbuff_h */
diff --git a/contrib/ntp/include/timepps-SCO.h b/contrib/ntp/include/timepps-SCO.h
new file mode 100644
index 0000000..130a153
--- /dev/null
+++ b/contrib/ntp/include/timepps-SCO.h
@@ -0,0 +1,503 @@
+/***********************************************************************
+ * *
+ * Copyright (c) David L. Mills 1999-2000 *
+ * *
+ * Permission to use, copy, modify, and distribute this software and *
+ * its documentation for any purpose and without fee is hereby *
+ * granted, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission *
+ * notice appear in supporting documentation, and that the name *
+ * 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 *
+ * representations about the suitability this software for any *
+ * purpose. It is provided "as is" without express or implied *
+ * warranty. *
+ * *
+ ***********************************************************************
+ * *
+ * This header file complies with "Pulse-Per-Second API for UNIX-like *
+ * Operating Systems, Version 1.0", rfc2783. Credit is due Jeff Mogul *
+ * and Marc Brett, from whom much of this code was shamelessly stolen. *
+ * *
+ * this modified timepps.h can be used to provide a PPSAPI interface *
+ * to a machine running SCO Unix. *
+ * *
+ ***********************************************************************
+ * *
+ * A full PPSAPI interface to the SCO Unix kernel would be better, but *
+ * this at least removes the necessity for special coding from the NTP *
+ * NTP drivers. *
+ * *
+ ***********************************************************************
+ * *
+ * Some of this include file *
+ * Copyright (c) 1999 by Ulrich Windl, *
+ * based on code by Reg Clemens <reg@dwf.com> *
+ * based on code by Poul-Henning Kamp <phk@FreeBSD.org> *
+ * *
+ ***********************************************************************
+ * *
+ * "THE BEER-WARE LICENSE" (Revision 42): *
+ * <phk@FreeBSD.org> wrote this file. As long as you retain this *
+ * notice you can do whatever you want with this stuff. If we meet some*
+ * day, and you think this stuff is worth it, you can buy me a beer *
+ * in return. Poul-Henning Kamp *
+ * *
+ **********************************************************************/
+
+/*SCO UNIX version, TIOCDCDTIMESTAMP assumed to exist. */
+
+#ifndef _SYS_TIMEPPS_H_
+#define _SYS_TIMEPPS_H_
+
+#include <termios.h> /* to get TIOCDCDTIMESTAMP */
+
+/* Implementation note: the logical states ``assert'' and ``clear''
+ * are implemented in terms of the UART register, i.e. ``assert''
+ * means the bit is set.
+ */
+
+/*
+ * The following definitions are architecture independent
+ */
+
+#define PPS_API_VERS_1 1 /* API version number */
+#define PPS_JAN_1970 2208988800UL /* 1970 - 1900 in seconds */
+#define PPS_NANOSECOND 1000000000L /* one nanosecond in decimal */
+#define PPS_FRAC 4294967296. /* 2^32 as a double */
+
+#define PPS_NORMALIZE(x) /* normalize timespec */ \
+ do { \
+ if ((x).tv_nsec >= PPS_NANOSECOND) { \
+ (x).tv_nsec -= PPS_NANOSECOND; \
+ (x).tv_sec++; \
+ } else if ((x).tv_nsec < 0) { \
+ (x).tv_nsec += PPS_NANOSECOND; \
+ (x).tv_sec--; \
+ } \
+ } while (0)
+
+#define PPS_TSPECTONTP(x) /* convert timespec to l_fp */ \
+ do { \
+ double d_temp; \
+ \
+ (x).integral += (unsigned int)PPS_JAN_1970; \
+ d_temp = (x).fractional * PPS_FRAC / PPS_NANOSECOND; \
+ if (d_temp >= PPS_FRAC) \
+ (x).integral++; \
+ (x).fractional = (unsigned int)d_temp; \
+ } while (0)
+
+/*
+ * Device/implementation parameters (mode)
+ */
+
+#define PPS_CAPTUREASSERT 0x01 /* capture assert events */
+#define PPS_CAPTURECLEAR 0x02 /* capture clear events */
+#define PPS_CAPTUREBOTH 0x03 /* capture assert and clear events */
+
+#define PPS_OFFSETASSERT 0x10 /* apply compensation for assert ev. */
+#define PPS_OFFSETCLEAR 0x20 /* apply compensation for clear ev. */
+#define PPS_OFFSETBOTH 0x30 /* apply compensation for both */
+
+#define PPS_CANWAIT 0x100 /* Can we wait for an event? */
+#define PPS_CANPOLL 0x200 /* "This bit is reserved for */
+
+/*
+ * Kernel actions (mode)
+ */
+
+#define PPS_ECHOASSERT 0x40 /* feed back assert event to output */
+#define PPS_ECHOCLEAR 0x80 /* feed back clear event to output */
+
+/*
+ * Timestamp formats (tsformat)
+ */
+
+#define PPS_TSFMT_TSPEC 0x1000 /* select timespec format */
+#define PPS_TSFMT_NTPFP 0x2000 /* select NTP format */
+
+/*
+ * Kernel discipline actions (not used in Solaris)
+ */
+
+#define PPS_KC_HARDPPS 0 /* enable kernel consumer */
+#define PPS_KC_HARDPPS_PLL 1 /* phase-lock mode */
+#define PPS_KC_HARDPPS_FLL 2 /* frequency-lock mode */
+
+/*
+ * Type definitions
+ */
+
+typedef unsigned long pps_seq_t; /* sequence number */
+
+typedef struct ntp_fp {
+ unsigned int integral;
+ unsigned int fractional;
+} ntp_fp_t; /* NTP-compatible time stamp */
+
+typedef union pps_timeu { /* timestamp format */
+ struct timespec tspec;
+ ntp_fp_t ntpfp;
+ unsigned long longpad[3];
+} pps_timeu_t; /* generic data type to represent time stamps */
+
+/*
+ * Timestamp information structure
+ */
+
+typedef struct pps_info {
+ pps_seq_t assert_sequence; /* seq. num. of assert event */
+ pps_seq_t clear_sequence; /* seq. num. of clear event */
+ pps_timeu_t assert_tu; /* time of assert event */
+ pps_timeu_t clear_tu; /* time of clear event */
+ int current_mode; /* current mode bits */
+} pps_info_t;
+
+#define assert_timestamp assert_tu.tspec
+#define clear_timestamp clear_tu.tspec
+
+#define assert_timestamp_ntpfp assert_tu.ntpfp
+#define clear_timestamp_ntpfp clear_tu.ntpfp
+
+/*
+ * Parameter structure
+ */
+
+typedef struct pps_params {
+ int api_version; /* API version # */
+ int mode; /* mode bits */
+ pps_timeu_t assert_off_tu; /* offset compensation for assert */
+ pps_timeu_t clear_off_tu; /* offset compensation for clear */
+} pps_params_t;
+
+#define assert_offset assert_off_tu.tspec
+#define clear_offset clear_off_tu.tspec
+
+#define assert_offset_ntpfp assert_off_tu.ntpfp
+#define clear_offset_ntpfp clear_off_tu.ntpfp
+
+/*
+ * The following definitions are architecture-dependent
+ */
+
+#define PPS_CAP (PPS_CAPTUREASSERT | PPS_OFFSETASSERT | PPS_TSFMT_TSPEC | PPS_TSFMT_NTPFP)
+#define PPS_RO (PPS_CANWAIT | PPS_CANPOLL | PPS_TSFMT_TSPEC | PPS_TSFMT_NTPFP)
+
+typedef struct {
+ int filedes; /* file descriptor */
+ pps_params_t params; /* PPS parameters set by user */
+ struct timeval tv_save;
+ pps_seq_t serial;
+} pps_unit_t;
+
+typedef pps_unit_t* pps_handle_t; /* pps handlebars */
+
+/*
+ *------ Here begins the implementation-specific part! ------
+ */
+
+#include <errno.h>
+
+/*
+ * create PPS handle from file descriptor
+ */
+
+static inline int
+time_pps_create(
+ int filedes, /* file descriptor */
+ pps_handle_t *handle /* returned handle */
+ )
+{
+ int one = 1;
+
+ /*
+ * Check for valid arguments and attach PPS signal.
+ */
+
+ if (!handle) {
+ errno = EFAULT;
+ return (-1); /* null pointer */
+ }
+
+ /*
+ * Allocate and initialize default unit structure.
+ */
+
+ *handle = malloc(sizeof(pps_unit_t));
+ if (!(*handle)) {
+ errno = EBADF;
+ return (-1); /* what, no memory? */
+ }
+
+ memset(*handle, 0, sizeof(pps_unit_t));
+ (*handle)->filedes = filedes;
+ (*handle)->params.api_version = PPS_API_VERS_1;
+ (*handle)->params.mode = PPS_CAPTUREASSERT | PPS_TSFMT_TSPEC;
+ return (0);
+}
+
+/*
+ * release PPS handle
+ */
+
+static inline int
+time_pps_destroy(
+ pps_handle_t handle
+ )
+{
+ /*
+ * Check for valid arguments and detach PPS signal.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+ free(handle);
+ return (0);
+}
+
+/*
+ * set parameters for handle
+ */
+
+static inline int
+time_pps_setparams(
+ pps_handle_t handle,
+ const pps_params_t *params
+ )
+{
+ int mode, mode_in;
+ /*
+ * Check for valid arguments and set parameters.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!params) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+
+ /*
+ * There was no reasonable consensu in the API working group.
+ * I require `api_version' to be set!
+ */
+
+ if (params->api_version != PPS_API_VERS_1) {
+ errno = EINVAL;
+ return(-1);
+ }
+
+ /*
+ * only settable modes are PPS_CAPTUREASSERT and PPS_OFFSETASSERT
+ */
+
+ mode_in = params->mode;
+
+ /* turn off read-only bits */
+
+ mode_in &= ~PPS_RO;
+
+ /* test remaining bits, should only have captureassert and/or offsetassert */
+
+ if (mode_in & ~(PPS_CAPTUREASSERT | PPS_OFFSETASSERT)) {
+ errno = EOPNOTSUPP;
+ return(-1);
+ }
+
+ /*
+ * ok, ready to go.
+ */
+
+ mode = handle->params.mode;
+ memcpy(&handle->params, params, sizeof(pps_params_t));
+ handle->params.api_version = PPS_API_VERS_1;
+ handle->params.mode = mode | mode_in;
+ return (0);
+}
+
+/*
+ * get parameters for handle
+ */
+
+static inline int
+time_pps_getparams(
+ pps_handle_t handle,
+ pps_params_t *params
+ )
+{
+ /*
+ * Check for valid arguments and get parameters.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!params) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+
+ memcpy(params, &handle->params, sizeof(pps_params_t));
+ return (0);
+}
+
+/* (
+ * get capabilities for handle
+ */
+
+static inline int
+time_pps_getcap(
+ pps_handle_t handle,
+ int *mode
+ )
+{
+ /*
+ * Check for valid arguments and get capabilities.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!mode) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+ *mode = PPS_CAP;
+ return (0);
+}
+
+/*
+ * Fetch timestamps
+ */
+
+static inline int
+time_pps_fetch(
+ pps_handle_t handle,
+ const int tsformat,
+ pps_info_t *ppsinfo,
+ const struct timespec *timeout
+ )
+{
+ struct timeval tv;
+ pps_info_t infobuf;
+
+ /*
+ * Check for valid arguments and fetch timestamps
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!ppsinfo) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+
+ /*
+ * nb. PPS_CANWAIT is NOT set by the implementation, we can totally
+ * ignore the timeout variable.
+ */
+
+ memset(&infobuf, 0, sizeof(infobuf));
+
+ /*
+ * if not captureassert, nothing to return.
+ */
+
+ if (!handle->params.mode & PPS_CAPTUREASSERT) {
+ memcpy(ppsinfo, &infobuf, sizeof(pps_info_t));
+ return (0);
+ }
+
+ if (ioctl(instance->filedes, TIOCDCDTIMESTAMP, &tv) < 0) {
+ perror("time_pps_fetch:");
+ errno = EOPNOTSUPP;
+ return(-1);
+ }
+
+ /*
+ * fake serial here
+ */
+
+ if (tv.tv_sec != handle->tv_save.tv_sec || tv.tv_usec != handle->tv_save.tv_usec) {
+ handle->tv_save = tv;
+ handle->serial++;
+ }
+
+ /*
+ * Apply offsets as specified. Note that only assert timestamps
+ * are captured by this interface.
+ */
+
+ infobuf.assert_sequence = handle->serial;
+ infobuf.assert_timestamp.tv_sec = tv.tv_sec;
+ infobuf.assert_timestamp.tv_nsec = tv.tv_usec * 1000;
+
+ if (handle->params.mode & PPS_OFFSETASSERT) {
+ infobuf.assert_timestamp.tv_sec += handle->params.assert_offset.tv_sec;
+ infobuf.assert_timestamp.tv_nsec += handle->params.assert_offset.tv_nsec;
+ PPS_NORMALIZE(infobuf.assert_timestamp);
+ }
+
+ /*
+ * Translate to specified format
+ */
+
+ switch (tsformat) {
+ case PPS_TSFMT_TSPEC:
+ break; /* timespec format requires no translation */
+
+ case PPS_TSFMT_NTPFP: /* NTP format requires conversion to fraction form */
+ PPS_TSPECTONTP(infobuf.assert_timestamp_ntpfp);
+ break;
+
+ default:
+ errno = EINVAL;
+ return (-1);
+ }
+
+ infobuf.current_mode = handle->params.mode;
+ memcpy(ppsinfo, &infobuf, sizeof(pps_info_t));
+ return (0);
+}
+
+/*
+ * specify kernel consumer
+ */
+
+static inline int
+time_pps_kcbind(
+ pps_handle_t handle,
+ const int kernel_consumer,
+ const int edge, const int tsformat
+ )
+{
+ /*
+ * Check for valid arguments and bind kernel consumer
+ */
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+ if (geteuid() != 0) {
+ errno = EPERM;
+ return (-1); /* must be superuser */
+ }
+ errno = EOPNOTSUPP;
+ return(-1);
+}
+
+#endif /* _SYS_TIMEPPS_H_ */
diff --git a/contrib/ntp/include/timepps-Solaris.h b/contrib/ntp/include/timepps-Solaris.h
new file mode 100644
index 0000000..da8fd94
--- /dev/null
+++ b/contrib/ntp/include/timepps-Solaris.h
@@ -0,0 +1,501 @@
+/***********************************************************************
+ * *
+ * Copyright (c) David L. Mills 1999-2000 *
+ * *
+ * Permission to use, copy, modify, and distribute this software and *
+ * its documentation for any purpose and without fee is hereby *
+ * granted, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission *
+ * notice appear in supporting documentation, and that the name *
+ * 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 *
+ * representations about the suitability this software for any *
+ * purpose. It is provided "as is" without express or implied *
+ * warranty. *
+ * *
+ ***********************************************************************
+ * *
+ * This header file complies with "Pulse-Per-Second API for UNIX-like *
+ * Operating Systems, Version 1.0", rfc2783. Credit is due Jeff Mogul *
+ * and Marc Brett, from whom much of this code was shamelessly stolen. *
+ * *
+ * this modified timepps.h can be used to provide a PPSAPI interface *
+ * to a machine running Solaris (2.6 and above). *
+ * *
+ ***********************************************************************
+ * *
+ * A full PPSAPI interface to the Solaris kernel would be better, but *
+ * this at least removes the necessity for special coding from the NTP *
+ * NTP drivers. *
+ * *
+ ***********************************************************************
+ * *
+ * Some of this include file *
+ * Copyright (c) 1999 by Ulrich Windl, *
+ * based on code by Reg Clemens <reg@dwf.com> *
+ * based on code by Poul-Henning Kamp <phk@FreeBSD.org> *
+ * *
+ ***********************************************************************
+ * *
+ * "THE BEER-WARE LICENSE" (Revision 42): *
+ * <phk@FreeBSD.org> wrote this file. As long as you retain this *
+ * notice you can do whatever you want with this stuff. If we meet some*
+ * day, and you think this stuff is worth it, you can buy me a beer *
+ * in return. Poul-Henning Kamp *
+ * *
+ **********************************************************************/
+
+/* Solaris version, TIOCGPPSEV and TIOCSPPS assumed to exist. */
+
+#ifndef _SYS_TIMEPPS_H_
+#define _SYS_TIMEPPS_H_
+
+#include <termios.h> /* to get TOCGPPSEV and TIOCSPPS */
+
+/* Implementation note: the logical states ``assert'' and ``clear''
+ * are implemented in terms of the UART register, i.e. ``assert''
+ * means the bit is set.
+ */
+
+/*
+ * The following definitions are architecture independent
+ */
+
+#define PPS_API_VERS_1 1 /* API version number */
+#define PPS_JAN_1970 2208988800UL /* 1970 - 1900 in seconds */
+#define PPS_NANOSECOND 1000000000L /* one nanosecond in decimal */
+#define PPS_FRAC 4294967296. /* 2^32 as a double */
+
+#define PPS_NORMALIZE(x) /* normalize timespec */ \
+ do { \
+ if ((x).tv_nsec >= PPS_NANOSECOND) { \
+ (x).tv_nsec -= PPS_NANOSECOND; \
+ (x).tv_sec++; \
+ } else if ((x).tv_nsec < 0) { \
+ (x).tv_nsec += PPS_NANOSECOND; \
+ (x).tv_sec--; \
+ } \
+ } while (0)
+
+#define PPS_TSPECTONTP(x) /* convert timespec to l_fp */ \
+ do { \
+ double d_temp; \
+ \
+ (x).integral += (unsigned int)PPS_JAN_1970; \
+ d_temp = (x).fractional * PPS_FRAC / PPS_NANOSECOND; \
+ if (d_temp >= PPS_FRAC) \
+ (x).integral++; \
+ (x).fractional = (unsigned int)d_temp; \
+ } while (0)
+
+/*
+ * Device/implementation parameters (mode)
+ */
+
+#define PPS_CAPTUREASSERT 0x01 /* capture assert events */
+#define PPS_CAPTURECLEAR 0x02 /* capture clear events */
+#define PPS_CAPTUREBOTH 0x03 /* capture assert and clear events */
+
+#define PPS_OFFSETASSERT 0x10 /* apply compensation for assert ev. */
+#define PPS_OFFSETCLEAR 0x20 /* apply compensation for clear ev. */
+#define PPS_OFFSETBOTH 0x30 /* apply compensation for both */
+
+#define PPS_CANWAIT 0x100 /* Can we wait for an event? */
+#define PPS_CANPOLL 0x200 /* "This bit is reserved for */
+
+/*
+ * Kernel actions (mode)
+ */
+
+#define PPS_ECHOASSERT 0x40 /* feed back assert event to output */
+#define PPS_ECHOCLEAR 0x80 /* feed back clear event to output */
+
+/*
+ * Timestamp formats (tsformat)
+ */
+
+#define PPS_TSFMT_TSPEC 0x1000 /* select timespec format */
+#define PPS_TSFMT_NTPFP 0x2000 /* select NTP format */
+
+/*
+ * Kernel discipline actions (not used in Solaris)
+ */
+
+#define PPS_KC_HARDPPS 0 /* enable kernel consumer */
+#define PPS_KC_HARDPPS_PLL 1 /* phase-lock mode */
+#define PPS_KC_HARDPPS_FLL 2 /* frequency-lock mode */
+
+/*
+ * Type definitions
+ */
+
+typedef unsigned long pps_seq_t; /* sequence number */
+
+typedef struct ntp_fp {
+ unsigned int integral;
+ unsigned int fractional;
+} ntp_fp_t; /* NTP-compatible time stamp */
+
+typedef union pps_timeu { /* timestamp format */
+ struct timespec tspec;
+ ntp_fp_t ntpfp;
+ unsigned long longpad[3];
+} pps_timeu_t; /* generic data type to represent time stamps */
+
+/*
+ * Timestamp information structure
+ */
+
+typedef struct pps_info {
+ pps_seq_t assert_sequence; /* seq. num. of assert event */
+ pps_seq_t clear_sequence; /* seq. num. of clear event */
+ pps_timeu_t assert_tu; /* time of assert event */
+ pps_timeu_t clear_tu; /* time of clear event */
+ int current_mode; /* current mode bits */
+} pps_info_t;
+
+#define assert_timestamp assert_tu.tspec
+#define clear_timestamp clear_tu.tspec
+
+#define assert_timestamp_ntpfp assert_tu.ntpfp
+#define clear_timestamp_ntpfp clear_tu.ntpfp
+
+/*
+ * Parameter structure
+ */
+
+typedef struct pps_params {
+ int api_version; /* API version # */
+ int mode; /* mode bits */
+ pps_timeu_t assert_off_tu; /* offset compensation for assert */
+ pps_timeu_t clear_off_tu; /* offset compensation for clear */
+} pps_params_t;
+
+#define assert_offset assert_off_tu.tspec
+#define clear_offset clear_off_tu.tspec
+
+#define assert_offset_ntpfp assert_off_tu.ntpfp
+#define clear_offset_ntpfp clear_off_tu.ntpfp
+
+/*
+ * The following definitions are architecture-dependent
+ */
+
+#define PPS_CAP (PPS_CAPTUREASSERT | PPS_OFFSETASSERT | PPS_TSFMT_TSPEC | PPS_TSFMT_NTPFP)
+#define PPS_RO (PPS_CANWAIT | PPS_CANPOLL | PPS_TSFMT_TSPEC | PPS_TSFMT_NTPFP)
+
+typedef struct {
+ int filedes; /* file descriptor */
+ pps_params_t params; /* PPS parameters set by user */
+} pps_unit_t;
+
+typedef pps_unit_t* pps_handle_t; /* pps handlebars */
+
+/*
+ *------ Here begins the implementation-specific part! ------
+ */
+
+#include <errno.h>
+
+/*
+ * create PPS handle from file descriptor
+ */
+
+static inline int
+time_pps_create(
+ int filedes, /* file descriptor */
+ pps_handle_t *handle /* returned handle */
+ )
+{
+ int one = 1;
+
+ /*
+ * Check for valid arguments and attach PPS signal.
+ */
+
+ if (!handle) {
+ errno = EFAULT;
+ return (-1); /* null pointer */
+ }
+
+ if (ioctl(filedes, TIOCSPPS, &one) < 0) {
+ perror("refclock_ioctl: TIOCSPPS failed:");
+ return (-1);
+ }
+
+ /*
+ * Allocate and initialize default unit structure.
+ */
+
+ *handle = malloc(sizeof(pps_unit_t));
+ if (!(*handle)) {
+ errno = EBADF;
+ return (-1); /* what, no memory? */
+ }
+
+ memset(*handle, 0, sizeof(pps_unit_t));
+ (*handle)->filedes = filedes;
+ (*handle)->params.api_version = PPS_API_VERS_1;
+ (*handle)->params.mode = PPS_CAPTUREASSERT | PPS_TSFMT_TSPEC;
+ return (0);
+}
+
+/*
+ * release PPS handle
+ */
+
+static inline int
+time_pps_destroy(
+ pps_handle_t handle
+ )
+{
+ /*
+ * Check for valid arguments and detach PPS signal.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+ free(handle);
+ return (0);
+}
+
+/*
+ * set parameters for handle
+ */
+
+static inline int
+time_pps_setparams(
+ pps_handle_t handle,
+ const pps_params_t *params
+ )
+{
+ int mode, mode_in;
+ /*
+ * Check for valid arguments and set parameters.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!params) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+
+ /*
+ * There was no reasonable consensu in the API working group.
+ * I require `api_version' to be set!
+ */
+
+ if (params->api_version != PPS_API_VERS_1) {
+ errno = EINVAL;
+ return(-1);
+ }
+
+ /*
+ * only settable modes are PPS_CAPTUREASSERT and PPS_OFFSETASSERT
+ */
+
+ mode_in = params->mode;
+
+ /* turn off read-only bits */
+
+ mode_in &= ~PPS_RO;
+
+ /* test remaining bits, should only have captureassert and/or offsetassert */
+
+ if (mode_in & ~(PPS_CAPTUREASSERT | PPS_OFFSETASSERT)) {
+ errno = EOPNOTSUPP;
+ return(-1);
+ }
+
+ /*
+ * ok, ready to go.
+ */
+
+ mode = handle->params.mode;
+ memcpy(&handle->params, params, sizeof(pps_params_t));
+ handle->params.api_version = PPS_API_VERS_1;
+ handle->params.mode = mode | mode_in;
+ return (0);
+}
+
+/*
+ * get parameters for handle
+ */
+
+static inline int
+time_pps_getparams(
+ pps_handle_t handle,
+ pps_params_t *params
+ )
+{
+ /*
+ * Check for valid arguments and get parameters.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!params) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+
+ memcpy(params, &handle->params, sizeof(pps_params_t));
+ return (0);
+}
+
+/* (
+ * get capabilities for handle
+ */
+
+static inline int
+time_pps_getcap(
+ pps_handle_t handle,
+ int *mode
+ )
+{
+ /*
+ * Check for valid arguments and get capabilities.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!mode) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+ *mode = PPS_CAP;
+ return (0);
+}
+
+/*
+ * Fetch timestamps
+ */
+
+static inline int
+time_pps_fetch(
+ pps_handle_t handle,
+ const int tsformat,
+ pps_info_t *ppsinfo,
+ const struct timespec *timeout
+ )
+{
+ struct ppsclockev {
+ struct timeval tv;
+ u_int serial;
+ } ev;
+
+ pps_info_t infobuf;
+
+ /*
+ * Check for valid arguments and fetch timestamps
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!ppsinfo) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+
+ /*
+ * nb. PPS_CANWAIT is NOT set by the implementation, we can totally
+ * ignore the timeout variable.
+ */
+
+ memset(&infobuf, 0, sizeof(infobuf));
+
+ /*
+ * if not captureassert, nothing to return.
+ */
+
+ if (!handle->params.mode & PPS_CAPTUREASSERT) {
+ memcpy(ppsinfo, &infobuf, sizeof(pps_info_t));
+ return (0);
+ }
+
+ if (ioctl(handle->filedes, TIOCGPPSEV, (caddr_t) &ev) < 0) {
+ perror("time_pps_fetch:");
+ errno = EOPNOTSUPP;
+ return(-1);
+ }
+
+ /*
+ * Apply offsets as specified. Note that only assert timestamps
+ * are captured by this interface.
+ */
+
+ infobuf.assert_sequence = ev.serial;
+ infobuf.assert_timestamp.tv_sec = ev.tv.tv_sec;
+ infobuf.assert_timestamp.tv_nsec = ev.tv.tv_usec * 1000;
+
+ if (handle->params.mode & PPS_OFFSETASSERT) {
+ infobuf.assert_timestamp.tv_sec += handle->params.assert_offset.tv_sec;
+ infobuf.assert_timestamp.tv_nsec += handle->params.assert_offset.tv_nsec;
+ PPS_NORMALIZE(infobuf.assert_timestamp);
+ }
+
+ /*
+ * Translate to specified format
+ */
+
+ switch (tsformat) {
+ case PPS_TSFMT_TSPEC:
+ break; /* timespec format requires no translation */
+
+ case PPS_TSFMT_NTPFP: /* NTP format requires conversion to fraction form */
+ PPS_TSPECTONTP(infobuf.assert_timestamp_ntpfp);
+ break;
+
+ default:
+ errno = EINVAL;
+ return (-1);
+ }
+
+ infobuf.current_mode = handle->params.mode;
+ memcpy(ppsinfo, &infobuf, sizeof(pps_info_t));
+ return (0);
+}
+
+/*
+ * specify kernel consumer
+ */
+
+static inline int
+time_pps_kcbind(
+ pps_handle_t handle,
+ const int kernel_consumer,
+ const int edge, const int tsformat
+ )
+{
+ /*
+ * Check for valid arguments and bind kernel consumer
+ */
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+ if (geteuid() != 0) {
+ errno = EPERM;
+ return (-1); /* must be superuser */
+ }
+ errno = EOPNOTSUPP;
+ return(-1);
+}
+
+#endif /* _SYS_TIMEPPS_H_ */
diff --git a/contrib/ntp/include/timepps-SunOS.h b/contrib/ntp/include/timepps-SunOS.h
new file mode 100644
index 0000000..6cd166e
--- /dev/null
+++ b/contrib/ntp/include/timepps-SunOS.h
@@ -0,0 +1,504 @@
+/***********************************************************************
+ * *
+ * Copyright (c) David L. Mills 1999-2000 *
+ * *
+ * Permission to use, copy, modify, and distribute this software and *
+ * its documentation for any purpose and without fee is hereby *
+ * granted, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission *
+ * notice appear in supporting documentation, and that the name *
+ * 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 *
+ * representations about the suitability this software for any *
+ * purpose. It is provided "as is" without express or implied *
+ * warranty. *
+ * *
+ ***********************************************************************
+ * *
+ * This header file complies with "Pulse-Per-Second API for UNIX-like *
+ * Operating Systems, Version 1.0", rfc2783. Credit is due Jeff Mogul *
+ * and Marc Brett, from whom much of this code was shamelessly stolen. *
+ * *
+ * this modified timepps.h can be used to provide a PPSAPI interface *
+ * to a machine running SunOS. *
+ * *
+ ***********************************************************************
+ * *
+ * A full PPSAPI interface to the SunOS kernel would be better, but *
+ * this at least removes the necessity for special coding from the NTP *
+ * NTP drivers. *
+ * *
+ ***********************************************************************
+ * *
+ * Some of this include file *
+ * Copyright (c) 1999 by Ulrich Windl, *
+ * based on code by Reg Clemens <reg@dwf.com> *
+ * based on code by Poul-Henning Kamp <phk@FreeBSD.org> *
+ * *
+ ***********************************************************************
+ * *
+ * "THE BEER-WARE LICENSE" (Revision 42): *
+ * <phk@FreeBSD.org> wrote this file. As long as you retain this *
+ * notice you can do whatever you want with this stuff. If we meet some*
+ * day, and you think this stuff is worth it, you can buy me a beer *
+ * in return. Poul-Henning Kamp *
+ * *
+ **********************************************************************/
+
+/* SunOS version, CIOGETEV assumed to exist for SunOS */
+
+#ifndef _SYS_TIMEPPS_H_
+#define _SYS_TIMEPPS_H_
+
+#include <termios.h> /* to get CIOGETEV */
+
+/* Implementation note: the logical states ``assert'' and ``clear''
+ * are implemented in terms of the UART register, i.e. ``assert''
+ * means the bit is set.
+ */
+
+/*
+ * The following definitions are architecture independent
+ */
+
+#define PPS_API_VERS_1 1 /* API version number */
+#define PPS_JAN_1970 2208988800UL /* 1970 - 1900 in seconds */
+#define PPS_NANOSECOND 1000000000L /* one nanosecond in decimal */
+#define PPS_FRAC 4294967296. /* 2^32 as a double */
+
+#define PPS_NORMALIZE(x) /* normalize timespec */ \
+ do { \
+ if ((x).tv_nsec >= PPS_NANOSECOND) { \
+ (x).tv_nsec -= PPS_NANOSECOND; \
+ (x).tv_sec++; \
+ } else if ((x).tv_nsec < 0) { \
+ (x).tv_nsec += PPS_NANOSECOND; \
+ (x).tv_sec--; \
+ } \
+ } while (0)
+
+#define PPS_TSPECTONTP(x) /* convert timespec to l_fp */ \
+ do { \
+ double d_temp; \
+ \
+ (x).integral += (unsigned int)PPS_JAN_1970; \
+ d_temp = (x).fractional * PPS_FRAC / PPS_NANOSECOND; \
+ if (d_temp >= PPS_FRAC) \
+ (x).integral++; \
+ (x).fractional = (unsigned int)d_temp; \
+ } while (0)
+
+/*
+ * Device/implementation parameters (mode)
+ */
+
+#define PPS_CAPTUREASSERT 0x01 /* capture assert events */
+#define PPS_CAPTURECLEAR 0x02 /* capture clear events */
+#define PPS_CAPTUREBOTH 0x03 /* capture assert and clear events */
+
+#define PPS_OFFSETASSERT 0x10 /* apply compensation for assert ev. */
+#define PPS_OFFSETCLEAR 0x20 /* apply compensation for clear ev. */
+#define PPS_OFFSETBOTH 0x30 /* apply compensation for both */
+
+#define PPS_CANWAIT 0x100 /* Can we wait for an event? */
+#define PPS_CANPOLL 0x200 /* "This bit is reserved for */
+
+/*
+ * Kernel actions (mode)
+ */
+
+#define PPS_ECHOASSERT 0x40 /* feed back assert event to output */
+#define PPS_ECHOCLEAR 0x80 /* feed back clear event to output */
+
+/*
+ * Timestamp formats (tsformat)
+ */
+
+#define PPS_TSFMT_TSPEC 0x1000 /* select timespec format */
+#define PPS_TSFMT_NTPFP 0x2000 /* select NTP format */
+
+/*
+ * Kernel discipline actions (not used in SunOS)
+ */
+
+#define PPS_KC_HARDPPS 0 /* enable kernel consumer */
+#define PPS_KC_HARDPPS_PLL 1 /* phase-lock mode */
+#define PPS_KC_HARDPPS_FLL 2 /* frequency-lock mode */
+
+/*
+ * Type definitions
+ */
+
+typedef unsigned long pps_seq_t; /* sequence number */
+
+typedef struct ntp_fp {
+ unsigned int integral;
+ unsigned int fractional;
+} ntp_fp_t; /* NTP-compatible time stamp */
+
+typedef union pps_timeu { /* timestamp format */
+ struct timespec tspec;
+ ntp_fp_t ntpfp;
+ unsigned long longpad[3];
+} pps_timeu_t; /* generic data type to represent time stamps */
+
+/*
+ * Timestamp information structure
+ */
+
+typedef struct pps_info {
+ pps_seq_t assert_sequence; /* seq. num. of assert event */
+ pps_seq_t clear_sequence; /* seq. num. of clear event */
+ pps_timeu_t assert_tu; /* time of assert event */
+ pps_timeu_t clear_tu; /* time of clear event */
+ int current_mode; /* current mode bits */
+} pps_info_t;
+
+#define assert_timestamp assert_tu.tspec
+#define clear_timestamp clear_tu.tspec
+
+#define assert_timestamp_ntpfp assert_tu.ntpfp
+#define clear_timestamp_ntpfp clear_tu.ntpfp
+
+/*
+ * Parameter structure
+ */
+
+typedef struct pps_params {
+ int api_version; /* API version # */
+ int mode; /* mode bits */
+ pps_timeu_t assert_off_tu; /* offset compensation for assert */
+ pps_timeu_t clear_off_tu; /* offset compensation for clear */
+} pps_params_t;
+
+#define assert_offset assert_off_tu.tspec
+#define clear_offset clear_off_tu.tspec
+
+#define assert_offset_ntpfp assert_off_tu.ntpfp
+#define clear_offset_ntpfp clear_off_tu.ntpfp
+
+/*
+ * The following definitions are architecture-dependent
+ */
+
+#define PPS_CAP (PPS_CAPTUREASSERT | PPS_OFFSETASSERT | PPS_TSFMT_TSPEC | PPS_TSFMT_NTPFP)
+#define PPS_RO (PPS_CANWAIT | PPS_CANPOLL | PPS_TSFMT_TSPEC | PPS_TSFMT_NTPFP)
+
+typedef struct {
+ int filedes; /* file descriptor */
+ pps_params_t params; /* PPS parameters set by user */
+} pps_unit_t;
+
+typedef pps_unit_t* pps_handle_t; /* pps handlebars */
+
+/*
+ *------ Here begins the implementation-specific part! ------
+ */
+
+#include <errno.h>
+
+/*
+ * create PPS handle from file descriptor
+ */
+
+static inline int
+time_pps_create(
+ int filedes, /* file descriptor */
+ pps_handle_t *handle /* returned handle */
+ )
+{
+ /*
+ * Check for valid arguments and attach PPS signal.
+ */
+
+ if (!handle) {
+ errno = EFAULT;
+ return (-1); /* null pointer */
+ }
+
+ if (ioctl(filedes, I_PUSH, "ppsclock") < 0) {
+ perror("time_pps_create: I_PUSH ppsclock failed");
+ return (-1);
+ }
+
+ /*
+ * Allocate and initialize default unit structure.
+ */
+
+ *handle = malloc(sizeof(pps_unit_t));
+ if (!(*handle)) {
+ errno = EBADF;
+ return (-1); /* what, no memory? */
+ }
+
+ memset(*handle, 0, sizeof(pps_unit_t));
+ (*handle)->filedes = filedes;
+ (*handle)->params.api_version = PPS_API_VERS_1;
+ (*handle)->params.mode = PPS_CAPTUREASSERT | PPS_TSFMT_TSPEC;
+ return (0);
+}
+
+/*
+ * release PPS handle
+ */
+
+static inline int
+time_pps_destroy(
+ pps_handle_t handle
+ )
+{
+ /*
+ * Check for valid arguments and detach PPS signal.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+ free(handle);
+ return (0);
+}
+
+/*
+ * set parameters for handle
+ */
+
+static inline int
+time_pps_setparams(
+ pps_handle_t handle,
+ const pps_params_t *params
+ )
+{
+ int mode, mode_in;
+ /*
+ * Check for valid arguments and set parameters.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!params) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+
+ /*
+ * There was no reasonable consensu in the API working group.
+ * I require `api_version' to be set!
+ */
+
+ if (params->api_version != PPS_API_VERS_1) {
+ errno = EINVAL;
+ return(-1);
+ }
+
+ /*
+ * only settable modes are PPS_CAPTUREASSERT and PPS_OFFSETASSERT
+ */
+
+ mode_in = params->mode;
+
+ /* turn off read-only bits */
+
+ mode_in &= ~PPS_RO;
+
+ /* test remaining bits, should only have captureassert and/or offsetassert */
+
+ if (mode_in & ~(PPS_CAPTUREASSERT | PPS_OFFSETASSERT)) {
+ errno = EOPNOTSUPP;
+ return(-1);
+ }
+
+ /*
+ * ok, ready to go.
+ */
+
+ mode = handle->params.mode;
+ memcpy(&handle->params, params, sizeof(pps_params_t));
+ handle->params.api_version = PPS_API_VERS_1;
+ handle->params.mode = mode | mode_in;
+ return (0);
+}
+
+/*
+ * get parameters for handle
+ */
+
+static inline int
+time_pps_getparams(
+ pps_handle_t handle,
+ pps_params_t *params
+ )
+{
+ /*
+ * Check for valid arguments and get parameters.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!params) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+
+ memcpy(params, &handle->params, sizeof(pps_params_t));
+ return (0);
+}
+
+/* (
+ * get capabilities for handle
+ */
+
+static inline int
+time_pps_getcap(
+ pps_handle_t handle,
+ int *mode
+ )
+{
+ /*
+ * Check for valid arguments and get capabilities.
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!mode) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+ *mode = PPS_CAP;
+ return (0);
+}
+
+/*
+ * Fetch timestamps
+ */
+
+static inline int
+time_pps_fetch(
+ pps_handle_t handle,
+ const int tsformat,
+ pps_info_t *ppsinfo,
+ const struct timespec *timeout
+ )
+{
+ struct ppsclockev {
+ struct timeval tv;
+ u_int serial;
+ } ev;
+ pps_info_t infobuf;
+
+ /*
+ * Check for valid arguments and fetch timestamps
+ */
+
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+
+ if (!ppsinfo) {
+ errno = EFAULT;
+ return (-1); /* bad argument */
+ }
+
+ /*
+ * nb. PPS_CANWAIT is NOT set by the implementation, we can totally
+ * ignore the timeout variable.
+ */
+
+ memset(&infobuf, 0, sizeof(infobuf));
+
+ /*
+ * if not captureassert, nothing to return.
+ */
+
+ if (!handle->params.mode & PPS_CAPTUREASSERT) {
+ memcpy(ppsinfo, &infobuf, sizeof(pps_info_t));
+ return (0);
+ }
+
+#if defined(__STDC__)
+#define CIOGETEV _IOR('C', 0, struct ppsclockev) /* get last pps event */
+#else
+#define CIOGETEV _IOR(C, 0, struct ppsclockev) /* get last pps event */
+#endif
+
+ if (ioctl(handle->filedes, CIOGETEV, (caddr_t) &ev) < 0) {
+ perror("time_pps_fetch:");
+ errno = EOPNOTSUPP;
+ return(-1);
+ }
+
+ /*
+ * Apply offsets as specified. Note that only assert timestamps
+ * are captured by this interface.
+ */
+
+ infobuf.assert_sequence = ev.serial;
+ infobuf.assert_timestamp.tv_sec = ev.tv.tv_sec;
+ infobuf.assert_timestamp.tv_nsec = ev.tv.tv_usec * 1000;
+
+ if (handle->params.mode & PPS_OFFSETASSERT) {
+ infobuf.assert_timestamp.tv_sec += handle->params.assert_offset.tv_sec;
+ infobuf.assert_timestamp.tv_nsec += handle->params.assert_offset.tv_nsec;
+ PPS_NORMALIZE(infobuf.assert_timestamp);
+ }
+
+ /*
+ * Translate to specified format
+ */
+
+ switch (tsformat) {
+ case PPS_TSFMT_TSPEC:
+ break; /* timespec format requires no translation */
+
+ case PPS_TSFMT_NTPFP: /* NTP format requires conversion to fraction form */
+ PPS_TSPECTONTP(infobuf.assert_timestamp_ntpfp);
+ break;
+
+ default:
+ errno = EINVAL;
+ return (-1);
+ }
+
+ infobuf.current_mode = handle->params.mode;
+ memcpy(ppsinfo, &infobuf, sizeof(pps_info_t));
+ return (0);
+}
+
+/*
+ * specify kernel consumer
+ */
+
+static inline int
+time_pps_kcbind(
+ pps_handle_t handle,
+ const int kernel_consumer,
+ const int edge, const int tsformat
+ )
+{
+ /*
+ * Check for valid arguments and bind kernel consumer
+ */
+ if (!handle) {
+ errno = EBADF;
+ return (-1); /* bad handle */
+ }
+ if (geteuid() != 0) {
+ errno = EPERM;
+ return (-1); /* must be superuser */
+ }
+ errno = EOPNOTSUPP;
+ return(-1);
+}
+
+#endif /* _SYS_TIMEPPS_H_ */
diff --git a/contrib/ntp/include/trimble.h b/contrib/ntp/include/trimble.h
index 58a1a3a..0387639 100644
--- a/contrib/ntp/include/trimble.h
+++ b/contrib/ntp/include/trimble.h
@@ -1,9 +1,36 @@
/*
- * /src/NTP/ntp-4/include/trimble.h,v 4.4 1999/02/28 11:41:11 kardel RELEASE_19990228_A
+ * /src/NTP/ntp4-dev/include/trimble.h,v 4.6 2005/04/16 17:32:10 kardel RELEASE_20050508_A
+ *
+ * trimble.h,v 4.6 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* $Created: Sun Aug 2 16:16:49 1998 $
*
- * Copyright (C) 1998 by Frank Kardel
+ * Copyright (c) 1998-2005 by Frank Kardel <kardel <AT> ntp.org>
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#ifndef TRIMBLE_H
#define TRIMBLE_H
@@ -109,7 +136,15 @@ extern cmd_info_t *trimble_convert P((unsigned int cmd, cmd_info_t *tbl));
#endif
/*
+ * History:
+ *
* trimble.h,v
+ * Revision 4.6 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.5 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.4 1999/02/28 11:41:11 kardel
* (CMD_RUTCPARAM): control variable name unification
*
diff --git a/contrib/ntp/include/version.def b/contrib/ntp/include/version.def
new file mode 100644
index 0000000..b17d656
--- /dev/null
+++ b/contrib/ntp/include/version.def
@@ -0,0 +1 @@
+version = '4.2.4p5';
diff --git a/contrib/ntp/install-sh b/contrib/ntp/install-sh
index 6ce63b9..4d4a951 100755
--- a/contrib/ntp/install-sh
+++ b/contrib/ntp/install-sh
@@ -1,7 +1,8 @@
#!/bin/sh
-#
# install - install a program, script, or datafile
-#
+
+scriptversion=2005-05-14.22
+
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
@@ -41,13 +42,11 @@
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
-
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
-
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
@@ -59,236 +58,266 @@ stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
+chowncmd=
+chgrpcmd=
+stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd=$cpprog
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd=$stripprog
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "$0: no input file specified" >&2
- exit 1
-else
- :
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d "$dst" ]; then
- instcmd=:
- chmodcmd=""
- else
- instcmd=$mkdirprog
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f "$src" ] || [ -d "$src" ]
- then
- :
- else
- echo "$0: $src does not exist" >&2
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "$0: no destination specified" >&2
- exit 1
- else
- :
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d "$dst" ]
- then
- dst=$dst/`basename "$src"`
- else
- :
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
- '
-IFS="${IFS-$defaultIFS}"
-
-oIFS=$IFS
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS=$oIFS
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp=$pathcomp$1
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c (ignored)
+-d create directories instead of installing files.
+-g GROUP $chgrpprog installed files to GROUP.
+-m MODE $chmodprog installed files to MODE.
+-o USER $chownprog installed files to USER.
+-s $stripprog installed files.
+-t DIRECTORY install into DIRECTORY.
+-T report an error if DSTFILE is a directory.
+--help display this help and exit.
+--version display version info and exit.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+ case $1 in
+ -c) shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd=$stripprog
+ shift
+ continue;;
+
+ -t) dstarg=$2
shift
+ shift
+ continue;;
- if [ ! -d "$pathcomp" ] ;
- then
- $mkdirprog "$pathcomp"
- else
- :
- fi
-
- pathcomp=$pathcomp/
+ -T) no_target_directory=true
+ shift
+ continue;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ *) # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ test -n "$dir_arg$dstarg" && break
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dstarg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dstarg"
+ shift # fnord
+ fi
+ shift # arg
+ dstarg=$arg
+ done
+ break;;
+ esac
done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd "$dst" &&
- if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename "$dst"`
- else
- dstfile=`basename "$dst" $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename "$dst"`
- else
- :
- fi
-
-# Make a couple of temp file names in the proper directory.
-
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
-
-# Trap to clean up temp files at exit.
-
- trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
- trap '(exit $?); exit' 1 2 13 15
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd "$src" "$dsttmp" &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
-
-# Now remove or move aside any old file at destination location. We try this
-# two ways since rm can't unlink itself on some systems and the destination
-# file might be busy for other reasons. In this case, the final cleanup
-# might fail but the new file should still install successfully.
-
-{
- if [ -f "$dstdir/$dstfile" ]
- then
- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
- $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
- {
- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
- (exit 1); exit
- }
- else
- :
- fi
-} &&
-
-# Now rename the file to the real destination.
+if test -z "$1"; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src ;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ src=
+
+ if test -d "$dst"; then
+ mkdircmd=:
+ chmodcmd=
+ else
+ mkdircmd=$mkdirprog
+ fi
+ else
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dstarg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dstarg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst ;;
+ esac
-fi &&
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dstarg: Is a directory" >&2
+ exit 1
+ fi
+ dst=$dst/`basename "$src"`
+ fi
+ fi
+
+ # This sed command emulates the dirname command.
+ dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+
+ # Make sure that the destination directory exists.
+
+ # Skip lots of stat calls in the usual case.
+ if test ! -d "$dstdir"; then
+ defaultIFS='
+ '
+ IFS="${IFS-$defaultIFS}"
+
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+ set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ shift
+ IFS=$oIFS
+
+ pathcomp=
+
+ while test $# -ne 0 ; do
+ pathcomp=$pathcomp$1
+ shift
+ if test ! -d "$pathcomp"; then
+ $mkdirprog "$pathcomp"
+ # mkdir can fail with a `File exist' error in case several
+ # install-sh are creating the directory concurrently. This
+ # is OK.
+ test -d "$pathcomp" || exit
+ fi
+ pathcomp=$pathcomp/
+ done
+ fi
+
+ if test -n "$dir_arg"; then
+ $doit $mkdircmd "$dst" \
+ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+ else
+ dstfile=`basename "$dst"`
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Copy the file name to the temp name.
+ $doit $cpprog "$src" "$dsttmp" &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+ # Now rename the file to the real destination.
+ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+ || {
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ if test -f "$dstdir/$dstfile"; then
+ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ || {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+ (exit 1); exit 1
+ }
+ else
+ :
+ fi
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+ }
+ }
+ fi || { (exit 1); exit 1; }
+done
# The final little trick to "correctly" pass the exit status to the exit trap.
-
{
- (exit 0); exit
+ (exit 0); 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/contrib/ntp/kernel/Makefile.in b/contrib/ntp/kernel/Makefile.in
index 07eb378..1f39c1a 100644
--- a/contrib/ntp/kernel/Makefile.in
+++ b/contrib/ntp/kernel/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -13,7 +13,6 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
-
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -21,7 +20,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +35,42 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+subdir = kernel
+DIST_COMMON = README $(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/hs_ulong_const.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 =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +78,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +94,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +149,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +184,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,39 +192,54 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
SUBDIRS = sys
ETAGS_ARGS = Makefile.am
EXTRA_DIST = chuinit.c clkinit.c tty_chu.c tty_chu_STREAMS.c tty_clk.c tty_clk_STREAMS.c
-subdir = kernel
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-
-RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
- ps-recursive install-info-recursive uninstall-info-recursive \
- all-recursive install-data-recursive install-exec-recursive \
- installdirs-recursive install-recursive uninstall-recursive \
- check-recursive installcheck-recursive
-DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am
-DIST_SUBDIRS = $(SUBDIRS)
all: all-recursive
.SUFFIXES:
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(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 kernel/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu kernel/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+ $(AUTOMAKE) --foreign kernel/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:
# This directory's subdirectories are mostly independent; you can cd
@@ -188,7 +249,13 @@ uninstall-info-am:
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
- @set fnord $$MAKEFLAGS; amf=$$2; \
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -200,7 +267,7 @@ $(RECURSIVE_TARGETS):
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
@@ -208,7 +275,13 @@ $(RECURSIVE_TARGETS):
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
- @set fnord $$MAKEFLAGS; amf=$$2; \
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
@@ -229,7 +302,7 @@ maintainer-clean-recursive:
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
- || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
+ || eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
@@ -240,14 +313,6 @@ ctags-recursive:
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -256,19 +321,22 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
- if (etags --etags-include --version) >/dev/null 2>&1; then \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
+ empty_fix=.; \
else \
include_option=--include; \
+ empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -f $$subdir/TAGS && \
+ test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
@@ -278,10 +346,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -304,10 +373,6 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -321,7 +386,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -336,15 +401,17 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
- list='$(SUBDIRS)'; for subdir in $$list; do \
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
- test -d $(distdir)/$$subdir \
- || mkdir $(distdir)/$$subdir \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$(top_distdir)" \
- distdir=../$(distdir)/$$subdir \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
@@ -354,7 +421,6 @@ check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
-
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
@@ -366,7 +432,7 @@ install-am: all-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -374,23 +440,26 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -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-recursive
-clean-am: clean-generic mostlyclean-am
+clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
dvi: dvi-recursive
dvi-am:
+html: html-recursive
+
info: info-recursive
info-am:
@@ -411,7 +480,7 @@ maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
-mostlyclean-am: mostlyclean-generic
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
@@ -425,20 +494,18 @@ uninstall-am: uninstall-info-am
uninstall-info: uninstall-info-recursive
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
- clean-generic clean-recursive ctags ctags-recursive distclean \
- distclean-generic distclean-recursive distclean-tags distdir \
- dvi dvi-am dvi-recursive info info-am info-recursive install \
- install-am install-data install-data-am install-data-recursive \
- install-exec install-exec-am install-exec-recursive \
- install-info install-info-am install-info-recursive install-man \
- install-recursive install-strip installcheck installcheck-am \
- installdirs installdirs-am installdirs-recursive \
- maintainer-clean maintainer-clean-generic \
- maintainer-clean-recursive mostlyclean mostlyclean-generic \
- mostlyclean-recursive pdf pdf-am pdf-recursive ps ps-am \
- ps-recursive tags tags-recursive uninstall uninstall-am \
- uninstall-info-am uninstall-info-recursive uninstall-recursive
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+ clean clean-generic clean-libtool clean-recursive ctags \
+ ctags-recursive distclean distclean-generic distclean-libtool \
+ distclean-recursive 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 installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-generic mostlyclean-libtool \
+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+ 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.
diff --git a/contrib/ntp/kernel/chuinit.c b/contrib/ntp/kernel/chuinit.c
index 5d73e52..270c3d5 100644
--- a/contrib/ntp/kernel/chuinit.c
+++ b/contrib/ntp/kernel/chuinit.c
@@ -1,8 +1,6 @@
/*
** dynamically loadable chu driver
**
-** /src/NTP/REPOSITORY/v3/kernel/chuinit.c,v 1.1.1.1 1994/07/11 07:56:25 kardel Exp
-**
** william robertson <rob@agate.berkeley.edu>
*/
diff --git a/contrib/ntp/kernel/clkinit.c b/contrib/ntp/kernel/clkinit.c
index 1af57fd..716ca81 100644
--- a/contrib/ntp/kernel/clkinit.c
+++ b/contrib/ntp/kernel/clkinit.c
@@ -1,8 +1,6 @@
/*
** dynamically loadable clk driver
**
-** /src/NTP/REPOSITORY/v3/kernel/clkinit.c,v 1.1.1.1 1994/07/11 07:56:25 kardel Exp
-**
** william robertson <rob@agate.berkeley.edu>
*/
diff --git a/contrib/ntp/kernel/sys/Makefile.in b/contrib/ntp/kernel/sys/Makefile.in
index e8635a3..e24a0e3 100644
--- a/contrib/ntp/kernel/sys/Makefile.in
+++ b/contrib/ntp/kernel/sys/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -21,7 +21,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ../..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +36,37 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+subdir = kernel/sys
+DIST_COMMON = README $(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/hs_ulong_const.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 = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +74,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +90,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +145,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +180,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,11 +188,7 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
#AUTOMAKE_OPTIONS = ../../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../../util/ansi2knr
@@ -161,34 +199,49 @@ noinst_HEADERS = bsd_audioirig.h chudefs.h clkdefs.h i8253.h parsestreams.h \
# HMS: Avoid bug in automake
#ETAGS_ARGS = ""
ETAGS_ARGS = Makefile.am
-subdir = kernel/sys
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-HEADERS = $(noinst_HEADERS)
-
-DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.in \
- Makefile.am
all: all-am
.SUFFIXES:
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(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 kernel/sys/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu kernel/sys/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+ $(AUTOMAKE) --foreign kernel/sys/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:
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -197,6 +250,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -208,10 +262,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -234,10 +289,6 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ../..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -251,7 +302,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -269,7 +320,6 @@ distdir: $(DISTFILES)
check-am: all-am
check: check-am
all-am: Makefile $(HEADERS)
-
installdirs:
install: install-am
install-exec: install-exec-am
@@ -282,7 +332,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -290,24 +340,26 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -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 mostlyclean-am
+clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
-
-distclean-am: clean-am distclean-generic distclean-tags
+distclean-am: clean-am distclean-generic distclean-libtool \
+ distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
@@ -324,12 +376,11 @@ 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-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
@@ -341,14 +392,16 @@ ps-am:
uninstall-am: uninstall-info-am
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic ctags \
- distclean distclean-generic distclean-tags distdir dvi dvi-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 pdf pdf-am ps ps-am tags \
- uninstall 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.
diff --git a/contrib/ntp/kernel/sys/parsestreams.h b/contrib/ntp/kernel/sys/parsestreams.h
index 47649b3..e784f9e 100644
--- a/contrib/ntp/kernel/sys/parsestreams.h
+++ b/contrib/ntp/kernel/sys/parsestreams.h
@@ -1,19 +1,38 @@
/*
- * /src/NTP/ntp-4/kernel/sys/parsestreams.h,v 4.4 1998/06/14 21:09:32 kardel RELEASE_19990228_A
+ * /src/NTP/ntp4-dev/kernel/sys/parsestreams.h,v 4.5 2005/06/25 10:52:47 kardel RELEASE_20050625_A
*
- * parsestreams.h,v 4.4 1998/06/14 21:09:32 kardel RELEASE_19990228_A
+ * parsestreams.h,v 4.5 2005/06/25 10:52:47 kardel RELEASE_20050625_A
*
- * Copyright (c) 1989-1998 by Frank Kardel
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
*
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*/
#if !(defined(lint) || defined(__GNUC__))
- static char sysparsehrcsid[] = "parsestreams.h,v 4.4 1998/06/14 21:09:32 kardel RELEASE_19990228_A";
+ static char sysparsehrcsid[] = "parsestreams.h,v 4.5 2005/06/25 10:52:47 kardel RELEASE_20050625_A";
#endif
#undef PARSEKERNEL
@@ -87,7 +106,12 @@ extern int parsedebug;
#endif
/*
+ * History:
+ *
* parsestreams.h,v
+ * Revision 4.5 2005/06/25 10:52:47 kardel
+ * fix version id / add version log
+ *
* Revision 4.4 1998/06/14 21:09:32 kardel
* Sun acc cleanup
*
diff --git a/contrib/ntp/libisc/ifiter_getifaddrs.c b/contrib/ntp/libisc/ifiter_getifaddrs.c
new file mode 100644
index 0000000..f20c1b3
--- /dev/null
+++ b/contrib/ntp/libisc/ifiter_getifaddrs.c
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2003 Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* $Id: ifiter_getifaddrs.c,v 1.2.68.3 2004/03/06 08:14:59 marka Exp $ */
+
+/*
+ * Obtain the list of network interfaces using the getifaddrs(3) library.
+ */
+
+#include <ifaddrs.h>
+
+#define IFITER_MAGIC ISC_MAGIC('I', 'F', 'I', 'G')
+#define VALID_IFITER(t) ISC_MAGIC_VALID(t, IFITER_MAGIC)
+
+struct isc_interfaceiter {
+ unsigned int magic; /* Magic number. */
+ isc_mem_t *mctx;
+ void *buf; /* (unused) */
+ unsigned int bufsize; /* (always 0) */
+ struct ifaddrs *ifaddrs; /* List of ifaddrs */
+ struct ifaddrs *pos; /* Ptr to current ifaddr */
+ isc_interface_t current; /* Current interface data. */
+ isc_result_t result; /* Last result code. */
+};
+
+isc_result_t
+isc_interfaceiter_create(isc_mem_t *mctx, isc_interfaceiter_t **iterp) {
+ isc_interfaceiter_t *iter;
+ isc_result_t result;
+ char strbuf[ISC_STRERRORSIZE];
+
+ REQUIRE(iterp != NULL);
+ REQUIRE(*iterp == NULL);
+
+ iter = isc_mem_get(mctx, sizeof(*iter));
+ if (iter == NULL)
+ return (ISC_R_NOMEMORY);
+
+ iter->mctx = mctx;
+ iter->buf = NULL;
+ iter->bufsize = 0;
+ iter->ifaddrs = NULL;
+
+ if (getifaddrs(&iter->ifaddrs) < 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);
+ result = ISC_R_UNEXPECTED;
+ goto failure;
+ }
+
+ /*
+ * A newly created iterator has an undefined position
+ * until isc_interfaceiter_first() is called.
+ */
+ iter->pos = NULL;
+ iter->result = ISC_R_FAILURE;
+
+ iter->magic = IFITER_MAGIC;
+ *iterp = iter;
+ return (ISC_R_SUCCESS);
+
+ failure:
+ if (iter->ifaddrs != NULL) /* just in case */
+ freeifaddrs(iter->ifaddrs);
+ isc_mem_put(mctx, iter, sizeof(*iter));
+ return (result);
+}
+
+/*
+ * Get information about the current interface to iter->current.
+ * If successful, return ISC_R_SUCCESS.
+ * If the interface has an unsupported address family,
+ * return ISC_R_IGNORE.
+ */
+
+static isc_result_t
+internal_current(isc_interfaceiter_t *iter) {
+ struct ifaddrs *ifa;
+ int family;
+ unsigned int namelen;
+
+ REQUIRE(VALID_IFITER(iter));
+
+ ifa = iter->pos;
+
+ INSIST(ifa != NULL);
+ INSIST(ifa->ifa_name != NULL);
+ INSIST(ifa->ifa_addr != NULL);
+
+ family = ifa->ifa_addr->sa_family;
+ if (family != AF_INET && family != AF_INET6)
+ return (ISC_R_IGNORE);
+
+ memset(&iter->current, 0, sizeof(iter->current));
+
+ namelen = strlen(ifa->ifa_name);
+ if (namelen > sizeof(iter->current.name) - 1)
+ namelen = sizeof(iter->current.name) - 1;
+
+ memset(iter->current.name, 0, sizeof(iter->current.name));
+ memcpy(iter->current.name, ifa->ifa_name, namelen);
+
+ iter->current.flags = 0;
+
+ if ((ifa->ifa_flags & IFF_UP) != 0)
+ iter->current.flags |= INTERFACE_F_UP;
+
+ if ((ifa->ifa_flags & IFF_POINTOPOINT) != 0)
+ iter->current.flags |= INTERFACE_F_POINTTOPOINT;
+
+ if ((ifa->ifa_flags & IFF_LOOPBACK) != 0)
+ iter->current.flags |= INTERFACE_F_LOOPBACK;
+
+ if ((ifa->ifa_flags & IFF_BROADCAST) != 0) {
+ iter->current.flags |= INTERFACE_F_BROADCAST;
+ }
+
+#ifdef IFF_MULTICAST
+ if ((ifa->ifa_flags & IFF_MULTICAST) != 0) {
+ iter->current.flags |= INTERFACE_F_MULTICAST;
+ }
+#endif
+ iter->current.af = family;
+
+ get_addr(family, &iter->current.address, ifa->ifa_addr, ifa->ifa_name);
+
+ if (ifa->ifa_netmask != NULL)
+ get_addr(family, &iter->current.netmask, ifa->ifa_netmask,
+ ifa->ifa_name);
+
+ if (ifa->ifa_dstaddr != NULL &&
+ (iter->current.flags & INTERFACE_F_POINTTOPOINT) != 0)
+ get_addr(family, &iter->current.dstaddress, ifa->ifa_dstaddr,
+ ifa->ifa_name);
+
+ if (ifa->ifa_broadaddr != NULL &&
+ (iter->current.flags & INTERFACE_F_BROADCAST) != 0)
+ get_addr(family, &iter->current.broadcast, ifa->ifa_broadaddr,
+ ifa->ifa_name);
+
+ return (ISC_R_SUCCESS);
+}
+
+/*
+ * Step the iterator to the next interface. Unlike
+ * isc_interfaceiter_next(), this may leave the iterator
+ * positioned on an interface that will ultimately
+ * be ignored. Return ISC_R_NOMORE if there are no more
+ * interfaces, otherwise ISC_R_SUCCESS.
+ */
+static isc_result_t
+internal_next(isc_interfaceiter_t *iter) {
+ iter->pos = iter->pos->ifa_next;
+
+ if (iter->pos == NULL)
+ return (ISC_R_NOMORE);
+
+ return (ISC_R_SUCCESS);
+}
+
+static void
+internal_destroy(isc_interfaceiter_t *iter) {
+ if (iter->ifaddrs)
+ freeifaddrs(iter->ifaddrs);
+ iter->ifaddrs = NULL;
+}
+
+static
+void internal_first(isc_interfaceiter_t *iter) {
+ iter->pos = iter->ifaddrs;
+}
diff --git a/contrib/ntp/libisc/ifiter_ioctl.c b/contrib/ntp/libisc/ifiter_ioctl.c
index bf731e7..e069560 100644
--- a/contrib/ntp/libisc/ifiter_ioctl.c
+++ b/contrib/ntp/libisc/ifiter_ioctl.c
@@ -1,21 +1,21 @@
/*
- * Copyright (C) 1999-2001 Internet Software Consortium.
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1999-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: ifiter_ioctl.c,v 1.34 2002/08/16 00:05:57 marka Exp $ */
+/* $Id: ifiter_ioctl.c,v 1.19.2.5.2.14 2004/06/22 04:40:23 marka Exp $ */
/*
* Obtain the list of network interfaces using the SIOCGLIFCONF ioctl.
@@ -40,6 +40,7 @@
#define lifr_dstaddr iflr_dstaddr
#define lifr_broadaddr iflr_broadaddr
#define lifr_flags iflr_flags
+#define lifr_index iflr_index
#define ss_family sa_family
#define LIFREQ if_laddrreq
#else
@@ -50,22 +51,40 @@
#define IFITER_MAGIC ISC_MAGIC('I', 'F', 'I', 'T')
#define VALID_IFITER(t) ISC_MAGIC_VALID(t, IFITER_MAGIC)
+#define ISC_IF_INET6_SZ \
+ sizeof("00000000000000000000000000000001 01 80 10 80 XXXXXXloXXXXXXXX\n")
+
struct isc_interfaceiter {
unsigned int magic; /* Magic number. */
isc_mem_t *mctx;
- int socket;
int mode;
+ int socket;
struct ifconf ifc;
+ void *buf; /* Buffer for sysctl data. */
+ unsigned int bufsize; /* Bytes allocated. */
+ unsigned int pos; /* Current offset in
+ SIOCGIFCONF data */
#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
+ int socket6;
struct LIFCONF lifc;
+ void *buf6; /* Buffer for sysctl data. */
+ unsigned int bufsize6; /* Bytes allocated. */
+ unsigned int pos6; /* Current offset in
+ SIOCGLIFCONF data */
+ isc_result_t result6; /* Last result code. */
+ isc_boolean_t first6;
#endif
- void *buf; /* Buffer for sysctl data. */
- unsigned int bufsize; /* Bytes allocated. */
#ifdef HAVE_TRUCLUSTER
int clua_context; /* Cluster alias context */
+ isc_boolean_t clua_done;
+ struct sockaddr clua_sa;
+#endif
+#ifdef __linux
+ FILE * proc;
+ char entry[ISC_IF_INET6_SZ];
+ isc_result_t valid;
+ isc_boolean_t first;
#endif
- unsigned int pos; /* Current offset in
- SIOCGLIFCONF data */
isc_interface_t current; /* Current interface data. */
isc_result_t result; /* Last result code. */
};
@@ -83,6 +102,16 @@ struct isc_interfaceiter {
#define IFCONF_BUFSIZE_INITIAL 4096
#define IFCONF_BUFSIZE_MAX 1048576
+#ifdef __linux
+#ifndef IF_NAMESIZE
+# ifdef IFNAMSIZ
+# define IF_NAMESIZE IFNAMSIZ
+# else
+# define IF_NAMESIZE 16
+# endif
+#endif
+#endif
+
static isc_result_t
getbuf4(isc_interfaceiter_t *iter) {
char strbuf[ISC_STRERRORSIZE];
@@ -147,7 +176,6 @@ getbuf4(isc_interfaceiter_t *iter) {
iter->bufsize *= 2;
}
- iter->mode = 4;
return (ISC_R_SUCCESS);
unexpected:
@@ -156,37 +184,34 @@ getbuf4(isc_interfaceiter_t *iter) {
return (ISC_R_UNEXPECTED);
}
+#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
static isc_result_t
getbuf6(isc_interfaceiter_t *iter) {
-#if !defined(SIOCGLIFCONF) || !defined(SIOCGLIFADDR)
- UNUSED(iter);
- return (ISC_R_NOTIMPLEMENTED);
-#else
char strbuf[ISC_STRERRORSIZE];
isc_result_t result;
- iter->bufsize = IFCONF_BUFSIZE_INITIAL;
+ iter->bufsize6 = IFCONF_BUFSIZE_INITIAL;
for (;;) {
- iter->buf = isc_mem_get(iter->mctx, iter->bufsize);
- if (iter->buf == NULL)
+ iter->buf6 = isc_mem_get(iter->mctx, iter->bufsize6);
+ if (iter->buf6 == NULL)
return (ISC_R_NOMEMORY);
- memset(&iter->lifc.lifc_len, 0, sizeof(iter->lifc.lifc_len));
+ memset(&iter->lifc, 0, sizeof(iter->lifc));
#ifdef ISC_HAVE_LIFC_FAMILY
- iter->lifc.lifc_family = AF_UNSPEC;
+ iter->lifc.lifc_family = AF_INET6;
#endif
#ifdef ISC_HAVE_LIFC_FLAGS
iter->lifc.lifc_flags = 0;
#endif
- iter->lifc.lifc_len = iter->bufsize;
- iter->lifc.lifc_buf = iter->buf;
+ iter->lifc.lifc_len = iter->bufsize6;
+ iter->lifc.lifc_buf = iter->buf6;
/*
* Ignore the HP/UX warning about "integer overflow during
* conversion". It comes from its own macro definition,
* and is really hard to shut up.
*/
- if (ioctl(iter->socket, SIOCGLIFCONF, (char *)&iter->lifc)
+ if (ioctl(iter->socket6, SIOCGLIFCONF, (char *)&iter->lifc)
== -1) {
#ifdef __hpux
/*
@@ -232,10 +257,10 @@ getbuf6(isc_interfaceiter_t *iter) {
* retry.
*/
if (iter->lifc.lifc_len + 2 * sizeof(struct LIFREQ)
- < iter->bufsize)
+ < iter->bufsize6)
break;
}
- if (iter->bufsize >= IFCONF_BUFSIZE_MAX) {
+ if (iter->bufsize6 >= IFCONF_BUFSIZE_MAX) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat,
ISC_MSGSET_IFITERIOCTL,
@@ -247,20 +272,21 @@ getbuf6(isc_interfaceiter_t *iter) {
result = ISC_R_UNEXPECTED;
goto cleanup;
}
- isc_mem_put(iter->mctx, iter->buf, iter->bufsize);
+ isc_mem_put(iter->mctx, iter->buf6, iter->bufsize6);
- iter->bufsize *= 2;
+ iter->bufsize6 *= 2;
}
- iter->mode = 6;
+ if (iter->lifc.lifc_len != 0)
+ iter->mode = 6;
return (ISC_R_SUCCESS);
cleanup:
- isc_mem_put(iter->mctx, iter->buf, iter->bufsize);
- iter->buf = NULL;
+ isc_mem_put(iter->mctx, iter->buf6, iter->bufsize6);
+ iter->buf6 = NULL;
return (result);
-#endif
}
+#endif
isc_result_t
isc_interfaceiter_create(isc_mem_t *mctx, isc_interfaceiter_t **iterp) {
@@ -276,12 +302,48 @@ isc_interfaceiter_create(isc_mem_t *mctx, isc_interfaceiter_t **iterp) {
return (ISC_R_NOMEMORY);
iter->mctx = mctx;
+ iter->mode = 4;
iter->buf = NULL;
- iter->mode = 0;
+ iter->pos = (unsigned int) -1;
+#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
+ iter->buf6 = NULL;
+ iter->pos6 = (unsigned int) -1;
+ iter->result6 = ISC_R_NOMORE;
+ iter->socket6 = -1;
+ iter->first6 = ISC_FALSE;
+#endif
/*
- * Create an unbound datagram socket to do the SIOCGLIFADDR ioctl on.
+ * Get the interface configuration, allocating more memory if
+ * necessary.
*/
+
+#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
+ result = isc_net_probeipv6();
+ if (result == ISC_R_SUCCESS) {
+ /*
+ * Create an unbound datagram socket to do the SIOCGLIFCONF
+ * ioctl on. HP/UX requires an AF_INET6 socket for
+ * SIOCGLIFCONF to get IPv6 addresses.
+ */
+ if ((iter->socket6 = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
+ isc__strerror(errno, strbuf, sizeof(strbuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ isc_msgcat_get(isc_msgcat,
+ ISC_MSGSET_IFITERIOCTL,
+ ISC_MSG_MAKESCANSOCKET,
+ "making interface "
+ "scan socket: %s"),
+ strbuf);
+ result = ISC_R_UNEXPECTED;
+ goto socket6_failure;
+ }
+ iter->result6 = getbuf6(iter);
+ if (iter->result6 != ISC_R_NOTIMPLEMENTED &&
+ iter->result6 != ISC_R_SUCCESS)
+ goto ioctl6_failure;
+ }
+#endif
if ((iter->socket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
isc__strerror(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
@@ -294,17 +356,7 @@ isc_interfaceiter_create(isc_mem_t *mctx, isc_interfaceiter_t **iterp) {
result = ISC_R_UNEXPECTED;
goto socket_failure;
}
-
- /*
- * Get the interface configuration, allocating more memory if
- * necessary.
- */
-
- result = isc_net_probeipv6();
- if (result == ISC_R_SUCCESS)
- result = getbuf6(iter);
- if (result != ISC_R_SUCCESS)
- result = getbuf4(iter);
+ result = getbuf4(iter);
if (result != ISC_R_SUCCESS)
goto ioctl_failure;
@@ -314,8 +366,13 @@ isc_interfaceiter_create(isc_mem_t *mctx, isc_interfaceiter_t **iterp) {
*/
#ifdef HAVE_TRUCLUSTER
iter->clua_context = -1;
+ iter->clua_done = ISC_TRUE;
+#endif
+#ifdef __linux
+ iter->proc = fopen("/proc/net/if_inet6", "r");
+ iter->valid = ISC_R_FAILURE;
+ iter->first = ISC_FALSE;
#endif
- iter->pos = (unsigned int) -1;
iter->result = ISC_R_FAILURE;
iter->magic = IFITER_MAGIC;
@@ -328,6 +385,15 @@ isc_interfaceiter_create(isc_mem_t *mctx, isc_interfaceiter_t **iterp) {
(void) close(iter->socket);
socket_failure:
+#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
+ if (iter->buf6 != NULL)
+ isc_mem_put(mctx, iter->buf6, iter->bufsize6);
+ ioctl6_failure:
+ if (iter->socket6 != -1)
+ (void) close(iter->socket6);
+ socket6_failure:
+#endif
+
isc_mem_put(mctx, iter, sizeof(*iter));
return (result);
}
@@ -341,21 +407,135 @@ get_inaddr(isc_netaddr_t *dst, struct in_addr *src) {
static isc_result_t
internal_current_clusteralias(isc_interfaceiter_t *iter) {
- struct sockaddr sa;
struct clua_info ci;
- while (clua_getaliasaddress(&sa, &iter->clua_context) == CLUA_SUCCESS) {
- if (clua_getaliasinfo(&sa, &ci) != CLUA_SUCCESS)
- continue;
- memset(&iter->current, 0, sizeof(iter->current));
- iter->current.af = sa.sa_family;
- memset(iter->current.name, 0, sizeof(iter->current.name));
- sprintf(iter->current.name, "clua%d", ci.aliasid);
- iter->current.flags = INTERFACE_F_UP;
- get_inaddr(&iter->current.address, &ci.addr);
- get_inaddr(&iter->current.netmask, &ci.netmask);
- return (ISC_R_SUCCESS);
+ if (clua_getaliasinfo(&iter->clua_sa, &ci) != CLUA_SUCCESS)
+ return (ISC_R_IGNORE);
+ memset(&iter->current, 0, sizeof(iter->current));
+ iter->current.af = iter->clua_sa.sa_family;
+ memset(iter->current.name, 0, sizeof(iter->current.name));
+ sprintf(iter->current.name, "clua%d", ci.aliasid);
+ iter->current.flags = INTERFACE_F_UP;
+ get_inaddr(&iter->current.address, &ci.addr);
+ get_inaddr(&iter->current.netmask, &ci.netmask);
+ return (ISC_R_SUCCESS);
+}
+#endif
+
+#ifdef __linux
+static isc_result_t
+linux_if_inet6_next(isc_interfaceiter_t *iter) {
+ if (iter->proc != NULL &&
+ fgets(iter->entry, sizeof(iter->entry), iter->proc) != NULL)
+ iter->valid = ISC_R_SUCCESS;
+ else
+ iter->valid = ISC_R_NOMORE;
+ return (iter->valid);
+}
+
+static void
+linux_if_inet6_first(isc_interfaceiter_t *iter) {
+ if (iter->proc != NULL) {
+ rewind(iter->proc);
+ (void)linux_if_inet6_next(iter);
+ } else
+ iter->valid = ISC_R_NOMORE;
+ iter->first = ISC_FALSE;
+}
+
+static isc_result_t
+linux_if_inet6_current(isc_interfaceiter_t *iter) {
+ char address[33];
+ char name[IF_NAMESIZE+1];
+ char strbuf[ISC_STRERRORSIZE];
+ struct in6_addr addr6;
+ struct ifreq ifreq;
+ int ifindex, prefix, scope, flags;
+ int res;
+ unsigned int i;
+
+ if (iter->valid != ISC_R_SUCCESS)
+ return (iter->valid);
+ if (iter->proc == NULL) {
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "/proc/net/if_inet6:iter->proc == NULL");
+ return (ISC_R_FAILURE);
}
- return (ISC_R_NOMORE);
+
+ /*
+ * Format for /proc/net/if_inet6:
+ * (see iface_proc_info() in net/ipv6/addrconf.c)
+ * <addr6:32> <ifindex:2> <prefix:2> <scope:2> <flags:2> <name:8>
+ */
+ res = sscanf(iter->entry, "%32[a-f0-9] %x %x %x %x %16s\n",
+ address, &ifindex, &prefix, &scope, &flags, name);
+ if (res != 6) {
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "/proc/net/if_inet6:sscanf() -> %d (expected 6)",
+ res);
+ return (ISC_R_FAILURE);
+ }
+ if (strlen(address) != 32) {
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "/proc/net/if_inet6:strlen(%s) != 32", address);
+ return (ISC_R_FAILURE);
+ }
+ for (i = 0; i < 16; i++) {
+ unsigned char byte;
+ static const char hex[] = "0123456789abcdef";
+ byte = ((index(hex, address[i * 2]) - hex) << 4) |
+ (index(hex, address[i * 2 + 1]) - hex);
+ addr6.s6_addr[i] = byte;
+ }
+ iter->current.af = AF_INET6;
+ /* iter->current.ifindex = ifindex; */
+ iter->current.flags = 0;
+
+ memset(&ifreq, 0, sizeof(ifreq));
+ INSIST(sizeof(ifreq.ifr_name) <= sizeof(iter->current.name));
+ strncpy(ifreq.ifr_name, name, sizeof(ifreq.ifr_name));
+
+ if (ioctl(iter->socket, SIOCGIFFLAGS, (char *) &ifreq) < 0) {
+ isc__strerror(errno, strbuf, sizeof(strbuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "%s: getting interface flags: %s",
+ ifreq.ifr_name, strbuf);
+ return (ISC_R_IGNORE);
+ }
+
+ if ((ifreq.ifr_flags & IFF_UP) != 0)
+ iter->current.flags |= INTERFACE_F_UP;
+#ifdef IFF_POINTOPOINT
+ if ((ifreq.ifr_flags & IFF_POINTOPOINT) != 0)
+ iter->current.flags |= INTERFACE_F_POINTTOPOINT;
+#endif
+ if ((ifreq.ifr_flags & IFF_LOOPBACK) != 0)
+ iter->current.flags |= INTERFACE_F_LOOPBACK;
+ if ((ifreq.ifr_flags & IFF_BROADCAST) != 0)
+ iter->current.flags |= INTERFACE_F_BROADCAST;
+#ifdef IFF_MULTICAST
+ if ((ifreq.ifr_flags & IFF_MULTICAST) != 0)
+ iter->current.flags |= INTERFACE_F_MULTICAST;
+#endif
+
+ /*
+ * enable_multicast_if() requires scopeid for setsockopt,
+ * so associate address with their corresponding ifindex.
+ */
+ isc_netaddr_fromin6(&iter->current.address, &addr6);
+ isc_netaddr_setzone(&iter->current.address, (isc_uint32_t)ifindex);
+
+ for (i = 0; i < 16; i++) {
+ if (prefix > 8) {
+ addr6.s6_addr[i] = 0xff;
+ prefix -= 8;
+ } else {
+ addr6.s6_addr[i] = (0xff << (8 - prefix)) & 0xff;
+ prefix = 0;
+ }
+ }
+ isc_netaddr_fromin6(&iter->current.netmask, &addr6);
+ strncpy(iter->current.name, name, sizeof(iter->current.name));
+ return (ISC_R_SUCCESS);
}
#endif
@@ -373,22 +553,33 @@ internal_current4(isc_interfaceiter_t *iter) {
struct ifreq ifreq;
int family;
char strbuf[ISC_STRERRORSIZE];
-#if !defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
- struct if_laddrreq if_laddrreq;
- int i, bits;
+#if !defined(ISC_PLATFORM_HAVEIF_LADDRREQ) && defined(SIOCGLIFADDR)
+ struct lifreq lifreq;
+#else
+ char sabuf[256];
+#endif
+ int i, bits, prefixlen;
+#ifdef __linux
+ isc_result_t result;
#endif
REQUIRE(VALID_IFITER(iter));
REQUIRE (iter->pos < (unsigned int) iter->ifc.ifc_len);
+#ifdef __linux
+ result = linux_if_inet6_current(iter);
+ if (result != ISC_R_NOMORE)
+ return (result);
+ iter->first = ISC_TRUE;
+#endif
+
ifrp = (struct ifreq *)((char *) iter->ifc.ifc_req + iter->pos);
memset(&ifreq, 0, sizeof(ifreq));
memcpy(&ifreq, ifrp, sizeof(ifreq));
family = ifreq.ifr_addr.sa_family;
-#if !defined (SIOCGLIFCONF) && defined(SIOCGLIFADDR) && \
- defined(ISC_PLATFORM_HAVEIPV6)
+#if defined(ISC_PLATFORM_HAVEIPV6)
if (family != AF_INET && family != AF_INET6)
#else
if (family != AF_INET)
@@ -403,7 +594,7 @@ internal_current4(isc_interfaceiter_t *iter) {
memcpy(iter->current.name, ifreq.ifr_name, sizeof(ifreq.ifr_name));
get_addr(family, &iter->current.address,
- (struct sockaddr *)&ifrp->ifr_addr);
+ (struct sockaddr *)&ifrp->ifr_addr, ifreq.ifr_name);
/*
* If the interface does not have a address ignore it.
@@ -413,11 +604,13 @@ internal_current4(isc_interfaceiter_t *iter) {
if (iter->current.address.type.in.s_addr == htonl(INADDR_ANY))
return (ISC_R_IGNORE);
break;
+#ifdef ISC_PLATFORM_HAVEIPV6
case AF_INET6:
if (memcmp(&iter->current.address.type.in6, &in6addr_any,
sizeof(in6addr_any)) == 0)
return (ISC_R_IGNORE);
break;
+#endif
}
/*
@@ -442,8 +635,10 @@ internal_current4(isc_interfaceiter_t *iter) {
if ((ifreq.ifr_flags & IFF_UP) != 0)
iter->current.flags |= INTERFACE_F_UP;
+#ifdef IFF_POINTOPOINT
if ((ifreq.ifr_flags & IFF_POINTOPOINT) != 0)
iter->current.flags |= INTERFACE_F_POINTTOPOINT;
+#endif
if ((ifreq.ifr_flags & IFF_LOOPBACK) != 0)
iter->current.flags |= INTERFACE_F_LOOPBACK;
@@ -458,44 +653,54 @@ internal_current4(isc_interfaceiter_t *iter) {
}
#endif
-#if !defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
- if (family == AF_INET)
+ if (family == AF_INET)
goto inet;
- memset(&if_laddrreq, 0, sizeof(if_laddrreq));
- memcpy(if_laddrreq.iflr_name, iter->current.name,
- sizeof(if_laddrreq.iflr_name));
- memcpy(&if_laddrreq.addr, &iter->current.address.type.in6,
+#if !defined(ISC_PLATFORM_HAVEIF_LADDRREQ) && defined(SIOCGLIFADDR)
+ memset(&lifreq, 0, sizeof(lifreq));
+ memcpy(lifreq.lifr_name, iter->current.name, sizeof(lifreq.lifr_name));
+ memcpy(&lifreq.lifr_addr, &iter->current.address.type.in6,
sizeof(iter->current.address.type.in6));
- if (ioctl(iter->socket, SIOCGLIFADDR, &if_laddrreq) < 0) {
+ if (ioctl(iter->socket, SIOCGLIFADDR, &lifreq) < 0) {
isc__strerror(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"%s: getting interface address: %s",
ifreq.ifr_name, strbuf);
return (ISC_R_IGNORE);
}
+ prefixlen = lifreq.lifr_addrlen;
+#else
+ isc_netaddr_format(&iter->current.address, sabuf, sizeof(sabuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ isc_msgcat_get(isc_msgcat,
+ ISC_MSGSET_IFITERIOCTL,
+ ISC_MSG_GETIFCONFIG,
+ "prefix length for %s is unknown "
+ "(assume 128)"), sabuf);
+ prefixlen = 128;
+#endif
/*
* Netmask already zeroed.
*/
iter->current.netmask.family = family;
for (i = 0; i < 16; i++) {
- if (if_laddrreq.prefixlen > 8) {
+ if (prefixlen > 8) {
bits = 0;
- if_laddrreq.prefixlen -= 8;
+ prefixlen -= 8;
} else {
- bits = 8 - if_laddrreq.prefixlen;
- if_laddrreq.prefixlen = 0;
+ bits = 8 - prefixlen;
+ prefixlen = 0;
}
iter->current.netmask.type.in6.s6_addr[i] = (~0 << bits) & 0xff;
}
return (ISC_R_SUCCESS);
inet:
-#endif
if (family != AF_INET)
return (ISC_R_IGNORE);
+#ifdef IFF_POINTOPOINT
/*
* If the interface is point-to-point, get the destination address.
*/
@@ -518,9 +723,9 @@ internal_current4(isc_interfaceiter_t *iter) {
return (ISC_R_IGNORE);
}
get_addr(family, &iter->current.dstaddress,
- (struct sockaddr *)&ifreq.ifr_dstaddr);
+ (struct sockaddr *)&ifreq.ifr_dstaddr, ifreq.ifr_name);
}
-
+#endif
if ((iter->current.flags & INTERFACE_F_BROADCAST) != 0) {
/*
* Ignore the HP/UX warning about "integer overflow during
@@ -540,8 +745,9 @@ internal_current4(isc_interfaceiter_t *iter) {
return (ISC_R_IGNORE);
}
get_addr(family, &iter->current.broadcast,
- (struct sockaddr *)&ifreq.ifr_broadaddr);
+ (struct sockaddr *)&ifreq.ifr_broadaddr, ifreq.ifr_name);
}
+
/*
* Get the network mask.
*/
@@ -552,8 +758,7 @@ internal_current4(isc_interfaceiter_t *iter) {
* conversion. It comes from its own macro definition,
* and is really hard to shut up.
*/
- if (ioctl(iter->socket, SIOCGIFNETMASK, (char *)&ifreq)
- < 0) {
+ if (ioctl(iter->socket, SIOCGIFNETMASK, (char *)&ifreq) < 0) {
isc__strerror(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat,
@@ -564,25 +769,25 @@ internal_current4(isc_interfaceiter_t *iter) {
return (ISC_R_IGNORE);
}
get_addr(family, &iter->current.netmask,
- (struct sockaddr *)&ifreq.ifr_addr);
+ (struct sockaddr *)&ifreq.ifr_addr, ifreq.ifr_name);
return (ISC_R_SUCCESS);
}
+#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
static isc_result_t
internal_current6(isc_interfaceiter_t *iter) {
-#if !defined(SIOCGLIFCONF) || !defined(SIOCGLIFADDR)
- UNUSED(iter);
- return (ISC_R_NOTIMPLEMENTED);
-#else
struct LIFREQ *ifrp;
struct LIFREQ lifreq;
int family;
char strbuf[ISC_STRERRORSIZE];
+ int fd;
REQUIRE(VALID_IFITER(iter));
- REQUIRE (iter->pos < (unsigned int) iter->lifc.lifc_len);
+ if (iter->result6 != ISC_R_SUCCESS)
+ return (iter->result6);
+ REQUIRE(iter->pos6 < (unsigned int) iter->lifc.lifc_len);
- ifrp = (struct LIFREQ *)((char *) iter->lifc.lifc_req + iter->pos);
+ ifrp = (struct LIFREQ *)((char *) iter->lifc.lifc_req + iter->pos6);
memset(&lifreq, 0, sizeof(lifreq));
memcpy(&lifreq, ifrp, sizeof(lifreq));
@@ -603,7 +808,7 @@ internal_current6(isc_interfaceiter_t *iter) {
memcpy(iter->current.name, lifreq.lifr_name, sizeof(lifreq.lifr_name));
get_addr(family, &iter->current.address,
- (struct sockaddr *)&lifreq.lifr_addr);
+ (struct sockaddr *)&lifreq.lifr_addr, lifreq.lifr_name);
/*
* If the interface does not have a address ignore it.
@@ -613,11 +818,13 @@ internal_current6(isc_interfaceiter_t *iter) {
if (iter->current.address.type.in.s_addr == htonl(INADDR_ANY))
return (ISC_R_IGNORE);
break;
+#ifdef ISC_PLATFORM_HAVEIPV6
case AF_INET6:
if (memcmp(&iter->current.address.type.in6, &in6addr_any,
sizeof(in6addr_any)) == 0)
return (ISC_R_IGNORE);
break;
+#endif
}
/*
@@ -626,40 +833,38 @@ internal_current6(isc_interfaceiter_t *iter) {
iter->current.flags = 0;
+ if (family == AF_INET6)
+ fd = iter->socket6;
+ else
+ fd = iter->socket;
+
/*
* Ignore the HP/UX warning about "integer overflow during
* conversion. It comes from its own macro definition,
* and is really hard to shut up.
*/
- if (ioctl(iter->socket, SIOCGLIFFLAGS, (char *) &lifreq) < 0) {
-
- /*
- * XXX This should be looked at further since it looks strange.
- * If we get an ENXIO then we ignore the error and not worry
- * about the flags.
- */
- if (errno != ENXIO) {
- isc__strerror(errno, strbuf, sizeof(strbuf));
- UNEXPECTED_ERROR(__FILE__, __LINE__,
+ if (ioctl(fd, SIOCGLIFFLAGS, (char *) &lifreq) < 0) {
+ isc__strerror(errno, strbuf, sizeof(strbuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
"%s: getting interface flags: %s",
lifreq.lifr_name, strbuf);
- return (ISC_R_IGNORE);
- }
+ return (ISC_R_IGNORE);
}
if ((lifreq.lifr_flags & IFF_UP) != 0)
iter->current.flags |= INTERFACE_F_UP;
+#ifdef IFF_POINTOPOINT
if ((lifreq.lifr_flags & IFF_POINTOPOINT) != 0)
iter->current.flags |= INTERFACE_F_POINTTOPOINT;
+#endif
if ((lifreq.lifr_flags & IFF_LOOPBACK) != 0)
iter->current.flags |= INTERFACE_F_LOOPBACK;
- /*
- * Note that IPv6 broadcast does not exist
- * so don't check for IPv6 broadcast flag
- */
+ if ((lifreq.lifr_flags & IFF_BROADCAST) != 0) {
+ iter->current.flags |= INTERFACE_F_BROADCAST;
+ }
#ifdef IFF_MULTICAST
if ((lifreq.lifr_flags & IFF_MULTICAST) != 0) {
@@ -667,6 +872,7 @@ internal_current6(isc_interfaceiter_t *iter) {
}
#endif
+#ifdef IFF_POINTOPOINT
/*
* If the interface is point-to-point, get the destination address.
*/
@@ -676,7 +882,7 @@ internal_current6(isc_interfaceiter_t *iter) {
* conversion. It comes from its own macro definition,
* and is really hard to shut up.
*/
- if (ioctl(iter->socket, SIOCGLIFDSTADDR, (char *)&lifreq)
+ if (ioctl(fd, SIOCGLIFDSTADDR, (char *)&lifreq)
< 0) {
isc__strerror(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
@@ -689,43 +895,51 @@ internal_current6(isc_interfaceiter_t *iter) {
return (ISC_R_IGNORE);
}
get_addr(family, &iter->current.dstaddress,
- (struct sockaddr *)&lifreq.lifr_dstaddr);
+ (struct sockaddr *)&lifreq.lifr_dstaddr,
+ lifreq.lifr_name);
}
+#endif
-
- /*
- * Get the network mask.
- */
- memset(&lifreq, 0, sizeof(lifreq));
- memcpy(&lifreq, ifrp, sizeof(lifreq));
- switch (family) {
- case AF_INET:
+#ifdef SIOCGLIFBRDADDR
+ if ((iter->current.flags & INTERFACE_F_BROADCAST) != 0) {
/*
* Ignore the HP/UX warning about "integer overflow during
* conversion. It comes from its own macro definition,
* and is really hard to shut up.
*/
- if (ioctl(iter->socket, SIOCGLIFNETMASK, (char *)&lifreq)
+ if (ioctl(iter->socket, SIOCGLIFBRDADDR, (char *)&lifreq)
< 0) {
isc__strerror(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
isc_msgcat_get(isc_msgcat,
ISC_MSGSET_IFITERIOCTL,
- ISC_MSG_GETNETMASK,
- "%s: getting netmask: %s"),
+ ISC_MSG_GETDESTADDR,
+ "%s: getting "
+ "broadcast address: %s"),
lifreq.lifr_name, strbuf);
return (ISC_R_IGNORE);
}
- get_addr(family, &iter->current.netmask,
- (struct sockaddr *)&lifreq.lifr_addr);
- break;
- case AF_INET6: {
+ get_addr(family, &iter->current.broadcast,
+ (struct sockaddr *)&lifreq.lifr_broadaddr,
+ lifreq.lifr_name);
+ }
+#endif /* SIOCGLIFBRDADDR */
+
+ /*
+ * Get the network mask. Netmask already zeroed.
+ */
+ memset(&lifreq, 0, sizeof(lifreq));
+ memcpy(&lifreq, ifrp, sizeof(lifreq));
+
#ifdef lifr_addrlen
+ /*
+ * Special case: if the system provides lifr_addrlen member, the
+ * netmask of an IPv6 address can be derived from the length, since
+ * an IPv6 address always has a contiguous mask.
+ */
+ if (family == AF_INET6) {
int i, bits;
- /*
- * Netmask already zeroed.
- */
iter->current.netmask.family = family;
for (i = 0; i < lifreq.lifr_addrlen; i += 8) {
bits = lifreq.lifr_addrlen - i;
@@ -733,19 +947,46 @@ internal_current6(isc_interfaceiter_t *iter) {
iter->current.netmask.type.in6.s6_addr[i / 8] =
(~0 << bits) & 0xff;
}
-#endif
- break;
+
+ return (ISC_R_SUCCESS);
}
+#endif
+
+ /*
+ * Ignore the HP/UX warning about "integer overflow during
+ * conversion. It comes from its own macro definition,
+ * and is really hard to shut up.
+ */
+ if (ioctl(fd, SIOCGLIFNETMASK, (char *)&lifreq) < 0) {
+ isc__strerror(errno, strbuf, sizeof(strbuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ isc_msgcat_get(isc_msgcat,
+ ISC_MSGSET_IFITERIOCTL,
+ ISC_MSG_GETNETMASK,
+ "%s: getting netmask: %s"),
+ lifreq.lifr_name, strbuf);
+ return (ISC_R_IGNORE);
}
+ get_addr(family, &iter->current.netmask,
+ (struct sockaddr *)&lifreq.lifr_addr, lifreq.lifr_name);
return (ISC_R_SUCCESS);
-#endif
}
+#endif
static isc_result_t
internal_current(isc_interfaceiter_t *iter) {
- if (iter->mode == 6)
- return (internal_current6(iter));
+#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
+ if (iter->mode == 6) {
+ iter->result6 = internal_current6(iter);
+ if (iter->result6 != ISC_R_NOMORE)
+ return (iter->result6);
+ }
+#endif
+#ifdef HAVE_TRUCLUSTER
+ if (!iter->clua_done)
+ return(internal_current_clusteralias(iter));
+#endif
return (internal_current4(iter));
}
@@ -762,8 +1003,10 @@ internal_next4(isc_interfaceiter_t *iter) {
REQUIRE (iter->pos < (unsigned int) iter->ifc.ifc_len);
-#ifdef HAVE_TRUCLUSTER
- if (internal_current_clusteralias(iter) == ISC_R_SUCCESS)
+#ifdef __linux
+ if (linux_if_inet6_next(iter) == ISC_R_SUCCESS)
+ return (ISC_R_SUCCESS);
+ if (!iter->first)
return (ISC_R_SUCCESS);
#endif
ifrp = (struct ifreq *)((char *) iter->ifc.ifc_req + iter->pos);
@@ -781,40 +1024,95 @@ internal_next4(isc_interfaceiter_t *iter) {
return (ISC_R_SUCCESS);
}
+#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
static isc_result_t
internal_next6(isc_interfaceiter_t *iter) {
-#if !defined(SIOCGLIFCONF) || !defined(SIOCGLIFADDR)
- UNUSED(iter);
- return (ISC_R_NOTIMPLEMENTED);
-#else
struct LIFREQ *ifrp;
+
+ if (iter->result6 != ISC_R_SUCCESS && iter->result6 != ISC_R_IGNORE)
+ return (iter->result6);
- REQUIRE (iter->pos < (unsigned int) iter->lifc.lifc_len);
+ REQUIRE(iter->pos6 < (unsigned int) iter->lifc.lifc_len);
- ifrp = (struct LIFREQ *)((char *) iter->lifc.lifc_req + iter->pos);
+ ifrp = (struct LIFREQ *)((char *) iter->lifc.lifc_req + iter->pos6);
#ifdef ISC_PLATFORM_HAVESALEN
if (ifrp->lifr_addr.sa_len > sizeof(struct sockaddr))
- iter->pos += sizeof(ifrp->lifr_name) + ifrp->lifr_addr.sa_len;
+ iter->pos6 += sizeof(ifrp->lifr_name) + ifrp->lifr_addr.sa_len;
else
#endif
- iter->pos += sizeof(*ifrp);
+ iter->pos6 += sizeof(*ifrp);
- if (iter->pos >= (unsigned int) iter->lifc.lifc_len)
+ if (iter->pos6 >= (unsigned int) iter->lifc.lifc_len)
return (ISC_R_NOMORE);
return (ISC_R_SUCCESS);
-#endif
}
+#endif
static isc_result_t
internal_next(isc_interfaceiter_t *iter) {
- if (iter->mode == 6)
- return (internal_next6(iter));
+#ifdef HAVE_TRUCLUSTER
+ int clua_result;
+#endif
+#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
+ if (iter->mode == 6) {
+ iter->result6 = internal_next6(iter);
+ if (iter->result6 != ISC_R_NOMORE)
+ return (iter->result6);
+ if (iter->first6) {
+ iter->first6 = ISC_FALSE;
+ return (ISC_R_SUCCESS);
+ }
+ }
+#endif
+#ifdef HAVE_TRUCLUSTER
+ if (!iter->clua_done) {
+ clua_result = clua_getaliasaddress(&iter->clua_sa,
+ &iter->clua_context);
+ if (clua_result != CLUA_SUCCESS)
+ iter->clua_done = ISC_TRUE;
+ return (ISC_R_SUCCESS);
+ }
+#endif
return (internal_next4(iter));
}
static void
internal_destroy(isc_interfaceiter_t *iter) {
(void) close(iter->socket);
+#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
+ if (iter->socket6 != -1)
+ (void) close(iter->socket6);
+ if (iter->buf6 != NULL) {
+ isc_mem_put(iter->mctx, iter->buf6, iter->bufsize6);
+ }
+#endif
+#ifdef __linux
+ if (iter->proc != NULL)
+ fclose(iter->proc);
+#endif
+}
+
+static
+void internal_first(isc_interfaceiter_t *iter) {
+#ifdef HAVE_TRUCLUSTER
+ int clua_result;
+#endif
+ iter->pos = 0;
+#if defined(SIOCGLIFCONF) && defined(SIOCGLIFADDR)
+ iter->pos6 = 0;
+ if (iter->result6 == ISC_R_NOMORE)
+ iter->result6 = ISC_R_SUCCESS;
+ iter->first6 = ISC_TRUE;
+#endif
+#ifdef HAVE_TRUCLUSTER
+ iter->clua_context = 0;
+ clua_result = clua_getaliasaddress(&iter->clua_sa,
+ &iter->clua_context);
+ iter->clua_done = ISC_TF(clua_result != CLUA_SUCCESS);
+#endif
+#ifdef __linux
+ linux_if_inet6_first(iter);
+#endif
}
diff --git a/contrib/ntp/libisc/ifiter_sysctl.c b/contrib/ntp/libisc/ifiter_sysctl.c
index 74440fa..6206e6e 100644
--- a/contrib/ntp/libisc/ifiter_sysctl.c
+++ b/contrib/ntp/libisc/ifiter_sysctl.c
@@ -1,21 +1,21 @@
/*
- * Copyright (C) 1999-2001 Internet Software Consortium.
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1999-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: ifiter_sysctl.c,v 1.17 2002/05/30 01:24:12 marka Exp $ */
+/* $Id: ifiter_sysctl.c,v 1.14.12.7 2004/03/08 09:04:56 marka Exp $ */
/*
* Obtain the list of network interfaces using sysctl.
@@ -251,17 +251,23 @@ internal_current(isc_interfaceiter_t *iter) {
iter->current.af = family;
- get_addr(family, &iter->current.address, addr_sa);
+ get_addr(family, &iter->current.address, addr_sa,
+ iter->current.name);
if (mask_sa != NULL)
- get_addr(family, &iter->current.netmask, mask_sa);
+ get_addr(family, &iter->current.netmask, mask_sa,
+ iter->current.name);
if (dst_sa != NULL &&
(iter->current.flags & INTERFACE_F_POINTTOPOINT) != 0)
- get_addr(family, &iter->current.dstaddress, dst_sa);
+ get_addr(family, &iter->current.dstaddress, dst_sa,
+ iter->current.name);
+
if (dst_sa != NULL &&
(iter->current.flags & INTERFACE_F_BROADCAST) != 0)
- get_addr(family, &iter->current.broadcast, dst_sa);
+ get_addr(family, &iter->current.broadcast, dst_sa,
+ iter->current.name);
+
return (ISC_R_SUCCESS);
} else {
@@ -303,3 +309,7 @@ internal_destroy(isc_interfaceiter_t *iter) {
*/
}
+static
+void internal_first(isc_interfaceiter_t *iter) {
+ iter->pos = 0;
+}
diff --git a/contrib/ntp/libisc/inet_aton.c b/contrib/ntp/libisc/inet_aton.c
new file mode 100644
index 0000000..530b010
--- /dev/null
+++ b/contrib/ntp/libisc/inet_aton.c
@@ -0,0 +1,195 @@
+/*
+ * Portions Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Portions Copyright (C) 1996-2001 Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * Copyright (c) 1983, 1990, 1993
+ * The Regents of the University of California. 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS 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.
+ */
+
+/*
+ * Portions Copyright (c) 1993 by Digital Equipment Corporation.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies, and that
+ * the name of Digital Equipment Corporation not be used in advertising or
+ * publicity pertaining to distribution of the document or software without
+ * specific, written prior permission.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)inet_addr.c 8.1 (Berkeley) 6/17/93";
+static char rcsid[] = "$Id: inet_aton.c,v 1.15.12.3 2004/03/08 09:04:49 marka Exp $";
+#endif /* LIBC_SCCS and not lint */
+
+#include <config.h>
+
+#include <ctype.h>
+#include <stddef.h> /* Required for NULL. */
+
+#include <isc/types.h>
+#include <isc/net.h>
+
+/*
+ * Check whether "cp" is a valid ascii representation
+ * of an Internet address and convert to a binary address.
+ * Returns 1 if the address is valid, 0 if not.
+ * This replaces inet_addr, the return value from which
+ * cannot distinguish between failure and a local broadcast address.
+ */
+int
+isc_net_aton(const char *cp, struct in_addr *addr) {
+ unsigned long val;
+ int base, n;
+ unsigned char c;
+ isc_uint8_t parts[4];
+ isc_uint8_t *pp = parts;
+ int digit;
+
+ c = *cp;
+ for (;;) {
+ /*
+ * Collect number up to ``.''.
+ * Values are specified as for C:
+ * 0x=hex, 0=octal, isdigit=decimal.
+ */
+ if (!isdigit(c & 0xff))
+ return (0);
+ val = 0; base = 10; digit = 0;
+ if (c == '0') {
+ c = *++cp;
+ if (c == 'x' || c == 'X')
+ base = 16, c = *++cp;
+ else {
+ base = 8;
+ digit = 1;
+ }
+ }
+ for (;;) {
+ /*
+ * isascii() is valid for all integer values, and
+ * when it is true, c is known to be in scope
+ * for isdigit(). No cast necessary. Similar
+ * comment applies for later ctype uses.
+ */
+ if (isascii(c) && isdigit(c)) {
+ if (base == 8 && (c == '8' || c == '9'))
+ return (0);
+ val = (val * base) + (c - '0');
+ c = *++cp;
+ digit = 1;
+ } else if (base == 16 && isascii(c) && isxdigit(c)) {
+ val = (val << 4) |
+ (c + 10 - (islower(c) ? 'a' : 'A'));
+ c = *++cp;
+ digit = 1;
+ } else
+ break;
+ }
+ if (c == '.') {
+ /*
+ * Internet format:
+ * a.b.c.d
+ * a.b.c (with c treated as 16 bits)
+ * a.b (with b treated as 24 bits)
+ */
+ if (pp >= parts + 3 || val > 0xff)
+ return (0);
+ *pp++ = (isc_uint8_t)val;
+ c = *++cp;
+ } else
+ break;
+ }
+ /*
+ * Check for trailing characters.
+ */
+ if (c != '\0' && (!isascii(c) || !isspace(c)))
+ return (0);
+ /*
+ * Did we get a valid digit?
+ */
+ if (!digit)
+ return (0);
+ /*
+ * Concoct the address according to
+ * the number of parts specified.
+ */
+ n = pp - parts + 1;
+ switch (n) {
+ case 1: /* a -- 32 bits */
+ break;
+
+ case 2: /* a.b -- 8.24 bits */
+ if (val > 0xffffff)
+ return (0);
+ val |= parts[0] << 24;
+ break;
+
+ case 3: /* a.b.c -- 8.8.16 bits */
+ if (val > 0xffff)
+ return (0);
+ val |= (parts[0] << 24) | (parts[1] << 16);
+ break;
+
+ case 4: /* a.b.c.d -- 8.8.8.8 bits */
+ if (val > 0xff)
+ return (0);
+ val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
+ break;
+ }
+ if (addr != NULL)
+ addr->s_addr = htonl(val);
+
+ return (1);
+}
diff --git a/contrib/ntp/libisc/inet_pton.c b/contrib/ntp/libisc/inet_pton.c
new file mode 100644
index 0000000..afda394
--- /dev/null
+++ b/contrib/ntp/libisc/inet_pton.c
@@ -0,0 +1,211 @@
+/*
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1996-2003 Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char rcsid[] =
+ "$Id: inet_pton.c,v 1.10.2.4.2.1 2004/03/06 08:14:31 marka Exp $";
+#endif /* LIBC_SCCS and not lint */
+
+#include <config.h>
+
+#include <errno.h>
+#include <string.h>
+
+#include <isc/net.h>
+
+#define NS_INT16SZ 2
+#define NS_INADDRSZ 4
+#define NS_IN6ADDRSZ 16
+
+/*
+ * WARNING: Don't even consider trying to compile this on a system where
+ * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX.
+ */
+
+static int inet_pton4(const char *src, unsigned char *dst);
+static int inet_pton6(const char *src, unsigned char *dst);
+
+/* int
+ * isc_net_pton(af, src, dst)
+ * convert from presentation format (which usually means ASCII printable)
+ * to network format (which is usually some kind of binary format).
+ * return:
+ * 1 if the address was valid for the specified address family
+ * 0 if the address wasn't valid (`dst' is untouched in this case)
+ * -1 if some other error occurred (`dst' is untouched in this case, too)
+ * author:
+ * Paul Vixie, 1996.
+ */
+int
+isc_net_pton(int af, const char *src, void *dst) {
+ switch (af) {
+ case AF_INET:
+ return (inet_pton4(src, dst));
+ case AF_INET6:
+ return (inet_pton6(src, dst));
+ default:
+ errno = EAFNOSUPPORT;
+ return (-1);
+ }
+ /* NOTREACHED */
+}
+
+/* int
+ * inet_pton4(src, dst)
+ * like inet_aton() but without all the hexadecimal and shorthand.
+ * return:
+ * 1 if `src' is a valid dotted quad, else 0.
+ * notice:
+ * does not touch `dst' unless it's returning 1.
+ * author:
+ * Paul Vixie, 1996.
+ */
+static int
+inet_pton4(const char *src, unsigned char *dst) {
+ static const char digits[] = "0123456789";
+ int saw_digit, octets, ch;
+ unsigned char tmp[NS_INADDRSZ], *tp;
+
+ saw_digit = 0;
+ octets = 0;
+ *(tp = tmp) = 0;
+ while ((ch = *src++) != '\0') {
+ const char *pch;
+
+ if ((pch = strchr(digits, ch)) != NULL) {
+ unsigned int new = *tp * 10 + (pch - digits);
+
+ if (saw_digit && *tp == 0)
+ return (0);
+ if (new > 255)
+ return (0);
+ *tp = (unsigned char) new;
+ if (!saw_digit) {
+ if (++octets > 4)
+ return (0);
+ saw_digit = 1;
+ }
+ } else if (ch == '.' && saw_digit) {
+ if (octets == 4)
+ return (0);
+ *++tp = 0;
+ saw_digit = 0;
+ } else
+ return (0);
+ }
+ if (octets < 4)
+ return (0);
+ memcpy(dst, tmp, NS_INADDRSZ);
+ return (1);
+}
+
+/* int
+ * inet_pton6(src, dst)
+ * convert presentation level address to network order binary form.
+ * return:
+ * 1 if `src' is a valid [RFC1884 2.2] address, else 0.
+ * notice:
+ * (1) does not touch `dst' unless it's returning 1.
+ * (2) :: in a full address is silently ignored.
+ * credit:
+ * inspired by Mark Andrews.
+ * author:
+ * Paul Vixie, 1996.
+ */
+static int
+inet_pton6(const char *src, unsigned char *dst) {
+ static const char xdigits_l[] = "0123456789abcdef",
+ xdigits_u[] = "0123456789ABCDEF";
+ unsigned char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp;
+ const char *xdigits, *curtok;
+ int ch, saw_xdigit;
+ unsigned int val;
+
+ memset((tp = tmp), '\0', NS_IN6ADDRSZ);
+ endp = tp + NS_IN6ADDRSZ;
+ colonp = NULL;
+ /* Leading :: requires some special handling. */
+ if (*src == ':')
+ if (*++src != ':')
+ return (0);
+ curtok = src;
+ saw_xdigit = 0;
+ val = 0;
+ while ((ch = *src++) != '\0') {
+ const char *pch;
+
+ if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL)
+ pch = strchr((xdigits = xdigits_u), ch);
+ if (pch != NULL) {
+ val <<= 4;
+ val |= (pch - xdigits);
+ if (val > 0xffff)
+ return (0);
+ saw_xdigit = 1;
+ continue;
+ }
+ if (ch == ':') {
+ curtok = src;
+ if (!saw_xdigit) {
+ if (colonp)
+ return (0);
+ colonp = tp;
+ continue;
+ }
+ if (tp + NS_INT16SZ > endp)
+ return (0);
+ *tp++ = (unsigned char) ((val >> 8) & 0xff);
+ *tp++ = (unsigned char) (val & 0xff);
+ saw_xdigit = 0;
+ val = 0;
+ continue;
+ }
+ if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
+ inet_pton4(curtok, tp) > 0) {
+ tp += NS_INADDRSZ;
+ saw_xdigit = 0;
+ break; /* '\0' was seen by inet_pton4(). */
+ }
+ return (0);
+ }
+ if (saw_xdigit) {
+ if (tp + NS_INT16SZ > endp)
+ return (0);
+ *tp++ = (unsigned char) ((val >> 8) & 0xff);
+ *tp++ = (unsigned char) (val & 0xff);
+ }
+ if (colonp != NULL) {
+ /*
+ * Since some memmove()'s erroneously fail to handle
+ * overlapping regions, we'll do the shift by hand.
+ */
+ const int n = tp - colonp;
+ int i;
+
+ if (tp == endp)
+ return (0);
+ for (i = 1; i <= n; i++) {
+ endp[- i] = colonp[n - i];
+ colonp[n - i] = 0;
+ }
+ tp = endp;
+ }
+ if (tp != endp)
+ return (0);
+ memcpy(dst, tmp, NS_IN6ADDRSZ);
+ return (1);
+}
diff --git a/contrib/ntp/libisc/interfaceiter.c b/contrib/ntp/libisc/interfaceiter.c
index 37af9f3..7e31975 100644
--- a/contrib/ntp/libisc/interfaceiter.c
+++ b/contrib/ntp/libisc/interfaceiter.c
@@ -1,24 +1,26 @@
/*
- * Copyright (C) 1999-2001 Internet Software Consortium.
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1999-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: interfaceiter.c,v 1.27 2002/07/02 05:51:43 marka Exp $ */
+/* $Id: interfaceiter.c,v 1.22.2.1.10.14 2004/08/28 06:25:22 marka Exp $ */
#include <config.h>
+#define ISC_ONLY_IPV6
+
#include <sys/types.h>
#include <sys/ioctl.h>
#ifdef HAVE_SYS_SOCKIO_H
@@ -35,6 +37,7 @@
#include <isc/mem.h>
#include <isc/msgs.h>
#include <isc/net.h>
+#include <isc/print.h>
#include <isc/result.h>
#include <isc/strerror.h>
#include <isc/string.h>
@@ -45,21 +48,32 @@
#ifdef HAVE_NET_IF6_H
#include <net/if6.h>
#endif
-#include <net/if.h>
/* Common utility functions */
/*
* Extract the network address part from a "struct sockaddr".
*
- * The address family is given explicity
+ * The address family is given explicitly
* instead of using src->sa_family, because the latter does not work
* for copying a network mask obtained by SIOCGIFNETMASK (it does
* not have a valid address family).
*/
static void
-get_addr(unsigned int family, isc_netaddr_t *dst, struct sockaddr *src) {
+get_addr(unsigned int family, isc_netaddr_t *dst, struct sockaddr *src,
+ char *ifname)
+{
+ struct sockaddr_in6 *sa6;
+
+#if !defined(ISC_PLATFORM_HAVEIFNAMETOINDEX) || \
+ !defined(ISC_PLATFORM_HAVESCOPEID)
+ UNUSED(ifname);
+#endif
+
+ /* clear any remaining value for safety */
+ memset(dst, 0, sizeof(*dst));
+
dst->family = family;
switch (family) {
case AF_INET:
@@ -67,10 +81,57 @@ get_addr(unsigned int family, isc_netaddr_t *dst, struct sockaddr *src) {
&((struct sockaddr_in *) src)->sin_addr,
sizeof(struct in_addr));
break;
- case AF_INET6:
- memcpy(&dst->type.in6,
- &((struct sockaddr_in6 *) src)->sin6_addr,
+ case AF_INET6:
+ sa6 = (struct sockaddr_in6 *)src;
+ memcpy(&dst->type.in6, &sa6->sin6_addr,
sizeof(struct in6_addr));
+#ifdef ISC_PLATFORM_HAVESCOPEID
+ if (sa6->sin6_scope_id != 0)
+ isc_netaddr_setzone(dst, sa6->sin6_scope_id);
+ else {
+ /*
+ * BSD variants embed scope zone IDs in the 128bit
+ * address as a kernel internal form. Unfortunately,
+ * the embedded IDs are not hidden from applications
+ * when getting access to them by sysctl or ioctl.
+ * We convert the internal format to the pure address
+ * part and the zone ID part.
+ * Since multicast addresses should not appear here
+ * and they cannot be distinguished from netmasks,
+ * we only consider unicast link-local addresses.
+ */
+ if (IN6_IS_ADDR_LINKLOCAL(&sa6->sin6_addr)) {
+ isc_uint16_t zone16;
+
+ memcpy(&zone16, &sa6->sin6_addr.s6_addr[2],
+ sizeof(zone16));
+ zone16 = ntohs(zone16);
+ if (zone16 != 0) {
+ /* the zone ID is embedded */
+ isc_netaddr_setzone(dst,
+ (isc_uint32_t)zone16);
+ dst->type.in6.s6_addr[2] = 0;
+ dst->type.in6.s6_addr[3] = 0;
+#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX
+ } else if (ifname != NULL) {
+ unsigned int zone;
+
+ /*
+ * sin6_scope_id is still not provided,
+ * but the corresponding interface name
+ * is know. Use the interface ID as
+ * the link ID.
+ */
+ zone = if_nametoindex(ifname);
+ if (zone != 0) {
+ isc_netaddr_setzone(dst,
+ (isc_uint32_t)zone);
+ }
+#endif
+ }
+ }
+ }
+#endif
break;
default:
INSIST(0);
@@ -82,7 +143,9 @@ get_addr(unsigned int family, isc_netaddr_t *dst, struct sockaddr *src) {
* Include system-dependent code.
*/
-#if HAVE_IFLIST_SYSCTL
+#if HAVE_GETIFADDRS
+#include "ifiter_getifaddrs.c"
+#elif HAVE_IFLIST_SYSCTL
#include "ifiter_sysctl.c"
#else
#include "ifiter_ioctl.c"
@@ -107,10 +170,7 @@ isc_interfaceiter_first(isc_interfaceiter_t *iter) {
REQUIRE(VALID_IFITER(iter));
- iter->pos = 0;
-#ifdef HAVE_TRUCLUSTER
- iter->clua_context = 0;
-#endif
+ internal_first(iter);
for (;;) {
result = internal_current(iter);
if (result != ISC_R_IGNORE)
@@ -151,7 +211,8 @@ isc_interfaceiter_destroy(isc_interfaceiter_t **iterp)
REQUIRE(VALID_IFITER(iter));
internal_destroy(iter);
- isc_mem_put(iter->mctx, iter->buf, iter->bufsize);
+ if (iter->buf != NULL)
+ isc_mem_put(iter->mctx, iter->buf, iter->bufsize);
iter->magic = 0;
isc_mem_put(iter->mctx, iter, sizeof(*iter));
diff --git a/contrib/ntp/libisc/net.c b/contrib/ntp/libisc/net.c
index 6c51f1c..3d4ab66 100644
--- a/contrib/ntp/libisc/net.c
+++ b/contrib/ntp/libisc/net.c
@@ -1,21 +1,21 @@
/*
- * Copyright (C) 1999-2001 Internet Software Consortium.
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1999-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
- * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
- * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
- * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
- * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: net.c,v 1.25 2001/11/30 01:59:45 gson Exp $ */
+/* $Id: net.c,v 1.22.2.2.10.7 2004/04/29 01:31:22 marka Exp $ */
#include <config.h>
@@ -23,6 +23,7 @@
#include <unistd.h>
#include <isc/net.h>
+#include <isc/once.h>
#include <isc/strerror.h>
#include <isc/string.h>
#include <isc/util.h>
@@ -31,9 +32,17 @@
const struct in6_addr isc_net_in6addrany = IN6ADDR_ANY_INIT;
#endif
+#if defined(ISC_PLATFORM_HAVEIPV6) && defined(ISC_PLATFORM_NEEDIN6ADDRLOOPBACK)
+const struct in6_addr isc_net_in6addrloop = IN6ADDR_LOOPBACK_INIT;
+#endif
+
static isc_boolean_t once = ISC_FALSE;
+static isc_once_t once_ipv6only = ISC_ONCE_INIT;
+static isc_once_t once_ipv6pktinfo = ISC_ONCE_INIT;
static isc_result_t ipv4_result = ISC_R_NOTFOUND;
static isc_result_t ipv6_result = ISC_R_NOTFOUND;
+static isc_result_t ipv6only_result = ISC_R_NOTFOUND;
+static isc_result_t ipv6pktinfo_result = ISC_R_NOTFOUND;
static isc_result_t
try_proto(int domain) {
@@ -57,23 +66,24 @@ try_proto(int domain) {
default:
isc__strerror(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
- "socket() %s failed",
+ "socket() failed: %s",
strbuf);
return (ISC_R_UNEXPECTED);
}
}
#ifdef ISC_PLATFORM_HAVEIPV6
+#ifdef WANT_IPV6
#ifdef ISC_PLATFORM_HAVEIN6PKTINFO
if (domain == PF_INET6) {
struct sockaddr_in6 sin6;
- unsigned int len;
+ GETSOCKNAME_SOCKLEN_TYPE len;
/*
* Check to see if IPv6 is broken, as is common on Linux.
*/
len = sizeof(sin6);
- if (getsockname(s, (struct sockaddr *)&sin6, (void *)&len) < 0)
+ if (getsockname(s, (struct sockaddr *)&sin6, &len) < 0)
{
result = ISC_R_NOTFOUND;
} else {
@@ -86,6 +96,7 @@ try_proto(int domain) {
}
#endif
#endif
+#endif
(void)close(s);
@@ -96,10 +107,12 @@ static void
initialize_action(void) {
ipv4_result = try_proto(PF_INET);
#ifdef ISC_PLATFORM_HAVEIPV6
+#ifdef WANT_IPV6
#ifdef ISC_PLATFORM_HAVEIN6PKTINFO
ipv6_result = try_proto(PF_INET6);
#endif
#endif
+#endif
}
static void
@@ -121,3 +134,178 @@ isc_net_probeipv6(void) {
initialize();
return (ipv6_result);
}
+
+#ifdef ISC_PLATFORM_HAVEIPV6
+#ifdef WANT_IPV6
+static void
+try_ipv6only(void) {
+#ifdef IPV6_V6ONLY
+ int s, on;
+ char strbuf[ISC_STRERRORSIZE];
+#endif
+ isc_result_t result;
+
+ result = isc_net_probeipv6();
+ if (result != ISC_R_SUCCESS) {
+ ipv6only_result = result;
+ return;
+ }
+
+#ifndef IPV6_V6ONLY
+ ipv6only_result = ISC_R_NOTFOUND;
+ return;
+#else
+ /* check for TCP sockets */
+ s = socket(PF_INET6, SOCK_STREAM, 0);
+ if (s == -1) {
+ isc__strerror(errno, strbuf, sizeof(strbuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "socket() failed: %s",
+ strbuf);
+ ipv6only_result = ISC_R_UNEXPECTED;
+ return;
+ }
+
+ on = 1;
+ if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0) {
+ ipv6only_result = ISC_R_NOTFOUND;
+ goto close;
+ }
+
+ close(s);
+
+ /* check for UDP sockets */
+ s = socket(PF_INET6, SOCK_DGRAM, 0);
+ if (s == -1) {
+ isc__strerror(errno, strbuf, sizeof(strbuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "socket() failed: %s",
+ strbuf);
+ ipv6only_result = ISC_R_UNEXPECTED;
+ return;
+ }
+
+ on = 1;
+ if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) < 0) {
+ ipv6only_result = ISC_R_NOTFOUND;
+ goto close;
+ }
+
+ close(s);
+
+ ipv6only_result = ISC_R_SUCCESS;
+
+close:
+ close(s);
+ return;
+#endif /* IPV6_V6ONLY */
+}
+
+static void
+initialize_ipv6only(void) {
+ RUNTIME_CHECK(isc_once_do(&once_ipv6only,
+ try_ipv6only) == ISC_R_SUCCESS);
+}
+
+static void
+try_ipv6pktinfo(void) {
+ int s, on;
+ char strbuf[ISC_STRERRORSIZE];
+ isc_result_t result;
+ int optname;
+
+ result = isc_net_probeipv6();
+ if (result != ISC_R_SUCCESS) {
+ ipv6pktinfo_result = result;
+ return;
+ }
+
+ /* we only use this for UDP sockets */
+ s = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);
+ if (s == -1) {
+ isc__strerror(errno, strbuf, sizeof(strbuf));
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ "socket() failed: %s",
+ strbuf);
+ ipv6pktinfo_result = ISC_R_UNEXPECTED;
+ return;
+ }
+
+#ifdef IPV6_RECVPKTINFO
+ optname = IPV6_RECVPKTINFO;
+#else
+ optname = IPV6_PKTINFO;
+#endif
+ on = 1;
+ if (setsockopt(s, IPPROTO_IPV6, optname, &on, sizeof(on)) < 0) {
+ ipv6pktinfo_result = ISC_R_NOTFOUND;
+ goto close;
+ }
+
+ close(s);
+ ipv6pktinfo_result = ISC_R_SUCCESS;
+
+close:
+ close(s);
+ return;
+}
+
+static void
+initialize_ipv6pktinfo(void) {
+ RUNTIME_CHECK(isc_once_do(&once_ipv6pktinfo,
+ try_ipv6pktinfo) == ISC_R_SUCCESS);
+}
+#endif /* WANT_IPV6 */
+#endif /* ISC_PLATFORM_HAVEIPV6 */
+
+isc_result_t
+isc_net_probe_ipv6only(void) {
+#ifdef ISC_PLATFORM_HAVEIPV6
+#ifdef WANT_IPV6
+ initialize_ipv6only();
+#else
+ ipv6only_result = ISC_R_NOTFOUND;
+#endif
+#endif
+ return (ipv6only_result);
+}
+
+isc_result_t
+isc_net_probe_ipv6pktinfo(void) {
+#ifdef ISC_PLATFORM_HAVEIPV6
+#ifdef WANT_IPV6
+ initialize_ipv6pktinfo();
+#else
+ ipv6pktinfo_result = ISC_R_NOTFOUND;
+#endif
+#endif
+ return (ipv6pktinfo_result);
+}
+
+void
+isc_net_disableipv4(void) {
+ initialize();
+ if (ipv4_result == ISC_R_SUCCESS)
+ ipv4_result = ISC_R_DISABLED;
+}
+
+void
+isc_net_disableipv6(void) {
+ initialize();
+ if (ipv6_result == ISC_R_SUCCESS)
+ ipv6_result = ISC_R_DISABLED;
+}
+
+void
+isc_net_enableipv4(void) {
+ initialize();
+ if (ipv4_result == ISC_R_DISABLED)
+ ipv4_result = ISC_R_SUCCESS;
+}
+
+void
+isc_net_enableipv6(void) {
+ initialize();
+ if (ipv6_result == ISC_R_DISABLED)
+ ipv6_result = ISC_R_SUCCESS;
+}
diff --git a/contrib/ntp/libisc/netaddr.c b/contrib/ntp/libisc/netaddr.c
new file mode 100644
index 0000000..1fcd102
--- /dev/null
+++ b/contrib/ntp/libisc/netaddr.c
@@ -0,0 +1,363 @@
+/*
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1999-2002 Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* $Id: netaddr.c,v 1.18.12.9 2004/05/15 03:46:12 jinmei Exp $ */
+
+#include <config.h>
+
+#define ISC_ONLY_IPV6
+
+#include <stdio.h>
+
+#include <isc/buffer.h>
+#include <isc/msgs.h>
+#include <isc/net.h>
+#include <isc/netaddr.h>
+#include <isc/print.h>
+#include <isc/sockaddr.h>
+#include <isc/string.h>
+#include <isc/util.h>
+
+isc_boolean_t
+isc_netaddr_equal(const isc_netaddr_t *a, const isc_netaddr_t *b) {
+ REQUIRE(a != NULL && b != NULL);
+
+ if (a->family != b->family)
+ return (ISC_FALSE);
+
+ if (a->zone != b->zone)
+ return (ISC_FALSE);
+
+ switch (a->family) {
+ case AF_INET:
+ if (a->type.in.s_addr != b->type.in.s_addr)
+ return (ISC_FALSE);
+ break;
+ case AF_INET6:
+ if (memcmp(&a->type.in6, &b->type.in6,
+ sizeof(a->type.in6)) != 0 ||
+ a->zone != b->zone)
+ return (ISC_FALSE);
+ break;
+ default:
+ return (ISC_FALSE);
+ }
+ return (ISC_TRUE);
+}
+
+isc_boolean_t
+isc_netaddr_eqprefix(const isc_netaddr_t *a, const isc_netaddr_t *b,
+ unsigned int prefixlen)
+{
+ const unsigned char *pa, *pb;
+ unsigned int ipabytes; /* Length of whole IP address in bytes */
+ unsigned int nbytes; /* Number of significant whole bytes */
+ unsigned int nbits; /* Number of significant leftover bits */
+
+ REQUIRE(a != NULL && b != NULL);
+
+ if (a->family != b->family)
+ return (ISC_FALSE);
+
+ if (a->zone != b->zone)
+ return (ISC_FALSE);
+
+ switch (a->family) {
+ case AF_INET:
+ pa = (const unsigned char *) &a->type.in;
+ pb = (const unsigned char *) &b->type.in;
+ ipabytes = 4;
+ break;
+ case AF_INET6:
+ pa = (const unsigned char *) &a->type.in6;
+ pb = (const unsigned char *) &b->type.in6;
+ ipabytes = 16;
+ break;
+ default:
+ pa = pb = NULL; /* Avoid silly compiler warning. */
+ ipabytes = 0; /* Ditto. */
+ return (ISC_FALSE);
+ }
+
+ /*
+ * Don't crash if we get a pattern like 10.0.0.1/9999999.
+ */
+ if (prefixlen > ipabytes * 8)
+ prefixlen = ipabytes * 8;
+
+ nbytes = prefixlen / 8;
+ nbits = prefixlen % 8;
+
+ if (nbytes > 0) {
+ if (memcmp(pa, pb, nbytes) != 0)
+ return (ISC_FALSE);
+ }
+ if (nbits > 0) {
+ unsigned int bytea, byteb, mask;
+ INSIST(nbytes < ipabytes);
+ INSIST(nbits < 8);
+ bytea = pa[nbytes];
+ byteb = pb[nbytes];
+ mask = (0xFF << (8-nbits)) & 0xFF;
+ if ((bytea & mask) != (byteb & mask))
+ return (ISC_FALSE);
+ }
+ return (ISC_TRUE);
+}
+
+isc_result_t
+isc_netaddr_totext(const isc_netaddr_t *netaddr, isc_buffer_t *target) {
+ char abuf[sizeof("xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:255.255.255.255")];
+ char zbuf[sizeof("%4294967295")];
+ unsigned int alen;
+ int zlen;
+ const char *r;
+ const void *type;
+
+ REQUIRE(netaddr != NULL);
+
+ switch (netaddr->family) {
+ case AF_INET:
+ type = &netaddr->type.in;
+ break;
+ case AF_INET6:
+ type = &netaddr->type.in6;
+ break;
+ default:
+ return (ISC_R_FAILURE);
+ }
+ r = inet_ntop(netaddr->family, type, abuf, sizeof(abuf));
+ if (r == NULL)
+ return (ISC_R_FAILURE);
+
+ alen = strlen(abuf);
+ INSIST(alen < sizeof(abuf));
+
+ zlen = 0;
+ if (netaddr->family == AF_INET6 && netaddr->zone != 0) {
+ zlen = snprintf(zbuf, sizeof(zbuf), "%%%u", netaddr->zone);
+ if (zlen < 0)
+ return (ISC_R_FAILURE);
+ INSIST((unsigned int)zlen < sizeof(zbuf));
+ }
+
+ if (alen + zlen > isc_buffer_availablelength(target))
+ return (ISC_R_NOSPACE);
+
+ isc_buffer_putmem(target, (unsigned char *)abuf, alen);
+ isc_buffer_putmem(target, (unsigned char *)zbuf, zlen);
+
+ return (ISC_R_SUCCESS);
+}
+
+void
+isc_netaddr_format(const isc_netaddr_t *na, char *array, unsigned int size) {
+ isc_result_t result;
+ isc_buffer_t buf;
+
+ isc_buffer_init(&buf, array, size);
+ result = isc_netaddr_totext(na, &buf);
+
+ /*
+ * Null terminate.
+ */
+ if (result == ISC_R_SUCCESS) {
+ if (isc_buffer_availablelength(&buf) >= 1)
+ isc_buffer_putuint8(&buf, 0);
+ else
+ result = ISC_R_NOSPACE;
+ }
+
+ if (result != ISC_R_SUCCESS) {
+ snprintf(array, size,
+ isc_msgcat_get(isc_msgcat, ISC_MSGSET_NETADDR,
+ ISC_MSG_UNKNOWNADDR,
+ "<unknown address, family %u>"),
+ na->family);
+ array[size - 1] = '\0';
+ }
+}
+
+isc_result_t
+isc_netaddr_masktoprefixlen(const isc_netaddr_t *s, unsigned int *lenp) {
+ unsigned int nbits, nbytes, ipbytes, i;
+ const unsigned char *p;
+
+ switch (s->family) {
+ case AF_INET:
+ p = (const unsigned char *) &s->type.in;
+ ipbytes = 4;
+ break;
+ case AF_INET6:
+ p = (const unsigned char *) &s->type.in6;
+ ipbytes = 16;
+ break;
+ default:
+ ipbytes = 0;
+ return (ISC_R_NOTIMPLEMENTED);
+ }
+ nbytes = nbits = 0;
+ for (i = 0; i < ipbytes; i++) {
+ if (p[i] != 0xFF)
+ break;
+ }
+ nbytes = i;
+ if (i < ipbytes) {
+ unsigned int c = p[nbytes];
+ while ((c & 0x80) != 0 && nbits < 8) {
+ c <<= 1; nbits++;
+ }
+ if ((c & 0xFF) != 0)
+ return (ISC_R_MASKNONCONTIG);
+ i++;
+ }
+ for (; i < ipbytes; i++) {
+ if (p[i] != 0)
+ return (ISC_R_MASKNONCONTIG);
+ i++;
+ }
+ *lenp = nbytes * 8 + nbits;
+ return (ISC_R_SUCCESS);
+}
+
+void
+isc_netaddr_fromin(isc_netaddr_t *netaddr, const struct in_addr *ina) {
+ memset(netaddr, 0, sizeof(*netaddr));
+ netaddr->family = AF_INET;
+ netaddr->type.in = *ina;
+}
+
+void
+isc_netaddr_fromin6(isc_netaddr_t *netaddr, const struct in6_addr *ina6) {
+ memset(netaddr, 0, sizeof(*netaddr));
+ netaddr->family = AF_INET6;
+ netaddr->type.in6 = *ina6;
+}
+
+void
+isc_netaddr_setzone(isc_netaddr_t *netaddr, isc_uint32_t zone) {
+ /* we currently only support AF_INET6. */
+ REQUIRE(netaddr->family == AF_INET6);
+
+ netaddr->zone = zone;
+}
+
+isc_uint32_t
+isc_netaddr_getzone(const isc_netaddr_t *netaddr) {
+ return (netaddr->zone);
+}
+
+void
+isc_netaddr_fromsockaddr(isc_netaddr_t *t, const isc_sockaddr_t *s) {
+ int family = s->type.sa.sa_family;
+ t->family = family;
+ switch (family) {
+ case AF_INET:
+ t->type.in = s->type.sin.sin_addr;
+ t->zone = 0;
+ break;
+ case AF_INET6:
+ memcpy(&t->type.in6, &s->type.sin6.sin6_addr, 16);
+#ifdef ISC_PLATFORM_HAVESCOPEID
+ t->zone = s->type.sin6.sin6_scope_id;
+#else
+ t->zone = 0;
+#endif
+ break;
+ default:
+ INSIST(0);
+ }
+}
+
+void
+isc_netaddr_any(isc_netaddr_t *netaddr) {
+ memset(netaddr, 0, sizeof(*netaddr));
+ netaddr->family = AF_INET;
+ netaddr->type.in.s_addr = INADDR_ANY;
+}
+
+#ifdef ISC_PLATFORM_HAVEIPV6
+void
+isc_netaddr_any6(isc_netaddr_t *netaddr) {
+ memset(netaddr, 0, sizeof(*netaddr));
+ netaddr->family = AF_INET6;
+ netaddr->type.in6 = in6addr_any;
+}
+#endif
+
+isc_boolean_t
+isc_netaddr_ismulticast(isc_netaddr_t *na) {
+ switch (na->family) {
+ case AF_INET:
+ return (ISC_TF(ISC_IPADDR_ISMULTICAST(na->type.in.s_addr)));
+ case AF_INET6:
+ return (ISC_TF(IN6_IS_ADDR_MULTICAST(&na->type.in6)));
+ default:
+ return (ISC_FALSE); /* XXXMLG ? */
+ }
+}
+
+isc_boolean_t
+isc_netaddr_isexperimental(isc_netaddr_t *na) {
+ switch (na->family) {
+ case AF_INET:
+ return (ISC_TF(ISC_IPADDR_ISEXPERIMENTAL(na->type.in.s_addr)));
+ default:
+ return (ISC_FALSE); /* XXXMLG ? */
+ }
+}
+
+isc_boolean_t
+isc_netaddr_islinklocal(isc_netaddr_t *na) {
+ switch (na->family) {
+ case AF_INET:
+ return (ISC_FALSE);
+ case AF_INET6:
+ return (ISC_TF(IN6_IS_ADDR_LINKLOCAL(&na->type.in6)));
+ default:
+ return (ISC_FALSE);
+ }
+}
+
+isc_boolean_t
+isc_netaddr_issitelocal(isc_netaddr_t *na) {
+ switch (na->family) {
+ case AF_INET:
+ return (ISC_FALSE);
+ case AF_INET6:
+ return (ISC_TF(IN6_IS_ADDR_SITELOCAL(&na->type.in6)));
+ default:
+ return (ISC_FALSE);
+ }
+}
+
+#ifdef ISC_PLATFORM_HAVEIPV6
+void
+isc_netaddr_fromv4mapped(isc_netaddr_t *t, const isc_netaddr_t *s) {
+ isc_netaddr_t *src;
+
+ DE_CONST(s, src); /* Must come before IN6_IS_ADDR_V4MAPPED. */
+
+ REQUIRE(s->family == AF_INET6);
+ REQUIRE(IN6_IS_ADDR_V4MAPPED(&src->type.in6));
+
+ memset(t, 0, sizeof(*t));
+ t->family = AF_INET;
+ memcpy(&t->type.in, (char *)&src->type.in6 + 12, 4);
+ return;
+}
+#endif
diff --git a/contrib/ntp/libisc/netscope.c b/contrib/ntp/libisc/netscope.c
new file mode 100644
index 0000000..f0bffc4
--- /dev/null
+++ b/contrib/ntp/libisc/netscope.c
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2002 Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char rcsid[] =
+ "$Id: netscope.c,v 1.5.142.7 2004/03/12 10:31:26 marka Exp $";
+#endif /* LIBC_SCCS and not lint */
+
+#include <config.h>
+
+#include <isc/string.h>
+#include <isc/net.h>
+#include <isc/netscope.h>
+#include <isc/result.h>
+
+isc_result_t
+isc_netscope_pton(int af, char *scopename, void *addr, isc_uint32_t *zoneid) {
+ char *ep;
+#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX
+ unsigned int ifid;
+#endif
+ struct in6_addr *in6;
+ isc_uint32_t zone;
+ isc_uint64_t llz;
+
+ /* at this moment, we only support AF_INET6 */
+ if (af != AF_INET6)
+ return (ISC_R_FAILURE);
+
+ in6 = (struct in6_addr *)addr;
+
+ /*
+ * Basically, "names" are more stable than numeric IDs in terms of
+ * renumbering, and are more preferred. However, since there is no
+ * standard naming convention and APIs to deal with the names. Thus,
+ * we only handle the case of link-local addresses, for which we use
+ * interface names as link names, assuming one to one mapping between
+ * interfaces and links.
+ */
+#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX
+ if (IN6_IS_ADDR_LINKLOCAL(in6) &&
+ (ifid = if_nametoindex((const char *)scopename)) != 0)
+ zone = (isc_uint32_t)ifid;
+ else {
+#endif
+ llz = isc_string_touint64(scopename, &ep, 10);
+ if (ep == scopename)
+ return (ISC_R_FAILURE);
+
+ /* check overflow */
+ zone = (isc_uint32_t)(llz & 0xffffffffUL);
+ if (zone != llz)
+ return (ISC_R_FAILURE);
+#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX
+ }
+#endif
+
+ *zoneid = zone;
+ return (ISC_R_SUCCESS);
+}
diff --git a/contrib/ntp/libisc/sockaddr.c b/contrib/ntp/libisc/sockaddr.c
new file mode 100644
index 0000000..33d7a1b
--- /dev/null
+++ b/contrib/ntp/libisc/sockaddr.c
@@ -0,0 +1,480 @@
+/*
+ * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 1999-2003 Internet Software Consortium.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* $Id: sockaddr.c,v 1.48.2.1.2.10 2004/05/15 03:46:12 jinmei Exp $ */
+
+#include <config.h>
+
+#define ISC_ONLY_IPV6
+
+#include <stdio.h>
+
+#include <isc/buffer.h>
+/*
+ * We currently don't need hashing here
+ */
+#if 0
+#include <isc/hash.h>
+#endif
+
+#include <isc/msgs.h>
+#include <isc/netaddr.h>
+#include <isc/print.h>
+#include <isc/region.h>
+#include <isc/sockaddr.h>
+#include <isc/string.h>
+#include <isc/util.h>
+
+isc_boolean_t
+isc_sockaddr_equal(const isc_sockaddr_t *a, const isc_sockaddr_t *b) {
+ REQUIRE(a != NULL && b != NULL);
+
+ if (a->length != b->length)
+ return (ISC_FALSE);
+
+ /*
+ * We don't just memcmp because the sin_zero field isn't always
+ * zero.
+ */
+
+ if (a->type.sa.sa_family != b->type.sa.sa_family)
+ return (ISC_FALSE);
+ switch (a->type.sa.sa_family) {
+ case AF_INET:
+ if (memcmp(&a->type.sin.sin_addr, &b->type.sin.sin_addr,
+ sizeof(a->type.sin.sin_addr)) != 0)
+ return (ISC_FALSE);
+ if (a->type.sin.sin_port != b->type.sin.sin_port)
+ return (ISC_FALSE);
+ break;
+ case AF_INET6:
+ if (memcmp(&a->type.sin6.sin6_addr, &b->type.sin6.sin6_addr,
+ sizeof(a->type.sin6.sin6_addr)) != 0)
+ return (ISC_FALSE);
+#ifdef ISC_PLATFORM_HAVESCOPEID
+ if (a->type.sin6.sin6_scope_id != b->type.sin6.sin6_scope_id)
+ return (ISC_FALSE);
+#endif
+ if (a->type.sin6.sin6_port != b->type.sin6.sin6_port)
+ return (ISC_FALSE);
+ break;
+ default:
+ if (memcmp(&a->type, &b->type, a->length) != 0)
+ return (ISC_FALSE);
+ }
+ return (ISC_TRUE);
+}
+
+isc_boolean_t
+isc_sockaddr_eqaddr(const isc_sockaddr_t *a, const isc_sockaddr_t *b) {
+ REQUIRE(a != NULL && b != NULL);
+
+ if (a->length != b->length)
+ return (ISC_FALSE);
+
+ if (a->type.sa.sa_family != b->type.sa.sa_family)
+ return (ISC_FALSE);
+ switch (a->type.sa.sa_family) {
+ case AF_INET:
+ if (memcmp(&a->type.sin.sin_addr, &b->type.sin.sin_addr,
+ sizeof(a->type.sin.sin_addr)) != 0)
+ return (ISC_FALSE);
+ break;
+ case AF_INET6:
+ if (memcmp(&a->type.sin6.sin6_addr, &b->type.sin6.sin6_addr,
+ sizeof(a->type.sin6.sin6_addr)) != 0)
+ return (ISC_FALSE);
+#ifdef ISC_PLATFORM_HAVESCOPEID
+ if (a->type.sin6.sin6_scope_id != b->type.sin6.sin6_scope_id)
+ return (ISC_FALSE);
+#endif
+ break;
+ default:
+ if (memcmp(&a->type, &b->type, a->length) != 0)
+ return (ISC_FALSE);
+ }
+ return (ISC_TRUE);
+}
+
+isc_boolean_t
+isc_sockaddr_eqaddrprefix(const isc_sockaddr_t *a, const isc_sockaddr_t *b,
+ unsigned int prefixlen)
+{
+ isc_netaddr_t na, nb;
+ isc_netaddr_fromsockaddr(&na, a);
+ isc_netaddr_fromsockaddr(&nb, b);
+ return (isc_netaddr_eqprefix(&na, &nb, prefixlen));
+}
+
+isc_result_t
+isc_sockaddr_totext(const isc_sockaddr_t *sockaddr, isc_buffer_t *target) {
+ isc_result_t result;
+ isc_netaddr_t netaddr;
+ char pbuf[sizeof("65000")];
+ unsigned int plen;
+ isc_region_t avail;
+
+ REQUIRE(sockaddr != NULL);
+
+ /*
+ * Do the port first, giving us the opportunity to check for
+ * unsupported address families before calling
+ * isc_netaddr_fromsockaddr().
+ */
+ switch (sockaddr->type.sa.sa_family) {
+ case AF_INET:
+ snprintf(pbuf, sizeof(pbuf), "%u", ntohs(sockaddr->type.sin.sin_port));
+ break;
+ case AF_INET6:
+ snprintf(pbuf, sizeof(pbuf), "%u", ntohs(sockaddr->type.sin6.sin6_port));
+ break;
+ default:
+ return (ISC_R_FAILURE);
+ }
+
+ plen = strlen(pbuf);
+ INSIST(plen < sizeof(pbuf));
+
+ isc_netaddr_fromsockaddr(&netaddr, sockaddr);
+ result = isc_netaddr_totext(&netaddr, target);
+ if (result != ISC_R_SUCCESS)
+ return (result);
+
+ if (1 + plen + 1 > isc_buffer_availablelength(target))
+ return (ISC_R_NOSPACE);
+
+ isc_buffer_putmem(target, (const unsigned char *)"#", 1);
+ isc_buffer_putmem(target, (const unsigned char *)pbuf, plen);
+
+ /*
+ * Null terminate after used region.
+ */
+ isc_buffer_availableregion(target, &avail);
+ INSIST(avail.length >= 1);
+ avail.base[0] = '\0';
+
+ return (ISC_R_SUCCESS);
+}
+
+void
+isc_sockaddr_format(const isc_sockaddr_t *sa, char *array, unsigned int size) {
+ isc_result_t result;
+ isc_buffer_t buf;
+
+ isc_buffer_init(&buf, array, size);
+ result = isc_sockaddr_totext(sa, &buf);
+ if (result != ISC_R_SUCCESS) {
+ /*
+ * The message is the same as in netaddr.c.
+ */
+ snprintf(array, size,
+ isc_msgcat_get(isc_msgcat, ISC_MSGSET_NETADDR,
+ ISC_MSG_UNKNOWNADDR,
+ "<unknown address, family %u>"),
+ sa->type.sa.sa_family);
+ array[size - 1] = '\0';
+ }
+}
+
+#if 0
+/*
+ * We currently don't need hashing here
+ */
+unsigned int
+isc_sockaddr_hash(const isc_sockaddr_t *sockaddr, isc_boolean_t address_only) {
+ unsigned int length = 0;
+ const unsigned char *s = NULL;
+ unsigned int h = 0;
+ unsigned int g;
+ unsigned int p = 0;
+ const struct in6_addr *in6;
+
+ REQUIRE(sockaddr != NULL);
+
+ switch (sockaddr->type.sa.sa_family) {
+ case AF_INET:
+ s = (const unsigned char *)&sockaddr->type.sin.sin_addr;
+ p = ntohs(sockaddr->type.sin.sin_port);
+ length = sizeof(sockaddr->type.sin.sin_addr.s_addr);
+ break;
+#if ISC_PLATFORM_HAVEIPV6
+ case AF_INET6:
+ in6 = &sockaddr->type.sin6.sin6_addr;
+ if (IN6_IS_ADDR_V4MAPPED(in6)) {
+ s = (const unsigned char *)&in6[12];
+ length = sizeof(sockaddr->type.sin.sin_addr.s_addr);
+ } else {
+ s = (const unsigned char *)in6;
+ length = sizeof(sockaddr->type.sin6.sin6_addr);
+ }
+ p = ntohs(sockaddr->type.sin6.sin6_port);
+ break;
+#endif
+ default:
+ UNEXPECTED_ERROR(__FILE__, __LINE__,
+ isc_msgcat_get(isc_msgcat,
+ ISC_MSGSET_SOCKADDR,
+ ISC_MSG_UNKNOWNFAMILY,
+ "unknown address family: %d"),
+ (int)sockaddr->type.sa.sa_family);
+ s = (const unsigned char *)&sockaddr->type;
+ length = sockaddr->length;
+ p = 0;
+ }
+
+ h = isc_hash_calc(s, length, ISC_TRUE);
+ if (!address_only) {
+ g = isc_hash_calc((const unsigned char *)&p, sizeof(p),
+ ISC_TRUE);
+ h = h ^ g; /* XXX: we should concatenate h and p first */
+ }
+
+ return (h);
+}
+#endif
+
+void
+isc_sockaddr_any(isc_sockaddr_t *sockaddr)
+{
+ memset(sockaddr, 0, sizeof(*sockaddr));
+ sockaddr->type.sin.sin_family = AF_INET;
+#ifdef ISC_PLATFORM_HAVESALEN
+ sockaddr->type.sin.sin_len = sizeof(sockaddr->type.sin);
+#endif
+ sockaddr->type.sin.sin_addr.s_addr = INADDR_ANY;
+ sockaddr->type.sin.sin_port = 0;
+ sockaddr->length = sizeof(sockaddr->type.sin);
+ ISC_LINK_INIT(sockaddr, link);
+}
+
+void
+isc_sockaddr_any6(isc_sockaddr_t *sockaddr)
+{
+#ifdef ISC_PLATFORM_HAVEIPV6
+ memset(sockaddr, 0, sizeof(*sockaddr));
+ sockaddr->type.sin6.sin6_family = AF_INET6;
+#ifdef ISC_PLATFORM_HAVESALEN
+ sockaddr->type.sin6.sin6_len = sizeof(sockaddr->type.sin6);
+#endif
+ sockaddr->type.sin6.sin6_addr = in6addr_any;
+ sockaddr->type.sin6.sin6_port = 0;
+ sockaddr->length = sizeof(sockaddr->type.sin6);
+ ISC_LINK_INIT(sockaddr, link);
+#endif
+}
+
+void
+isc_sockaddr_fromin(isc_sockaddr_t *sockaddr, const struct in_addr *ina,
+ in_port_t port)
+{
+ memset(sockaddr, 0, sizeof(*sockaddr));
+ sockaddr->type.sin.sin_family = AF_INET;
+#ifdef ISC_PLATFORM_HAVESALEN
+ sockaddr->type.sin.sin_len = sizeof(sockaddr->type.sin);
+#endif
+ sockaddr->type.sin.sin_addr = *ina;
+ sockaddr->type.sin.sin_port = htons(port);
+ sockaddr->length = sizeof(sockaddr->type.sin);
+ ISC_LINK_INIT(sockaddr, link);
+}
+
+void
+isc_sockaddr_anyofpf(isc_sockaddr_t *sockaddr, int pf) {
+ switch (pf) {
+ case AF_INET:
+ isc_sockaddr_any(sockaddr);
+ break;
+ case AF_INET6:
+ isc_sockaddr_any6(sockaddr);
+ break;
+ default:
+ INSIST(0);
+ }
+}
+
+void
+isc_sockaddr_fromin6(isc_sockaddr_t *sockaddr, const struct in6_addr *ina6,
+ in_port_t port)
+{
+ memset(sockaddr, 0, sizeof(*sockaddr));
+ sockaddr->type.sin6.sin6_family = AF_INET6;
+#ifdef ISC_PLATFORM_HAVESALEN
+ sockaddr->type.sin6.sin6_len = sizeof(sockaddr->type.sin6);
+#endif
+ sockaddr->type.sin6.sin6_addr = *ina6;
+ sockaddr->type.sin6.sin6_port = htons(port);
+ sockaddr->length = sizeof(sockaddr->type.sin6);
+ ISC_LINK_INIT(sockaddr, link);
+}
+
+void
+isc_sockaddr_v6fromin(isc_sockaddr_t *sockaddr, const struct in_addr *ina,
+ in_port_t port)
+{
+ memset(sockaddr, 0, sizeof(*sockaddr));
+ sockaddr->type.sin6.sin6_family = AF_INET6;
+#ifdef ISC_PLATFORM_HAVESALEN
+ sockaddr->type.sin6.sin6_len = sizeof(sockaddr->type.sin6);
+#endif
+ sockaddr->type.sin6.sin6_addr.s6_addr[10] = 0xff;
+ sockaddr->type.sin6.sin6_addr.s6_addr[11] = 0xff;
+ memcpy(&sockaddr->type.sin6.sin6_addr.s6_addr[12], ina, 4);
+ sockaddr->type.sin6.sin6_port = htons(port);
+ sockaddr->length = sizeof(sockaddr->type.sin6);
+ ISC_LINK_INIT(sockaddr, link);
+}
+
+int
+isc_sockaddr_pf(const isc_sockaddr_t *sockaddr) {
+
+ /*
+ * Get the protocol family of 'sockaddr'.
+ */
+
+#if (AF_INET == PF_INET && AF_INET6 == PF_INET6)
+ /*
+ * Assume that PF_xxx == AF_xxx for all AF and PF.
+ */
+ return (sockaddr->type.sa.sa_family);
+#else
+ switch (sockaddr->type.sa.sa_family) {
+ case AF_INET:
+ return (PF_INET);
+ case AF_INET6:
+ return (PF_INET6);
+ default:
+ FATAL_ERROR(__FILE__, __LINE__,
+ isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKADDR,
+ ISC_MSG_UNKNOWNFAMILY,
+ "unknown address family: %d"),
+ (int)sockaddr->type.sa.sa_family);
+ }
+#endif
+}
+
+void
+isc_sockaddr_fromnetaddr(isc_sockaddr_t *sockaddr, const isc_netaddr_t *na,
+ in_port_t port)
+{
+ memset(sockaddr, 0, sizeof(*sockaddr));
+ sockaddr->type.sin.sin_family = na->family;
+ switch (na->family) {
+ case AF_INET:
+ sockaddr->length = sizeof(sockaddr->type.sin);
+#ifdef ISC_PLATFORM_HAVESALEN
+ sockaddr->type.sin.sin_len = sizeof(sockaddr->type.sin);
+#endif
+ sockaddr->type.sin.sin_addr = na->type.in;
+ sockaddr->type.sin.sin_port = htons(port);
+ break;
+ case AF_INET6:
+ sockaddr->length = sizeof(sockaddr->type.sin6);
+#ifdef ISC_PLATFORM_HAVESALEN
+ sockaddr->type.sin6.sin6_len = sizeof(sockaddr->type.sin6);
+#endif
+ memcpy(&sockaddr->type.sin6.sin6_addr, &na->type.in6, 16);
+#ifdef ISC_PLATFORM_HAVESCOPEID
+ sockaddr->type.sin6.sin6_scope_id = isc_netaddr_getzone(na);
+#endif
+ sockaddr->type.sin6.sin6_port = htons(port);
+ break;
+ default:
+ INSIST(0);
+ }
+ ISC_LINK_INIT(sockaddr, link);
+}
+
+void
+isc_sockaddr_setport(isc_sockaddr_t *sockaddr, in_port_t port) {
+ switch (sockaddr->type.sa.sa_family) {
+ case AF_INET:
+ sockaddr->type.sin.sin_port = htons(port);
+ break;
+ case AF_INET6:
+ sockaddr->type.sin6.sin6_port = htons(port);
+ break;
+ default:
+ FATAL_ERROR(__FILE__, __LINE__,
+ isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKADDR,
+ ISC_MSG_UNKNOWNFAMILY,
+ "unknown address family: %d"),
+ (int)sockaddr->type.sa.sa_family);
+ }
+}
+
+in_port_t
+isc_sockaddr_getport(isc_sockaddr_t *sockaddr) {
+ in_port_t port = 0;
+
+ switch (sockaddr->type.sa.sa_family) {
+ case AF_INET:
+ port = ntohs(sockaddr->type.sin.sin_port);
+ break;
+ case AF_INET6:
+ port = ntohs(sockaddr->type.sin6.sin6_port);
+ break;
+ default:
+ FATAL_ERROR(__FILE__, __LINE__,
+ isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKADDR,
+ ISC_MSG_UNKNOWNFAMILY,
+ "unknown address family: %d"),
+ (int)sockaddr->type.sa.sa_family);
+ }
+
+ return (port);
+}
+
+isc_boolean_t
+isc_sockaddr_ismulticast(isc_sockaddr_t *sockaddr) {
+ isc_netaddr_t netaddr;
+
+ isc_netaddr_fromsockaddr(&netaddr, sockaddr);
+ return (isc_netaddr_ismulticast(&netaddr));
+}
+
+isc_boolean_t
+isc_sockaddr_isexperimental(isc_sockaddr_t *sockaddr) {
+ isc_netaddr_t netaddr;
+
+ if (sockaddr->type.sa.sa_family == AF_INET) {
+ isc_netaddr_fromsockaddr(&netaddr, sockaddr);
+ return (isc_netaddr_isexperimental(&netaddr));
+ }
+ return (ISC_FALSE);
+}
+
+isc_boolean_t
+isc_sockaddr_issitelocal(isc_sockaddr_t *sockaddr) {
+ isc_netaddr_t netaddr;
+
+ if (sockaddr->type.sa.sa_family == AF_INET6) {
+ isc_netaddr_fromsockaddr(&netaddr, sockaddr);
+ return (isc_netaddr_issitelocal(&netaddr));
+ }
+ return (ISC_FALSE);
+}
+
+isc_boolean_t
+isc_sockaddr_islinklocal(isc_sockaddr_t *sockaddr) {
+ isc_netaddr_t netaddr;
+
+ if (sockaddr->type.sa.sa_family == AF_INET6) {
+ isc_netaddr_fromsockaddr(&netaddr, sockaddr);
+ return (isc_netaddr_islinklocal(&netaddr));
+ }
+ return (ISC_FALSE);
+}
diff --git a/contrib/ntp/libntp/Makefile.am b/contrib/ntp/libntp/Makefile.am
index 75b5505..932f87b 100644
--- a/contrib/ntp/libntp/Makefile.am
+++ b/contrib/ntp/libntp/Makefile.am
@@ -3,15 +3,15 @@ AUTOMAKE_OPTIONS = ../util/ansi2knr
noinst_LIBRARIES = libntp.a @MAKE_LIBNTPSIM@
EXTRA_LIBRARIES = libntpsim.a
libntp_a_SRCS = a_md5encrypt.c adjtime.c atoint.c atolfp.c atouint.c \
- audio.c authkeys.c authreadkeys.c authusekey.c binio.c buftvtots.c \
- caljulian.c calleapwhen.c caltontp.c calyearstart.c clocktime.c \
+ audio.c authkeys.c authreadkeys.c authusekey.c buftvtots.c \
+ caljulian.c caltontp.c calyearstart.c clocktime.c \
clocktypes.c decodenetnum.c dofptoa.c dolfptoa.c emalloc.c \
- findconfig.c fptoa.c fptoms.c getopt.c gpstolfp.c hextoint.c \
- hextolfp.c humandate.c icom.c ieee754io.c inttoa.c iosignal.c \
- lib_strbuf.c machines.c md5c.c memmove.c mfp_mul.c mfptoa.c \
+ findconfig.c fptoa.c fptoms.c getopt.c hextoint.c \
+ hextolfp.c humandate.c icom.c inttoa.c iosignal.c \
+ lib_strbuf.c machines.c md5c.c memmove.c mfptoa.c \
mfptoms.c mktime.c modetoa.c mstolfp.c msutotsf.c msyslog.c netof.c \
ntp_rfc2553.c numtoa.c numtohost.c octtoint.c prettydate.c \
- ranny.c recvbuff.c refnumtoa.c snprintf.c socktoa.c socktohost.c \
+ ntp_random.c recvbuff.c refnumtoa.c snprintf.c socktoa.c socktohost.c \
statestr.c strdup.c strerror.c strstr.c \
syssignal.c tsftomsu.c tstotv.c tvtoa.c tvtots.c \
uglydate.c uinttoa.c utvtoa.c ymd2yd.c \
@@ -19,14 +19,17 @@ libntp_a_SRCS = a_md5encrypt.c adjtime.c atoint.c atolfp.c atouint.c \
$(srcdir)/../libisc/interfaceiter.c $(srcdir)/../libisc/lib.c \
$(srcdir)/../libisc/mem.c $(srcdir)/../libisc/msgcat.c \
$(srcdir)/../libisc/net.c $(srcdir)/../libisc/isc_strerror.c \
- $(srcdir)/../libisc/inet_ntop.c
+ $(srcdir)/../libisc/inet_ntop.c \
+ $(srcdir)/../libisc/inet_pton.c \
+ $(srcdir)/../libisc/netaddr.c $(srcdir)/../libisc/sockaddr.c \
+ $(srcdir)/../libisc/netscope.c
libntp_a_SOURCES = systime.c $(libntp_a_SRCS)
libntpsim_a_SOURCES = systime_s.c $(libntp_a_SRCS)
-EXTRA_libntp_a_SOURCES = adjtimex.c log.c random.c
+EXTRA_libntp_a_SOURCES = adjtimex.c
INCLUDES = -I$(top_srcdir)/include -I../include
ETAGS_ARGS = Makefile.am
-noinst_HEADERS = lib_strbuf.h log.h
+noinst_HEADERS = lib_strbuf.h
../include/des.h:
touch ../include/des.h
diff --git a/contrib/ntp/libntp/Makefile.in b/contrib/ntp/libntp/Makefile.in
index 1565b0b..802ba71 100644
--- a/contrib/ntp/libntp/Makefile.in
+++ b/contrib/ntp/libntp/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -14,6 +14,7 @@
@SET_MAKE@
+
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -21,7 +22,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +37,92 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+ANSI2KNR = ../util/ansi2knr
+subdir = libntp
+DIST_COMMON = README $(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/hs_ulong_const.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 =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+libntp_a_AR = $(AR) $(ARFLAGS)
+libntp_a_LIBADD =
+am__objects_1 = a_md5encrypt$U.$(OBJEXT) adjtime$U.$(OBJEXT) \
+ atoint$U.$(OBJEXT) atolfp$U.$(OBJEXT) atouint$U.$(OBJEXT) \
+ audio$U.$(OBJEXT) authkeys$U.$(OBJEXT) \
+ authreadkeys$U.$(OBJEXT) authusekey$U.$(OBJEXT) \
+ buftvtots$U.$(OBJEXT) caljulian$U.$(OBJEXT) \
+ caltontp$U.$(OBJEXT) calyearstart$U.$(OBJEXT) \
+ clocktime$U.$(OBJEXT) clocktypes$U.$(OBJEXT) \
+ decodenetnum$U.$(OBJEXT) dofptoa$U.$(OBJEXT) \
+ dolfptoa$U.$(OBJEXT) emalloc$U.$(OBJEXT) \
+ findconfig$U.$(OBJEXT) fptoa$U.$(OBJEXT) fptoms$U.$(OBJEXT) \
+ getopt$U.$(OBJEXT) hextoint$U.$(OBJEXT) hextolfp$U.$(OBJEXT) \
+ humandate$U.$(OBJEXT) icom$U.$(OBJEXT) inttoa$U.$(OBJEXT) \
+ iosignal$U.$(OBJEXT) lib_strbuf$U.$(OBJEXT) \
+ machines$U.$(OBJEXT) md5c$U.$(OBJEXT) memmove$U.$(OBJEXT) \
+ mfptoa$U.$(OBJEXT) mfptoms$U.$(OBJEXT) mktime$U.$(OBJEXT) \
+ modetoa$U.$(OBJEXT) mstolfp$U.$(OBJEXT) msutotsf$U.$(OBJEXT) \
+ msyslog$U.$(OBJEXT) netof$U.$(OBJEXT) ntp_rfc2553$U.$(OBJEXT) \
+ numtoa$U.$(OBJEXT) numtohost$U.$(OBJEXT) octtoint$U.$(OBJEXT) \
+ prettydate$U.$(OBJEXT) ntp_random$U.$(OBJEXT) \
+ recvbuff$U.$(OBJEXT) refnumtoa$U.$(OBJEXT) \
+ snprintf$U.$(OBJEXT) socktoa$U.$(OBJEXT) \
+ socktohost$U.$(OBJEXT) statestr$U.$(OBJEXT) strdup$U.$(OBJEXT) \
+ strerror$U.$(OBJEXT) strstr$U.$(OBJEXT) syssignal$U.$(OBJEXT) \
+ tsftomsu$U.$(OBJEXT) tstotv$U.$(OBJEXT) tvtoa$U.$(OBJEXT) \
+ tvtots$U.$(OBJEXT) uglydate$U.$(OBJEXT) uinttoa$U.$(OBJEXT) \
+ utvtoa$U.$(OBJEXT) ymd2yd$U.$(OBJEXT) assertions$U.$(OBJEXT) \
+ error$U.$(OBJEXT) interfaceiter$U.$(OBJEXT) lib$U.$(OBJEXT) \
+ mem$U.$(OBJEXT) msgcat$U.$(OBJEXT) net$U.$(OBJEXT) \
+ isc_strerror$U.$(OBJEXT) inet_ntop$U.$(OBJEXT) \
+ inet_pton$U.$(OBJEXT) netaddr$U.$(OBJEXT) sockaddr$U.$(OBJEXT) \
+ netscope$U.$(OBJEXT)
+am_libntp_a_OBJECTS = systime$U.$(OBJEXT) $(am__objects_1)
+libntp_a_OBJECTS = $(am_libntp_a_OBJECTS)
+libntpsim_a_AR = $(AR) $(ARFLAGS)
+libntpsim_a_LIBADD =
+am_libntpsim_a_OBJECTS = systime_s$U.$(OBJEXT) $(am__objects_1)
+libntpsim_a_OBJECTS = $(am_libntpsim_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libntp_a_SOURCES) $(EXTRA_libntp_a_SOURCES) \
+ $(libntpsim_a_SOURCES)
+DIST_SOURCES = $(libntp_a_SOURCES) $(EXTRA_libntp_a_SOURCES) \
+ $(libntpsim_a_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +130,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +146,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +201,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +236,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,26 +244,22 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
#AUTOMAKE_OPTIONS = ../ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
noinst_LIBRARIES = libntp.a @MAKE_LIBNTPSIM@
EXTRA_LIBRARIES = libntpsim.a
libntp_a_SRCS = a_md5encrypt.c adjtime.c atoint.c atolfp.c atouint.c \
- audio.c authkeys.c authreadkeys.c authusekey.c binio.c buftvtots.c \
- caljulian.c calleapwhen.c caltontp.c calyearstart.c clocktime.c \
+ audio.c authkeys.c authreadkeys.c authusekey.c buftvtots.c \
+ caljulian.c caltontp.c calyearstart.c clocktime.c \
clocktypes.c decodenetnum.c dofptoa.c dolfptoa.c emalloc.c \
- findconfig.c fptoa.c fptoms.c getopt.c gpstolfp.c hextoint.c \
- hextolfp.c humandate.c icom.c ieee754io.c inttoa.c iosignal.c \
- lib_strbuf.c machines.c md5c.c memmove.c mfp_mul.c mfptoa.c \
+ findconfig.c fptoa.c fptoms.c getopt.c hextoint.c \
+ hextolfp.c humandate.c icom.c inttoa.c iosignal.c \
+ lib_strbuf.c machines.c md5c.c memmove.c mfptoa.c \
mfptoms.c mktime.c modetoa.c mstolfp.c msutotsf.c msyslog.c netof.c \
ntp_rfc2553.c numtoa.c numtohost.c octtoint.c prettydate.c \
- ranny.c recvbuff.c refnumtoa.c snprintf.c socktoa.c socktohost.c \
+ ntp_random.c recvbuff.c refnumtoa.c snprintf.c socktoa.c socktohost.c \
statestr.c strdup.c strerror.c strstr.c \
syssignal.c tsftomsu.c tstotv.c tvtoa.c tvtots.c \
uglydate.c uinttoa.c utvtoa.c ymd2yd.c \
@@ -173,139 +267,51 @@ libntp_a_SRCS = a_md5encrypt.c adjtime.c atoint.c atolfp.c atouint.c \
$(srcdir)/../libisc/interfaceiter.c $(srcdir)/../libisc/lib.c \
$(srcdir)/../libisc/mem.c $(srcdir)/../libisc/msgcat.c \
$(srcdir)/../libisc/net.c $(srcdir)/../libisc/isc_strerror.c \
- $(srcdir)/../libisc/inet_ntop.c
+ $(srcdir)/../libisc/inet_ntop.c \
+ $(srcdir)/../libisc/inet_pton.c \
+ $(srcdir)/../libisc/netaddr.c $(srcdir)/../libisc/sockaddr.c \
+ $(srcdir)/../libisc/netscope.c
libntp_a_SOURCES = systime.c $(libntp_a_SRCS)
libntpsim_a_SOURCES = systime_s.c $(libntp_a_SRCS)
-EXTRA_libntp_a_SOURCES = adjtimex.c log.c random.c
+EXTRA_libntp_a_SOURCES = adjtimex.c
INCLUDES = -I$(top_srcdir)/include -I../include
ETAGS_ARGS = Makefile.am
-
-noinst_HEADERS = lib_strbuf.h log.h
-
+noinst_HEADERS = lib_strbuf.h
EXTRA_DIST = README
-subdir = libntp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
-
-libntp_a_AR = $(AR) cru
-libntp_a_LIBADD =
-am__objects_1 = a_md5encrypt$U.$(OBJEXT) adjtime$U.$(OBJEXT) \
- atoint$U.$(OBJEXT) atolfp$U.$(OBJEXT) atouint$U.$(OBJEXT) \
- audio$U.$(OBJEXT) authkeys$U.$(OBJEXT) authreadkeys$U.$(OBJEXT) \
- authusekey$U.$(OBJEXT) binio$U.$(OBJEXT) buftvtots$U.$(OBJEXT) \
- caljulian$U.$(OBJEXT) calleapwhen$U.$(OBJEXT) \
- caltontp$U.$(OBJEXT) calyearstart$U.$(OBJEXT) \
- clocktime$U.$(OBJEXT) clocktypes$U.$(OBJEXT) \
- decodenetnum$U.$(OBJEXT) dofptoa$U.$(OBJEXT) \
- dolfptoa$U.$(OBJEXT) emalloc$U.$(OBJEXT) findconfig$U.$(OBJEXT) \
- fptoa$U.$(OBJEXT) fptoms$U.$(OBJEXT) getopt$U.$(OBJEXT) \
- gpstolfp$U.$(OBJEXT) hextoint$U.$(OBJEXT) hextolfp$U.$(OBJEXT) \
- humandate$U.$(OBJEXT) icom$U.$(OBJEXT) ieee754io$U.$(OBJEXT) \
- inttoa$U.$(OBJEXT) iosignal$U.$(OBJEXT) lib_strbuf$U.$(OBJEXT) \
- machines$U.$(OBJEXT) md5c$U.$(OBJEXT) memmove$U.$(OBJEXT) \
- mfp_mul$U.$(OBJEXT) mfptoa$U.$(OBJEXT) mfptoms$U.$(OBJEXT) \
- mktime$U.$(OBJEXT) modetoa$U.$(OBJEXT) mstolfp$U.$(OBJEXT) \
- msutotsf$U.$(OBJEXT) msyslog$U.$(OBJEXT) netof$U.$(OBJEXT) \
- ntp_rfc2553$U.$(OBJEXT) numtoa$U.$(OBJEXT) \
- numtohost$U.$(OBJEXT) octtoint$U.$(OBJEXT) \
- prettydate$U.$(OBJEXT) ranny$U.$(OBJEXT) recvbuff$U.$(OBJEXT) \
- refnumtoa$U.$(OBJEXT) snprintf$U.$(OBJEXT) socktoa$U.$(OBJEXT) \
- socktohost$U.$(OBJEXT) statestr$U.$(OBJEXT) strdup$U.$(OBJEXT) \
- strerror$U.$(OBJEXT) strstr$U.$(OBJEXT) syssignal$U.$(OBJEXT) \
- tsftomsu$U.$(OBJEXT) tstotv$U.$(OBJEXT) tvtoa$U.$(OBJEXT) \
- tvtots$U.$(OBJEXT) uglydate$U.$(OBJEXT) uinttoa$U.$(OBJEXT) \
- utvtoa$U.$(OBJEXT) ymd2yd$U.$(OBJEXT) assertions$U.$(OBJEXT) \
- error$U.$(OBJEXT) interfaceiter$U.$(OBJEXT) lib$U.$(OBJEXT) \
- mem$U.$(OBJEXT) msgcat$U.$(OBJEXT) net$U.$(OBJEXT) \
- isc_strerror$U.$(OBJEXT) inet_ntop$U.$(OBJEXT)
-am_libntp_a_OBJECTS = systime$U.$(OBJEXT) $(am__objects_1)
-libntp_a_OBJECTS = $(am_libntp_a_OBJECTS)
-libntpsim_a_AR = $(AR) cru
-libntpsim_a_LIBADD =
-am_libntpsim_a_OBJECTS = systime_s$U.$(OBJEXT) $(am__objects_1)
-libntpsim_a_OBJECTS = $(am_libntpsim_a_OBJECTS)
-
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/a_md5encrypt$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/adjtime$U.Po ./$(DEPDIR)/adjtimex$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/assertions$U.Po ./$(DEPDIR)/atoint$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/atolfp$U.Po ./$(DEPDIR)/atouint$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/audio$U.Po ./$(DEPDIR)/authkeys$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/authreadkeys$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/authusekey$U.Po ./$(DEPDIR)/binio$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/buftvtots$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/caljulian$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/calleapwhen$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/caltontp$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/calyearstart$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clocktime$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clocktypes$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/decodenetnum$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/dofptoa$U.Po ./$(DEPDIR)/dolfptoa$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/emalloc$U.Po ./$(DEPDIR)/error$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/findconfig$U.Po ./$(DEPDIR)/fptoa$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/fptoms$U.Po ./$(DEPDIR)/getopt$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/gpstolfp$U.Po ./$(DEPDIR)/hextoint$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/hextolfp$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/humandate$U.Po ./$(DEPDIR)/icom$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ieee754io$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/inet_ntop$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/interfaceiter$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/inttoa$U.Po ./$(DEPDIR)/iosignal$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/isc_strerror$U.Po ./$(DEPDIR)/lib$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/lib_strbuf$U.Po ./$(DEPDIR)/log$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/machines$U.Po ./$(DEPDIR)/md5c$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/mem$U.Po ./$(DEPDIR)/memmove$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/mfp_mul$U.Po ./$(DEPDIR)/mfptoa$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/mfptoms$U.Po ./$(DEPDIR)/mktime$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/modetoa$U.Po ./$(DEPDIR)/msgcat$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/mstolfp$U.Po ./$(DEPDIR)/msutotsf$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/msyslog$U.Po ./$(DEPDIR)/net$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/netof$U.Po ./$(DEPDIR)/ntp_rfc2553$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/numtoa$U.Po ./$(DEPDIR)/numtohost$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/octtoint$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/prettydate$U.Po ./$(DEPDIR)/random$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ranny$U.Po ./$(DEPDIR)/recvbuff$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refnumtoa$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/snprintf$U.Po ./$(DEPDIR)/socktoa$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/socktohost$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/statestr$U.Po ./$(DEPDIR)/strdup$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/strerror$U.Po ./$(DEPDIR)/strstr$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/syssignal$U.Po ./$(DEPDIR)/systime$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/systime_s$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/tsftomsu$U.Po ./$(DEPDIR)/tstotv$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/tvtoa$U.Po ./$(DEPDIR)/tvtots$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/uglydate$U.Po ./$(DEPDIR)/uinttoa$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/utvtoa$U.Po ./$(DEPDIR)/ymd2yd$U.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = $(libntp_a_SOURCES) $(EXTRA_libntp_a_SOURCES) \
- $(libntpsim_a_SOURCES)
-HEADERS = $(noinst_HEADERS)
-
-DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.in \
- Makefile.am
-SOURCES = $(libntp_a_SOURCES) $(EXTRA_libntp_a_SOURCES) $(libntpsim_a_SOURCES)
-
all: all-am
.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+.SUFFIXES: .c .lo .o .obj
+$(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 libntp/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu libntp/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-AR = ar
+ $(AUTOMAKE) --foreign libntp/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
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
@@ -319,12 +325,10 @@ libntpsim.a: $(libntpsim_a_OBJECTS) $(libntpsim_a_DEPENDENCIES)
$(RANLIB) libntpsim.a
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-
-ANSI2KNR = ../util/ansi2knr
../util/ansi2knr:
cd ../util && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
@@ -342,10 +346,8 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authkeys$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authreadkeys$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/authusekey$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binio$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buftvtots$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caljulian$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calleapwhen$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caltontp$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calyearstart$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clocktime$U.Po@am__quote@
@@ -359,25 +361,22 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fptoa$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fptoms$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpstolfp$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hextoint$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hextolfp$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/humandate$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/icom$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ieee754io$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inet_ntop$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inet_pton$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interfaceiter$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inttoa$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iosignal$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isc_strerror$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_strbuf$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/machines$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5c$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memmove$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfp_mul$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfptoa$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfptoms$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mktime$U.Po@am__quote@
@@ -387,17 +386,19 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msutotsf$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msyslog$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/net$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netaddr$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netof$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netscope$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_random$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_rfc2553$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/numtoa$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/numtohost$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/octtoint$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prettydate$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/random$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ranny$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recvbuff$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refnumtoa$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/snprintf$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockaddr$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socktoa$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socktohost$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statestr$U.Po@am__quote@
@@ -417,422 +418,389 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ymd2yd$U.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
assertions_.o: assertions_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT assertions_.o -MD -MP -MF "$(DEPDIR)/assertions_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o assertions_.o `test -f 'assertions_.c' || echo '$(srcdir)/'`assertions_.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/assertions_.Tpo" "$(DEPDIR)/assertions_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/assertions_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT assertions_.o -MD -MP -MF "$(DEPDIR)/assertions_.Tpo" -c -o assertions_.o `test -f 'assertions_.c' || echo '$(srcdir)/'`assertions_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/assertions_.Tpo" "$(DEPDIR)/assertions_.Po"; else rm -f "$(DEPDIR)/assertions_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='assertions_.c' object='assertions_.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/assertions_.Po' tmpdepfile='$(DEPDIR)/assertions_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o assertions_.o `test -f 'assertions_.c' || echo '$(srcdir)/'`assertions_.c
assertions_.obj: assertions_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT assertions_.obj -MD -MP -MF "$(DEPDIR)/assertions_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o assertions_.obj `if test -f 'assertions_.c'; then $(CYGPATH_W) 'assertions_.c'; else $(CYGPATH_W) '$(srcdir)/assertions_.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/assertions_.Tpo" "$(DEPDIR)/assertions_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/assertions_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT assertions_.obj -MD -MP -MF "$(DEPDIR)/assertions_.Tpo" -c -o assertions_.obj `if test -f 'assertions_.c'; then $(CYGPATH_W) 'assertions_.c'; else $(CYGPATH_W) '$(srcdir)/assertions_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/assertions_.Tpo" "$(DEPDIR)/assertions_.Po"; else rm -f "$(DEPDIR)/assertions_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='assertions_.c' object='assertions_.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/assertions_.Po' tmpdepfile='$(DEPDIR)/assertions_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o assertions_.obj `if test -f 'assertions_.c'; then $(CYGPATH_W) 'assertions_.c'; else $(CYGPATH_W) '$(srcdir)/assertions_.c'; fi`
assertions.o: $(srcdir)/../libisc/assertions.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT assertions.o -MD -MP -MF "$(DEPDIR)/assertions.Tpo" \
-@am__fastdepCC_TRUE@ -c -o assertions.o `test -f '$(srcdir)/../libisc/assertions.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/assertions.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/assertions.Tpo" "$(DEPDIR)/assertions.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/assertions.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT assertions.o -MD -MP -MF "$(DEPDIR)/assertions.Tpo" -c -o assertions.o `test -f '$(srcdir)/../libisc/assertions.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/assertions.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/assertions.Tpo" "$(DEPDIR)/assertions.Po"; else rm -f "$(DEPDIR)/assertions.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/assertions.c' object='assertions.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/assertions.Po' tmpdepfile='$(DEPDIR)/assertions.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o assertions.o `test -f '$(srcdir)/../libisc/assertions.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/assertions.c
assertions.obj: $(srcdir)/../libisc/assertions.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT assertions.obj -MD -MP -MF "$(DEPDIR)/assertions.Tpo" \
-@am__fastdepCC_TRUE@ -c -o assertions.obj `if test -f '$(srcdir)/../libisc/assertions.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/assertions.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/assertions.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/assertions.Tpo" "$(DEPDIR)/assertions.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/assertions.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT assertions.obj -MD -MP -MF "$(DEPDIR)/assertions.Tpo" -c -o assertions.obj `if test -f '$(srcdir)/../libisc/assertions.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/assertions.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/assertions.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/assertions.Tpo" "$(DEPDIR)/assertions.Po"; else rm -f "$(DEPDIR)/assertions.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/assertions.c' object='assertions.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/assertions.Po' tmpdepfile='$(DEPDIR)/assertions.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o assertions.obj `if test -f '$(srcdir)/../libisc/assertions.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/assertions.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/assertions.c'; fi`
error_.o: error_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT error_.o -MD -MP -MF "$(DEPDIR)/error_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o error_.o `test -f 'error_.c' || echo '$(srcdir)/'`error_.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/error_.Tpo" "$(DEPDIR)/error_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/error_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT error_.o -MD -MP -MF "$(DEPDIR)/error_.Tpo" -c -o error_.o `test -f 'error_.c' || echo '$(srcdir)/'`error_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/error_.Tpo" "$(DEPDIR)/error_.Po"; else rm -f "$(DEPDIR)/error_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='error_.c' object='error_.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/error_.Po' tmpdepfile='$(DEPDIR)/error_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o error_.o `test -f 'error_.c' || echo '$(srcdir)/'`error_.c
error_.obj: error_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT error_.obj -MD -MP -MF "$(DEPDIR)/error_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o error_.obj `if test -f 'error_.c'; then $(CYGPATH_W) 'error_.c'; else $(CYGPATH_W) '$(srcdir)/error_.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/error_.Tpo" "$(DEPDIR)/error_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/error_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT error_.obj -MD -MP -MF "$(DEPDIR)/error_.Tpo" -c -o error_.obj `if test -f 'error_.c'; then $(CYGPATH_W) 'error_.c'; else $(CYGPATH_W) '$(srcdir)/error_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/error_.Tpo" "$(DEPDIR)/error_.Po"; else rm -f "$(DEPDIR)/error_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='error_.c' object='error_.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/error_.Po' tmpdepfile='$(DEPDIR)/error_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o error_.obj `if test -f 'error_.c'; then $(CYGPATH_W) 'error_.c'; else $(CYGPATH_W) '$(srcdir)/error_.c'; fi`
error.o: $(srcdir)/../libisc/error.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT error.o -MD -MP -MF "$(DEPDIR)/error.Tpo" \
-@am__fastdepCC_TRUE@ -c -o error.o `test -f '$(srcdir)/../libisc/error.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/error.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/error.Tpo" "$(DEPDIR)/error.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/error.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT error.o -MD -MP -MF "$(DEPDIR)/error.Tpo" -c -o error.o `test -f '$(srcdir)/../libisc/error.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/error.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/error.Tpo" "$(DEPDIR)/error.Po"; else rm -f "$(DEPDIR)/error.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/error.c' object='error.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/error.Po' tmpdepfile='$(DEPDIR)/error.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o error.o `test -f '$(srcdir)/../libisc/error.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/error.c
error.obj: $(srcdir)/../libisc/error.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT error.obj -MD -MP -MF "$(DEPDIR)/error.Tpo" \
-@am__fastdepCC_TRUE@ -c -o error.obj `if test -f '$(srcdir)/../libisc/error.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/error.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/error.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/error.Tpo" "$(DEPDIR)/error.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/error.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT error.obj -MD -MP -MF "$(DEPDIR)/error.Tpo" -c -o error.obj `if test -f '$(srcdir)/../libisc/error.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/error.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/error.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/error.Tpo" "$(DEPDIR)/error.Po"; else rm -f "$(DEPDIR)/error.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/error.c' object='error.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/error.Po' tmpdepfile='$(DEPDIR)/error.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o error.obj `if test -f '$(srcdir)/../libisc/error.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/error.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/error.c'; fi`
interfaceiter_.o: interfaceiter_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT interfaceiter_.o -MD -MP -MF "$(DEPDIR)/interfaceiter_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o interfaceiter_.o `test -f 'interfaceiter_.c' || echo '$(srcdir)/'`interfaceiter_.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/interfaceiter_.Tpo" "$(DEPDIR)/interfaceiter_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/interfaceiter_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT interfaceiter_.o -MD -MP -MF "$(DEPDIR)/interfaceiter_.Tpo" -c -o interfaceiter_.o `test -f 'interfaceiter_.c' || echo '$(srcdir)/'`interfaceiter_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/interfaceiter_.Tpo" "$(DEPDIR)/interfaceiter_.Po"; else rm -f "$(DEPDIR)/interfaceiter_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='interfaceiter_.c' object='interfaceiter_.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/interfaceiter_.Po' tmpdepfile='$(DEPDIR)/interfaceiter_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o interfaceiter_.o `test -f 'interfaceiter_.c' || echo '$(srcdir)/'`interfaceiter_.c
interfaceiter_.obj: interfaceiter_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT interfaceiter_.obj -MD -MP -MF "$(DEPDIR)/interfaceiter_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o interfaceiter_.obj `if test -f 'interfaceiter_.c'; then $(CYGPATH_W) 'interfaceiter_.c'; else $(CYGPATH_W) '$(srcdir)/interfaceiter_.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/interfaceiter_.Tpo" "$(DEPDIR)/interfaceiter_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/interfaceiter_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT interfaceiter_.obj -MD -MP -MF "$(DEPDIR)/interfaceiter_.Tpo" -c -o interfaceiter_.obj `if test -f 'interfaceiter_.c'; then $(CYGPATH_W) 'interfaceiter_.c'; else $(CYGPATH_W) '$(srcdir)/interfaceiter_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/interfaceiter_.Tpo" "$(DEPDIR)/interfaceiter_.Po"; else rm -f "$(DEPDIR)/interfaceiter_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='interfaceiter_.c' object='interfaceiter_.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/interfaceiter_.Po' tmpdepfile='$(DEPDIR)/interfaceiter_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o interfaceiter_.obj `if test -f 'interfaceiter_.c'; then $(CYGPATH_W) 'interfaceiter_.c'; else $(CYGPATH_W) '$(srcdir)/interfaceiter_.c'; fi`
interfaceiter.o: $(srcdir)/../libisc/interfaceiter.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT interfaceiter.o -MD -MP -MF "$(DEPDIR)/interfaceiter.Tpo" \
-@am__fastdepCC_TRUE@ -c -o interfaceiter.o `test -f '$(srcdir)/../libisc/interfaceiter.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/interfaceiter.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/interfaceiter.Tpo" "$(DEPDIR)/interfaceiter.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/interfaceiter.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT interfaceiter.o -MD -MP -MF "$(DEPDIR)/interfaceiter.Tpo" -c -o interfaceiter.o `test -f '$(srcdir)/../libisc/interfaceiter.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/interfaceiter.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/interfaceiter.Tpo" "$(DEPDIR)/interfaceiter.Po"; else rm -f "$(DEPDIR)/interfaceiter.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/interfaceiter.c' object='interfaceiter.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/interfaceiter.Po' tmpdepfile='$(DEPDIR)/interfaceiter.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o interfaceiter.o `test -f '$(srcdir)/../libisc/interfaceiter.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/interfaceiter.c
interfaceiter.obj: $(srcdir)/../libisc/interfaceiter.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT interfaceiter.obj -MD -MP -MF "$(DEPDIR)/interfaceiter.Tpo" \
-@am__fastdepCC_TRUE@ -c -o interfaceiter.obj `if test -f '$(srcdir)/../libisc/interfaceiter.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/interfaceiter.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/interfaceiter.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/interfaceiter.Tpo" "$(DEPDIR)/interfaceiter.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/interfaceiter.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT interfaceiter.obj -MD -MP -MF "$(DEPDIR)/interfaceiter.Tpo" -c -o interfaceiter.obj `if test -f '$(srcdir)/../libisc/interfaceiter.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/interfaceiter.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/interfaceiter.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/interfaceiter.Tpo" "$(DEPDIR)/interfaceiter.Po"; else rm -f "$(DEPDIR)/interfaceiter.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/interfaceiter.c' object='interfaceiter.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/interfaceiter.Po' tmpdepfile='$(DEPDIR)/interfaceiter.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o interfaceiter.obj `if test -f '$(srcdir)/../libisc/interfaceiter.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/interfaceiter.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/interfaceiter.c'; fi`
lib_.o: lib_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_.o -MD -MP -MF "$(DEPDIR)/lib_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o lib_.o `test -f 'lib_.c' || echo '$(srcdir)/'`lib_.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_.Tpo" "$(DEPDIR)/lib_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/lib_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_.o -MD -MP -MF "$(DEPDIR)/lib_.Tpo" -c -o lib_.o `test -f 'lib_.c' || echo '$(srcdir)/'`lib_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_.Tpo" "$(DEPDIR)/lib_.Po"; else rm -f "$(DEPDIR)/lib_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib_.c' object='lib_.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/lib_.Po' tmpdepfile='$(DEPDIR)/lib_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_.o `test -f 'lib_.c' || echo '$(srcdir)/'`lib_.c
lib_.obj: lib_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_.obj -MD -MP -MF "$(DEPDIR)/lib_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o lib_.obj `if test -f 'lib_.c'; then $(CYGPATH_W) 'lib_.c'; else $(CYGPATH_W) '$(srcdir)/lib_.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_.Tpo" "$(DEPDIR)/lib_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/lib_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib_.obj -MD -MP -MF "$(DEPDIR)/lib_.Tpo" -c -o lib_.obj `if test -f 'lib_.c'; then $(CYGPATH_W) 'lib_.c'; else $(CYGPATH_W) '$(srcdir)/lib_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_.Tpo" "$(DEPDIR)/lib_.Po"; else rm -f "$(DEPDIR)/lib_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='lib_.c' object='lib_.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/lib_.Po' tmpdepfile='$(DEPDIR)/lib_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib_.obj `if test -f 'lib_.c'; then $(CYGPATH_W) 'lib_.c'; else $(CYGPATH_W) '$(srcdir)/lib_.c'; fi`
lib.o: $(srcdir)/../libisc/lib.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib.o -MD -MP -MF "$(DEPDIR)/lib.Tpo" \
-@am__fastdepCC_TRUE@ -c -o lib.o `test -f '$(srcdir)/../libisc/lib.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/lib.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib.Tpo" "$(DEPDIR)/lib.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/lib.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib.o -MD -MP -MF "$(DEPDIR)/lib.Tpo" -c -o lib.o `test -f '$(srcdir)/../libisc/lib.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/lib.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib.Tpo" "$(DEPDIR)/lib.Po"; else rm -f "$(DEPDIR)/lib.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/lib.c' object='lib.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/lib.Po' tmpdepfile='$(DEPDIR)/lib.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib.o `test -f '$(srcdir)/../libisc/lib.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/lib.c
lib.obj: $(srcdir)/../libisc/lib.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib.obj -MD -MP -MF "$(DEPDIR)/lib.Tpo" \
-@am__fastdepCC_TRUE@ -c -o lib.obj `if test -f '$(srcdir)/../libisc/lib.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/lib.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/lib.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib.Tpo" "$(DEPDIR)/lib.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/lib.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lib.obj -MD -MP -MF "$(DEPDIR)/lib.Tpo" -c -o lib.obj `if test -f '$(srcdir)/../libisc/lib.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/lib.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/lib.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib.Tpo" "$(DEPDIR)/lib.Po"; else rm -f "$(DEPDIR)/lib.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/lib.c' object='lib.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/lib.Po' tmpdepfile='$(DEPDIR)/lib.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lib.obj `if test -f '$(srcdir)/../libisc/lib.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/lib.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/lib.c'; fi`
mem_.o: mem_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mem_.o -MD -MP -MF "$(DEPDIR)/mem_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o mem_.o `test -f 'mem_.c' || echo '$(srcdir)/'`mem_.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mem_.Tpo" "$(DEPDIR)/mem_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/mem_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mem_.o -MD -MP -MF "$(DEPDIR)/mem_.Tpo" -c -o mem_.o `test -f 'mem_.c' || echo '$(srcdir)/'`mem_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mem_.Tpo" "$(DEPDIR)/mem_.Po"; else rm -f "$(DEPDIR)/mem_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mem_.c' object='mem_.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/mem_.Po' tmpdepfile='$(DEPDIR)/mem_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mem_.o `test -f 'mem_.c' || echo '$(srcdir)/'`mem_.c
mem_.obj: mem_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mem_.obj -MD -MP -MF "$(DEPDIR)/mem_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o mem_.obj `if test -f 'mem_.c'; then $(CYGPATH_W) 'mem_.c'; else $(CYGPATH_W) '$(srcdir)/mem_.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mem_.Tpo" "$(DEPDIR)/mem_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/mem_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mem_.obj -MD -MP -MF "$(DEPDIR)/mem_.Tpo" -c -o mem_.obj `if test -f 'mem_.c'; then $(CYGPATH_W) 'mem_.c'; else $(CYGPATH_W) '$(srcdir)/mem_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mem_.Tpo" "$(DEPDIR)/mem_.Po"; else rm -f "$(DEPDIR)/mem_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mem_.c' object='mem_.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/mem_.Po' tmpdepfile='$(DEPDIR)/mem_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mem_.obj `if test -f 'mem_.c'; then $(CYGPATH_W) 'mem_.c'; else $(CYGPATH_W) '$(srcdir)/mem_.c'; fi`
mem.o: $(srcdir)/../libisc/mem.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mem.o -MD -MP -MF "$(DEPDIR)/mem.Tpo" \
-@am__fastdepCC_TRUE@ -c -o mem.o `test -f '$(srcdir)/../libisc/mem.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/mem.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mem.Tpo" "$(DEPDIR)/mem.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/mem.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mem.o -MD -MP -MF "$(DEPDIR)/mem.Tpo" -c -o mem.o `test -f '$(srcdir)/../libisc/mem.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/mem.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mem.Tpo" "$(DEPDIR)/mem.Po"; else rm -f "$(DEPDIR)/mem.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/mem.c' object='mem.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/mem.Po' tmpdepfile='$(DEPDIR)/mem.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mem.o `test -f '$(srcdir)/../libisc/mem.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/mem.c
mem.obj: $(srcdir)/../libisc/mem.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mem.obj -MD -MP -MF "$(DEPDIR)/mem.Tpo" \
-@am__fastdepCC_TRUE@ -c -o mem.obj `if test -f '$(srcdir)/../libisc/mem.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/mem.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/mem.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mem.Tpo" "$(DEPDIR)/mem.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/mem.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mem.obj -MD -MP -MF "$(DEPDIR)/mem.Tpo" -c -o mem.obj `if test -f '$(srcdir)/../libisc/mem.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/mem.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/mem.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mem.Tpo" "$(DEPDIR)/mem.Po"; else rm -f "$(DEPDIR)/mem.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/mem.c' object='mem.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/mem.Po' tmpdepfile='$(DEPDIR)/mem.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mem.obj `if test -f '$(srcdir)/../libisc/mem.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/mem.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/mem.c'; fi`
msgcat_.o: msgcat_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT msgcat_.o -MD -MP -MF "$(DEPDIR)/msgcat_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o msgcat_.o `test -f 'msgcat_.c' || echo '$(srcdir)/'`msgcat_.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/msgcat_.Tpo" "$(DEPDIR)/msgcat_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/msgcat_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT msgcat_.o -MD -MP -MF "$(DEPDIR)/msgcat_.Tpo" -c -o msgcat_.o `test -f 'msgcat_.c' || echo '$(srcdir)/'`msgcat_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/msgcat_.Tpo" "$(DEPDIR)/msgcat_.Po"; else rm -f "$(DEPDIR)/msgcat_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='msgcat_.c' object='msgcat_.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/msgcat_.Po' tmpdepfile='$(DEPDIR)/msgcat_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o msgcat_.o `test -f 'msgcat_.c' || echo '$(srcdir)/'`msgcat_.c
msgcat_.obj: msgcat_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT msgcat_.obj -MD -MP -MF "$(DEPDIR)/msgcat_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o msgcat_.obj `if test -f 'msgcat_.c'; then $(CYGPATH_W) 'msgcat_.c'; else $(CYGPATH_W) '$(srcdir)/msgcat_.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/msgcat_.Tpo" "$(DEPDIR)/msgcat_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/msgcat_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT msgcat_.obj -MD -MP -MF "$(DEPDIR)/msgcat_.Tpo" -c -o msgcat_.obj `if test -f 'msgcat_.c'; then $(CYGPATH_W) 'msgcat_.c'; else $(CYGPATH_W) '$(srcdir)/msgcat_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/msgcat_.Tpo" "$(DEPDIR)/msgcat_.Po"; else rm -f "$(DEPDIR)/msgcat_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='msgcat_.c' object='msgcat_.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/msgcat_.Po' tmpdepfile='$(DEPDIR)/msgcat_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o msgcat_.obj `if test -f 'msgcat_.c'; then $(CYGPATH_W) 'msgcat_.c'; else $(CYGPATH_W) '$(srcdir)/msgcat_.c'; fi`
msgcat.o: $(srcdir)/../libisc/msgcat.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT msgcat.o -MD -MP -MF "$(DEPDIR)/msgcat.Tpo" \
-@am__fastdepCC_TRUE@ -c -o msgcat.o `test -f '$(srcdir)/../libisc/msgcat.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/msgcat.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/msgcat.Tpo" "$(DEPDIR)/msgcat.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/msgcat.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT msgcat.o -MD -MP -MF "$(DEPDIR)/msgcat.Tpo" -c -o msgcat.o `test -f '$(srcdir)/../libisc/msgcat.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/msgcat.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/msgcat.Tpo" "$(DEPDIR)/msgcat.Po"; else rm -f "$(DEPDIR)/msgcat.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/msgcat.c' object='msgcat.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/msgcat.Po' tmpdepfile='$(DEPDIR)/msgcat.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o msgcat.o `test -f '$(srcdir)/../libisc/msgcat.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/msgcat.c
msgcat.obj: $(srcdir)/../libisc/msgcat.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT msgcat.obj -MD -MP -MF "$(DEPDIR)/msgcat.Tpo" \
-@am__fastdepCC_TRUE@ -c -o msgcat.obj `if test -f '$(srcdir)/../libisc/msgcat.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/msgcat.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/msgcat.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/msgcat.Tpo" "$(DEPDIR)/msgcat.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/msgcat.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT msgcat.obj -MD -MP -MF "$(DEPDIR)/msgcat.Tpo" -c -o msgcat.obj `if test -f '$(srcdir)/../libisc/msgcat.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/msgcat.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/msgcat.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/msgcat.Tpo" "$(DEPDIR)/msgcat.Po"; else rm -f "$(DEPDIR)/msgcat.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/msgcat.c' object='msgcat.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/msgcat.Po' tmpdepfile='$(DEPDIR)/msgcat.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o msgcat.obj `if test -f '$(srcdir)/../libisc/msgcat.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/msgcat.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/msgcat.c'; fi`
net_.o: net_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT net_.o -MD -MP -MF "$(DEPDIR)/net_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o net_.o `test -f 'net_.c' || echo '$(srcdir)/'`net_.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/net_.Tpo" "$(DEPDIR)/net_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/net_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT net_.o -MD -MP -MF "$(DEPDIR)/net_.Tpo" -c -o net_.o `test -f 'net_.c' || echo '$(srcdir)/'`net_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/net_.Tpo" "$(DEPDIR)/net_.Po"; else rm -f "$(DEPDIR)/net_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='net_.c' object='net_.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/net_.Po' tmpdepfile='$(DEPDIR)/net_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o net_.o `test -f 'net_.c' || echo '$(srcdir)/'`net_.c
net_.obj: net_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT net_.obj -MD -MP -MF "$(DEPDIR)/net_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o net_.obj `if test -f 'net_.c'; then $(CYGPATH_W) 'net_.c'; else $(CYGPATH_W) '$(srcdir)/net_.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/net_.Tpo" "$(DEPDIR)/net_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/net_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT net_.obj -MD -MP -MF "$(DEPDIR)/net_.Tpo" -c -o net_.obj `if test -f 'net_.c'; then $(CYGPATH_W) 'net_.c'; else $(CYGPATH_W) '$(srcdir)/net_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/net_.Tpo" "$(DEPDIR)/net_.Po"; else rm -f "$(DEPDIR)/net_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='net_.c' object='net_.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/net_.Po' tmpdepfile='$(DEPDIR)/net_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o net_.obj `if test -f 'net_.c'; then $(CYGPATH_W) 'net_.c'; else $(CYGPATH_W) '$(srcdir)/net_.c'; fi`
net.o: $(srcdir)/../libisc/net.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT net.o -MD -MP -MF "$(DEPDIR)/net.Tpo" \
-@am__fastdepCC_TRUE@ -c -o net.o `test -f '$(srcdir)/../libisc/net.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/net.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/net.Tpo" "$(DEPDIR)/net.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/net.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT net.o -MD -MP -MF "$(DEPDIR)/net.Tpo" -c -o net.o `test -f '$(srcdir)/../libisc/net.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/net.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/net.Tpo" "$(DEPDIR)/net.Po"; else rm -f "$(DEPDIR)/net.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/net.c' object='net.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/net.Po' tmpdepfile='$(DEPDIR)/net.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o net.o `test -f '$(srcdir)/../libisc/net.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/net.c
net.obj: $(srcdir)/../libisc/net.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT net.obj -MD -MP -MF "$(DEPDIR)/net.Tpo" \
-@am__fastdepCC_TRUE@ -c -o net.obj `if test -f '$(srcdir)/../libisc/net.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/net.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/net.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/net.Tpo" "$(DEPDIR)/net.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/net.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT net.obj -MD -MP -MF "$(DEPDIR)/net.Tpo" -c -o net.obj `if test -f '$(srcdir)/../libisc/net.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/net.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/net.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/net.Tpo" "$(DEPDIR)/net.Po"; else rm -f "$(DEPDIR)/net.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/net.c' object='net.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/net.Po' tmpdepfile='$(DEPDIR)/net.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o net.obj `if test -f '$(srcdir)/../libisc/net.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/net.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/net.c'; fi`
isc_strerror_.o: isc_strerror_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT isc_strerror_.o -MD -MP -MF "$(DEPDIR)/isc_strerror_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o isc_strerror_.o `test -f 'isc_strerror_.c' || echo '$(srcdir)/'`isc_strerror_.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/isc_strerror_.Tpo" "$(DEPDIR)/isc_strerror_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/isc_strerror_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT isc_strerror_.o -MD -MP -MF "$(DEPDIR)/isc_strerror_.Tpo" -c -o isc_strerror_.o `test -f 'isc_strerror_.c' || echo '$(srcdir)/'`isc_strerror_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/isc_strerror_.Tpo" "$(DEPDIR)/isc_strerror_.Po"; else rm -f "$(DEPDIR)/isc_strerror_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='isc_strerror_.c' object='isc_strerror_.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/isc_strerror_.Po' tmpdepfile='$(DEPDIR)/isc_strerror_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o isc_strerror_.o `test -f 'isc_strerror_.c' || echo '$(srcdir)/'`isc_strerror_.c
isc_strerror_.obj: isc_strerror_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT isc_strerror_.obj -MD -MP -MF "$(DEPDIR)/isc_strerror_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o isc_strerror_.obj `if test -f 'isc_strerror_.c'; then $(CYGPATH_W) 'isc_strerror_.c'; else $(CYGPATH_W) '$(srcdir)/isc_strerror_.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/isc_strerror_.Tpo" "$(DEPDIR)/isc_strerror_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/isc_strerror_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT isc_strerror_.obj -MD -MP -MF "$(DEPDIR)/isc_strerror_.Tpo" -c -o isc_strerror_.obj `if test -f 'isc_strerror_.c'; then $(CYGPATH_W) 'isc_strerror_.c'; else $(CYGPATH_W) '$(srcdir)/isc_strerror_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/isc_strerror_.Tpo" "$(DEPDIR)/isc_strerror_.Po"; else rm -f "$(DEPDIR)/isc_strerror_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='isc_strerror_.c' object='isc_strerror_.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/isc_strerror_.Po' tmpdepfile='$(DEPDIR)/isc_strerror_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o isc_strerror_.obj `if test -f 'isc_strerror_.c'; then $(CYGPATH_W) 'isc_strerror_.c'; else $(CYGPATH_W) '$(srcdir)/isc_strerror_.c'; fi`
isc_strerror.o: $(srcdir)/../libisc/isc_strerror.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT isc_strerror.o -MD -MP -MF "$(DEPDIR)/isc_strerror.Tpo" \
-@am__fastdepCC_TRUE@ -c -o isc_strerror.o `test -f '$(srcdir)/../libisc/isc_strerror.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/isc_strerror.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/isc_strerror.Tpo" "$(DEPDIR)/isc_strerror.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/isc_strerror.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT isc_strerror.o -MD -MP -MF "$(DEPDIR)/isc_strerror.Tpo" -c -o isc_strerror.o `test -f '$(srcdir)/../libisc/isc_strerror.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/isc_strerror.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/isc_strerror.Tpo" "$(DEPDIR)/isc_strerror.Po"; else rm -f "$(DEPDIR)/isc_strerror.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/isc_strerror.c' object='isc_strerror.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/isc_strerror.Po' tmpdepfile='$(DEPDIR)/isc_strerror.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o isc_strerror.o `test -f '$(srcdir)/../libisc/isc_strerror.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/isc_strerror.c
isc_strerror.obj: $(srcdir)/../libisc/isc_strerror.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT isc_strerror.obj -MD -MP -MF "$(DEPDIR)/isc_strerror.Tpo" \
-@am__fastdepCC_TRUE@ -c -o isc_strerror.obj `if test -f '$(srcdir)/../libisc/isc_strerror.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/isc_strerror.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/isc_strerror.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/isc_strerror.Tpo" "$(DEPDIR)/isc_strerror.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/isc_strerror.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT isc_strerror.obj -MD -MP -MF "$(DEPDIR)/isc_strerror.Tpo" -c -o isc_strerror.obj `if test -f '$(srcdir)/../libisc/isc_strerror.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/isc_strerror.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/isc_strerror.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/isc_strerror.Tpo" "$(DEPDIR)/isc_strerror.Po"; else rm -f "$(DEPDIR)/isc_strerror.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/isc_strerror.c' object='isc_strerror.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/isc_strerror.Po' tmpdepfile='$(DEPDIR)/isc_strerror.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o isc_strerror.obj `if test -f '$(srcdir)/../libisc/isc_strerror.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/isc_strerror.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/isc_strerror.c'; fi`
inet_ntop_.o: inet_ntop_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_ntop_.o -MD -MP -MF "$(DEPDIR)/inet_ntop_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o inet_ntop_.o `test -f 'inet_ntop_.c' || echo '$(srcdir)/'`inet_ntop_.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_ntop_.Tpo" "$(DEPDIR)/inet_ntop_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/inet_ntop_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_ntop_.o -MD -MP -MF "$(DEPDIR)/inet_ntop_.Tpo" -c -o inet_ntop_.o `test -f 'inet_ntop_.c' || echo '$(srcdir)/'`inet_ntop_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_ntop_.Tpo" "$(DEPDIR)/inet_ntop_.Po"; else rm -f "$(DEPDIR)/inet_ntop_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='inet_ntop_.c' object='inet_ntop_.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/inet_ntop_.Po' tmpdepfile='$(DEPDIR)/inet_ntop_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o inet_ntop_.o `test -f 'inet_ntop_.c' || echo '$(srcdir)/'`inet_ntop_.c
inet_ntop_.obj: inet_ntop_.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_ntop_.obj -MD -MP -MF "$(DEPDIR)/inet_ntop_.Tpo" \
-@am__fastdepCC_TRUE@ -c -o inet_ntop_.obj `if test -f 'inet_ntop_.c'; then $(CYGPATH_W) 'inet_ntop_.c'; else $(CYGPATH_W) '$(srcdir)/inet_ntop_.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_ntop_.Tpo" "$(DEPDIR)/inet_ntop_.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/inet_ntop_.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_ntop_.obj -MD -MP -MF "$(DEPDIR)/inet_ntop_.Tpo" -c -o inet_ntop_.obj `if test -f 'inet_ntop_.c'; then $(CYGPATH_W) 'inet_ntop_.c'; else $(CYGPATH_W) '$(srcdir)/inet_ntop_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_ntop_.Tpo" "$(DEPDIR)/inet_ntop_.Po"; else rm -f "$(DEPDIR)/inet_ntop_.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='inet_ntop_.c' object='inet_ntop_.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/inet_ntop_.Po' tmpdepfile='$(DEPDIR)/inet_ntop_.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o inet_ntop_.obj `if test -f 'inet_ntop_.c'; then $(CYGPATH_W) 'inet_ntop_.c'; else $(CYGPATH_W) '$(srcdir)/inet_ntop_.c'; fi`
inet_ntop.o: $(srcdir)/../libisc/inet_ntop.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_ntop.o -MD -MP -MF "$(DEPDIR)/inet_ntop.Tpo" \
-@am__fastdepCC_TRUE@ -c -o inet_ntop.o `test -f '$(srcdir)/../libisc/inet_ntop.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/inet_ntop.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_ntop.Tpo" "$(DEPDIR)/inet_ntop.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/inet_ntop.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_ntop.o -MD -MP -MF "$(DEPDIR)/inet_ntop.Tpo" -c -o inet_ntop.o `test -f '$(srcdir)/../libisc/inet_ntop.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/inet_ntop.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_ntop.Tpo" "$(DEPDIR)/inet_ntop.Po"; else rm -f "$(DEPDIR)/inet_ntop.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/inet_ntop.c' object='inet_ntop.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/inet_ntop.Po' tmpdepfile='$(DEPDIR)/inet_ntop.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o inet_ntop.o `test -f '$(srcdir)/../libisc/inet_ntop.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/inet_ntop.c
inet_ntop.obj: $(srcdir)/../libisc/inet_ntop.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_ntop.obj -MD -MP -MF "$(DEPDIR)/inet_ntop.Tpo" \
-@am__fastdepCC_TRUE@ -c -o inet_ntop.obj `if test -f '$(srcdir)/../libisc/inet_ntop.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/inet_ntop.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/inet_ntop.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_ntop.Tpo" "$(DEPDIR)/inet_ntop.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/inet_ntop.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_ntop.obj -MD -MP -MF "$(DEPDIR)/inet_ntop.Tpo" -c -o inet_ntop.obj `if test -f '$(srcdir)/../libisc/inet_ntop.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/inet_ntop.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/inet_ntop.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_ntop.Tpo" "$(DEPDIR)/inet_ntop.Po"; else rm -f "$(DEPDIR)/inet_ntop.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/inet_ntop.c' object='inet_ntop.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/inet_ntop.Po' tmpdepfile='$(DEPDIR)/inet_ntop.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o inet_ntop.obj `if test -f '$(srcdir)/../libisc/inet_ntop.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/inet_ntop.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/inet_ntop.c'; fi`
+
+inet_pton_.o: inet_pton_.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_pton_.o -MD -MP -MF "$(DEPDIR)/inet_pton_.Tpo" -c -o inet_pton_.o `test -f 'inet_pton_.c' || echo '$(srcdir)/'`inet_pton_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_pton_.Tpo" "$(DEPDIR)/inet_pton_.Po"; else rm -f "$(DEPDIR)/inet_pton_.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='inet_pton_.c' object='inet_pton_.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o inet_pton_.o `test -f 'inet_pton_.c' || echo '$(srcdir)/'`inet_pton_.c
+
+inet_pton_.obj: inet_pton_.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_pton_.obj -MD -MP -MF "$(DEPDIR)/inet_pton_.Tpo" -c -o inet_pton_.obj `if test -f 'inet_pton_.c'; then $(CYGPATH_W) 'inet_pton_.c'; else $(CYGPATH_W) '$(srcdir)/inet_pton_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_pton_.Tpo" "$(DEPDIR)/inet_pton_.Po"; else rm -f "$(DEPDIR)/inet_pton_.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='inet_pton_.c' object='inet_pton_.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o inet_pton_.obj `if test -f 'inet_pton_.c'; then $(CYGPATH_W) 'inet_pton_.c'; else $(CYGPATH_W) '$(srcdir)/inet_pton_.c'; fi`
+
+inet_pton.o: $(srcdir)/../libisc/inet_pton.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_pton.o -MD -MP -MF "$(DEPDIR)/inet_pton.Tpo" -c -o inet_pton.o `test -f '$(srcdir)/../libisc/inet_pton.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/inet_pton.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_pton.Tpo" "$(DEPDIR)/inet_pton.Po"; else rm -f "$(DEPDIR)/inet_pton.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/inet_pton.c' object='inet_pton.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o inet_pton.o `test -f '$(srcdir)/../libisc/inet_pton.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/inet_pton.c
+
+inet_pton.obj: $(srcdir)/../libisc/inet_pton.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT inet_pton.obj -MD -MP -MF "$(DEPDIR)/inet_pton.Tpo" -c -o inet_pton.obj `if test -f '$(srcdir)/../libisc/inet_pton.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/inet_pton.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/inet_pton.Tpo" "$(DEPDIR)/inet_pton.Po"; else rm -f "$(DEPDIR)/inet_pton.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/inet_pton.c' object='inet_pton.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o inet_pton.obj `if test -f '$(srcdir)/../libisc/inet_pton.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/inet_pton.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/inet_pton.c'; fi`
+
+netaddr_.o: netaddr_.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT netaddr_.o -MD -MP -MF "$(DEPDIR)/netaddr_.Tpo" -c -o netaddr_.o `test -f 'netaddr_.c' || echo '$(srcdir)/'`netaddr_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/netaddr_.Tpo" "$(DEPDIR)/netaddr_.Po"; else rm -f "$(DEPDIR)/netaddr_.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='netaddr_.c' object='netaddr_.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o netaddr_.o `test -f 'netaddr_.c' || echo '$(srcdir)/'`netaddr_.c
+
+netaddr_.obj: netaddr_.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT netaddr_.obj -MD -MP -MF "$(DEPDIR)/netaddr_.Tpo" -c -o netaddr_.obj `if test -f 'netaddr_.c'; then $(CYGPATH_W) 'netaddr_.c'; else $(CYGPATH_W) '$(srcdir)/netaddr_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/netaddr_.Tpo" "$(DEPDIR)/netaddr_.Po"; else rm -f "$(DEPDIR)/netaddr_.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='netaddr_.c' object='netaddr_.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o netaddr_.obj `if test -f 'netaddr_.c'; then $(CYGPATH_W) 'netaddr_.c'; else $(CYGPATH_W) '$(srcdir)/netaddr_.c'; fi`
+
+netaddr.o: $(srcdir)/../libisc/netaddr.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT netaddr.o -MD -MP -MF "$(DEPDIR)/netaddr.Tpo" -c -o netaddr.o `test -f '$(srcdir)/../libisc/netaddr.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/netaddr.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/netaddr.Tpo" "$(DEPDIR)/netaddr.Po"; else rm -f "$(DEPDIR)/netaddr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/netaddr.c' object='netaddr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o netaddr.o `test -f '$(srcdir)/../libisc/netaddr.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/netaddr.c
+
+netaddr.obj: $(srcdir)/../libisc/netaddr.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT netaddr.obj -MD -MP -MF "$(DEPDIR)/netaddr.Tpo" -c -o netaddr.obj `if test -f '$(srcdir)/../libisc/netaddr.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/netaddr.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/netaddr.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/netaddr.Tpo" "$(DEPDIR)/netaddr.Po"; else rm -f "$(DEPDIR)/netaddr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/netaddr.c' object='netaddr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o netaddr.obj `if test -f '$(srcdir)/../libisc/netaddr.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/netaddr.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/netaddr.c'; fi`
+
+sockaddr_.o: sockaddr_.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sockaddr_.o -MD -MP -MF "$(DEPDIR)/sockaddr_.Tpo" -c -o sockaddr_.o `test -f 'sockaddr_.c' || echo '$(srcdir)/'`sockaddr_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/sockaddr_.Tpo" "$(DEPDIR)/sockaddr_.Po"; else rm -f "$(DEPDIR)/sockaddr_.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sockaddr_.c' object='sockaddr_.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sockaddr_.o `test -f 'sockaddr_.c' || echo '$(srcdir)/'`sockaddr_.c
+
+sockaddr_.obj: sockaddr_.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sockaddr_.obj -MD -MP -MF "$(DEPDIR)/sockaddr_.Tpo" -c -o sockaddr_.obj `if test -f 'sockaddr_.c'; then $(CYGPATH_W) 'sockaddr_.c'; else $(CYGPATH_W) '$(srcdir)/sockaddr_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/sockaddr_.Tpo" "$(DEPDIR)/sockaddr_.Po"; else rm -f "$(DEPDIR)/sockaddr_.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='sockaddr_.c' object='sockaddr_.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sockaddr_.obj `if test -f 'sockaddr_.c'; then $(CYGPATH_W) 'sockaddr_.c'; else $(CYGPATH_W) '$(srcdir)/sockaddr_.c'; fi`
+
+sockaddr.o: $(srcdir)/../libisc/sockaddr.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sockaddr.o -MD -MP -MF "$(DEPDIR)/sockaddr.Tpo" -c -o sockaddr.o `test -f '$(srcdir)/../libisc/sockaddr.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/sockaddr.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/sockaddr.Tpo" "$(DEPDIR)/sockaddr.Po"; else rm -f "$(DEPDIR)/sockaddr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/sockaddr.c' object='sockaddr.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sockaddr.o `test -f '$(srcdir)/../libisc/sockaddr.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/sockaddr.c
+
+sockaddr.obj: $(srcdir)/../libisc/sockaddr.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT sockaddr.obj -MD -MP -MF "$(DEPDIR)/sockaddr.Tpo" -c -o sockaddr.obj `if test -f '$(srcdir)/../libisc/sockaddr.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/sockaddr.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/sockaddr.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/sockaddr.Tpo" "$(DEPDIR)/sockaddr.Po"; else rm -f "$(DEPDIR)/sockaddr.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/sockaddr.c' object='sockaddr.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sockaddr.obj `if test -f '$(srcdir)/../libisc/sockaddr.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/sockaddr.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/sockaddr.c'; fi`
+
+netscope_.o: netscope_.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT netscope_.o -MD -MP -MF "$(DEPDIR)/netscope_.Tpo" -c -o netscope_.o `test -f 'netscope_.c' || echo '$(srcdir)/'`netscope_.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/netscope_.Tpo" "$(DEPDIR)/netscope_.Po"; else rm -f "$(DEPDIR)/netscope_.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='netscope_.c' object='netscope_.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o netscope_.o `test -f 'netscope_.c' || echo '$(srcdir)/'`netscope_.c
+
+netscope_.obj: netscope_.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT netscope_.obj -MD -MP -MF "$(DEPDIR)/netscope_.Tpo" -c -o netscope_.obj `if test -f 'netscope_.c'; then $(CYGPATH_W) 'netscope_.c'; else $(CYGPATH_W) '$(srcdir)/netscope_.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/netscope_.Tpo" "$(DEPDIR)/netscope_.Po"; else rm -f "$(DEPDIR)/netscope_.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='netscope_.c' object='netscope_.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o netscope_.obj `if test -f 'netscope_.c'; then $(CYGPATH_W) 'netscope_.c'; else $(CYGPATH_W) '$(srcdir)/netscope_.c'; fi`
+
+netscope.o: $(srcdir)/../libisc/netscope.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT netscope.o -MD -MP -MF "$(DEPDIR)/netscope.Tpo" -c -o netscope.o `test -f '$(srcdir)/../libisc/netscope.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/netscope.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/netscope.Tpo" "$(DEPDIR)/netscope.Po"; else rm -f "$(DEPDIR)/netscope.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/netscope.c' object='netscope.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o netscope.o `test -f '$(srcdir)/../libisc/netscope.c' || echo '$(srcdir)/'`$(srcdir)/../libisc/netscope.c
+
+netscope.obj: $(srcdir)/../libisc/netscope.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT netscope.obj -MD -MP -MF "$(DEPDIR)/netscope.Tpo" -c -o netscope.obj `if test -f '$(srcdir)/../libisc/netscope.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/netscope.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/netscope.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/netscope.Tpo" "$(DEPDIR)/netscope.Po"; else rm -f "$(DEPDIR)/netscope.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$(srcdir)/../libisc/netscope.c' object='netscope.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o netscope.obj `if test -f '$(srcdir)/../libisc/netscope.c'; then $(CYGPATH_W) '$(srcdir)/../libisc/netscope.c'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/../libisc/netscope.c'; fi`
a_md5encrypt_.c: a_md5encrypt.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/a_md5encrypt.c; then echo $(srcdir)/a_md5encrypt.c; else echo a_md5encrypt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
adjtime_.c: adjtime.c $(ANSI2KNR)
@@ -855,14 +823,10 @@ authreadkeys_.c: authreadkeys.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/authreadkeys.c; then echo $(srcdir)/authreadkeys.c; else echo authreadkeys.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
authusekey_.c: authusekey.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/authusekey.c; then echo $(srcdir)/authusekey.c; else echo authusekey.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-binio_.c: binio.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/binio.c; then echo $(srcdir)/binio.c; else echo binio.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
buftvtots_.c: buftvtots.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/buftvtots.c; then echo $(srcdir)/buftvtots.c; else echo buftvtots.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
caljulian_.c: caljulian.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/caljulian.c; then echo $(srcdir)/caljulian.c; else echo caljulian.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-calleapwhen_.c: calleapwhen.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/calleapwhen.c; then echo $(srcdir)/calleapwhen.c; else echo calleapwhen.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
caltontp_.c: caltontp.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/caltontp.c; then echo $(srcdir)/caltontp.c; else echo caltontp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
calyearstart_.c: calyearstart.c $(ANSI2KNR)
@@ -889,8 +853,6 @@ fptoms_.c: fptoms.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/fptoms.c; then echo $(srcdir)/fptoms.c; else echo fptoms.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
getopt_.c: getopt.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/getopt.c; then echo $(srcdir)/getopt.c; else echo getopt.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-gpstolfp_.c: gpstolfp.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gpstolfp.c; then echo $(srcdir)/gpstolfp.c; else echo gpstolfp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
hextoint_.c: hextoint.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/hextoint.c; then echo $(srcdir)/hextoint.c; else echo hextoint.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
hextolfp_.c: hextolfp.c $(ANSI2KNR)
@@ -899,10 +861,10 @@ humandate_.c: humandate.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/humandate.c; then echo $(srcdir)/humandate.c; else echo humandate.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
icom_.c: icom.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/icom.c; then echo $(srcdir)/icom.c; else echo icom.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-ieee754io_.c: ieee754io.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ieee754io.c; then echo $(srcdir)/ieee754io.c; else echo ieee754io.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
inet_ntop_.c: $(srcdir)/../libisc/inet_ntop.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/$(srcdir)/../libisc/inet_ntop.c; then echo $(srcdir)/$(srcdir)/../libisc/inet_ntop.c; else echo $(srcdir)/../libisc/inet_ntop.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+inet_pton_.c: $(srcdir)/../libisc/inet_pton.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/$(srcdir)/../libisc/inet_pton.c; then echo $(srcdir)/$(srcdir)/../libisc/inet_pton.c; else echo $(srcdir)/../libisc/inet_pton.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
interfaceiter_.c: $(srcdir)/../libisc/interfaceiter.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/$(srcdir)/../libisc/interfaceiter.c; then echo $(srcdir)/$(srcdir)/../libisc/interfaceiter.c; else echo $(srcdir)/../libisc/interfaceiter.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
inttoa_.c: inttoa.c $(ANSI2KNR)
@@ -915,8 +877,6 @@ lib_.c: $(srcdir)/../libisc/lib.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/$(srcdir)/../libisc/lib.c; then echo $(srcdir)/$(srcdir)/../libisc/lib.c; else echo $(srcdir)/../libisc/lib.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
lib_strbuf_.c: lib_strbuf.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/lib_strbuf.c; then echo $(srcdir)/lib_strbuf.c; else echo lib_strbuf.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-log_.c: log.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/log.c; then echo $(srcdir)/log.c; else echo log.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
machines_.c: machines.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/machines.c; then echo $(srcdir)/machines.c; else echo machines.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
md5c_.c: md5c.c $(ANSI2KNR)
@@ -925,8 +885,6 @@ mem_.c: $(srcdir)/../libisc/mem.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/$(srcdir)/../libisc/mem.c; then echo $(srcdir)/$(srcdir)/../libisc/mem.c; else echo $(srcdir)/../libisc/mem.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
memmove_.c: memmove.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/memmove.c; then echo $(srcdir)/memmove.c; else echo memmove.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-mfp_mul_.c: mfp_mul.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mfp_mul.c; then echo $(srcdir)/mfp_mul.c; else echo mfp_mul.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
mfptoa_.c: mfptoa.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mfptoa.c; then echo $(srcdir)/mfptoa.c; else echo mfptoa.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
mfptoms_.c: mfptoms.c $(ANSI2KNR)
@@ -945,8 +903,14 @@ msyslog_.c: msyslog.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/msyslog.c; then echo $(srcdir)/msyslog.c; else echo msyslog.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
net_.c: $(srcdir)/../libisc/net.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/$(srcdir)/../libisc/net.c; then echo $(srcdir)/$(srcdir)/../libisc/net.c; else echo $(srcdir)/../libisc/net.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+netaddr_.c: $(srcdir)/../libisc/netaddr.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/$(srcdir)/../libisc/netaddr.c; then echo $(srcdir)/$(srcdir)/../libisc/netaddr.c; else echo $(srcdir)/../libisc/netaddr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
netof_.c: netof.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/netof.c; then echo $(srcdir)/netof.c; else echo netof.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+netscope_.c: $(srcdir)/../libisc/netscope.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/$(srcdir)/../libisc/netscope.c; then echo $(srcdir)/$(srcdir)/../libisc/netscope.c; else echo $(srcdir)/../libisc/netscope.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+ntp_random_.c: ntp_random.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntp_random.c; then echo $(srcdir)/ntp_random.c; else echo ntp_random.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntp_rfc2553_.c: ntp_rfc2553.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntp_rfc2553.c; then echo $(srcdir)/ntp_rfc2553.c; else echo ntp_rfc2553.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
numtoa_.c: numtoa.c $(ANSI2KNR)
@@ -957,16 +921,14 @@ octtoint_.c: octtoint.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/octtoint.c; then echo $(srcdir)/octtoint.c; else echo octtoint.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
prettydate_.c: prettydate.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/prettydate.c; then echo $(srcdir)/prettydate.c; else echo prettydate.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-random_.c: random.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/random.c; then echo $(srcdir)/random.c; else echo random.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-ranny_.c: ranny.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ranny.c; then echo $(srcdir)/ranny.c; else echo ranny.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
recvbuff_.c: recvbuff.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/recvbuff.c; then echo $(srcdir)/recvbuff.c; else echo recvbuff.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refnumtoa_.c: refnumtoa.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refnumtoa.c; then echo $(srcdir)/refnumtoa.c; else echo refnumtoa.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
snprintf_.c: snprintf.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/snprintf.c; then echo $(srcdir)/snprintf.c; else echo snprintf.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+sockaddr_.c: $(srcdir)/../libisc/sockaddr.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/$(srcdir)/../libisc/sockaddr.c; then echo $(srcdir)/$(srcdir)/../libisc/sockaddr.c; else echo $(srcdir)/../libisc/sockaddr.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
socktoa_.c: socktoa.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/socktoa.c; then echo $(srcdir)/socktoa.c; else echo socktoa.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
socktohost_.c: socktohost.c $(ANSI2KNR)
@@ -1001,43 +963,59 @@ utvtoa_.c: utvtoa.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/utvtoa.c; then echo $(srcdir)/utvtoa.c; else echo utvtoa.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ymd2yd_.c: ymd2yd.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ymd2yd.c; then echo $(srcdir)/ymd2yd.c; else echo ymd2yd.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-a_md5encrypt_.$(OBJEXT) adjtime_.$(OBJEXT) adjtimex_.$(OBJEXT) \
-assertions_.$(OBJEXT) atoint_.$(OBJEXT) atolfp_.$(OBJEXT) \
-atouint_.$(OBJEXT) audio_.$(OBJEXT) authkeys_.$(OBJEXT) \
-authreadkeys_.$(OBJEXT) authusekey_.$(OBJEXT) binio_.$(OBJEXT) \
-buftvtots_.$(OBJEXT) caljulian_.$(OBJEXT) calleapwhen_.$(OBJEXT) \
-caltontp_.$(OBJEXT) calyearstart_.$(OBJEXT) clocktime_.$(OBJEXT) \
-clocktypes_.$(OBJEXT) decodenetnum_.$(OBJEXT) dofptoa_.$(OBJEXT) \
-dolfptoa_.$(OBJEXT) emalloc_.$(OBJEXT) error_.$(OBJEXT) \
-findconfig_.$(OBJEXT) fptoa_.$(OBJEXT) fptoms_.$(OBJEXT) \
-getopt_.$(OBJEXT) gpstolfp_.$(OBJEXT) hextoint_.$(OBJEXT) \
-hextolfp_.$(OBJEXT) humandate_.$(OBJEXT) icom_.$(OBJEXT) \
-ieee754io_.$(OBJEXT) inet_ntop_.$(OBJEXT) interfaceiter_.$(OBJEXT) \
-inttoa_.$(OBJEXT) iosignal_.$(OBJEXT) isc_strerror_.$(OBJEXT) \
-lib_.$(OBJEXT) lib_strbuf_.$(OBJEXT) log_.$(OBJEXT) machines_.$(OBJEXT) \
-md5c_.$(OBJEXT) mem_.$(OBJEXT) memmove_.$(OBJEXT) mfp_mul_.$(OBJEXT) \
-mfptoa_.$(OBJEXT) mfptoms_.$(OBJEXT) mktime_.$(OBJEXT) \
-modetoa_.$(OBJEXT) msgcat_.$(OBJEXT) mstolfp_.$(OBJEXT) \
-msutotsf_.$(OBJEXT) msyslog_.$(OBJEXT) net_.$(OBJEXT) netof_.$(OBJEXT) \
-ntp_rfc2553_.$(OBJEXT) numtoa_.$(OBJEXT) numtohost_.$(OBJEXT) \
-octtoint_.$(OBJEXT) prettydate_.$(OBJEXT) random_.$(OBJEXT) \
-ranny_.$(OBJEXT) recvbuff_.$(OBJEXT) refnumtoa_.$(OBJEXT) \
-snprintf_.$(OBJEXT) socktoa_.$(OBJEXT) socktohost_.$(OBJEXT) \
-statestr_.$(OBJEXT) strdup_.$(OBJEXT) strerror_.$(OBJEXT) \
-strstr_.$(OBJEXT) syssignal_.$(OBJEXT) systime_.$(OBJEXT) \
-systime_s_.$(OBJEXT) tsftomsu_.$(OBJEXT) tstotv_.$(OBJEXT) \
-tvtoa_.$(OBJEXT) tvtots_.$(OBJEXT) uglydate_.$(OBJEXT) \
-uinttoa_.$(OBJEXT) utvtoa_.$(OBJEXT) ymd2yd_.$(OBJEXT) : $(ANSI2KNR)
+a_md5encrypt_.$(OBJEXT) a_md5encrypt_.lo adjtime_.$(OBJEXT) \
+adjtime_.lo adjtimex_.$(OBJEXT) adjtimex_.lo assertions_.$(OBJEXT) \
+assertions_.lo atoint_.$(OBJEXT) atoint_.lo atolfp_.$(OBJEXT) \
+atolfp_.lo atouint_.$(OBJEXT) atouint_.lo audio_.$(OBJEXT) audio_.lo \
+authkeys_.$(OBJEXT) authkeys_.lo authreadkeys_.$(OBJEXT) \
+authreadkeys_.lo authusekey_.$(OBJEXT) authusekey_.lo \
+buftvtots_.$(OBJEXT) buftvtots_.lo caljulian_.$(OBJEXT) caljulian_.lo \
+caltontp_.$(OBJEXT) caltontp_.lo calyearstart_.$(OBJEXT) \
+calyearstart_.lo clocktime_.$(OBJEXT) clocktime_.lo \
+clocktypes_.$(OBJEXT) clocktypes_.lo decodenetnum_.$(OBJEXT) \
+decodenetnum_.lo dofptoa_.$(OBJEXT) dofptoa_.lo dolfptoa_.$(OBJEXT) \
+dolfptoa_.lo emalloc_.$(OBJEXT) emalloc_.lo error_.$(OBJEXT) error_.lo \
+findconfig_.$(OBJEXT) findconfig_.lo fptoa_.$(OBJEXT) fptoa_.lo \
+fptoms_.$(OBJEXT) fptoms_.lo getopt_.$(OBJEXT) getopt_.lo \
+hextoint_.$(OBJEXT) hextoint_.lo hextolfp_.$(OBJEXT) hextolfp_.lo \
+humandate_.$(OBJEXT) humandate_.lo icom_.$(OBJEXT) icom_.lo \
+inet_ntop_.$(OBJEXT) inet_ntop_.lo inet_pton_.$(OBJEXT) inet_pton_.lo \
+interfaceiter_.$(OBJEXT) interfaceiter_.lo inttoa_.$(OBJEXT) \
+inttoa_.lo iosignal_.$(OBJEXT) iosignal_.lo isc_strerror_.$(OBJEXT) \
+isc_strerror_.lo lib_.$(OBJEXT) lib_.lo lib_strbuf_.$(OBJEXT) \
+lib_strbuf_.lo machines_.$(OBJEXT) machines_.lo md5c_.$(OBJEXT) \
+md5c_.lo mem_.$(OBJEXT) mem_.lo memmove_.$(OBJEXT) memmove_.lo \
+mfptoa_.$(OBJEXT) mfptoa_.lo mfptoms_.$(OBJEXT) mfptoms_.lo \
+mktime_.$(OBJEXT) mktime_.lo modetoa_.$(OBJEXT) modetoa_.lo \
+msgcat_.$(OBJEXT) msgcat_.lo mstolfp_.$(OBJEXT) mstolfp_.lo \
+msutotsf_.$(OBJEXT) msutotsf_.lo msyslog_.$(OBJEXT) msyslog_.lo \
+net_.$(OBJEXT) net_.lo netaddr_.$(OBJEXT) netaddr_.lo netof_.$(OBJEXT) \
+netof_.lo netscope_.$(OBJEXT) netscope_.lo ntp_random_.$(OBJEXT) \
+ntp_random_.lo ntp_rfc2553_.$(OBJEXT) ntp_rfc2553_.lo \
+numtoa_.$(OBJEXT) numtoa_.lo numtohost_.$(OBJEXT) numtohost_.lo \
+octtoint_.$(OBJEXT) octtoint_.lo prettydate_.$(OBJEXT) prettydate_.lo \
+recvbuff_.$(OBJEXT) recvbuff_.lo refnumtoa_.$(OBJEXT) refnumtoa_.lo \
+snprintf_.$(OBJEXT) snprintf_.lo sockaddr_.$(OBJEXT) sockaddr_.lo \
+socktoa_.$(OBJEXT) socktoa_.lo socktohost_.$(OBJEXT) socktohost_.lo \
+statestr_.$(OBJEXT) statestr_.lo strdup_.$(OBJEXT) strdup_.lo \
+strerror_.$(OBJEXT) strerror_.lo strstr_.$(OBJEXT) strstr_.lo \
+syssignal_.$(OBJEXT) syssignal_.lo systime_.$(OBJEXT) systime_.lo \
+systime_s_.$(OBJEXT) systime_s_.lo tsftomsu_.$(OBJEXT) tsftomsu_.lo \
+tstotv_.$(OBJEXT) tstotv_.lo tvtoa_.$(OBJEXT) tvtoa_.lo \
+tvtots_.$(OBJEXT) tvtots_.lo uglydate_.$(OBJEXT) uglydate_.lo \
+uinttoa_.$(OBJEXT) uinttoa_.lo utvtoa_.$(OBJEXT) utvtoa_.lo \
+ymd2yd_.$(OBJEXT) ymd2yd_.lo : $(ANSI2KNR)
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
uninstall-info-am:
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -1046,6 +1024,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -1057,10 +1036,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -1083,10 +1063,6 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -1100,7 +1076,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -1118,7 +1094,6 @@ distdir: $(DISTFILES)
check-am: all-am
check: check-am
all-am: Makefile $(LIBRARIES) $(HEADERS)
-
installdirs:
install: install-am
install-exec: install-exec-am
@@ -1131,7 +1106,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -1139,26 +1114,28 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -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-noinstLIBRARIES mostlyclean-am
+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
+ mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+ distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
@@ -1176,12 +1153,12 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool
pdf: pdf-am
@@ -1194,15 +1171,16 @@ ps-am:
uninstall-am: uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-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-compile mostlyclean-generic \
- mostlyclean-kr pdf pdf-am ps ps-am tags uninstall uninstall-am \
- uninstall-info-am
+ clean-libtool clean-noinstLIBRARIES ctags distclean \
+ distclean-compile 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-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-info-am
../include/des.h:
diff --git a/contrib/ntp/libntp/a_md5encrypt.c b/contrib/ntp/libntp/a_md5encrypt.c
index 42513ef..e1ea37c 100644
--- a/contrib/ntp/libntp/a_md5encrypt.c
+++ b/contrib/ntp/libntp/a_md5encrypt.c
@@ -100,5 +100,5 @@ addr2refid(struct sockaddr_storage *addr)
sizeof(struct in6_addr));
MD5Final(digest, &md5);
memcpy(&addr_refid, digest, 4);
- return (htonl(addr_refid));
+ return (addr_refid);
}
diff --git a/contrib/ntp/libntp/adjtime.c b/contrib/ntp/libntp/adjtime.c
index f041450..a8e6580 100644
--- a/contrib/ntp/libntp/adjtime.c
+++ b/contrib/ntp/libntp/adjtime.c
@@ -249,19 +249,32 @@ _adjtime(
/*
* Emulate adjtime() using QNX ClockAdjust().
* Chris Burghart <burghart@atd.ucar.edu>, 11/2001
+ * Miroslaw Pabich <miroslaw_pabich@o2.pl>, 09/2005
*
- * This is a *very* simple implementation of adjtime() for QNX.
- * ClockAdjust() is used to tweak the system clock by about +- 1/10
- * of its current clock period per tick until the desired delta is
- * achieved.
+ * This is an implementation of adjtime() for QNX.
+ * ClockAdjust() is used to tweak the system clock for about
+ * 1 second period until the desired delta is achieved.
+ * Time correction slew is limited to reasonable value.
+ * Internal rounding and relative errors are reduced.
*/
-# include <math.h>
-# include <stdio.h>
# include <sys/neutrino.h>
# include <sys/time.h>
# include <ntp_stdlib.h>
+/*
+ * Time correction slew limit. QNX is a hard real-time system,
+ * so don't adjust system clock too fast.
+ */
+#define CORR_SLEW_LIMIT 0.02 /* [s/s] */
+
+/*
+ * Period of system clock adjustment. It should be equal to adjtime
+ * execution period (1s). If slightly less than 1s (0.95-0.99), then olddelta
+ * residual error (introduced by execution period jitter) will be reduced.
+ */
+#define ADJUST_PERIOD 0.97 /* [s] */
+
int
adjtime (struct timeval *delta, struct timeval *olddelta)
{
@@ -269,10 +282,15 @@ adjtime (struct timeval *delta, struct timeval *olddelta)
double delta_nsec_old;
struct _clockadjust adj;
struct _clockadjust oldadj;
+
/*
* How many nanoseconds are we adjusting?
*/
- delta_nsec = delta->tv_sec * 1e9 + delta->tv_usec * 1000;
+ if (delta != NULL)
+ delta_nsec = 1e9 * (long)delta->tv_sec + 1e3 * delta->tv_usec;
+ else
+ delta_nsec = 0;
+
/*
* Build the adjust structure and call ClockAdjust()
*/
@@ -281,6 +299,17 @@ adjtime (struct timeval *delta, struct timeval *olddelta)
struct _clockperiod period;
long count;
long increment;
+ long increment_limit;
+ int isneg = 0;
+
+ /*
+ * Convert to absolute value for future processing
+ */
+ if (delta_nsec < 0)
+ {
+ isneg = 1;
+ delta_nsec = -delta_nsec;
+ }
/*
* Get the current clock period (nanoseconds)
@@ -289,13 +318,34 @@ adjtime (struct timeval *delta, struct timeval *olddelta)
return -1;
/*
- * Set the adjust increment to approximately 1/10 timer period per
- * clock tick.
+ * Compute count and nanoseconds increment
+ */
+ count = 1e9 * ADJUST_PERIOD / period.nsec;
+ increment = delta_nsec / count + .5;
+ /* Reduce relative error */
+ if (count > increment + 1)
+ {
+ increment = 1 + (long)((delta_nsec - 1) / count);
+ count = delta_nsec / increment + .5;
+ }
+
+ /*
+ * Limit the adjust increment to appropriate value
*/
- count = 1 + (long)(fabs(10 * delta_nsec / period.nsec));
- increment = (long)(delta_nsec / count);
+ increment_limit = CORR_SLEW_LIMIT * period.nsec;
+ if (increment > increment_limit)
+ {
+ increment = increment_limit;
+ count = delta_nsec / increment + .5;
+ /* Reduce relative error */
+ if (increment > count + 1)
+ {
+ count = 1 + (long)((delta_nsec - 1) / increment);
+ increment = delta_nsec / count + .5;
+ }
+ }
- adj.tick_nsec_inc = increment;
+ adj.tick_nsec_inc = isneg ? -increment : increment;
adj.tick_count = count;
}
else
@@ -310,11 +360,24 @@ adjtime (struct timeval *delta, struct timeval *olddelta)
/*
* Build olddelta
*/
- delta_nsec_old = oldadj.tick_count * oldadj.tick_nsec_inc;
- olddelta->tv_sec = (int)(delta_nsec_old / 1e9);
- olddelta->tv_usec = (int)((delta_nsec_old - 1.0e9 * olddelta->tv_sec) /
- 1000);
-
+ delta_nsec_old = (double)oldadj.tick_count * oldadj.tick_nsec_inc;
+ if (olddelta != NULL)
+ {
+ if (delta_nsec_old != 0)
+ {
+ /* Reduce rounding error */
+ delta_nsec_old += (delta_nsec_old < 0) ? -500 : 500;
+ olddelta->tv_sec = delta_nsec_old / 1e9;
+ olddelta->tv_usec = (long)(delta_nsec_old - 1e9
+ * (long)olddelta->tv_sec) / 1000;
+ }
+ else
+ {
+ olddelta->tv_sec = 0;
+ olddelta->tv_usec = 0;
+ }
+ }
+
return 0;
}
# else /* no special adjtime() needed */
diff --git a/contrib/ntp/libntp/audio.c b/contrib/ntp/libntp/audio.c
index 65a6063..8d2f7c2 100644
--- a/contrib/ntp/libntp/audio.c
+++ b/contrib/ntp/libntp/audio.c
@@ -238,9 +238,9 @@ audio_init(
audio_config_read(unit, &actl, &dname);
/* If we have values for cf_c_dev or cf_i_dev, use them. */
if (*cf_c_dev)
- dname = cf_c_dev;
+ actl = cf_c_dev;
if (*cf_i_dev)
- actl = cf_i_dev;
+ dname = cf_i_dev;
#endif
/*
@@ -285,6 +285,15 @@ audio_init(
s_size.play_size, s_size.rec_size);
# endif /* HAVE_STRUCT_SND_SIZE */
+# ifdef SNDCTL_DSP_SETFRAGMENT
+ {
+ int tmp = (16 << 16) + 6; /* 16 fragments, each 2^6 bytes */
+ if (ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &tmp) == -1)
+ printf("audio_init: SNDCTL_DSP_SETFRAGMENT: %s\n",
+ strerror(errno));
+ }
+# endif /* SNDCTL_DSP_SETFRAGMENT */
+
# ifdef AIOGFMT
if (ioctl(fd, AIOGFMT, &s_c_p) == -1)
printf("audio_init: AIOGFMT: %s\n", strerror(errno));
@@ -304,7 +313,7 @@ audio_init(
if (*cf_agc) {
int i;
- i = mixer_name(cf_agc, recmask);
+ i = mixer_name(cf_agc, devmask);
if (i >= 0)
agc = MIXER_WRITE(i);
else
@@ -372,11 +381,14 @@ audio_gain(
r = 0 ; /* setting to zero nicely mutes the channel */
l |= r << 8;
- if (port == 2) {
- rval = ioctl(ctl_fd, SOUND_MIXER_WRITE_LINE, &l);
- } else {
- rval = ioctl(ctl_fd, SOUND_MIXER_WRITE_MIC, &l);
- }
+ if ( cf_agc )
+ rval = ioctl(ctl_fd, agc, &l);
+ else
+ if (port == 2) {
+ rval = ioctl(ctl_fd, SOUND_MIXER_WRITE_LINE, &l);
+ } else {
+ rval = ioctl(ctl_fd, SOUND_MIXER_WRITE_MIC, &l);
+ }
if (rval == -1) {
printf("audio_gain: agc write: %s\n", strerror(errno));
return (rval);
@@ -389,7 +401,10 @@ audio_gain(
printf("audio_gain: mongain %d/%d\n", mongain, l);
# endif
l |= r << 8;
- rval = ioctl(ctl_fd, SOUND_MIXER_WRITE_VOLUME, &l);
+ if ( cf_monitor )
+ rval = ioctl(ctl_fd, monitor, &l );
+ else
+ rval = ioctl(ctl_fd, SOUND_MIXER_WRITE_VOLUME, &l);
if (rval == -1) {
printf("audio_gain: mongain write: %s\n",
strerror(errno));
diff --git a/contrib/ntp/libntp/buftvtots.c b/contrib/ntp/libntp/buftvtots.c
index 1944233..bfceb35 100644
--- a/contrib/ntp/libntp/buftvtots.c
+++ b/contrib/ntp/libntp/buftvtots.c
@@ -8,6 +8,7 @@
#include "config.h"
#endif
#include "ntp_fp.h"
+#include "ntp_string.h"
#include "ntp_unixtime.h"
int
@@ -16,91 +17,19 @@ buftvtots(
l_fp *ts
)
{
- register const u_char *bp;
- register u_long sec;
- register u_long usec;
struct timeval tv;
-#ifdef WORDS_BIGENDIAN
- bp = (const u_char *)bufp;
+ /*
+ * copy to adhere to alignment restrictions
+ */
+ memcpy(&tv, bufp, sizeof(tv));
- sec = (u_long)*bp++ & 0xff;
- sec <<= 8;
- sec += (u_long)*bp++ & 0xff;
- sec <<= 8;
- sec += (u_long)*bp++ & 0xff;
- sec <<= 8;
- sec += (u_long)*bp++ & 0xff;
-
- if (sizeof(tv.tv_sec) == 8) {
- sec += (u_long)*bp++ & 0xff;
- sec <<= 8;
- sec += (u_long)*bp++ & 0xff;
- sec <<= 8;
- sec += (u_long)*bp++ & 0xff;
- sec <<= 8;
- sec += (u_long)*bp++ & 0xff;
- }
-
- usec = (u_long)*bp++ & 0xff;
- usec <<= 8;
- usec += (u_long)*bp++ & 0xff;
- usec <<= 8;
- usec += (u_long)*bp++ & 0xff;
- usec <<= 8;
- usec += (u_long)*bp++ & 0xff;
-
- if (sizeof(tv.tv_usec) == 8) {
- usec += (u_long)*bp++ & 0xff;
- usec <<= 8;
- usec += (u_long)*bp++ & 0xff;
- usec <<= 8;
- usec += (u_long)*bp++ & 0xff;
- usec <<= 8;
- usec += (u_long)*bp & 0xff;
- }
-#else
- bp = (const u_char *)bufp + 7;
-
- usec = (u_long)*bp-- & 0xff;
- usec <<= 8;
- usec += (u_long)*bp-- & 0xff;
- usec <<= 8;
- usec += (u_long)*bp-- & 0xff;
- usec <<= 8;
- usec += (u_long)*bp-- & 0xff;
-
- if (sizeof(tv.tv_usec) == 8) {
- usec += (u_long)*bp-- & 0xff;
- usec <<= 8;
- usec += (u_long)*bp-- & 0xff;
- usec <<= 8;
- usec += (u_long)*bp-- & 0xff;
- usec <<= 8;
- usec += (u_long)*bp-- & 0xff;
- }
-
- sec = (u_long)*bp-- & 0xff;
- sec <<= 8;
- sec += (u_long)*bp-- & 0xff;
- sec <<= 8;
- sec += (u_long)*bp-- & 0xff;
- sec <<= 8;
- sec += (u_long)*bp-- & 0xff;
-
- if (sizeof (tv.tv_sec) == 8) {
- sec += (u_long)*bp-- & 0xff;
- sec <<= 8;
- sec += (u_long)*bp-- & 0xff;
- sec <<= 8;
- sec += (u_long)*bp-- & 0xff;
- sec <<= 8;
- sec += (u_long)*bp & 0xff;
- }
-#endif
- ts->l_ui = sec + (u_long)JAN_1970;
- if (usec > 999999)
+ /*
+ * and use it
+ */
+ ts->l_ui = tv.tv_sec + (u_long)JAN_1970;
+ if (tv.tv_usec > 999999)
return 0;
- TVUTOTSF(usec, ts->l_uf);
+ TVUTOTSF(tv.tv_usec, ts->l_uf);
return 1;
}
diff --git a/contrib/ntp/libntp/caljulian.c b/contrib/ntp/libntp/caljulian.c
index c3b5e67..71123df 100644
--- a/contrib/ntp/libntp/caljulian.c
+++ b/contrib/ntp/libntp/caljulian.c
@@ -6,7 +6,9 @@
#include "ntp_types.h"
#include "ntp_calendar.h"
#include "ntp_stdlib.h"
+#include "ntp_fp.h"
+#if 0
/*
* calmonthtab - days-in-the-month table
*/
@@ -113,3 +115,32 @@ caljulian(
jt->monthday = (u_char) monthday;
}
}
+#else
+
+/* Updated 2003-12-30 TMa
+
+ Uses common code with the *prettydate functions to convert an ntp
+ seconds count into a calendar date.
+ Will handle ntp epoch wraparound as long as the underlying os/library
+ does so for the unix epoch, i.e. works after 2038.
+*/
+
+void
+caljulian(
+ u_long ntptime,
+ register struct calendar *jt
+ )
+{
+ struct tm *tm;
+
+ tm = ntp2unix_tm(ntptime, 0);
+
+ jt->hour = (u_char) tm->tm_hour;
+ jt->minute = (u_char) tm->tm_min;
+ jt->month = (u_char) (tm->tm_mon + 1);
+ jt->monthday = (u_char) tm->tm_mday;
+ jt->second = (u_char) tm->tm_sec;
+ jt->year = (u_short) (tm->tm_year + 1900);
+ jt->yearday = (u_short) (tm->tm_yday + 1); /* Assumes tm_yday starts with day 0! */
+}
+#endif
diff --git a/contrib/ntp/libntp/calleapwhen.c b/contrib/ntp/libntp/calleapwhen.c
deleted file mode 100644
index c954901..0000000
--- a/contrib/ntp/libntp/calleapwhen.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * calleapwhen - determine the number of seconds to the next possible
- * leap occurance.
- */
-#include <sys/types.h>
-
-#include "ntp_types.h"
-#include "ntp_calendar.h"
-#include "ntp_stdlib.h"
-
-/*
- * calleaptab - leaps occur at the end of December and June
- */
-long calleaptab[10] = {
- -(JAN+FEBLEAP)*SECSPERDAY, /* leap previous to cycle */
- (MAR+APR+MAY+JUN)*SECSPERDAY, /* end of June */
- (MAR+APR+MAY+JUN+JUL+AUG+SEP+OCT+NOV+DEC)*SECSPERDAY, /* end of Dec */
- (MAR+APR+MAY+JUN)*SECSPERDAY + SECSPERYEAR,
- (MAR+APR+MAY+JUN+JUL+AUG+SEP+OCT+NOV+DEC)*SECSPERDAY + SECSPERYEAR,
- (MAR+APR+MAY+JUN)*SECSPERDAY + 2*SECSPERYEAR,
- (MAR+APR+MAY+JUN+JUL+AUG+SEP+OCT+NOV+DEC)*SECSPERDAY + 2*SECSPERYEAR,
- (MAR+APR+MAY+JUN)*SECSPERDAY + 3*SECSPERYEAR,
- (MAR+APR+MAY+JUN+JUL+AUG+SEP+OCT+NOV+DEC)*SECSPERDAY + 3*SECSPERYEAR,
- (MAR+APR+MAY+JUN+JUL+AUG+SEP+OCT+NOV+DEC+JAN+FEBLEAP+MAR+APR+MAY+JUN)
- *SECSPERDAY + 3*SECSPERYEAR, /* next after current cycle */
-};
-
-u_long
-calleapwhen(
- u_long ntpdate
- )
-{
- register u_long dateincycle;
- register int i;
-
- /*
- * Find the offset from the start of the cycle
- */
- dateincycle = ntpdate;
- if (dateincycle >= MAR1988)
- dateincycle -= MAR1988;
- else
- dateincycle -= MAR1900;
-
- while (dateincycle >= SECSPERCYCLE)
- dateincycle -= SECSPERCYCLE;
-
- /*
- * Find where we are with respect to the leap events.
- */
- for (i = 1; i < 9; i++)
- if (dateincycle < (u_long)calleaptab[i])
- break;
-
- /*
- * i points at the next leap. Compute the last and the next.
- */
- return (u_long)(calleaptab[i] - (long)dateincycle);
-}
diff --git a/contrib/ntp/libntp/clocktypes.c b/contrib/ntp/libntp/clocktypes.c
index 928851f..d7dc4ee 100644
--- a/contrib/ntp/libntp/clocktypes.c
+++ b/contrib/ntp/libntp/clocktypes.c
@@ -40,14 +40,14 @@ struct clktype clktypes[] = {
"ATOM_LEITCH" },
{ REFCLK_MSF_EES, "EES M201 MSF Receiver (14)",
"MSF_EES" },
- { REFCLK_GPSTM_TRUE, "TrueTime (old GPSTM driver) Receiver (15)",
- "GPSTM_TRUE" },
+ { REFCLK_NONE, "not used (15)",
+ "NOT_USED" },
{ REFCLK_IRIG_BANCOMM, "Bancomm GPS/IRIG Receiver (16)",
"GPS_BANC" },
{ REFCLK_GPS_DATUM, "Datum Precision Time System (17)",
"GPS_DATUM" },
- { REFCLK_NIST_ACTS, "NIST Automated Computer Time Service (18)",
- "ACTS_NIST" },
+ { REFCLK_ACTS, "Automated Computer Time Service (18)",
+ "ACTS_MODEM" },
{ REFCLK_WWV_HEATH, "Heath WWV/WWVH Receiver (19)",
"WWV_HEATH" },
{ REFCLK_GPS_NMEA, "Generic NMEA GPS Receiver (20)",
@@ -56,12 +56,12 @@ struct clktype clktypes[] = {
"GPS_VME" },
{ REFCLK_ATOM_PPS, "PPS Clock Discipline (22)",
"PPS" },
- { REFCLK_PTB_ACTS, "PTB Automated Computer Time Service (23)",
- "ACTS_PTB" },
- { REFCLK_USNO, "Naval Observatory dialup (24)",
- "ACTS_USNO" },
- { REFCLK_TRUETIME, "TrueTime (generic) Receivers (25)",
- "TRUETIME" },
+ { REFCLK_NONE, "not used (23)",
+ "NOT_USED" },
+ { REFCLK_NONE, "not used (24)",
+ "NOT_USED" },
+ { REFCLK_NONE, "not used (25)",
+ "NOT_USED" },
{ REFCLK_GPS_HP, "HP 58503A GPS Time & Frequency Receiver (26)",
"GPS_HP" },
{ REFCLK_ARCRON_MSF, "ARCRON MSF (and DCF77) Receiver (27)",
diff --git a/contrib/ntp/libntp/decodenetnum.c b/contrib/ntp/libntp/decodenetnum.c
index 4accf4a..746c855 100644
--- a/contrib/ntp/libntp/decodenetnum.c
+++ b/contrib/ntp/libntp/decodenetnum.c
@@ -5,7 +5,6 @@
#include <ctype.h>
#include <sys/socket.h>
#include <netinet/in.h>
-#include <netdb.h>
#include "ntp_stdlib.h"
diff --git a/contrib/ntp/libntp/dolfptoa.c b/contrib/ntp/libntp/dolfptoa.c
index 7c92a30..f68679c 100644
--- a/contrib/ntp/libntp/dolfptoa.c
+++ b/contrib/ntp/libntp/dolfptoa.c
@@ -36,6 +36,14 @@ dolfptoa(
memset((char *) cbuf, 0, sizeof(cbuf));
/*
+ * safeguard against sign extensions and other mishaps on 64 bit platforms
+ * the code following is designed for and only for 32-bit inputs and
+ * only 32-bit worth of input are supplied.
+ */
+ fpi &= 0xffffffff;
+ fpv &= 0xffffffff;
+
+ /*
* Work on the integral part. This is biased by what I know
* compiles fairly well for a 68000.
*/
@@ -49,6 +57,7 @@ dolfptoa(
ltmp = lwork;
lwork /= lten;
ltmp -= (lwork << 3) + (lwork << 1);
+ if (cp < cbuf) abort(); /* rather die a horrible death than trash the memory */
*--cp = (u_char)ltmp;
} while (lwork & 0xffff0000);
}
@@ -61,6 +70,7 @@ dolfptoa(
stmp = swork;
swork = (u_short) (swork/sten);
stmp = (u_short)(stmp - ((swork<<3) + (swork<<1)));
+ if (cp < cbuf) abort(); /* rather die a horrible death than trash the memory */
*--cp = (u_char)stmp;
} while (swork != 0);
}
@@ -110,6 +120,7 @@ dolfptoa(
*cpend++ = (u_char)work.l_ui;
if (work.l_uf == 0)
break;
+ if (cpend > (cbuf + sizeof(cbuf))) abort(); /* rather die a horrible death than trash the memory */
}
/*
diff --git a/contrib/ntp/libntp/gpstolfp.c b/contrib/ntp/libntp/gpstolfp.c
deleted file mode 100644
index c424784..0000000
--- a/contrib/ntp/libntp/gpstolfp.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * /src/NTP/ntp-4/libntp/gpstolfp.c,v 4.3 1999/02/28 11:42:44 kardel RELEASE_19990228_A
- *
- * $Created: Sun Jun 28 16:30:38 1998 $
- *
- * Copyright (C) 1998 by Frank Kardel
- */
-#include "ntp_fp.h"
-
-#define GPSORIGIN ULONG_CONST(2524953600) /* 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 */
-
-void
-gpstolfp(
- int weeks,
- int days,
- unsigned long seconds,
- l_fp * lfp
- )
-{
- if (weeks < GPSWRAP)
- {
- weeks += 1024;
- }
-
- lfp->l_ui = weeks * SECSPERWEEK + days * 86400 + seconds + GPSORIGIN; /* convert to NTP time */
- lfp->l_uf = 0;
-}
-
-/*
- * gpstolfp.c,v
- * Revision 4.3 1999/02/28 11:42:44 kardel
- * (GPSWRAP): update GPS rollover to 990 weeks
- *
- * Revision 4.2 1998/07/11 10:05:25 kardel
- * Release 4.0.73d reconcilation
- *
- * Revision 4.1 1998/06/28 16:47:15 kardel
- * added gpstolfp() function
- */
diff --git a/contrib/ntp/libntp/humandate.c b/contrib/ntp/libntp/humandate.c
index 52f5af1..630c871 100644
--- a/contrib/ntp/libntp/humandate.c
+++ b/contrib/ntp/libntp/humandate.c
@@ -22,10 +22,8 @@ humandate(
{
char *bp;
struct tm *tm;
- time_t sec;
- sec = ntptime - JAN_1970;
- tm = localtime(&sec);
+ tm = ntp2unix_tm(ntptime, 1);
if (!tm)
return "--- --- -- ---- --:--:--";
@@ -48,8 +46,9 @@ humanlogtime(void)
{
char *bp;
time_t cursec = time((time_t *) 0);
- struct tm *tm = localtime(&cursec);
+ struct tm *tm;
+ tm = localtime(&cursec);
if (!tm)
return "-- --- --:--:--";
diff --git a/contrib/ntp/libntp/icom.c b/contrib/ntp/libntp/icom.c
index 5c1a9a3..280667e 100644
--- a/contrib/ntp/libntp/icom.c
+++ b/contrib/ntp/libntp/icom.c
@@ -144,6 +144,7 @@ icom_init(
fd = open(device, O_RDWR, 0777);
if (fd < 0)
return (fd);
+
tcgetattr(fd, &ttyb);
ttyb.c_iflag = 0; /* input modes */
ttyb.c_oflag = 0; /* output modes */
diff --git a/contrib/ntp/libntp/iosignal.c b/contrib/ntp/libntp/iosignal.c
index bcad890..19a6e96 100644
--- a/contrib/ntp/libntp/iosignal.c
+++ b/contrib/ntp/libntp/iosignal.c
@@ -3,12 +3,18 @@
* was shamelessly stolen from ntpd.
*/
-#include "ntp_machine.h"
-#include "ntpd.h"
-#include "ntp_io.h"
-#include "ntp_if.h"
-#include "ntp_stdlib.h"
-#include "iosignal.h"
+/*
+ * [Bug 158]
+ * Do the #includes differently, as under some versions of Linux
+ * sys/param.h has a #undef CONFIG_PHONE line in it.
+ *
+ * As we have ~40 CONFIG_ variables, I don't feel like renaming them
+ * every time somebody adds a new macro to some system header.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
#include <stdio.h>
#include <signal.h>
@@ -25,6 +31,19 @@
# include <ifaddrs.h>
#endif
+# ifdef __QNXNTO__
+# include <fcntl.h>
+# include <unix.h>
+# define FNDELAY O_NDELAY
+# endif
+
+#include "ntp_machine.h"
+#include "ntpd.h"
+#include "ntp_io.h"
+#include "ntp_if.h"
+#include "ntp_stdlib.h"
+#include "iosignal.h"
+
#if defined(HAVE_SIGNALED_IO)
static int sigio_block_count = 0;
# if defined(HAVE_SIGACTION)
@@ -68,12 +87,6 @@ extern void input_handler P((l_fp *));
# define USE_SIGIO
# endif
-# ifdef __QNXNTO__
-# include <fcntl.h>
-# include <unix.h>
-# define FNDELAY O_NDELAY
-# endif
-
# if defined(USE_SIGIO) && defined(USE_SIGPOLL)
# if SIGIO == SIGPOLL
# define USE_SIGIO
diff --git a/contrib/ntp/libntp/lib_strbuf.h b/contrib/ntp/libntp/lib_strbuf.h
index 1a34034..5aa0eb0 100644
--- a/contrib/ntp/libntp/lib_strbuf.h
+++ b/contrib/ntp/libntp/lib_strbuf.h
@@ -7,7 +7,7 @@
/*
* Sizes of things
*/
-#define LIB_NUMBUFS 20
+#define LIB_NUMBUFS 200
#define LIB_BUFLENGTH 80
/*
@@ -20,6 +20,7 @@
buf = &lib_stringbuf[lib_nextbuf][0]; \
if (++lib_nextbuf >= LIB_NUMBUFS) \
lib_nextbuf = 0; \
+ memset(buf, 0, LIB_BUFLENGTH); \
} while (0)
extern char lib_stringbuf[LIB_NUMBUFS][LIB_BUFLENGTH];
diff --git a/contrib/ntp/libntp/log.c b/contrib/ntp/libntp/log.c
deleted file mode 100644
index 991b498..0000000
--- a/contrib/ntp/libntp/log.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/* Microsoft Developer Support Copyright (c) 1993 Microsoft Corporation. */
-
-/* Skip asynch rpc inclusion */
-#ifndef __RPCASYNC_H__
-#define __RPCASYNC_H__
-#endif
-
-#include <windows.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "messages.h"
-#include "log.h"
-
-#define PERR(bSuccess, api) {if(!(bSuccess)) printf("%s: Error %d from %s \
- on line %d\n", __FILE__, GetLastError(), api, __LINE__);}
-
-
-/*********************************************************************
-* FUNCTION: addSourceToRegistry(LPSTR pszAppname, LPSTR pszMsgDLL) *
-* *
-* PURPOSE: Add a source name key, message DLL name value, and *
-* message type supported value to the registry *
-* *
-* INPUT: source name, path of message DLL *
-* *
-* RETURNS: none *
-*********************************************************************/
-
-void addSourceToRegistry(LPSTR pszAppname, LPSTR pszMsgDLL)
-{
- HKEY hk; /* registry key handle */
- DWORD dwData;
- BOOL bSuccess;
- char regarray[200];
- char *lpregarray = regarray;
-
- /* When an application uses the RegisterEventSource or OpenEventLog
- function to get a handle of an event log, the event loggging service
- searches for the specified source name in the registry. You can add a
- new source name to the registry by opening a new registry subkey
- under the Application key and adding registry values to the new
- subkey. */
-
- strcpy(lpregarray, "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\");
- strcat(lpregarray, pszAppname);
-
- /* Create a new key for our application */
- bSuccess = RegCreateKey(HKEY_LOCAL_MACHINE,lpregarray, &hk);
- PERR(bSuccess == ERROR_SUCCESS, "RegCreateKey");
-
- /* Add the Event-ID message-file name to the subkey. */
- bSuccess = RegSetValueEx(hk, /* subkey handle */
- "EventMessageFile", /* value name */
- 0, /* must be zero */
- REG_EXPAND_SZ, /* value type */
- (LPBYTE) pszMsgDLL, /* address of value data */
- strlen(pszMsgDLL) + 1); /* length of value data */
- PERR(bSuccess == ERROR_SUCCESS, "RegSetValueEx");
-
- /* Set the supported types flags and addit to the subkey. */
- dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE |
- EVENTLOG_INFORMATION_TYPE;
- bSuccess = RegSetValueEx(hk, /* subkey handle */
- "TypesSupported", /* value name */
- 0, /* must be zero */
- REG_DWORD, /* value type */
- (LPBYTE) &dwData, /* address of value data */
- sizeof(DWORD)); /* length of value data */
- PERR(bSuccess == ERROR_SUCCESS, "RegSetValueEx");
- RegCloseKey(hk);
- return;
-}
-
-/*********************************************************************
-* FUNCTION: reportAnEvent(DWORD dwIdEvent, WORD cStrings, *
-* LPTSTR *ppszStrings); *
-* *
-* PURPOSE: add the event to the event log *
-* *
-* INPUT: the event ID to report in the log, the number of insert *
-* strings, and an array of null-terminated insert strings *
-* *
-* RETURNS: none *
-*********************************************************************/
-
-void reportAnIEvent(DWORD dwIdEvent, WORD cStrings, LPTSTR *pszStrings)
-{
- HANDLE hAppLog;
- BOOL bSuccess;
-
- /* Get a handle to the Application event log */
- hAppLog = RegisterEventSource(NULL, /* use local machine */
- "NTP"); /* source name */
- PERR(hAppLog, "RegisterEventSource");
-
- /* Now report the event, which will add this event to the event log */
- bSuccess = ReportEvent(hAppLog, /* event-log handle */
- EVENTLOG_INFORMATION_TYPE, /* event type */
- 0, /* category zero */
- dwIdEvent, /* event ID */
- NULL, /* no user SID */
- cStrings, /* number of substitution strings */
- 0, /* no binary data */
- pszStrings, /* string array */
- NULL); /* address of data */
- PERR(bSuccess, "ReportEvent");
- DeregisterEventSource(hAppLog);
- return;
-}
-
-void reportAnWEvent(DWORD dwIdEvent, WORD cStrings, LPTSTR *pszStrings)
-{
- HANDLE hAppLog;
- BOOL bSuccess;
-
- /* Get a handle to the Application event log */
- hAppLog = RegisterEventSource(NULL, /* use local machine */
- "NTP"); /* source name */
- PERR(hAppLog, "RegisterEventSource");
-
- /* Now report the event, which will add this event to the event log */
- bSuccess = ReportEvent(hAppLog, /* event-log handle */
- EVENTLOG_WARNING_TYPE, /* event type */
- 0, /* category zero */
- dwIdEvent, /* event ID */
- NULL, /* no user SID */
- cStrings, /* number of substitution strings */
- 0, /* no binary data */
- pszStrings, /* string array */
- NULL); /* address of data */
- PERR(bSuccess, "ReportEvent");
- DeregisterEventSource(hAppLog);
- return;
-}
-
-void reportAnEEvent(DWORD dwIdEvent, WORD cStrings, LPTSTR *pszStrings)
-{
- HANDLE hAppLog;
- BOOL bSuccess;
-
- /* Get a handle to the Application event log */
- hAppLog = RegisterEventSource(NULL, /* use local machine */
- "NTP"); /* source name */
- PERR(hAppLog, "RegisterEventSource");
-
- /* Now report the event, which will add this event to the event log */
- bSuccess = ReportEvent(hAppLog, /* event-log handle */
- EVENTLOG_ERROR_TYPE, /* event type */
- 0, /* category zero */
- dwIdEvent, /* event ID */
- NULL, /* no user SID */
- cStrings, /* number of substitution strings */
- 0, /* no binary data */
- pszStrings, /* string array */
- NULL); /* address of data */
- PERR(bSuccess, "ReportEvent");
- DeregisterEventSource(hAppLog);
- return;
-}
diff --git a/contrib/ntp/libntp/log.h b/contrib/ntp/libntp/log.h
deleted file mode 100644
index 99d0e72..0000000
--- a/contrib/ntp/libntp/log.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * log.h - Used only under Windows NT by msyslog.c
- *
- */
-#ifndef WINNT_LOG_H
-#define WINNT_LOG_H
-
-#include <windows.h>
-
-/* function declarations */
-
-void addSourceToRegistry(LPSTR pszAppname, LPSTR pszMsgDLL);
-void reportAnIEvent(DWORD dwIdEvent, WORD cStrings, LPTSTR *pszStrings);
-void reportAnWEvent(DWORD dwIdEvent, WORD cStrings, LPTSTR *pszStrings);
-void reportAnEEvent(DWORD dwIdEvent, WORD cStrings, LPTSTR *pszStrings);
-
-#define MAX_MSG_LENGTH 1024
-#define MSG_ID_MASK 0x0000FFFF
-#define MAX_INSERT_STRS 8
-
-#endif /* WINNT_LOG_H */
diff --git a/contrib/ntp/libntp/machines.c b/contrib/ntp/libntp/machines.c
index 9e318bf..c8e4e07 100644
--- a/contrib/ntp/libntp/machines.c
+++ b/contrib/ntp/libntp/machines.c
@@ -454,6 +454,7 @@ ntp_set_tod(
*/
adjtv.tv_sec = adjtv.tv_usec = 0;
adjtime(&adjtv, NULL);
+ errno = 0;
rc = SETTIMEOFDAY(tvp, tzp);
#ifdef DEBUG
if (debug) {
@@ -468,6 +469,7 @@ ntp_set_tod(
long tp = tvp->tv_sec;
set_tod_using = "stime";
+ errno = 0;
rc = stime(&tp); /* lie as bad as SysVR4 */
#ifdef DEBUG
if (debug) {
@@ -498,10 +500,10 @@ getpass(const char * prompt)
{
int c, i;
static char password[32];
-#ifdef DEBUG
+
fprintf(stderr, "%s", prompt);
fflush(stderr);
-#endif
+
for (i=0; i<sizeof(password)-1 && ((c=_getch())!='\n' && c!='\r'); i++) {
password[i] = (char) c;
}
diff --git a/contrib/ntp/libntp/mfp_mul.c b/contrib/ntp/libntp/mfp_mul.c
deleted file mode 100644
index 0c667f7..0000000
--- a/contrib/ntp/libntp/mfp_mul.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * /src/NTP/ntp-4/libntp/mfp_mul.c,v 4.3 1999/02/21 12:17:37 kardel RELEASE_19990228_A
- *
- * $Created: Sat Aug 16 20:35:08 1997 $
- *
- * Copyright (C) 1997, 1998 by Frank Kardel
- */
-#include <stdio.h>
-#include "ntp_stdlib.h"
-#include "ntp_types.h"
-#include "ntp_fp.h"
-
-#define LOW_MASK (u_int32)((1<<(FRACTION_PREC/2))-1)
-#define HIGH_MASK (u_int32)(LOW_MASK << (FRACTION_PREC/2))
-
-void
-mfp_mul(
- int32 *o_i,
- u_int32 *o_f,
- int32 a_i,
- u_int32 a_f,
- int32 b_i,
- u_int32 b_f
- )
-{
- int32 i, j;
- u_int32 f;
- u_long a[4]; /* operand a */
- u_long b[4]; /* operand b */
- u_long c[4]; /* result c */
-
- int neg = 0;
-
- if (a_i < 0) /* examine sign situation */
- {
- neg = 1;
- M_NEG(a_i, a_f);
- }
-
- if (b_i < 0) /* examine sign situation */
- {
- neg = !neg;
- M_NEG(b_i, b_f);
- }
-
- a[0] = a_f & LOW_MASK; /* prepare a operand */
- a[1] = (a_f & HIGH_MASK) >> (FRACTION_PREC/2);
- a[2] = a_i & LOW_MASK;
- a[3] = (a_i & HIGH_MASK) >> (FRACTION_PREC/2);
-
- b[0] = b_f & LOW_MASK; /* prepare b operand */
- b[1] = (b_f & HIGH_MASK) >> (FRACTION_PREC/2);
- b[2] = b_i & LOW_MASK;
- b[3] = (b_i & HIGH_MASK) >> (FRACTION_PREC/2);
-
- c[0] = c[1] = c[2] = c[3] = 0;
-
- for (i = 0; i < 4; i++) /* we do assume 32 * 32 = 64 bit multiplication */
- for (j = 0; j < 4; j++)
- {
- u_long result_low, result_high;
-
- result_low = (u_long)a[i] * (u_long)b[j]; /* partial product */
-
- if ((i+j) & 1) /* splits across two result registers */
- {
- result_high = result_low >> (FRACTION_PREC/2);
- result_low <<= FRACTION_PREC/2;
- }
- else
- { /* stays in a result register - except for overflows */
- result_high = 0;
- }
-
- if (((c[(i+j)/2] >> 1) + (result_low >> 1)) & (u_int32)((unsigned)1<<(FRACTION_PREC - 1)))
- result_high++; /* propagate overflows */
-
- c[(i+j)/2] += result_low; /* add up partial products */
-
- if (((c[(i+j+1)/2] >> 1) + (result_high >> 1)) & (u_int32)((unsigned)1<<(FRACTION_PREC - 1)))
- c[1+(i+j)/2]++; /* propagate overflows */
-
- c[(i+j+1)/2] += result_high;
- }
-
-#ifdef DEBUG
- if (debug > 6)
- printf("mfp_mul: 0x%04lx%04lx%04lx%04lx * 0x%04lx%04lx%04lx%04lx = 0x%08lx%08lx%08lx%08lx\n",
- a[3], a[2], a[1], a[0], b[3], b[2], b[1], b[0], c[3], c[2], c[1], c[0]);
-#endif
-
- if (c[3]) /* overflow */
- {
- i = ((unsigned)1 << (FRACTION_PREC-1)) - 1;
- f = ~(unsigned)0;
- }
- else
- { /* take produkt - discarding extra precision */
- i = c[2];
- f = c[1];
- }
-
- if (neg) /* recover sign */
- {
- M_NEG(i, f);
- }
-
- *o_i = i;
- *o_f = f;
-
-#ifdef DEBUG
- if (debug > 6)
- printf("mfp_mul: %s * %s => %s\n",
- mfptoa((u_long)a_i, a_f, 6),
- mfptoa((u_long)b_i, b_f, 6),
- mfptoa((u_long)i, f, 6));
-#endif
-}
-
-/*
- * mfp_mul.c,v
- * Revision 4.3 1999/02/21 12:17:37 kardel
- * 4.91f reconcilation
- *
- * Revision 4.2 1998/12/20 23:45:28 kardel
- * fix types and warnings
- *
- * Revision 4.1 1998/05/24 07:59:57 kardel
- * conditional debug support
- *
- * Revision 4.0 1998/04/10 19:46:38 kardel
- * Start 4.0 release version numbering
- *
- * Revision 1.1 1998/04/10 19:27:47 kardel
- * initial NTP VERSION 4 integration of PARSE with GPS166 binary support
- *
- * Revision 1.1 1997/10/06 21:05:46 kardel
- * new parse structure
- *
- */
diff --git a/contrib/ntp/libntp/mktime.c b/contrib/ntp/libntp/mktime.c
index 7f8290f..91be600 100644
--- a/contrib/ntp/libntp/mktime.c
+++ b/contrib/ntp/libntp/mktime.c
@@ -34,7 +34,6 @@
* SUCH DAMAGE. */
/*static char *sccsid = "from: @(#)ctime.c 5.26 (Berkeley) 2/23/91";*/
-/*static char *rcsid = "mktime.c,v 1.1.1.3 1998/11/15 19:23:34 kardel RELEASE_19990228_A";*/
/*
* This implementation of mktime is lifted straight from the NetBSD (BSD 4.4)
@@ -62,7 +61,7 @@
#include "ntp_machine.h"
-#if !HAVE_MKTIME || !HAVE_TIMEGM
+#if !defined(HAVE_MKTIME) || !defined(HAVE_TIMEGM)
#ifndef DSTMINUTES
#define DSTMINUTES 60
@@ -84,8 +83,6 @@
#define TM_YEAR_BASE 1900
#define isleap(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0)
-extern time_t time P((time_t *));
-
static int mon_lengths[2][MONSPERYEAR] = {
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
@@ -260,7 +257,7 @@ time2(
int mktime_bs;
#endif /* !HAVE_MKTIME || !HAVE_TIMEGM */
-#if !HAVE_MKTIME
+#ifndef HAVE_MKTIME
static time_t
time1(
struct tm * tmp
@@ -287,7 +284,7 @@ mktime(
}
#endif /* !HAVE_MKTIME */
-#if !HAVE_TIMEGM
+#ifndef HAVE_TIMEGM
time_t
timegm(
struct tm * tmp
diff --git a/contrib/ntp/libntp/msyslog.c b/contrib/ntp/libntp/msyslog.c
index f0e8872..fe4d979 100644
--- a/contrib/ntp/libntp/msyslog.c
+++ b/contrib/ntp/libntp/msyslog.c
@@ -25,7 +25,6 @@
#ifdef SYS_WINNT
# include <stdarg.h>
-# include "..\ports\winnt\libntp\log.h"
# include "..\ports\winnt\libntp\messages.h"
#endif
diff --git a/contrib/ntp/libntp/random.c b/contrib/ntp/libntp/ntp_random.c
index 7136857..700b4ee 100644
--- a/contrib/ntp/libntp/random.c
+++ b/contrib/ntp/libntp/ntp_random.c
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD$
+ * $FreeBSD: src/lib/libc/stdlib/random.c,v 1.4.2.2 1999/09/05 11:16:45 peter Exp $
*
*/
@@ -48,6 +48,8 @@ static char sccsid[] = "@(#)random.c 8.2 (Berkeley) 5/19/95";
#include <stdio.h>
#include <ntp_types.h>
+#include <ntp_random.h>
+#include <ntp_unixtime.h>
/*
* random.c:
@@ -218,7 +220,6 @@ static long rand_sep = SEP_3;
static long *end_ptr = &randtbl[DEG_3 + 1];
static inline long good_rand P((long));
-long random P((void));
static inline long
good_rand (
@@ -265,7 +266,7 @@ good_rand (
* for default usage relies on values produced by this routine.
*/
void
-srandom(
+ntp_srandom(
unsigned long x
)
{
@@ -280,7 +281,7 @@ srandom(
fptr = &state[rand_sep];
rptr = &state[0];
for (i = 0; i < 10 * rand_deg; i++)
- (void)random();
+ (void)ntp_random();
}
}
@@ -295,16 +296,18 @@ srandom(
* state buffer are no longer derived from the LC algorithm applied to
* a fixed seed.
*/
+#ifdef NEED_SRANDOMDEV
void
-srandomdev( void )
+ntp_srandomdev( void )
{
struct timeval tv;
unsigned long junk; /* Purposely used uninitialized */
- gettimeofday(&tv, NULL);
- srandom(getpid() ^ tv.tv_sec ^ tv.tv_usec ^ junk);
+ GETTIMEOFDAY(&tv, NULL);
+ ntp_srandom(getpid() ^ tv.tv_sec ^ tv.tv_usec ^ junk);
return;
}
+#endif
/*
* initstate:
@@ -330,7 +333,7 @@ srandomdev( void )
* complain about mis-alignment, but you should disregard these messages.
*/
char *
-initstate(
+ntp_initstate(
unsigned long seed, /* seed for R.N.G. */
char *arg_state, /* pointer to state array */
long n /* # bytes of state info */
@@ -371,7 +374,7 @@ initstate(
}
state = (long *) (long_arg_state + 1); /* first location */
end_ptr = &state[rand_deg]; /* must set end_ptr before srandom */
- srandom(seed);
+ ntp_srandom(seed);
if (rand_type == TYPE_0)
long_arg_state[0] = rand_type;
else
@@ -399,7 +402,7 @@ initstate(
* complain about mis-alignment, but you should disregard these messages.
*/
char *
-setstate(
+ntp_setstate(
char *arg_state /* pointer to state array */
)
{
@@ -453,7 +456,7 @@ setstate(
* Returns a 31-bit random number.
*/
long
-random( void )
+ntp_random( void )
{
register long i;
register long *f, *r;
diff --git a/contrib/ntp/libntp/ntp_rfc2553.c b/contrib/ntp/libntp/ntp_rfc2553.c
index 2788630..017ef83 100644
--- a/contrib/ntp/libntp/ntp_rfc2553.c
+++ b/contrib/ntp/libntp/ntp_rfc2553.c
@@ -65,34 +65,23 @@
* Compatability shims with the rfc2553 API to simplify ntp.
*/
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
#include <sys/types.h>
#include <ctype.h>
#include <sys/socket.h>
-#include "ntp_rfc2553.h"
+#include <isc/net.h>
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
-#include <netdb.h>
+#include "ntp_rfc2553.h"
#include "ntpd.h"
#include "ntp_malloc.h"
#include "ntp_stdlib.h"
#include "ntp_string.h"
-#ifndef HAVE_IPV6
-
-#if defined(SYS_WINNT)
-/* XXX This is the preferred way, but for some reason the SunOS compiler
- * does not like it.
- */
-const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
-#else
-const struct in6_addr in6addr_any;
-#endif
+#ifndef ISC_PLATFORM_HAVEIPV6
static char *ai_errlist[] = {
"Success",
@@ -112,7 +101,32 @@ static char *ai_errlist[] = {
"Unknown error", /* EAI_MAX */
};
-static int ipv4_aton P((const char *, struct sockaddr_storage *));
+/*
+ * Local declaration
+ */
+int
+DNSlookup_name(
+ const char *name,
+ int ai_family,
+ struct hostent **Addresses
+);
+
+#ifndef SYS_WINNT
+/*
+ * Encapsulate gethostbyname to control the error code
+ */
+int
+DNSlookup_name(
+ const char *name,
+ int ai_family,
+ struct hostent **Addresses
+)
+{
+ *Addresses = gethostbyname(name);
+ return (h_errno);
+}
+#endif
+
static int do_nodename P((const char *nodename, struct addrinfo *ai,
const struct addrinfo *hints));
@@ -121,45 +135,133 @@ getaddrinfo (const char *nodename, const char *servname,
const struct addrinfo *hints, struct addrinfo **res)
{
int rval;
- struct addrinfo *ai;
- struct sockaddr_in *sockin;
+ struct servent *sp;
+ struct addrinfo *ai = NULL;
+ int port;
+ const char *proto = NULL;
+ int family, socktype, flags, protocol;
+
+ /*
+ * If no name is provide just return an error
+ */
+ if (nodename == NULL && servname == NULL)
+ return (EAI_NONAME);
+
ai = calloc(sizeof(struct addrinfo), 1);
if (ai == NULL)
return (EAI_MEMORY);
- if (nodename != NULL) {
- rval = do_nodename(nodename, ai, hints);
- if (rval != 0) {
- freeaddrinfo(ai);
- return (rval);
+ /*
+ * Copy default values from hints, if available
+ */
+ if (hints != NULL) {
+ ai->ai_flags = hints->ai_flags;
+ ai->ai_family = hints->ai_family;
+ ai->ai_socktype = hints->ai_socktype;
+ ai->ai_protocol = hints->ai_protocol;
+
+ family = hints->ai_family;
+ socktype = hints->ai_socktype;
+ protocol = hints->ai_protocol;
+ flags = hints->ai_flags;
+
+ switch (family) {
+ case AF_UNSPEC:
+ switch (hints->ai_socktype) {
+ case SOCK_STREAM:
+ proto = "tcp";
+ break;
+ case SOCK_DGRAM:
+ proto = "udp";
+ break;
+ }
+ break;
+ case AF_INET:
+ case AF_INET6:
+ switch (hints->ai_socktype) {
+ case 0:
+ break;
+ case SOCK_STREAM:
+ proto = "tcp";
+ break;
+ case SOCK_DGRAM:
+ proto = "udp";
+ break;
+ case SOCK_RAW:
+ break;
+ default:
+ return (EAI_SOCKTYPE);
+ }
+ break;
+#ifdef AF_LOCAL
+ case AF_LOCAL:
+ switch (hints->ai_socktype) {
+ case 0:
+ break;
+ case SOCK_STREAM:
+ break;
+ case SOCK_DGRAM:
+ break;
+ default:
+ return (EAI_SOCKTYPE);
+ }
+ break;
+#endif
+ default:
+ return (EAI_FAMILY);
}
+ } else {
+ protocol = 0;
+ family = 0;
+ socktype = 0;
+ flags = 0;
}
- if (nodename == NULL && hints != NULL) {
- ai->ai_addr = calloc(sizeof(struct sockaddr_storage), 1);
- if (ai->ai_addr == NULL) {
- freeaddrinfo(ai);
- return (EAI_MEMORY);
- }
- ai->ai_family = AF_INET;
- ai->ai_addrlen = sizeof(struct sockaddr_storage);
- sockin = (struct sockaddr_in *)ai->ai_addr;
- sockin->sin_family = AF_INET;
- sockin->sin_addr.s_addr = htonl(INADDR_ANY);
-#ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
- ai->ai_addr->sa_len = SOCKLEN(ai->ai_addr);
-#endif
+
+ rval = do_nodename(nodename, ai, hints);
+ if (rval != 0) {
+ freeaddrinfo(ai);
+ return (rval);
}
+
+ /*
+ * First, look up the service name (port) if it was
+ * requested. If the socket type wasn't specified, then
+ * try and figure it out.
+ */
if (servname != NULL) {
- ai->ai_family = AF_INET;
- ai->ai_socktype = SOCK_DGRAM;
- if (strcmp(servname, "ntp") != 0) {
- freeaddrinfo(ai);
- return (EAI_SERVICE);
+ char *e;
+
+ port = strtol(servname, &e, 10);
+ if (*e == '\0') {
+ if (socktype == 0)
+ return (EAI_SOCKTYPE);
+ if (port < 0 || port > 65535)
+ return (EAI_SERVICE);
+ port = htons((unsigned short) port);
+ } else {
+ sp = getservbyname(servname, proto);
+ if (sp == NULL)
+ return (EAI_SERVICE);
+ port = sp->s_port;
+ if (socktype == 0) {
+ if (strcmp(sp->s_proto, "tcp") == 0)
+ socktype = SOCK_STREAM;
+ else if (strcmp(sp->s_proto, "udp") == 0)
+ socktype = SOCK_DGRAM;
+ }
}
- sockin = (struct sockaddr_in *)ai->ai_addr;
- sockin->sin_port = htons(NTP_PORT);
- }
+ } else
+ port = 0;
+
+ /*
+ *
+ * Set up the port number
+ */
+ if (ai->ai_family == AF_INET)
+ ((struct sockaddr_in *)ai->ai_addr)->sin_port = (unsigned short) port;
+ else if (ai->ai_family == AF_INET6)
+ ((struct sockaddr_in6 *)ai->ai_addr)->sin6_port = (unsigned short) port;
*res = ai;
return (0);
}
@@ -168,10 +270,17 @@ void
freeaddrinfo(struct addrinfo *ai)
{
if (ai->ai_canonname != NULL)
+ {
free(ai->ai_canonname);
+ ai->ai_canonname = NULL;
+ }
if (ai->ai_addr != NULL)
+ {
free(ai->ai_addr);
+ ai->ai_addr = NULL;
+ }
free(ai);
+ ai = NULL;
}
int
@@ -179,6 +288,7 @@ getnameinfo (const struct sockaddr *sa, u_int salen, char *host,
size_t hostlen, char *serv, size_t servlen, int flags)
{
struct hostent *hp;
+ int namelen;
if (sa->sa_family != AF_INET)
return (EAI_FAMILY);
@@ -191,9 +301,15 @@ getnameinfo (const struct sockaddr *sa, u_int salen, char *host,
else
return (EAI_FAIL);
}
- if (host != NULL) {
- strncpy(host, hp->h_name, hostlen);
- host[hostlen] = '\0';
+ if (host != NULL && hostlen > 0) {
+ /*
+ * Don't exceed buffer
+ */
+ namelen = min(strlen(hp->h_name), hostlen - 1);
+ if (namelen > 0) {
+ strncpy(host, hp->h_name, namelen);
+ host[namelen] = '\0';
+ }
}
return (0);
}
@@ -212,34 +328,99 @@ do_nodename(
struct addrinfo *ai,
const struct addrinfo *hints)
{
- struct hostent *hp;
+ struct hostent *hp = NULL;
struct sockaddr_in *sockin;
+ struct sockaddr_in6 *sockin6;
+ int errval;
ai->ai_addr = calloc(sizeof(struct sockaddr_storage), 1);
if (ai->ai_addr == NULL)
return (EAI_MEMORY);
- if (hints != NULL && hints->ai_flags & AI_NUMERICHOST) {
- if (ipv4_aton(nodename,
- (struct sockaddr_storage *)ai->ai_addr) == 1) {
- ai->ai_family = AF_INET;
- ai->ai_addrlen = sizeof(struct sockaddr_in);
+ /*
+ * For an empty node name just use the wildcard.
+ * NOTE: We need to assume that the address family is
+ * set elsewhere so that we can set the appropriate wildcard
+ */
+ if (nodename == NULL) {
+ ai->ai_addrlen = sizeof(struct sockaddr_storage);
+ if (ai->ai_family == AF_INET)
+ {
+ sockin = (struct sockaddr_in *)ai->ai_addr;
+ sockin->sin_family = (short) ai->ai_family;
+ sockin->sin_addr.s_addr = htonl(INADDR_ANY);
+ }
+ else
+ {
+ sockin6 = (struct sockaddr_in6 *)ai->ai_addr;
+ sockin6->sin6_family = (short) ai->ai_family;
+ /*
+ * we have already zeroed out the address
+ * so we don't actually need to do this
+ * This assignment is causing problems so
+ * we don't do what this would do.
+ sockin6->sin6_addr = in6addr_any;
+ */
+ }
+#ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
+ ai->ai_addr->sa_len = SOCKLEN(ai->ai_addr);
+#endif
+
+ return (0);
+ }
+
+ /*
+ * See if we have an IPv6 address
+ */
+ if(strchr(nodename, ':') != NULL) {
+ if (inet_pton(AF_INET6, nodename,
+ &((struct sockaddr_in6 *)ai->ai_addr)->sin6_addr) == 1) {
+ ((struct sockaddr_in6 *)ai->ai_addr)->sin6_family = AF_INET6;
+ ai->ai_family = AF_INET6;
+ ai->ai_addrlen = sizeof(struct sockaddr_in6);
return (0);
}
- return (EAI_NONAME);
}
- hp = gethostbyname(nodename);
+
+ /*
+ * See if we have an IPv4 address
+ */
+ if (inet_pton(AF_INET, nodename,
+ &((struct sockaddr_in *)ai->ai_addr)->sin_addr) == 1) {
+ ((struct sockaddr *)ai->ai_addr)->sa_family = AF_INET;
+ ai->ai_family = AF_INET;
+ ai->ai_addrlen = sizeof(struct sockaddr_in);
+ return (0);
+ }
+
+ /*
+ * If the numeric host flag is set, don't attempt resolution
+ */
+ if (hints != NULL && (hints->ai_flags & AI_NUMERICHOST))
+ return (EAI_NONAME);
+
+ /*
+ * Look for a name
+ */
+
+ errval = DNSlookup_name(nodename, AF_INET, &hp);
+
if (hp == NULL) {
- if (h_errno == TRY_AGAIN)
+ if (errval == TRY_AGAIN || errval == EAI_AGAIN)
return (EAI_AGAIN);
- else {
- if (ipv4_aton(nodename,
- (struct sockaddr_storage *)ai->ai_addr) == 1) {
+ else if (errval == EAI_NONAME) {
+ if (inet_pton(AF_INET, nodename,
+ &((struct sockaddr_in *)ai->ai_addr)->sin_addr) == 1) {
+ ((struct sockaddr *)ai->ai_addr)->sa_family = AF_INET;
ai->ai_family = AF_INET;
ai->ai_addrlen = sizeof(struct sockaddr_in);
return (0);
}
- return (EAI_FAIL);
+ return (errval);
+ }
+ else
+ {
+ return (errval);
}
}
ai->ai_family = hp->h_addrtype;
@@ -259,73 +440,4 @@ do_nodename(
return (0);
}
-/*
- * ipv4_aton - return a net number (this is crude, but careful)
- */
-static int
-ipv4_aton(
- const char *num,
- struct sockaddr_storage *saddr
- )
-{
- const char *cp;
- char *bp;
- int i;
- int temp;
- char buf[80]; /* will core dump on really stupid stuff */
- u_int32 netnum;
- struct sockaddr_in *addr;
-
- cp = num;
- netnum = 0;
- for (i = 0; i < 4; i++) {
- bp = buf;
- while (isdigit((int)*cp))
- *bp++ = *cp++;
- if (bp == buf)
- break;
-
- if (i < 3) {
- if (*cp++ != '.')
- break;
- } else if (*cp != '\0')
- break;
-
- *bp = '\0';
- temp = atoi(buf);
- if (temp > 255)
- break;
- netnum <<= 8;
- netnum += temp;
-#ifdef DEBUG
- if (debug > 3)
- printf("ipv4_aton %s step %d buf %s temp %d netnum %lu\n",
- num, i, buf, temp, (u_long)netnum);
-#endif
- }
-
- if (i < 4) {
-#ifdef DEBUG
- if (debug > 3)
- printf(
- "ipv4_aton: \"%s\" invalid host number, line ignored\n",
- num);
-#endif
- return (0);
- }
-
- /*
- * make up socket address. Clear it out for neatness.
- */
- memset((void *)saddr, 0, sizeof(struct sockaddr_storage));
- addr = (struct sockaddr_in *)saddr;
- addr->sin_family = AF_INET;
- addr->sin_port = htons(NTP_PORT);
- addr->sin_addr.s_addr = htonl(netnum);
-#ifdef DEBUG
- if (debug > 1)
- printf("ipv4_aton given %s, got %s.\n", num, ntoa(saddr));
-#endif
- return (1);
-}
-#endif /* !HAVE_IPV6 */
+#endif /* !ISC_PLATFORM_HAVEIPV6 */
diff --git a/contrib/ntp/libntp/numtohost.c b/contrib/ntp/libntp/numtohost.c
index 4e53092..dd51c5d 100644
--- a/contrib/ntp/libntp/numtohost.c
+++ b/contrib/ntp/libntp/numtohost.c
@@ -1,7 +1,6 @@
/*
* numtohost - convert network number to host name.
*/
-#include <netdb.h>
#include "ntp_fp.h"
#include "ntp_stdlib.h"
diff --git a/contrib/ntp/libntp/prettydate.c b/contrib/ntp/libntp/prettydate.c
index 9710c84..55adf64 100644
--- a/contrib/ntp/libntp/prettydate.c
+++ b/contrib/ntp/libntp/prettydate.c
@@ -17,6 +17,60 @@ static const char *days[] = {
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
+/* Helper function to handle possible wraparound of the ntp epoch.
+
+ Works by assuming that the localtime/gmtime library functions
+ have been updated so that they work
+*/
+
+#define MAX_EPOCH_NR 1000
+
+struct tm *
+ntp2unix_tm(
+ u_long ntp, int local
+ )
+{
+ time_t t, curr;
+ struct tm *tm;
+ int curr_year, epoch_nr;
+
+ /* First get the current year: */
+ curr = time(NULL);
+ tm = local ? localtime(&curr) : gmtime(&curr);
+ if (!tm) return NULL;
+
+ curr_year = 1900 + tm->tm_year;
+
+ /* Convert the ntp timestamp to a unix utc seconds count: */
+ t = (time_t) ntp - JAN_1970;
+
+ /* Check that the ntp timestamp is not before a 136 year window centered
+ around the current year:
+
+ Failsafe in case of an infinite loop:
+ Allow up to 1000 epochs of 136 years each!
+ */
+ for (epoch_nr = 0; epoch_nr < MAX_EPOCH_NR; epoch_nr++) {
+ tm = local ? localtime(&t) : gmtime(&t);
+
+#if SIZEOF_TIME_T < 4
+# include "Bletch: sizeof(time_t) < 4!"
+#endif
+
+#if SIZEOF_TIME_T == 4
+ /* If 32 bits, then year is 1970-2038, so no sense looking */
+ epoch_nr = MAX_EPOCH_NR;
+#else /* SIZEOF_TIME_T > 4 */
+ /* Check that the resulting year is in the correct epoch: */
+ if (1900 + tm->tm_year > curr_year - 68) break;
+
+ /* Epoch wraparound: Add 2^32 seconds! */
+ t += (time_t) 65536 << 16;
+#endif /* SIZEOF_TIME_T > 4 */
+ }
+ return tm;
+}
+
char *
prettydate(
l_fp *ts
@@ -29,15 +83,20 @@ prettydate(
LIB_GETBUF(bp);
- sec = ts->l_ui - JAN_1970;
+ sec = ts->l_ui;
msec = ts->l_uf / 4294967; /* fract / (2 ** 32 / 1000) */
- tm = localtime(&sec);
-
- (void) sprintf(bp, "%08lx.%08lx %s, %s %2d %4d %2d:%02d:%02d.%03lu",
+ tm = ntp2unix_tm(sec, 1);
+ if (!tm) {
+ (void) sprintf(bp, "%08lx.%08lx --- --- -- ---- --:--:--",
+ (u_long)ts->l_ui, (u_long)ts->l_uf);
+ }
+ else {
+ (void) sprintf(bp, "%08lx.%08lx %s, %s %2d %4d %2d:%02d:%02d.%03lu",
(u_long)ts->l_ui, (u_long)ts->l_uf, days[tm->tm_wday],
months[tm->tm_mon], tm->tm_mday, 1900 + tm->tm_year,
tm->tm_hour,tm->tm_min, tm->tm_sec, msec);
+ }
return bp;
}
@@ -54,15 +113,20 @@ gmprettydate(
LIB_GETBUF(bp);
- sec = ts->l_ui - JAN_1970;
+ sec = ts->l_ui;
msec = ts->l_uf / 4294967; /* fract / (2 ** 32 / 1000) */
- tm = gmtime(&sec);
-
- (void) sprintf(bp, "%08lx.%08lx %s, %s %2d %4d %2d:%02d:%02d.%03lu UTC",
+ tm = ntp2unix_tm(sec, 0);
+ if (!tm) {
+ (void) sprintf(bp, "%08lx.%08lx --- --- -- ---- --:--:--",
+ (u_long)ts->l_ui, (u_long)ts->l_uf);
+ }
+ else {
+ (void) sprintf(bp, "%08lx.%08lx %s, %s %2d %4d %2d:%02d:%02d.%03lu",
(u_long)ts->l_ui, (u_long)ts->l_uf, days[tm->tm_wday],
months[tm->tm_mon], tm->tm_mday, 1900 + tm->tm_year,
tm->tm_hour,tm->tm_min, tm->tm_sec, msec);
-
+ }
+
return bp;
}
diff --git a/contrib/ntp/libntp/ranny.c b/contrib/ntp/libntp/ranny.c
deleted file mode 100644
index fa555f5..0000000
--- a/contrib/ntp/libntp/ranny.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Random number generator is:
- *
- * Copyright 1988 by Rayan S. Zachariassen, all rights reserved.
- * This will be free software, but only when it is finished.
- *
- * Used in ntp by permission of the author. If copyright is
- * annoying to you, read no further. Instead, look up the reference,
- * write me an equivalent to this and send it back to me.
- */
-
-/*
- * Random number generator; see Knuth Vol 2. 2nd ed. p.27 (section 3.2.2)
- */
-#include "ntp_stdlib.h"
-
-extern time_t time P((time_t *loc));
-
-/*
- * 55 random numbers, not all even. Note we don't initialize ran_y
- * directly since I have had thoughts of putting this in an EPROM
- */
-static time_t ran_y[55];
-
-static time_t init_ran_y[55] = {
- 1860909544, 231033423, 437666411, 1349655137, 2014584962,
- 504613712, 656256107, 1246027206, 573713775, 643466871,
- 540235388, 1630565153, 443649364, 729302839, 1933991552,
- 944681982, 949111118, 406212522, 1065063137, 1712954727,
- 73280612, 787623973, 1874130997, 801658492, 73395958,
- 739165367, 596047144, 490055249, 1131094323, 662727104,
- 483614097, 844520219, 893760527, 921280508, 46691708,
- 760861842, 1425894220, 702947816, 2006889048, 1999607995,
- 1346414687, 399640789, 1482689501, 1790064052, 1128943628,
- 1269197405, 587262386, 2078054746, 1675409928, 1652325524,
- 1643525825, 1748690540, 292465849, 1370173174, 402865384
-};
-
-static int ran_j;
-static int ran_k;
-
-
-/*
- * ranp2 - return a random integer in the range 0 .. (1 << m) - 1
- */
-u_long
-ranp2(
- int m
- )
-{
- time_t r;
-
- ran_y[ran_k] += ran_y[ran_j]; /* overflow does a mod */
- r = ran_y[ran_k];
- if (ran_k-- == 0)
- ran_k = 54;
- if (ran_j-- == 0)
- ran_j = 54;
- return (u_long)(r & ((1 << m ) - 1));
-}
-
-/*
- * init_random - do initialization of random number routine
- */
-void
-init_random(void)
-{
- register int i;
- register time_t now;
-
- ran_j = 23;
- ran_k = 54;
-
- /*
- * Randomize the seed array some more. The time of day
- * should be initialized by now.
- */
- now = time((time_t *)0) | 01;
-
- for (i = 0; i < 55; ++i)
- ran_y[i] = now * init_ran_y[i]; /* overflow does a mod */
-}
diff --git a/contrib/ntp/libntp/recvbuff.c b/contrib/ntp/libntp/recvbuff.c
index 35c7e23..6665686 100644
--- a/contrib/ntp/libntp/recvbuff.c
+++ b/contrib/ntp/libntp/recvbuff.c
@@ -11,25 +11,33 @@
#include "recvbuff.h"
#include "iosignal.h"
+#include <isc/list.h>
/*
* Memory allocation
*/
-static u_long volatile full_recvbufs; /* number of recvbufs on fulllist */
-static u_long volatile free_recvbufs; /* number of recvbufs on freelist */
-static u_long volatile total_recvbufs; /* total recvbufs currently in use */
+static u_long volatile full_recvbufs; /* number of recvbufs on fulllist */
+static u_long volatile free_recvbufs; /* number of recvbufs on freelist */
+static u_long volatile total_recvbufs; /* total recvbufs currently in use */
static u_long volatile lowater_adds; /* number of times we have added memory */
+static u_long volatile buffer_shortfall;/* number of missed free receive buffers
+ between replenishments */
-static struct recvbuf *volatile freelist; /* free buffers */
-static struct recvbuf *volatile fulllist; /* lifo buffers with data */
-static struct recvbuf *volatile beginlist; /* fifo buffers with data */
+static ISC_LIST(recvbuf_t) full_recv_list; /* Currently used recv buffers */
+static ISC_LIST(recvbuf_t) free_recv_list; /* Currently unused buffers */
-#if defined(HAVE_IO_COMPLETION_PORT)
-static CRITICAL_SECTION RecvCritSection;
-# define RECV_BLOCK_IO() EnterCriticalSection(&RecvCritSection)
-# define RECV_UNBLOCK_IO() LeaveCriticalSection(&RecvCritSection)
+#if defined(SYS_WINNT)
+
+/*
+ * For Windows we need to set up a lock to manipulate the
+ * recv buffers to prevent corruption. We keep it lock for as
+ * short a time as possible
+ */
+static CRITICAL_SECTION RecvLock;
+# define LOCK() EnterCriticalSection(&RecvLock)
+# define UNLOCK() LeaveCriticalSection(&RecvLock)
#else
-# define RECV_BLOCK_IO()
-# define RECV_UNBLOCK_IO()
+# define LOCK()
+# define UNLOCK()
#endif
u_long
@@ -41,13 +49,13 @@ free_recvbuffs (void)
u_long
full_recvbuffs (void)
{
- return free_recvbufs;
+ return full_recvbufs;
}
u_long
total_recvbuffs (void)
{
- return free_recvbufs;
+ return total_recvbufs;
}
u_long
@@ -57,203 +65,182 @@ lowater_additions(void)
}
static void
-initialise_buffer(struct recvbuf *buff)
+initialise_buffer(recvbuf_t *buff)
{
- memset((char *) buff, 0, sizeof(struct recvbuf));
+ memset((char *) buff, 0, sizeof(recvbuf_t));
-#if defined HAVE_IO_COMPLETION_PORT
- buff->iocompletioninfo.overlapped.hEvent = CreateEvent(NULL, FALSE,FALSE, NULL);
+#if defined SYS_WINNT
buff->wsabuff.len = RX_BUFF_SIZE;
buff->wsabuff.buf = (char *) buff->recv_buffer;
#endif
}
static void
-create_buffers(void)
+create_buffers(int nbufs)
{
- register struct recvbuf *buf;
- int i;
- buf = (struct recvbuf *)
- emalloc(RECV_INC*sizeof(struct recvbuf));
- for (i = 0; i < RECV_INC; i++)
+ register recvbuf_t *bufp;
+ int i, abuf;
+
+ abuf = nbufs + buffer_shortfall;
+ buffer_shortfall = 0;
+
+ bufp = (recvbuf_t *) emalloc(abuf*sizeof(recvbuf_t));
+
+ for (i = 0; i < abuf; i++)
{
- initialise_buffer(buf);
- buf->next = (struct recvbuf *) freelist;
- freelist = buf;
- buf++;
+ memset((char *) bufp, 0, sizeof(recvbuf_t));
+ ISC_LIST_APPEND(free_recv_list, bufp, link);
+ bufp++;
+ free_recvbufs++;
+ total_recvbufs++;
}
-
- free_recvbufs += RECV_INC;
- total_recvbufs += RECV_INC;
lowater_adds++;
}
void
init_recvbuff(int nbufs)
{
- register struct recvbuf *buf;
- int i;
/*
* Init buffer free list and stat counters
*/
- freelist = 0;
-
- buf = (struct recvbuf *)
- emalloc(nbufs*sizeof(struct recvbuf));
- for (i = 0; i < nbufs; i++)
- {
- initialise_buffer(buf);
- buf->next = (struct recvbuf *) freelist;
- freelist = buf;
- buf++;
- }
-
- fulllist = 0;
- free_recvbufs = total_recvbufs = nbufs;
+ ISC_LIST_INIT(full_recv_list);
+ ISC_LIST_INIT(free_recv_list);
+ free_recvbufs = total_recvbufs = 0;
full_recvbufs = lowater_adds = 0;
-#if defined(HAVE_IO_COMPLETION_PORT)
- InitializeCriticalSection(&RecvCritSection);
+ create_buffers(nbufs);
+
+#if defined(SYS_WINNT)
+ InitializeCriticalSection(&RecvLock);
#endif
}
-
/*
- * getrecvbufs - get receive buffers which have data in them
- *
- *
+ * freerecvbuf - make a single recvbuf available for reuse
*/
-
-struct recvbuf *
-getrecvbufs(void)
+void
+freerecvbuf(recvbuf_t *rb)
{
- struct recvbuf *rb = NULL; /* nothing has arrived */;
-
- RECV_BLOCK_IO();
- if (full_recvbufs == 0)
- {
-#ifdef DEBUG
- if (debug > 4)
- printf("getrecvbufs called, no action here\n");
-#endif
+ if (rb == NULL) {
+ msyslog(LOG_ERR, "freerecvbuff received NULL buffer");
+ return;
}
- else {
- /*
- * Get the fulllist chain and mark it empty
- */
-#ifdef DEBUG
- if (debug > 4)
- printf("getrecvbufs returning %ld buffers\n", full_recvbufs);
+ LOCK();
+ (rb->used)--;
+ if (rb->used != 0)
+ msyslog(LOG_ERR, "******** freerecvbuff non-zero usage: %d *******", rb->used);
+ ISC_LIST_APPEND(free_recv_list, rb, link);
+#if defined SYS_WINNT
+ rb->wsabuff.len = RX_BUFF_SIZE;
+ rb->wsabuff.buf = (char *) rb->recv_buffer;
#endif
- rb = beginlist;
- fulllist = 0;
- full_recvbufs = 0;
-
- /*
- * Check to see if we're below the low water mark.
- */
- if (free_recvbufs <= RECV_LOWAT)
- {
- if (total_recvbufs >= RECV_TOOMANY)
- msyslog(LOG_ERR, "too many recvbufs allocated (%ld)",
- total_recvbufs);
- else
- {
- create_buffers();
- }
- }
- }
- RECV_UNBLOCK_IO();
-
- /*
- * Return the chain
- */
- return rb;
+ free_recvbufs++;
+ UNLOCK();
}
-/*
- * freerecvbuf - make a single recvbuf available for reuse
- */
+
void
-freerecvbuf(
- struct recvbuf *rb
- )
+add_full_recv_buffer(recvbuf_t *rb)
{
- RECV_BLOCK_IO();
- BLOCKIO();
- rb->next = (struct recvbuf *) freelist;
- freelist = rb;
- free_recvbufs++;
- UNBLOCKIO();
- RECV_UNBLOCK_IO();
+ if (rb == NULL) {
+ msyslog(LOG_ERR, "add_full_recv_buffer received NULL buffer");
+ return;
+ }
+ LOCK();
+ ISC_LIST_APPEND(full_recv_list, rb, link);
+ full_recvbufs++;
+ UNLOCK();
}
-
-void
-add_full_recv_buffer(
- struct recvbuf *rb
- )
+recvbuf_t *
+get_free_recv_buffer(void)
{
- RECV_BLOCK_IO();
- if (full_recvbufs == 0)
+ recvbuf_t * buffer = NULL;
+ LOCK();
+ buffer = ISC_LIST_HEAD(free_recv_list);
+ if (buffer != NULL)
{
- beginlist = rb;
- rb->next = 0;
+ ISC_LIST_DEQUEUE(free_recv_list, buffer, link);
+ free_recvbufs--;
+ initialise_buffer(buffer);
+ (buffer->used)++;
}
else
{
- rb->next = fulllist->next;
- fulllist->next = rb;
+ buffer_shortfall++;
}
- fulllist = rb;
- full_recvbufs++;
-
- RECV_UNBLOCK_IO();
+ UNLOCK();
+ return (buffer);
}
-struct recvbuf *
-get_free_recv_buffer(void)
+#ifdef HAVE_IO_COMPLETION_PORT
+recvbuf_t *
+get_free_recv_buffer_alloc(void)
{
- struct recvbuf * buffer = NULL;
- RECV_BLOCK_IO();
- if (free_recvbufs <= RECV_LOWAT)
- {
- if (total_recvbufs >= RECV_TOOMANY) {
- msyslog(LOG_ERR, "too many recvbufs allocated (%ld)",
- total_recvbufs);
- }
- else
- {
- create_buffers();
- }
- }
-
- if (free_recvbufs > 0)
+ recvbuf_t * buffer = get_free_recv_buffer();
+ if (buffer == NULL)
{
- buffer = freelist;
- freelist = buffer->next;
- buffer->next = NULL;
- --free_recvbufs;
+ create_buffers(RECV_INC);
+ buffer = get_free_recv_buffer();
}
-
- RECV_UNBLOCK_IO();
- return buffer;
+ return (buffer);
}
+#endif
-struct recvbuf *
+recvbuf_t *
get_full_recv_buffer(void)
{
- struct recvbuf * buffer = NULL;
- RECV_BLOCK_IO();
- if (full_recvbufs > 0) {
+ recvbuf_t *rbuf;
+ LOCK();
+
+#ifdef HAVE_SIGNALED_IO
+ /*
+ * make sure there are free buffers when we
+ * wander off to do lengthy paket processing with
+ * any buffer we grab from the full list.
+ *
+ * fixes malloc() interrupted by SIGIO risk
+ * (Bug 889)
+ */
+ rbuf = ISC_LIST_HEAD(free_recv_list);
+ if (rbuf == NULL || buffer_shortfall > 0) {
+ /*
+ * try to get us some more buffers
+ */
+ create_buffers(RECV_INC);
+ }
+#endif
+
+ /*
+ * try to grab a full buffer
+ */
+ rbuf = ISC_LIST_HEAD(full_recv_list);
+ if (rbuf != NULL)
+ {
+ ISC_LIST_DEQUEUE(full_recv_list, rbuf, link);
--full_recvbufs;
- buffer = beginlist;
- beginlist = buffer->next;
- buffer->next = NULL;
}
- RECV_UNBLOCK_IO();
- return buffer;
+ else
+ {
+ /*
+ * Make sure we reset the full count to 0
+ */
+ full_recvbufs = 0;
+ }
+ UNLOCK();
+ return (rbuf);
+}
+
+/*
+ * Checks to see if there are buffers to process
+ */
+isc_boolean_t has_full_recv_buffer(void)
+{
+ if (ISC_LIST_HEAD(full_recv_list) != NULL)
+ return (ISC_TRUE);
+ else
+ return (ISC_FALSE);
}
diff --git a/contrib/ntp/libntp/socktoa.c b/contrib/ntp/libntp/socktoa.c
index 34de784..fb41b22 100644
--- a/contrib/ntp/libntp/socktoa.c
+++ b/contrib/ntp/libntp/socktoa.c
@@ -6,7 +6,6 @@
#include <sys/types.h>
#include <sys/socket.h>
-#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
@@ -31,10 +30,14 @@ socktoa(
LIB_GETBUF(buffer);
- if (sock == NULL) printf("null");
+ if (sock == NULL)
+ strcpy(buffer, "null");
+ else
+ {
- switch(sock->ss_family) {
+ switch(sock->ss_family) {
+ default:
case AF_INET :
inet_ntop(AF_INET, &GET_INADDR(*sock), buffer,
LIB_BUFLENGTH);
@@ -43,6 +46,11 @@ socktoa(
case AF_INET6 :
inet_ntop(AF_INET6, &GET_INADDR6(*sock), buffer,
LIB_BUFLENGTH);
+#if 0
+ default:
+ strcpy(buffer, "unknown");
+#endif
+ }
}
return buffer;
}
diff --git a/contrib/ntp/libntp/socktohost.c b/contrib/ntp/libntp/socktohost.c
index 7a3b30f..7aafdc7 100644
--- a/contrib/ntp/libntp/socktohost.c
+++ b/contrib/ntp/libntp/socktohost.c
@@ -3,7 +3,6 @@
*/
#include <sys/types.h>
#include <sys/socket.h>
-#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
diff --git a/contrib/ntp/libntp/statestr.c b/contrib/ntp/libntp/statestr.c
index 3acc5c9..85552b3 100644
--- a/contrib/ntp/libntp/statestr.c
+++ b/contrib/ntp/libntp/statestr.c
@@ -128,17 +128,19 @@ struct codestring crypto_codes[] = {
{ XEVNT_LEN & ~CRPT_EVENT, "bad_field_format_or_length" },
{ XEVNT_TSP & ~CRPT_EVENT, "bad_timestamp" },
{ XEVNT_FSP & ~CRPT_EVENT, "bad_filestamp" },
- { XEVNT_PUB & ~CRPT_EVENT, "bad_procedure_or_data" },
+ { XEVNT_PUB & ~CRPT_EVENT, "bad_or_missing_public_key" },
{ XEVNT_MD & ~CRPT_EVENT, "unsupported_digest_type" },
{ XEVNT_KEY & ~CRPT_EVENT, "unsupported_identity_type" },
{ XEVNT_SGL & ~CRPT_EVENT, "bad_signature_length" },
{ XEVNT_SIG & ~CRPT_EVENT, "signature_not_verified" },
- { XEVNT_VFY & ~CRPT_EVENT, "certificate not verified" },
- { XEVNT_PER & ~CRPT_EVENT, "certificate_expired" },
+ { XEVNT_VFY & ~CRPT_EVENT, "certificate_not_verified" },
+ { XEVNT_PER & ~CRPT_EVENT, "host certificate_expired" },
{ XEVNT_CKY & ~CRPT_EVENT, "bad_or_missing_cookie" },
{ XEVNT_DAT & ~CRPT_EVENT, "bad_or_missing_leapsecond_table" },
{ XEVNT_CRT & ~CRPT_EVENT, "bad_or_missing_certificate" },
- { XEVNT_ID & ~CRPT_EVENT, "bad or missing identification" },
+ { XEVNT_ID & ~CRPT_EVENT, "bad_or_missing_group_key" },
+ { XEVNT_ERR & ~CRPT_EVENT, "protocol_error" },
+ { XEVNT_SRV & ~CRPT_EVENT, "server certificate expired" },
{ -1, "crypto" }
};
#endif /* OPENSSL */
diff --git a/contrib/ntp/libntp/systime.c b/contrib/ntp/libntp/systime.c
index ac6aa98..4539b5f 100644
--- a/contrib/ntp/libntp/systime.c
+++ b/contrib/ntp/libntp/systime.c
@@ -9,9 +9,11 @@
#include "ntp_syslog.h"
#include "ntp_unixtime.h"
#include "ntp_stdlib.h"
+#include "ntp_random.h"
+#include "ntpd.h" /* for sys_precision */
#ifdef SIM
-#include "ntpsim.h"
+# include "ntpsim.h"
#endif /*SIM */
#ifdef HAVE_SYS_PARAM_H
@@ -33,11 +35,15 @@
* made to minimize errors by always rounding toward zero and amortizing
* adjustment residues. By default the adjustment quantum is 1 us for
* the usual Unix tickadj() system call, but this can be increased if
- * necessary by a configuration command. For instance, when the
+ * necessary by the tick configuration command. For instance, when the
* adjtime() quantum is a clock tick for a 100-Hz clock, the quantum
* should be 10 ms.
*/
-double sys_tick = 1e-6; /* tickadj() quantum (s) */
+#if defined RELIANTUNIX_CLOCK || defined SCO5_CLOCK
+double sys_tick = 10e-3; /* 10 ms tickadj() */
+#else
+double sys_tick = 1e-6; /* 1 us tickadj() */
+#endif
double sys_residual = 0; /* adjustment residue (s) */
#ifndef SIM
@@ -57,6 +63,8 @@ get_systime(
/*
* Convert Unix clock from seconds and nanoseconds to seconds.
+ * The bottom is only two bits down, so no need for fuzz.
+ * Some systems don't have that level of precision, however...
*/
# ifdef HAVE_CLOCK_GETTIME
clock_gettime(CLOCK_REALTIME, &ts);
@@ -71,6 +79,7 @@ get_systime(
/*
* Convert Unix clock from seconds and microseconds to seconds.
+ * Add in unbiased random fuzz beneath the microsecond.
*/
GETTIMEOFDAY(&tv, NULL);
now->l_i = tv.tv_sec + JAN_1970;
@@ -79,13 +88,22 @@ get_systime(
#endif /* HAVE_CLOCK_GETTIME || HAVE_GETCLOCK */
/*
+ * ntp_random() produces 31 bits (always nonnegative).
+ * This bit is done only after the precision has been
+ * determined.
+ */
+ if (sys_precision != 0)
+ dtemp += (ntp_random() / FRAC - .5) / (1 <<
+ -sys_precision);
+
+ /*
* Renormalize to seconds past 1900 and fraction.
*/
dtemp += sys_residual;
if (dtemp >= 1) {
dtemp -= 1;
now->l_i++;
- } else if (dtemp < -1) {
+ } else if (dtemp < 0) {
dtemp += 1;
now->l_i--;
}
@@ -135,10 +153,13 @@ adj_systime(
if (isneg) {
adjtv.tv_sec = -adjtv.tv_sec;
adjtv.tv_usec = -adjtv.tv_usec;
+ sys_residual = -sys_residual;
}
- if (adjtime(&adjtv, &oadjtv) < 0) {
- msyslog(LOG_ERR, "adj_systime: %m");
- return (0);
+ if (adjtv.tv_sec != 0 || adjtv.tv_usec != 0) {
+ if (adjtime(&adjtv, &oadjtv) < 0) {
+ msyslog(LOG_ERR, "adj_systime: %m");
+ return (0);
+ }
}
return (1);
}
@@ -173,11 +194,11 @@ step_systime(
(double)adjtv.tv_sec) * 1e6 + .5);
}
#if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_GETCLOCK)
-#ifdef HAVE_CLOCK_GETTIME
+# ifdef HAVE_CLOCK_GETTIME
(void) clock_gettime(CLOCK_REALTIME, &ts);
-#else
+# else
(void) getclock(TIMEOFDAY, &ts);
-#endif
+# endif
timetv.tv_sec = ts.tv_sec;
timetv.tv_usec = ts.tv_nsec / 1000;
#else /* not HAVE_GETCLOCK */
@@ -406,13 +427,8 @@ adj_systime(
adjtv.tv_usec = -adjtv.tv_usec;
sys_residual = -sys_residual;
}
-
- /*
- * We went to all the trouble just to be sure the emulation is
- * precise. We now return to our regularly scheduled concert.
- */
- ntp_node.clk_time -= adjtv.tv_sec + adjtv.tv_usec / 1e6;
- return (1);
+ ntp_node.adj = now;
+ return (1);
}
@@ -424,7 +440,12 @@ step_systime(
double now /* step adjustment (s) */
)
{
- ntp_node.adj = now;
+#ifdef DEBUG
+ if (debug)
+ printf("step_systime: time %.6f adj %.6f\n",
+ ntp_node.ntp_time, now);
+#endif
+ ntp_node.ntp_time += now;
return (1);
}
diff --git a/contrib/ntp/libopts/COPYING.lgpl b/contrib/ntp/libopts/COPYING.lgpl
new file mode 100644
index 0000000..129c5de
--- /dev/null
+++ b/contrib/ntp/libopts/COPYING.lgpl
@@ -0,0 +1,502 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/contrib/ntp/libopts/COPYING.mbsd b/contrib/ntp/libopts/COPYING.mbsd
new file mode 100644
index 0000000..8a70427
--- /dev/null
+++ b/contrib/ntp/libopts/COPYING.mbsd
@@ -0,0 +1,26 @@
+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.
+
+ 3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
diff --git a/contrib/ntp/scripts/support/conf/hp300.hp300 b/contrib/ntp/libopts/MakeDefs.inc
index e69de29..e69de29 100644
--- a/contrib/ntp/scripts/support/conf/hp300.hp300
+++ b/contrib/ntp/libopts/MakeDefs.inc
diff --git a/contrib/ntp/libopts/Makefile.am b/contrib/ntp/libopts/Makefile.am
new file mode 100644
index 0000000..5f138614
--- /dev/null
+++ b/contrib/ntp/libopts/Makefile.am
@@ -0,0 +1,24 @@
+## LIBOPTS Makefile
+MAINTAINERCLEANFILES = Makefile.in
+if INSTALL_LIBOPTS
+lib_LTLIBRARIES = libopts.la
+else
+noinst_LTLIBRARIES = libopts.la
+endif
+libopts_la_SOURCES = libopts.c
+libopts_la_CPPFLAGS = -I$(top_srcdir)
+libopts_la_LDFLAGS = -version-info 29:0:4
+EXTRA_DIST = \
+ COPYING.lgpl COPYING.mbsd MakeDefs.inc \
+ README autoopts/options.h autoopts/usage-txt.h \
+ autoopts.c autoopts.h boolean.c \
+ compat/windows-config.h compat/compat.h compat/pathfind.c \
+ compat/snprintf.c compat/strdup.c compat/strchr.c \
+ configfile.c cook.c enumeration.c \
+ environment.c genshell.c genshell.h \
+ load.c m4/libopts.m4 m4/liboptschk.m4 \
+ makeshell.c nested.c numeric.c \
+ pgusage.c proto.h putshell.c \
+ restore.c save.c sort.c \
+ stack.c streqvcmp.c text_mmap.c \
+ tokenize.c usage.c version.c
diff --git a/contrib/ntp/libopts/Makefile.in b/contrib/ntp/libopts/Makefile.in
new file mode 100644
index 0000000..06b52a2
--- /dev/null
+++ b/contrib/ntp/libopts/Makefile.in
@@ -0,0 +1,528 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# 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.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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 = @build@
+host_triplet = @host@
+subdir = libopts
+DIST_COMMON = README $(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/hs_ulong_const.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 =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
+libopts_la_LIBADD =
+am_libopts_la_OBJECTS = libopts_la-libopts.lo
+libopts_la_OBJECTS = $(am_libopts_la_OBJECTS)
+@INSTALL_LIBOPTS_FALSE@am_libopts_la_rpath =
+@INSTALL_LIBOPTS_TRUE@am_libopts_la_rpath = -rpath $(libdir)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libopts_la_SOURCES)
+DIST_SOURCES = $(libopts_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARLIB_DIR = @ARLIB_DIR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHUTEST = @CHUTEST@
+CLKTEST = @CLKTEST@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCFD = @DCFD@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EF_LIBS = @EF_LIBS@
+EF_PROGS = @EF_PROGS@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LCRYPTO = @LCRYPTO@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
+LIBPARSE = @LIBPARSE@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
+MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
+MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
+MAKE_LIBPARSE = @MAKE_LIBPARSE@
+MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
+MAKE_NTPDSIM = @MAKE_NTPDSIM@
+MAKE_NTPTIME = @MAKE_NTPTIME@
+MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
+MAKE_TICKADJ = @MAKE_TICKADJ@
+MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
+OBJEXT = @OBJEXT@
+OPENSSL = @OPENSSL@
+OPENSSL_INC = @OPENSSL_INC@
+OPENSSL_LIB = @OPENSSL_LIB@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_PERL = @PATH_PERL@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PATH_SH = @PATH_SH@
+PROPDELAY = @PROPDELAY@
+RANLIB = @RANLIB@
+READLINE_LIBS = @READLINE_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TESTDCF = @TESTDCF@
+U = @U@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+MAINTAINERCLEANFILES = Makefile.in
+@INSTALL_LIBOPTS_TRUE@lib_LTLIBRARIES = libopts.la
+@INSTALL_LIBOPTS_FALSE@noinst_LTLIBRARIES = libopts.la
+libopts_la_SOURCES = libopts.c
+libopts_la_CPPFLAGS = -I$(top_srcdir)
+libopts_la_LDFLAGS = -version-info 29:0:4
+EXTRA_DIST = \
+ COPYING.lgpl COPYING.mbsd MakeDefs.inc \
+ README autoopts/options.h autoopts/usage-txt.h \
+ autoopts.c autoopts.h boolean.c \
+ compat/windows-config.h compat/compat.h compat/pathfind.c \
+ compat/snprintf.c compat/strdup.c compat/strchr.c \
+ configfile.c cook.c enumeration.c \
+ environment.c genshell.c genshell.h \
+ load.c m4/libopts.m4 m4/liboptschk.m4 \
+ makeshell.c nested.c numeric.c \
+ pgusage.c proto.h putshell.c \
+ restore.c save.c sort.c \
+ stack.c streqvcmp.c text_mmap.c \
+ tokenize.c usage.c version.c
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(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 libopts/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --foreign libopts/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
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libopts.la: $(libopts_la_OBJECTS) $(libopts_la_DEPENDENCIES)
+ $(LINK) $(am_libopts_la_rpath) $(libopts_la_LDFLAGS) $(libopts_la_OBJECTS) $(libopts_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopts_la-libopts.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libopts_la-libopts.lo: libopts.c
+@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libopts_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libopts_la-libopts.lo -MD -MP -MF "$(DEPDIR)/libopts_la-libopts.Tpo" -c -o libopts_la-libopts.lo `test -f 'libopts.c' || echo '$(srcdir)/'`libopts.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libopts_la-libopts.Tpo" "$(DEPDIR)/libopts_la-libopts.Plo"; else rm -f "$(DEPDIR)/libopts_la-libopts.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libopts.c' object='libopts_la-libopts.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libopts_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libopts_la-libopts.lo `test -f 'libopts.c' || echo '$(srcdir)/'`libopts.c
+
+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)
+ $(mkdir_p) $(distdir)/autoopts $(distdir)/compat $(distdir)/m4
+ @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 $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+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."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ clean-noinstLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile 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-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
+ ctags distclean distclean-compile 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-libLTLIBRARIES install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-info-am uninstall-libLTLIBRARIES
+
+# 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/contrib/ntp/libopts/README b/contrib/ntp/libopts/README
new file mode 100644
index 0000000..7cbe0b0
--- /dev/null
+++ b/contrib/ntp/libopts/README
@@ -0,0 +1,93 @@
+ THIS TARBALL IS NOT A FULL DISTRIBUTION.
+
+The contents of this tarball is designed to be incorporated into
+software packages that utilize the AutoOpts option automation
+package and are intended to be installed on systems that may not
+have libopts installed. It is redistributable under the terms
+of either the LGPL (see COPYING.lgpl) or under the terms of
+the advertising clause free BSD license (see COPYING.mbsd).
+
+Usage Instructions for autoconf/automake/libtoolized projects:
+
+1. Install the unrolled tarball into your package source tree,
+ copying ``libopts.m4'' to your autoconf macro directory.
+
+ In your bootstrap (pre-configure) script, you can do this:
+
+ rm -rf libopts libopts-*
+ gunzip -c `autoopts-config libsrc` | tar -xvf -
+ mv -f libopts-*.*.* libopts
+ cp -fp libopts/m4/*.m4 m4/.
+
+ I tend to put my configure auxiliary files in "m4".
+ Whatever directory you choose, if it is not ".", then
+ be sure to tell autoconf about it with:
+
+ AC_CONFIG_AUX_DIR(m4)
+
+ This is one macro where you *MUST* remember to *NOT* quote
+ the argument. If you do, automake will get lost.
+
+2. Add the following to your ``configure.ac'' file:
+
+ LIBOPTS_CHECK
+
+ or:
+
+ LIBOPTS_CHECK([relative/path/to/libopts])
+
+ This macro will automatically invoke
+
+ AC_CONFIG_FILES( [relative/path/to/libopts/Makefile] )
+
+ The default ``relative/path/to/libopts'' is simply
+ ``libopts''.
+
+3. Add the following to your top level ``Makefile.am'' file:
+
+ if NEED_LIBOPTS
+ SUBDIRS += $(LIBOPTS_DIR)
+ endif
+
+ where ``<...>'' can be whatever other files or directories
+ you may need. The SUBDIRS must be properly ordered.
+ *PLEASE NOTE* it is crucial that the SUBDIRS be set under the
+ control of an automake conditional. To work correctly,
+ automake has to know the range of possible values of SUBDIRS.
+ It's a magical name with magical properties. ``NEED_LIBOPTS''
+ will be correctly set by the ``LIBOPTS_CHECK'' macro, above.
+
+4. Add ``$(LIBOPTS_CFLAGS)'' to relevant compiler flags and
+ ``$(LIBOPTS_LDADD)'' to relevant link options whereever
+ you need them in your build tree.
+
+5. Make sure your object files explicitly depend upon the
+ generated options header file. e.g.:
+
+ $(prog_OBJECTS) : prog-opts.h
+ prog-opts.h : prog-opts.c
+ prog-opts.c : prog-opts.def
+ autogen prog-opts.def
+
+6. *OPTIONAL* --
+ If you are creating man pages and texi documentation from
+ the program options, you will need these rules somewhere, too:
+
+ man_MANS = prog.1
+ prog.1 : prog-opts.def
+ autogen -Tagman1.tpl -bprog prog-opts.def
+
+ prog-invoke.texi : prog-opts.def
+ autogen -Taginfo.tpl -bprog-invoke prog-opts.def
+
+If your package does not utilize the auto* tools, then you
+will need to hand craft the rules for building the library.
+
+LICENSING:
+
+This material is copyright 1993-2007 by Bruce Korb.
+You are licensed to use this under the terms of either
+the GNU Lesser General Public License (see: COPYING.lgpl), or,
+at your option, the modified Berkeley Software Distribution
+License (see: COPYING.mbsd). Both of these files should be
+included with this tarball.
diff --git a/contrib/ntp/libopts/autoopts.c b/contrib/ntp/libopts/autoopts.c
new file mode 100644
index 0000000..139841b
--- /dev/null
+++ b/contrib/ntp/libopts/autoopts.c
@@ -0,0 +1,1120 @@
+
+/*
+ * $Id: autoopts.c,v 4.25 2007/04/15 19:01:18 bkorb Exp $
+ * Time-stamp: "2007-04-15 11:10:40 bkorb"
+ *
+ * This file contains all of the routines that must be linked into
+ * an executable to use the generated option processing. The optional
+ * routines are in separately compiled modules so that they will not
+ * necessarily be linked in.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+static char const zNil[] = "";
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static tSuccess
+findOptDesc( tOptions* pOpts, tOptState* pOptState );
+
+static tSuccess
+nextOption( tOptions* pOpts, tOptState* pOptState );
+
+static tSuccess
+doPresets( tOptions* pOpts );
+
+static int
+checkConsistency( tOptions* pOpts );
+/* = = = END-STATIC-FORWARD = = = */
+
+LOCAL void *
+ao_malloc( size_t sz )
+{
+ void * res = malloc(sz);
+ if (res == NULL) {
+ fprintf( stderr, "malloc of %d bytes failed\n", (int)sz );
+ exit( EXIT_FAILURE );
+ }
+ return res;
+}
+#undef malloc
+#define malloc(_s) ao_malloc(_s)
+
+LOCAL void *
+ao_realloc( void *p, size_t sz )
+{
+ void * res = realloc(p, sz);
+ if (res == NULL) {
+ fprintf( stderr, "realloc of %d bytes at 0x%p failed\n", (int)sz, p );
+ exit( EXIT_FAILURE );
+ }
+ return res;
+}
+#undef realloc
+#define realloc(_p,_s) ao_realloc(_p,_s)
+
+
+LOCAL void
+ao_free( void *p )
+{
+ if (p != NULL)
+ free(p);
+}
+#undef free
+#define free(_p) ao_free(_p)
+
+
+LOCAL char *
+ao_strdup( char const *str )
+{
+ char * res = strdup(str);
+ if (res == NULL) {
+ fprintf( stderr, "strdup of %d byte string failed\n", (int)strlen(str) );
+ exit( EXIT_FAILURE );
+ }
+ return res;
+}
+#undef strdup
+#define strdup(_p) ao_strdup(_p)
+
+#ifndef HAVE_PATHFIND
+# include "compat/pathfind.c"
+#endif
+
+#ifndef HAVE_SNPRINTF
+# include "compat/snprintf.c"
+#endif
+
+#ifndef HAVE_STRDUP
+# include "compat/strdup.c"
+#endif
+
+#ifndef HAVE_STRCHR
+# include "compat/strchr.c"
+#endif
+
+/*
+ * handleOption
+ *
+ * This routine handles equivalencing, sets the option state flags and
+ * invokes the handler procedure, if any.
+ */
+LOCAL tSuccess
+handleOption( tOptions* pOpts, tOptState* pOptState )
+{
+ /*
+ * Save a copy of the option procedure pointer.
+ * If this is an equivalence class option, we still want this proc.
+ */
+ tOptDesc* pOD = pOptState->pOD;
+ tOptProc* pOP = pOD->pOptProc;
+ if (pOD->fOptState & OPTST_ALLOC_ARG)
+ AGFREE(pOD->optArg.argString);
+
+ pOD->optArg.argString = pOptState->pzOptArg;
+
+ /*
+ * IF we are presetting options, then we will ignore any un-presettable
+ * options. They are the ones either marked as such.
+ */
+ if ( ((pOpts->fOptSet & OPTPROC_PRESETTING) != 0)
+ && ((pOD->fOptState & OPTST_NO_INIT) != 0)
+ )
+ return PROBLEM;
+
+ /*
+ * IF this is an equivalence class option,
+ * THEN
+ * Save the option value that got us to this option
+ * entry. (It may not be pOD->optChar[0], if this is an
+ * equivalence entry.)
+ * set the pointer to the equivalence class base
+ */
+ if (pOD->optEquivIndex != NO_EQUIVALENT) {
+ tOptDesc* p = pOpts->pOptDesc + pOD->optEquivIndex;
+
+ /*
+ * IF the current option state has not been defined (set on the
+ * command line), THEN we will allow continued resetting of
+ * the value. Once "defined", then it must not change.
+ */
+ if ((pOD->fOptState & OPTST_DEFINED) != 0) {
+ /*
+ * The equivalenced-to option has been found on the command
+ * line before. Make sure new occurrences are the same type.
+ *
+ * IF this option has been previously equivalenced and
+ * it was not the same equivalenced-to option,
+ * THEN we have a usage problem.
+ */
+ if (p->optActualIndex != pOD->optIndex) {
+ fprintf( stderr, (char*)zMultiEquiv, p->pz_Name, pOD->pz_Name,
+ (pOpts->pOptDesc + p->optActualIndex)->pz_Name);
+ return FAILURE;
+ }
+ } else {
+ /*
+ * Set the equivalenced-to actual option index to no-equivalent
+ * so that we set all the entries below. This option may either
+ * never have been selected before, or else it was selected by
+ * some sort of "presetting" mechanism.
+ */
+ p->optActualIndex = NO_EQUIVALENT;
+ }
+
+ if (p->optActualIndex != pOD->optIndex) {
+ /*
+ * First time through, copy over the state
+ * and add in the equivalence flag
+ */
+ p->optActualValue = pOD->optValue;
+ p->optActualIndex = pOD->optIndex;
+ pOptState->flags |= OPTST_EQUIVALENCE;
+ }
+
+ /*
+ * Copy the most recent option argument. set membership state
+ * is kept in ``p->optCookie''. Do not overwrite.
+ */
+ p->optArg.argString = pOD->optArg.argString;
+ pOD = p;
+
+ } else {
+ pOD->optActualValue = pOD->optValue;
+ pOD->optActualIndex = pOD->optIndex;
+ }
+
+ pOD->fOptState &= OPTST_PERSISTENT_MASK;
+ pOD->fOptState |= (pOptState->flags & ~OPTST_PERSISTENT_MASK);
+
+ /*
+ * Keep track of count only for DEFINED (command line) options.
+ * IF we have too many, build up an error message and bail.
+ */
+ if ( (pOD->fOptState & OPTST_DEFINED)
+ && (++pOD->optOccCt > pOD->optMaxCt) ) {
+
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0) {
+ char const * pzEqv =
+ (pOD->optEquivIndex != NO_EQUIVALENT) ? zEquiv : zNil;
+
+ fputs( zErrOnly, stderr );
+
+ if (pOD->optMaxCt > 1)
+ fprintf(stderr, zAtMost, pOD->optMaxCt, pOD->pz_Name, pzEqv);
+ else
+ fprintf(stderr, zOnlyOne, pOD->pz_Name, pzEqv);
+ }
+
+ return FAILURE;
+ }
+
+ /*
+ * If provided a procedure to call, call it
+ */
+ if (pOP != (tpOptProc)NULL)
+ (*pOP)( pOpts, pOD );
+
+ return SUCCESS;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * HUNT FOR OPTIONS IN THE ARGUMENT LIST
+ *
+ * The next four procedures are "private" to nextOption().
+ * nextOption() uses findOptDesc() to find the next descriptor and it, in
+ * turn, uses longOptionFind() and shortOptionFind() to actually do the hunt.
+ *
+ * longOptionFind
+ *
+ * Find the long option descriptor for the current option
+ */
+LOCAL tSuccess
+longOptionFind( tOptions* pOpts, char* pzOptName, tOptState* pOptState )
+{
+ ag_bool disable = AG_FALSE;
+ char* pzEq = strchr( pzOptName, '=' );
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int idx = 0;
+ int idxLim = pOpts->optCt;
+ int matchCt = 0;
+ int matchIdx = 0;
+ int nameLen;
+
+ /*
+ * IF the value is attached to the name,
+ * THEN clip it off.
+ * Either way, figure out how long our name is
+ */
+ if (pzEq != NULL) {
+ nameLen = (int)(pzEq - pzOptName);
+ *pzEq = NUL;
+ } else nameLen = strlen( pzOptName );
+
+ do {
+ if (SKIP_OPT(pOD))
+ continue;
+
+ if (strneqvcmp( pzOptName, pOD->pz_Name, nameLen ) == 0) {
+ /*
+ * IF we have a complete match
+ * THEN it takes priority over any already located partial
+ */
+ if (pOD->pz_Name[ nameLen ] == NUL) {
+ matchCt = 1;
+ matchIdx = idx;
+ break;
+ }
+ }
+
+ /*
+ * IF there is a disable name
+ * *AND* no argument value has been supplied
+ * (disabled options may have no argument)
+ * *AND* the option name matches the disable name
+ * THEN ...
+ */
+ else if ( (pOD->pz_DisableName != NULL)
+ && (strneqvcmp(pzOptName, pOD->pz_DisableName, nameLen) == 0)
+ ) {
+ disable = AG_TRUE;
+
+ /*
+ * IF we have a complete match
+ * THEN it takes priority over any already located partial
+ */
+ if (pOD->pz_DisableName[ nameLen ] == NUL) {
+ matchCt = 1;
+ matchIdx = idx;
+ break;
+ }
+ }
+
+ else
+ continue;
+
+ /*
+ * We found a partial match, either regular or disabling.
+ * Remember the index for later.
+ */
+ matchIdx = idx;
+
+ if (++matchCt > 1)
+ break;
+
+ } while (pOD++, (++idx < idxLim));
+
+ if (pzEq != NULL)
+ *(pzEq++) = '=';
+
+ /*
+ * Make sure we either found an exact match or found only one partial
+ */
+ if (matchCt == 1) {
+ /*
+ * IF we found a disablement name,
+ * THEN set the bit in the callers' flag word
+ */
+ if (disable)
+ pOptState->flags |= OPTST_DISABLED;
+
+ pOptState->pOD = pOpts->pOptDesc + matchIdx;
+ pOptState->pzOptArg = pzEq;
+ pOptState->optType = TOPT_LONG;
+ return SUCCESS;
+ }
+
+ /*
+ * IF there is no equal sign
+ * *AND* we are using named arguments
+ * *AND* there is a default named option,
+ * THEN return that option.
+ */
+ if ( (pzEq == NULL)
+ && NAMED_OPTS(pOpts)
+ && (pOpts->specOptIdx.default_opt != NO_EQUIVALENT)) {
+ pOptState->pOD = pOpts->pOptDesc + pOpts->specOptIdx.default_opt;
+
+ pOptState->pzOptArg = pzOptName;
+ pOptState->optType = TOPT_DEFAULT;
+ return SUCCESS;
+ }
+
+ /*
+ * IF we are to stop on errors (the default, actually)
+ * THEN call the usage procedure.
+ */
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0) {
+ fprintf( stderr, zIllOptStr, pOpts->pzProgPath,
+ (matchCt == 0) ? zIllegal : zAmbiguous, pzOptName );
+ (*pOpts->pUsageProc)( pOpts, EXIT_FAILURE );
+ }
+
+ return FAILURE;
+}
+
+
+/*
+ * shortOptionFind
+ *
+ * Find the short option descriptor for the current option
+ */
+LOCAL tSuccess
+shortOptionFind( tOptions* pOpts, uint_t optValue, tOptState* pOptState )
+{
+ tOptDesc* pRes = pOpts->pOptDesc;
+ int ct = pOpts->optCt;
+
+ /*
+ * Search the option list
+ */
+ for (;;) {
+ /*
+ * IF the values match,
+ * THEN we stop here
+ */
+ if ((! SKIP_OPT(pRes)) && (optValue == pRes->optValue)) {
+ pOptState->pOD = pRes;
+ pOptState->optType = TOPT_SHORT;
+ return SUCCESS;
+ }
+
+ /*
+ * Advance to next option description
+ */
+ pRes++;
+
+ /*
+ * IF we have searched everything, ...
+ */
+ if (--ct <= 0)
+ break;
+ }
+
+ /*
+ * IF the character value is a digit
+ * AND there is a special number option ("-n")
+ * THEN the result is the "option" itself and the
+ * option is the specially marked "number" option.
+ */
+ if ( isdigit( optValue )
+ && (pOpts->specOptIdx.number_option != NO_EQUIVALENT) ) {
+ pOptState->pOD = \
+ pRes = pOpts->pOptDesc + pOpts->specOptIdx.number_option;
+ (pOpts->pzCurOpt)--;
+ pOptState->optType = TOPT_SHORT;
+ return SUCCESS;
+ }
+
+ /*
+ * IF we are to stop on errors (the default, actually)
+ * THEN call the usage procedure.
+ */
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0) {
+ fprintf( stderr, zIllOptChr, pOpts->pzProgPath, optValue );
+ (*pOpts->pUsageProc)( pOpts, EXIT_FAILURE );
+ }
+
+ return FAILURE;
+}
+
+
+/*
+ * findOptDesc
+ *
+ * Find the option descriptor for the current option
+ */
+static tSuccess
+findOptDesc( tOptions* pOpts, tOptState* pOptState )
+{
+ /*
+ * IF we are continuing a short option list (e.g. -xyz...)
+ * THEN continue a single flag option.
+ * OTHERWISE see if there is room to advance and then do so.
+ */
+ if ((pOpts->pzCurOpt != NULL) && (*pOpts->pzCurOpt != NUL))
+ return shortOptionFind( pOpts, (tAoUC)*(pOpts->pzCurOpt), pOptState );
+
+ if (pOpts->curOptIdx >= pOpts->origArgCt)
+ return PROBLEM; /* NORMAL COMPLETION */
+
+ pOpts->pzCurOpt = pOpts->origArgVect[ pOpts->curOptIdx ];
+
+ /*
+ * IF all arguments must be named options, ...
+ */
+ if (NAMED_OPTS(pOpts)) {
+ char* pz = pOpts->pzCurOpt;
+ pOpts->curOptIdx++;
+
+ /*
+ * Skip over any flag/option markers.
+ * In this mode, they are not required.
+ */
+ while (*pz == '-') pz++;
+
+ return longOptionFind( pOpts, pz, pOptState );
+ }
+
+ /*
+ * Note the kind of flag/option marker
+ */
+ if (*((pOpts->pzCurOpt)++) != '-')
+ return PROBLEM; /* NORMAL COMPLETION - this + rest are operands */
+
+ /*
+ * Special hack for a hyphen by itself
+ */
+ if (*(pOpts->pzCurOpt) == NUL)
+ return PROBLEM; /* NORMAL COMPLETION - this + rest are operands */
+
+ /*
+ * The current argument is to be processed as an option argument
+ */
+ pOpts->curOptIdx++;
+
+ /*
+ * We have an option marker.
+ * Test the next character for long option indication
+ */
+ if (pOpts->pzCurOpt[0] == '-') {
+ if (*++(pOpts->pzCurOpt) == NUL)
+ /*
+ * NORMAL COMPLETION - NOT this arg, but rest are operands
+ */
+ return PROBLEM;
+
+ /*
+ * We do not allow the hyphen to be used as a flag value.
+ * Therefore, if long options are not to be accepted, we punt.
+ */
+ if ((pOpts->fOptSet & OPTPROC_LONGOPT) == 0) {
+ fprintf( stderr, zIllOptStr, pOpts->pzProgPath,
+ zIllegal, pOpts->pzCurOpt-2 );
+ return FAILURE;
+ }
+
+ return longOptionFind( pOpts, pOpts->pzCurOpt, pOptState );
+ }
+
+ /*
+ * If short options are not allowed, then do long
+ * option processing. Otherwise the character must be a
+ * short (i.e. single character) option.
+ */
+ if ((pOpts->fOptSet & OPTPROC_SHORTOPT) != 0)
+ return shortOptionFind( pOpts, (tAoUC)*(pOpts->pzCurOpt), pOptState );
+
+ return longOptionFind( pOpts, pOpts->pzCurOpt, pOptState );
+}
+
+
+/*
+ * nextOption
+ *
+ * Find the option descriptor and option argument (if any) for the
+ * next command line argument. DO NOT modify the descriptor. Put
+ * all the state in the state argument so that the option can be skipped
+ * without consequence (side effect).
+ */
+static tSuccess
+nextOption( tOptions* pOpts, tOptState* pOptState )
+{
+ tSuccess res;
+ enum { ARG_NONE, ARG_MAY, ARG_MUST } arg_type = ARG_NONE;
+ teOptArgType at;
+
+ res = findOptDesc( pOpts, pOptState );
+ if (! SUCCESSFUL( res ))
+ return res;
+ pOptState->flags |= (pOptState->pOD->fOptState & OPTST_PERSISTENT_MASK);
+ at = OPTST_GET_ARGTYPE(pOptState->flags);
+
+ /*
+ * Figure out what to do about option arguments. An argument may be
+ * required, not associated with the option, or be optional. We detect the
+ * latter by examining for an option marker on the next possible argument.
+ * Disabled mode option selection also disables option arguments.
+ */
+ if ((pOptState->flags & OPTST_DISABLED) != 0)
+ arg_type = ARG_NONE;
+ else if (at == OPARG_TYPE_NONE)
+ arg_type = ARG_NONE;
+ else if (pOptState->flags & OPTST_ARG_OPTIONAL)
+ arg_type = ARG_MAY;
+ else
+ arg_type = ARG_MUST;
+
+ switch (arg_type) {
+ case ARG_MUST:
+ /*
+ * An option argument is required. Long options can either have
+ * a separate command line argument, or an argument attached by
+ * the '=' character. Figure out which.
+ */
+ switch (pOptState->optType) {
+ case TOPT_SHORT:
+ /*
+ * See if an arg string follows the flag character
+ */
+ if (*++(pOpts->pzCurOpt) == NUL)
+ pOpts->pzCurOpt = pOpts->origArgVect[ pOpts->curOptIdx++ ];
+ pOptState->pzOptArg = pOpts->pzCurOpt;
+ break;
+
+ case TOPT_LONG:
+ /*
+ * See if an arg string has already been assigned (glued on
+ * with an `=' character)
+ */
+ if (pOptState->pzOptArg == NULL)
+ pOptState->pzOptArg = pOpts->origArgVect[ pOpts->curOptIdx++ ];
+ break;
+
+ default:
+#ifdef DEBUG
+ fputs( "AutoOpts lib error: option type not selected\n",
+ stderr );
+ exit( EXIT_FAILURE );
+#endif
+
+ case TOPT_DEFAULT:
+ /*
+ * The option was selected by default. The current token is
+ * the option argument.
+ */
+ break;
+ }
+
+ /*
+ * Make sure we did not overflow the argument list.
+ */
+ if (pOpts->curOptIdx > pOpts->origArgCt) {
+ fprintf( stderr, zMisArg, pOpts->pzProgPath,
+ pOptState->pOD->pz_Name );
+ return FAILURE;
+ }
+
+ pOpts->pzCurOpt = NULL; /* next time advance to next arg */
+ break;
+
+ case ARG_MAY:
+ /*
+ * An option argument is optional.
+ */
+ switch (pOptState->optType) {
+ case TOPT_SHORT:
+ if (*++pOpts->pzCurOpt != NUL)
+ pOptState->pzOptArg = pOpts->pzCurOpt;
+ else {
+ char* pzLA = pOpts->origArgVect[ pOpts->curOptIdx ];
+
+ /*
+ * BECAUSE it is optional, we must make sure
+ * we did not find another flag and that there
+ * is such an argument.
+ */
+ if ((pzLA == NULL) || (*pzLA == '-'))
+ pOptState->pzOptArg = NULL;
+ else {
+ pOpts->curOptIdx++; /* argument found */
+ pOptState->pzOptArg = pzLA;
+ }
+ }
+ break;
+
+ case TOPT_LONG:
+ /*
+ * Look for an argument if we don't already have one (glued on
+ * with a `=' character) *AND* we are not in named argument mode
+ */
+ if ( (pOptState->pzOptArg == NULL)
+ && (! NAMED_OPTS(pOpts))) {
+ char* pzLA = pOpts->origArgVect[ pOpts->curOptIdx ];
+
+ /*
+ * BECAUSE it is optional, we must make sure
+ * we did not find another flag and that there
+ * is such an argument.
+ */
+ if ((pzLA == NULL) || (*pzLA == '-'))
+ pOptState->pzOptArg = NULL;
+ else {
+ pOpts->curOptIdx++; /* argument found */
+ pOptState->pzOptArg = pzLA;
+ }
+ }
+ break;
+
+ default:
+ case TOPT_DEFAULT:
+ fputs( "AutoOpts lib error: defaulted to option with optional arg\n",
+ stderr );
+ exit( EX_SOFTWARE );
+ }
+
+ /*
+ * After an option with an optional argument, we will
+ * *always* start with the next option because if there
+ * were any characters following the option name/flag,
+ * they would be interpreted as the argument.
+ */
+ pOpts->pzCurOpt = NULL;
+ break;
+
+ default: /* CANNOT */
+ /*
+ * No option argument. Make sure next time around we find
+ * the correct option flag character for short options
+ */
+ if (pOptState->optType == TOPT_SHORT)
+ (pOpts->pzCurOpt)++;
+
+ /*
+ * It is a long option. Make sure there was no ``=xxx'' argument
+ */
+ else if (pOptState->pzOptArg != NULL) {
+ fprintf( stderr, zNoArg, pOpts->pzProgPath,
+ pOptState->pOD->pz_Name );
+ return FAILURE;
+ }
+
+ /*
+ * It is a long option. Advance to next command line argument.
+ */
+ else
+ pOpts->pzCurOpt = NULL;
+ }
+
+ return SUCCESS;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * DO PRESETS
+ *
+ * The next several routines do the immediate action pass on the command
+ * line options, then the environment variables, then the config files in
+ * reverse order. Once done with that, the order is reversed and all
+ * the config files and environment variables are processed again, this
+ * time only processing the non-immediate action options. doPresets()
+ * will then return for optionProcess() to do the final pass on the command
+ * line arguments.
+ */
+
+/*
+ * doImmediateOpts - scan the command line for immediate action options
+ */
+LOCAL tSuccess
+doImmediateOpts( tOptions* pOpts )
+{
+ pOpts->curOptIdx = 1; /* start by skipping program name */
+ pOpts->pzCurOpt = NULL;
+
+ /*
+ * Examine all the options from the start. We process any options that
+ * are marked for immediate processing.
+ */
+ for (;;) {
+ tOptState optState = OPTSTATE_INITIALIZER(PRESET);
+
+ switch (nextOption( pOpts, &optState )) {
+ case FAILURE: goto optionsDone;
+ case PROBLEM: return SUCCESS; /* no more args */
+ case SUCCESS: break;
+ }
+
+ /*
+ * IF this *is* an immediate-attribute option, then do it.
+ */
+ if (! DO_IMMEDIATELY(optState.flags))
+ continue;
+
+ if (! SUCCESSFUL( handleOption( pOpts, &optState )))
+ break;
+ } optionsDone:;
+
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0)
+ (*pOpts->pUsageProc)( pOpts, EXIT_FAILURE );
+ return FAILURE;
+}
+
+
+LOCAL tSuccess
+doRegularOpts( tOptions* pOpts )
+{
+ /*
+ * Now, process all the options from our current position onward.
+ * (This allows interspersed options and arguments for the few
+ * non-standard programs that require it.)
+ */
+ for (;;) {
+ tOptState optState = OPTSTATE_INITIALIZER(DEFINED);
+
+ switch (nextOption( pOpts, &optState )) {
+ case FAILURE: goto optionsDone;
+ case PROBLEM: return SUCCESS; /* no more args */
+ case SUCCESS: break;
+ }
+
+ /*
+ * IF this is not being processed normally (i.e. is immediate action)
+ * THEN skip it (unless we are supposed to do it a second time).
+ */
+ if (! DO_NORMALLY(optState.flags)) {
+ if (! DO_SECOND_TIME(optState.flags))
+ continue;
+ optState.pOD->optOccCt--; /* don't count last time */
+ }
+
+ if (! SUCCESSFUL( handleOption( pOpts, &optState )))
+ break;
+ } optionsDone:;
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0)
+ (*pOpts->pUsageProc)( pOpts, EXIT_FAILURE );
+ return FAILURE;
+}
+
+
+/*
+ * doPresets - check for preset values from a config file or the envrionment
+ */
+static tSuccess
+doPresets( tOptions* pOpts )
+{
+ tOptDesc * pOD = NULL;
+
+ if (! SUCCESSFUL( doImmediateOpts( pOpts )))
+ return FAILURE;
+
+ /*
+ * IF this option set has a --save-opts option, then it also
+ * has a --load-opts option. See if a command line option has disabled
+ * option presetting.
+ */
+ if (pOpts->specOptIdx.save_opts != 0) {
+ pOD = pOpts->pOptDesc + pOpts->specOptIdx.save_opts + 1;
+ if (DISABLED_OPT(pOD))
+ return SUCCESS;
+ }
+
+ /*
+ * Until we return from this procedure, disable non-presettable opts
+ */
+ pOpts->fOptSet |= OPTPROC_PRESETTING;
+ /*
+ * IF there are no config files,
+ * THEN do any environment presets and leave.
+ */
+ if (pOpts->papzHomeList == NULL) {
+ doEnvPresets( pOpts, ENV_ALL );
+ }
+ else {
+ doEnvPresets( pOpts, ENV_IMM );
+
+ /*
+ * Check to see if environment variables have disabled presetting.
+ */
+ if ((pOD != NULL) && ! DISABLED_OPT(pOD))
+ internalFileLoad( pOpts );
+
+ /*
+ * ${PROGRAM_LOAD_OPTS} value of "no" cannot disable other environment
+ * variable options. Only the loading of .rc files.
+ */
+ doEnvPresets( pOpts, ENV_NON_IMM );
+ }
+ pOpts->fOptSet &= ~OPTPROC_PRESETTING;
+
+ return SUCCESS;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * VERIFY OPTION CONSISTENCY
+ *
+ * Make sure that the argument list passes our consistency tests.
+ */
+static int
+checkConsistency( tOptions* pOpts )
+{
+ int errCt = 0;
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int oCt = pOpts->presetOptCt;
+
+ /*
+ * FOR each of "oCt" options, ...
+ */
+ for (;;) {
+ const int* pMust = pOD->pOptMust;
+ const int* pCant = pOD->pOptCant;
+
+ /*
+ * IF the current option was provided on the command line
+ * THEN ensure that any "MUST" requirements are not
+ * "DEFAULT" (unspecified) *AND* ensure that any
+ * "CANT" options have not been SET or DEFINED.
+ */
+ if (SELECTED_OPT(pOD)) {
+ if (pMust != NULL) for (;;) {
+ tOptDesc* p = pOpts->pOptDesc + *(pMust++);
+ if (UNUSED_OPT(p)) {
+ const tOptDesc* pN = pOpts->pOptDesc + pMust[-1];
+ errCt++;
+ fprintf( stderr, zReqFmt, pOD->pz_Name, pN->pz_Name );
+ }
+
+ if (*pMust == NO_EQUIVALENT)
+ break;
+ }
+
+ if (pCant != NULL) for (;;) {
+ tOptDesc* p = pOpts->pOptDesc + *(pCant++);
+ if (SELECTED_OPT(p)) {
+ const tOptDesc* pN = pOpts->pOptDesc + pCant[-1];
+ errCt++;
+ fprintf( stderr, zCantFmt, pOD->pz_Name, pN->pz_Name );
+ }
+
+ if (*pCant == NO_EQUIVALENT)
+ break;
+ }
+ }
+
+ /*
+ * IF this option is not equivalenced to another,
+ * OR it is equivalenced to itself (is the equiv. root)
+ * THEN we need to make sure it occurs often enough.
+ */
+ if ( (pOD->optEquivIndex == NO_EQUIVALENT)
+ || (pOD->optEquivIndex == pOD->optIndex) ) do {
+ /*
+ * IF the occurrence counts have been satisfied,
+ * THEN there is no problem.
+ */
+ if (pOD->optOccCt >= pOD->optMinCt)
+ break;
+
+ /*
+ * IF MUST_SET means SET and PRESET are okay,
+ * so min occurrence count doesn't count
+ */
+ if ( (pOD->fOptState & OPTST_MUST_SET)
+ && (pOD->fOptState & (OPTST_PRESET | OPTST_SET)) )
+ break;
+
+ errCt++;
+ if (pOD->optMinCt > 1)
+ fprintf( stderr, zNotEnough, pOD->pz_Name, pOD->optMinCt );
+ else fprintf( stderr, zNeedOne, pOD->pz_Name );
+ } while (0);
+
+ if (--oCt <= 0)
+ break;
+ pOD++;
+ }
+
+ /*
+ * IF we are stopping on errors, check to see if any remaining
+ * arguments are required to be there or prohibited from being there.
+ */
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0) {
+
+ /*
+ * Check for prohibition
+ */
+ if ((pOpts->fOptSet & OPTPROC_NO_ARGS) != 0) {
+ if (pOpts->origArgCt > pOpts->curOptIdx) {
+ fprintf( stderr, zNoArgs, pOpts->pzProgName );
+ ++errCt;
+ }
+ }
+
+ /*
+ * ELSE not prohibited, check for being required
+ */
+ else if ((pOpts->fOptSet & OPTPROC_ARGS_REQ) != 0) {
+ if (pOpts->origArgCt <= pOpts->curOptIdx) {
+ fprintf( stderr, zArgsMust, pOpts->pzProgName );
+ ++errCt;
+ }
+ }
+ }
+
+ return errCt;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * THESE ROUTINES ARE CALLABLE FROM THE GENERATED OPTION PROCESSING CODE
+ */
+/*=--subblock=arg=arg_type,arg_name,arg_desc =*/
+/*=*
+ * library: opts
+ * header: your-opts.h
+ *
+ * lib_description:
+ *
+ * These are the routines that libopts users may call directly from their
+ * code. There are several other routines that can be called by code
+ * generated by the libopts option templates, but they are not to be
+ * called from any other user code. The @file{options.h} header is
+ * fairly clear about this, too.
+=*/
+
+/*=export_func optionProcess
+ *
+ * what: this is the main option processing routine
+ *
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + int + argc + program arg count +
+ * arg: + char** + argv + program arg vector +
+ *
+ * ret_type: int
+ * ret_desc: the count of the arguments processed
+ *
+ * doc:
+ *
+ * This is the main entry point for processing options. It is intended
+ * that this procedure be called once at the beginning of the execution of
+ * a program. Depending on options selected earlier, it is sometimes
+ * necessary to stop and restart option processing, or to select completely
+ * different sets of options. This can be done easily, but you generally
+ * do not want to do this.
+ *
+ * The number of arguments processed always includes the program name.
+ * If one of the arguments is "--", then it is counted and the processing
+ * stops. If an error was encountered and errors are to be tolerated, then
+ * the returned value is the index of the argument causing the error.
+ * A hyphen by itself ("-") will also cause processing to stop and will
+ * @emph{not} be counted among the processed arguments. A hyphen by itself
+ * is treated as an operand. Encountering an operand stops option
+ * processing.
+ *
+ * err: Errors will cause diagnostics to be printed. @code{exit(3)} may
+ * or may not be called. It depends upon whether or not the options
+ * were generated with the "allow-errors" attribute, or if the
+ * ERRSKIP_OPTERR or ERRSTOP_OPTERR macros were invoked.
+=*/
+int
+optionProcess(
+ tOptions* pOpts,
+ int argCt,
+ char** argVect )
+{
+ if (! SUCCESSFUL( validateOptionsStruct( pOpts, argVect[0] )))
+ exit( EX_SOFTWARE );
+
+ /*
+ * Establish the real program name, the program full path,
+ * and do all the presetting the first time thru only.
+ */
+ if ((pOpts->fOptSet & OPTPROC_INITDONE) == 0) {
+ pOpts->origArgCt = argCt;
+ pOpts->origArgVect = argVect;
+ pOpts->fOptSet |= OPTPROC_INITDONE;
+
+ if (! SUCCESSFUL( doPresets( pOpts )))
+ return 0;
+
+ if ((pOpts->fOptSet & OPTPROC_REORDER) != 0)
+ optionSort( pOpts );
+
+ pOpts->curOptIdx = 1;
+ pOpts->pzCurOpt = NULL;
+ }
+
+ /*
+ * IF we are (re)starting,
+ * THEN reset option location
+ */
+ else if (pOpts->curOptIdx <= 0) {
+ pOpts->curOptIdx = 1;
+ pOpts->pzCurOpt = NULL;
+ }
+
+ if (! SUCCESSFUL( doRegularOpts( pOpts )))
+ return pOpts->origArgCt;
+
+ /*
+ * IF there were no errors
+ * AND we have RC/INI files
+ * AND there is a request to save the files
+ * THEN do that now before testing for conflicts.
+ * (conflicts are ignored in preset options)
+ */
+ if (pOpts->specOptIdx.save_opts != 0) {
+ tOptDesc* pOD = pOpts->pOptDesc + pOpts->specOptIdx.save_opts;
+
+ if (SELECTED_OPT( pOD )) {
+ optionSaveFile( pOpts );
+ exit( EXIT_SUCCESS );
+ }
+ }
+
+ /*
+ * IF we are checking for errors,
+ * THEN look for too few occurrences of required options
+ */
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0) {
+ if (checkConsistency( pOpts ) != 0)
+ (*pOpts->pUsageProc)( pOpts, EXIT_FAILURE );
+ }
+
+ return pOpts->curOptIdx;
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/autoopts.c */
diff --git a/contrib/ntp/libopts/autoopts.h b/contrib/ntp/libopts/autoopts.h
new file mode 100644
index 0000000..2645757
--- /dev/null
+++ b/contrib/ntp/libopts/autoopts.h
@@ -0,0 +1,387 @@
+
+/*
+ * Time-stamp: "2007-04-15 09:59:39 bkorb"
+ *
+ * autoopts.h $Id: autoopts.h,v 4.23 2007/04/15 19:01:18 bkorb Exp $
+ * Time-stamp: "2005-02-14 05:59:50 bkorb"
+ *
+ * This file defines all the global structures and special values
+ * used in the automated option processing library.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+#ifndef AUTOGEN_AUTOOPTS_H
+#define AUTOGEN_AUTOOPTS_H
+
+#include "compat/compat.h"
+
+#define AO_NAME_LIMIT 127
+#define AO_NAME_SIZE ((size_t)(AO_NAME_LIMIT + 1))
+
+#ifndef AG_PATH_MAX
+# ifdef PATH_MAX
+# define AG_PATH_MAX ((size_t)PATH_MAX)
+# else
+# define AG_PATH_MAX ((size_t)4096)
+# endif
+#else
+# if defined(PATH_MAX) && (PATH_MAX > MAXPATHLEN)
+# undef AG_PATH_MAX
+# define AG_PATH_MAX ((size_t)PATH_MAX)
+# endif
+#endif
+
+#undef EXPORT
+#define EXPORT
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+# define DIRCH '\\'
+#else
+# define DIRCH '/'
+#endif
+
+#ifndef EX_NOINPUT
+# define EX_NOINPUT 66
+#endif
+#ifndef EX_SOFTWARE
+# define EX_SOFTWARE 70
+#endif
+#ifndef EX_CONFIG
+# define EX_CONFIG 78
+#endif
+
+/*
+ * Convert the number to a list usable in a printf call
+ */
+#define NUM_TO_VER(n) ((n) >> 12), ((n) >> 7) & 0x001F, (n) & 0x007F
+
+#define NAMED_OPTS(po) \
+ (((po)->fOptSet & (OPTPROC_SHORTOPT | OPTPROC_LONGOPT)) == 0)
+
+#define SKIP_OPT(p) (((p)->fOptState & (OPTST_DOCUMENT|OPTST_OMITTED)) != 0)
+
+typedef int tDirection;
+#define DIRECTION_PRESET -1
+#define DIRECTION_PROCESS 1
+#define DIRECTION_CALLED 0
+
+#define PROCESSING(d) ((d)>0)
+#define PRESETTING(d) ((d)<0)
+
+#define ISNAMECHAR( c ) (isalnum(c) || ((c) == '_') || ((c) == '-'))
+
+/*
+ * Procedure success codes
+ *
+ * USAGE: define procedures to return "tSuccess". Test their results
+ * with the SUCCEEDED, FAILED and HADGLITCH macros.
+ *
+ * Microsoft sticks its nose into user space here, so for Windows' sake,
+ * make sure all of these are undefined.
+ */
+#undef SUCCESS
+#undef FAILURE
+#undef PROBLEM
+#undef SUCCEEDED
+#undef SUCCESSFUL
+#undef FAILED
+#undef HADGLITCH
+
+#define SUCCESS ((tSuccess) 0)
+#define FAILURE ((tSuccess)-1)
+#define PROBLEM ((tSuccess) 1)
+
+typedef int tSuccess;
+
+#define SUCCEEDED( p ) ((p) == SUCCESS)
+#define SUCCESSFUL( p ) SUCCEEDED( p )
+#define FAILED( p ) ((p) < SUCCESS)
+#define HADGLITCH( p ) ((p) > SUCCESS)
+
+/*
+ * When loading a line (or block) of text as an option, the value can
+ * be processed in any of several modes:
+ *
+ * @table @samp
+ * @item keep
+ * Every part of the value between the delimiters is saved.
+ *
+ * @item uncooked
+ * Even if the value begins with quote characters, do not do quote processing.
+ *
+ * @item cooked
+ * If the value looks like a quoted string, then process it.
+ * Double quoted strings are processed the way strings are in "C" programs,
+ * except they are treated as regular characters if the following character
+ * is not a well-established escape sequence.
+ * Single quoted strings (quoted with apostrophies) are handled the way
+ * strings are handled in shell scripts, *except* that backslash escapes
+ * are honored before backslash escapes and apostrophies.
+ * @end table
+ */
+typedef enum {
+ OPTION_LOAD_COOKED,
+ OPTION_LOAD_UNCOOKED,
+ OPTION_LOAD_KEEP
+} tOptionLoadMode;
+
+extern tOptionLoadMode option_load_mode;
+
+/*
+ * The pager state is used by optionPagedUsage() procedure.
+ * When it runs, it sets itself up to be called again on exit.
+ * If, however, a routine needs a child process to do some work
+ * before it is done, then 'pagerState' must be set to
+ * 'PAGER_STATE_CHILD' so that optionPagedUsage() will not try
+ * to run the pager program before its time.
+ */
+typedef enum {
+ PAGER_STATE_INITIAL,
+ PAGER_STATE_READY,
+ PAGER_STATE_CHILD
+} tePagerState;
+
+extern tePagerState pagerState;
+
+typedef enum {
+ ENV_ALL,
+ ENV_IMM,
+ ENV_NON_IMM
+} teEnvPresetType;
+
+typedef enum {
+ TOPT_UNDEFINED = 0,
+ TOPT_SHORT,
+ TOPT_LONG,
+ TOPT_DEFAULT
+} teOptType;
+
+typedef struct {
+ tOptDesc* pOD;
+ tCC* pzOptArg;
+ tAoUL flags;
+ teOptType optType;
+} tOptState;
+#define OPTSTATE_INITIALIZER(st) \
+ { NULL, NULL, OPTST_ ## st, TOPT_UNDEFINED }
+
+#define TEXTTO_TABLE \
+ _TT_( LONGUSAGE ) \
+ _TT_( USAGE ) \
+ _TT_( VERSION )
+#define _TT_(n) \
+ TT_ ## n ,
+
+typedef enum { TEXTTO_TABLE COUNT_TT } teTextTo;
+
+#undef _TT_
+
+typedef struct {
+ tCC* pzStr;
+ tCC* pzReq;
+ tCC* pzNum;
+ tCC* pzKey;
+ tCC* pzKeyL;
+ tCC* pzBool;
+ tCC* pzNest;
+ tCC* pzOpt;
+ tCC* pzNo;
+ tCC* pzBrk;
+ tCC* pzNoF;
+ tCC* pzSpc;
+ tCC* pzOptFmt;
+} arg_types_t;
+
+#define AGALOC( c, w ) ao_malloc((size_t)c)
+#define AGREALOC( p, c, w ) ao_realloc((void*)p, (size_t)c)
+#define AGFREE( p ) ao_free((void*)p)
+#define AGDUPSTR( p, s, w ) (p = ao_strdup(s))
+
+static void *
+ao_malloc( size_t sz );
+
+static void *
+ao_realloc( void *p, size_t sz );
+
+static void
+ao_free( void *p );
+
+static char *
+ao_strdup( char const *str );
+
+#define TAGMEM( m, t )
+
+/*
+ * DO option handling?
+ *
+ * Options are examined at two times: at immediate handling time and at
+ * normal handling time. If an option is disabled, the timing may be
+ * different from the handling of the undisabled option. The OPTST_DIABLED
+ * bit indicates the state of the currently discovered option.
+ * So, here's how it works:
+ *
+ * A) handling at "immediate" time, either 1 or 2:
+ *
+ * 1. OPTST_DISABLED is not set:
+ * IMM must be set
+ * DISABLE_IMM don't care
+ * TWICE don't care
+ * DISABLE_TWICE don't care
+ * 0 -and- 1 x x x
+ *
+ * 2. OPTST_DISABLED is set:
+ * IMM don't care
+ * DISABLE_IMM must be set
+ * TWICE don't care
+ * DISABLE_TWICE don't care
+ * 1 -and- x 1 x x
+ */
+#define DO_IMMEDIATELY(_flg) \
+ ( (((_flg) & (OPTST_DISABLED|OPTST_IMM)) == OPTST_IMM) \
+ || ( ((_flg) & (OPTST_DISABLED|OPTST_DISABLE_IMM)) \
+ == (OPTST_DISABLED|OPTST_DISABLE_IMM) ))
+
+/* B) handling at "regular" time because it was not immediate
+ *
+ * 1. OPTST_DISABLED is not set:
+ * IMM must *NOT* be set
+ * DISABLE_IMM don't care
+ * TWICE don't care
+ * DISABLE_TWICE don't care
+ * 0 -and- 0 x x x
+ *
+ * 2. OPTST_DISABLED is set:
+ * IMM don't care
+ * DISABLE_IMM don't care
+ * TWICE must be set
+ * DISABLE_TWICE don't care
+ * 1 -and- x x 1 x
+ */
+#define DO_NORMALLY(_flg) ( \
+ (((_flg) & (OPTST_DISABLED|OPTST_IMM)) == 0) \
+ || (((_flg) & (OPTST_DISABLED|OPTST_DISABLE_IMM)) == \
+ OPTST_DISABLED) )
+
+/* C) handling at "regular" time because it is to be handled twice.
+ * The immediate bit was already tested and found to be set:
+ *
+ * 3. OPTST_DISABLED is not set:
+ * IMM is set (but don't care)
+ * DISABLE_IMM don't care
+ * TWICE must be set
+ * DISABLE_TWICE don't care
+ * 0 -and- ? x 1 x
+ *
+ * 4. OPTST_DISABLED is set:
+ * IMM don't care
+ * DISABLE_IMM is set (but don't care)
+ * TWICE don't care
+ * DISABLE_TWICE must be set
+ * 1 -and- x ? x 1
+ */
+#define DO_SECOND_TIME(_flg) ( \
+ (((_flg) & (OPTST_DISABLED|OPTST_TWICE)) == \
+ OPTST_TWICE) \
+ || (((_flg) & (OPTST_DISABLED|OPTST_DISABLE_TWICE)) == \
+ (OPTST_DISABLED|OPTST_DISABLE_TWICE) ))
+
+/*
+ * text_mmap structure. Only active on platforms with mmap(2).
+ */
+#ifdef HAVE_SYS_MMAN_H
+# include <sys/mman.h>
+#else
+# ifndef PROT_READ
+# define PROT_READ 0x01
+# endif
+# ifndef PROT_WRITE
+# define PROT_WRITE 0x02
+# endif
+# ifndef MAP_SHARED
+# define MAP_SHARED 0x01
+# endif
+# ifndef MAP_PRIVATE
+# define MAP_PRIVATE 0x02
+# endif
+#endif
+
+#ifndef MAP_FAILED
+# define MAP_FAILED ((void*)-1)
+#endif
+
+#ifndef _SC_PAGESIZE
+# ifdef _SC_PAGE_SIZE
+# define _SC_PAGESIZE _SC_PAGE_SIZE
+# endif
+#endif
+
+#ifndef HAVE_STRCHR
+extern char* strchr( char const *s, int c);
+extern char* strrchr( char const *s, int c);
+#endif
+
+/*
+ * Define and initialize all the user visible strings.
+ * We do not do translations. If translations are to be done, then
+ * the client will provide a callback for that purpose.
+ */
+#undef DO_TRANSLATIONS
+#include "autoopts/usage-txt.h"
+
+/*
+ * File pointer for usage output
+ */
+extern FILE* option_usage_fp;
+
+extern tOptProc optionPrintVersion, optionPagedUsage, optionLoadOpt;
+
+#endif /* AUTOGEN_AUTOOPTS_H */
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/autoopts.h */
diff --git a/contrib/ntp/libopts/autoopts/options.h b/contrib/ntp/libopts/autoopts/options.h
new file mode 100644
index 0000000..c2ceeb3
--- /dev/null
+++ b/contrib/ntp/libopts/autoopts/options.h
@@ -0,0 +1,977 @@
+/* -*- buffer-read-only: t -*- vi: set ro:
+ *
+ * DO NOT EDIT THIS FILE (options.h)
+ *
+ * It has been AutoGen-ed Saturday May 5, 2007 at 12:02:34 PM PDT
+ * From the definitions funcs.def
+ * and the template file options_h
+ *
+ * This file defines all the global structures and special values
+ * used in the automated option processing library.
+ *
+ * Automated Options copyright 1992-Y Bruce Korb
+ *
+ * AutoOpts is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * AutoOpts 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with AutoOpts. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef AUTOOPTS_OPTIONS_H_GUARD
+#define AUTOOPTS_OPTIONS_H_GUARD
+#include <sys/types.h>
+
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif /* HAVE_STDINT/INTTYPES_H */
+
+#if defined(HAVE_LIMITS_H)
+# include <limits.h>
+#elif defined(HAVE_SYS_LIMITS_H)
+# include <sys/limits.h>
+#endif /* HAVE_LIMITS/SYS_LIMITS_H */
+
+#if defined(HAVE_SYSEXITS_H)
+# include <sysexits.h>
+#endif /* HAVE_SYSEXITS_H */
+
+#ifndef EX_USAGE
+# define EX_USAGE 64
+#endif
+
+/*
+ * PUBLIC DEFINES
+ *
+ * The following defines may be used in applications that need to test the
+ * state of an option. To test against these masks and values, a pointer
+ * to an option descriptor must be obtained. There are two ways:
+ *
+ * 1. inside an option processing procedure, it is the second argument,
+ * conventionally "tOptDesc* pOD".
+ *
+ * 2. Outside of an option procedure (or to reference a different option
+ * descriptor), use either "&DESC( opt_name )" or "&pfx_DESC( opt_name )".
+ *
+ * See the relevant generated header file to determine which and what
+ * values for "opt_name" are available.
+ */
+
+#define OPTIONS_STRUCT_VERSION 118784
+#define OPTIONS_VERSION_STRING "29:0:4"
+#define OPTIONS_MINIMUM_VERSION 102400
+#define OPTIONS_MIN_VER_STRING "25:0:0"
+
+typedef enum {
+ OPARG_TYPE_NONE = 0,
+ OPARG_TYPE_STRING = 1, /* default type/ vanilla string */
+ OPARG_TYPE_ENUMERATION = 2, /* opt arg is an enum (keyword list) */
+ OPARG_TYPE_BOOLEAN = 3, /* opt arg is boolean-valued */
+ OPARG_TYPE_MEMBERSHIP = 4, /* opt arg sets set membership bits */
+ OPARG_TYPE_NUMERIC = 5, /* opt arg has numeric value */
+ OPARG_TYPE_HIERARCHY = 6 /* option arg is hierarchical value */
+} teOptArgType;
+
+typedef struct optionValue {
+ teOptArgType valType;
+ char* pzName;
+ union {
+ char strVal[1]; /* OPARG_TYPE_STRING */
+ unsigned int enumVal; /* OPARG_TYPE_ENUMERATION */
+ unsigned int boolVal; /* OPARG_TYPE_BOOLEAN */
+ unsigned long setVal; /* OPARG_TYPE_MEMBERSHIP */
+ long longVal; /* OPARG_TYPE_NUMERIC */
+ void* nestVal; /* OPARG_TYPE_HIERARCHY */
+ } v;
+} tOptionValue;
+
+/*
+ * Bits in the fOptState option descriptor field.
+ */
+typedef enum {
+ OPTST_SET_ID = 0, /* Set via the "SET_OPT()" macro */
+ OPTST_PRESET_ID = 1, /* Set via an RC/INI file */
+ OPTST_DEFINED_ID = 2, /* Set via a command line option */
+ OPTST_EQUIVALENCE_ID = 4, /* selected by equiv'ed option */
+ OPTST_DISABLED_ID = 5, /* option is in disabled state */
+ OPTST_ALLOC_ARG_ID = 6, /* pzOptArg was allocated */
+ OPTST_NO_INIT_ID = 8, /* option cannot be preset */
+ OPTST_NUMBER_OPT_ID = 9, /* opt value (flag) is any digit */
+ OPTST_STACKED_ID = 10, /* opt uses optionStackArg proc */
+ OPTST_INITENABLED_ID = 11, /* option defaults to enabled */
+ OPTST_ARG_TYPE_1_ID = 12, /* bit 1 of arg type enum */
+ OPTST_ARG_TYPE_2_ID = 13, /* bit 2 of arg type enum */
+ OPTST_ARG_TYPE_3_ID = 14, /* bit 3 of arg type enum */
+ OPTST_ARG_TYPE_4_ID = 15, /* bit 4 of arg type enum */
+ OPTST_ARG_OPTIONAL_ID = 16, /* the option arg not required */
+ OPTST_IMM_ID = 17, /* process opt on first pass */
+ OPTST_DISABLE_IMM_ID = 18, /* process disablement immed. */
+ OPTST_OMITTED_ID = 19, /* compiled out of program */
+ OPTST_MUST_SET_ID = 20, /* must be set or pre-set */
+ OPTST_DOCUMENT_ID = 21, /* opt is for doc only */
+ OPTST_TWICE_ID = 22, /* process opt twice - imm + reg */
+ OPTST_DISABLE_TWICE_ID = 23 /* process disabled option twice */
+} opt_state_enum_t;
+
+#define OPTST_INIT 0U
+#define OPTST_SET (1U << OPTST_SET_ID)
+#define OPTST_PRESET (1U << OPTST_PRESET_ID)
+#define OPTST_DEFINED (1U << OPTST_DEFINED_ID)
+#define OPTST_EQUIVALENCE (1U << OPTST_EQUIVALENCE_ID)
+#define OPTST_DISABLED (1U << OPTST_DISABLED_ID)
+#define OPTST_ALLOC_ARG (1U << OPTST_ALLOC_ARG_ID)
+#define OPTST_NO_INIT (1U << OPTST_NO_INIT_ID)
+#define OPTST_NUMBER_OPT (1U << OPTST_NUMBER_OPT_ID)
+#define OPTST_STACKED (1U << OPTST_STACKED_ID)
+#define OPTST_INITENABLED (1U << OPTST_INITENABLED_ID)
+#define OPTST_ARG_TYPE_1 (1U << OPTST_ARG_TYPE_1_ID)
+#define OPTST_ARG_TYPE_2 (1U << OPTST_ARG_TYPE_2_ID)
+#define OPTST_ARG_TYPE_3 (1U << OPTST_ARG_TYPE_3_ID)
+#define OPTST_ARG_TYPE_4 (1U << OPTST_ARG_TYPE_4_ID)
+#define OPTST_ARG_OPTIONAL (1U << OPTST_ARG_OPTIONAL_ID)
+#define OPTST_IMM (1U << OPTST_IMM_ID)
+#define OPTST_DISABLE_IMM (1U << OPTST_DISABLE_IMM_ID)
+#define OPTST_OMITTED (1U << OPTST_OMITTED_ID)
+#define OPTST_MUST_SET (1U << OPTST_MUST_SET_ID)
+#define OPTST_DOCUMENT (1U << OPTST_DOCUMENT_ID)
+#define OPTST_TWICE (1U << OPTST_TWICE_ID)
+#define OPTST_DISABLE_TWICE (1U << OPTST_DISABLE_TWICE_ID)
+#define OPT_STATE_MASK 0x00FFFF77U
+
+#define OPTST_SET_MASK ( \
+ OPTST_SET | \
+ OPTST_PRESET | \
+ OPTST_DEFINED )
+
+#define OPTST_MUTABLE_MASK ( \
+ OPTST_SET | \
+ OPTST_PRESET | \
+ OPTST_DEFINED | \
+ OPTST_EQUIVALENCE | \
+ OPTST_DISABLED | \
+ OPTST_ALLOC_ARG )
+
+#define OPTST_SELECTED_MASK ( \
+ OPTST_SET | \
+ OPTST_DEFINED )
+
+#define OPTST_ARG_TYPE_MASK ( \
+ OPTST_ARG_TYPE_1 | \
+ OPTST_ARG_TYPE_2 | \
+ OPTST_ARG_TYPE_3 | \
+ OPTST_ARG_TYPE_4 )
+
+#ifdef NO_OPTIONAL_OPT_ARGS
+# undef OPTST_ARG_OPTIONAL
+# define OPTST_ARG_OPTIONAL 0
+#endif
+
+#define OPTST_PERSISTENT_MASK (~OPTST_MUTABLE_MASK)
+
+#define SELECTED_OPT( pod ) ((pod)->fOptState & OPTST_SELECTED_MASK)
+#define UNUSED_OPT( pod ) (((pod)->fOptState & OPTST_SET_MASK) == 0)
+#define DISABLED_OPT( pod ) ((pod)->fOptState & OPTST_DISABLED)
+#define OPTION_STATE( pod ) ((pod)->fOptState)
+
+#define OPTST_SET_ARGTYPE(n) ((n) << OPTST_ARG_TYPE_1_ID)
+#define OPTST_GET_ARGTYPE(f) (((f) & OPTST_ARG_TYPE_MASK)>>OPTST_ARG_TYPE_1_ID)
+
+/*
+ * PRIVATE INTERFACES
+ *
+ * The following values are used in the generated code to communicate
+ * with the option library procedures. They are not for public use
+ * and may be subject to change.
+ */
+
+/*
+ * Define the processing state flags
+ */
+typedef enum {
+ OPTPROC_LONGOPT_ID = 0, /* Process long style options */
+ OPTPROC_SHORTOPT_ID = 1, /* Process short style "flags" */
+ OPTPROC_ERRSTOP_ID = 2, /* Stop on argument errors */
+ OPTPROC_DISABLEDOPT_ID = 3, /* Current option is disabled */
+ OPTPROC_NO_REQ_OPT_ID = 4, /* no options are required */
+ OPTPROC_NUM_OPT_ID = 5, /* there is a number option */
+ OPTPROC_INITDONE_ID = 6, /* have initializations been done? */
+ OPTPROC_NEGATIONS_ID = 7, /* any negation options? */
+ OPTPROC_ENVIRON_ID = 8, /* check environment? */
+ OPTPROC_NO_ARGS_ID = 9, /* Disallow remaining arguments */
+ OPTPROC_ARGS_REQ_ID = 10, /* Require arguments after options */
+ OPTPROC_REORDER_ID = 11, /* reorder operands after options */
+ OPTPROC_GNUUSAGE_ID = 12, /* emit usage in GNU style */
+ OPTPROC_TRANSLATE_ID = 13, /* Translate strings in tOptions */
+ OPTPROC_HAS_IMMED_ID = 14, /* program defines immed options */
+ OPTPROC_PRESETTING_ID = 19 /* opt processing in preset state */
+} optproc_state_enum_t;
+
+#define OPTPROC_NONE 0U
+#define OPTPROC_LONGOPT (1U << OPTPROC_LONGOPT_ID)
+#define OPTPROC_SHORTOPT (1U << OPTPROC_SHORTOPT_ID)
+#define OPTPROC_ERRSTOP (1U << OPTPROC_ERRSTOP_ID)
+#define OPTPROC_DISABLEDOPT (1U << OPTPROC_DISABLEDOPT_ID)
+#define OPTPROC_NO_REQ_OPT (1U << OPTPROC_NO_REQ_OPT_ID)
+#define OPTPROC_NUM_OPT (1U << OPTPROC_NUM_OPT_ID)
+#define OPTPROC_INITDONE (1U << OPTPROC_INITDONE_ID)
+#define OPTPROC_NEGATIONS (1U << OPTPROC_NEGATIONS_ID)
+#define OPTPROC_ENVIRON (1U << OPTPROC_ENVIRON_ID)
+#define OPTPROC_NO_ARGS (1U << OPTPROC_NO_ARGS_ID)
+#define OPTPROC_ARGS_REQ (1U << OPTPROC_ARGS_REQ_ID)
+#define OPTPROC_REORDER (1U << OPTPROC_REORDER_ID)
+#define OPTPROC_GNUUSAGE (1U << OPTPROC_GNUUSAGE_ID)
+#define OPTPROC_TRANSLATE (1U << OPTPROC_TRANSLATE_ID)
+#define OPTPROC_HAS_IMMED (1U << OPTPROC_HAS_IMMED_ID)
+#define OPTPROC_PRESETTING (1U << OPTPROC_PRESETTING_ID)
+#define OPTPROC_STATE_MASK 0x00087FFFU
+
+#define STMTS(s) do { s; } while (0)
+
+/*
+ * The following must be #defined instead of typedef-ed
+ * because "static const" cannot both be applied to a type,
+ * tho each individually can...so they all are
+ */
+#define tSCC static char const
+#define tCC char const
+#define tAoSC static char
+#define tAoUC unsigned char
+#define tAoUI unsigned int
+#define tAoUL unsigned long
+#define tAoUS unsigned short
+
+/*
+ * It is so disgusting that there must be so many ways
+ * of specifying TRUE and FALSE.
+ */
+typedef enum { AG_FALSE = 0, AG_TRUE } ag_bool;
+
+/*
+ * Define a structure that describes each option and
+ * a pointer to the procedure that handles it.
+ * The argument is the count of this flag previously seen.
+ */
+typedef struct options tOptions;
+typedef struct optDesc tOptDesc;
+typedef struct optNames tOptNames;
+
+/*
+ * The option procedures do the special processing for each
+ * option flag that needs it.
+ */
+typedef void (tOptProc)( tOptions* pOpts, tOptDesc* pOptDesc );
+typedef tOptProc* tpOptProc;
+
+/*
+ * The usage procedure will never return. It calls "exit(2)"
+ * with the "exitCode" argument passed to it.
+ */
+typedef void (tUsageProc)( tOptions* pOpts, int exitCode );
+typedef tUsageProc* tpUsageProc;
+
+/*
+ * Special definitions. "NOLIMIT" is the 'max' value to use when
+ * a flag may appear multiple times without limit. "NO_EQUIVALENT"
+ * is an illegal value for 'optIndex' (option description index).
+ */
+#define NOLIMIT USHRT_MAX
+#define OPTION_LIMIT SHRT_MAX
+#define NO_EQUIVALENT (OPTION_LIMIT+1)
+
+/*
+ * Special values for optValue. It must not be generatable from the
+ * computation "optIndex +96". Since "optIndex" is limited to 100, ...
+ */
+#define NUMBER_OPTION '#'
+
+typedef struct argList tArgList;
+#define MIN_ARG_ALLOC_CT 6
+#define INCR_ARG_ALLOC_CT 8
+struct argList {
+ int useCt;
+ int allocCt;
+ tCC* apzArgs[ MIN_ARG_ALLOC_CT ];
+};
+
+typedef union {
+ char const * argString;
+ uintptr_t argEnum;
+ uintptr_t argIntptr;
+ long argInt;
+ unsigned long argUint;
+ unsigned int argBool;
+} optArgBucket_t;
+
+/*
+ * Descriptor structure for each option.
+ * Only the fields marked "PUBLIC" are for public use.
+ */
+struct optDesc {
+ tAoUS const optIndex; /* PUBLIC */
+ tAoUS const optValue; /* PUBLIC */
+ tAoUS optActualIndex; /* PUBLIC */
+ tAoUS optActualValue; /* PUBLIC */
+
+ tAoUS const optEquivIndex; /* PUBLIC */
+ tAoUS const optMinCt;
+ tAoUS const optMaxCt;
+ tAoUS optOccCt; /* PUBLIC */
+
+ tAoUI fOptState; /* PUBLIC */
+ tAoUI reserved;
+ optArgBucket_t optArg; /* PUBLIC */
+# define pzLastArg optArg.argString
+ void* optCookie; /* PUBLIC */
+
+ const int * pOptMust;
+ const int * pOptCant;
+ tpOptProc pOptProc;
+ char const* pzText;
+
+ char const* pz_NAME;
+ char const* pz_Name;
+ char const* pz_DisableName;
+ char const* pz_DisablePfx;
+};
+
+/*
+ * Some options need special processing, so we store their
+ * indexes in a known place:
+ */
+typedef struct optSpecIndex tOptSpecIndex;
+struct optSpecIndex {
+ const tAoUS more_help;
+ const tAoUS save_opts;
+ const tAoUS number_option;
+ const tAoUS default_opt;
+};
+
+/*
+ * The procedure generated for translating option text
+ */
+typedef void (tOptionXlateProc)(void);
+
+struct options {
+ int const structVersion;
+ int origArgCt;
+ char** origArgVect;
+ unsigned int fOptSet;
+ unsigned int curOptIdx;
+ char* pzCurOpt;
+
+ char const* pzProgPath;
+ char const* pzProgName;
+ char const* const pzPROGNAME;
+ char const* const pzRcName;
+ char const* const pzCopyright;
+ char const* const pzCopyNotice;
+ char const* const pzFullVersion;
+ char const* const* const papzHomeList;
+ char const* const pzUsageTitle;
+ char const* const pzExplain;
+ char const* const pzDetail;
+ tOptDesc* const pOptDesc;
+ char const* const pzBugAddr;
+
+ void* pExtensions;
+ void* pSavedState;
+
+ tpUsageProc pUsageProc;
+ tOptionXlateProc* pTransProc;
+
+ tOptSpecIndex specOptIdx;
+ int const optCt;
+ int const presetOptCt;
+};
+
+/*
+ * "token list" structure returned by "string_tokenize()"
+ */
+typedef struct {
+ unsigned long tkn_ct;
+ unsigned char* tkn_list[1];
+} token_list_t;
+
+/*
+ * Hide the interface - it pollutes a POSIX claim, but leave it for
+ * anyone #include-ing this header
+ */
+#define strneqvcmp option_strneqvcmp
+#define streqvcmp option_streqvcmp
+#define streqvmap option_streqvmap
+#define strequate option_strequate
+#define strtransform option_strtransform
+
+/*
+ * This is an output only structure used by text_mmap and text_munmap.
+ * Clients must not alter the contents and must provide it to both
+ * the text_mmap and text_munmap procedures. BE ADVISED: if you are
+ * mapping the file with PROT_WRITE the NUL byte at the end MIGHT NOT
+ * BE WRITABLE. In any event, that byte is not be written back
+ * to the source file. ALSO: if "txt_data" is valid and "txt_errno"
+ * is not zero, then there *may* not be a terminating NUL.
+ */
+typedef struct {
+ void* txt_data; /* text file data */
+ size_t txt_size; /* actual file size */
+ size_t txt_full_size; /* mmaped mem size */
+ int txt_fd; /* file descriptor */
+ int txt_zero_fd; /* fd for /dev/zero */
+ int txt_errno; /* warning code */
+ int txt_prot; /* "prot" flags */
+ int txt_flags; /* mapping type */
+ int txt_alloc; /* if we malloced memory */
+} tmap_info_t;
+
+#define TEXT_MMAP_FAILED_ADDR(a) ((void*)(a) == (void*)MAP_FAILED)
+
+#ifdef __cplusplus
+extern "C" {
+#define CPLUSPLUS_CLOSER }
+#else
+#define CPLUSPLUS_CLOSER
+#endif
+
+/*
+ * The following routines may be coded into AutoOpts client code:
+ */
+
+/* From: tokenize.c line 115
+ *
+ * ao_string_tokenize - tokenize an input string
+ *
+ * Arguments:
+ * string string to be tokenized
+ *
+ * Returns: token_list_t* - pointer to a structure that lists each token
+ *
+ * This function will convert one input string into a list of strings.
+ * The list of strings is derived by separating the input based on
+ * white space separation. However, if the input contains either single
+ * or double quote characters, then the text after that character up to
+ * a matching quote will become the string in the list.
+ *
+ * The returned pointer should be deallocated with @code{free(3C)} when
+ * are done using the data. The data are placed in a single block of
+ * allocated memory. Do not deallocate individual token/strings.
+ *
+ * The structure pointed to will contain at least these two fields:
+ * @table @samp
+ * @item tkn_ct
+ * The number of tokens found in the input string.
+ * @item tok_list
+ * An array of @code{tkn_ct + 1} pointers to substring tokens, with
+ * the last pointer set to NULL.
+ * @end table
+ *
+ * There are two types of quoted strings: single quoted (@code{'}) and
+ * double quoted (@code{"}). Singly quoted strings are fairly raw in that
+ * escape characters (@code{\\}) are simply another character, except when
+ * preceding the following characters:
+ * @example
+ * @code{\\} double backslashes reduce to one
+ * @code{'} incorporates the single quote into the string
+ * @code{\n} suppresses both the backslash and newline character
+ * @end example
+ *
+ * Double quote strings are formed according to the rules of string
+ * constants in ANSI-C programs.
+ */
+extern token_list_t* ao_string_tokenize( char const* );
+
+
+/* From: configfile.c line 113
+ *
+ * configFileLoad - parse a configuration file
+ *
+ * Arguments:
+ * pzFile the file to load
+ *
+ * Returns: const tOptionValue* - An allocated, compound value structure
+ *
+ * This routine will load a named configuration file and parse the
+ * text as a hierarchically valued option. The option descriptor
+ * created from an option definition file is not used via this interface.
+ * The returned value is "named" with the input file name and is of
+ * type "@code{OPARG_TYPE_HIERARCHY}". It may be used in calls to
+ * @code{optionGetValue()}, @code{optionNextValue()} and
+ * @code{optionUnloadNested()}.
+ */
+extern const tOptionValue* configFileLoad( char const* );
+
+
+/* From: configfile.c line 883
+ *
+ * optionFileLoad - Load the locatable config files, in order
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ * pzProg program name
+ *
+ * Returns: int - 0 -> SUCCESS, -1 -> FAILURE
+ *
+ * This function looks in all the specified directories for a configuration
+ * file ("rc" file or "ini" file) and processes any found twice. The first
+ * time through, they are processed in reverse order (last file first). At
+ * that time, only "immediate action" configurables are processed. For
+ * example, if the last named file specifies not processing any more
+ * configuration files, then no more configuration files will be processed.
+ * Such an option in the @strong{first} named directory will have no effect.
+ *
+ * Once the immediate action configurables have been handled, then the
+ * directories are handled in normal, forward order. In that way, later
+ * config files can override the settings of earlier config files.
+ *
+ * See the AutoOpts documentation for a thorough discussion of the
+ * config file format.
+ *
+ * Configuration files not found or not decipherable are simply ignored.
+ */
+extern int optionFileLoad( tOptions*, char const* );
+
+
+/* From: configfile.c line 245
+ *
+ * optionFindNextValue - find a hierarcicaly valued option instance
+ *
+ * Arguments:
+ * pOptDesc an option with a nested arg type
+ * pPrevVal the last entry
+ * name name of value to find
+ * value the matching value
+ *
+ * Returns: const tOptionValue* - a compound value structure
+ *
+ * This routine will find the next entry in a nested value option or
+ * configurable. It will search through the list and return the next entry
+ * that matches the criteria.
+ */
+extern const tOptionValue* optionFindNextValue( const tOptDesc*, const tOptionValue*, char const*, char const* );
+
+
+/* From: configfile.c line 171
+ *
+ * optionFindValue - find a hierarcicaly valued option instance
+ *
+ * Arguments:
+ * pOptDesc an option with a nested arg type
+ * name name of value to find
+ * value the matching value
+ *
+ * Returns: const tOptionValue* - a compound value structure
+ *
+ * This routine will find an entry in a nested value option or configurable.
+ * It will search through the list and return a matching entry.
+ */
+extern const tOptionValue* optionFindValue( const tOptDesc*, char const*, char const* );
+
+
+/* From: restore.c line 188
+ *
+ * optionFree - free allocated option processing memory
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ *
+ * AutoOpts sometimes allocates memory and puts pointers to it in the
+ * option state structures. This routine deallocates all such memory.
+ */
+extern void optionFree( tOptions* );
+
+
+/* From: configfile.c line 314
+ *
+ * optionGetValue - get a specific value from a hierarcical list
+ *
+ * Arguments:
+ * pOptValue a hierarchcal value
+ * valueName name of value to get
+ *
+ * Returns: const tOptionValue* - a compound value structure
+ *
+ * This routine will find an entry in a nested value option or configurable.
+ * If "valueName" is NULL, then the first entry is returned. Otherwise,
+ * the first entry with a name that exactly matches the argument will be
+ * returned.
+ */
+extern const tOptionValue* optionGetValue( const tOptionValue*, char const* );
+
+
+/* From: load.c line 521
+ *
+ * optionLoadLine - process a string for an option name and value
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ * pzLine NUL-terminated text
+ *
+ * This is a client program callable routine for setting options from, for
+ * example, the contents of a file that they read in. Only one option may
+ * appear in the text. It will be treated as a normal (non-preset) option.
+ *
+ * When passed a pointer to the option struct and a string, it will find
+ * the option named by the first token on the string and set the option
+ * argument to the remainder of the string. The caller must NUL terminate
+ * the string. Any embedded new lines will be included in the option
+ * argument. If the input looks like one or more quoted strings, then the
+ * input will be "cooked". The "cooking" is identical to the string
+ * formation used in AutoGen definition files (@pxref{basic expression}),
+ * except that you may not use backquotes.
+ */
+extern void optionLoadLine( tOptions*, char const* );
+
+
+/* From: configfile.c line 373
+ *
+ * optionNextValue - get the next value from a hierarchical list
+ *
+ * Arguments:
+ * pOptValue a hierarchcal list value
+ * pOldValue a value from this list
+ *
+ * Returns: const tOptionValue* - a compound value structure
+ *
+ * This routine will return the next entry after the entry passed in. At the
+ * end of the list, NULL will be returned. If the entry is not found on the
+ * list, NULL will be returned and "@var{errno}" will be set to EINVAL.
+ * The "@var{pOldValue}" must have been gotten from a prior call to this
+ * routine or to "@code{opitonGetValue()}".
+ */
+extern const tOptionValue* optionNextValue( const tOptionValue*, const tOptionValue* );
+
+
+/* From: usage.c line 128
+ *
+ * optionOnlyUsage - Print usage text for just the options
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ * ex_code exit code for calling exit(3)
+ *
+ * This routine will print only the usage for each option.
+ * This function may be used when the emitted usage must incorporate
+ * information not available to AutoOpts.
+ */
+extern void optionOnlyUsage( tOptions*, int );
+
+
+/* From: autoopts.c line 1012
+ *
+ * optionProcess - this is the main option processing routine
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ * argc program arg count
+ * argv program arg vector
+ *
+ * Returns: int - the count of the arguments processed
+ *
+ * This is the main entry point for processing options. It is intended
+ * that this procedure be called once at the beginning of the execution of
+ * a program. Depending on options selected earlier, it is sometimes
+ * necessary to stop and restart option processing, or to select completely
+ * different sets of options. This can be done easily, but you generally
+ * do not want to do this.
+ *
+ * The number of arguments processed always includes the program name.
+ * If one of the arguments is "--", then it is counted and the processing
+ * stops. If an error was encountered and errors are to be tolerated, then
+ * the returned value is the index of the argument causing the error.
+ * A hyphen by itself ("-") will also cause processing to stop and will
+ * @emph{not} be counted among the processed arguments. A hyphen by itself
+ * is treated as an operand. Encountering an operand stops option
+ * processing.
+ */
+extern int optionProcess( tOptions*, int, char** );
+
+
+/* From: restore.c line 145
+ *
+ * optionRestore - restore option state from memory copy
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ *
+ * Copy back the option state from saved memory.
+ * The allocated memory is left intact, so this routine can be
+ * called repeatedly without having to call optionSaveState again.
+ * If you are restoring a state that was saved before the first call
+ * to optionProcess(3AO), then you may change the contents of the
+ * argc/argv parameters to optionProcess.
+ */
+extern void optionRestore( tOptions* );
+
+
+/* From: save.c line 334
+ *
+ * optionSaveFile - saves the option state to a file
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ *
+ * This routine will save the state of option processing to a file. The name
+ * of that file can be specified with the argument to the @code{--save-opts}
+ * option, or by appending the @code{rcfile} attribute to the last
+ * @code{homerc} attribute. If no @code{rcfile} attribute was specified, it
+ * will default to @code{.@i{programname}rc}. If you wish to specify another
+ * file, you should invoke the @code{SET_OPT_SAVE_OPTS( @i{filename} )} macro.
+ */
+extern void optionSaveFile( tOptions* );
+
+
+/* From: restore.c line 93
+ *
+ * optionSaveState - saves the option state to memory
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ *
+ * This routine will allocate enough memory to save the current option
+ * processing state. If this routine has been called before, that memory
+ * will be reused. You may only save one copy of the option state. This
+ * routine may be called before optionProcess(3AO). If you do call it
+ * before the first call to optionProcess, then you may also change the
+ * contents of argc/argv after you call optionRestore(3AO)
+ *
+ * In fact, more strongly put: it is safest to only use this function
+ * before having processed any options. In particular, the saving and
+ * restoring of stacked string arguments and hierarchical values is
+ * disabled. The values are not saved.
+ */
+extern void optionSaveState( tOptions* );
+
+
+/* From: nested.c line 559
+ *
+ * optionUnloadNested - Deallocate the memory for a nested value
+ *
+ * Arguments:
+ * pOptVal the hierarchical value
+ *
+ * A nested value needs to be deallocated. The pointer passed in should
+ * have been gotten from a call to @code{configFileLoad()} (See
+ * @pxref{libopts-configFileLoad}).
+ */
+extern void optionUnloadNested( tOptionValue const * );
+
+
+/* From: version.c line 58
+ *
+ * optionVersion - return the compiled AutoOpts version number
+ *
+ * Returns: char const* - the version string in constant memory
+ *
+ * Returns the full version string compiled into the library.
+ * The returned string cannot be modified.
+ */
+extern char const* optionVersion( void );
+
+
+/* From: ../compat/pathfind.c line 34
+ *
+ * pathfind - fild a file in a list of directories
+ *
+ * Arguments:
+ * path colon separated list of search directories
+ * file the name of the file to look for
+ * mode the mode bits that must be set to match
+ *
+ * Returns: char* - the path to the located file
+ *
+ * the pathfind function is available only if HAVE_PATHFIND is not defined
+ *
+ * pathfind looks for a a file with name "FILE" and "MODE" access
+ * along colon delimited "PATH", and returns the full pathname as a
+ * string, or NULL if not found. If "FILE" contains a slash, then
+ * it is treated as a relative or absolute path and "PATH" is ignored.
+ *
+ * @strong{NOTE}: this function is compiled into @file{libopts} only if
+ * it is not natively supplied.
+ *
+ * The "MODE" argument is a string of option letters chosen from the
+ * list below:
+ * @example
+ * Letter Meaning
+ * r readable
+ * w writable
+ * x executable
+ * f normal file (NOT IMPLEMENTED)
+ * b block special (NOT IMPLEMENTED)
+ * c character special (NOT IMPLEMENTED)
+ * d directory (NOT IMPLEMENTED)
+ * p FIFO (pipe) (NOT IMPLEMENTED)
+ * u set user ID bit (NOT IMPLEMENTED)
+ * g set group ID bit (NOT IMPLEMENTED)
+ * k sticky bit (NOT IMPLEMENTED)
+ * s size nonzero (NOT IMPLEMENTED)
+ * @end example
+ */
+#ifndef HAVE_PATHFIND
+extern char* pathfind( char const*, char const*, char const* );
+#endif /* HAVE_PATHFIND */
+
+
+/* From: streqvcmp.c line 233
+ *
+ * strequate - map a list of characters to the same value
+ *
+ * Arguments:
+ * ch_list characters to equivalence
+ *
+ * Each character in the input string get mapped to the first character
+ * in the string.
+ * This function name is mapped to option_strequate so as to not conflict
+ * with the POSIX name space.
+ */
+extern void strequate( char const* );
+
+
+/* From: streqvcmp.c line 143
+ *
+ * streqvcmp - compare two strings with an equivalence mapping
+ *
+ * Arguments:
+ * str1 first string
+ * str2 second string
+ *
+ * Returns: int - the difference between two differing characters
+ *
+ * Using a character mapping, two strings are compared for "equivalence".
+ * Each input character is mapped to a comparison character and the
+ * mapped-to characters are compared for the two NUL terminated input strings.
+ * This function name is mapped to option_streqvcmp so as to not conflict
+ * with the POSIX name space.
+ */
+extern int streqvcmp( char const*, char const* );
+
+
+/* From: streqvcmp.c line 180
+ *
+ * streqvmap - Set the character mappings for the streqv functions
+ *
+ * Arguments:
+ * From Input character
+ * To Mapped-to character
+ * ct compare length
+ *
+ * Set the character mapping. If the count (@code{ct}) is set to zero, then
+ * the map is cleared by setting all entries in the map to their index
+ * value. Otherwise, the "@code{From}" character is mapped to the "@code{To}"
+ * character. If @code{ct} is greater than 1, then @code{From} and @code{To}
+ * are incremented and the process repeated until @code{ct} entries have been
+ * set. For example,
+ * @example
+ * streqvmap( 'a', 'A', 26 );
+ * @end example
+ * @noindent
+ * will alter the mapping so that all English lower case letters
+ * will map to upper case.
+ *
+ * This function name is mapped to option_streqvmap so as to not conflict
+ * with the POSIX name space.
+ */
+extern void streqvmap( char, char, int );
+
+
+/* From: streqvcmp.c line 102
+ *
+ * strneqvcmp - compare two strings with an equivalence mapping
+ *
+ * Arguments:
+ * str1 first string
+ * str2 second string
+ * ct compare length
+ *
+ * Returns: int - the difference between two differing characters
+ *
+ * Using a character mapping, two strings are compared for "equivalence".
+ * Each input character is mapped to a comparison character and the
+ * mapped-to characters are compared for the two NUL terminated input strings.
+ * The comparison is limited to @code{ct} bytes.
+ * This function name is mapped to option_strneqvcmp so as to not conflict
+ * with the POSIX name space.
+ */
+extern int strneqvcmp( char const*, char const*, int );
+
+
+/* From: streqvcmp.c line 259
+ *
+ * strtransform - convert a string into its mapped-to value
+ *
+ * Arguments:
+ * dest output string
+ * src input string
+ *
+ * Each character in the input string is mapped and the mapped-to
+ * character is put into the output.
+ * This function name is mapped to option_strtransform so as to not conflict
+ * with the POSIX name space.
+ */
+extern void strtransform( char*, char const* );
+
+/* AutoOpts PRIVATE FUNCTIONS: */
+tOptProc optionStackArg, optionUnstackArg, optionBooleanVal, optionNumericVal;
+
+extern char* ao_string_cook( char*, int* );
+
+extern unsigned int ao_string_cook_escape_char( char const*, char*, unsigned int );
+
+extern void export_options_to_guile( tOptions* );
+
+extern void genshelloptUsage( tOptions*, int );
+
+extern void optionBooleanVal( tOptions*, tOptDesc* );
+
+extern uintptr_t optionEnumerationVal( tOptions*, tOptDesc*, char const * const *, unsigned int );
+
+extern char const* optionKeywordName( tOptDesc*, unsigned int );
+
+extern void optionLoadOpt( tOptions*, tOptDesc* );
+
+extern ag_bool optionMakePath( char*, int, char const*, char const* );
+
+extern void optionNestedVal( tOptions*, tOptDesc* );
+
+extern void optionNumericVal( tOptions*, tOptDesc* );
+
+extern void optionPagedUsage( tOptions*, tOptDesc* );
+
+extern void optionParseShell( tOptions* );
+
+extern void optionPrintVersion( tOptions*, tOptDesc* );
+
+extern void optionPutShell( tOptions* );
+
+extern void optionSetMembers( tOptions*, tOptDesc*, char const * const *, unsigned int );
+
+extern void optionStackArg( tOptions*, tOptDesc* );
+
+extern void optionUnstackArg( tOptions*, tOptDesc* );
+
+extern void optionUsage( tOptions*, int );
+
+extern void optionVersionStderr( tOptions*, tOptDesc* );
+
+extern void* text_mmap( char const*, int, int, tmap_info_t* );
+
+extern int text_munmap( tmap_info_t* );
+
+CPLUSPLUS_CLOSER
+#endif /* AUTOOPTS_OPTIONS_H_GUARD */
+/*
+ * Local Variables:
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * options.h ends here */
diff --git a/contrib/ntp/libopts/autoopts/usage-txt.h b/contrib/ntp/libopts/autoopts/usage-txt.h
new file mode 100644
index 0000000..5aaaa01
--- /dev/null
+++ b/contrib/ntp/libopts/autoopts/usage-txt.h
@@ -0,0 +1,355 @@
+/* -*- buffer-read-only: t -*- vi: set ro:
+ *
+ * DO NOT EDIT THIS FILE (usage-txt.h)
+ *
+ * It has been AutoGen-ed Saturday May 5, 2007 at 12:02:33 PM PDT
+ * From the definitions usage-txt.def
+ * and the template file usage-txt.tpl
+ *
+ * This file handles all the bookkeeping required for tracking all the little
+ * tiny strings used by the AutoOpts library. There are 113
+ * of them. This is not versioned because it is entirely internal to the
+ * library and accessed by client code only in a very well-controlled way:
+ * they may substitute translated strings using a procedure that steps through
+ * all the string pointers.
+ *
+ * AutoOpts is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * AutoOpts 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with AutoOpts. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef AUTOOPTS_USAGE_TXT_H_GUARD
+#define AUTOOPTS_USAGE_TXT_H_GUARD
+
+#undef cch_t
+#define cch_t char const
+
+/*
+ * One structure to hold all the pointers to all the stringlets.
+ */
+typedef struct {
+ int field_ct;
+ char* utpz_GnuBoolArg;
+ char* utpz_GnuKeyArg;
+ char* utpz_GnuKeyLArg;
+ char* utpz_GnuNumArg;
+ char* utpz_GnuStrArg;
+ cch_t* apz_str[ 108 ];
+} usage_text_t;
+
+/*
+ * Declare the global structure with all the pointers to translated
+ * strings. This is then used by the usage generation procedure.
+ */
+extern usage_text_t option_usage_text;
+
+#if defined(AUTOOPTS_INTERNAL) /* DEFINE ALL THE STRINGS = = = = = */
+/*
+ * Provide a mapping from a short name to fields in this structure.
+ */
+#define zAO_Bad (option_usage_text.apz_str[ 0])
+#define zAO_Big (option_usage_text.apz_str[ 1])
+#define zAO_Err (option_usage_text.apz_str[ 2])
+#define zAO_Sml (option_usage_text.apz_str[ 3])
+#define zAll (option_usage_text.apz_str[ 4])
+#define zAlt (option_usage_text.apz_str[ 5])
+#define zAmbigKey (option_usage_text.apz_str[ 6])
+#define zAmbiguous (option_usage_text.apz_str[ 7])
+#define zArgsMust (option_usage_text.apz_str[ 8])
+#define zAtMost (option_usage_text.apz_str[ 9])
+#define zAuto (option_usage_text.apz_str[ 10])
+#define zBadPipe (option_usage_text.apz_str[ 11])
+#define zBadVerArg (option_usage_text.apz_str[ 12])
+#define zCantFmt (option_usage_text.apz_str[ 13])
+#define zCantSave (option_usage_text.apz_str[ 14])
+#define zDefaultOpt (option_usage_text.apz_str[ 15])
+#define zDis (option_usage_text.apz_str[ 16])
+#define zEnab (option_usage_text.apz_str[ 17])
+#define zEquiv (option_usage_text.apz_str[ 18])
+#define zErrOnly (option_usage_text.apz_str[ 19])
+#define zExamineFmt (option_usage_text.apz_str[ 20])
+#define zFiveSpaces (option_usage_text.apz_str[ 21])
+#define zFlagOkay (option_usage_text.apz_str[ 22])
+#define zFmtFmt (option_usage_text.apz_str[ 23])
+#define zForkFail (option_usage_text.apz_str[ 24])
+#define zFSErrOptLoad (option_usage_text.apz_str[ 25])
+#define zFSErrReadFile (option_usage_text.apz_str[ 26])
+#define zGenshell (option_usage_text.apz_str[ 27])
+#define zGnuBoolArg (option_usage_text.utpz_GnuBoolArg)
+#define zGnuBreak (option_usage_text.apz_str[ 28])
+#define zGnuKeyArg (option_usage_text.utpz_GnuKeyArg)
+#define zGnuKeyLArg (option_usage_text.utpz_GnuKeyLArg)
+#define zGnuNestArg (option_usage_text.apz_str[ 29])
+#define zGnuNumArg (option_usage_text.utpz_GnuNumArg)
+#define zGnuOptArg (option_usage_text.apz_str[ 30])
+#define zGnuOptFmt (option_usage_text.apz_str[ 31])
+#define zGnuStrArg (option_usage_text.utpz_GnuStrArg)
+#define zIllOptChr (option_usage_text.apz_str[ 32])
+#define zIllOptStr (option_usage_text.apz_str[ 33])
+#define zIllegal (option_usage_text.apz_str[ 34])
+#define zInvalOptDesc (option_usage_text.apz_str[ 35])
+#define zKeyWords (option_usage_text.apz_str[ 36])
+#define zLoadCooked (option_usage_text.apz_str[ 37])
+#define zLoadKeep (option_usage_text.apz_str[ 38])
+#define zLoadType (option_usage_text.apz_str[ 39])
+#define zLoadUncooked (option_usage_text.apz_str[ 40])
+#define zLtypeInteger (option_usage_text.apz_str[ 41])
+#define zLtypeNest (option_usage_text.apz_str[ 42])
+#define zLtypeString (option_usage_text.apz_str[ 43])
+#define zLtypeBool (option_usage_text.apz_str[ 44])
+#define zLtypeKeyword (option_usage_text.apz_str[ 45])
+#define zLtypeSetMembership (option_usage_text.apz_str[ 46])
+#define zMembers (option_usage_text.apz_str[ 47])
+#define zMisArg (option_usage_text.apz_str[ 48])
+#define zMultiEquiv (option_usage_text.apz_str[ 49])
+#define zMust (option_usage_text.apz_str[ 50])
+#define zNeedOne (option_usage_text.apz_str[ 51])
+#define zNoArg (option_usage_text.apz_str[ 52])
+#define zNoArgs (option_usage_text.apz_str[ 53])
+#define zNoCreat (option_usage_text.apz_str[ 54])
+#define zNoFlags (option_usage_text.apz_str[ 55])
+#define zNoKey (option_usage_text.apz_str[ 56])
+#define zNoLim (option_usage_text.apz_str[ 57])
+#define zNoPreset (option_usage_text.apz_str[ 58])
+#define zNoRq_NoShrtTtl (option_usage_text.apz_str[ 59])
+#define zNoRq_ShrtTtl (option_usage_text.apz_str[ 60])
+#define zNoStat (option_usage_text.apz_str[ 61])
+#define zNoState (option_usage_text.apz_str[ 62])
+#define zNone (option_usage_text.apz_str[ 63])
+#define zNotDef (option_usage_text.apz_str[ 64])
+#define zNotEnough (option_usage_text.apz_str[ 65])
+#define zNotFile (option_usage_text.apz_str[ 66])
+#define zNotNumber (option_usage_text.apz_str[ 67])
+#define zNrmOptFmt (option_usage_text.apz_str[ 68])
+#define zNumberOpt (option_usage_text.apz_str[ 69])
+#define zOneSpace (option_usage_text.apz_str[ 70])
+#define zOnlyOne (option_usage_text.apz_str[ 71])
+#define zOptsOnly (option_usage_text.apz_str[ 72])
+#define zPathFmt (option_usage_text.apz_str[ 73])
+#define zPlsSendBugs (option_usage_text.apz_str[ 74])
+#define zPreset (option_usage_text.apz_str[ 75])
+#define zPresetFile (option_usage_text.apz_str[ 76])
+#define zPresetIntro (option_usage_text.apz_str[ 77])
+#define zProg (option_usage_text.apz_str[ 78])
+#define zProhib (option_usage_text.apz_str[ 79])
+#define zReorder (option_usage_text.apz_str[ 80])
+#define zReqFmt (option_usage_text.apz_str[ 81])
+#define zReqOptFmt (option_usage_text.apz_str[ 82])
+#define zReqThese (option_usage_text.apz_str[ 83])
+#define zReq_NoShrtTtl (option_usage_text.apz_str[ 84])
+#define zReq_ShrtTtl (option_usage_text.apz_str[ 85])
+#define zSepChars (option_usage_text.apz_str[ 86])
+#define zSetMembers (option_usage_text.apz_str[ 87])
+#define zSetMemberSettings (option_usage_text.apz_str[ 88])
+#define zShrtGnuOptFmt (option_usage_text.apz_str[ 89])
+#define zSixSpaces (option_usage_text.apz_str[ 90])
+#define zStdBoolArg (option_usage_text.apz_str[ 91])
+#define zStdBreak (option_usage_text.apz_str[ 92])
+#define zStdKeyArg (option_usage_text.apz_str[ 93])
+#define zStdKeyLArg (option_usage_text.apz_str[ 94])
+#define zStdNestArg (option_usage_text.apz_str[ 95])
+#define zStdNoArg (option_usage_text.apz_str[ 96])
+#define zStdNumArg (option_usage_text.apz_str[ 97])
+#define zStdOptArg (option_usage_text.apz_str[ 98])
+#define zStdReqArg (option_usage_text.apz_str[ 99])
+#define zStdStrArg (option_usage_text.apz_str[100])
+#define zTabHyp (option_usage_text.apz_str[101])
+#define zTabHypAnd (option_usage_text.apz_str[102])
+#define zTabout (option_usage_text.apz_str[103])
+#define zThreeSpaces (option_usage_text.apz_str[104])
+#define zTwoSpaces (option_usage_text.apz_str[105])
+#define zUpTo (option_usage_text.apz_str[106])
+#define zValidKeys (option_usage_text.apz_str[107])
+
+ /*
+ * First, set up the strings. Some of these are writable. These are all in
+ * English. This gets compiled into libopts and is distributed here so that
+ * xgettext (or equivalents) can extract these strings for translation.
+ */
+
+ static char eng_zGnuBoolArg[] = "=T/F";
+ static char eng_zGnuKeyArg[] = "=KWd";
+ static char eng_zGnuKeyLArg[] = "=Mbr";
+ static char eng_zGnuNumArg[] = "=num";
+ static char eng_zGnuStrArg[] = "=str";
+static char const usage_txt[3208] =
+ "AutoOpts function called without option descriptor\n\0"
+ "\tThis exceeds the compiled library version: \0"
+ "Automated Options Processing Error!\n"
+ "\t%s called AutoOpts function with structure version %d:%d:%d.\n\0"
+ "\tThis is less than the minimum library version: \0"
+ "all\0"
+ "\t\t\t\t- an alternate for %s\n\0"
+ "%s error: the keyword `%s' is ambiguous for %s\n\0"
+ "ambiguous\0"
+ "%s: Command line arguments required\n\0"
+ "%d %s%s options allowed\n\0"
+ "version and help options:\0"
+ "Error %d (%s) from the pipe(2) syscall\n\0"
+ "ERROR: version option argument '%c' invalid. Use:\n"
+ "\t'v' - version only\n"
+ "\t'c' - version and copyright\n"
+ "\t'n' - version and copyright notice\n\0"
+ "ERROR: %s option conflicts with the %s option\n\0"
+ "%s(optionSaveState): error: cannot allocate %d bytes\n\0"
+ "\t\t\t\t- default option for unnamed options\n\0"
+ "\t\t\t\t- disabled as --%s\n\0"
+ "\t\t\t\t- enabled by default\n\0"
+ "-equivalence\0"
+ "ERROR: only \0"
+ " - examining environment variables named %s_*\n\0"
+ " \0"
+ "Options are specified by doubled hyphens and their name\n"
+ "or by a single hyphen and the flag character.\n\0"
+ "%%-%ds %%s\n\0"
+ "fs error %d (%s) on fork - cannot obtain %s usage\n\0"
+ "File error %d (%s) opening %s for loading options\n\0"
+ "fs error %d (%s) reading file %s\n\0"
+ "\n"
+ "= = = = = = = =\n\n"
+ "This incarnation of genshell will produce\n"
+ "a shell script to parse the options for %s:\n\n\0"
+ "\n"
+ "%s\n\n\0"
+ "=Cplx\0"
+ "[=arg]\0"
+ "--%2$s%1$s\0"
+ "%s: illegal option -- %c\n\0"
+ "%s: %s option -- %s\n\0"
+ "illegal\0"
+ "AutoOpts ERROR: invalid option descriptor for %s\n\0"
+ "words=\0"
+ "cooked\0"
+ "keep\0"
+ "type=\0"
+ "uncooked\0"
+ "integer\0"
+ "nested\0"
+ "string\0"
+ "bool\0"
+ "keyword\0"
+ "set\0"
+ "\t\t\t\t- is a set membership option\n\0"
+ "%s: option `%s' requires an argument\n\0"
+ "Equivalenced option '%s' was equivalenced to both\n"
+ "\t'%s' and '%s'\0"
+ "\t\t\t\t- must appear between %d and %d times\n\0"
+ "ERROR: The %s option is required\n\0"
+ "%s: option `%s' cannot have an argument\n\0"
+ "%s: Command line arguments not allowed\n\0"
+ "error %d (%s) creating %s\n\0"
+ "Options are specified by single or double hyphens and their name.\n\0"
+ "%s error: `%s' does not match any %s keywords\n\0"
+ "\t\t\t\t- may appear multiple times\n\0"
+ "\t\t\t\t- may not be preset\n\0"
+ " Arg Option-Name Description\n\0"
+ " Flg Arg Option-Name Description\n\0"
+ "error %d (%s) stat-ing %s\n\0"
+ "%s(optionRestore): error: no saved option state\n\0"
+ "none\0"
+ "'%s' not defined\n\0"
+ "ERROR: The %s option must appear %d times\n\0"
+ "error: cannot load options from non-regular file %s\n\0"
+ "%s error: `%s' is not a recognizable number\n\0"
+ " %3s %s\0"
+ "The '-#<number>' option may omit the hash char\n\0"
+ " \0"
+ "one %s%s option allowed\n\0"
+ "All arguments are named options.\n\0"
+ " - reading file %s\0"
+ "\n"
+ "please send bug reports to: %s\n\0"
+ "\t\t\t\t- may NOT appear - preset only\n\0"
+ "# preset/initialization file\n"
+ "# %s#\n\0"
+ "\n"
+ "The following option preset mechanisms are supported:\n\0"
+ "program\0"
+ "prohibits these options:\n\0"
+ "Operands and options may be intermixed. They will be reordered.\n\0"
+ "ERROR: %s option requires the %s option\n\0"
+ " %3s %-14s %s\0"
+ "requires these options:\n\0"
+ " Arg Option-Name Req? Description\n\0"
+ " Flg Arg Option-Name Req? Description\n\0"
+ "-_^\0"
+ "members=\0"
+ "or you may use a numeric representation. Preceding these with a '!' will\n"
+ "clear the bits, specifying 'none' will clear all bits, and 'all' will set them\n"
+ "all. Multiple entries may be passed as an option argument list.\n\0"
+ "%s\0"
+ " \0"
+ "T/F\0"
+ "\n"
+ "%s\n\n"
+ "%s\0"
+ "KWd\0"
+ "Mbr\0"
+ "Cpx\0"
+ "no \0"
+ "Num\0"
+ "opt\0"
+ "YES\0"
+ "Str\0"
+ "\t\t\t\t- \0"
+ "\t\t\t\t-- and \0"
+ "\t\t\t\t%s\n\0"
+ " \0"
+ " \0"
+ "\t\t\t\t- may appear up to %d times\n\0"
+ "The valid \"%s\" option keywords are:\n\0";
+
+
+ /*
+ * Now, define (and initialize) the structure that contains
+ * the pointers to all these strings.
+ * Aren't you glad you don't maintain this by hand?
+ */
+ usage_text_t option_usage_text = {
+ 113,
+ eng_zGnuBoolArg, eng_zGnuKeyArg, eng_zGnuKeyLArg, eng_zGnuNumArg,
+ eng_zGnuStrArg,
+ {
+ usage_txt + 0, usage_txt + 52, usage_txt + 98, usage_txt + 197,
+ usage_txt + 247, usage_txt + 251, usage_txt + 278, usage_txt + 327,
+ usage_txt + 337, usage_txt + 374, usage_txt + 399, usage_txt + 425,
+ usage_txt + 465, usage_txt + 602, usage_txt + 650, usage_txt + 704,
+ usage_txt + 746, usage_txt + 770, usage_txt + 796, usage_txt + 809,
+ usage_txt + 823, usage_txt + 870, usage_txt + 876, usage_txt + 979,
+ usage_txt + 991, usage_txt +1042, usage_txt +1093, usage_txt +1127,
+ usage_txt +1233, usage_txt +1239, usage_txt +1245, usage_txt +1252,
+ usage_txt +1263, usage_txt +1289, usage_txt +1310, usage_txt +1318,
+ usage_txt +1369, usage_txt +1376, usage_txt +1383, usage_txt +1388,
+ usage_txt +1394, usage_txt +1403, usage_txt +1411, usage_txt +1418,
+ usage_txt +1425, usage_txt +1430, usage_txt +1438, usage_txt +1442,
+ usage_txt +1476, usage_txt +1514, usage_txt +1579, usage_txt +1622,
+ usage_txt +1657, usage_txt +1698, usage_txt +1738, usage_txt +1765,
+ usage_txt +1832, usage_txt +1880, usage_txt +1913, usage_txt +1938,
+ usage_txt +1973, usage_txt +2011, usage_txt +2038, usage_txt +2087,
+ usage_txt +2092, usage_txt +2110, usage_txt +2154, usage_txt +2208,
+ usage_txt +2254, usage_txt +2262, usage_txt +2310, usage_txt +2312,
+ usage_txt +2337, usage_txt +2371, usage_txt +2390, usage_txt +2424,
+ usage_txt +2460, usage_txt +2498, usage_txt +2554, usage_txt +2562,
+ usage_txt +2588, usage_txt +2654, usage_txt +2696, usage_txt +2710,
+ usage_txt +2735, usage_txt +2775, usage_txt +2818, usage_txt +2822,
+ usage_txt +2831, usage_txt +3050, usage_txt +3053, usage_txt +3060,
+ usage_txt +3064, usage_txt +3072, usage_txt +3076, usage_txt +3080,
+ usage_txt +3084, usage_txt +3088, usage_txt +3092, usage_txt +3096,
+ usage_txt +3100, usage_txt +3104, usage_txt +3111, usage_txt +3123,
+ usage_txt +3131, usage_txt +3135, usage_txt +3138, usage_txt +3171
+ }
+ };
+
+#endif /* DO_TRANSLATIONS */
+#endif /* AUTOOPTS_USAGE_TXT_H_GUARD */
diff --git a/contrib/ntp/libopts/boolean.c b/contrib/ntp/libopts/boolean.c
new file mode 100644
index 0000000..37148a9
--- /dev/null
+++ b/contrib/ntp/libopts/boolean.c
@@ -0,0 +1,106 @@
+
+/*
+ * $Id: boolean.c,v 4.10 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 10:10:39 bkorb"
+ *
+ * Automated Options Paged Usage module.
+ *
+ * This routine will run run-on options through a pager so the
+ * user may examine, print or edit them at their leisure.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/*=export_func optionBooleanVal
+ * private:
+ *
+ * what: Decipher a boolean value
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Decipher a true or false value for a boolean valued option argument.
+ * The value is true, unless it starts with 'n' or 'f' or "#f" or
+ * it is an empty string or it is a number that evaluates to zero.
+=*/
+void
+optionBooleanVal( tOptions* pOpts, tOptDesc* pOD )
+{
+ char* pz;
+ ag_bool res = AG_TRUE;
+
+ switch (*(pOD->optArg.argString)) {
+ case '0':
+ {
+ long val = strtol( pOD->optArg.argString, &pz, 0 );
+ if ((val != 0) || (*pz != NUL))
+ break;
+ /* FALLTHROUGH */
+ }
+ case 'N':
+ case 'n':
+ case 'F':
+ case 'f':
+ case NUL:
+ res = AG_FALSE;
+ break;
+ case '#':
+ if (pOD->optArg.argString[1] != 'f')
+ break;
+ res = AG_FALSE;
+ }
+
+ if (pOD->fOptState & OPTST_ALLOC_ARG) {
+ AGFREE(pOD->optArg.argString);
+ pOD->fOptState &= ~OPTST_ALLOC_ARG;
+ }
+ pOD->optArg.argBool = res;
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/boolean.c */
diff --git a/contrib/ntp/libopts/compat/compat.h b/contrib/ntp/libopts/compat/compat.h
new file mode 100644
index 0000000..b3bd58f
--- /dev/null
+++ b/contrib/ntp/libopts/compat/compat.h
@@ -0,0 +1,319 @@
+/* -*- Mode: C -*- */
+
+/* --- fake the preprocessor into handlng portability */
+/*
+ * Time-stamp: "2007-02-03 17:41:06 bkorb"
+ *
+ * Author: Gary V Vaughan <gvaughan@oranda.demon.co.uk>
+ * Created: Mon Jun 30 15:54:46 1997
+ *
+ * $Id: compat.h,v 4.16 2007/04/27 01:10:47 bkorb Exp $
+ */
+#ifndef COMPAT_H_GUARD
+#define COMPAT_H_GUARD 1
+
+#if defined(HAVE_CONFIG_H)
+# include <config.h>
+
+#elif defined(_WIN32) && !defined(__CYGWIN__)
+# include "windows-config.h"
+
+#else
+# error "compat.h" requires "config.h"
+ choke me.
+#endif
+
+
+#ifndef HAVE_STRSIGNAL
+ char * strsignal( int signo );
+#endif
+
+#define _GNU_SOURCE 1 /* for strsignal in GNU's libc */
+#define __USE_GNU 1 /* exact same thing as above */
+#define __EXTENSIONS__ 1 /* and another way to call for it */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * SYSTEM HEADERS:
+ */
+#include <sys/types.h>
+#ifdef HAVE_SYS_MMAN_H
+# include <sys/mman.h>
+#endif
+#include <sys/param.h>
+#if HAVE_SYS_PROCSET_H
+# include <sys/procset.h>
+#endif
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#if defined( HAVE_SOLARIS_SYSINFO )
+# include <sys/systeminfo.h>
+#elif defined( HAVE_UNAME_SYSCALL )
+# include <sys/utsname.h>
+#endif
+
+#ifdef DAEMON_ENABLED
+# if HAVE_SYS_STROPTS_H
+# include <sys/stropts.h>
+# endif
+
+# if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+# endif
+
+# if ! defined(HAVE_SYS_POLL_H) && ! defined(HAVE_SYS_SELECT_H)
+# error This system cannot support daemon processing
+ Choke Me.
+# endif
+
+# if HAVE_SYS_POLL_H
+# include <sys/poll.h>
+# endif
+
+# if HAVE_SYS_SELECT_H
+# include <sys/select.h>
+# endif
+
+# if HAVE_NETINET_IN_H
+# include <netinet/in.h>
+# endif
+
+# if HAVE_SYS_UN_H
+# include <sys/un.h>
+# endif
+#endif
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * USER HEADERS:
+ */
+#include <stdio.h>
+#include <assert.h>
+#include <ctype.h>
+
+/*
+ * Directory opening stuff:
+ */
+# if defined (_POSIX_SOURCE)
+/* Posix does not require that the d_ino field be present, and some
+ systems do not provide it. */
+# define REAL_DIR_ENTRY(dp) 1
+# else /* !_POSIX_SOURCE */
+# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0)
+# endif /* !_POSIX_SOURCE */
+
+# if defined (HAVE_DIRENT_H)
+# include <dirent.h>
+# define D_NAMLEN(dirent) strlen((dirent)->d_name)
+# else /* !HAVE_DIRENT_H */
+# define dirent direct
+# define D_NAMLEN(dirent) (dirent)->d_namlen
+# if defined (HAVE_SYS_NDIR_H)
+# include <sys/ndir.h>
+# endif /* HAVE_SYS_NDIR_H */
+# if defined (HAVE_SYS_DIR_H)
+# include <sys/dir.h>
+# endif /* HAVE_SYS_DIR_H */
+# if defined (HAVE_NDIR_H)
+# include <ndir.h>
+# endif /* HAVE_NDIR_H */
+# endif /* !HAVE_DIRENT_H */
+
+#include <errno.h>
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+#ifndef O_NONBLOCK
+# define O_NONBLOCK FNDELAY
+#endif
+
+#if defined(HAVE_LIBGEN) && defined(HAVE_LIBGEN_H)
+# include <libgen.h>
+#endif
+
+#if defined(HAVE_LIMITS_H) /* this is also in options.h */
+# include <limits.h>
+#elif defined(HAVE_SYS_LIMITS_H)
+# include <sys/limits.h>
+#endif /* HAVE_LIMITS/SYS_LIMITS_H */
+
+#include <memory.h>
+#include <setjmp.h>
+#include <signal.h>
+
+#if defined( HAVE_STDINT_H )
+# include <stdint.h>
+#elif defined( HAVE_INTTYPES_H )
+# include <inttypes.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <time.h>
+
+#ifdef HAVE_UTIME_H
+# include <utime.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * FIXUPS and CONVIENCE STUFF:
+ */
+#ifdef __cplusplus
+# define EXTERN extern "C"
+#else
+# define EXTERN extern
+#endif
+
+/* some systems #def errno! and others do not declare it!! */
+#ifndef errno
+ extern int errno;
+#endif
+
+/* Some machines forget this! */
+
+# ifndef EXIT_FAILURE
+# define EXIT_SUCCESS 0
+# define EXIT_FAILURE 1
+# endif
+
+#ifndef NUL
+# define NUL '\0'
+#endif
+
+#ifndef NULL
+# define NULL 0
+#endif
+
+#if !defined (MAXPATHLEN) && defined (HAVE_SYS_PARAM_H)
+# include <sys/param.h>
+#endif /* !MAXPATHLEN && HAVE_SYS_PARAM_H */
+
+#if !defined (MAXPATHLEN) && defined (PATH_MAX)
+# define MAXPATHLEN PATH_MAX
+#endif /* !MAXPATHLEN && PATH_MAX */
+
+#if !defined (MAXPATHLEN) && defined(_MAX_PATH)
+# define PATH_MAX _MAX_PATH
+# define MAXPATHLEN _MAX_PATH
+#endif
+
+#if !defined (MAXPATHLEN)
+# define MAXPATHLEN ((size_t)4096)
+#endif /* MAXPATHLEN */
+
+#define AG_PATH_MAX ((size_t)MAXPATHLEN)
+
+#ifndef LONG_MAX
+# define LONG_MAX ~(1L << (8*sizeof(long) -1))
+# define INT_MAX ~(1 << (8*sizeof(int) -1))
+#endif
+
+#ifndef ULONG_MAX
+# define ULONG_MAX ~(OUL)
+# define UINT_MAX ~(OU)
+#endif
+
+#ifndef SHORT_MAX
+# define SHORT_MAX ~(1 << (8*sizeof(short) -1))
+#else
+# define USHORT_MAX ~(OUS)
+#endif
+
+#ifndef HAVE_INT8_T
+ typedef signed char int8_t;
+#endif
+#ifndef HAVE_UINT8_T
+ typedef unsigned char uint8_t;
+#endif
+#ifndef HAVE_INT16_T
+ typedef signed short int16_t;
+#endif
+#ifndef HAVE_UINT16_T
+ typedef unsigned short uint16_t;
+#endif
+#ifndef HAVE_UINT_T
+ typedef unsigned int uint_t;
+#endif
+
+#ifndef HAVE_INT32_T
+# if SIZEOF_INT == 4
+ typedef signed int int32_t;
+# elif SIZEOF_LONG == 4
+ typedef signed long int32_t;
+# endif
+#endif
+
+#ifndef HAVE_UINT32_T
+# if SIZEOF_INT == 4
+ typedef unsigned int uint32_t;
+# elif SIZEOF_LONG == 4
+ typedef unsigned long uint32_t;
+# else
+# error Cannot create a uint32_t type.
+ Choke Me.
+# endif
+#endif
+
+#ifndef HAVE_INTPTR_T
+ typedef signed long intptr_t;
+#endif
+#ifndef HAVE_UINTPTR_T
+ typedef unsigned long uintptr_t;
+#endif
+
+/* redefine these for BSD style string libraries */
+#ifndef HAVE_STRCHR
+# define strchr index
+# define strrchr rindex
+#endif
+
+#ifdef USE_FOPEN_BINARY
+# ifndef FOPEN_BINARY_FLAG
+# define FOPEN_BINARY_FLAG "b"
+# endif
+# ifndef FOPEN_TEXT_FLAG
+# define FOPEN_TEXT_FLAG "t"
+# endif
+#else
+# ifndef FOPEN_BINARY_FLAG
+# define FOPEN_BINARY_FLAG
+# endif
+# ifndef FOPEN_TEXT_FLAG
+# define FOPEN_TEXT_FLAG
+# endif
+#endif
+
+#ifndef STR
+# define _STR(s) #s
+# define STR(s) _STR(s)
+#endif
+
+/* ##### Pointer sized word ##### */
+
+/* FIXME: the MAX stuff in here is broken! */
+#if SIZEOF_CHARP > SIZEOF_INT
+ typedef long t_word;
+ #define WORD_MAX LONG_MAX
+ #define WORD_MIN LONG_MIN
+#else /* SIZEOF_CHARP <= SIZEOF_INT */
+ typedef int t_word;
+ #define WORD_MAX INT_MAX
+ #define WORD_MIN INT_MIN
+#endif
+
+#endif /* COMPAT_H_GUARD */
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of compat/compat.h */
diff --git a/contrib/ntp/libopts/compat/pathfind.c b/contrib/ntp/libopts/compat/pathfind.c
new file mode 100644
index 0000000..96eb771
--- /dev/null
+++ b/contrib/ntp/libopts/compat/pathfind.c
@@ -0,0 +1,339 @@
+/* -*- Mode: C -*- */
+
+/* pathfind.c --- find a FILE MODE along PATH */
+
+/*
+ * Author: Gary V Vaughan <gvaughan@oranda.demon.co.uk>
+ * Time-stamp: "2006-09-23 19:46:16 bkorb"
+ * Created: Tue Jun 24 15:07:31 1997
+ * Last Modified: $Date: 2006/11/27 01:52:23 $
+ * by: bkorb
+ *
+ * $Id: pathfind.c,v 4.10 2006/11/27 01:52:23 bkorb Exp $
+ */
+
+/* Code: */
+
+#include "compat.h"
+#ifndef HAVE_PATHFIND
+#if defined(__windows__) && !defined(__CYGWIN__)
+char*
+pathfind( char const* path,
+ char const* fileName,
+ char const* mode )
+{
+ return NULL;
+}
+#else
+
+static char* make_absolute( char const *string, char const *dot_path );
+static char* canonicalize_pathname( char *path );
+static char* extract_colon_unit( char* dir, char const *string, int *p_index );
+
+
+/*=export_func pathfind
+ *
+ * what: fild a file in a list of directories
+ *
+ * ifndef: HAVE_PATHFIND
+ *
+ * arg: + char const* + path + colon separated list of search directories +
+ * arg: + char const* + file + the name of the file to look for +
+ * arg: + char const* + mode + the mode bits that must be set to match +
+ *
+ * ret_type: char*
+ * ret_desc: the path to the located file
+ *
+ * doc:
+ *
+ * pathfind looks for a a file with name "FILE" and "MODE" access
+ * along colon delimited "PATH", and returns the full pathname as a
+ * string, or NULL if not found. If "FILE" contains a slash, then
+ * it is treated as a relative or absolute path and "PATH" is ignored.
+ *
+ * @strong{NOTE}: this function is compiled into @file{libopts} only if
+ * it is not natively supplied.
+ *
+ * The "MODE" argument is a string of option letters chosen from the
+ * list below:
+ * @example
+ * Letter Meaning
+ * r readable
+ * w writable
+ * x executable
+ * f normal file (NOT IMPLEMENTED)
+ * b block special (NOT IMPLEMENTED)
+ * c character special (NOT IMPLEMENTED)
+ * d directory (NOT IMPLEMENTED)
+ * p FIFO (pipe) (NOT IMPLEMENTED)
+ * u set user ID bit (NOT IMPLEMENTED)
+ * g set group ID bit (NOT IMPLEMENTED)
+ * k sticky bit (NOT IMPLEMENTED)
+ * s size nonzero (NOT IMPLEMENTED)
+ * @end example
+ *
+ * example:
+ * To find the "ls" command using the "PATH" environment variable:
+ * @example
+ * #include <stdlib.h>
+ * char* pz_ls = pathfind( getenv("PATH"), "ls", "rx" );
+ * <<do whatever with pz_ls>>
+ * free( pz_ls );
+ * @end example
+ * The path is allocated with @code{malloc(3C)}, so you must @code{free(3C)}
+ * the result. Also, do not use unimplemented file modes. :-)
+ *
+ * err: returns NULL if the file is not found.
+=*/
+char*
+pathfind( char const* path,
+ char const* fileName,
+ char const* mode )
+{
+ int p_index = 0;
+ int mode_bits = 0;
+ char* pathName = NULL;
+ char zPath[ AG_PATH_MAX + 1 ];
+
+ if (strchr( mode, 'r' )) mode_bits |= R_OK;
+ if (strchr( mode, 'w' )) mode_bits |= W_OK;
+ if (strchr( mode, 'x' )) mode_bits |= X_OK;
+
+ /*
+ * FOR each non-null entry in the colon-separated path, DO ...
+ */
+ for (;;) {
+ DIR* dirP;
+ char* colon_unit = extract_colon_unit( zPath, path, &p_index );
+
+ /*
+ * IF no more entries, THEN quit
+ */
+ if (colon_unit == NULL)
+ break;
+
+ dirP = opendir( colon_unit );
+
+ /*
+ * IF the directory is inaccessable, THEN next directory
+ */
+ if (dirP == NULL)
+ continue;
+
+ /*
+ * FOR every entry in the given directory, ...
+ */
+ for (;;) {
+ struct dirent *entP = readdir( dirP );
+
+ if (entP == (struct dirent*)NULL)
+ break;
+
+ /*
+ * IF the file name matches the one we are looking for, ...
+ */
+ if (strcmp( entP->d_name, fileName ) == 0) {
+ char* pzFullName = make_absolute( fileName, colon_unit);
+
+ /*
+ * Make sure we can access it in the way we want
+ */
+ if (access( pzFullName, mode_bits ) >= 0) {
+ /*
+ * We can, so normalize the name and return it below
+ */
+ pathName = canonicalize_pathname( pzFullName );
+ }
+
+ free( (void*)pzFullName );
+ break;
+ }
+ }
+
+ closedir( dirP );
+
+ if (pathName != NULL)
+ break;
+ }
+
+ return pathName;
+}
+
+/*
+ * Turn STRING (a pathname) into an absolute pathname, assuming that
+ * DOT_PATH contains the symbolic location of `.'. This always returns
+ * a new string, even if STRING was an absolute pathname to begin with.
+ */
+static char*
+make_absolute( char const *string, char const *dot_path )
+{
+ char *result;
+ int result_len;
+
+ if (!dot_path || *string == '/') {
+ result = strdup( string );
+ } else {
+ if (dot_path && dot_path[0]) {
+ result = malloc( 2 + strlen( dot_path ) + strlen( string ) );
+ strcpy( result, dot_path );
+ result_len = strlen( result );
+ if (result[result_len - 1] != '/') {
+ result[result_len++] = '/';
+ result[result_len] = '\0';
+ }
+ } else {
+ result = malloc( 3 + strlen( string ) );
+ result[0] = '.'; result[1] = '/'; result[2] = '\0';
+ result_len = 2;
+ }
+
+ strcpy( result + result_len, string );
+ }
+
+ return result;
+}
+
+/*
+ * Canonicalize PATH, and return a new path. The new path differs from
+ * PATH in that:
+ *
+ * Multiple `/'s are collapsed to a single `/'.
+ * Leading `./'s are removed.
+ * Trailing `/.'s are removed.
+ * Trailing `/'s are removed.
+ * Non-leading `../'s and trailing `..'s are handled by removing
+ * portions of the path.
+ */
+static char*
+canonicalize_pathname( char *path )
+{
+ int i, start;
+ char stub_char, *result;
+
+ /* The result cannot be larger than the input PATH. */
+ result = strdup( path );
+
+ stub_char = (*path == '/') ? '/' : '.';
+
+ /* Walk along RESULT looking for things to compact. */
+ i = 0;
+ while (result[i]) {
+ while (result[i] != '\0' && result[i] != '/')
+ i++;
+
+ start = i++;
+
+ /* If we didn't find any slashes, then there is nothing left to
+ * do.
+ */
+ if (!result[start])
+ break;
+
+ /* Handle multiple `/'s in a row. */
+ while (result[i] == '/')
+ i++;
+
+#if !defined (apollo)
+ if ((start + 1) != i)
+#else
+ if ((start + 1) != i && (start != 0 || i != 2))
+#endif /* apollo */
+ {
+ strcpy( result + start + 1, result + i );
+ i = start + 1;
+ }
+
+ /* Handle backquoted `/'. */
+ if (start > 0 && result[start - 1] == '\\')
+ continue;
+
+ /* Check for trailing `/', and `.' by itself. */
+ if ((start && !result[i])
+ || (result[i] == '.' && !result[i+1])) {
+ result[--i] = '\0';
+ break;
+ }
+
+ /* Check for `../', `./' or trailing `.' by itself. */
+ if (result[i] == '.') {
+ /* Handle `./'. */
+ if (result[i + 1] == '/') {
+ strcpy( result + i, result + i + 1 );
+ i = (start < 0) ? 0 : start;
+ continue;
+ }
+
+ /* Handle `../' or trailing `..' by itself. */
+ if (result[i + 1] == '.' &&
+ (result[i + 2] == '/' || !result[i + 2])) {
+ while (--start > -1 && result[start] != '/')
+ ;
+ strcpy( result + start + 1, result + i + 2 );
+ i = (start < 0) ? 0 : start;
+ continue;
+ }
+ }
+ }
+
+ if (!*result) {
+ *result = stub_char;
+ result[1] = '\0';
+ }
+
+ return result;
+}
+
+/*
+ * Given a string containing units of information separated by colons,
+ * return the next one pointed to by (P_INDEX), or NULL if there are no
+ * more. Advance (P_INDEX) to the character after the colon.
+ */
+static char*
+extract_colon_unit( char* pzDir, char const *string, int *p_index )
+{
+ char* pzDest = pzDir;
+ int ix = *p_index;
+
+ if (string == NULL)
+ return NULL;
+
+ if ((unsigned)ix >= strlen( string ))
+ return NULL;
+
+ {
+ char const* pzSrc = string + ix;
+
+ while (*pzSrc == ':') pzSrc++;
+
+ for (;;) {
+ char ch = (*(pzDest++) = *(pzSrc++));
+ switch (ch) {
+ case ':':
+ pzDest[-1] = NUL;
+ case NUL:
+ goto copy_done;
+ }
+
+ if ((pzDest - pzDir) >= AG_PATH_MAX)
+ break;
+ } copy_done:;
+
+ ix = pzSrc - string;
+ }
+
+ if (*pzDir == NUL)
+ return NULL;
+
+ *p_index = ix;
+ return pzDir;
+}
+#endif /* __windows__ / __CYGWIN__ */
+#endif /* HAVE_PATHFIND */
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of compat/pathfind.c */
diff --git a/contrib/ntp/libopts/compat/snprintf.c b/contrib/ntp/libopts/compat/snprintf.c
new file mode 100644
index 0000000..fc91d63
--- /dev/null
+++ b/contrib/ntp/libopts/compat/snprintf.c
@@ -0,0 +1,60 @@
+
+#ifndef HAVE_VPRINTF
+#include "choke-me: no vprintf and no snprintf"
+#endif
+
+#if defined(HAVE_STDARG_H)
+# include <stdarg.h>
+# ifndef VA_START
+# define VA_START(a, f) va_start(a, f)
+# define VA_END(a) va_end(a)
+# endif /* VA_START */
+# define SNV_USING_STDARG_H
+
+#elif defined(HAVE_VARARGS_H)
+# include <varargs.h>
+# ifndef VA_START
+# define VA_START(a, f) va_start(a)
+# define VA_END(a) va_end(a)
+# endif /* VA_START */
+# undef SNV_USING_STDARG_H
+
+#else
+# include "must-have-stdarg-or-varargs"
+#endif
+
+static int
+snprintf(char *str, size_t n, char const *fmt, ...)
+{
+ va_list ap;
+ int rval;
+
+#ifdef VSPRINTF_CHARSTAR
+ char *rp;
+ VA_START(ap, fmt);
+ rp = vsprintf(str, fmt, ap);
+ VA_END(ap);
+ rval = strlen(rp);
+
+#else
+ VA_START(ap, fmt);
+ rval = vsprintf(str, fmt, ap);
+ VA_END(ap);
+#endif
+
+ if (rval > n) {
+ fprintf(stderr, "snprintf buffer overrun %d > %d\n", rval, (int)n);
+ abort();
+ }
+ return rval;
+}
+
+static int
+vsnprintf( char *str, size_t n, char const *fmt, va_list ap )
+{
+#ifdef VSPRINTF_CHARSTAR
+ return (strlen(vsprintf(str, fmt, ap)));
+#else
+ return (vsprintf(str, fmt, ap));
+#endif
+}
diff --git a/contrib/ntp/libopts/compat/strchr.c b/contrib/ntp/libopts/compat/strchr.c
new file mode 100644
index 0000000..413f999
--- /dev/null
+++ b/contrib/ntp/libopts/compat/strchr.c
@@ -0,0 +1,60 @@
+/*
+ SYNOPSIS
+ #include <string.h>
+
+ char *strchr(char const *s, int c);
+
+ char *strrchr(char const *s, int c);
+
+ DESCRIPTION
+ The strchr() function returns a pointer to the first occurrence of the
+ character c in the string s.
+
+ The strrchr() function returns a pointer to the last occurrence of the
+ character c in the string s.
+
+ Here "character" means "byte" - these functions do not work with wide
+ or multi-byte characters.
+
+ RETURN VALUE
+ The strchr() and strrchr() functions return a pointer to the matched
+ character or NULL if the character is not found.
+
+ CONFORMING TO
+ SVID 3, POSIX, BSD 4.3, ISO 9899
+*/
+
+char*
+strchr( char const *s, int c)
+{
+ do {
+ if ((unsigned)*s == (unsigned)c)
+ return s;
+
+ } while (*(++s) != NUL);
+
+ return NULL;
+}
+
+char*
+strrchr( char const *s, int c)
+{
+ char const *e = s + strlen(s);
+
+ for (;;) {
+ if (--e < s)
+ break;
+
+ if ((unsigned)*e == (unsigned)c)
+ return e;
+ }
+ return NULL;
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of compat/strsignal.c */
diff --git a/contrib/ntp/libopts/compat/strdup.c b/contrib/ntp/libopts/compat/strdup.c
new file mode 100644
index 0000000..e2933a8
--- /dev/null
+++ b/contrib/ntp/libopts/compat/strdup.c
@@ -0,0 +1,19 @@
+/*
+ * Platforms without strdup ?!?!?!
+ */
+
+static char *
+strdup( char const *s )
+{
+ char *cp;
+
+ if (s == NULL)
+ return NULL;
+
+ cp = (char *) AGALOC((unsigned) (strlen(s)+1), "strdup");
+
+ if (cp != NULL)
+ (void) strcpy(cp, s);
+
+ return cp;
+}
diff --git a/contrib/ntp/libopts/compat/windows-config.h b/contrib/ntp/libopts/compat/windows-config.h
new file mode 100644
index 0000000..2612980
--- /dev/null
+++ b/contrib/ntp/libopts/compat/windows-config.h
@@ -0,0 +1,130 @@
+
+/*
+ * Time-stamp: "2006-10-14 14:55:09 bkorb"
+ * by: bkorb
+ * Last Committed: $Date: 2007/04/28 22:19:23 $
+ */
+#ifndef WINDOWS_CONFIG_HACKERY
+#define WINDOWS_CONFIG_HACKERY 1
+
+/*
+ * The definitions below have been stolen from NTP's config.h for Windows.
+ * However, they may be kept here in order to keep libopts independent from
+ * the NTP project.
+ */
+#ifndef __windows__
+# define __windows__ 4
+#endif
+
+/*
+ * Miscellaneous functions that Microsoft maps
+ * to other names
+ *
+ * #define inline __inline
+ * #define vsnprintf _vsnprintf
+ */
+#define snprintf _snprintf
+/*
+ * #define stricmp _stricmp
+ * #define strcasecmp _stricmp
+ * #define isascii __isascii
+ * #define finite _finite
+ * #define random rand
+ * #define srandom srand
+ */
+
+#define SIZEOF_INT 4
+#define SIZEOF_CHARP 4
+#define SIZEOF_LONG 4
+#define SIZEOF_SHORT 2
+
+typedef unsigned long uintptr_t;
+
+/*
+ * # define HAVE_NET_IF_H
+ * # define QSORT_USES_VOID_P
+ * # define HAVE_SETVBUF
+ * # define HAVE_VSPRINTF
+ * # define HAVE_SNPRINTF
+ * # define HAVE_VSNPRINTF
+ * # define HAVE_PROTOTYPES /* from ntpq.mak * /
+ * # define HAVE_MEMMOVE
+ * # define HAVE_TERMIOS_H
+ * # define HAVE_ERRNO_H
+ * # define HAVE_STDARG_H
+ * # define HAVE_NO_NICE
+ * # define HAVE_MKTIME
+ * # define TIME_WITH_SYS_TIME
+ * # define HAVE_IO_COMPLETION_PORT
+ * # define ISC_PLATFORM_NEEDNTOP
+ * # define ISC_PLATFORM_NEEDPTON
+ * # define NEED_S_CHAR_TYPEDEF
+ * # define USE_PROTOTYPES /* for ntp_types.h * /
+ *
+ * #define ULONG_CONST(a) a ## UL
+ */
+
+#define HAVE_LIMITS_H 1
+#define HAVE_STRDUP 1
+#define HAVE_STRCHR 1
+#define HAVE_FCNTL_H 1
+
+/*
+ * VS.NET's version of wspiapi.h has a bug in it
+ * where it assigns a value to a variable inside
+ * an if statement. It should be comparing them.
+ * We prevent inclusion since we are not using this
+ * code so we don't have to see the warning messages
+ */
+#ifndef _WSPIAPI_H_
+#define _WSPIAPI_H_
+#endif
+
+/* Prevent inclusion of winsock.h in windows.h */
+#ifndef _WINSOCKAPI_
+#define _WINSOCKAPI_
+#endif
+
+#ifndef __RPCASYNC_H__
+#define __RPCASYNC_H__
+#endif
+
+/* Include Windows headers */
+#include <windows.h>
+#include <winsock2.h>
+#include <limits.h>
+
+/*
+ * Compatibility declarations for Windows, assuming SYS_WINNT
+ * has been defined.
+ */
+#define strdup _strdup
+#define stat _stat /* struct stat from <sys/stat.h> */
+#define unlink _unlink
+#define fchmod( _x, _y );
+#define ssize_t SSIZE_T
+
+#include <io.h>
+#define open _open
+#define close _close
+#define read _read
+#define write _write
+#define lseek _lseek
+#define pipe _pipe
+#define dup2 _dup2
+
+#define O_RDWR _O_RDWR
+#define O_RDONLY _O_RDONLY
+#define O_EXCL _O_EXCL
+
+#ifndef S_ISREG
+# define S_IFREG _S_IFREG
+# define S_ISREG(mode) (((mode) & S_IFREG) == S_IFREG)
+#endif
+
+#ifndef S_ISDIR
+# define S_IFDIR _S_IFDIR
+# define S_ISDIR(mode) (((mode) & S_IFDIR) == S_IFDIR)
+#endif
+
+#endif /* WINDOWS_CONFIG_HACKERY */
diff --git a/contrib/ntp/libopts/configfile.c b/contrib/ntp/libopts/configfile.c
new file mode 100644
index 0000000..e0b8a74
--- /dev/null
+++ b/contrib/ntp/libopts/configfile.c
@@ -0,0 +1,1290 @@
+/*
+ * $Id: configfile.c,v 1.21 2007/04/15 19:01:18 bkorb Exp $
+ * Time-stamp: "2007-04-15 11:22:46 bkorb"
+ *
+ * configuration/rc/ini file handling.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+filePreset(
+ tOptions* pOpts,
+ char const* pzFileName,
+ int direction );
+
+static char*
+handleComment( char* pzText );
+
+static char*
+handleConfig(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzText,
+ int direction );
+
+static char*
+handleDirective(
+ tOptions* pOpts,
+ char* pzText );
+
+static char*
+handleProgramSection(
+ tOptions* pOpts,
+ char* pzText );
+
+static char*
+handleStructure(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzText,
+ int direction );
+
+static char*
+parseKeyWordType(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionValue* pType );
+
+static char*
+parseLoadMode(
+ char* pzText,
+ tOptionLoadMode* pMode );
+
+static char*
+parseSetMemType(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionValue* pType );
+
+static char*
+parseValueType(
+ char* pzText,
+ tOptionValue* pType );
+
+static char*
+skipUnknown( char* pzText );
+/* = = = END-STATIC-FORWARD = = = */
+
+
+/*=export_func configFileLoad
+ *
+ * what: parse a configuration file
+ * arg: + char const* + pzFile + the file to load +
+ *
+ * ret_type: const tOptionValue*
+ * ret_desc: An allocated, compound value structure
+ *
+ * doc:
+ * This routine will load a named configuration file and parse the
+ * text as a hierarchically valued option. The option descriptor
+ * created from an option definition file is not used via this interface.
+ * The returned value is "named" with the input file name and is of
+ * type "@code{OPARG_TYPE_HIERARCHY}". It may be used in calls to
+ * @code{optionGetValue()}, @code{optionNextValue()} and
+ * @code{optionUnloadNested()}.
+ *
+ * err:
+ * If the file cannot be loaded or processed, @code{NULL} is returned and
+ * @var{errno} is set. It may be set by a call to either @code{open(2)}
+ * @code{mmap(2)} or other file system calls, or it may be:
+ * @itemize @bullet
+ * @item
+ * @code{ENOENT} - the file was empty.
+ * @item
+ * @code{EINVAL} - the file contents are invalid -- not properly formed.
+ * @item
+ * @code{ENOMEM} - not enough memory to allocate the needed structures.
+ * @end itemize
+=*/
+const tOptionValue*
+configFileLoad( char const* pzFile )
+{
+ tmap_info_t cfgfile;
+ tOptionValue* pRes = NULL;
+ tOptionLoadMode save_mode = option_load_mode;
+
+ char* pzText =
+ text_mmap( pzFile, PROT_READ, MAP_PRIVATE, &cfgfile );
+
+ if (TEXT_MMAP_FAILED_ADDR(pzText))
+ return NULL; /* errno is set */
+
+ option_load_mode = OPTION_LOAD_COOKED;
+ pRes = optionLoadNested(pzText, pzFile, strlen(pzFile));
+
+ if (pRes == NULL) {
+ int err = errno;
+ text_munmap( &cfgfile );
+ errno = err;
+ } else
+ text_munmap( &cfgfile );
+
+ option_load_mode = save_mode;
+ return pRes;
+}
+
+
+/*=export_func optionFindValue
+ *
+ * what: find a hierarcicaly valued option instance
+ * arg: + const tOptDesc* + pOptDesc + an option with a nested arg type +
+ * arg: + char const* + name + name of value to find +
+ * arg: + char const* + value + the matching value +
+ *
+ * ret_type: const tOptionValue*
+ * ret_desc: a compound value structure
+ *
+ * doc:
+ * This routine will find an entry in a nested value option or configurable.
+ * It will search through the list and return a matching entry.
+ *
+ * err:
+ * The returned result is NULL and errno is set:
+ * @itemize @bullet
+ * @item
+ * @code{EINVAL} - the @code{pOptValue} does not point to a valid
+ * hierarchical option value.
+ * @item
+ * @code{ENOENT} - no entry matched the given name.
+ * @end itemize
+=*/
+const tOptionValue*
+optionFindValue( const tOptDesc* pOptDesc,
+ char const* pzName, char const* pzVal )
+{
+ const tOptionValue* pRes = NULL;
+
+ if ( (pOptDesc == NULL)
+ || (OPTST_GET_ARGTYPE(pOptDesc->fOptState) != OPARG_TYPE_HIERARCHY)) {
+ errno = EINVAL;
+ }
+
+ else if (pOptDesc->optCookie == NULL) {
+ errno = ENOENT;
+ }
+
+ else do {
+ tArgList* pAL = pOptDesc->optCookie;
+ int ct = pAL->useCt;
+ void** ppOV = (void**)(pAL->apzArgs);
+
+ if (ct == 0) {
+ errno = ENOENT;
+ break;
+ }
+
+ if (pzName == NULL) {
+ pRes = (tOptionValue*)*ppOV;
+ break;
+ }
+
+ while (--ct >= 0) {
+ const tOptionValue* pOV = *(ppOV++);
+ const tOptionValue* pRV = optionGetValue( pOV, pzName );
+
+ if (pRV == NULL)
+ continue;
+
+ if (pzVal == NULL) {
+ pRes = pOV;
+ break;
+ }
+ }
+ if (pRes == NULL)
+ errno = ENOENT;
+ } while (0);
+
+ return pRes;
+}
+
+
+/*=export_func optionFindNextValue
+ *
+ * what: find a hierarcicaly valued option instance
+ * arg: + const tOptDesc* + pOptDesc + an option with a nested arg type +
+ * arg: + const tOptionValue* + pPrevVal + the last entry +
+ * arg: + char const* + name + name of value to find +
+ * arg: + char const* + value + the matching value +
+ *
+ * ret_type: const tOptionValue*
+ * ret_desc: a compound value structure
+ *
+ * doc:
+ * This routine will find the next entry in a nested value option or
+ * configurable. It will search through the list and return the next entry
+ * that matches the criteria.
+ *
+ * err:
+ * The returned result is NULL and errno is set:
+ * @itemize @bullet
+ * @item
+ * @code{EINVAL} - the @code{pOptValue} does not point to a valid
+ * hierarchical option value.
+ * @item
+ * @code{ENOENT} - no entry matched the given name.
+ * @end itemize
+=*/
+const tOptionValue*
+optionFindNextValue( const tOptDesc* pOptDesc, const tOptionValue* pPrevVal,
+ char const* pzName, char const* pzVal )
+{
+ int foundOldVal = 0;
+ tOptionValue* pRes = NULL;
+
+ if ( (pOptDesc == NULL)
+ || (OPTST_GET_ARGTYPE(pOptDesc->fOptState) != OPARG_TYPE_HIERARCHY)) {
+ errno = EINVAL;
+ }
+
+ else if (pOptDesc->optCookie == NULL) {
+ errno = ENOENT;
+ }
+
+ else do {
+ tArgList* pAL = pOptDesc->optCookie;
+ int ct = pAL->useCt;
+ void** ppOV = (void**)pAL->apzArgs;
+
+ if (ct == 0) {
+ errno = ENOENT;
+ break;
+ }
+
+ while (--ct >= 0) {
+ tOptionValue* pOV = *(ppOV++);
+ if (foundOldVal) {
+ pRes = pOV;
+ break;
+ }
+ if (pOV == pPrevVal)
+ foundOldVal = 1;
+ }
+ if (pRes == NULL)
+ errno = ENOENT;
+ } while (0);
+
+ return pRes;
+}
+
+
+/*=export_func optionGetValue
+ *
+ * what: get a specific value from a hierarcical list
+ * arg: + const tOptionValue* + pOptValue + a hierarchcal value +
+ * arg: + char const* + valueName + name of value to get +
+ *
+ * ret_type: const tOptionValue*
+ * ret_desc: a compound value structure
+ *
+ * doc:
+ * This routine will find an entry in a nested value option or configurable.
+ * If "valueName" is NULL, then the first entry is returned. Otherwise,
+ * the first entry with a name that exactly matches the argument will be
+ * returned.
+ *
+ * err:
+ * The returned result is NULL and errno is set:
+ * @itemize @bullet
+ * @item
+ * @code{EINVAL} - the @code{pOptValue} does not point to a valid
+ * hierarchical option value.
+ * @item
+ * @code{ENOENT} - no entry matched the given name.
+ * @end itemize
+=*/
+const tOptionValue*
+optionGetValue( const tOptionValue* pOld, char const* pzValName )
+{
+ tArgList* pAL;
+ tOptionValue* pRes = NULL;
+
+ if ((pOld == NULL) || (pOld->valType != OPARG_TYPE_HIERARCHY)) {
+ errno = EINVAL;
+ return NULL;
+ }
+ pAL = pOld->v.nestVal;
+
+ if (pAL->useCt > 0) {
+ int ct = pAL->useCt;
+ void** papOV = (void**)(pAL->apzArgs);
+
+ if (pzValName == NULL) {
+ pRes = (tOptionValue*)*papOV;
+ }
+
+ else do {
+ tOptionValue* pOV = *(papOV++);
+ if (strcmp( pOV->pzName, pzValName ) == 0) {
+ pRes = pOV;
+ break;
+ }
+ } while (--ct > 0);
+ }
+ if (pRes == NULL)
+ errno = ENOENT;
+ return pRes;
+}
+
+
+/*=export_func optionNextValue
+ *
+ * what: get the next value from a hierarchical list
+ * arg: + const tOptionValue* + pOptValue + a hierarchcal list value +
+ * arg: + const tOptionValue* + pOldValue + a value from this list +
+ *
+ * ret_type: const tOptionValue*
+ * ret_desc: a compound value structure
+ *
+ * doc:
+ * This routine will return the next entry after the entry passed in. At the
+ * end of the list, NULL will be returned. If the entry is not found on the
+ * list, NULL will be returned and "@var{errno}" will be set to EINVAL.
+ * The "@var{pOldValue}" must have been gotten from a prior call to this
+ * routine or to "@code{opitonGetValue()}".
+ *
+ * err:
+ * The returned result is NULL and errno is set:
+ * @itemize @bullet
+ * @item
+ * @code{EINVAL} - the @code{pOptValue} does not point to a valid
+ * hierarchical option value or @code{pOldValue} does not point to a
+ * member of that option value.
+ * @item
+ * @code{ENOENT} - the supplied @code{pOldValue} pointed to the last entry.
+ * @end itemize
+=*/
+tOptionValue const *
+optionNextValue(tOptionValue const * pOVList,tOptionValue const * pOldOV )
+{
+ tArgList* pAL;
+ tOptionValue* pRes = NULL;
+ int err = EINVAL;
+
+ if ((pOVList == NULL) || (pOVList->valType != OPARG_TYPE_HIERARCHY)) {
+ errno = EINVAL;
+ return NULL;
+ }
+ pAL = pOVList->v.nestVal;
+ {
+ int ct = pAL->useCt;
+ void** papNV = (void**)(pAL->apzArgs);
+
+ while (ct-- > 0) {
+ tOptionValue* pNV = *(papNV++);
+ if (pNV == pOldOV) {
+ if (ct == 0) {
+ err = ENOENT;
+
+ } else {
+ err = 0;
+ pRes = (tOptionValue*)*papNV;
+ }
+ break;
+ }
+ }
+ }
+ if (err != 0)
+ errno = err;
+ return pRes;
+}
+
+
+/* filePreset
+ *
+ * Load a file containing presetting information (a configuration file).
+ */
+static void
+filePreset(
+ tOptions* pOpts,
+ char const* pzFileName,
+ int direction )
+{
+ tmap_info_t cfgfile;
+ tOptState st = OPTSTATE_INITIALIZER(PRESET);
+ char* pzFileText =
+ text_mmap( pzFileName, PROT_READ|PROT_WRITE, MAP_PRIVATE, &cfgfile );
+
+ if (TEXT_MMAP_FAILED_ADDR(pzFileText))
+ return;
+
+ if (direction == DIRECTION_CALLED) {
+ st.flags = OPTST_DEFINED;
+ direction = DIRECTION_PROCESS;
+ }
+
+ /*
+ * IF this is called via "optionProcess", then we are presetting.
+ * This is the default and the PRESETTING bit will be set.
+ * If this is called via "optionFileLoad", then the bit is not set
+ * and we consider stuff set herein to be "set" by the client program.
+ */
+ if ((pOpts->fOptSet & OPTPROC_PRESETTING) == 0)
+ st.flags = OPTST_SET;
+
+ do {
+ while (isspace( (int)*pzFileText )) pzFileText++;
+
+ if (isalpha( (int)*pzFileText )) {
+ pzFileText = handleConfig( pOpts, &st, pzFileText, direction );
+
+ } else switch (*pzFileText) {
+ case '<':
+ if (isalpha( (int)pzFileText[1] ))
+ pzFileText = handleStructure(pOpts, &st, pzFileText, direction);
+
+ else switch (pzFileText[1]) {
+ case '?':
+ pzFileText = handleDirective( pOpts, pzFileText );
+ break;
+
+ case '!':
+ pzFileText = handleComment( pzFileText );
+ break;
+
+ case '/':
+ pzFileText = strchr( pzFileText+2, '>' );
+ if (pzFileText++ != NULL)
+ break;
+
+ default:
+ goto all_done;
+ }
+ break;
+
+ case '[':
+ pzFileText = handleProgramSection( pOpts, pzFileText );
+ break;
+
+ case '#':
+ pzFileText = strchr( pzFileText+1, '\n' );
+ break;
+
+ default:
+ goto all_done; /* invalid format */
+ }
+ } while (pzFileText != NULL);
+
+ all_done:
+ text_munmap( &cfgfile );
+}
+
+
+/* handleComment
+ *
+ * "pzText" points to a "<!" sequence.
+ * Theoretically, we should ensure that it begins with "<!--",
+ * but actually I don't care that much. It ends with "-->".
+ */
+static char*
+handleComment( char* pzText )
+{
+ char* pz = strstr( pzText, "-->" );
+ if (pz != NULL)
+ pz += 3;
+ return pz;
+}
+
+
+/* handleConfig
+ *
+ * "pzText" points to the start of some value name.
+ * The end of the entry is the end of the line that is not preceded by
+ * a backslash escape character. The string value is always processed
+ * in "cooked" mode.
+ */
+static char*
+handleConfig(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzText,
+ int direction )
+{
+ char* pzName = pzText++;
+ char* pzEnd = strchr( pzText, '\n' );
+
+ if (pzEnd == NULL)
+ return pzText + strlen(pzText);
+
+ while (ISNAMECHAR( (int)*pzText )) pzText++;
+ while (isspace( (int)*pzText )) pzText++;
+ if (pzText > pzEnd) {
+ name_only:
+ *pzEnd++ = NUL;
+ loadOptionLine( pOpts, pOS, pzName, direction, OPTION_LOAD_UNCOOKED );
+ return pzEnd;
+ }
+
+ /*
+ * Either the first character after the name is a ':' or '=',
+ * or else we must have skipped over white space. Anything else
+ * is an invalid format and we give up parsing the text.
+ */
+ if ((*pzText == '=') || (*pzText == ':')) {
+ while (isspace( (int)*++pzText )) ;
+ if (pzText > pzEnd)
+ goto name_only;
+ } else if (! isspace((int)pzText[-1]))
+ return NULL;
+
+ /*
+ * IF the value is continued, remove the backslash escape and push "pzEnd"
+ * on to a newline *not* preceded by a backslash.
+ */
+ if (pzEnd[-1] == '\\') {
+ char* pcD = pzEnd-1;
+ char* pcS = pzEnd;
+
+ for (;;) {
+ char ch = *(pcS++);
+ switch (ch) {
+ case NUL:
+ pcS = NULL;
+
+ case '\n':
+ *pcD = NUL;
+ pzEnd = pcS;
+ goto copy_done;
+
+ case '\\':
+ if (*pcS == '\n') {
+ ch = *(pcS++);
+ }
+ /* FALLTHROUGH */
+ default:
+ *(pcD++) = ch;
+ }
+ } copy_done:;
+
+ } else {
+ /*
+ * The newline was not preceded by a backslash. NUL it out
+ */
+ *(pzEnd++) = NUL;
+ }
+
+ /*
+ * "pzName" points to what looks like text for one option/configurable.
+ * It is NUL terminated. Process it.
+ */
+ loadOptionLine( pOpts, pOS, pzName, direction, OPTION_LOAD_UNCOOKED );
+
+ return pzEnd;
+}
+
+
+/* handleDirective
+ *
+ * "pzText" points to a "<?" sequence.
+ * For the moment, we only handle "<?program" directives.
+ */
+static char*
+handleDirective(
+ tOptions* pOpts,
+ char* pzText )
+{
+ char ztitle[32] = "<?";
+ size_t title_len = strlen( zProg );
+ size_t name_len;
+
+ if ( (strncmp( pzText+2, zProg, title_len ) != 0)
+ || (! isspace( (int)pzText[title_len+2] )) ) {
+ pzText = strchr( pzText+2, '>' );
+ if (pzText != NULL)
+ pzText++;
+ return pzText;
+ }
+
+ name_len = strlen( pOpts->pzProgName );
+ strcpy( ztitle+2, zProg );
+ title_len += 2;
+
+ do {
+ pzText += title_len;
+
+ if (isspace((int)*pzText)) {
+ while (isspace((int)*pzText)) pzText++;
+ if ( (strneqvcmp( pzText, pOpts->pzProgName, (int)name_len) == 0)
+ && (pzText[name_len] == '>')) {
+ pzText += name_len + 1;
+ break;
+ }
+ }
+
+ pzText = strstr( pzText, ztitle );
+ } while (pzText != NULL);
+
+ return pzText;
+}
+
+
+/* handleProgramSection
+ *
+ * "pzText" points to a '[' character.
+ * The "traditional" [PROG_NAME] segmentation of the config file.
+ * Do not ever mix with the "<?program prog-name>" variation.
+ */
+static char*
+handleProgramSection(
+ tOptions* pOpts,
+ char* pzText )
+{
+ size_t len = strlen( pOpts->pzPROGNAME );
+ if ( (strncmp( pzText+1, pOpts->pzPROGNAME, len ) == 0)
+ && (pzText[len+1] == ']'))
+ return strchr( pzText + len + 2, '\n' );
+
+ if (len > 16)
+ return NULL;
+
+ {
+ char z[24];
+ sprintf( z, "[%s]", pOpts->pzPROGNAME );
+ pzText = strstr( pzText, z );
+ }
+
+ if (pzText != NULL)
+ pzText = strchr( pzText, '\n' );
+ return pzText;
+}
+
+
+/* handleStructure
+ *
+ * "pzText" points to a '<' character, followed by an alpha.
+ * The end of the entry is either the "/>" following the name, or else a
+ * "</name>" string.
+ */
+static char*
+handleStructure(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzText,
+ int direction )
+{
+ tOptionLoadMode mode = option_load_mode;
+ tOptionValue valu;
+
+ char* pzName = ++pzText;
+ char* pzData;
+ char* pcNulPoint;
+
+ while (ISNAMECHAR( *pzText )) pzText++;
+ pcNulPoint = pzText;
+ valu.valType = OPARG_TYPE_STRING;
+
+ switch (*pzText) {
+ case ' ':
+ case '\t':
+ pzText = parseAttributes( pOpts, pzText, &mode, &valu );
+ if (*pzText == '>')
+ break;
+ if (*pzText != '/')
+ return NULL;
+ /* FALLTHROUGH */
+
+ case '/':
+ if (pzText[1] != '>')
+ return NULL;
+ *pzText = NUL;
+ pzText += 2;
+ loadOptionLine( pOpts, pOS, pzName, direction, mode );
+ return pzText;
+
+ case '>':
+ break;
+
+ default:
+ pzText = strchr( pzText, '>');
+ if (pzText != NULL)
+ pzText++;
+ return pzText;
+ }
+
+ /*
+ * If we are here, we have a value. "pzText" points to a closing angle
+ * bracket. Separate the name from the value for a moment.
+ */
+ *pcNulPoint = NUL;
+ pzData = ++pzText;
+
+ /*
+ * Find the end of the option text and NUL terminate it
+ */
+ {
+ char z[64], *pz = z;
+ size_t len = strlen(pzName) + 4;
+ if (len > sizeof(z))
+ pz = AGALOC(len, "scan name");
+
+ sprintf( pz, "</%s>", pzName );
+ *pzText = ' ';
+ pzText = strstr( pzText, pz );
+ if (pz != z) AGFREE(pz);
+
+ if (pzText == NULL)
+ return pzText;
+
+ *pzText = NUL;
+
+ pzText += len-1;
+ }
+
+ /*
+ * Rejoin the name and value for parsing by "loadOptionLine()".
+ * Erase any attributes parsed by "parseAttributes()".
+ */
+ memset(pcNulPoint, ' ', pzData - pcNulPoint);
+
+ /*
+ * "pzName" points to what looks like text for one option/configurable.
+ * It is NUL terminated. Process it.
+ */
+ loadOptionLine( pOpts, pOS, pzName, direction, mode );
+
+ return pzText;
+}
+
+
+/* internalFileLoad
+ *
+ * Load a configuration file. This may be invoked either from
+ * scanning the "homerc" list, or from a specific file request.
+ * (see "optionFileLoad()", the implementation for --load-opts)
+ */
+LOCAL void
+internalFileLoad( tOptions* pOpts )
+{
+ int idx;
+ int inc = DIRECTION_PRESET;
+ char zFileName[ AG_PATH_MAX+1 ];
+
+ if (pOpts->papzHomeList == NULL)
+ return;
+
+ /*
+ * Find the last RC entry (highest priority entry)
+ */
+ for (idx = 0; pOpts->papzHomeList[ idx+1 ] != NULL; ++idx) ;
+
+ /*
+ * For every path in the home list, ... *TWICE* We start at the last
+ * (highest priority) entry, work our way down to the lowest priority,
+ * handling the immediate options.
+ * Then we go back up, doing the normal options.
+ */
+ for (;;) {
+ struct stat StatBuf;
+ cch_t* pzPath;
+
+ /*
+ * IF we've reached the bottom end, change direction
+ */
+ if (idx < 0) {
+ inc = DIRECTION_PROCESS;
+ idx = 0;
+ }
+
+ pzPath = pOpts->papzHomeList[ idx ];
+
+ /*
+ * IF we've reached the top end, bail out
+ */
+ if (pzPath == NULL)
+ break;
+
+ idx += inc;
+
+ if (! optionMakePath( zFileName, (int)sizeof(zFileName),
+ pzPath, pOpts->pzProgPath ))
+ continue;
+
+ /*
+ * IF the file name we constructed is a directory,
+ * THEN append the Resource Configuration file name
+ * ELSE we must have the complete file name
+ */
+ if (stat( zFileName, &StatBuf ) != 0)
+ continue; /* bogus name - skip the home list entry */
+
+ if (S_ISDIR( StatBuf.st_mode )) {
+ size_t len = strlen( zFileName );
+ char* pz;
+
+ if (len + 1 + strlen( pOpts->pzRcName ) >= sizeof( zFileName ))
+ continue;
+
+ pz = zFileName + len;
+ if (pz[-1] != DIRCH)
+ *(pz++) = DIRCH;
+ strcpy( pz, pOpts->pzRcName );
+ }
+
+ filePreset( pOpts, zFileName, inc );
+
+ /*
+ * IF we are now to skip config files AND we are presetting,
+ * THEN change direction. We must go the other way.
+ */
+ {
+ tOptDesc * pOD = pOpts->pOptDesc + pOpts->specOptIdx.save_opts+1;
+ if (DISABLED_OPT(pOD) && PRESETTING(inc)) {
+ idx -= inc; /* go back and reprocess current file */
+ inc = DIRECTION_PROCESS;
+ }
+ }
+ } /* twice for every path in the home list, ... */
+}
+
+
+/*=export_func optionFileLoad
+ *
+ * what: Load the locatable config files, in order
+ *
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + char const* + pzProg + program name +
+ *
+ * ret_type: int
+ * ret_desc: 0 -> SUCCESS, -1 -> FAILURE
+ *
+ * doc:
+ *
+ * This function looks in all the specified directories for a configuration
+ * file ("rc" file or "ini" file) and processes any found twice. The first
+ * time through, they are processed in reverse order (last file first). At
+ * that time, only "immediate action" configurables are processed. For
+ * example, if the last named file specifies not processing any more
+ * configuration files, then no more configuration files will be processed.
+ * Such an option in the @strong{first} named directory will have no effect.
+ *
+ * Once the immediate action configurables have been handled, then the
+ * directories are handled in normal, forward order. In that way, later
+ * config files can override the settings of earlier config files.
+ *
+ * See the AutoOpts documentation for a thorough discussion of the
+ * config file format.
+ *
+ * Configuration files not found or not decipherable are simply ignored.
+ *
+ * err: Returns the value, "-1" if the program options descriptor
+ * is out of date or indecipherable. Otherwise, the value "0" will
+ * always be returned.
+=*/
+int
+optionFileLoad( tOptions* pOpts, char const* pzProgram )
+{
+ if (! SUCCESSFUL( validateOptionsStruct( pOpts, pzProgram )))
+ return -1;
+
+ pOpts->pzProgName = pzProgram;
+ internalFileLoad( pOpts );
+ return 0;
+}
+
+
+/*=export_func optionLoadOpt
+ * private:
+ *
+ * what: Load an option rc/ini file
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Processes the options found in the file named with
+ * pOptDesc->optArg.argString.
+=*/
+void
+optionLoadOpt( tOptions* pOpts, tOptDesc* pOptDesc )
+{
+ /*
+ * IF the option is not being disabled, THEN load the file. There must
+ * be a file. (If it is being disabled, then the disablement processing
+ * already took place. It must be done to suppress preloading of ini/rc
+ * files.)
+ */
+ if (! DISABLED_OPT( pOptDesc )) {
+ struct stat sb;
+ if (stat( pOptDesc->optArg.argString, &sb ) != 0) {
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) == 0)
+ return;
+
+ fprintf( stderr, zFSErrOptLoad, errno, strerror( errno ),
+ pOptDesc->optArg.argString );
+ exit(EX_NOINPUT);
+ /* NOT REACHED */
+ }
+
+ if (! S_ISREG( sb.st_mode )) {
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) == 0)
+ return;
+
+ fprintf( stderr, zNotFile, pOptDesc->optArg.argString );
+ exit(EX_NOINPUT);
+ /* NOT REACHED */
+ }
+
+ filePreset(pOpts, pOptDesc->optArg.argString, DIRECTION_CALLED);
+ }
+}
+
+
+/* parseAttributes
+ *
+ * Parse the various attributes of an XML-styled config file entry
+ */
+LOCAL char*
+parseAttributes(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionLoadMode* pMode,
+ tOptionValue* pType )
+{
+ size_t lenLoadType = strlen( zLoadType );
+ size_t lenKeyWords = strlen( zKeyWords );
+ size_t lenSetMem = strlen( zSetMembers );
+
+ do {
+ switch (*pzText) {
+ case '/': pType->valType = OPARG_TYPE_NONE;
+ case '>': return pzText;
+
+ default:
+ case NUL: return NULL;
+
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\f':
+ case '\r':
+ case '\v':
+ break;
+ }
+
+ while (isspace( (int)*++pzText )) ;
+
+ if (strncmp( pzText, zLoadType, lenLoadType ) == 0) {
+ pzText = parseValueType( pzText+lenLoadType, pType );
+ continue;
+ }
+
+ if (strncmp( pzText, zKeyWords, lenKeyWords ) == 0) {
+ pzText = parseKeyWordType( pOpts, pzText+lenKeyWords, pType );
+ continue;
+ }
+
+ if (strncmp( pzText, zSetMembers, lenSetMem ) == 0) {
+ pzText = parseSetMemType( pOpts, pzText+lenSetMem, pType );
+ continue;
+ }
+
+ pzText = parseLoadMode( pzText, pMode );
+ } while (pzText != NULL);
+
+ return pzText;
+}
+
+
+/* parseKeyWordType
+ *
+ * "pzText" points to the character after "words=".
+ * What should follow is a name of a keyword (enumeration) list.
+ */
+static char*
+parseKeyWordType(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionValue* pType )
+{
+ return skipUnknown( pzText );
+}
+
+
+/* parseLoadMode
+ *
+ * "pzText" points to some name character. We check for "cooked" or
+ * "uncooked" or "keep". This function should handle any attribute
+ * that does not have an associated value.
+ */
+static char*
+parseLoadMode(
+ char* pzText,
+ tOptionLoadMode* pMode )
+{
+ {
+ size_t len = strlen(zLoadCooked);
+ if (strncmp( pzText, zLoadCooked, len ) == 0) {
+ if ( (pzText[len] == '>')
+ || (pzText[len] == '/')
+ || isspace((int)pzText[len])) {
+ *pMode = OPTION_LOAD_COOKED;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLoadUncooked);
+ if (strncmp( pzText, zLoadUncooked, len ) == 0) {
+ if ( (pzText[len] == '>')
+ || (pzText[len] == '/')
+ || isspace((int)pzText[len])) {
+ *pMode = OPTION_LOAD_UNCOOKED;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLoadKeep);
+ if (strncmp( pzText, zLoadKeep, len ) == 0) {
+ if ( (pzText[len] == '>')
+ || (pzText[len] == '/')
+ || isspace((int)pzText[len])) {
+ *pMode = OPTION_LOAD_KEEP;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ unknown:
+ return skipUnknown( pzText );
+}
+
+
+/* parseSetMemType
+ *
+ * "pzText" points to the character after "members="
+ * What should follow is a name of a "set membership".
+ * A collection of bit flags.
+ */
+static char*
+parseSetMemType(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionValue* pType )
+{
+ return skipUnknown( pzText );
+}
+
+
+/* parseValueType
+ *
+ * "pzText" points to the character after "type="
+ */
+static char*
+parseValueType(
+ char* pzText,
+ tOptionValue* pType )
+{
+ {
+ size_t len = strlen(zLtypeString);
+ if (strncmp( pzText, zLtypeString, len ) == 0) {
+ if ((pzText[len] == '>') || isspace((int)pzText[len])) {
+ pType->valType = OPARG_TYPE_STRING;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLtypeInteger);
+ if (strncmp( pzText, zLtypeInteger, len ) == 0) {
+ if ((pzText[len] == '>') || isspace((int)pzText[len])) {
+ pType->valType = OPARG_TYPE_NUMERIC;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLtypeBool);
+ if (strncmp( pzText, zLtypeBool, len ) == 0) {
+ if ((pzText[len] == '>') || isspace(pzText[len])) {
+ pType->valType = OPARG_TYPE_BOOLEAN;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLtypeKeyword);
+ if (strncmp( pzText, zLtypeKeyword, len ) == 0) {
+ if ((pzText[len] == '>') || isspace((int)pzText[len])) {
+ pType->valType = OPARG_TYPE_ENUMERATION;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLtypeSetMembership);
+ if (strncmp( pzText, zLtypeSetMembership, len ) == 0) {
+ if ((pzText[len] == '>') || isspace((int)pzText[len])) {
+ pType->valType = OPARG_TYPE_MEMBERSHIP;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLtypeNest);
+ if (strncmp( pzText, zLtypeNest, len ) == 0) {
+ if ((pzText[len] == '>') || isspace((int)pzText[len])) {
+ pType->valType = OPARG_TYPE_HIERARCHY;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ unknown:
+ pType->valType = OPARG_TYPE_NONE;
+ return skipUnknown( pzText );
+}
+
+
+/* skipUnknown
+ *
+ * Skip over some unknown attribute
+ */
+static char*
+skipUnknown( char* pzText )
+{
+ for (;; pzText++) {
+ if (isspace( (int)*pzText )) return pzText;
+ switch (*pzText) {
+ case NUL: return NULL;
+ case '/':
+ case '>': return pzText;
+ }
+ }
+}
+
+
+/* validateOptionsStruct
+ *
+ * Make sure the option descriptor is there and that we understand it.
+ * This should be called from any user entry point where one needs to
+ * worry about validity. (Some entry points are free to assume that
+ * the call is not the first to the library and, thus, that this has
+ * already been called.)
+ */
+LOCAL tSuccess
+validateOptionsStruct( tOptions* pOpts, char const* pzProgram )
+{
+ if (pOpts == NULL) {
+ fputs( zAO_Bad, stderr );
+ exit( EX_CONFIG );
+ }
+
+ /*
+ * IF the client has enabled translation and the translation procedure
+ * is available, then go do it.
+ */
+ if ( ((pOpts->fOptSet & OPTPROC_TRANSLATE) != 0)
+ && (pOpts->pTransProc != 0) ) {
+ (*pOpts->pTransProc)();
+ pOpts->fOptSet &= ~OPTPROC_TRANSLATE;
+ }
+
+ /*
+ * IF the struct version is not the current, and also
+ * either too large (?!) or too small,
+ * THEN emit error message and fail-exit
+ */
+ if ( ( pOpts->structVersion != OPTIONS_STRUCT_VERSION )
+ && ( (pOpts->structVersion > OPTIONS_STRUCT_VERSION )
+ || (pOpts->structVersion < OPTIONS_MINIMUM_VERSION )
+ ) ) {
+
+ fprintf( stderr, zAO_Err, pOpts->origArgVect[0],
+ NUM_TO_VER( pOpts->structVersion ));
+ if (pOpts->structVersion > OPTIONS_STRUCT_VERSION )
+ fputs( zAO_Big, stderr );
+ else
+ fputs( zAO_Sml, stderr );
+
+ return FAILURE;
+ }
+
+ /*
+ * If the program name hasn't been set, then set the name and the path
+ * and the set of equivalent characters.
+ */
+ if (pOpts->pzProgName == NULL) {
+ char const* pz = strrchr( pzProgram, DIRCH );
+
+ if (pz == NULL)
+ pOpts->pzProgName = pzProgram;
+ else pOpts->pzProgName = pz+1;
+
+ pOpts->pzProgPath = pzProgram;
+
+ /*
+ * when comparing long names, these are equivalent
+ */
+ strequate( zSepChars );
+ }
+
+ return SUCCESS;
+}
+
+
+/**
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/configfile.c */
diff --git a/contrib/ntp/libopts/cook.c b/contrib/ntp/libopts/cook.c
new file mode 100644
index 0000000..bebd123
--- /dev/null
+++ b/contrib/ntp/libopts/cook.c
@@ -0,0 +1,354 @@
+
+/*
+ * $Id: cook.c,v 4.10 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2006-09-24 15:21:02 bkorb"
+ *
+ * This file contains the routines that deal with processing quoted strings
+ * into an internal format.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+/* = = = END-STATIC-FORWARD = = = */
+
+/*=export_func ao_string_cook_escape_char
+ * private:
+ *
+ * what: escape-process a string fragment
+ * arg: + char const* + pzScan + points to character after the escape +
+ * arg: + char* + pRes + Where to put the result byte +
+ * arg: + unsigned int + nl_ch + replacement char if scanned char is \n +
+ *
+ * ret-type: unsigned int
+ * ret-desc: The number of bytes consumed processing the escaped character.
+ *
+ * doc:
+ *
+ * This function converts "t" into "\t" and all your other favorite
+ * escapes, including numeric ones: hex and ocatal, too.
+ * The returned result tells the caller how far to advance the
+ * scan pointer (passed in). The default is to just pass through the
+ * escaped character and advance the scan by one.
+ *
+ * Some applications need to keep an escaped newline, others need to
+ * suppress it. This is accomplished by supplying a '\n' replacement
+ * character that is different from \n, if need be. For example, use
+ * 0x7F and never emit a 0x7F.
+ *
+ * err: @code{NULL} is returned if the string is mal-formed.
+=*/
+unsigned int
+ao_string_cook_escape_char( char const* pzIn, char* pRes, u_int nl )
+{
+ unsigned int res = 1;
+
+ switch (*pRes = *pzIn++) {
+ case NUL: /* NUL - end of input string */
+ return 0;
+ case '\r':
+ if (*pzIn != '\n')
+ return 1;
+ res++;
+ /* FALLTHROUGH */
+ case '\n': /* NL - emit newline */
+ *pRes = (char)nl;
+ return res;
+
+ case 'a': *pRes = '\a'; break;
+ case 'b': *pRes = '\b'; break;
+ case 'f': *pRes = '\f'; break;
+ case 'n': *pRes = '\n'; break;
+ case 'r': *pRes = '\r'; break;
+ case 't': *pRes = '\t'; break;
+ case 'v': *pRes = '\v'; break;
+
+ case 'x': /* HEX Escape */
+ if (isxdigit( (int)*pzIn )) {
+ unsigned int val;
+ unsigned char ch = *pzIn++;
+
+ if ((ch >= 'A') && (ch <= 'F'))
+ val = 10 + (ch - 'A');
+ else if ((ch >= 'a') && (ch <= 'f'))
+ val = 10 + (ch - 'a');
+ else val = ch - '0';
+
+ ch = *pzIn;
+
+ if (! isxdigit( ch )) {
+ *pRes = val;
+ res = 2;
+ break;
+ }
+ val <<= 4;
+ if ((ch >= 'A') && (ch <= 'F'))
+ val += 10 + (ch - 'A');
+ else if ((ch >= 'a') && (ch <= 'f'))
+ val += 10 + (ch - 'a');
+ else val += ch - '0';
+
+ res = 3;
+ *pRes = val;
+ }
+ break;
+
+ default:
+ /*
+ * IF the character copied was an octal digit,
+ * THEN set the output character to an octal value
+ */
+ if (isdigit( (int)*pRes ) && (*pRes < '8')) {
+ unsigned int val = *pRes - '0';
+ unsigned char ch = *pzIn++;
+
+ /*
+ * IF the second character is *not* an octal digit,
+ * THEN save the value and bail
+ */
+ if ((ch < '0') || (ch > '7')) {
+ *pRes = val;
+ break;
+ }
+
+ val = (val<<3) + (ch - '0');
+ ch = *pzIn;
+ res = 2;
+
+ /*
+ * IF the THIRD character is *not* an octal digit,
+ * THEN save the value and bail
+ */
+ if ((ch < '0') || (ch > '7')) {
+ *pRes = val;
+ break;
+ }
+
+ /*
+ * IF the new value would not be too large,
+ * THEN add on the third and last character value
+ */
+ if ((val<<3) < 0xFF) {
+ val = (val<<3) + (ch - '0');
+ res = 3;
+ }
+
+ *pRes = val;
+ break;
+ }
+ }
+
+ return res;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * A quoted string has been found.
+ * Find the end of it and compress any escape sequences.
+ */
+/*=export_func ao_string_cook
+ * private:
+ *
+ * what: concatenate and escape-process strings
+ * arg: + char* + pzScan + The *MODIFIABLE* input buffer +
+ * arg: + int* + pLineCt + The (possibly NULL) pointer to a line count +
+ *
+ * ret-type: char*
+ * ret-desc: The address of the text following the processed strings.
+ * The return value is NULL if the strings are ill-formed.
+ *
+ * doc:
+ *
+ * A series of one or more quoted strings are concatenated together.
+ * If they are quoted with double quotes (@code{"}), then backslash
+ * escapes are processed per the C programming language. If they are
+ * single quote strings, then the backslashes are honored only when they
+ * precede another backslash or a single quote character.
+ *
+ * err: @code{NULL} is returned if the string(s) is/are mal-formed.
+=*/
+char*
+ao_string_cook( char* pzScan, int* pLineCt )
+{
+ int l = 0;
+ char q = *pzScan;
+
+ /*
+ * It is a quoted string. Process the escape sequence characters
+ * (in the set "abfnrtv") and make sure we find a closing quote.
+ */
+ char* pzD = pzScan++;
+ char* pzS = pzScan;
+
+ if (pLineCt == NULL)
+ pLineCt = &l;
+
+ for (;;) {
+ /*
+ * IF the next character is the quote character, THEN we may end the
+ * string. We end it unless the next non-blank character *after* the
+ * string happens to also be a quote. If it is, then we will change
+ * our quote character to the new quote character and continue
+ * condensing text.
+ */
+ while (*pzS == q) {
+ *pzD = NUL; /* This is probably the end of the line */
+ pzS++;
+
+ scan_for_quote:
+ while (isspace((int)*pzS))
+ if (*(pzS++) == '\n')
+ (*pLineCt)++;
+
+ /*
+ * IF the next character is a quote character,
+ * THEN we will concatenate the strings.
+ */
+ switch (*pzS) {
+ case '"':
+ case '\'':
+ break;
+
+ case '/':
+ /*
+ * Allow for a comment embedded in the concatenated string.
+ */
+ switch (pzS[1]) {
+ default: return NULL;
+ case '/':
+ /*
+ * Skip to end of line
+ */
+ pzS = strchr( pzS, '\n' );
+ if (pzS == NULL)
+ return NULL;
+ (*pLineCt)++;
+ break;
+
+ case '*':
+ {
+ char* p = strstr( pzS+2, "*/" );
+ /*
+ * Skip to terminating star slash
+ */
+ if (p == NULL)
+ return NULL;
+ while (pzS < p) {
+ if (*(pzS++) == '\n')
+ (*pLineCt)++;
+ }
+
+ pzS = p + 2;
+ }
+ }
+ goto scan_for_quote;
+
+ default:
+ /*
+ * The next non-whitespace character is not a quote.
+ * The series of quoted strings has come to an end.
+ */
+ return pzS;
+ }
+
+ q = *(pzS++); /* assign new quote character and advance scan */
+ }
+
+ /*
+ * We are inside a quoted string. Copy text.
+ */
+ switch (*(pzD++) = *(pzS++)) {
+ case NUL:
+ return NULL;
+
+ case '\n':
+ (*pLineCt)++;
+ break;
+
+ case '\\':
+ /*
+ * IF we are escaping a new line,
+ * THEN drop both the escape and the newline from
+ * the result string.
+ */
+ if (*pzS == '\n') {
+ pzS++;
+ pzD--;
+ (*pLineCt)++;
+ }
+
+ /*
+ * ELSE IF the quote character is '"' or '`',
+ * THEN we do the full escape character processing
+ */
+ else if (q != '\'') {
+ int ct = ao_string_cook_escape_char( pzS, pzD-1, (u_int)'\n' );
+ if (ct == 0)
+ return NULL;
+
+ pzS += ct;
+ } /* if (q != '\'') */
+
+ /*
+ * OTHERWISE, we only process "\\", "\'" and "\#" sequences.
+ * The latter only to easily hide preprocessing directives.
+ */
+ else switch (*pzS) {
+ case '\\':
+ case '\'':
+ case '#':
+ pzD[-1] = *pzS++;
+ }
+ } /* switch (*(pzD++) = *(pzS++)) */
+ } /* for (;;) */
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/cook.c */
diff --git a/contrib/ntp/libopts/enumeration.c b/contrib/ntp/libopts/enumeration.c
new file mode 100644
index 0000000..67dd4f4
--- /dev/null
+++ b/contrib/ntp/libopts/enumeration.c
@@ -0,0 +1,498 @@
+
+/*
+ * $Id: enumeration.c,v 4.17 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 10:22:35 bkorb"
+ *
+ * Automated Options Paged Usage module.
+ *
+ * This routine will run run-on options through a pager so the
+ * user may examine, print or edit them at their leisure.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+tSCC* pz_enum_err_fmt;
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+enumError(
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC* const * paz_names,
+ int name_ct );
+
+static uintptr_t
+findName(
+ tCC* pzName,
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC* const * paz_names,
+ unsigned int name_ct );
+/* = = = END-STATIC-FORWARD = = = */
+
+static void
+enumError(
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC* const * paz_names,
+ int name_ct )
+{
+ size_t max_len = 0;
+ size_t ttl_len = 0;
+
+ if (pOpts != NULL)
+ fprintf( option_usage_fp, pz_enum_err_fmt, pOpts->pzProgName,
+ pOD->optArg.argString, pOD->pz_Name );
+
+ fprintf( option_usage_fp, zValidKeys, pOD->pz_Name );
+
+ if (**paz_names == 0x7F) {
+ paz_names++;
+ name_ct--;
+ }
+
+ /*
+ * Figure out the maximum length of any name, plus the total length
+ * of all the names.
+ */
+ {
+ tCC * const * paz = paz_names;
+ int ct = name_ct;
+
+ do {
+ size_t len = strlen( *(paz++) ) + 1;
+ if (len > max_len)
+ max_len = len;
+ ttl_len += len;
+ } while (--ct > 0);
+ }
+
+ /*
+ * IF any one entry is about 1/2 line or longer, print one per line
+ */
+ if (max_len > 35) {
+ do {
+ fprintf( option_usage_fp, " %s\n", *(paz_names++) );
+ } while (--name_ct > 0);
+ }
+
+ /*
+ * ELSE IF they all fit on one line, then do so.
+ */
+ else if (ttl_len < 76) {
+ fputc( ' ', option_usage_fp );
+ do {
+ fputc( ' ', option_usage_fp );
+ fputs( *(paz_names++), option_usage_fp );
+ } while (--name_ct > 0);
+ fputc( '\n', option_usage_fp );
+ }
+
+ /*
+ * Otherwise, columnize the output
+ */
+ else {
+ int ent_no = 0;
+ char zFmt[16]; /* format for all-but-last entries on a line */
+
+ sprintf( zFmt, "%%-%ds", (int)max_len );
+ max_len = 78 / max_len; /* max_len is now max entries on a line */
+ fputs( " ", option_usage_fp );
+
+ /*
+ * Loop through all but the last entry
+ */
+ while (--name_ct > 0) {
+ if (++ent_no == max_len) {
+ /*
+ * Last entry on a line. Start next line, too.
+ */
+ fprintf( option_usage_fp, "%s\n ", *(paz_names++) );
+ ent_no = 0;
+ }
+
+ else
+ fprintf( option_usage_fp, zFmt, *(paz_names++) );
+ }
+ fprintf( option_usage_fp, "%s\n", *paz_names );
+ }
+
+ /*
+ * IF we do not have a pOpts pointer, then this output is being requested
+ * by the usage procedure. Let's not re-invoke it recursively.
+ */
+ if (pOpts != NULL)
+ (*(pOpts->pUsageProc))( pOpts, EXIT_FAILURE );
+ if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_MEMBERSHIP)
+ fputs( zSetMemberSettings, option_usage_fp );
+}
+
+
+static uintptr_t
+findName(
+ tCC* pzName,
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC* const * paz_names,
+ unsigned int name_ct )
+{
+ uintptr_t res = name_ct;
+ size_t len = strlen( (char*)pzName );
+ uintptr_t idx;
+ /*
+ * Look for an exact match, but remember any partial matches.
+ * Multiple partial matches means we have an ambiguous match.
+ */
+ for (idx = 0; idx < name_ct; idx++) {
+ if (strncmp( (char*)paz_names[idx], (char*)pzName, len) == 0) {
+ if (paz_names[idx][len] == NUL)
+ return idx; /* full match */
+
+ if (res != name_ct) {
+ pz_enum_err_fmt = zAmbigKey;
+ option_usage_fp = stderr;
+ enumError( pOpts, pOD, paz_names, (int)name_ct );
+ }
+ res = idx; /* save partial match */
+ }
+ }
+
+ /*
+ * no partial match -> error
+ */
+ if (res == name_ct) {
+ pz_enum_err_fmt = zNoKey;
+ option_usage_fp = stderr;
+ enumError( pOpts, pOD, paz_names, (int)name_ct );
+ }
+
+ /*
+ * Return the matching index as a char* pointer.
+ * The result gets stashed in a char* pointer, so it will have to fit.
+ */
+ return res;
+}
+
+
+/*=export_func optionKeywordName
+ * what: Convert between enumeration values and strings
+ * private:
+ *
+ * arg: tOptDesc*, pOD, enumeration option description
+ * arg: unsigned int, enum_val, the enumeration value to map
+ *
+ * ret_type: char const*
+ * ret_desc: the enumeration name from const memory
+ *
+ * doc: This converts an enumeration value into the matching string.
+=*/
+char const*
+optionKeywordName(
+ tOptDesc* pOD,
+ unsigned int enum_val )
+{
+ tOptDesc od;
+
+ od.optArg.argEnum = enum_val;
+ (*(pOD->pOptProc))( (void*)(2UL), &od );
+ return od.optArg.argString;
+}
+
+
+/*=export_func optionEnumerationVal
+ * what: Convert from a string to an enumeration value
+ * private:
+ *
+ * arg: tOptions*, pOpts, the program options descriptor
+ * arg: tOptDesc*, pOD, enumeration option description
+ * arg: char const * const *, paz_names, list of enumeration names
+ * arg: unsigned int, name_ct, number of names in list
+ *
+ * ret_type: uintptr_t
+ * ret_desc: the enumeration value
+ *
+ * doc: This converts the optArg.argString string from the option description
+ * into the index corresponding to an entry in the name list.
+ * This will match the generated enumeration value.
+ * Full matches are always accepted. Partial matches are accepted
+ * if there is only one partial match.
+=*/
+uintptr_t
+optionEnumerationVal(
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC * const * paz_names,
+ unsigned int name_ct )
+{
+ uintptr_t res = 0UL;
+
+ /*
+ * IF the program option descriptor pointer is invalid,
+ * then it is some sort of special request.
+ */
+ switch ((uintptr_t)pOpts) {
+ case 0UL:
+ /*
+ * print the list of enumeration names.
+ */
+ enumError( pOpts, pOD, paz_names, (int)name_ct );
+ break;
+
+ case 1UL:
+ {
+ unsigned int ix = pOD->optArg.argEnum;
+ /*
+ * print the name string.
+ */
+ if (ix >= name_ct)
+ printf( "INVALID-%d", ix );
+ else
+ fputs( paz_names[ ix ], stdout );
+
+ break;
+ }
+
+ case 2UL:
+ {
+ tSCC zInval[] = "*INVALID*";
+ unsigned int ix = pOD->optArg.argEnum;
+ /*
+ * Replace the enumeration value with the name string.
+ */
+ if (ix >= name_ct)
+ return (uintptr_t)zInval;
+
+ res = (uintptr_t)paz_names[ ix ];
+ break;
+ }
+
+ default:
+ res = findName( pOD->optArg.argString, pOpts, pOD, paz_names, name_ct );
+
+ if (pOD->fOptState & OPTST_ALLOC_ARG) {
+ AGFREE(pOD->optArg.argString);
+ pOD->fOptState &= ~OPTST_ALLOC_ARG;
+ pOD->optArg.argString = NULL;
+ }
+ }
+
+ return res;
+}
+
+
+/*=export_func optionSetMembers
+ * what: Convert between bit flag values and strings
+ * private:
+ *
+ * arg: tOptions*, pOpts, the program options descriptor
+ * arg: tOptDesc*, pOD, enumeration option description
+ * arg: char const * const *,
+ * paz_names, list of enumeration names
+ * arg: unsigned int, name_ct, number of names in list
+ *
+ * doc: This converts the optArg.argString string from the option description
+ * into the index corresponding to an entry in the name list.
+ * This will match the generated enumeration value.
+ * Full matches are always accepted. Partial matches are accepted
+ * if there is only one partial match.
+=*/
+void
+optionSetMembers(
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC* const * paz_names,
+ unsigned int name_ct )
+{
+ /*
+ * IF the program option descriptor pointer is invalid,
+ * then it is some sort of special request.
+ */
+ switch ((uintptr_t)pOpts) {
+ case 0UL:
+ /*
+ * print the list of enumeration names.
+ */
+ enumError( pOpts, pOD, paz_names, (int)name_ct );
+ return;
+
+ case 1UL:
+ {
+ /*
+ * print the name string.
+ */
+ uintptr_t bits = (uintptr_t)pOD->optCookie;
+ uintptr_t res = 0;
+ size_t len = 0;
+
+ while (bits != 0) {
+ if (bits & 1) {
+ if (len++ > 0) fputs( " | ", stdout );
+ fputs( paz_names[ res ], stdout );
+ }
+ if (++res >= name_ct) break;
+ bits >>= 1;
+ }
+ return;
+ }
+
+ case 2UL:
+ {
+ char* pz;
+ uintptr_t bits = (uintptr_t)pOD->optCookie;
+ uintptr_t res = 0;
+ size_t len = 0;
+
+ /*
+ * Replace the enumeration value with the name string.
+ * First, determine the needed length, then allocate and fill in.
+ */
+ while (bits != 0) {
+ if (bits & 1)
+ len += strlen( paz_names[ res ]) + 8;
+ if (++res >= name_ct) break;
+ bits >>= 1;
+ }
+
+ pOD->optArg.argString = pz = AGALOC( len, "enum name" );
+
+ /*
+ * Start by clearing all the bits. We want to turn off any defaults
+ * because we will be restoring to current state, not adding to
+ * the default set of bits.
+ */
+ strcpy( pz, "none" );
+ pz += 4;
+ bits = (uintptr_t)pOD->optCookie;
+ res = 0;
+ while (bits != 0) {
+ if (bits & 1) {
+ strcpy( pz, " + " );
+ strcpy( pz+3, paz_names[ res ]);
+ pz += strlen( paz_names[ res ]) + 3;
+ }
+ if (++res >= name_ct) break;
+ bits >>= 1;
+ }
+ return;
+ }
+
+ default:
+ break;
+ }
+
+ {
+ tCC* pzArg = pOD->optArg.argString;
+ uintptr_t res;
+ if ((pzArg == NULL) || (*pzArg == NUL)) {
+ pOD->optCookie = (void*)0;
+ return;
+ }
+
+ res = (uintptr_t)pOD->optCookie;
+ for (;;) {
+ tSCC zSpn[] = " ,|+\t\r\f\n";
+ int iv, len;
+
+ pzArg += strspn( pzArg, zSpn );
+ iv = (*pzArg == '!');
+ if (iv)
+ pzArg += strspn( pzArg+1, zSpn ) + 1;
+
+ len = strcspn( pzArg, zSpn );
+ if (len == 0)
+ break;
+
+ if ((len == 3) && (strncmp(pzArg, zAll, (size_t)3) == 0)) {
+ if (iv)
+ res = 0;
+ else res = ~0UL;
+ }
+ else if ((len == 4) && (strncmp(pzArg, zNone, (size_t)4) == 0)) {
+ if (! iv)
+ res = 0;
+ }
+ else do {
+ char* pz;
+ uintptr_t bit = strtoul( pzArg, &pz, 0 );
+
+ if (pz != pzArg + len) {
+ char z[ AO_NAME_SIZE ];
+ tCC* p;
+ if (*pz != NUL) {
+ if (len >= AO_NAME_LIMIT)
+ break;
+ strncpy( z, pzArg, (size_t)len );
+ z[len] = NUL;
+ p = z;
+ } else {
+ p = pzArg;
+ }
+
+ bit = 1UL << findName(p, pOpts, pOD, paz_names, name_ct);
+ }
+ if (iv)
+ res &= ~bit;
+ else res |= bit;
+ } while (0);
+
+ if (pzArg[len] == NUL)
+ break;
+ pzArg += len + 1;
+ }
+ if (name_ct < (8 * sizeof( uintptr_t ))) {
+ res &= (1UL << name_ct) - 1UL;
+ }
+
+ pOD->optCookie = (void*)res;
+ }
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/enumeration.c */
diff --git a/contrib/ntp/libopts/environment.c b/contrib/ntp/libopts/environment.c
new file mode 100644
index 0000000..9fb1550
--- /dev/null
+++ b/contrib/ntp/libopts/environment.c
@@ -0,0 +1,279 @@
+
+/*
+ * $Id: environment.c,v 4.13 2007/04/15 19:01:18 bkorb Exp $
+ * Time-stamp: "2007-04-15 11:50:35 bkorb"
+ *
+ * This file contains all of the routines that must be linked into
+ * an executable to use the generated option processing. The optional
+ * routines are in separately compiled modules so that they will not
+ * necessarily be linked in.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+checkEnvOpt(tOptState * os, char * env_name,
+ tOptions* pOpts, teEnvPresetType type);
+/* = = = END-STATIC-FORWARD = = = */
+
+/*
+ * doPrognameEnv - check for preset values from the ${PROGNAME}
+ * environment variable. This is accomplished by parsing the text into
+ * tokens, temporarily replacing the arg vector and calling
+ * doImmediateOpts and/or doRegularOpts.
+ */
+LOCAL void
+doPrognameEnv( tOptions* pOpts, teEnvPresetType type )
+{
+ char const* pczOptStr = getenv( pOpts->pzPROGNAME );
+ token_list_t* pTL;
+ int sv_argc;
+ tAoUI sv_flag;
+ char** sv_argv;
+
+ /*
+ * IF there is no such environment variable
+ * *or* there is, but we are doing immediate opts and there are
+ * no immediate opts to do (--help inside $PROGNAME is silly,
+ * but --no-load-defs is not, so that is marked)
+ * THEN bail out now. (
+ */
+ if ( (pczOptStr == NULL)
+ || ( (type == ENV_IMM)
+ && ((pOpts->fOptSet & OPTPROC_HAS_IMMED) == 0) ) )
+ return;
+
+ /*
+ * Tokenize the string. If there's nothing of interest, we'll bail
+ * here immediately.
+ */
+ pTL = ao_string_tokenize( pczOptStr );
+ if (pTL == NULL)
+ return;
+
+ /*
+ * Substitute our $PROGNAME argument list for the real one
+ */
+ sv_argc = pOpts->origArgCt;
+ sv_argv = pOpts->origArgVect;
+ sv_flag = pOpts->fOptSet;
+
+ /*
+ * We add a bogus pointer to the start of the list. The program name
+ * has already been pulled from "argv", so it won't get dereferenced.
+ * The option scanning code will skip the "program name" at the start
+ * of this list of tokens, so we accommodate this way ....
+ */
+ pOpts->origArgVect = (char**)(pTL->tkn_list - 1);
+ pOpts->origArgCt = pTL->tkn_ct + 1;
+ pOpts->fOptSet &= ~OPTPROC_ERRSTOP;
+
+ pOpts->curOptIdx = 1;
+ pOpts->pzCurOpt = NULL;
+
+ switch (type) {
+ case ENV_IMM:
+ /*
+ * We know the OPTPROC_HAS_IMMED bit is set.
+ */
+ (void)doImmediateOpts( pOpts );
+ break;
+
+ case ENV_NON_IMM:
+ (void)doRegularOpts( pOpts );
+ break;
+
+ default:
+ /*
+ * Only to immediate opts if the OPTPROC_HAS_IMMED bit is set.
+ */
+ if (pOpts->fOptSet & OPTPROC_HAS_IMMED) {
+ (void)doImmediateOpts( pOpts );
+ pOpts->curOptIdx = 1;
+ pOpts->pzCurOpt = NULL;
+ }
+ (void)doRegularOpts( pOpts );
+ break;
+ }
+
+ /*
+ * Free up the temporary arg vector and restore the original program args.
+ */
+ free( pTL );
+ pOpts->origArgVect = sv_argv;
+ pOpts->origArgCt = sv_argc;
+ pOpts->fOptSet = sv_flag;
+}
+
+static void
+checkEnvOpt(tOptState * os, char * env_name,
+ tOptions* pOpts, teEnvPresetType type)
+{
+ os->pzOptArg = getenv( env_name );
+ if (os->pzOptArg == NULL)
+ return;
+
+ os->flags = OPTST_PRESET | OPTST_ALLOC_ARG | os->pOD->fOptState;
+ os->optType = TOPT_UNDEFINED;
+
+ if ( (os->pOD->pz_DisablePfx != NULL)
+ && (streqvcmp( os->pzOptArg, os->pOD->pz_DisablePfx ) == 0)) {
+ os->flags |= OPTST_DISABLED;
+ os->pzOptArg = NULL;
+ }
+
+ switch (type) {
+ case ENV_IMM:
+ /*
+ * Process only immediate actions
+ */
+ if (DO_IMMEDIATELY(os->flags))
+ break;
+ return;
+
+ case ENV_NON_IMM:
+ /*
+ * Process only NON immediate actions
+ */
+ if (DO_NORMALLY(os->flags) || DO_SECOND_TIME(os->flags))
+ break;
+ return;
+
+ default: /* process everything */
+ break;
+ }
+
+ /*
+ * Make sure the option value string is persistent and consistent.
+ *
+ * The interpretation of the option value depends
+ * on the type of value argument the option takes
+ */
+ if (os->pzOptArg != NULL) {
+ if (OPTST_GET_ARGTYPE(os->pOD->fOptState) == OPARG_TYPE_NONE) {
+ os->pzOptArg = NULL;
+ } else if ( (os->pOD->fOptState & OPTST_ARG_OPTIONAL)
+ && (*os->pzOptArg == NUL)) {
+ os->pzOptArg = NULL;
+ } else if (*os->pzOptArg == NUL) {
+ os->pzOptArg = zNil;
+ } else {
+ AGDUPSTR( os->pzOptArg, os->pzOptArg, "option argument" );
+ os->flags |= OPTST_ALLOC_ARG;
+ }
+ }
+
+ handleOption( pOpts, os );
+}
+
+/*
+ * doEnvPresets - check for preset values from the envrionment
+ * This routine should process in all, immediate or normal modes....
+ */
+LOCAL void
+doEnvPresets( tOptions* pOpts, teEnvPresetType type )
+{
+ int ct;
+ tOptState st;
+ char* pzFlagName;
+ size_t spaceLeft;
+ char zEnvName[ AO_NAME_SIZE ];
+
+ /*
+ * Finally, see if we are to look at the environment
+ * variables for initial values.
+ */
+ if ((pOpts->fOptSet & OPTPROC_ENVIRON) == 0)
+ return;
+
+ doPrognameEnv( pOpts, type );
+
+ ct = pOpts->presetOptCt;
+ st.pOD = pOpts->pOptDesc;
+
+ pzFlagName = zEnvName
+ + snprintf( zEnvName, sizeof( zEnvName ), "%s_", pOpts->pzPROGNAME );
+ spaceLeft = AO_NAME_SIZE - (pzFlagName - zEnvName) - 1;
+
+ for (;ct-- > 0; st.pOD++) {
+ /*
+ * If presetting is disallowed, then skip this entry
+ */
+ if ( ((st.pOD->fOptState & OPTST_NO_INIT) != 0)
+ || (st.pOD->optEquivIndex != NO_EQUIVALENT) )
+ continue;
+
+ /*
+ * IF there is no such environment variable,
+ * THEN skip this entry, too.
+ */
+ if (strlen( st.pOD->pz_NAME ) >= spaceLeft)
+ continue;
+
+ /*
+ * Set up the option state
+ */
+ strcpy( pzFlagName, st.pOD->pz_NAME );
+ checkEnvOpt(&st, zEnvName, pOpts, type);
+ }
+
+ /*
+ * Special handling for ${PROGNAME_LOAD_OPTS}
+ */
+ if (pOpts->specOptIdx.save_opts != 0) {
+ st.pOD = pOpts->pOptDesc + pOpts->specOptIdx.save_opts + 1;
+ strcpy( pzFlagName, st.pOD->pz_NAME );
+ checkEnvOpt(&st, zEnvName, pOpts, type);
+ }
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/environment.c */
diff --git a/contrib/ntp/libopts/genshell.c b/contrib/ntp/libopts/genshell.c
new file mode 100644
index 0000000..de098a5
--- /dev/null
+++ b/contrib/ntp/libopts/genshell.c
@@ -0,0 +1,354 @@
+/* -*- buffer-read-only: t -*- vi: set ro:
+ *
+ * DO NOT EDIT THIS FILE (genshell.c)
+ *
+ * It has been AutoGen-ed Saturday May 5, 2007 at 12:02:35 PM PDT
+ * From the definitions genshell.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This source file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * genshellopt author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * genshellopt copyright 1999-2007 Bruce Korb - all rights reserved
+ *
+ * genshellopt is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * genshellopt 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with genshellopt. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#include <limits.h>
+
+#define OPTION_CODE_COMPILE 1
+#include "genshell.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+tSCC zCopyright[] =
+ "genshellopt copyright (c) 1999-2007 Bruce Korb, all rights reserved";
+tSCC zCopyrightNotice[] =
+ "genshellopt is free software; you can redistribute it and/or\n\
+modify it under the terms of the GNU Lesser General Public\n\
+License as published by the Free Software Foundation; either\n\
+version 2.1 of the License, or (at your option) any later version.\n\n\
+genshellopt is distributed in the hope that it will be useful,\n\
+but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n\
+Lesser General Public License for more details.\n\n\
+You should have received a copy of the GNU Lesser General Public\n\
+License along with genshellopt. If not, write to:\n\
+\tThe Free Software Foundation, Inc.,\n\
+\t51 Franklin Street, Fifth Floor\n\
+\tBoston, MA 02110-1301, USA.";
+extern tUsageProc genshelloptUsage;
+
+#ifndef NULL
+# define NULL 0
+#endif
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+/*
+ * Script option description:
+ */
+tSCC zScriptText[] =
+ "Output Script File";
+tSCC zScript_NAME[] = "SCRIPT";
+tSCC zScript_Name[] = "script";
+#define SCRIPT_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Shell option description:
+ */
+tSCC zShellText[] =
+ "Shell name (follows \"#!\" magic)";
+tSCC zShell_NAME[] = "SHELL";
+tSCC zNotShell_Name[] = "no-shell";
+tSCC zNotShell_Pfx[] = "no";
+#define zShell_Name (zNotShell_Name + 3)
+#define SHELL_FLAGS (OPTST_INITENABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Help/More_Help/Version option descriptions:
+ */
+tSCC zHelpText[] = "Display usage information and exit";
+tSCC zHelp_Name[] = "help";
+
+tSCC zMore_HelpText[] = "Extended usage information passed thru pager";
+tSCC zMore_Help_Name[] = "more-help";
+
+tSCC zVersionText[] = "Output version information and exit";
+tSCC zVersion_Name[] = "version";
+/*
+ * Declare option callback procedures
+ */
+extern tOptProc
+ optionPagedUsage, optionPrintVersion;
+static tOptProc
+ doUsageOpt;
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Genshellopt Option Descriptions.
+ */
+static tOptDesc optDesc[ OPTION_CT ] = {
+ { /* entry idx, value */ 0, VALUE_OPT_SCRIPT,
+ /* equiv idx, value */ 0, VALUE_OPT_SCRIPT,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SCRIPT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zScriptText, zScript_NAME, zScript_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 1, VALUE_OPT_SHELL,
+ /* equiv idx, value */ 1, VALUE_OPT_SHELL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SHELL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zShellText, zShell_NAME, zShell_Name,
+ /* disablement strs */ zNotShell_Name, zNotShell_Pfx },
+
+#ifdef NO_OPTIONAL_OPT_ARGS
+# define VERSION_OPT_FLAGS OPTST_IMM | OPTST_NO_INIT
+#else
+# define VERSION_OPT_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+ OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
+#endif
+
+ { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ VERSION_OPT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionPrintVersion,
+ /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
+ /* disablement strs */ NULL, NULL },
+
+#undef VERSION_OPT_FLAGS
+
+
+ { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ doUsageOpt,
+ /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionPagedUsage,
+ /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
+ /* disablement strs */ NULL, NULL }
+};
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Genshellopt Option Environment
+ */
+tSCC zPROGNAME[] = "GENSHELLOPT";
+tSCC zUsageTitle[] =
+"genshellopt - Generate Shell Option Processing Script - Ver. 1\n\
+USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n";
+#define zRcName NULL
+#define apzHomeList NULL
+
+tSCC zBugsAddr[] = "autogen-users@lists.sourceforge.net";
+tSCC zExplain[] = "\n\
+Note that `shell' is only useful if the output file does not already\n\
+exist. If it does, then the shell name and optional first argument\n\
+will be extracted from the script file.\n";
+tSCC zDetail[] = "\n\
+If the script file already exists and contains Automated Option Processing\n\
+text, the second line of the file through the ending tag will be replaced\n\
+by the newly generated text. The first `#!' line will be regenerated.\n";
+tSCC zFullVersion[] = GENSHELLOPT_FULL_VERSION;
+/* extracted from optcode.tpl near line 408 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE
+ static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+tOptions genshelloptOptions = {
+ OPTIONS_STRUCT_VERSION,
+ 0, NULL, /* original argc + argv */
+ ( OPTPROC_BASE
+ + OPTPROC_ERRSTOP
+ + OPTPROC_SHORTOPT
+ + OPTPROC_LONGOPT
+ + OPTPROC_NO_REQ_OPT
+ + OPTPROC_NEGATIONS
+ + OPTPROC_NO_ARGS ),
+ 0, NULL, /* current option index, current option */
+ NULL, NULL, zPROGNAME,
+ zRcName, zCopyright, zCopyrightNotice,
+ zFullVersion, apzHomeList, zUsageTitle,
+ zExplain, zDetail, optDesc,
+ zBugsAddr, /* address to send bugs to */
+ NULL, NULL, /* extensions/saved state */
+ genshelloptUsage, /* usage procedure */
+ translate_option_strings, /* translation procedure */
+ /*
+ * Indexes to special options
+ */
+ { INDEX_OPT_MORE_HELP,
+ 0 /* no option state saving */,
+ NO_EQUIVALENT /* index of '-#' option */,
+ NO_EQUIVALENT /* index of default opt */
+ },
+ 5 /* full option count */, 2 /* user option count */
+};
+
+/*
+ * Create the static procedure(s) declared above.
+ */
+static void
+doUsageOpt(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ USAGE( EXIT_SUCCESS );
+}
+/* extracted from optcode.tpl near line 514 */
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext( char const* pz );
+static void coerce_it(void** s);
+
+static char*
+AO_gettext( char const* pz )
+{
+ char* pzRes;
+ if (pz == NULL)
+ return NULL;
+ pzRes = _(pz);
+ if (pzRes == pz)
+ return pzRes;
+ pzRes = strdup( pzRes );
+ if (pzRes == NULL) {
+ fputs( _("No memory for duping translated strings\n"), stderr );
+ exit( EXIT_FAILURE );
+ }
+ return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s); }
+#define COERSION(_f) \
+ coerce_it((void*)&(genshelloptOptions._f))
+
+/*
+ * This invokes the translation code (e.g. gettext(3)).
+ */
+static void
+translate_option_strings( void )
+{
+ /*
+ * Guard against re-translation. It won't work. The strings will have
+ * been changed by the first pass through this code. One shot only.
+ */
+ if (option_usage_text.field_ct == 0)
+ return;
+ /*
+ * Do the translations. The first pointer follows the field count field.
+ * The field count field is the size of a pointer.
+ */
+ {
+ char** ppz = (char**)(void*)&(option_usage_text);
+ int ix = option_usage_text.field_ct;
+
+ do {
+ ppz++;
+ *ppz = AO_gettext(*ppz);
+ } while (--ix > 0);
+ }
+ option_usage_text.field_ct = 0;
+
+ {
+ tOptDesc* pOD = genshelloptOptions.pOptDesc;
+ int ix = genshelloptOptions.optCt;
+
+ for (;;) {
+ pOD->pzText = AO_gettext(pOD->pzText);
+ pOD->pz_NAME = AO_gettext(pOD->pz_NAME);
+ pOD->pz_Name = AO_gettext(pOD->pz_Name);
+ pOD->pz_DisableName = AO_gettext(pOD->pz_DisableName);
+ pOD->pz_DisablePfx = AO_gettext(pOD->pz_DisablePfx);
+ if (--ix <= 0)
+ break;
+ pOD++;
+ }
+ }
+ COERSION(pzCopyright);
+ COERSION(pzCopyNotice);
+ COERSION(pzFullVersion);
+ COERSION(pzUsageTitle);
+ COERSION(pzExplain);
+ COERSION(pzDetail);
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef __cplusplus
+}
+#endif
+/* genshell.c ends here */
diff --git a/contrib/ntp/libopts/genshell.h b/contrib/ntp/libopts/genshell.h
new file mode 100644
index 0000000..b57677d
--- /dev/null
+++ b/contrib/ntp/libopts/genshell.h
@@ -0,0 +1,149 @@
+/* -*- buffer-read-only: t -*- vi: set ro:
+ *
+ * DO NOT EDIT THIS FILE (genshell.h)
+ *
+ * It has been AutoGen-ed Saturday May 5, 2007 at 12:02:35 PM PDT
+ * From the definitions genshell.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This header file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * genshellopt author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * genshellopt copyright 1999-2007 Bruce Korb - all rights reserved
+ *
+ * genshellopt is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * genshellopt 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with genshellopt. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+/*
+ * This file contains the programmatic interface to the Automated
+ * Options generated for the genshellopt program.
+ * These macros are documented in the AutoGen info file in the
+ * "AutoOpts" chapter. Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_GENSHELL_H_GUARD
+#define AUTOOPTS_GENSHELL_H_GUARD
+#include <autoopts/options.h>
+
+/*
+ * Ensure that the library used for compiling this generated header is at
+ * least as new as the version current when the header template was released
+ * (not counting patch version increments). Also ensure that the oldest
+ * tolerable version is at least as old as what was current when the header
+ * template was released.
+ */
+#define AO_TEMPLATE_VERSION 118784
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+ Choke Me.
+#endif
+
+/*
+ * Enumeration of each option:
+ */
+typedef enum {
+ INDEX_OPT_SCRIPT = 0,
+ INDEX_OPT_SHELL = 1,
+ INDEX_OPT_VERSION = 2,
+ INDEX_OPT_HELP = 3,
+ INDEX_OPT_MORE_HELP = 4
+} teOptIndex;
+
+#define OPTION_CT 5
+#define GENSHELLOPT_VERSION "1"
+#define GENSHELLOPT_FULL_VERSION "genshellopt - Generate Shell Option Processing Script - Ver. 1"
+
+/*
+ * Interface defines for all options. Replace "n" with the UPPER_CASED
+ * option name (as in the teOptIndex enumeration above).
+ * e.g. HAVE_OPT( SCRIPT )
+ */
+#define DESC(n) (genshelloptOptions.pOptDesc[INDEX_OPT_## n])
+#define HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define OPT_ARG(n) (DESC(n).optArg.argString)
+#define STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define COUNT_OPT(n) (DESC(n).optOccCt)
+#define ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define CLEAR_OPT(n) STMTS( \
+ DESC(n).fOptState &= OPTST_PERSISTENT_MASK; \
+ if ( (DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+ DESC(n).fOptState |= OPTST_DISABLED; \
+ DESC(n).optCookie = NULL )
+
+/*
+ * Interface defines for specific options.
+ */
+#define VALUE_OPT_SCRIPT 'o'
+#define VALUE_OPT_SHELL 's'
+
+#define VALUE_OPT_VERSION 'v'
+#define VALUE_OPT_HELP '?'
+#define VALUE_OPT_MORE_HELP '!'
+/*
+ * Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR STMTS( genshelloptOptions.fOptSet &= ~OPTPROC_ERRSTOP )
+#define ERRSTOP_OPTERR STMTS( genshelloptOptions.fOptSet |= OPTPROC_ERRSTOP )
+#define RESTART_OPT(n) STMTS( \
+ genshelloptOptions.curOptIdx = (n); \
+ genshelloptOptions.pzCurOpt = NULL )
+#define START_OPT RESTART_OPT(1)
+#define USAGE(c) (*genshelloptOptions.pUsageProc)( &genshelloptOptions, c )
+/* extracted from opthead.tpl near line 360 */
+
+/* * * * * *
+ *
+ * Declare the genshellopt option descriptor.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern tOptions genshelloptOptions;
+
+#ifndef _
+# if ENABLE_NLS
+# include <stdio.h>
+ static inline char* aoGetsText( char const* pz ) {
+ if (pz == NULL) return NULL;
+ return (char*)gettext( pz );
+ }
+# define _(s) aoGetsText(s)
+# else /* ENABLE_NLS */
+# define _(s) s
+# endif /* ENABLE_NLS */
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_GENSHELL_H_GUARD */
+/* genshell.h ends here */
diff --git a/contrib/ntp/libopts/libopts.c b/contrib/ntp/libopts/libopts.c
new file mode 100644
index 0000000..feb7557
--- /dev/null
+++ b/contrib/ntp/libopts/libopts.c
@@ -0,0 +1,30 @@
+#define AUTOOPTS_INTERNAL
+#include "compat/compat.h"
+#define LOCAL static
+#include "autoopts/options.h"
+#include "autoopts/usage-txt.h"
+#include "genshell.h"
+#include "autoopts.h"
+#include "proto.h"
+#include "autoopts.c"
+#include "boolean.c"
+#include "configfile.c"
+#include "cook.c"
+#include "enumeration.c"
+#include "environment.c"
+#include "genshell.c"
+#include "load.c"
+#include "makeshell.c"
+#include "nested.c"
+#include "numeric.c"
+#include "pgusage.c"
+#include "putshell.c"
+#include "restore.c"
+#include "save.c"
+#include "sort.c"
+#include "stack.c"
+#include "streqvcmp.c"
+#include "text_mmap.c"
+#include "tokenize.c"
+#include "usage.c"
+#include "version.c"
diff --git a/contrib/ntp/libopts/load.c b/contrib/ntp/libopts/load.c
new file mode 100644
index 0000000..eeeb125
--- /dev/null
+++ b/contrib/ntp/libopts/load.c
@@ -0,0 +1,563 @@
+
+/*
+ * $Id: load.c,v 4.20 2007/02/04 22:17:39 bkorb Exp $
+ * Time-stamp: "2007-02-04 11:54:57 bkorb"
+ *
+ * This file contains the routines that deal with processing text strings
+ * for options, either from a NUL-terminated string passed in or from an
+ * rc/ini file.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+tOptionLoadMode option_load_mode = OPTION_LOAD_UNCOOKED;
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static ag_bool
+insertProgramPath(
+ char* pzBuf,
+ int bufSize,
+ tCC* pzName,
+ tCC* pzProgPath );
+
+static ag_bool
+insertEnvVal(
+ char* pzBuf,
+ int bufSize,
+ tCC* pzName,
+ tCC* pzProgPath );
+
+static char*
+assembleArgValue( char* pzTxt, tOptionLoadMode mode );
+/* = = = END-STATIC-FORWARD = = = */
+
+/*=export_func optionMakePath
+ * private:
+ *
+ * what: translate and construct a path
+ * arg: + char* + pzBuf + The result buffer +
+ * arg: + int + bufSize + The size of this buffer +
+ * arg: + char const* + pzName + The input name +
+ * arg: + char const* + pzProgPath + The full path of the current program +
+ *
+ * ret-type: ag_bool
+ * ret-desc: AG_TRUE if the name was handled, otherwise AG_FALSE.
+ * If the name does not start with ``$'', then it is handled
+ * simply by copying the input name to the output buffer and
+ * resolving the name with either @code{canonicalize_file_name(3GLIBC)}
+ * or @code{realpath(3C)}.
+ *
+ * doc:
+ *
+ * This routine will copy the @code{pzName} input name into the @code{pzBuf}
+ * output buffer, carefully not exceeding @code{bufSize} bytes. If the
+ * first character of the input name is a @code{'$'} character, then there
+ * is special handling:
+ * @*
+ * @code{$$} is replaced with the directory name of the @code{pzProgPath},
+ * searching @code{$PATH} if necessary.
+ * @*
+ * @code{$@} is replaced with the AutoGen package data installation directory
+ * (aka @code{pkgdatadir}).
+ * @*
+ * @code{$NAME} is replaced by the contents of the @code{NAME} environment
+ * variable. If not found, the search fails.
+ *
+ * Please note: both @code{$$} and @code{$NAME} must be at the start of the
+ * @code{pzName} string and must either be the entire string or be followed
+ * by the @code{'/'} (backslash on windows) character.
+ *
+ * err: @code{AG_FALSE} is returned if:
+ * @*
+ * @bullet{} The input name exceeds @code{bufSize} bytes.
+ * @*
+ * @bullet{} @code{$$}, @code{$@@} or @code{$NAME} is not the full string
+ * and the next character is not '/'.
+ * @*
+ * @bullet{} libopts was built without PKGDATADIR defined and @code{$@@}
+ * was specified.
+ * @*
+ * @bullet{} @code{NAME} is not a known environment variable
+ * @*
+ * @bullet{} @code{canonicalize_file_name} or @code{realpath} return
+ * errors (cannot resolve the resulting path).
+=*/
+ag_bool
+optionMakePath(
+ char* pzBuf,
+ int bufSize,
+ tCC* pzName,
+ tCC* pzProgPath )
+{
+ size_t name_len = strlen( pzName );
+
+# ifndef PKGDATADIR
+# define PKGDATADIR ""
+# endif
+
+ tSCC pkgdatadir[] = PKGDATADIR;
+
+ ag_bool res = AG_TRUE;
+
+ if (bufSize <= name_len)
+ return AG_FALSE;
+
+ /*
+ * IF not an environment variable, just copy the data
+ */
+ if (*pzName != '$') {
+ tCC* pzS = pzName;
+ char* pzD = pzBuf;
+ int ct = bufSize;
+
+ for (;;) {
+ if ( (*(pzD++) = *(pzS++)) == NUL)
+ break;
+ if (--ct <= 0)
+ return AG_FALSE;
+ }
+ }
+
+ /*
+ * IF the name starts with "$$", then it must be "$$" or
+ * it must start with "$$/". In either event, replace the "$$"
+ * with the path to the executable and append a "/" character.
+ */
+ else switch (pzName[1]) {
+ case NUL:
+ return AG_FALSE;
+
+ case '$':
+ res = insertProgramPath( pzBuf, bufSize, pzName, pzProgPath );
+ break;
+
+ case '@':
+ if (pkgdatadir[0] == NUL)
+ return AG_FALSE;
+
+ if (name_len + sizeof (pkgdatadir) > bufSize)
+ return AG_FALSE;
+
+ strcpy(pzBuf, pkgdatadir);
+ strcpy(pzBuf + sizeof(pkgdatadir) - 1, pzName + 2);
+ break;
+
+ default:
+ res = insertEnvVal( pzBuf, bufSize, pzName, pzProgPath );
+ }
+
+ if (! res)
+ return AG_FALSE;
+
+#if defined(HAVE_CANONICALIZE_FILE_NAME)
+ {
+ char* pz = canonicalize_file_name(pzBuf);
+ if (pz == NULL)
+ return AG_FALSE;
+ if (strlen(pz) < bufSize)
+ strcpy(pzBuf, pz);
+ free(pz);
+ }
+
+#elif defined(HAVE_REALPATH)
+ {
+ char z[ PATH_MAX+1 ];
+
+ if (realpath( pzBuf, z ) == NULL)
+ return AG_FALSE;
+
+ if (strlen(z) < bufSize)
+ strcpy( pzBuf, z );
+ }
+#endif
+
+ return AG_TRUE;
+}
+
+
+static ag_bool
+insertProgramPath(
+ char* pzBuf,
+ int bufSize,
+ tCC* pzName,
+ tCC* pzProgPath )
+{
+ tCC* pzPath;
+ tCC* pz;
+ int skip = 2;
+
+ switch (pzName[2]) {
+ case DIRCH:
+ skip = 3;
+ case NUL:
+ break;
+ default:
+ return AG_FALSE;
+ }
+
+ /*
+ * See if the path is included in the program name.
+ * If it is, we're done. Otherwise, we have to hunt
+ * for the program using "pathfind".
+ */
+ if (strchr( pzProgPath, DIRCH ) != NULL)
+ pzPath = pzProgPath;
+ else {
+ pzPath = pathfind( getenv( "PATH" ), (char*)pzProgPath, "rx" );
+
+ if (pzPath == NULL)
+ return AG_FALSE;
+ }
+
+ pz = strrchr( pzPath, DIRCH );
+
+ /*
+ * IF we cannot find a directory name separator,
+ * THEN we do not have a path name to our executable file.
+ */
+ if (pz == NULL)
+ return AG_FALSE;
+
+ pzName += skip;
+
+ /*
+ * Concatenate the file name to the end of the executable path.
+ * The result may be either a file or a directory.
+ */
+ if ((pz - pzPath)+1 + strlen(pzName) >= bufSize)
+ return AG_FALSE;
+
+ memcpy( pzBuf, pzPath, (size_t)((pz - pzPath)+1) );
+ strcpy( pzBuf + (pz - pzPath) + 1, pzName );
+
+ /*
+ * If the "pzPath" path was gotten from "pathfind()", then it was
+ * allocated and we need to deallocate it.
+ */
+ if (pzPath != pzProgPath)
+ free( (void*)pzPath );
+ return AG_TRUE;
+}
+
+
+static ag_bool
+insertEnvVal(
+ char* pzBuf,
+ int bufSize,
+ tCC* pzName,
+ tCC* pzProgPath )
+{
+ char* pzDir = pzBuf;
+
+ for (;;) {
+ int ch = (int)*++pzName;
+ if (! ISNAMECHAR( ch ))
+ break;
+ *(pzDir++) = (char)ch;
+ }
+
+ if (pzDir == pzBuf)
+ return AG_FALSE;
+
+ *pzDir = NUL;
+
+ pzDir = getenv( pzBuf );
+
+ /*
+ * Environment value not found -- skip the home list entry
+ */
+ if (pzDir == NULL)
+ return AG_FALSE;
+
+ if (strlen( pzDir ) + 1 + strlen( pzName ) >= bufSize)
+ return AG_FALSE;
+
+ sprintf( pzBuf, "%s%s", pzDir, pzName );
+ return AG_TRUE;
+}
+
+
+LOCAL void
+mungeString( char* pzTxt, tOptionLoadMode mode )
+{
+ char* pzE;
+
+ if (mode == OPTION_LOAD_KEEP)
+ return;
+
+ if (isspace( (int)*pzTxt )) {
+ char* pzS = pzTxt;
+ char* pzD = pzTxt;
+ while (isspace( (int)*++pzS )) ;
+ while ((*(pzD++) = *(pzS++)) != NUL) ;
+ pzE = pzD-1;
+ } else
+ pzE = pzTxt + strlen( pzTxt );
+
+ while ((pzE > pzTxt) && isspace( (int)pzE[-1] )) pzE--;
+ *pzE = NUL;
+
+ if (mode == OPTION_LOAD_UNCOOKED)
+ return;
+
+ switch (*pzTxt) {
+ default: return;
+ case '"':
+ case '\'': break;
+ }
+
+ switch (pzE[-1]) {
+ default: return;
+ case '"':
+ case '\'': break;
+ }
+
+ (void)ao_string_cook( pzTxt, NULL );
+}
+
+
+static char*
+assembleArgValue( char* pzTxt, tOptionLoadMode mode )
+{
+ tSCC zBrk[] = " \t:=";
+ char* pzEnd = strpbrk( pzTxt, zBrk );
+ int space_break;
+
+ /*
+ * Not having an argument to a configurable name is okay.
+ */
+ if (pzEnd == NULL)
+ return pzTxt + strlen(pzTxt);
+
+ /*
+ * If we are keeping all whitespace, then the modevalue starts with the
+ * character that follows the end of the configurable name, regardless
+ * of which character caused it.
+ */
+ if (mode == OPTION_LOAD_KEEP) {
+ *(pzEnd++) = NUL;
+ return pzEnd;
+ }
+
+ /*
+ * If the name ended on a white space character, remember that
+ * because we'll have to skip over an immediately following ':' or '='
+ * (and the white space following *that*).
+ */
+ space_break = isspace((int)*pzEnd);
+ *(pzEnd++) = NUL;
+ while (isspace((int)*pzEnd)) pzEnd++;
+ if (space_break && ((*pzEnd == ':') || (*pzEnd == '=')))
+ while (isspace((int)*++pzEnd)) ;
+
+ return pzEnd;
+}
+
+
+/*
+ * Load an option from a block of text. The text must start with the
+ * configurable/option name and be followed by its associated value.
+ * That value may be processed in any of several ways. See "tOptionLoadMode"
+ * in autoopts.h.
+ */
+LOCAL void
+loadOptionLine(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzLine,
+ tDirection direction,
+ tOptionLoadMode load_mode )
+{
+ while (isspace( (int)*pzLine )) pzLine++;
+
+ {
+ char* pzArg = assembleArgValue( pzLine, load_mode );
+
+ if (! SUCCESSFUL( longOptionFind( pOpts, pzLine, pOS )))
+ return;
+ if (pOS->flags & OPTST_NO_INIT)
+ return;
+ pOS->pzOptArg = pzArg;
+ }
+
+ switch (pOS->flags & (OPTST_IMM|OPTST_DISABLE_IMM)) {
+ case 0:
+ /*
+ * The selected option has no immediate action.
+ * THEREFORE, if the direction is PRESETTING
+ * THEN we skip this option.
+ */
+ if (PRESETTING(direction))
+ return;
+ break;
+
+ case OPTST_IMM:
+ if (PRESETTING(direction)) {
+ /*
+ * We are in the presetting direction with an option we handle
+ * immediately for enablement, but normally for disablement.
+ * Therefore, skip if disabled.
+ */
+ if ((pOS->flags & OPTST_DISABLED) == 0)
+ return;
+ } else {
+ /*
+ * We are in the processing direction with an option we handle
+ * immediately for enablement, but normally for disablement.
+ * Therefore, skip if NOT disabled.
+ */
+ if ((pOS->flags & OPTST_DISABLED) != 0)
+ return;
+ }
+ break;
+
+ case OPTST_DISABLE_IMM:
+ if (PRESETTING(direction)) {
+ /*
+ * We are in the presetting direction with an option we handle
+ * immediately for disablement, but normally for disablement.
+ * Therefore, skip if NOT disabled.
+ */
+ if ((pOS->flags & OPTST_DISABLED) != 0)
+ return;
+ } else {
+ /*
+ * We are in the processing direction with an option we handle
+ * immediately for disablement, but normally for disablement.
+ * Therefore, skip if disabled.
+ */
+ if ((pOS->flags & OPTST_DISABLED) == 0)
+ return;
+ }
+ break;
+
+ case OPTST_IMM|OPTST_DISABLE_IMM:
+ /*
+ * The selected option is always for immediate action.
+ * THEREFORE, if the direction is PROCESSING
+ * THEN we skip this option.
+ */
+ if (PROCESSING(direction))
+ return;
+ break;
+ }
+
+ /*
+ * Fix up the args.
+ */
+ if (OPTST_GET_ARGTYPE(pOS->pOD->fOptState) == OPARG_TYPE_NONE) {
+ if (*pOS->pzOptArg != NUL)
+ return;
+ pOS->pzOptArg = NULL;
+
+ } else if (pOS->pOD->fOptState & OPTST_ARG_OPTIONAL) {
+ if (*pOS->pzOptArg == NUL)
+ pOS->pzOptArg = NULL;
+ else {
+ AGDUPSTR( pOS->pzOptArg, pOS->pzOptArg, "option argument" );
+ pOS->flags |= OPTST_ALLOC_ARG;
+ }
+
+ } else {
+ if (*pOS->pzOptArg == NUL)
+ pOS->pzOptArg = zNil;
+ else {
+ AGDUPSTR( pOS->pzOptArg, pOS->pzOptArg, "option argument" );
+ pOS->flags |= OPTST_ALLOC_ARG;
+ }
+ }
+
+ {
+ tOptionLoadMode sv = option_load_mode;
+ option_load_mode = load_mode;
+ handleOption( pOpts, pOS );
+ option_load_mode = sv;
+ }
+}
+
+
+/*=export_func optionLoadLine
+ *
+ * what: process a string for an option name and value
+ *
+ * arg: tOptions*, pOpts, program options descriptor
+ * arg: char const*, pzLine, NUL-terminated text
+ *
+ * doc:
+ *
+ * This is a client program callable routine for setting options from, for
+ * example, the contents of a file that they read in. Only one option may
+ * appear in the text. It will be treated as a normal (non-preset) option.
+ *
+ * When passed a pointer to the option struct and a string, it will find
+ * the option named by the first token on the string and set the option
+ * argument to the remainder of the string. The caller must NUL terminate
+ * the string. Any embedded new lines will be included in the option
+ * argument. If the input looks like one or more quoted strings, then the
+ * input will be "cooked". The "cooking" is identical to the string
+ * formation used in AutoGen definition files (@pxref{basic expression}),
+ * except that you may not use backquotes.
+ *
+ * err: Invalid options are silently ignored. Invalid option arguments
+ * will cause a warning to print, but the function should return.
+=*/
+void
+optionLoadLine(
+ tOptions* pOpts,
+ tCC* pzLine )
+{
+ tOptState st = OPTSTATE_INITIALIZER(SET);
+ char* pz;
+ AGDUPSTR( pz, pzLine, "user option line" );
+ loadOptionLine( pOpts, &st, pz, DIRECTION_PROCESS, OPTION_LOAD_COOKED );
+ AGFREE( pz );
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/load.c */
diff --git a/contrib/ntp/libopts/m4/libopts.m4 b/contrib/ntp/libopts/m4/libopts.m4
new file mode 100644
index 0000000..adc3235
--- /dev/null
+++ b/contrib/ntp/libopts/m4/libopts.m4
@@ -0,0 +1,509 @@
+dnl -*- buffer-read-only: t -*- vi: set ro:
+dnl
+dnl DO NOT EDIT THIS FILE (libopts.m4)
+dnl
+dnl It has been AutoGen-ed Saturday May 5, 2007 at 12:02:37 PM PDT
+dnl From the definitions libopts.def
+dnl and the template file conftest.tpl
+dnl
+dnl do always before generated macros:
+dnl
+AC_DEFUN([INVOKE_LIBOPTS_MACROS_FIRST],[
+[if test X${INVOKE_LIBOPTS_MACROS_FIRST_done} != Xyes ; then]
+ # =================
+ # AC_HEADER_STDC
+ # =================
+ AC_HEADER_STDC
+ # =================
+ # AC_HEADER_DIRENT
+ # =================
+ AC_HEADER_DIRENT
+
+ # =================
+ # AC_CHECK_HEADERS
+ # =================
+ AC_CHECK_HEADERS(dlfcn.h errno.h fcntl.h libgen.h memory.h netinet/in.h \
+ setjmp.h sys/mman.h sys/param.h sys/poll.h sys/procset.h sys/select.h \
+ sys/socket.h sys/stropts.h sys/time.h sys/un.h sys/wait.h unistd.h \
+ utime.h sysexits.h)
+
+ # --------------------------------------------
+ # Verify certain entries from AC_CHECK_HEADERS
+ # --------------------------------------------
+ [for f in sys_types sys_mman sys_param sys_stat sys_wait \
+ string errno stdlib memory setjmp
+ do eval as_ac_var=\${ac_cv_header_${f}_h+set}
+ test "${as_ac_var}" = set] || \
+ AC_MSG_ERROR([You must have ${f}.h on your system])
+ done
+
+ # ================================================
+ # AC_CHECK_HEADERS: stdarg.h is present define HAVE_STDARG_H, otherwise
+ # if varargs.h is present define HAVE_VARARGS_H.
+ # ================================================
+ AC_CHECK_HEADERS(stdarg.h varargs.h, break)
+ [if test `eval echo '${'$as_ac_Header'}'` != yes; then]
+ AC_MSG_ERROR([You must have stdarg.h or varargs.h on your system])
+ fi
+
+ # ================================================
+ # Similarly for the string.h and strings.h headers
+ # ================================================
+ AC_CHECK_HEADERS(string.h strings.h, break)
+ [if test `eval echo '${'$as_ac_Header'}'` != yes; then]
+ AC_MSG_ERROR([You must have string.h or strings.h on your system])
+ fi
+
+ # =====================
+ # ...and limits headers
+ # =====================
+ AC_CHECK_HEADERS(limits.h sys/limits.h values.h, break)
+ [if test `eval echo '${'$as_ac_Header'}'` != yes; then]
+ AC_MSG_ERROR([You must have one of limits.h, sys/limits.h or values.h])
+ fi
+
+ # ========================
+ # ...and int types headers
+ # ========================
+ AC_CHECK_HEADERS(stdint.h inttypes.h, break)
+ AC_CHECK_TYPES([int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t,
+ intptr_t, uint_t])
+
+ # ====================
+ # uintptr type & sizes
+ # ====================
+ AC_CHECK_TYPES([uintptr_t], ,
+ [AC_DEFINE([uintptr_t], unsigned long,
+ [Alternate uintptr_t for systems without it.])])
+ AC_CHECK_SIZEOF(char*, 4)
+ AC_CHECK_SIZEOF(int, 4)
+ AC_CHECK_SIZEOF(long, 4)
+ AC_CHECK_SIZEOF(short, 2)
+
+ # ----------------------------------------------------------------------
+ # AC_CHECK_LIB for SVR4 libgen, and use it if it defines pathfind.
+ # ----------------------------------------------------------------------
+ AC_CHECK_LIB(gen, pathfind)
+ AC_FUNC_VPRINTF
+ AC_CHECK_FUNCS([mmap canonicalize_file_name snprintf strdup strchr strrchr])
+[ INVOKE_LIBOPTS_MACROS_FIRST_done=yes
+fi]])
+
+dnl
+dnl @synopsis INVOKE_LIBOPTS_MACROS
+dnl
+dnl This macro will invoke the AutoConf macros specified in libopts.def
+dnl that have not been disabled with "omit-invocation".
+dnl
+AC_DEFUN([LIBOPTS_WITH_REGEX_HEADER],[
+ AC_ARG_WITH([regex-header],
+ AC_HELP_STRING([--with-regex-header], [a reg expr header is specified]),
+ [libopts_cv_with_regex_header=${with_regex_header}],
+ AC_CACHE_CHECK([whether a reg expr header is specified], libopts_cv_with_regex_header,
+ libopts_cv_with_regex_header=no)
+ ) # end of AC_ARG_WITH
+
+ if test "X${libopts_cv_with_regex_header}" != Xno
+ then
+ AC_DEFINE_UNQUOTED([REGEX_HEADER],[<${libopts_cv_with_regex_header}>])
+ else
+ AC_DEFINE([REGEX_HEADER],[<regex.h>],[name of regex header file])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_WITH_REGEX_HEADER
+
+
+AC_DEFUN([LIBOPTS_WITHLIB_REGEX],[
+ AC_ARG_WITH([libregex],
+ AC_HELP_STRING([--with-libregex], [libregex installation prefix]),
+ [libopts_cv_with_libregex_root=${with_libregex}],
+ AC_CACHE_CHECK([whether with-libregex was specified], libopts_cv_with_libregex_root,
+ libopts_cv_with_libregex_root=no)
+ ) # end of AC_ARG_WITH libregex
+
+ if test "${with_libguile+set}" = set && \
+ test "${withval}" = no
+ then ## disabled by request
+ libopts_cv_with_libregex_root=no
+ libopts_cv_with_libregex_cflags=no
+ libopts_cv_with_libregex_libs=no
+ else
+
+ AC_ARG_WITH([libregex-cflags],
+ AC_HELP_STRING([--with-libregex-cflags], [libregex compile flags]),
+ [libopts_cv_with_libregex_cflags=${with_regex_cflags}],
+ AC_CACHE_CHECK([whether with-libregex-cflags was specified], libopts_cv_with_libregex_cflags,
+ libopts_cv_with_libregex_cflags=no)
+ ) # end of AC_ARG_WITH libregex-cflags
+
+ AC_ARG_WITH([libregex-libs],
+ AC_HELP_STRING([--with-libregex-libs], [libregex link command arguments]),
+ [libopts_cv_with_libregex_libs=${with_regex_libs}],
+ AC_CACHE_CHECK([whether with-libregex-libs was specified], libopts_cv_with_libregex_libs,
+ libopts_cv_with_libregex_libs=no)
+ ) # end of AC_ARG_WITH libregex-libs
+
+ case "X${libopts_cv_with_libregex_cflags}" in
+ Xyes|Xno|X )
+ case "X${libopts_cv_with_libregex_root}" in
+ Xyes|Xno|X ) libopts_cv_with_libregex_cflags=no ;;
+ * ) libopts_cv_with_libregex_cflags=-I${libopts_cv_with_libregex_root}/include ;;
+ esac
+ esac
+ case "X${libopts_cv_with_libregex_libs}" in
+ Xyes|Xno|X )
+ case "X${libopts_cv_with_libregex_root}" in
+ Xyes|Xno|X ) libopts_cv_with_libregex_libs=no ;;
+ * ) libopts_cv_with_libregex_libs="-L${libopts_cv_with_libregex_root}/lib -lregex";;
+ esac
+ esac
+ libopts_save_CPPFLAGS="${CPPFLAGS}"
+ libopts_save_LIBS="${LIBS}"
+ fi ## disabled by request
+
+ case "X${libopts_cv_with_libregex_cflags}" in
+ Xyes|Xno|X )
+ libopts_cv_with_libregex_cflags="" ;;
+ * ) CPPFLAGS="${CPPFLAGS} ${libopts_cv_with_libregex_cflags}" ;;
+ esac
+ case "X${libopts_cv_with_libregex_libs}" in
+ Xyes|Xno|X )
+ libopts_cv_with_libregex_libs="" ;;
+ * )
+ LIBS="${LIBS} ${libopts_cv_with_libregex_libs}" ;;
+ esac
+ LIBREGEX_CFLAGS=""
+ LIBREGEX_LIBS=""
+ AC_MSG_CHECKING([whether libregex functions properly])
+ AC_CACHE_VAL([libopts_cv_with_libregex],[
+ AC_TRY_RUN([@%:@include <stdio.h>
+@%:@include <stdlib.h>
+@%:@include <sys/types.h>
+@%:@include REGEX_HEADER
+static regex_t re;
+void comp_re( char const* pzPat ) {
+ int res = regcomp( &re, pzPat, REG_EXTENDED|REG_ICASE|REG_NEWLINE );
+ if (res == 0) return;
+ exit( res ); }
+int main() {
+ regmatch_t m@<:@2@:>@;
+ comp_re( "^.*\@S|@" );
+ comp_re( "()|no.*" );
+ comp_re( "." );
+ if (regexec( &re, "X", 2, m, 0 ) != 0) return 1;
+ if ((m@<:@0@:>@.rm_so != 0) || (m@<:@0@:>@.rm_eo != 1)) {
+ fputs( "error: regex -->.<-- did not match\n", stderr );
+ return 1;
+ }
+ return 0; }],
+ [libopts_cv_with_libregex=yes], [libopts_cv_with_libregex=no],
+ [libopts_cv_with_libregex=no]) # end of AC_TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_with_libregex
+ AC_MSG_RESULT([${libopts_cv_with_libregex}])
+
+ if test "X${libopts_cv_with_libregex}" != Xno
+ then
+ AC_DEFINE([WITH_LIBREGEX],[1],
+ [Define this if a working libregex can be found])
+ else
+ CPPFLAGS="${libopts_save_CPPFLAGS}"
+ LIBS="${libopts_save_LIBS}"
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_WITHLIB_REGEX
+
+
+AC_DEFUN([LIBOPTS_RUN_PATHFIND],[
+ AC_MSG_CHECKING([whether pathfind(3) works])
+ AC_CACHE_VAL([libopts_cv_run_pathfind],[
+ AC_TRY_RUN([@%:@include <string.h>
+@%:@include <stdlib.h>
+int main (int argc, char** argv) {
+ char* pz = pathfind( getenv( "PATH" ), "sh", "x" );
+ return (pz == 0) ? 1 : 0;
+}],
+ [libopts_cv_run_pathfind=yes],[libopts_cv_run_pathfind=no],[libopts_cv_run_pathfind=no]
+ ) # end of TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_run_pathfind
+ AC_MSG_RESULT([${libopts_cv_run_pathfind}])
+
+ if test "X${libopts_cv_run_pathfind}" != Xno
+ then
+ AC_DEFINE([HAVE_PATHFIND],[1],
+ [Define this if pathfind(3) works])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_RUN_PATHFIND
+
+
+AC_DEFUN([LIBOPTS_TEST_DEV_ZERO],[
+ AC_MSG_CHECKING([whether /dev/zero is readable device])
+ AC_CACHE_VAL([libopts_cv_test_dev_zero],[
+ libopts_cv_test_dev_zero=`exec 2> /dev/null
+dzero=\`ls -lL /dev/zero | egrep ^c......r\`
+test -z "${dzero}" && exit 1
+echo ${dzero}`
+ if test $? -ne 0
+ then libopts_cv_test_dev_zero=no
+ elif test -z "$libopts_cv_test_dev_zero"
+ then libopts_cv_test_dev_zero=no
+ fi
+ ]) # end of CACHE_VAL of libopts_cv_test_dev_zero
+ AC_MSG_RESULT([${libopts_cv_test_dev_zero}])
+
+ if test "X${libopts_cv_test_dev_zero}" != Xno
+ then
+ AC_DEFINE([HAVE_DEV_ZERO],[1],
+ [Define this if /dev/zero is readable device])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_TEST_DEV_ZERO
+
+
+AC_DEFUN([LIBOPTS_RUN_REALPATH],[
+ AC_MSG_CHECKING([whether we have a functional realpath(3C)])
+ AC_CACHE_VAL([libopts_cv_run_realpath],[
+ AC_TRY_RUN([@%:@include <limits.h>
+@%:@include <stdlib.h>
+int main (int argc, char** argv) {
+@%:@ifndef PATH_MAX
+choke me!!
+@%:@else
+ char zPath@<:@PATH_MAX+1@:>@;
+@%:@endif
+ char *pz = realpath(argv@<:@0@:>@, zPath);
+ return (pz == zPath) ? 0 : 1;
+}],
+ [libopts_cv_run_realpath=yes],[libopts_cv_run_realpath=no],[libopts_cv_run_realpath=no]
+ ) # end of TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_run_realpath
+ AC_MSG_RESULT([${libopts_cv_run_realpath}])
+
+ if test "X${libopts_cv_run_realpath}" != Xno
+ then
+ AC_DEFINE([HAVE_REALPATH],[1],
+ [Define this if we have a functional realpath(3C)])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_RUN_REALPATH
+
+
+AC_DEFUN([LIBOPTS_RUN_STRFTIME],[
+ AC_MSG_CHECKING([whether strftime() works])
+ AC_CACHE_VAL([libopts_cv_run_strftime],[
+ AC_TRY_RUN([@%:@include <time.h>
+@%:@include <string.h>
+char t_buf@<:@ 64 @:>@;
+int main() {
+ static char const z@<:@@:>@ = "Thursday Aug 28 240";
+ struct tm tm;
+ tm.tm_sec = 36; /* seconds after the minute @<:@0, 61@:>@ */
+ tm.tm_min = 44; /* minutes after the hour @<:@0, 59@:>@ */
+ tm.tm_hour = 12; /* hour since midnight @<:@0, 23@:>@ */
+ tm.tm_mday = 28; /* day of the month @<:@1, 31@:>@ */
+ tm.tm_mon = 7; /* months since January @<:@0, 11@:>@ */
+ tm.tm_year = 86; /* years since 1900 */
+ tm.tm_wday = 4; /* days since Sunday @<:@0, 6@:>@ */
+ tm.tm_yday = 239; /* days since January 1 @<:@0, 365@:>@ */
+ tm.tm_isdst = 1; /* flag for daylight savings time */
+ strftime( t_buf, sizeof( t_buf ), "%A %b %d %j", &tm );
+ return (strcmp( t_buf, z ) != 0); }],
+ [libopts_cv_run_strftime=yes],[libopts_cv_run_strftime=no],[libopts_cv_run_strftime=no]
+ ) # end of TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_run_strftime
+ AC_MSG_RESULT([${libopts_cv_run_strftime}])
+
+ if test "X${libopts_cv_run_strftime}" != Xno
+ then
+ AC_DEFINE([HAVE_STRFTIME],[1],
+ [Define this if strftime() works])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_RUN_STRFTIME
+
+
+AC_DEFUN([LIBOPTS_RUN_FOPEN_BINARY],[
+ AC_MSG_CHECKING([whether fopen accepts "b" mode])
+ AC_CACHE_VAL([libopts_cv_run_fopen_binary],[
+ AC_TRY_RUN([@%:@include <stdio.h>
+int main (int argc, char** argv) {
+FILE* fp = fopen("conftest.@S|@ac_ext", "rb");
+return (fp == NULL) ? 1 : fclose(fp); }],
+ [libopts_cv_run_fopen_binary=yes],[libopts_cv_run_fopen_binary=no],[libopts_cv_run_fopen_binary=no]
+ ) # end of TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_run_fopen_binary
+ AC_MSG_RESULT([${libopts_cv_run_fopen_binary}])
+
+ if test "X${libopts_cv_run_fopen_binary}" != Xno
+ then
+ AC_DEFINE([FOPEN_BINARY_FLAG],"b",
+ [fopen(3) accepts a 'b' in the mode flag])
+ else
+ AC_DEFINE([FOPEN_BINARY_FLAG],"",
+ [fopen(3) accepts a 'b' in the mode flag])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_RUN_FOPEN_BINARY
+
+
+AC_DEFUN([LIBOPTS_RUN_FOPEN_TEXT],[
+ AC_MSG_CHECKING([whether fopen accepts "t" mode])
+ AC_CACHE_VAL([libopts_cv_run_fopen_text],[
+ AC_TRY_RUN([@%:@include <stdio.h>
+int main (int argc, char** argv) {
+FILE* fp = fopen("conftest.@S|@ac_ext", "rt");
+return (fp == NULL) ? 1 : fclose(fp); }],
+ [libopts_cv_run_fopen_text=yes],[libopts_cv_run_fopen_text=no],[libopts_cv_run_fopen_text=no]
+ ) # end of TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_run_fopen_text
+ AC_MSG_RESULT([${libopts_cv_run_fopen_text}])
+
+ if test "X${libopts_cv_run_fopen_text}" != Xno
+ then
+ AC_DEFINE([FOPEN_TEXT_FLAG],"t",
+ [fopen(3) accepts a 't' in the mode flag])
+ else
+ AC_DEFINE([FOPEN_TEXT_FLAG],"",
+ [fopen(3) accepts a 't' in the mode flag])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_RUN_FOPEN_TEXT
+
+
+AC_DEFUN([LIBOPTS_DISABLE_OPTIONAL_ARGS],[
+ AC_ARG_ENABLE([optional-args],
+ AC_HELP_STRING([--disable-optional-args], [not wanting optional option args]),
+ [libopts_cv_enable_optional_args=${enable_optional_args}],
+ AC_CACHE_CHECK([whether not wanting optional option args], libopts_cv_enable_optional_args,
+ libopts_cv_enable_optional_args=yes)
+ ) # end of AC_ARG_ENABLE
+
+ if test "X${libopts_cv_enable_optional_args}" = Xno
+ then
+ AC_DEFINE([NO_OPTIONAL_OPT_ARGS], [1],
+ [Define this if optional arguments are disallowed])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_DISABLE_OPTIONAL_ARGS
+
+
+AC_DEFUN([INVOKE_LIBOPTS_MACROS],[
+ INVOKE_LIBOPTS_MACROS_FIRST
+ # Check to see if a reg expr header is specified.
+ LIBOPTS_WITH_REGEX_HEADER
+
+ # Check to see if a working libregex can be found.
+ LIBOPTS_WITHLIB_REGEX
+
+ # Check to see if pathfind(3) works.
+ LIBOPTS_RUN_PATHFIND
+
+ # Check to see if /dev/zero is readable device.
+ LIBOPTS_TEST_DEV_ZERO
+
+ # Check to see if we have a functional realpath(3C).
+ LIBOPTS_RUN_REALPATH
+
+ # Check to see if strftime() works.
+ LIBOPTS_RUN_STRFTIME
+
+ # Check to see if fopen accepts "b" mode.
+ LIBOPTS_RUN_FOPEN_BINARY
+
+ # Check to see if fopen accepts "t" mode.
+ LIBOPTS_RUN_FOPEN_TEXT
+
+ # Check to see if not wanting optional option args.
+ LIBOPTS_DISABLE_OPTIONAL_ARGS
+
+]) # end AC_DEFUN of INVOKE_LIBOPTS_MACROS
+
+dnl @synopsis LIBOPTS_CHECK
+dnl
+dnl Time-stamp: "2006-09-23 19:36:24 bkorb"
+dnl Last Committed: $Date: 2006/09/24 02:59:00 $
+dnl
+dnl If autoopts-config works, add the linking information to LIBS.
+dnl Otherwise, add ``libopts-${ao_rev}'' to SUBDIRS and run all
+dnl the config tests that the library needs. Invoke the
+dnl "INVOKE_LIBOPTS_MACROS" macro iff we are building libopts.
+dnl
+dnl Default to system libopts
+dnl
+AC_DEFUN([LIBOPTS_CHECK],[
+ [NEED_LIBOPTS_DIR='']
+ m4_pushdef([AO_Libopts_Dir],
+ [ifelse($1, , [libopts], [$1])])
+ AC_SUBST(LIBOPTS_DIR, AO_Libopts_Dir)
+ AC_ARG_ENABLE([local-libopts],
+ AC_HELP_STRING([--enable-local-libopts],
+ [Force using the supplied libopts tearoff code]),[
+ if test x$enableval = xyes ; then
+ AC_MSG_NOTICE([Using supplied libopts tearoff])
+ LIBOPTS_LDADD='$(top_builddir)/AO_Libopts_Dir/libopts.la'
+ LIBOPTS_CFLAGS='-I$(top_srcdir)/AO_Libopts_Dir'
+ NEED_LIBOPTS_DIR=true
+ fi])
+
+ AC_ARG_ENABLE([libopts-install],
+ AC_HELP_STRING([--disable-libopts-install],
+ [Do not install libopts with client installation]))
+ AM_CONDITIONAL([INSTALL_LIBOPTS],[test "X${enable_libopts_install}" != Xno])
+
+ [if test -z "${NEED_LIBOPTS_DIR}" ; then]
+ AC_MSG_CHECKING([whether autoopts-config can be found])
+ AC_ARG_WITH([autoopts-config],
+ AC_HELP_STRING([--with-autoopts-config],
+ [specify the config-info script]),
+ [lo_cv_with_autoopts_config=${with_autoopts_config}],
+ AC_CACHE_CHECK([whether autoopts-config is specified],
+ [lo_cv_with_autoopts_config],
+ [if autoopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=autoopts-config
+ elif libopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=libopts-config
+ else lo_cv_with_autoopts_config=no ; fi])
+ ) # end of AC_ARG_WITH
+
+ AC_CACHE_VAL([lo_cv_test_autoopts],[
+ if test -z "${lo_cv_with_autoopts_config}" \
+ -o X"${lo_cv_with_autoopts_config}" = Xno
+ then
+ if autoopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=autoopts-config
+ elif libopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=libopts-config
+ else lo_cv_with_autoopts_config=false ; fi
+ fi
+ lo_cv_test_autoopts=`
+ ${lo_cv_with_autoopts_config} --libs` 2> /dev/null
+ if test $? -ne 0 -o -z "${lo_cv_test_autoopts}"
+ then lo_cv_test_autoopts=no ; fi
+ ]) # end of CACHE_VAL
+ AC_MSG_RESULT([${lo_cv_test_autoopts}])
+
+ [if test "X${lo_cv_test_autoopts}" != Xno
+ then
+ LIBOPTS_LDADD="${lo_cv_test_autoopts}"
+ LIBOPTS_CFLAGS="`${lo_cv_with_autoopts_config} --cflags`"
+ else
+ LIBOPTS_LDADD='$(top_builddir)/]AO_Libopts_Dir[/libopts.la'
+ LIBOPTS_CFLAGS='-I$(top_srcdir)/]AO_Libopts_Dir['
+ NEED_LIBOPTS_DIR=true
+ fi
+ fi # end of if test -z "${NEED_LIBOPTS_DIR}"]
+
+ AM_CONDITIONAL([NEED_LIBOPTS], [test -n "${NEED_LIBOPTS_DIR}"])
+ AC_SUBST(LIBOPTS_LDADD)
+ AC_SUBST(LIBOPTS_CFLAGS)
+ AC_SUBST(LIBOPTS_DIR, AO_Libopts_Dir)
+ AC_CONFIG_FILES(AO_Libopts_Dir/Makefile)
+ m4_popdef([AO_Libopts_Dir])
+
+ [if test -n "${NEED_LIBOPTS_DIR}" ; then]
+ INVOKE_LIBOPTS_MACROS
+ else
+ INVOKE_LIBOPTS_MACROS_FIRST
+ [fi
+# end of AC_DEFUN of LIBOPTS_CHECK]
+])
diff --git a/contrib/ntp/libopts/m4/liboptschk.m4 b/contrib/ntp/libopts/m4/liboptschk.m4
new file mode 100644
index 0000000..14e7f27
--- /dev/null
+++ b/contrib/ntp/libopts/m4/liboptschk.m4
@@ -0,0 +1,42 @@
+# liboptschk.m4 serial 1 (autogen - 5.7.3)
+dnl Copyright (C) 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Time-stamp: "2006-09-23 19:42:31 bkorb"
+dnl Last Committed: $Date: 2006/09/24 02:59:00 $
+
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+AC_DEFUN([ag_FIND_LIBOPTS],
+ [if test "X${ac_cv_header_autoopts_options_h}" == Xno
+ then
+ :
+ else
+ f=`autoopts-config cflags` 2>/dev/null
+ test X"${f}" = X && f=`libopts-config cflags` 2>/dev/null
+ if test X"${f}" = X
+ then
+ :
+ else
+ AC_DEFINE([HAVE_LIBOPTS],[1],[define if we can find libopts])
+ CFLAGS="${CFLAGS} ${f}"
+ f=`autoopts-config ldflags` 2>/dev/null
+ test X"${f}" = X && f=`libopts-config ldflags` 2>/dev/null
+ LIBS="${LIBS} ${f}"
+ fi
+ fi])
diff --git a/contrib/ntp/libopts/makeshell.c b/contrib/ntp/libopts/makeshell.c
new file mode 100644
index 0000000..8447d45
--- /dev/null
+++ b/contrib/ntp/libopts/makeshell.c
@@ -0,0 +1,1122 @@
+
+/*
+ * $Id: makeshell.c,v 4.20 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-27 06:05:45 bkorb"
+ *
+ * This module will interpret the options set in the tOptions
+ * structure and create a Bourne shell script capable of parsing them.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+tOptions* pShellParseOptions = NULL;
+
+/* * * * * * * * * * * * * * * * * * * * *
+ *
+ * Setup Format Strings
+ */
+tSCC zStartMarker[] =
+"# # # # # # # # # # -- do not modify this marker --\n#\n"
+"# DO NOT EDIT THIS SECTION";
+
+tSCC zPreamble[] =
+"%s OF %s\n#\n"
+"# From here to the next `-- do not modify this marker --',\n"
+"# the text has been generated %s\n";
+
+tSCC zEndPreamble[] =
+"# From the %s option definitions\n#\n";
+
+tSCC zMultiDef[] = "\n"
+"if test -z \"${%1$s_%2$s}\"\n"
+"then\n"
+" %1$s_%2$s_CT=0\n"
+"else\n"
+" %1$s_%2$s_CT=1\n"
+" %1$s_%2$s_1=\"${%1$s_%2$s}\"\n"
+"fi\n"
+"export %1$s_%2$s_CT";
+
+tSCC zSingleDef[] = "\n"
+"%1$s_%2$s=\"${%1$s_%2$s-'%3$s'}\"\n"
+"%1$s_%2$s_set=false\n"
+"export %1$s_%2$s\n";
+
+tSCC zSingleNoDef[] = "\n"
+"%1$s_%2$s=\"${%1$s_%2$s}\"\n"
+"%1$s_%2$s_set=false\n"
+"export %1$s_%2$s\n";
+
+/* * * * * * * * * * * * * * * * * * * * *
+ *
+ * LOOP START
+ *
+ * The loop may run in either of two modes:
+ * all options are named options (loop only)
+ * regular, marked option processing.
+ */
+tSCC zLoopCase[] = "\n"
+"OPT_PROCESS=true\n"
+"OPT_ARG=\"$1\"\n\n"
+"while ${OPT_PROCESS} && [ $# -gt 0 ]\ndo\n"
+" OPT_ELEMENT=''\n"
+" OPT_ARG_VAL=''\n\n"
+ /*
+ * 'OPT_ARG' may or may not match the current $1
+ */
+" case \"${OPT_ARG}\" in\n"
+" -- )\n"
+" OPT_PROCESS=false\n"
+" shift\n"
+" ;;\n\n";
+
+tSCC zLoopOnly[] = "\n"
+"OPT_ARG=\"$1\"\n\n"
+"while [ $# -gt 0 ]\ndo\n"
+" OPT_ELEMENT=''\n"
+" OPT_ARG_VAL=''\n\n"
+" OPT_ARG=\"${1}\"\n";
+
+/* * * * * * * * * * * * * * * *
+ *
+ * CASE SELECTORS
+ *
+ * If the loop runs as a regular option loop,
+ * then we must have selectors for each acceptable option
+ * type (long option, flag character and non-option)
+ */
+tSCC zLongSelection[] =
+" --* )\n";
+
+tSCC zFlagSelection[] =
+" -* )\n";
+
+tSCC zEndSelection[] =
+" ;;\n\n";
+
+tSCC zNoSelection[] =
+" * )\n"
+" OPT_PROCESS=false\n"
+" ;;\n"
+" esac\n\n";
+
+/* * * * * * * * * * * * * * * *
+ *
+ * LOOP END
+ */
+tSCC zLoopEnd[] =
+" if [ -n \"${OPT_ARG_VAL}\" ]\n"
+" then\n"
+" eval %1$s_${OPT_NAME}${OPT_ELEMENT}=\"'${OPT_ARG_VAL}'\"\n"
+" export %1$s_${OPT_NAME}${OPT_ELEMENT}\n"
+" fi\n"
+"done\n\n"
+"unset OPT_PROCESS || :\n"
+"unset OPT_ELEMENT || :\n"
+"unset OPT_ARG || :\n"
+"unset OPT_ARG_NEEDED || :\n"
+"unset OPT_NAME || :\n"
+"unset OPT_CODE || :\n"
+"unset OPT_ARG_VAL || :\n%2$s";
+
+tSCC zTrailerMarker[] = "\n"
+"# # # # # # # # # #\n#\n"
+"# END OF AUTOMATED OPTION PROCESSING\n"
+"#\n# # # # # # # # # # -- do not modify this marker --\n";
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * OPTION SELECTION
+ */
+tSCC zOptionCase[] =
+" case \"${OPT_CODE}\" in\n";
+
+tSCC zOptionPartName[] =
+" '%s' | \\\n";
+
+tSCC zOptionFullName[] =
+" '%s' )\n";
+
+tSCC zOptionFlag[] =
+" '%c' )\n";
+
+tSCC zOptionEndSelect[] =
+" ;;\n\n";
+
+tSCC zOptionUnknown[] =
+" * )\n"
+" echo Unknown %s: \"${OPT_CODE}\" >&2\n"
+" echo \"$%s_USAGE_TEXT\"\n"
+" exit 1\n"
+" ;;\n"
+" esac\n\n";
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * OPTION PROCESSING
+ *
+ * Formats for emitting the text for handling particular options
+ */
+tSCC zTextExit[] =
+" echo \"$%s_%s_TEXT\"\n"
+" exit 0\n";
+
+tSCC zPagedUsageExit[] =
+" echo \"$%s_LONGUSAGE_TEXT\" | ${PAGER-more}\n"
+" exit 0\n";
+
+tSCC zCmdFmt[] =
+" %s\n";
+
+tSCC zCountTest[] =
+" if [ $%1$s_%2$s_CT -ge %3$d ] ; then\n"
+" echo Error: more than %3$d %2$s options >&2\n"
+" echo \"$%1$s_USAGE_TEXT\"\n"
+" exit 1 ; fi\n";
+
+tSCC zMultiArg[] =
+" %1$s_%2$s_CT=`expr ${%1$s_%2$s_CT} + 1`\n"
+" OPT_ELEMENT=\"_${%1$s_%2$s_CT}\"\n"
+" OPT_NAME='%2$s'\n";
+
+tSCC zSingleArg[] =
+" if [ -n \"${%1$s_%2$s}\" ] && ${%1$s_%2$s_set} ; then\n"
+" echo Error: duplicate %2$s option >&2\n"
+" echo \"$%1$s_USAGE_TEXT\"\n"
+" exit 1 ; fi\n"
+" %1$s_%2$s_set=true\n"
+" OPT_NAME='%2$s'\n";
+
+tSCC zNoMultiArg[] =
+" %1$s_%2$s_CT=0\n"
+" OPT_ELEMENT=''\n"
+" %1$s_%2$s='%3$s'\n"
+" export %1$s_%2$s\n"
+" OPT_NAME='%2$s'\n";
+
+tSCC zNoSingleArg[] =
+" if [ -n \"${%1$s_%2$s}\" ] && ${%1$s_%2$s_set} ; then\n"
+" echo Error: duplicate %2$s option >&2\n"
+" echo \"$%1$s_USAGE_TEXT\"\n"
+" exit 1 ; fi\n"
+" %1$s_%2$s_set=true\n"
+" %1$s_%2$s='%3$s'\n"
+" export %1$s_%2$s\n"
+" OPT_NAME='%2$s'\n";
+
+tSCC zMayArg[] =
+" eval %1$s_%2$s${OPT_ELEMENT}=true\n"
+" export %1$s_%2$s${OPT_ELEMENT}\n"
+" OPT_ARG_NEEDED=OK\n";
+
+tSCC zMustArg[] =
+" OPT_ARG_NEEDED=YES\n";
+
+tSCC zCantArg[] =
+" eval %1$s_%2$s${OPT_ELEMENT}=true\n"
+" export %1$s_%2$s${OPT_ELEMENT}\n"
+" OPT_ARG_NEEDED=NO\n";
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * LONG OPTION PROCESSING
+ *
+ * Formats for emitting the text for handling long option types
+ */
+tSCC zLongOptInit[] =
+" OPT_CODE=`echo \"X${OPT_ARG}\"|sed 's/^X-*//'`\n"
+" shift\n"
+" OPT_ARG=\"$1\"\n\n"
+" case \"${OPT_CODE}\" in *=* )\n"
+" OPT_ARG_VAL=`echo \"${OPT_CODE}\"|sed 's/^[^=]*=//'`\n"
+" OPT_CODE=`echo \"${OPT_CODE}\"|sed 's/=.*$//'` ;; esac\n\n";
+
+tSCC zLongOptArg[] =
+" case \"${OPT_ARG_NEEDED}\" in\n"
+" NO )\n"
+" OPT_ARG_VAL=''\n"
+" ;;\n\n"
+" YES )\n"
+" if [ -z \"${OPT_ARG_VAL}\" ]\n"
+" then\n"
+" if [ $# -eq 0 ]\n"
+" then\n"
+" echo No argument provided for ${OPT_NAME} option >&2\n"
+" echo \"$%s_USAGE_TEXT\"\n"
+" exit 1\n"
+" fi\n\n"
+" OPT_ARG_VAL=\"${OPT_ARG}\"\n"
+" shift\n"
+" OPT_ARG=\"$1\"\n"
+" fi\n"
+" ;;\n\n"
+" OK )\n"
+" if [ -z \"${OPT_ARG_VAL}\" ] && [ $# -gt 0 ]\n"
+" then\n"
+" case \"${OPT_ARG}\" in -* ) ;; * )\n"
+" OPT_ARG_VAL=\"${OPT_ARG}\"\n"
+" shift\n"
+" OPT_ARG=\"$1\" ;; esac\n"
+" fi\n"
+" ;;\n"
+" esac\n";
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * FLAG OPTION PROCESSING
+ *
+ * Formats for emitting the text for handling flag option types
+ */
+tSCC zFlagOptInit[] =
+" OPT_CODE=`echo \"X${OPT_ARG}\" | sed 's/X-\\(.\\).*/\\1/'`\n"
+" OPT_ARG=` echo \"X${OPT_ARG}\" | sed 's/X-.//'`\n\n";
+
+tSCC zFlagOptArg[] =
+" case \"${OPT_ARG_NEEDED}\" in\n"
+" NO )\n"
+" if [ -n \"${OPT_ARG}\" ]\n"
+" then\n"
+" OPT_ARG=-\"${OPT_ARG}\"\n"
+" else\n"
+" shift\n"
+" OPT_ARG=\"$1\"\n"
+" fi\n"
+" ;;\n\n"
+" YES )\n"
+" if [ -n \"${OPT_ARG}\" ]\n"
+" then\n"
+" OPT_ARG_VAL=\"${OPT_ARG}\"\n\n"
+" else\n"
+" if [ $# -eq 0 ]\n"
+" then\n"
+" echo No argument provided for ${OPT_NAME} option >&2\n"
+" echo \"$%s_USAGE_TEXT\"\n"
+" exit 1\n"
+" fi\n"
+" shift\n"
+" OPT_ARG_VAL=\"$1\"\n"
+" fi\n\n"
+" shift\n"
+" OPT_ARG=\"$1\"\n"
+" ;;\n\n"
+" OK )\n"
+" if [ -n \"${OPT_ARG}\" ]\n"
+" then\n"
+" OPT_ARG_VAL=\"${OPT_ARG}\"\n"
+" shift\n"
+" OPT_ARG=\"$1\"\n\n"
+" else\n"
+" shift\n"
+" if [ $# -gt 0 ]\n"
+" then\n"
+" case \"$1\" in -* ) ;; * )\n"
+" OPT_ARG_VAL=\"$1\"\n"
+" shift ;; esac\n"
+" OPT_ARG=\"$1\"\n"
+" fi\n"
+" fi\n"
+" ;;\n"
+" esac\n";
+
+tSCC* pzShell = NULL;
+static char* pzLeader = NULL;
+static char* pzTrailer = NULL;
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+textToVariable( tOptions* pOpts, teTextTo whichVar, tOptDesc* pOD );
+
+static void
+emitUsage( tOptions* pOpts );
+
+static void
+emitSetup( tOptions* pOpts );
+
+static void
+printOptionAction( tOptions* pOpts, tOptDesc* pOptDesc );
+
+static void
+printOptionInaction( tOptions* pOpts, tOptDesc* pOptDesc );
+
+static void
+emitFlag( tOptions* pOpts );
+
+static void
+emitMatchExpr( tCC* pzMatchName, tOptDesc* pCurOpt, tOptions* pOpts );
+
+static void
+emitLong( tOptions* pOpts );
+
+static void
+openOutput( char const* pzFile );
+/* = = = END-STATIC-FORWARD = = = */
+
+/*=export_func optionParseShell
+ * private:
+ *
+ * what: Decipher a boolean value
+ * arg: + tOptions* + pOpts + program options descriptor +
+ *
+ * doc:
+ * Emit a shell script that will parse the command line options.
+=*/
+void
+optionParseShell( tOptions* pOpts )
+{
+ /*
+ * Check for our SHELL option now.
+ * IF the output file contains the "#!" magic marker,
+ * it will override anything we do here.
+ */
+ if (HAVE_OPT( SHELL ))
+ pzShell = OPT_ARG( SHELL );
+
+ else if (! ENABLED_OPT( SHELL ))
+ pzShell = NULL;
+
+ else if ((pzShell = getenv( "SHELL" )),
+ pzShell == NULL)
+
+ pzShell = "/bin/sh";
+
+ /*
+ * Check for a specified output file
+ */
+ if (HAVE_OPT( SCRIPT ))
+ openOutput( OPT_ARG( SCRIPT ));
+
+ emitUsage( pOpts );
+ emitSetup( pOpts );
+
+ /*
+ * There are four modes of option processing.
+ */
+ switch (pOpts->fOptSet & (OPTPROC_LONGOPT|OPTPROC_SHORTOPT)) {
+ case OPTPROC_LONGOPT:
+ fputs( zLoopCase, stdout );
+
+ fputs( zLongSelection, stdout );
+ fputs( zLongOptInit, stdout );
+ emitLong( pOpts );
+ printf( zLongOptArg, pOpts->pzPROGNAME );
+ fputs( zEndSelection, stdout );
+
+ fputs( zNoSelection, stdout );
+ break;
+
+ case 0:
+ fputs( zLoopOnly, stdout );
+ fputs( zLongOptInit, stdout );
+ emitLong( pOpts );
+ printf( zLongOptArg, pOpts->pzPROGNAME );
+ break;
+
+ case OPTPROC_SHORTOPT:
+ fputs( zLoopCase, stdout );
+
+ fputs( zFlagSelection, stdout );
+ fputs( zFlagOptInit, stdout );
+ emitFlag( pOpts );
+ printf( zFlagOptArg, pOpts->pzPROGNAME );
+ fputs( zEndSelection, stdout );
+
+ fputs( zNoSelection, stdout );
+ break;
+
+ case OPTPROC_LONGOPT|OPTPROC_SHORTOPT:
+ fputs( zLoopCase, stdout );
+
+ fputs( zLongSelection, stdout );
+ fputs( zLongOptInit, stdout );
+ emitLong( pOpts );
+ printf( zLongOptArg, pOpts->pzPROGNAME );
+ fputs( zEndSelection, stdout );
+
+ fputs( zFlagSelection, stdout );
+ fputs( zFlagOptInit, stdout );
+ emitFlag( pOpts );
+ printf( zFlagOptArg, pOpts->pzPROGNAME );
+ fputs( zEndSelection, stdout );
+
+ fputs( zNoSelection, stdout );
+ break;
+ }
+
+ printf( zLoopEnd, pOpts->pzPROGNAME, zTrailerMarker );
+ if ((pzTrailer != NULL) && (*pzTrailer != '\0'))
+ fputs( pzTrailer, stdout );
+ else if (ENABLED_OPT( SHELL ))
+ printf( "\nenv | grep '^%s_'\n", pOpts->pzPROGNAME );
+
+ fflush( stdout );
+ fchmod( STDOUT_FILENO, 0755 );
+ fclose( stdout );
+}
+
+
+static void
+textToVariable( tOptions* pOpts, teTextTo whichVar, tOptDesc* pOD )
+{
+# define _TT_(n) tSCC z ## n [] = #n;
+ TEXTTO_TABLE
+# undef _TT_
+# define _TT_(n) z ## n ,
+ static char const* apzTTNames[] = { TEXTTO_TABLE };
+# undef _TT_
+
+#if defined(__windows__) && !defined(__CYGWIN__)
+ printf( "%1$s_%2$s_TEXT='no %2$s text'\n",
+ pOpts->pzPROGNAME, apzTTNames[ whichVar ]);
+#else
+ int nlHoldCt = 0;
+ int pipeFd[2];
+ FILE* fp;
+
+ printf( "%s_%s_TEXT='", pOpts->pzPROGNAME, apzTTNames[ whichVar ]);
+ fflush( stdout );
+
+ if (pipe( pipeFd ) != 0) {
+ fprintf( stderr, zBadPipe, errno, strerror( errno ));
+ exit( EXIT_FAILURE );
+ }
+
+ switch (fork()) {
+ case -1:
+ fprintf( stderr, zForkFail, errno, strerror(errno), pOpts->pzProgName);
+ exit( EXIT_FAILURE );
+ break;
+
+ case 0:
+ dup2( pipeFd[1], STDERR_FILENO );
+ dup2( pipeFd[1], STDOUT_FILENO );
+ close( pipeFd[0] );
+
+ switch (whichVar) {
+ case TT_LONGUSAGE:
+ (*(pOpts->pUsageProc))( pOpts, EXIT_SUCCESS );
+ /* NOTREACHED */
+ exit( EXIT_FAILURE );
+
+ case TT_USAGE:
+ (*(pOpts->pUsageProc))( pOpts, EXIT_FAILURE );
+ /* NOTREACHED */
+ exit( EXIT_FAILURE );
+
+ case TT_VERSION:
+ if (pOD->fOptState & OPTST_ALLOC_ARG) {
+ AGFREE(pOD->optArg.argString);
+ pOD->fOptState &= ~OPTST_ALLOC_ARG;
+ }
+ pOD->optArg.argString = "c";
+ optionPrintVersion( pOpts, pOD );
+ /* NOTREACHED */
+
+ default:
+ exit( EXIT_FAILURE );
+ }
+
+ default:
+ close( pipeFd[1] );
+ fp = fdopen( pipeFd[0], "r" FOPEN_BINARY_FLAG );
+ }
+
+ for (;;) {
+ int ch = fgetc( fp );
+ switch (ch) {
+
+ case '\n':
+ nlHoldCt++;
+ break;
+
+ case '\'':
+ while (nlHoldCt > 0) {
+ fputc( '\n', stdout );
+ nlHoldCt--;
+ }
+ fputs( "'\\''", stdout );
+ break;
+
+ case EOF:
+ goto endCharLoop;
+
+ default:
+ while (nlHoldCt > 0) {
+ fputc( '\n', stdout );
+ nlHoldCt--;
+ }
+ fputc( ch, stdout );
+ break;
+ }
+ } endCharLoop:;
+
+ fputs( "'\n\n", stdout );
+ close( pipeFd[0] );
+#endif
+}
+
+
+static void
+emitUsage( tOptions* pOpts )
+{
+ char zTimeBuf[ AO_NAME_SIZE ];
+
+ /*
+ * First, switch stdout to the output file name.
+ * Then, change the program name to the one defined
+ * by the definitions (rather than the current
+ * executable name). Down case the upper cased name.
+ */
+ if (pzLeader != NULL)
+ fputs( pzLeader, stdout );
+
+ {
+ tSCC zStdout[] = "stdout";
+ tCC* pzOutName;
+
+ {
+ time_t curTime = time( NULL );
+ struct tm* pTime = localtime( &curTime );
+ strftime(zTimeBuf, AO_NAME_SIZE, "%A %B %e, %Y at %r %Z", pTime );
+ }
+
+ if (HAVE_OPT( SCRIPT ))
+ pzOutName = OPT_ARG( SCRIPT );
+ else pzOutName = zStdout;
+
+ if ((pzLeader == NULL) && (pzShell != NULL))
+ printf( "#! %s\n", pzShell );
+
+ printf( zPreamble, zStartMarker, pzOutName, zTimeBuf );
+ }
+
+ /*
+ * Get a copy of the original program name in lower case
+ */
+ {
+ char* pzPN = zTimeBuf;
+ tCC* pz = pOpts->pzPROGNAME;
+ for (;;) {
+ if ((*pzPN++ = tolower( *pz++ )) == '\0')
+ break;
+ }
+ }
+
+ printf( zEndPreamble, pOpts->pzPROGNAME );
+
+ pOpts->pzProgPath = pOpts->pzProgName = zTimeBuf;
+ textToVariable( pOpts, TT_LONGUSAGE, NULL );
+ textToVariable( pOpts, TT_USAGE, NULL );
+
+ {
+ tOptDesc* pOptDesc = pOpts->pOptDesc;
+ int optionCt = pOpts->optCt;
+
+ for (;;) {
+ if (pOptDesc->pOptProc == optionPrintVersion) {
+ textToVariable( pOpts, TT_VERSION, pOptDesc );
+ break;
+ }
+
+ if (--optionCt <= 0)
+ break;
+ pOptDesc++;
+ }
+ }
+}
+
+
+static void
+emitSetup( tOptions* pOpts )
+{
+ tOptDesc* pOptDesc = pOpts->pOptDesc;
+ int optionCt = pOpts->presetOptCt;
+ char const* pzFmt;
+ char const* pzDefault;
+
+ for (;optionCt > 0; pOptDesc++, --optionCt) {
+ char zVal[16];
+
+ /*
+ * Options that are either usage documentation or are compiled out
+ * are not to be processed.
+ */
+ if (SKIP_OPT(pOptDesc) || (pOptDesc->pz_NAME == NULL))
+ continue;
+
+ if (pOptDesc->optMaxCt > 1)
+ pzFmt = zMultiDef;
+ else pzFmt = zSingleDef;
+
+ /*
+ * IF this is an enumeration/bitmask option, then convert the value
+ * to a string before printing the default value.
+ */
+ switch (OPTST_GET_ARGTYPE(pOptDesc->fOptState)) {
+ case OPARG_TYPE_ENUMERATION:
+ (*(pOptDesc->pOptProc))( (tOptions*)2UL, pOptDesc );
+ pzDefault = pOptDesc->optArg.argString;
+ break;
+
+ /*
+ * Numeric and membership bit options are just printed as a number.
+ */
+ case OPARG_TYPE_NUMERIC:
+ snprintf( zVal, sizeof( zVal ), "%d",
+ (int)pOptDesc->optArg.argInt );
+ pzDefault = zVal;
+ break;
+
+ case OPARG_TYPE_MEMBERSHIP:
+ snprintf( zVal, sizeof( zVal ), "%lu",
+ (unsigned long)pOptDesc->optArg.argIntptr );
+ pzDefault = zVal;
+ break;
+
+ case OPARG_TYPE_BOOLEAN:
+ pzDefault = (pOptDesc->optArg.argBool) ? "true" : "false";
+ break;
+
+ default:
+ if (pOptDesc->optArg.argString == NULL) {
+ if (pzFmt == zSingleDef)
+ pzFmt = zSingleNoDef;
+ pzDefault = NULL;
+ }
+ else
+ pzDefault = pOptDesc->optArg.argString;
+ }
+
+ printf( pzFmt, pOpts->pzPROGNAME, pOptDesc->pz_NAME, pzDefault );
+ }
+}
+
+
+static void
+printOptionAction( tOptions* pOpts, tOptDesc* pOptDesc )
+{
+ if (pOptDesc->pOptProc == optionPrintVersion)
+ printf( zTextExit, pOpts->pzPROGNAME, "VERSION" );
+
+ else if (pOptDesc->pOptProc == optionPagedUsage)
+ printf( zPagedUsageExit, pOpts->pzPROGNAME );
+
+ else if (pOptDesc->pOptProc == optionLoadOpt) {
+ printf( zCmdFmt, "echo 'Warning: Cannot load options files' >&2" );
+ printf( zCmdFmt, "OPT_ARG_NEEDED=YES" );
+
+ } else if (pOptDesc->pz_NAME == NULL) {
+
+ if (pOptDesc->pOptProc == NULL) {
+ printf( zCmdFmt, "echo 'Warning: Cannot save options files' "
+ ">&2" );
+ printf( zCmdFmt, "OPT_ARG_NEEDED=OK" );
+ } else
+ printf( zTextExit, pOpts->pzPROGNAME, "LONGUSAGE" );
+
+ } else {
+ if (pOptDesc->optMaxCt == 1)
+ printf( zSingleArg, pOpts->pzPROGNAME, pOptDesc->pz_NAME );
+ else {
+ if ((unsigned)pOptDesc->optMaxCt < NOLIMIT)
+ printf( zCountTest, pOpts->pzPROGNAME,
+ pOptDesc->pz_NAME, pOptDesc->optMaxCt );
+
+ printf( zMultiArg, pOpts->pzPROGNAME, pOptDesc->pz_NAME );
+ }
+
+ /*
+ * Fix up the args.
+ */
+ if (OPTST_GET_ARGTYPE(pOptDesc->fOptState) == OPARG_TYPE_NONE) {
+ printf( zCantArg, pOpts->pzPROGNAME, pOptDesc->pz_NAME );
+
+ } else if (pOptDesc->fOptState & OPTST_ARG_OPTIONAL) {
+ printf( zMayArg, pOpts->pzPROGNAME, pOptDesc->pz_NAME );
+
+ } else {
+ fputs( zMustArg, stdout );
+ }
+ }
+ fputs( zOptionEndSelect, stdout );
+}
+
+
+static void
+printOptionInaction( tOptions* pOpts, tOptDesc* pOptDesc )
+{
+ if (pOptDesc->pOptProc == optionLoadOpt) {
+ printf( zCmdFmt, "echo 'Warning: Cannot suppress the loading of "
+ "options files' >&2" );
+
+ } else if (pOptDesc->optMaxCt == 1)
+ printf( zNoSingleArg, pOpts->pzPROGNAME,
+ pOptDesc->pz_NAME, pOptDesc->pz_DisablePfx );
+ else
+ printf( zNoMultiArg, pOpts->pzPROGNAME,
+ pOptDesc->pz_NAME, pOptDesc->pz_DisablePfx );
+
+ printf( zCmdFmt, "OPT_ARG_NEEDED=NO" );
+ fputs( zOptionEndSelect, stdout );
+}
+
+
+static void
+emitFlag( tOptions* pOpts )
+{
+ tOptDesc* pOptDesc = pOpts->pOptDesc;
+ int optionCt = pOpts->optCt;
+
+ fputs( zOptionCase, stdout );
+
+ for (;optionCt > 0; pOptDesc++, --optionCt) {
+
+ if (SKIP_OPT(pOptDesc))
+ continue;
+
+ if (isprint( pOptDesc->optValue )) {
+ printf( zOptionFlag, pOptDesc->optValue );
+ printOptionAction( pOpts, pOptDesc );
+ }
+ }
+ printf( zOptionUnknown, "flag", pOpts->pzPROGNAME );
+}
+
+
+/*
+ * Emit the match text for a long option
+ */
+static void
+emitMatchExpr( tCC* pzMatchName, tOptDesc* pCurOpt, tOptions* pOpts )
+{
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int oCt = pOpts->optCt;
+ int min = 1;
+ char zName[ 256 ];
+ char* pz = zName;
+
+ for (;;) {
+ int matchCt = 0;
+
+ /*
+ * Omit the current option, Documentation opts and compiled out opts.
+ */
+ if ((pOD == pCurOpt) || SKIP_OPT(pOD)){
+ if (--oCt <= 0)
+ break;
+ pOD++;
+ continue;
+ }
+
+ /*
+ * Check each character of the name case insensitively.
+ * They must not be the same. They cannot be, because it would
+ * not compile correctly if they were.
+ */
+ while ( toupper( pOD->pz_Name[matchCt] )
+ == toupper( pzMatchName[matchCt] ))
+ matchCt++;
+
+ if (matchCt > min)
+ min = matchCt;
+
+ /*
+ * Check the disablement name, too.
+ */
+ if (pOD->pz_DisableName != NULL) {
+ matchCt = 0;
+ while ( toupper( pOD->pz_DisableName[matchCt] )
+ == toupper( pzMatchName[matchCt] ))
+ matchCt++;
+ if (matchCt > min)
+ min = matchCt;
+ }
+ if (--oCt <= 0)
+ break;
+ pOD++;
+ }
+
+ /*
+ * IF the 'min' is all or one short of the name length,
+ * THEN the entire string must be matched.
+ */
+ if ( (pzMatchName[min ] == NUL)
+ || (pzMatchName[min+1] == NUL) )
+ printf( zOptionFullName, pzMatchName );
+
+ else {
+ int matchCt = 0;
+ for (; matchCt <= min; matchCt++)
+ *pz++ = pzMatchName[matchCt];
+
+ for (;;) {
+ *pz = NUL;
+ printf( zOptionPartName, zName );
+ *pz++ = pzMatchName[matchCt++];
+ if (pzMatchName[matchCt] == NUL) {
+ *pz = NUL;
+ printf( zOptionFullName, zName );
+ break;
+ }
+ }
+ }
+}
+
+
+/*
+ * Emit GNU-standard long option handling code
+ */
+static void
+emitLong( tOptions* pOpts )
+{
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int ct = pOpts->optCt;
+
+ fputs( zOptionCase, stdout );
+
+ /*
+ * do each option, ...
+ */
+ do {
+ /*
+ * Documentation & compiled-out options
+ */
+ if (SKIP_OPT(pOD))
+ continue;
+
+ emitMatchExpr( pOD->pz_Name, pOD, pOpts );
+ printOptionAction( pOpts, pOD );
+
+ /*
+ * Now, do the same thing for the disablement version of the option.
+ */
+ if (pOD->pz_DisableName != NULL) {
+ emitMatchExpr( pOD->pz_DisableName, pOD, pOpts );
+ printOptionInaction( pOpts, pOD );
+ }
+ } while (pOD++, --ct > 0);
+
+ printf( zOptionUnknown, "option", pOpts->pzPROGNAME );
+}
+
+
+static void
+openOutput( char const* pzFile )
+{
+ FILE* fp;
+ char* pzData = NULL;
+ struct stat stbf;
+
+ do {
+ char* pzScan;
+ size_t sizeLeft;
+
+ /*
+ * IF we cannot stat the file,
+ * THEN assume we are creating a new file.
+ * Skip the loading of the old data.
+ */
+ if (stat( pzFile, &stbf ) != 0)
+ break;
+
+ /*
+ * The file must be a regular file
+ */
+ if (! S_ISREG( stbf.st_mode )) {
+ fprintf( stderr, zNotFile, pzFile );
+ exit( EXIT_FAILURE );
+ }
+
+ pzData = AGALOC(stbf.st_size + 1, "file data");
+ fp = fopen( pzFile, "r" FOPEN_BINARY_FLAG );
+
+ sizeLeft = (unsigned)stbf.st_size;
+ pzScan = pzData;
+
+ /*
+ * Read in all the data as fast as our OS will let us.
+ */
+ for (;;) {
+ int inct = fread( (void*)pzScan, (size_t)1, sizeLeft, fp);
+ if (inct == 0)
+ break;
+
+ pzScan += inct;
+ sizeLeft -= inct;
+
+ if (sizeLeft == 0)
+ break;
+ }
+
+ /*
+ * NUL-terminate the leader and look for the trailer
+ */
+ *pzScan = '\0';
+ fclose( fp );
+ pzScan = strstr( pzData, zStartMarker );
+ if (pzScan == NULL) {
+ pzTrailer = pzData;
+ break;
+ }
+
+ *(pzScan++) = NUL;
+ pzScan = strstr( pzScan, zTrailerMarker );
+ if (pzScan == NULL) {
+ pzTrailer = pzData;
+ break;
+ }
+
+ /*
+ * Check to see if the data contains
+ * our marker. If it does, then we will skip over it
+ */
+ pzTrailer = pzScan + sizeof( zTrailerMarker ) - 1;
+ pzLeader = pzData;
+ } while (AG_FALSE);
+
+ freopen( pzFile, "w" FOPEN_BINARY_FLAG, stdout );
+}
+
+
+/*=export_func genshelloptUsage
+ * private:
+ * what: The usage function for the genshellopt generated program
+ *
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + int + exitCode + usage text type to produce +
+ *
+ * doc:
+ * This function is used to create the usage strings for the option
+ * processing shell script code. Two child processes are spawned
+ * each emitting the usage text in either the short (error exit)
+ * style or the long style. The generated program will capture this
+ * and create shell script variables containing the two types of text.
+=*/
+void
+genshelloptUsage( tOptions* pOpts, int exitCode )
+{
+#if defined(__windows__) && !defined(__CYGWIN__)
+ optionUsage( pOpts, exitCode );
+#else
+ /*
+ * IF not EXIT_SUCCESS,
+ * THEN emit the short form of usage.
+ */
+ if (exitCode != EXIT_SUCCESS)
+ optionUsage( pOpts, exitCode );
+ fflush( stderr );
+ fflush( stdout );
+
+ option_usage_fp = stdout;
+
+ /*
+ * First, print our usage
+ */
+ switch (fork()) {
+ case -1:
+ optionUsage( pOpts, EXIT_FAILURE );
+ /*NOTREACHED*/
+ _exit( EXIT_FAILURE );
+
+ case 0:
+ pagerState = PAGER_STATE_CHILD;
+ optionUsage( pOpts, EXIT_SUCCESS );
+ /*NOTREACHED*/
+ _exit( EXIT_FAILURE );
+
+ default:
+ {
+ int sts;
+ wait( &sts );
+ }
+ }
+
+ /*
+ * Generate the pzProgName, since optionProcess() normally
+ * gets it from the command line
+ */
+ {
+ char* pz;
+ AGDUPSTR( pz, pShellParseOptions->pzPROGNAME, "program name" );
+ pShellParseOptions->pzProgName = pz;
+ while (*pz != NUL) {
+ *pz = tolower( *pz );
+ pz++;
+ }
+ }
+
+ /*
+ * Separate the makeshell usage from the client usage
+ */
+ fprintf( option_usage_fp, zGenshell, pShellParseOptions->pzProgName );
+ fflush( option_usage_fp );
+
+ /*
+ * Now, print the client usage.
+ */
+ switch (fork()) {
+ case 0:
+ pagerState = PAGER_STATE_CHILD;
+ /*FALLTHROUGH*/
+ case -1:
+ optionUsage( pShellParseOptions, EXIT_FAILURE );
+
+ default:
+ {
+ int sts;
+ wait( &sts );
+ }
+ }
+
+ exit( EXIT_SUCCESS );
+#endif
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/makeshell.c */
diff --git a/contrib/ntp/libopts/nested.c b/contrib/ntp/libopts/nested.c
new file mode 100644
index 0000000..b39f8d1
--- /dev/null
+++ b/contrib/ntp/libopts/nested.c
@@ -0,0 +1,733 @@
+
+/*
+ * $Id: nested.c,v 4.14 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-26 11:04:35 bkorb"
+ *
+ * Automated Options Nested Values module.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+removeBackslashes( char* pzSrc );
+
+static char const*
+scanQuotedString( char const* pzTxt );
+
+static tOptionValue*
+addStringValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen );
+
+static tOptionValue*
+addBoolValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen );
+
+static tOptionValue*
+addNumberValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen );
+
+static tOptionValue*
+addNestedValue( void** pp, char const* pzName, size_t nameLen,
+ char* pzValue, size_t dataLen );
+
+static char const*
+scanNameEntry(char const* pzName, tOptionValue* pRes);
+
+static char const*
+scanXmlEntry( char const* pzName, tOptionValue* pRes );
+
+static void
+unloadNestedArglist( tArgList* pAL );
+
+static void
+sortNestedList( tArgList* pAL );
+/* = = = END-STATIC-FORWARD = = = */
+
+/* removeBackslashes
+ *
+ * This function assumes that all newline characters were preceeded by
+ * backslashes that need removal.
+ */
+static void
+removeBackslashes( char* pzSrc )
+{
+ char* pzD = strchr(pzSrc, '\n');
+
+ if (pzD == NULL)
+ return;
+ *--pzD = '\n';
+
+ for (;;) {
+ char ch = ((*pzD++) = *(pzSrc++));
+ switch (ch) {
+ case '\n': *--pzD = ch; break;
+ case NUL: return;
+ default:
+ ;
+ }
+ }
+}
+
+
+/* scanQuotedString
+ *
+ * Find the end of a quoted string, skipping escaped quote characters.
+ */
+static char const*
+scanQuotedString( char const* pzTxt )
+{
+ char q = *(pzTxt++); /* remember the type of quote */
+
+ for (;;) {
+ char ch = *(pzTxt++);
+ if (ch == NUL)
+ return pzTxt-1;
+
+ if (ch == q)
+ return pzTxt;
+
+ if (ch == '\\') {
+ ch = *(pzTxt++);
+ /*
+ * IF the next character is NUL, drop the backslash, too.
+ */
+ if (ch == NUL)
+ return pzTxt - 2;
+
+ /*
+ * IF the quote character or the escape character were escaped,
+ * then skip both, as long as the string does not end.
+ */
+ if ((ch == q) || (ch == '\\')) {
+ if (*(pzTxt++) == NUL)
+ return pzTxt-1;
+ }
+ }
+ }
+}
+
+
+/* addStringValue
+ *
+ * Associate a name with either a string or no value.
+ */
+static tOptionValue*
+addStringValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen )
+{
+ tOptionValue* pNV;
+ size_t sz = nameLen + dataLen + sizeof(*pNV);
+
+ pNV = AGALOC( sz, "option name/str value pair" );
+ if (pNV == NULL)
+ return NULL;
+
+ if (pzValue == NULL) {
+ pNV->valType = OPARG_TYPE_NONE;
+ pNV->pzName = pNV->v.strVal;
+
+ } else {
+ pNV->valType = OPARG_TYPE_STRING;
+ if (dataLen > 0)
+ memcpy( pNV->v.strVal, pzValue, dataLen );
+ pNV->v.strVal[dataLen] = NUL;
+ pNV->pzName = pNV->v.strVal + dataLen + 1;
+ }
+
+ memcpy( pNV->pzName, pzName, nameLen );
+ pNV->pzName[ nameLen ] = NUL;
+ addArgListEntry( pp, pNV );
+ return pNV;
+}
+
+
+/* addBoolValue
+ *
+ * Associate a name with either a string or no value.
+ */
+static tOptionValue*
+addBoolValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen )
+{
+ tOptionValue* pNV;
+ size_t sz = nameLen + sizeof(*pNV) + 1;
+
+ pNV = AGALOC( sz, "option name/bool value pair" );
+ if (pNV == NULL)
+ return NULL;
+ while (isspace( (int)*pzValue ) && (dataLen > 0)) {
+ dataLen--; pzValue++;
+ }
+ if (dataLen == 0)
+ pNV->v.boolVal = 0;
+ else if (isdigit( (int)*pzValue ))
+ pNV->v.boolVal = atoi( pzValue );
+ else switch (*pzValue) {
+ case 'f':
+ case 'F':
+ case 'n':
+ case 'N':
+ pNV->v.boolVal = 0; break;
+ default:
+ pNV->v.boolVal = 1;
+ }
+
+ pNV->valType = OPARG_TYPE_BOOLEAN;
+ pNV->pzName = (char*)(pNV + 1);
+ memcpy( pNV->pzName, pzName, nameLen );
+ pNV->pzName[ nameLen ] = NUL;
+ addArgListEntry( pp, pNV );
+ return pNV;
+}
+
+
+/* addNumberValue
+ *
+ * Associate a name with either a string or no value.
+ */
+static tOptionValue*
+addNumberValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen )
+{
+ tOptionValue* pNV;
+ size_t sz = nameLen + sizeof(*pNV) + 1;
+
+ pNV = AGALOC( sz, "option name/bool value pair" );
+ if (pNV == NULL)
+ return NULL;
+ while (isspace( (int)*pzValue ) && (dataLen > 0)) {
+ dataLen--; pzValue++;
+ }
+ if (dataLen == 0)
+ pNV->v.boolVal = 0;
+ else
+ pNV->v.boolVal = atoi( pzValue );
+
+ pNV->valType = OPARG_TYPE_NUMERIC;
+ pNV->pzName = (char*)(pNV + 1);
+ memcpy( pNV->pzName, pzName, nameLen );
+ pNV->pzName[ nameLen ] = NUL;
+ addArgListEntry( pp, pNV );
+ return pNV;
+}
+
+
+/* addNestedValue
+ *
+ * Associate a name with either a string or no value.
+ */
+static tOptionValue*
+addNestedValue( void** pp, char const* pzName, size_t nameLen,
+ char* pzValue, size_t dataLen )
+{
+ tOptionValue* pNV;
+
+ if (dataLen == 0) {
+ size_t sz = nameLen + sizeof(*pNV) + 1;
+ pNV = AGALOC( sz, "empty nested value pair" );
+ if (pNV == NULL)
+ return NULL;
+ pNV->v.nestVal = NULL;
+ pNV->valType = OPARG_TYPE_HIERARCHY;
+ pNV->pzName = (char*)(pNV + 1);
+ memcpy( pNV->pzName, pzName, nameLen );
+ pNV->pzName[ nameLen ] = NUL;
+
+ } else {
+ pNV = optionLoadNested( pzValue, pzName, nameLen );
+ }
+
+ if (pNV != NULL)
+ addArgListEntry( pp, pNV );
+
+ return pNV;
+}
+
+
+/* scanNameEntry
+ *
+ * We have an entry that starts with a name. Find the end of it, cook it
+ * (if called for) and create the name/value association.
+ */
+static char const*
+scanNameEntry(char const* pzName, tOptionValue* pRes)
+{
+ tOptionValue* pNV;
+ char const * pzScan = pzName+1;
+ char const * pzVal;
+ size_t nameLen = 1;
+ size_t dataLen = 0;
+
+ while (ISNAMECHAR( (int)*pzScan )) { pzScan++; nameLen++; }
+
+ while (isspace( (int)*pzScan )) {
+ char ch = *(pzScan++);
+ if ((ch == '\n') || (ch == ',')) {
+ addStringValue(&(pRes->v.nestVal), pzName, nameLen, NULL,(size_t)0);
+ return pzScan - 1;
+ }
+ }
+
+ switch (*pzScan) {
+ case '=':
+ case ':':
+ while (isspace( (int)*++pzScan )) ;
+ switch (*pzScan) {
+ case ',': goto comma_char;
+ case '"':
+ case '\'': goto quote_char;
+ case NUL: goto nul_byte;
+ default: goto default_char;
+ }
+
+ case ',':
+ comma_char:
+ pzScan++;
+ /* FALLTHROUGH */
+
+ case NUL:
+ nul_byte:
+ addStringValue(&(pRes->v.nestVal), pzName, nameLen, NULL, (size_t)0);
+ break;
+
+ case '"':
+ case '\'':
+ quote_char:
+ pzVal = pzScan;
+ pzScan = scanQuotedString( pzScan );
+ dataLen = pzScan - pzVal;
+ pNV = addStringValue( &(pRes->v.nestVal), pzName, nameLen, pzVal,
+ dataLen );
+ if ((pNV != NULL) && (option_load_mode == OPTION_LOAD_COOKED))
+ ao_string_cook( pNV->v.strVal, NULL );
+ break;
+
+ default:
+ default_char:
+ /*
+ * We have found some strange text value. It ends with a newline
+ * or a comma.
+ */
+ pzVal = pzScan;
+ for (;;) {
+ char ch = *(pzScan++);
+ switch (ch) {
+ case NUL:
+ pzScan--;
+ dataLen = pzScan - pzVal;
+ goto string_done;
+ /* FALLTHROUGH */
+
+ case '\n':
+ if ( (pzScan > pzVal + 2)
+ && (pzScan[-2] == '\\')
+ && (pzScan[ 0] != NUL))
+ continue;
+ /* FALLTHROUGH */
+
+ case ',':
+ dataLen = (pzScan - pzVal) - 1;
+ string_done:
+ pNV = addStringValue( &(pRes->v.nestVal), pzName, nameLen,
+ pzVal, dataLen );
+ if (pNV != NULL)
+ removeBackslashes( pNV->v.strVal );
+ goto leave_scan_name;
+ }
+ }
+ break;
+ } leave_scan_name:;
+
+ return pzScan;
+}
+
+
+/* scanXmlEntry
+ *
+ * We've found a '<' character. We ignore this if it is a comment or a
+ * directive. If it is something else, then whatever it is we are looking
+ * at is bogus. Returning NULL stops processing.
+ */
+static char const*
+scanXmlEntry( char const* pzName, tOptionValue* pRes )
+{
+ size_t nameLen = 1, valLen = 0;
+ char const* pzScan = ++pzName;
+ char const* pzVal;
+ tOptionValue valu;
+ tOptionValue* pNewVal;
+ tOptionLoadMode save_mode = option_load_mode;
+
+ if (! isalpha((int)*pzName)) {
+ switch (*pzName) {
+ default:
+ pzName = NULL;
+ break;
+
+ case '!':
+ pzName = strstr( pzName, "-->" );
+ if (pzName != NULL)
+ pzName += 3;
+ break;
+
+ case '?':
+ pzName = strchr( pzName, '>' );
+ if (pzName != NULL)
+ pzName++;
+ break;
+ }
+ return pzName;
+ }
+
+ while (isalpha( (int)*++pzScan )) nameLen++;
+ if (nameLen > 64)
+ return NULL;
+ valu.valType = OPARG_TYPE_STRING;
+
+ switch (*pzScan) {
+ case ' ':
+ case '\t':
+ pzScan = parseAttributes(
+ NULL, (char*)pzScan, &option_load_mode, &valu );
+ if (*pzScan == '>') {
+ pzScan++;
+ break;
+ }
+
+ if (*pzScan != '/') {
+ option_load_mode = save_mode;
+ return NULL;
+ }
+ /* FALLTHROUGH */
+
+ case '/':
+ if (*++pzScan != '>') {
+ option_load_mode = save_mode;
+ return NULL;
+ }
+ addStringValue(&(pRes->v.nestVal), pzName, nameLen, NULL, (size_t)0);
+ option_load_mode = save_mode;
+ return pzScan+2;
+
+ default:
+ option_load_mode = save_mode;
+ return NULL;
+
+ case '>':
+ pzScan++;
+ break;
+ }
+
+ pzVal = pzScan;
+
+ {
+ char z[68];
+ char* pzD = z;
+ int ct = nameLen;
+ char const* pzS = pzName;
+
+ *(pzD++) = '<';
+ *(pzD++) = '/';
+
+ do {
+ *(pzD++) = *(pzS++);
+ } while (--ct > 0);
+ *(pzD++) = '>';
+ *pzD = NUL;
+
+ pzScan = strstr( pzScan, z );
+ if (pzScan == NULL) {
+ option_load_mode = save_mode;
+ return NULL;
+ }
+ valLen = (pzScan - pzVal);
+ pzScan += nameLen + 3;
+ while (isspace( (int)*pzScan )) pzScan++;
+ }
+
+ switch (valu.valType) {
+ case OPARG_TYPE_NONE:
+ addStringValue( &(pRes->v.nestVal), pzName, nameLen, NULL, (size_t)0);
+ break;
+
+ case OPARG_TYPE_STRING:
+ pNewVal = addStringValue(
+ &(pRes->v.nestVal), pzName, nameLen, pzVal, valLen);
+
+ if (option_load_mode == OPTION_LOAD_KEEP)
+ break;
+ mungeString( pNewVal->v.strVal, option_load_mode );
+ break;
+
+ case OPARG_TYPE_BOOLEAN:
+ addBoolValue( &(pRes->v.nestVal), pzName, nameLen, pzVal, valLen );
+ break;
+
+ case OPARG_TYPE_NUMERIC:
+ addNumberValue( &(pRes->v.nestVal), pzName, nameLen, pzVal, valLen );
+ break;
+
+ case OPARG_TYPE_HIERARCHY:
+ {
+ char* pz = AGALOC( valLen+1, "hierarchical scan" );
+ if (pz == NULL)
+ break;
+ memcpy( pz, pzVal, valLen );
+ pz[valLen] = NUL;
+ addNestedValue( &(pRes->v.nestVal), pzName, nameLen, pz, valLen );
+ AGFREE(pz);
+ break;
+ }
+
+ case OPARG_TYPE_ENUMERATION:
+ case OPARG_TYPE_MEMBERSHIP:
+ default:
+ break;
+ }
+
+ option_load_mode = save_mode;
+ return pzScan;
+}
+
+
+/* unloadNestedArglist
+ *
+ * Deallocate a list of option arguments. This must have been gotten from
+ * a hierarchical option argument, not a stacked list of strings. It is
+ * an internal call, so it is not validated. The caller is responsible for
+ * knowing what they are doing.
+ */
+static void
+unloadNestedArglist( tArgList* pAL )
+{
+ int ct = pAL->useCt;
+ tCC** ppNV = pAL->apzArgs;
+
+ while (ct-- > 0) {
+ tOptionValue* pNV = (tOptionValue*)(void*)*(ppNV++);
+ if (pNV->valType == OPARG_TYPE_HIERARCHY)
+ unloadNestedArglist( pNV->v.nestVal );
+ AGFREE( pNV );
+ }
+
+ AGFREE( (void*)pAL );
+}
+
+
+/*=export_func optionUnloadNested
+ *
+ * what: Deallocate the memory for a nested value
+ * arg: + tOptionValue const * + pOptVal + the hierarchical value +
+ *
+ * doc:
+ * A nested value needs to be deallocated. The pointer passed in should
+ * have been gotten from a call to @code{configFileLoad()} (See
+ * @pxref{libopts-configFileLoad}).
+=*/
+void
+optionUnloadNested( tOptionValue const * pOV )
+{
+ if (pOV == NULL) return;
+ if (pOV->valType != OPARG_TYPE_HIERARCHY) {
+ errno = EINVAL;
+ return;
+ }
+
+ unloadNestedArglist( pOV->v.nestVal );
+
+ AGFREE( (void*)pOV );
+}
+
+
+/* sortNestedList
+ *
+ * This is a _stable_ sort. The entries are sorted alphabetically,
+ * but within entries of the same name the ordering is unchanged.
+ * Typically, we also hope the input is sorted.
+ */
+static void
+sortNestedList( tArgList* pAL )
+{
+ int ix;
+ int lm = pAL->useCt;
+
+ /*
+ * This loop iterates "useCt" - 1 times.
+ */
+ for (ix = 0; ++ix < lm;) {
+ int iy = ix-1;
+ tOptionValue* pNewNV = (tOptionValue*)(void*)(pAL->apzArgs[ix]);
+ tOptionValue* pOldNV = (tOptionValue*)(void*)(pAL->apzArgs[iy]);
+
+ /*
+ * For as long as the new entry precedes the "old" entry,
+ * move the old pointer. Stop before trying to extract the
+ * "-1" entry.
+ */
+ while (strcmp( pOldNV->pzName, pNewNV->pzName ) > 0) {
+ pAL->apzArgs[iy+1] = (void*)pOldNV;
+ pOldNV = (tOptionValue*)(void*)(pAL->apzArgs[--iy]);
+ if (iy < 0)
+ break;
+ }
+
+ /*
+ * Always store the pointer. Sometimes it is redundant,
+ * but the redundancy is cheaper than a test and branch sequence.
+ */
+ pAL->apzArgs[iy+1] = (void*)pNewNV;
+ }
+}
+
+
+/* optionLoadNested
+ * private:
+ *
+ * what: parse a hierarchical option argument
+ * arg: + char const* + pzTxt + the text to scan +
+ * arg: + char const* + pzName + the name for the text +
+ * arg: + size_t + nameLen + the length of "name" +
+ *
+ * ret_type: tOptionValue*
+ * ret_desc: An allocated, compound value structure
+ *
+ * doc:
+ * A block of text represents a series of values. It may be an
+ * entire configuration file, or it may be an argument to an
+ * option that takes a hierarchical value.
+ */
+LOCAL tOptionValue*
+optionLoadNested(char const* pzTxt, char const* pzName, size_t nameLen)
+{
+ tOptionValue* pRes;
+ tArgList* pAL;
+
+ /*
+ * Make sure we have some data and we have space to put what we find.
+ */
+ if (pzTxt == NULL) {
+ errno = EINVAL;
+ return NULL;
+ }
+ while (isspace( (int)*pzTxt )) pzTxt++;
+ if (*pzTxt == NUL) {
+ errno = ENOENT;
+ return NULL;
+ }
+ pRes = AGALOC( sizeof(*pRes) + nameLen + 1, "nested args" );
+ if (pRes == NULL) {
+ errno = ENOMEM;
+ return NULL;
+ }
+ pRes->valType = OPARG_TYPE_HIERARCHY;
+ pRes->pzName = (char*)(pRes + 1);
+ memcpy( pRes->pzName, pzName, nameLen );
+ pRes->pzName[ nameLen ] = NUL;
+
+ pAL = AGALOC( sizeof(*pAL), "nested arg list" );
+ if (pAL == NULL) {
+ AGFREE( pRes );
+ return NULL;
+ }
+ pRes->v.nestVal = pAL;
+ pAL->useCt = 0;
+ pAL->allocCt = MIN_ARG_ALLOC_CT;
+
+ /*
+ * Scan until we hit a NUL.
+ */
+ do {
+ while (isspace( (int)*pzTxt )) pzTxt++;
+ if (isalpha( (int)*pzTxt )) {
+ pzTxt = scanNameEntry( pzTxt, pRes );
+ }
+ else switch (*pzTxt) {
+ case NUL: goto scan_done;
+ case '<': pzTxt = scanXmlEntry( pzTxt, pRes );
+ if (*pzTxt == ',') pzTxt++; break;
+ case '#': pzTxt = strchr( pzTxt, '\n' ); break;
+ default: goto woops;
+ }
+ } while (pzTxt != NULL); scan_done:;
+
+ pAL = pRes->v.nestVal;
+ if (pAL->useCt != 0) {
+ sortNestedList( pAL );
+ return pRes;
+ }
+
+ woops:
+ AGFREE( pRes->v.nestVal );
+ AGFREE( pRes );
+ return NULL;
+}
+
+
+/*=export_func optionNestedVal
+ * private:
+ *
+ * what: parse a hierarchical option argument
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Nested value was found on the command line
+=*/
+void
+optionNestedVal( tOptions* pOpts, tOptDesc* pOD )
+{
+ tOptionValue* pOV = optionLoadNested(
+ pOD->optArg.argString, pOD->pz_Name, strlen(pOD->pz_Name));
+
+ if (pOV != NULL)
+ addArgListEntry( &(pOD->optCookie), (void*)pOV );
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/nested.c */
diff --git a/contrib/ntp/libopts/numeric.c b/contrib/ntp/libopts/numeric.c
new file mode 100644
index 0000000..05ee9b5
--- /dev/null
+++ b/contrib/ntp/libopts/numeric.c
@@ -0,0 +1,93 @@
+
+/*
+ * $Id: numeric.c,v 4.11 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 10:28:20 bkorb"
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/*=export_func optionNumericVal
+ * private:
+ *
+ * what: Decipher a boolean value
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Decipher a numeric value.
+=*/
+void
+optionNumericVal( tOptions* pOpts, tOptDesc* pOD )
+{
+ char* pz;
+ long val;
+
+ /*
+ * Numeric options may have a range associated with it.
+ * If it does, the usage procedure requests that it be
+ * emitted by passing a NULL pOD pointer.
+ */
+ if ((pOD == NULL) || (pOD->optArg.argString == NULL))
+ return;
+
+ val = strtol( pOD->optArg.argString, &pz, 0 );
+ if (*pz != NUL) {
+ fprintf( stderr, zNotNumber, pOpts->pzProgName, pOD->optArg.argString );
+ (*(pOpts->pUsageProc))(pOpts, EXIT_FAILURE);
+ }
+
+ if (pOD->fOptState & OPTST_ALLOC_ARG) {
+ AGFREE(pOD->optArg.argString);
+ pOD->fOptState &= ~OPTST_ALLOC_ARG;
+ }
+
+ pOD->optArg.argInt = val;
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/numeric.c */
diff --git a/contrib/ntp/libopts/pgusage.c b/contrib/ntp/libopts/pgusage.c
new file mode 100644
index 0000000..c417c63
--- /dev/null
+++ b/contrib/ntp/libopts/pgusage.c
@@ -0,0 +1,157 @@
+
+/*
+ * $Id: pgusage.c,v 4.12 2007/04/28 22:19:23 bkorb Exp $
+ * Time-stamp: "2006-07-16 08:13:26 bkorb"
+ *
+ * Automated Options Paged Usage module.
+ *
+ * This routine will run run-on options through a pager so the
+ * user may examine, print or edit them at their leisure.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+tePagerState pagerState = PAGER_STATE_INITIAL;
+
+/*=export_func optionPagedUsage
+ * private:
+ *
+ * what: Decipher a boolean value
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Run the usage output through a pager.
+ * This is very handy if it is very long.
+=*/
+void
+optionPagedUsage( tOptions* pOptions, tOptDesc* pOD )
+{
+#if defined(__windows__) && !defined(__CYGWIN__)
+ (*pOptions->pUsageProc)( pOptions, EXIT_SUCCESS );
+#else
+ static pid_t my_pid;
+ char zPageUsage[ 1024 ];
+
+ /*
+ * IF we are being called after the usage proc is done
+ * (and thus has called "exit(2)")
+ * THEN invoke the pager to page through the usage file we created.
+ */
+ switch (pagerState) {
+ case PAGER_STATE_INITIAL:
+ {
+ my_pid = getpid();
+#ifdef HAVE_SNPRINTF
+ snprintf(zPageUsage, sizeof(zPageUsage), "/tmp/use.%lu", (tAoUL)my_pid);
+#else
+ sprintf( zPageUsage, "/tmp/use.%lu", (tAoUL)my_pid );
+#endif
+ unlink( zPageUsage );
+
+ /*
+ * Set usage output to this temporary file
+ */
+ option_usage_fp = fopen( zPageUsage, "w" FOPEN_BINARY_FLAG );
+ if (option_usage_fp == NULL)
+ _exit( EXIT_FAILURE );
+
+ pagerState = PAGER_STATE_READY;
+
+ /*
+ * Set up so this routine gets called during the exit logic
+ */
+ atexit( (void(*)(void))optionPagedUsage );
+
+ /*
+ * The usage procedure will now put the usage information into
+ * the temporary file we created above.
+ */
+ (*pOptions->pUsageProc)( pOptions, EXIT_SUCCESS );
+
+ /*NOTREACHED*/
+ _exit( EXIT_FAILURE );
+ }
+
+ case PAGER_STATE_READY:
+ {
+ tSCC zPage[] = "%1$s /tmp/use.%2$lu ; rm -f /tmp/use.%2$lu";
+ tCC* pzPager = (tCC*)getenv( "PAGER" );
+
+ /*
+ * Use the "more(1)" program if "PAGER" has not been defined
+ */
+ if (pzPager == NULL)
+ pzPager = "more";
+
+ /*
+ * Page the file and remove it when done.
+ */
+#ifdef HAVE_SNPRINTF
+ snprintf(zPageUsage, sizeof(zPageUsage), zPage, pzPager, (tAoUL)my_pid);
+#else
+ sprintf( zPageUsage, zPage, pzPager, (tAoUL)my_pid );
+#endif
+ fclose( stderr );
+ dup2( STDOUT_FILENO, STDERR_FILENO );
+
+ (void)system( zPageUsage );
+ }
+
+ case PAGER_STATE_CHILD:
+ /*
+ * This is a child process used in creating shell script usage.
+ */
+ break;
+ }
+#endif
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/pgusage.c */
diff --git a/contrib/ntp/libopts/proto.h b/contrib/ntp/libopts/proto.h
new file mode 100644
index 0000000..e87ab87
--- /dev/null
+++ b/contrib/ntp/libopts/proto.h
@@ -0,0 +1,91 @@
+/* -*- buffer-read-only: t -*- vi: set ro:
+ *
+ * Prototypes for autoopts
+ * Generated Sat May 5 12:02:36 PDT 2007
+ */
+#ifndef AUTOOPTS_PROTO_H_GUARD
+#define AUTOOPTS_PROTO_H_GUARD 1
+#ifndef LOCAL
+# define LOCAL extern
+# define REDEF_LOCAL 1
+#else
+# undef REDEF_LOCAL
+#endif
+/*\n * Extracted from autoopts.c\n */
+LOCAL void *
+ao_malloc( size_t sz );
+
+LOCAL void *
+ao_realloc( void *p, size_t sz );
+
+LOCAL void
+ao_free( void *p );
+
+LOCAL char *
+ao_strdup( char const *str );
+
+LOCAL tSuccess
+handleOption( tOptions* pOpts, tOptState* pOptState );
+
+LOCAL tSuccess
+longOptionFind( tOptions* pOpts, char* pzOptName, tOptState* pOptState );
+
+LOCAL tSuccess
+shortOptionFind( tOptions* pOpts, uint_t optValue, tOptState* pOptState );
+
+LOCAL tSuccess
+doImmediateOpts( tOptions* pOpts );
+
+LOCAL tSuccess
+doRegularOpts( tOptions* pOpts );
+
+/*\n * Extracted from configfile.c\n */
+LOCAL void
+internalFileLoad( tOptions* pOpts );
+
+LOCAL char*
+parseAttributes(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionLoadMode* pMode,
+ tOptionValue* pType );
+
+LOCAL tSuccess
+validateOptionsStruct( tOptions* pOpts, char const* pzProgram );
+
+/*\n * Extracted from environment.c\n */
+LOCAL void
+doPrognameEnv( tOptions* pOpts, teEnvPresetType type );
+
+LOCAL void
+doEnvPresets( tOptions* pOpts, teEnvPresetType type );
+
+/*\n * Extracted from load.c\n */
+LOCAL void
+mungeString( char* pzTxt, tOptionLoadMode mode );
+
+LOCAL void
+loadOptionLine(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzLine,
+ tDirection direction,
+ tOptionLoadMode load_mode );
+
+/*\n * Extracted from nested.c\n */
+LOCAL tOptionValue*
+optionLoadNested(char const* pzTxt, char const* pzName, size_t nameLen);
+
+/*\n * Extracted from sort.c\n */
+LOCAL void
+optionSort( tOptions* pOpts );
+
+/*\n * Extracted from stack.c\n */
+LOCAL void
+addArgListEntry( void** ppAL, void* entry );
+
+#ifdef REDEF_LOCAL
+# undef LOCAL
+# define LOCAL
+#endif
+#endif /* AUTOOPTS_PROTO_H_GUARD */
diff --git a/contrib/ntp/libopts/putshell.c b/contrib/ntp/libopts/putshell.c
new file mode 100644
index 0000000..93d9ef5
--- /dev/null
+++ b/contrib/ntp/libopts/putshell.c
@@ -0,0 +1,335 @@
+
+/*
+ * $Id: putshell.c,v 4.18 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 10:29:39 bkorb"
+ *
+ * This module will interpret the options set in the tOptions
+ * structure and print them to standard out in a fashion that
+ * will allow them to be interpreted by the Bourne or Korn shells.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+putQuotedStr( tCC* pzStr );
+/* = = = END-STATIC-FORWARD = = = */
+
+/*
+ * Make sure embedded single quotes come out okay. The initial quote has
+ * been emitted and the closing quote will be upon return.
+ */
+static void
+putQuotedStr( tCC* pzStr )
+{
+ /*
+ * Handle empty strings to make the rest of the logic simpler.
+ */
+ if ((pzStr == NULL) || (*pzStr == NUL)) {
+ fputs( "''", stdout );
+ return;
+ }
+
+ /*
+ * Emit any single quotes/apostrophes at the start of the string and
+ * bail if that is all we need to do.
+ */
+ while (*pzStr == '\'') {
+ fputs( "\\'", stdout );
+ pzStr++;
+ }
+ if (*pzStr == NUL)
+ return;
+
+ /*
+ * Start the single quote string
+ */
+ fputc( '\'', stdout );
+ for (;;) {
+ tCC* pz = strchr( pzStr, '\'' );
+ if (pz == NULL)
+ break;
+
+ /*
+ * Emit the string up to the single quote (apostrophe) we just found.
+ */
+ (void)fwrite( pzStr, (size_t)(pz - pzStr), (size_t)1, stdout );
+ fputc( '\'', stdout );
+ pzStr = pz;
+
+ /*
+ * Emit an escaped apostrophe for every one we find.
+ * If that ends the string, do not re-open the single quotes.
+ */
+ while (*++pzStr == '\'') fputs( "\\'", stdout );
+ if (*pzStr == NUL)
+ return;
+
+ fputc( '\'', stdout );
+ }
+
+ /*
+ * If we broke out of the loop, we must still emit the remaining text
+ * and then close the single quote string.
+ */
+ fputs( pzStr, stdout );
+ fputc( '\'', stdout );
+}
+
+
+/*=export_func optionPutShell
+ * what: write a portable shell script to parse options
+ * private:
+ * arg: tOptions*, pOpts, the program options descriptor
+ * doc: This routine will emit portable shell script text for parsing
+ * the options described in the option definitions.
+=*/
+void
+optionPutShell( tOptions* pOpts )
+{
+ int optIx = 0;
+ tSCC zOptCtFmt[] = "OPTION_CT=%d\nexport OPTION_CT\n";
+ tSCC zOptNumFmt[] = "%1$s_%2$s=%3$d # 0x%3$X\nexport %1$s_%2$s\n";
+ tSCC zOptDisabl[] = "%1$s_%2$s=%3$s\nexport %1$s_%2$s\n";
+ tSCC zOptValFmt[] = "%s_%s=";
+ tSCC zOptEnd[] = "\nexport %s_%s\n";
+ tSCC zFullOptFmt[]= "%1$s_%2$s='%3$s'\nexport %1$s_%2$s\n";
+ tSCC zEquivMode[] = "%1$s_%2$s_MODE='%3$s'\nexport %1$s_%2$s_MODE\n";
+
+ printf( zOptCtFmt, pOpts->curOptIdx-1 );
+
+ do {
+ tOptDesc* pOD = pOpts->pOptDesc + optIx;
+
+ if (SKIP_OPT(pOD))
+ continue;
+
+ /*
+ * Equivalence classes are hard to deal with. Where the
+ * option data wind up kind of squishes around. For the purposes
+ * of emitting shell state, they are not recommended, but we'll
+ * do something. I guess we'll emit the equivalenced-to option
+ * at the point in time when the base option is found.
+ */
+ if (pOD->optEquivIndex != NO_EQUIVALENT)
+ continue; /* equivalence to a different option */
+
+ /*
+ * Equivalenced to a different option. Process the current option
+ * as the equivalenced-to option. Keep the persistent state bits,
+ * but copy over the set-state bits.
+ */
+ if (pOD->optActualIndex != optIx) {
+ tOptDesc* p = pOpts->pOptDesc + pOD->optActualIndex;
+ p->optArg = pOD->optArg;
+ p->fOptState &= OPTST_PERSISTENT_MASK;
+ p->fOptState |= pOD->fOptState & ~OPTST_PERSISTENT_MASK;
+ printf( zEquivMode, pOpts->pzPROGNAME, pOD->pz_NAME, p->pz_NAME );
+ pOD = p;
+ }
+
+ /*
+ * If the argument type is a set membership bitmask, then we always
+ * emit the thing. We do this because it will always have some sort
+ * of bitmask value and we need to emit the bit values.
+ */
+ if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_MEMBERSHIP) {
+ char const * pz;
+ uintptr_t val = 1;
+ printf( zOptNumFmt, pOpts->pzPROGNAME, pOD->pz_NAME,
+ (int)(uintptr_t)(pOD->optCookie) );
+ pOD->optCookie = (void*)(uintptr_t)~0UL;
+ (*(pOD->pOptProc))( (tOptions*)2UL, pOD );
+
+ /*
+ * We are building the typeset list. The list returned starts with
+ * 'none + ' for use by option saving stuff. We must ignore that.
+ */
+ pz = pOD->optArg.argString + 7;
+ while (*pz != NUL) {
+ printf( "typeset -x -i %s_", pOD->pz_NAME );
+ pz += strspn( pz, " +\t\n\f" );
+ for (;;) {
+ int ch = *(pz++);
+ if (islower( ch )) fputc( toupper( ch ), stdout );
+ else if (isalnum( ch )) fputc( ch, stdout );
+ else if (isspace( ch )
+ || (ch == '+')) goto name_done;
+ else if (ch == NUL) { pz--; goto name_done; }
+ else fputc( '_', stdout );
+ } name_done:;
+ printf( "=%1$lu # 0x%1$lX\n", (unsigned long)val );
+ val <<= 1;
+ }
+
+ AGFREE(pOD->optArg.argString);
+ pOD->optArg.argString = NULL;
+ pOD->fOptState &= ~OPTST_ALLOC_ARG;
+ continue;
+ }
+
+ /*
+ * IF the option was either specified or it wakes up enabled,
+ * then we will emit information. Otherwise, skip it.
+ * The idea is that if someone defines an option to initialize
+ * enabled, we should tell our shell script that it is enabled.
+ */
+ if (UNUSED_OPT( pOD ) && DISABLED_OPT( pOD ))
+ continue;
+
+ /*
+ * Handle stacked arguments
+ */
+ if ( (pOD->fOptState & OPTST_STACKED)
+ && (pOD->optCookie != NULL) ) {
+ tSCC zOptCookieCt[] = "%1$s_%2$s_CT=%3$d\nexport %1$s_%2$s_CT\n";
+
+ tArgList* pAL = (tArgList*)pOD->optCookie;
+ tCC** ppz = pAL->apzArgs;
+ int ct = pAL->useCt;
+
+ printf( zOptCookieCt, pOpts->pzPROGNAME, pOD->pz_NAME, ct );
+
+ while (--ct >= 0) {
+ tSCC numarg_z[] = "%s_%s_%d=";
+ tSCC end_z[] = "\nexport %s_%s_%d\n";
+
+ printf( numarg_z, pOpts->pzPROGNAME, pOD->pz_NAME,
+ pAL->useCt - ct );
+ putQuotedStr( *(ppz++) );
+ printf( end_z, pOpts->pzPROGNAME, pOD->pz_NAME,
+ pAL->useCt - ct );
+ }
+ }
+
+ /*
+ * If the argument has been disabled,
+ * Then set its value to the disablement string
+ */
+ else if ((pOD->fOptState & OPTST_DISABLED) != 0)
+ printf( zOptDisabl, pOpts->pzPROGNAME, pOD->pz_NAME,
+ (pOD->pz_DisablePfx != NULL)
+ ? pOD->pz_DisablePfx : "false" );
+
+ /*
+ * If the argument type is numeric, the last arg pointer
+ * is really the VALUE of the string that was pointed to.
+ */
+ else if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_NUMERIC)
+ printf( zOptNumFmt, pOpts->pzPROGNAME, pOD->pz_NAME,
+ (int)pOD->optArg.argInt );
+
+ /*
+ * If the argument type is an enumeration, then it is much
+ * like a text value, except we call the callback function
+ * to emit the value corresponding to the "optArg" number.
+ */
+ else if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_ENUMERATION) {
+ printf( zOptValFmt, pOpts->pzPROGNAME, pOD->pz_NAME );
+ fputc( '\'', stdout );
+ (*(pOD->pOptProc))( (tOptions*)1UL, pOD );
+ fputc( '\'', stdout );
+ printf( zOptEnd, pOpts->pzPROGNAME, pOD->pz_NAME );
+ }
+
+ /*
+ * If the argument type is numeric, the last arg pointer
+ * is really the VALUE of the string that was pointed to.
+ */
+ else if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_BOOLEAN)
+ printf( zFullOptFmt, pOpts->pzPROGNAME, pOD->pz_NAME,
+ (pOD->optArg.argBool == 0) ? "false" : "true" );
+
+ /*
+ * IF the option has an empty value,
+ * THEN we set the argument to the occurrence count.
+ */
+ else if ( (pOD->optArg.argString == NULL)
+ || (pOD->optArg.argString[0] == NUL) )
+
+ printf( zOptNumFmt, pOpts->pzPROGNAME, pOD->pz_NAME,
+ pOD->optOccCt );
+
+ /*
+ * This option has a text value
+ */
+ else {
+ printf( zOptValFmt, pOpts->pzPROGNAME, pOD->pz_NAME );
+ putQuotedStr( pOD->optArg.argString );
+ printf( zOptEnd, pOpts->pzPROGNAME, pOD->pz_NAME );
+ }
+ } while (++optIx < pOpts->presetOptCt );
+
+ if ( ((pOpts->fOptSet & OPTPROC_REORDER) != 0)
+ && (pOpts->curOptIdx < pOpts->origArgCt)) {
+ fputs( "set --", stdout );
+ for (optIx = pOpts->curOptIdx; optIx < pOpts->origArgCt; optIx++) {
+ char* pzArg = pOpts->origArgVect[ optIx ];
+ if (strchr( pzArg, '\'' ) == NULL)
+ printf( " '%s'", pzArg );
+ else {
+ fputs( " '", stdout );
+ for (;;) {
+ char ch = *(pzArg++);
+ switch (ch) {
+ case '\'': fputs( "'\\''", stdout ); break;
+ case NUL: goto arg_done;
+ default: fputc( ch, stdout ); break;
+ }
+ } arg_done:;
+ fputc( '\'', stdout );
+ }
+ }
+ fputs( "\nOPTION_CT=0\n", stdout );
+ }
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/putshell.c */
diff --git a/contrib/ntp/libopts/restore.c b/contrib/ntp/libopts/restore.c
new file mode 100644
index 0000000..91eac08
--- /dev/null
+++ b/contrib/ntp/libopts/restore.c
@@ -0,0 +1,250 @@
+
+/*
+ * restore.c $Id: restore.c,v 4.10 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 14:13:17 bkorb"
+ *
+ * This module's routines will save the current option state to memory
+ * and restore it. If saved prior to the initial optionProcess call,
+ * then the initial state will be restored.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/*
+ * optionFixupSavedOpts Really, it just wipes out option state for
+ * options that are troublesome to copy. viz., stacked strings and
+ * hierarcicaly valued option args. We do duplicate string args that
+ * have been marked as allocated though.
+ */
+static void
+fixupSavedOptionArgs(tOptions* pOpts)
+{
+ tOptions* p = pOpts->pSavedState;
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int ct = pOpts->optCt;
+
+ /*
+ * Make sure that allocated stuff is only referenced in the
+ * archived copy of the data.
+ */
+ for (; ct-- > 0; pOD++) {
+ switch (OPTST_GET_ARGTYPE(pOD->fOptState)) {
+ case OPARG_TYPE_STRING:
+ if (pOD->fOptState & OPTST_STACKED) {
+ tOptDesc* q = p->pOptDesc + (pOD - pOpts->pOptDesc);
+ q->optCookie = NULL;
+ }
+ if (pOD->fOptState & OPTST_ALLOC_ARG) {
+ tOptDesc* q = p->pOptDesc + (pOD - pOpts->pOptDesc);
+ AGDUPSTR(q->optArg.argString, pOD->optArg.argString, "arg");
+ }
+ break;
+
+ case OPARG_TYPE_HIERARCHY:
+ {
+ tOptDesc* q = p->pOptDesc + (pOD - pOpts->pOptDesc);
+ q->optCookie = NULL;
+ }
+ }
+ }
+}
+
+/*=export_func optionSaveState
+ *
+ * what: saves the option state to memory
+ * arg: tOptions*, pOpts, program options descriptor
+ *
+ * doc:
+ *
+ * This routine will allocate enough memory to save the current option
+ * processing state. If this routine has been called before, that memory
+ * will be reused. You may only save one copy of the option state. This
+ * routine may be called before optionProcess(3AO). If you do call it
+ * before the first call to optionProcess, then you may also change the
+ * contents of argc/argv after you call optionRestore(3AO)
+ *
+ * In fact, more strongly put: it is safest to only use this function
+ * before having processed any options. In particular, the saving and
+ * restoring of stacked string arguments and hierarchical values is
+ * disabled. The values are not saved.
+ *
+ * err: If it fails to allocate the memory,
+ * it will print a message to stderr and exit.
+ * Otherwise, it will always succeed.
+=*/
+void
+optionSaveState(tOptions* pOpts)
+{
+ tOptions* p = (tOptions*)pOpts->pSavedState;
+
+ if (p == NULL) {
+ size_t sz = sizeof( *pOpts ) + (pOpts->optCt * sizeof( tOptDesc ));
+ p = AGALOC( sz, "saved option state" );
+ if (p == NULL) {
+ tCC* pzName = pOpts->pzProgName;
+ if (pzName == NULL) {
+ pzName = pOpts->pzPROGNAME;
+ if (pzName == NULL)
+ pzName = zNil;
+ }
+ fprintf( stderr, zCantSave, pzName, sz );
+ exit( EXIT_FAILURE );
+ }
+
+ pOpts->pSavedState = p;
+ }
+
+ memcpy( p, pOpts, sizeof( *p ));
+ memcpy( p + 1, pOpts->pOptDesc, p->optCt * sizeof( tOptDesc ));
+
+ fixupSavedOptionArgs(pOpts);
+}
+
+
+/*=export_func optionRestore
+ *
+ * what: restore option state from memory copy
+ * arg: tOptions*, pOpts, program options descriptor
+ *
+ * doc: Copy back the option state from saved memory.
+ * The allocated memory is left intact, so this routine can be
+ * called repeatedly without having to call optionSaveState again.
+ * If you are restoring a state that was saved before the first call
+ * to optionProcess(3AO), then you may change the contents of the
+ * argc/argv parameters to optionProcess.
+ *
+ * err: If you have not called @code{optionSaveState} before, a diagnostic is
+ * printed to @code{stderr} and exit is called.
+=*/
+void
+optionRestore( tOptions* pOpts )
+{
+ tOptions* p = (tOptions*)pOpts->pSavedState;
+
+ if (p == NULL) {
+ tCC* pzName = pOpts->pzProgName;
+ if (pzName == NULL) {
+ pzName = pOpts->pzPROGNAME;
+ if (pzName == NULL)
+ pzName = zNil;
+ }
+ fprintf( stderr, zNoState, pzName );
+ exit( EXIT_FAILURE );
+ }
+
+ pOpts->pSavedState = NULL;
+ optionFree(pOpts);
+
+ memcpy( pOpts, p, sizeof( *p ));
+ memcpy( pOpts->pOptDesc, p+1, p->optCt * sizeof( tOptDesc ));
+ pOpts->pSavedState = p;
+
+ fixupSavedOptionArgs(pOpts);
+}
+
+/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
+
+/*=export_func optionFree
+ *
+ * what: free allocated option processing memory
+ * arg: tOptions*, pOpts, program options descriptor
+ *
+ * doc: AutoOpts sometimes allocates memory and puts pointers to it in the
+ * option state structures. This routine deallocates all such memory.
+ *
+ * err: As long as memory has not been corrupted,
+ * this routine is always successful.
+=*/
+void
+optionFree( tOptions* pOpts )
+{
+ free_saved_state:
+ {
+ tOptDesc* p = pOpts->pOptDesc;
+ int ct = pOpts->optCt;
+ do {
+ if (p->fOptState & OPTST_ALLOC_ARG) {
+ AGFREE(p->optArg.argString);
+ p->optArg.argString = NULL;
+ p->fOptState &= ~OPTST_ALLOC_ARG;
+ }
+
+ switch (OPTST_GET_ARGTYPE(p->fOptState)) {
+ case OPARG_TYPE_STRING:
+#ifdef WITH_LIBREGEX
+ if ( (p->fOptState & OPTST_STACKED)
+ && (p->optCookie != NULL)) {
+ p->optArg.argString = ".*";
+ optionUnstackArg(pOpts, p);
+ }
+#else
+ /* leak memory */;
+#endif
+ break;
+
+ case OPARG_TYPE_HIERARCHY:
+ if (p->optCookie != NULL)
+ unloadNestedArglist(p->optCookie);
+ break;
+ }
+
+ p->optCookie = NULL;
+ } while (p++, --ct > 0);
+ }
+ if (pOpts->pSavedState != NULL) {
+ tOptions * p = (tOptions*)pOpts->pSavedState;
+ memcpy( pOpts, p, sizeof( *p ));
+ memcpy( pOpts->pOptDesc, p+1, p->optCt * sizeof( tOptDesc ));
+ AGFREE( pOpts->pSavedState );
+ pOpts->pSavedState = NULL;
+ goto free_saved_state;
+ }
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/restore.c */
diff --git a/contrib/ntp/libopts/save.c b/contrib/ntp/libopts/save.c
new file mode 100644
index 0000000..c889520
--- /dev/null
+++ b/contrib/ntp/libopts/save.c
@@ -0,0 +1,521 @@
+
+/*
+ * save.c $Id: save.c,v 4.18 2007/04/15 19:01:18 bkorb Exp $
+ * Time-stamp: "2007-04-15 11:11:10 bkorb"
+ *
+ * This module's routines will take the currently set options and
+ * store them into an ".rc" file for re-interpretation the next
+ * time the invoking program is run.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+tSCC zWarn[] = "%s WARNING: cannot save options - ";
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static tCC*
+findDirName( tOptions* pOpts, int* p_free );
+
+static tCC*
+findFileName( tOptions* pOpts, int* p_free_name );
+
+static void
+printEntry(
+ FILE * fp,
+ tOptDesc * p,
+ tCC* pzLA );
+/* = = = END-STATIC-FORWARD = = = */
+
+static tCC*
+findDirName( tOptions* pOpts, int* p_free )
+{
+ tCC* pzDir;
+
+ if (pOpts->specOptIdx.save_opts == 0)
+ return NULL;
+
+ pzDir = pOpts->pOptDesc[ pOpts->specOptIdx.save_opts ].optArg.argString;
+ if ((pzDir != NULL) && (*pzDir != NUL))
+ return pzDir;
+
+ /*
+ * This function only works if there is a directory where
+ * we can stash the RC (INI) file.
+ */
+ {
+ tCC* const* papz = pOpts->papzHomeList;
+ if (papz == NULL)
+ return NULL;
+
+ while (papz[1] != NULL) papz++;
+ pzDir = *papz;
+ }
+
+ /*
+ * IF it does not require deciphering an env value, then just copy it
+ */
+ if (*pzDir != '$')
+ return pzDir;
+
+ {
+ tCC* pzEndDir = strchr( ++pzDir, DIRCH );
+ char* pzFileName;
+ char* pzEnv;
+
+ if (pzEndDir != NULL) {
+ char z[ AO_NAME_SIZE ];
+ if ((pzEndDir - pzDir) > AO_NAME_LIMIT )
+ return NULL;
+ strncpy( z, pzDir, (size_t)(pzEndDir - pzDir) );
+ z[ (pzEndDir - pzDir) ] = NUL;
+ pzEnv = getenv( z );
+ } else {
+
+ /*
+ * Make sure we can get the env value (after stripping off
+ * any trailing directory or file names)
+ */
+ pzEnv = getenv( pzDir );
+ }
+
+ if (pzEnv == NULL) {
+ fprintf( stderr, zWarn, pOpts->pzProgName );
+ fprintf( stderr, zNotDef, pzDir );
+ return NULL;
+ }
+
+ if (pzEndDir == NULL)
+ return pzEnv;
+
+ {
+ size_t sz = strlen( pzEnv ) + strlen( pzEndDir ) + 2;
+ pzFileName = (char*)AGALOC( sz, "dir name" );
+ }
+
+ if (pzFileName == NULL)
+ return NULL;
+
+ *p_free = 1;
+ /*
+ * Glue together the full name into the allocated memory.
+ * FIXME: We lose track of this memory.
+ */
+ sprintf( pzFileName, "%s/%s", pzEnv, pzEndDir );
+ return pzFileName;
+ }
+}
+
+
+static tCC*
+findFileName( tOptions* pOpts, int* p_free_name )
+{
+ tCC* pzDir;
+ struct stat stBuf;
+ int free_dir_name = 0;
+
+ pzDir = findDirName( pOpts, &free_dir_name );
+ if (pzDir == NULL)
+ return NULL;
+
+ /*
+ * See if we can find the specified directory. We use a once-only loop
+ * structure so we can bail out early.
+ */
+ if (stat( pzDir, &stBuf ) != 0) do {
+
+ /*
+ * IF we could not, check to see if we got a full
+ * path to a file name that has not been created yet.
+ */
+ if (errno == ENOENT) {
+ char z[AG_PATH_MAX];
+
+ /*
+ * Strip off the last component, stat the remaining string and
+ * that string must name a directory
+ */
+ char* pzDirCh = strrchr( pzDir, DIRCH );
+ if (pzDirCh == NULL) {
+ stBuf.st_mode = S_IFREG;
+ continue; /* bail out of error condition */
+ }
+
+ strncpy( z, pzDir, (size_t)(pzDirCh - pzDir));
+ z[ pzDirCh - pzDir ] = NUL;
+
+ if ( (stat( z, &stBuf ) == 0)
+ && S_ISDIR( stBuf.st_mode )) {
+
+ /*
+ * We found the directory. Restore the file name and
+ * mark the full name as a regular file
+ */
+ stBuf.st_mode = S_IFREG;
+ continue; /* bail out of error condition */
+ }
+ }
+
+ /*
+ * We got a bogus name.
+ */
+ fprintf( stderr, zWarn, pOpts->pzProgName );
+ fprintf( stderr, zNoStat, errno, strerror( errno ), pzDir );
+ if (free_dir_name)
+ AGFREE( (void*)pzDir );
+ return NULL;
+ } while (0);
+
+ /*
+ * IF what we found was a directory,
+ * THEN tack on the config file name
+ */
+ if (S_ISDIR( stBuf.st_mode )) {
+ size_t sz = strlen( pzDir ) + strlen( pOpts->pzRcName ) + 2;
+
+ {
+ char* pzPath = (char*)AGALOC( sz, "file name" );
+#ifdef HAVE_SNPRINTF
+ snprintf( pzPath, sz, "%s/%s", pzDir, pOpts->pzRcName );
+#else
+ sprintf( pzPath, "%s/%s", pzDir, pOpts->pzRcName );
+#endif
+ if (free_dir_name)
+ AGFREE( (void*)pzDir );
+ pzDir = pzPath;
+ free_dir_name = 1;
+ }
+
+ /*
+ * IF we cannot stat the object for any reason other than
+ * it does not exist, then we bail out
+ */
+ if (stat( pzDir, &stBuf ) != 0) {
+ if (errno != ENOENT) {
+ fprintf( stderr, zWarn, pOpts->pzProgName );
+ fprintf( stderr, zNoStat, errno, strerror( errno ),
+ pzDir );
+ AGFREE( (void*)pzDir );
+ return NULL;
+ }
+
+ /*
+ * It does not exist yet, but it will be a regular file
+ */
+ stBuf.st_mode = S_IFREG;
+ }
+ }
+
+ /*
+ * Make sure that whatever we ultimately found, that it either is
+ * or will soon be a file.
+ */
+ if (! S_ISREG( stBuf.st_mode )) {
+ fprintf( stderr, zWarn, pOpts->pzProgName );
+ fprintf( stderr, zNotFile, pzDir );
+ if (free_dir_name)
+ AGFREE( (void*)pzDir );
+ return NULL;
+ }
+
+ /*
+ * Get rid of the old file
+ */
+ unlink( pzDir );
+ *p_free_name = free_dir_name;
+ return pzDir;
+}
+
+
+static void
+printEntry(
+ FILE * fp,
+ tOptDesc * p,
+ tCC* pzLA )
+{
+ /*
+ * There is an argument. Pad the name so values line up.
+ * Not disabled *OR* this got equivalenced to another opt,
+ * then use current option name.
+ * Otherwise, there must be a disablement name.
+ */
+ {
+ char const * pz;
+ if (! DISABLED_OPT(p) || (p->optEquivIndex != NO_EQUIVALENT))
+ pz = p->pz_Name;
+ else
+ pz = p->pz_DisableName;
+
+ fprintf(fp, "%-18s", pz);
+ }
+ /*
+ * IF the option is numeric only,
+ * THEN the char pointer is really the number
+ */
+ if (OPTST_GET_ARGTYPE(p->fOptState) == OPARG_TYPE_NUMERIC)
+ fprintf( fp, " %d\n", (int)(t_word)pzLA );
+
+ /*
+ * OTHERWISE, FOR each line of the value text, ...
+ */
+ else if (pzLA == NULL)
+ fputc( '\n', fp );
+
+ else {
+ fputc( ' ', fp ); fputc( ' ', fp );
+ for (;;) {
+ tCC* pzNl = strchr( pzLA, '\n' );
+
+ /*
+ * IF this is the last line
+ * THEN bail and print it
+ */
+ if (pzNl == NULL)
+ break;
+
+ /*
+ * Print the continuation and the text from the current line
+ */
+ (void)fwrite( pzLA, (size_t)(pzNl - pzLA), (size_t)1, fp );
+ pzLA = pzNl+1; /* advance the Last Arg pointer */
+ fputs( "\\\n", fp );
+ }
+
+ /*
+ * Terminate the entry
+ */
+ fputs( pzLA, fp );
+ fputc( '\n', fp );
+ }
+}
+
+
+/*=export_func optionSaveFile
+ *
+ * what: saves the option state to a file
+ *
+ * arg: tOptions*, pOpts, program options descriptor
+ *
+ * doc:
+ *
+ * This routine will save the state of option processing to a file. The name
+ * of that file can be specified with the argument to the @code{--save-opts}
+ * option, or by appending the @code{rcfile} attribute to the last
+ * @code{homerc} attribute. If no @code{rcfile} attribute was specified, it
+ * will default to @code{.@i{programname}rc}. If you wish to specify another
+ * file, you should invoke the @code{SET_OPT_SAVE_OPTS( @i{filename} )} macro.
+ *
+ * err:
+ *
+ * If no @code{homerc} file was specified, this routine will silently return
+ * and do nothing. If the output file cannot be created or updated, a message
+ * will be printed to @code{stderr} and the routine will return.
+=*/
+void
+optionSaveFile( tOptions* pOpts )
+{
+ tOptDesc* pOD;
+ int ct;
+ FILE* fp;
+
+ {
+ int free_name = 0;
+ tCC* pzFName = findFileName( pOpts, &free_name );
+ if (pzFName == NULL)
+ return;
+
+ fp = fopen( pzFName, "w" FOPEN_BINARY_FLAG );
+ if (fp == NULL) {
+ fprintf( stderr, zWarn, pOpts->pzProgName );
+ fprintf( stderr, zNoCreat, errno, strerror( errno ), pzFName );
+ if (free_name)
+ AGFREE((void*) pzFName );
+ return;
+ }
+
+ if (free_name)
+ AGFREE( (void*)pzFName );
+ }
+
+ {
+ char const* pz = pOpts->pzUsageTitle;
+ fputs( "# ", fp );
+ do { fputc( *pz, fp ); } while (*(pz++) != '\n');
+ }
+
+ {
+ time_t timeVal = time( NULL );
+ char* pzTime = ctime( &timeVal );
+
+ fprintf( fp, zPresetFile, pzTime );
+#ifdef HAVE_ALLOCATED_CTIME
+ /*
+ * The return values for ctime(), localtime(), and gmtime()
+ * normally point to static data that is overwritten by each call.
+ * The test to detect allocated ctime, so we leak the memory.
+ */
+ AGFREE( (void*)pzTime );
+#endif
+ }
+
+ /*
+ * FOR each of the defined options, ...
+ */
+ ct = pOpts->presetOptCt;
+ pOD = pOpts->pOptDesc;
+ do {
+ int arg_state;
+ tOptDesc* p;
+
+ /*
+ * IF the option has not been defined
+ * OR it does not take an initialization value
+ * OR it is equivalenced to another option
+ * THEN continue (ignore it)
+ */
+ if (UNUSED_OPT( pOD ))
+ continue;
+
+ if ((pOD->fOptState & (OPTST_NO_INIT|OPTST_DOCUMENT|OPTST_OMITTED))
+ != 0)
+ continue;
+
+ if ( (pOD->optEquivIndex != NO_EQUIVALENT)
+ && (pOD->optEquivIndex != pOD->optIndex))
+ continue;
+
+ /*
+ * Set a temporary pointer to the real option description
+ * (i.e. account for equivalencing)
+ */
+ p = ((pOD->fOptState & OPTST_EQUIVALENCE) != 0)
+ ? (pOpts->pOptDesc + pOD->optActualIndex) : pOD;
+
+ /*
+ * IF no arguments are allowed
+ * THEN just print the name and continue
+ */
+ if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_NONE) {
+ char const * pznm =
+ (DISABLED_OPT( p )) ? p->pz_DisableName : p->pz_Name;
+ /*
+ * If the option was disabled and the disablement name is NULL,
+ * then the disablement was caused by aliasing.
+ * Use the name as the string to emit.
+ */
+ if (pznm == NULL)
+ pznm = p->pz_Name;
+
+ fprintf(fp, "%s\n", pznm);
+ continue;
+ }
+
+ arg_state = OPTST_GET_ARGTYPE(p->fOptState);
+ switch (arg_state) {
+ case 0:
+ case OPARG_TYPE_NUMERIC:
+ printEntry( fp, p, (void*)(p->optArg.argInt));
+ break;
+
+ case OPARG_TYPE_STRING:
+ if (p->fOptState & OPTST_STACKED) {
+ tArgList* pAL = (tArgList*)p->optCookie;
+ int uct = pAL->useCt;
+ tCC** ppz = pAL->apzArgs;
+
+ /*
+ * Disallow multiple copies of disabled options.
+ */
+ if (uct > 1)
+ p->fOptState &= ~OPTST_DISABLED;
+
+ while (uct-- > 0)
+ printEntry( fp, p, *(ppz++) );
+ } else {
+ printEntry( fp, p, p->optArg.argString );
+ }
+ break;
+
+ case OPARG_TYPE_ENUMERATION:
+ case OPARG_TYPE_MEMBERSHIP:
+ {
+ uintptr_t val = p->optArg.argEnum;
+ /*
+ * This is a magic incantation that will convert the
+ * bit flag values back into a string suitable for printing.
+ */
+ (*(p->pOptProc))( (tOptions*)2UL, p );
+ printEntry( fp, p, (void*)(p->optArg.argString));
+
+ if ( (p->optArg.argString != NULL)
+ && (arg_state != OPARG_TYPE_ENUMERATION)) {
+ /*
+ * set membership strings get allocated
+ */
+ AGFREE( (void*)p->optArg.argString );
+ p->fOptState &= ~OPTST_ALLOC_ARG;
+ }
+
+ p->optArg.argEnum = val;
+ break;
+ }
+
+ case OPARG_TYPE_BOOLEAN:
+ printEntry( fp, p, p->optArg.argBool ? "true" : "false" );
+ break;
+
+ default:
+ break; /* cannot handle - skip it */
+ }
+ } while ( (pOD++), (--ct > 0));
+
+ fclose( fp );
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/save.c */
diff --git a/contrib/ntp/libopts/sort.c b/contrib/ntp/libopts/sort.c
new file mode 100644
index 0000000..ead7133
--- /dev/null
+++ b/contrib/ntp/libopts/sort.c
@@ -0,0 +1,359 @@
+
+/*
+ * sort.c $Id: sort.c,v 4.10 2007/04/28 22:19:23 bkorb Exp $
+ * Time-stamp: "2006-10-18 11:29:04 bkorb"
+ *
+ * This module implements argument sorting.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static tSuccess
+mustHandleArg( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx );
+
+static tSuccess
+mayHandleArg( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx );
+
+static tSuccess
+checkShortOpts( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx );
+/* = = = END-STATIC-FORWARD = = = */
+
+/*
+ * "mustHandleArg" and "mayHandleArg" are really similar. The biggest
+ * difference is that "may" will consume the next argument only if it
+ * does not start with a hyphen and "must" will consume it, hyphen or not.
+ */
+static tSuccess
+mustHandleArg( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx )
+{
+ /*
+ * An option argument is required. Long options can either have
+ * a separate command line argument, or an argument attached by
+ * the '=' character. Figure out which.
+ */
+ switch (pOS->optType) {
+ case TOPT_SHORT:
+ /*
+ * See if an arg string follows the flag character. If not,
+ * the next arg must be the option argument.
+ */
+ if (*pzArg != NUL)
+ return SUCCESS;
+ break;
+
+ case TOPT_LONG:
+ /*
+ * See if an arg string has already been assigned (glued on
+ * with an `=' character). If not, the next is the opt arg.
+ */
+ if (pOS->pzOptArg != NULL)
+ return SUCCESS;
+ break;
+
+ default:
+ return FAILURE;
+ }
+ if (pOpts->curOptIdx >= pOpts->origArgCt)
+ return FAILURE;
+
+ ppzOpts[ (*pOptsIdx)++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ return SUCCESS;
+}
+
+static tSuccess
+mayHandleArg( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx )
+{
+ /*
+ * An option argument is optional.
+ */
+ switch (pOS->optType) {
+ case TOPT_SHORT:
+ /*
+ * IF nothing is glued on after the current flag character,
+ * THEN see if there is another argument. If so and if it
+ * does *NOT* start with a hyphen, then it is the option arg.
+ */
+ if (*pzArg != NUL)
+ return SUCCESS;
+ break;
+
+ case TOPT_LONG:
+ /*
+ * Look for an argument if we don't already have one (glued on
+ * with a `=' character)
+ */
+ if (pOS->pzOptArg != NULL)
+ return SUCCESS;
+ break;
+
+ default:
+ return FAILURE;
+ }
+ if (pOpts->curOptIdx >= pOpts->origArgCt)
+ return PROBLEM;
+
+ pzArg = pOpts->origArgVect[ pOpts->curOptIdx ];
+ if (*pzArg != '-')
+ ppzOpts[ (*pOptsIdx)++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ return SUCCESS;
+}
+
+/*
+ * Process a string of short options glued together. If the last one
+ * does or may take an argument, the do the argument processing and leave.
+ */
+static tSuccess
+checkShortOpts( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx )
+{
+ while (*pzArg != NUL) {
+ if (FAILED( shortOptionFind( pOpts, (tAoUC)*pzArg, pOS )))
+ return FAILURE;
+
+ /*
+ * See if we can have an arg.
+ */
+ if (OPTST_GET_ARGTYPE(pOS->pOD->fOptState) == OPARG_TYPE_NONE) {
+ pzArg++;
+
+ } else if (pOS->pOD->fOptState & OPTST_ARG_OPTIONAL) {
+ /*
+ * Take an argument if it is not attached and it does not
+ * start with a hyphen.
+ */
+ if (pzArg[1] != NUL)
+ return SUCCESS;
+
+ pzArg = pOpts->origArgVect[ pOpts->curOptIdx ];
+ if (*pzArg != '-')
+ ppzOpts[ (*pOptsIdx)++ ] =
+ pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ return SUCCESS;
+
+ } else {
+ /*
+ * IF we need another argument, be sure it is there and
+ * take it.
+ */
+ if (pzArg[1] == NUL) {
+ if (pOpts->curOptIdx >= pOpts->origArgCt)
+ return FAILURE;
+ ppzOpts[ (*pOptsIdx)++ ] =
+ pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ }
+ return SUCCESS;
+ }
+ }
+ return SUCCESS;
+}
+
+/*
+ * If the program wants sorted options (separated operands and options),
+ * then this routine will to the trick.
+ */
+LOCAL void
+optionSort( tOptions* pOpts )
+{
+ char** ppzOpts;
+ char** ppzOpds;
+ int optsIdx = 0;
+ int opdsIdx = 0;
+
+ tOptState os = OPTSTATE_INITIALIZER(DEFINED);
+
+ /*
+ * Disable for POSIX conformance, or if there are no operands.
+ */
+ if ( (getenv( "POSIXLY_CORRECT" ) != NULL)
+ || NAMED_OPTS(pOpts))
+ return;
+
+ /*
+ * Make sure we can allocate two full-sized arg vectors.
+ */
+ ppzOpts = malloc( pOpts->origArgCt * sizeof( char* ));
+ if (ppzOpts == NULL)
+ goto exit_no_mem;
+
+ ppzOpds = malloc( pOpts->origArgCt * sizeof( char* ));
+ if (ppzOpds == NULL) {
+ free( ppzOpts );
+ goto exit_no_mem;
+ }
+
+ pOpts->curOptIdx = 1;
+ pOpts->pzCurOpt = NULL;
+
+ /*
+ * Now, process all the options from our current position onward.
+ * (This allows interspersed options and arguments for the few
+ * non-standard programs that require it.)
+ */
+ for (;;) {
+ char* pzArg;
+ tSuccess res;
+
+ /*
+ * If we're out of arguments, we're done. Join the option and
+ * operand lists into the original argument vector.
+ */
+ if (pOpts->curOptIdx >= pOpts->origArgCt) {
+ errno = 0;
+ goto joinLists;
+ }
+
+ pzArg = pOpts->origArgVect[ pOpts->curOptIdx ];
+ if (*pzArg != '-') {
+ ppzOpds[ opdsIdx++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ continue;
+ }
+
+ switch (pzArg[1]) {
+ case NUL:
+ /*
+ * A single hyphen is an operand.
+ */
+ ppzOpds[ opdsIdx++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ continue;
+
+ case '-':
+ /*
+ * Two consecutive hypens. Put them on the options list and then
+ * _always_ force the remainder of the arguments to be operands.
+ */
+ if (pzArg[2] == NUL) {
+ ppzOpts[ optsIdx++ ] =
+ pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ goto restOperands;
+ }
+ res = longOptionFind( pOpts, pzArg+2, &os );
+ break;
+
+ default:
+ /*
+ * If short options are not allowed, then do long
+ * option processing. Otherwise the character must be a
+ * short (i.e. single character) option.
+ */
+ if ((pOpts->fOptSet & OPTPROC_SHORTOPT) == 0) {
+ res = longOptionFind( pOpts, pzArg+1, &os );
+ } else {
+ res = shortOptionFind( pOpts, (tAoUC)pzArg[1], &os );
+ }
+ break;
+ }
+ if (FAILED( res )) {
+ errno = EINVAL;
+ goto freeTemps;
+ }
+
+ /*
+ * We've found an option. Add the argument to the option list.
+ * Next, we have to see if we need to pull another argument to be
+ * used as the option argument.
+ */
+ ppzOpts[ optsIdx++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+
+ if (OPTST_GET_ARGTYPE(os.pOD->fOptState) == OPARG_TYPE_NONE) {
+ /*
+ * No option argument. If we have a short option here,
+ * then scan for short options until we get to the end
+ * of the argument string.
+ */
+ if ( (os.optType == TOPT_SHORT)
+ && FAILED( checkShortOpts( pOpts, pzArg+2, &os,
+ ppzOpts, &optsIdx )) ) {
+ errno = EINVAL;
+ goto freeTemps;
+ }
+
+ } else if (os.pOD->fOptState & OPTST_ARG_OPTIONAL) {
+ switch (mayHandleArg( pOpts, pzArg+2, &os, ppzOpts, &optsIdx )) {
+ case FAILURE: errno = EIO; goto freeTemps;
+ case PROBLEM: errno = 0; goto joinLists;
+ }
+
+ } else {
+ switch (mustHandleArg( pOpts, pzArg+2, &os, ppzOpts, &optsIdx )) {
+ case PROBLEM:
+ case FAILURE: errno = EIO; goto freeTemps;
+ }
+ }
+ } /* for (;;) */
+
+ restOperands:
+ while (pOpts->curOptIdx < pOpts->origArgCt)
+ ppzOpds[ opdsIdx++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+
+ joinLists:
+ if (optsIdx > 0)
+ memcpy( pOpts->origArgVect + 1, ppzOpts, optsIdx * sizeof( char* ));
+ if (opdsIdx > 0)
+ memcpy( pOpts->origArgVect + 1 + optsIdx,
+ ppzOpds, opdsIdx * sizeof( char* ));
+
+ freeTemps:
+ free( ppzOpts );
+ free( ppzOpds );
+ return;
+
+ exit_no_mem:
+ errno = ENOMEM;
+ return;
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/sort.c */
diff --git a/contrib/ntp/libopts/stack.c b/contrib/ntp/libopts/stack.c
new file mode 100644
index 0000000..6d77f72
--- /dev/null
+++ b/contrib/ntp/libopts/stack.c
@@ -0,0 +1,269 @@
+
+/*
+ * stack.c
+ * $Id: stack.c,v 4.13 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 10:43:21 bkorb"
+ *
+ * This is a special option processing routine that will save the
+ * argument to an option in a FIFO queue.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+#ifdef WITH_LIBREGEX
+# include REGEX_HEADER
+#endif
+
+/*=export_func optionUnstackArg
+ * private:
+ *
+ * what: Remove option args from a stack
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Invoked for options that are equivalenced to stacked options.
+=*/
+void
+optionUnstackArg(
+ tOptions* pOpts,
+ tOptDesc* pOptDesc )
+{
+ int res;
+
+ tArgList* pAL = (tArgList*)pOptDesc->optCookie;
+ /*
+ * IF we don't have any stacked options,
+ * THEN indicate that we don't have any of these options
+ */
+ if (pAL == NULL) {
+ pOptDesc->fOptState &= OPTST_PERSISTENT_MASK;
+ if ( (pOptDesc->fOptState & OPTST_INITENABLED) == 0)
+ pOptDesc->fOptState |= OPTST_DISABLED;
+ return;
+ }
+
+#ifdef WITH_LIBREGEX
+ {
+ regex_t re;
+ int i, ct, dIdx;
+
+ if (regcomp( &re, pOptDesc->optArg.argString, REG_NOSUB ) != 0)
+ return;
+
+ /*
+ * search the list for the entry(s) to remove. Entries that
+ * are removed are *not* copied into the result. The source
+ * index is incremented every time. The destination only when
+ * we are keeping a define.
+ */
+ for (i = 0, dIdx = 0, ct = pAL->useCt; --ct >= 0; i++) {
+ tCC* pzSrc = pAL->apzArgs[ i ];
+ char* pzEq = strchr( pzSrc, '=' );
+
+ if (pzEq != NULL)
+ *pzEq = NUL;
+
+ res = regexec( &re, pzSrc, (size_t)0, NULL, 0 );
+ switch (res) {
+ case 0:
+ /*
+ * Remove this entry by reducing the in-use count
+ * and *not* putting the string pointer back into
+ * the list.
+ */
+ AGFREE(pzSrc);
+ pAL->useCt--;
+ break;
+
+ default:
+ case REG_NOMATCH:
+ if (pzEq != NULL)
+ *pzEq = '=';
+
+ /*
+ * IF we have dropped an entry
+ * THEN we have to move the current one.
+ */
+ if (dIdx != i)
+ pAL->apzArgs[ dIdx ] = pzSrc;
+ dIdx++;
+ }
+ }
+
+ regfree( &re );
+ }
+#else /* not WITH_LIBREGEX */
+ {
+ int i, ct, dIdx;
+
+ /*
+ * search the list for the entry(s) to remove. Entries that
+ * are removed are *not* copied into the result. The source
+ * index is incremented every time. The destination only when
+ * we are keeping a define.
+ */
+ for (i = 0, dIdx = 0, ct = pAL->useCt; --ct >= 0; i++) {
+ tCC* pzSrc = pAL->apzArgs[ i ];
+ char* pzEq = strchr( pzSrc, '=' );
+
+ if (pzEq != NULL)
+ *pzEq = NUL;
+
+ if (strcmp( pzSrc, pOptDesc->optArg.argString ) == 0) {
+ /*
+ * Remove this entry by reducing the in-use count
+ * and *not* putting the string pointer back into
+ * the list.
+ */
+ AGFREE(pzSrc);
+ pAL->useCt--;
+ } else {
+ if (pzEq != NULL)
+ *pzEq = '=';
+
+ /*
+ * IF we have dropped an entry
+ * THEN we have to move the current one.
+ */
+ if (dIdx != i)
+ pAL->apzArgs[ dIdx ] = pzSrc;
+ dIdx++;
+ }
+ }
+ }
+#endif /* WITH_LIBREGEX */
+ /*
+ * IF we have unstacked everything,
+ * THEN indicate that we don't have any of these options
+ */
+ if (pAL->useCt == 0) {
+ pOptDesc->fOptState &= OPTST_PERSISTENT_MASK;
+ if ( (pOptDesc->fOptState & OPTST_INITENABLED) == 0)
+ pOptDesc->fOptState |= OPTST_DISABLED;
+ AGFREE( (void*)pAL );
+ pOptDesc->optCookie = NULL;
+ }
+}
+
+
+/*
+ * Put an entry into an argument list. The first argument points to
+ * a pointer to the argument list structure. It gets passed around
+ * as an opaque address.
+ */
+LOCAL void
+addArgListEntry( void** ppAL, void* entry )
+{
+ tArgList* pAL = *(void**)ppAL;
+
+ /*
+ * IF we have never allocated one of these,
+ * THEN allocate one now
+ */
+ if (pAL == NULL) {
+ pAL = (tArgList*)AGALOC( sizeof( *pAL ), "new option arg stack" );
+ if (pAL == NULL)
+ return;
+ pAL->useCt = 0;
+ pAL->allocCt = MIN_ARG_ALLOC_CT;
+ *ppAL = (void*)pAL;
+ }
+
+ /*
+ * ELSE if we are out of room
+ * THEN make it bigger
+ */
+ else if (pAL->useCt >= pAL->allocCt) {
+ size_t sz = sizeof( *pAL );
+ pAL->allocCt += INCR_ARG_ALLOC_CT;
+
+ /*
+ * The base structure contains space for MIN_ARG_ALLOC_CT
+ * pointers. We subtract it off to find our augment size.
+ */
+ sz += sizeof(char*) * (pAL->allocCt - MIN_ARG_ALLOC_CT);
+ pAL = (tArgList*)AGREALOC( (void*)pAL, sz, "expanded opt arg stack" );
+ if (pAL == NULL)
+ return;
+ *ppAL = (void*)pAL;
+ }
+
+ /*
+ * Insert the new argument into the list
+ */
+ pAL->apzArgs[ (pAL->useCt)++ ] = entry;
+}
+
+
+/*=export_func optionStackArg
+ * private:
+ *
+ * what: put option args on a stack
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Keep an entry-ordered list of option arguments.
+=*/
+void
+optionStackArg(
+ tOptions* pOpts,
+ tOptDesc* pOD )
+{
+ char * pz;
+
+ if (pOD->optArg.argString == NULL)
+ return;
+
+ AGDUPSTR(pz, pOD->optArg.argString, "stack arg");
+ addArgListEntry( &(pOD->optCookie), (void*)pz );
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/stack.c */
diff --git a/contrib/ntp/libopts/streqvcmp.c b/contrib/ntp/libopts/streqvcmp.c
new file mode 100644
index 0000000..8249794
--- /dev/null
+++ b/contrib/ntp/libopts/streqvcmp.c
@@ -0,0 +1,289 @@
+
+/*
+ * $Id: streqvcmp.c,v 4.10 2007/04/28 22:19:23 bkorb Exp $
+ * Time-stamp: "2006-07-26 18:25:53 bkorb"
+ *
+ * String Equivalence Comparison
+ *
+ * These routines allow any character to be mapped to any other
+ * character before comparison. In processing long option names,
+ * the characters "-", "_" and "^" all need to be equivalent
+ * (because they are treated so by different development environments).
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/*
+ * This array is designed for mapping upper and lower case letter
+ * together for a case independent comparison. The mappings are
+ * based upon ascii character sequences.
+ */
+static unsigned char charmap[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, '\a',
+ '\b', '\t', '\n', '\v', '\f', '\r', 0x0E, 0x0F,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
+
+ ' ', '!', '"', '#', '$', '%', '&', '\'',
+ '(', ')', '*', '+', ',', '-', '.', '/',
+ '0', '1', '2', '3', '4', '5', '6', '7',
+ '8', '9', ':', ';', '<', '=', '>', '?',
+
+ '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
+ 'x', 'y', 'z', '[', '\\', ']', '^', '_',
+ '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
+ 'x', 'y', 'z', '{', '|', '}', '~', 0x7f,
+
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
+ 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
+ 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7,
+ 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
+
+ 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
+ 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
+ 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
+ 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
+ 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
+ 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
+ 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF,
+};
+
+
+/*=export_func strneqvcmp
+ *
+ * what: compare two strings with an equivalence mapping
+ *
+ * arg: + char const* + str1 + first string +
+ * arg: + char const* + str2 + second string +
+ * arg: + int + ct + compare length +
+ *
+ * ret_type: int
+ * ret_desc: the difference between two differing characters
+ *
+ * doc:
+ *
+ * Using a character mapping, two strings are compared for "equivalence".
+ * Each input character is mapped to a comparison character and the
+ * mapped-to characters are compared for the two NUL terminated input strings.
+ * The comparison is limited to @code{ct} bytes.
+ * This function name is mapped to option_strneqvcmp so as to not conflict
+ * with the POSIX name space.
+ *
+ * err: none checked. Caller responsible for seg faults.
+=*/
+int
+strneqvcmp( tCC* s1, tCC* s2, int ct )
+{
+ for (; ct > 0; --ct) {
+ unsigned char u1 = (unsigned char) *s1++;
+ unsigned char u2 = (unsigned char) *s2++;
+ int dif = charmap[ u1 ] - charmap[ u2 ];
+
+ if (dif != 0)
+ return dif;
+
+ if (u1 == NUL)
+ return 0;
+ }
+
+ return 0;
+}
+
+
+/*=export_func streqvcmp
+ *
+ * what: compare two strings with an equivalence mapping
+ *
+ * arg: + char const* + str1 + first string +
+ * arg: + char const* + str2 + second string +
+ *
+ * ret_type: int
+ * ret_desc: the difference between two differing characters
+ *
+ * doc:
+ *
+ * Using a character mapping, two strings are compared for "equivalence".
+ * Each input character is mapped to a comparison character and the
+ * mapped-to characters are compared for the two NUL terminated input strings.
+ * This function name is mapped to option_streqvcmp so as to not conflict
+ * with the POSIX name space.
+ *
+ * err: none checked. Caller responsible for seg faults.
+=*/
+int
+streqvcmp( tCC* s1, tCC* s2 )
+{
+ for (;;) {
+ unsigned char u1 = (unsigned char) *s1++;
+ unsigned char u2 = (unsigned char) *s2++;
+ int dif = charmap[ u1 ] - charmap[ u2 ];
+
+ if (dif != 0)
+ return dif;
+
+ if (u1 == NUL)
+ return 0;
+ }
+}
+
+
+/*=export_func streqvmap
+ *
+ * what: Set the character mappings for the streqv functions
+ *
+ * arg: + char + From + Input character +
+ * arg: + char + To + Mapped-to character +
+ * arg: + int + ct + compare length +
+ *
+ * doc:
+ *
+ * Set the character mapping. If the count (@code{ct}) is set to zero, then
+ * the map is cleared by setting all entries in the map to their index
+ * value. Otherwise, the "@code{From}" character is mapped to the "@code{To}"
+ * character. If @code{ct} is greater than 1, then @code{From} and @code{To}
+ * are incremented and the process repeated until @code{ct} entries have been
+ * set. For example,
+ * @example
+ * streqvmap( 'a', 'A', 26 );
+ * @end example
+ * @noindent
+ * will alter the mapping so that all English lower case letters
+ * will map to upper case.
+ *
+ * This function name is mapped to option_streqvmap so as to not conflict
+ * with the POSIX name space.
+ *
+ * err: none.
+=*/
+void
+streqvmap( char From, char To, int ct )
+{
+ if (ct == 0) {
+ ct = sizeof( charmap ) - 1;
+ do {
+ charmap[ ct ] = ct;
+ } while (--ct >= 0);
+ }
+
+ else {
+ int chTo = (int)To & 0xFF;
+ int chFrom = (int)From & 0xFF;
+
+ do {
+ charmap[ chFrom ] = (unsigned)chTo;
+ chFrom++;
+ chTo++;
+ if ((chFrom >= sizeof( charmap )) || (chTo >= sizeof( charmap )))
+ break;
+ } while (--ct > 0);
+ }
+}
+
+
+/*=export_func strequate
+ *
+ * what: map a list of characters to the same value
+ *
+ * arg: + char const* + ch_list + characters to equivalence +
+ *
+ * doc:
+ *
+ * Each character in the input string get mapped to the first character
+ * in the string.
+ * This function name is mapped to option_strequate so as to not conflict
+ * with the POSIX name space.
+ *
+ * err: none.
+=*/
+void
+strequate( char const* s )
+{
+ if ((s != NULL) && (*s != NUL)) {
+ unsigned char equiv = (unsigned)*s;
+ while (*s != NUL)
+ charmap[ (unsigned)*(s++) ] = equiv;
+ }
+}
+
+
+/*=export_func strtransform
+ *
+ * what: convert a string into its mapped-to value
+ *
+ * arg: + char* + dest + output string +
+ * arg: + char const* + src + input string +
+ *
+ * doc:
+ *
+ * Each character in the input string is mapped and the mapped-to
+ * character is put into the output.
+ * This function name is mapped to option_strtransform so as to not conflict
+ * with the POSIX name space.
+ *
+ * err: none.
+=*/
+void
+strtransform( char* d, char const* s )
+{
+ do {
+ *(d++) = (char)charmap[ (unsigned)*s ];
+ } while (*(s++) != NUL);
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/streqvcmp.c */
diff --git a/contrib/ntp/libopts/text_mmap.c b/contrib/ntp/libopts/text_mmap.c
new file mode 100644
index 0000000..ced2977
--- /dev/null
+++ b/contrib/ntp/libopts/text_mmap.c
@@ -0,0 +1,363 @@
+/*
+ * $Id: text_mmap.c,v 4.15 2006/11/27 01:52:23 bkorb Exp $
+ *
+ * Time-stamp: "2006-09-10 14:50:04 bkorb"
+ */
+
+#ifndef MAP_ANONYMOUS
+# ifdef MAP_ANON
+# define MAP_ANONYMOUS MAP_ANON
+# endif
+#endif
+
+/*
+ * Some weird systems require that a specifically invalid FD number
+ * get passed in as an argument value. Which value is that? Well,
+ * as everybody knows, if open(2) fails, it returns -1, so that must
+ * be the value. :)
+ */
+#define AO_INVALID_FD -1
+
+#define FILE_WRITABLE(_prt,_flg) \
+ ( (_prt & PROT_WRITE) \
+ && ((_flg & (MAP_SHARED|MAP_PRIVATE)) == MAP_SHARED))
+#define MAP_FAILED_PTR ((void*)MAP_FAILED)
+
+/*=export_func text_mmap
+ * private:
+ *
+ * what: map a text file with terminating NUL
+ *
+ * arg: char const*, pzFile, name of the file to map
+ * arg: int, prot, mmap protections (see mmap(2))
+ * arg: int, flags, mmap flags (see mmap(2))
+ * arg: tmap_info_t*, mapinfo, returned info about the mapping
+ *
+ * ret-type: void*
+ * ret-desc: The mmaped data address
+ *
+ * doc:
+ *
+ * This routine will mmap a file into memory ensuring that there is at least
+ * one @file{NUL} character following the file data. It will return the
+ * address where the file contents have been mapped into memory. If there is a
+ * problem, then it will return @code{MAP_FAILED} and set @file{errno}
+ * appropriately.
+ *
+ * The named file does not exist, @code{stat(2)} will set @file{errno} as it
+ * will. If the file is not a regular file, @file{errno} will be
+ * @code{EINVAL}. At that point, @code{open(2)} is attempted with the access
+ * bits set appropriately for the requested @code{mmap(2)} protections and flag
+ * bits. On failure, @file{errno} will be set according to the documentation
+ * for @code{open(2)}. If @code{mmap(2)} fails, @file{errno} will be set as
+ * that routine sets it. If @code{text_mmap} works to this point, a valid
+ * address will be returned, but there may still be ``issues''.
+ *
+ * If the file size is not an even multiple of the system page size, then
+ * @code{text_map} will return at this point and @file{errno} will be zero.
+ * Otherwise, an anonymous map is attempted. If not available, then an attempt
+ * is made to @code{mmap(2)} @file{/dev/zero}. If any of these fail, the
+ * address of the file's data is returned, bug @code{no} @file{NUL} characters
+ * are mapped after the end of the data.
+ *
+ * see: mmap(2), open(2), stat(2)
+ *
+ * err: Any error code issued by mmap(2), open(2), stat(2) is possible.
+ * Additionally, if the specified file is not a regular file, then
+ * errno will be set to @code{EINVAL}.
+ *
+ * example:
+ * #include <mylib.h>
+ * tmap_info_t mi;
+ * int no_nul;
+ * void* data = text_mmap( "file", PROT_WRITE, MAP_PRIVATE, &mi );
+ * if (data == MAP_FAILED) return;
+ * no_nul = (mi.txt_size == mi.txt_full_size);
+ * << use the data >>
+ * text_munmap( &mi );
+=*/
+void*
+text_mmap( char const* pzFile, int prot, int flags, tmap_info_t* pMI )
+{
+ memset( pMI, 0, sizeof(*pMI) );
+#ifdef HAVE_MMAP
+ pMI->txt_zero_fd = -1;
+#endif
+ pMI->txt_fd = -1;
+
+ /*
+ * Make sure we can stat the regular file. Save the file size.
+ */
+ {
+ struct stat sb;
+ if (stat( pzFile, &sb ) != 0) {
+ pMI->txt_errno = errno;
+ return MAP_FAILED_PTR;
+ }
+
+ if (! S_ISREG( sb.st_mode )) {
+ pMI->txt_errno = errno = EINVAL;
+ return MAP_FAILED_PTR;
+ }
+
+ pMI->txt_size = sb.st_size;
+ }
+
+ /*
+ * Map mmap flags and protections into open flags and do the open.
+ */
+ {
+ int o_flag;
+ /*
+ * See if we will be updating the file. If we can alter the memory
+ * and if we share the data and we are *not* copy-on-writing the data,
+ * then our updates will show in the file, so we must open with
+ * write access.
+ */
+ if (FILE_WRITABLE(prot,flags))
+ o_flag = O_RDWR;
+ else
+ o_flag = O_RDONLY;
+
+ /*
+ * If you're not sharing the file and you are writing to it,
+ * then don't let anyone else have access to the file.
+ */
+ if (((flags & MAP_SHARED) == 0) && (prot & PROT_WRITE))
+ o_flag |= O_EXCL;
+
+ pMI->txt_fd = open( pzFile, o_flag );
+ }
+
+ if (pMI->txt_fd == AO_INVALID_FD) {
+ pMI->txt_errno = errno;
+ return MAP_FAILED_PTR;
+ }
+
+#ifdef HAVE_MMAP /* * * * * WITH MMAP * * * * * */
+ /*
+ * do the mmap. If we fail, then preserve errno, close the file and
+ * return the failure.
+ */
+ pMI->txt_data =
+ mmap(NULL, pMI->txt_size+1, prot, flags, pMI->txt_fd, (size_t)0);
+ if (pMI->txt_data == MAP_FAILED_PTR) {
+ pMI->txt_errno = errno;
+ goto fail_return;
+ }
+
+ /*
+ * Most likely, everything will turn out fine now. The only difficult
+ * part at this point is coping with files with sizes that are a multiple
+ * of the page size. Handling that is what this whole thing is about.
+ */
+ pMI->txt_zero_fd = -1;
+ pMI->txt_errno = 0;
+
+ {
+ void* pNuls;
+#ifdef _SC_PAGESIZE
+ size_t pgsz = sysconf(_SC_PAGESIZE);
+#else
+ size_t pgsz = getpagesize();
+#endif
+ /*
+ * Compute the pagesize rounded mapped memory size.
+ * IF this is not the same as the file size, then there are NUL's
+ * at the end of the file mapping and all is okay.
+ */
+ pMI->txt_full_size = (pMI->txt_size + (pgsz - 1)) & ~(pgsz - 1);
+ if (pMI->txt_size != pMI->txt_full_size)
+ return pMI->txt_data;
+
+ /*
+ * Still here? We have to remap the trailing inaccessible page
+ * either anonymously or to /dev/zero.
+ */
+ pMI->txt_full_size += pgsz;
+#if defined(MAP_ANONYMOUS)
+ pNuls = mmap(
+ (void*)(((char*)pMI->txt_data) + pMI->txt_size),
+ pgsz, PROT_READ|PROT_WRITE,
+ MAP_ANONYMOUS|MAP_FIXED|MAP_PRIVATE, AO_INVALID_FD, (size_t)0);
+
+ if (pNuls != MAP_FAILED_PTR)
+ return pMI->txt_data;
+
+ pMI->txt_errno = errno;
+
+#elif defined(HAVE_DEV_ZERO)
+ pMI->txt_zero_fd = open( "/dev/zero", O_RDONLY );
+
+ if (pMI->txt_zero_fd == AO_INVALID_FD) {
+ pMI->txt_errno = errno;
+
+ } else {
+ pNuls = mmap(
+ (void*)(((char*)pMI->txt_data) + pMI->txt_size), pgsz,
+ PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
+ pMI->txt_zero_fd, 0 );
+
+ if (pNuls != MAP_FAILED_PTR)
+ return pMI->txt_data;
+
+ pMI->txt_errno = errno;
+ close( pMI->txt_zero_fd );
+ pMI->txt_zero_fd = -1;
+ }
+#endif
+
+ pMI->txt_full_size = pMI->txt_size;
+ }
+
+ {
+ void* p = AGALOC( pMI->txt_size+1, "file text" );
+ memcpy( p, pMI->txt_data, pMI->txt_size );
+ ((char*)p)[pMI->txt_size] = NUL;
+ munmap(pMI->txt_data, pMI->txt_size );
+ pMI->txt_data = p;
+ }
+ pMI->txt_alloc = 1;
+ return pMI->txt_data;
+
+#else /* * * * * * no HAVE_MMAP * * * * * */
+
+ pMI->txt_data = AGALOC( pMI->txt_size+1, "file text" );
+ if (pMI->txt_data == NULL) {
+ pMI->txt_errno = ENOMEM;
+ goto fail_return;
+ }
+
+ {
+ size_t sz = pMI->txt_size;
+ char* pz = pMI->txt_data;
+
+ while (sz > 0) {
+ ssize_t rdct = read( pMI->txt_fd, pz, sz );
+ if (rdct <= 0) {
+ pMI->txt_errno = errno;
+ fprintf( stderr, zFSErrReadFile,
+ errno, strerror( errno ), pzFile );
+ free( pMI->txt_data );
+ goto fail_return;
+ }
+
+ pz += rdct;
+ sz -= rdct;
+ }
+
+ *pz = NUL;
+ }
+
+ /*
+ * We never need a dummy page mapped in
+ */
+ pMI->txt_zero_fd = -1;
+ pMI->txt_errno = 0;
+
+ return pMI->txt_data;
+
+#endif /* * * * * * no HAVE_MMAP * * * * * */
+
+ fail_return:
+ if (pMI->txt_fd >= 0) {
+ close( pMI->txt_fd );
+ pMI->txt_fd = -1;
+ }
+ errno = pMI->txt_errno;
+ pMI->txt_data = MAP_FAILED_PTR;
+ return pMI->txt_data;
+}
+
+
+/*=export_func text_munmap
+ * private:
+ *
+ * what: unmap the data mapped in by text_mmap
+ *
+ * arg: tmap_info_t*, mapinfo, info about the mapping
+ *
+ * ret-type: int
+ * ret-desc: -1 or 0. @file{errno} will have the error code.
+ *
+ * doc:
+ *
+ * This routine will unmap the data mapped in with @code{text_mmap} and close
+ * the associated file descriptors opened by that function.
+ *
+ * see: munmap(2), close(2)
+ *
+ * err: Any error code issued by munmap(2) or close(2) is possible.
+=*/
+int
+text_munmap( tmap_info_t* pMI )
+{
+#ifdef HAVE_MMAP
+ int res = 0;
+ if (pMI->txt_alloc) {
+ /*
+ * IF the user has write permission and the text is not mapped private,
+ * then write back any changes. Hopefully, nobody else has modified
+ * the file in the mean time.
+ */
+ if ( ((pMI->txt_prot & PROT_WRITE) != 0)
+ && ((pMI->txt_flags & MAP_PRIVATE) == 0)) {
+
+ if (lseek(pMI->txt_fd, (size_t)0, SEEK_SET) != 0)
+ goto error_return;
+
+ res = (write( pMI->txt_fd, pMI->txt_data, pMI->txt_size ) < 0)
+ ? errno : 0;
+ }
+
+ AGFREE( pMI->txt_data );
+ errno = res;
+ } else {
+ res = munmap( pMI->txt_data, pMI->txt_full_size );
+ }
+ if (res != 0)
+ goto error_return;
+
+ res = close( pMI->txt_fd );
+ if (res != 0)
+ goto error_return;
+
+ pMI->txt_fd = -1;
+ errno = 0;
+ if (pMI->txt_zero_fd != -1) {
+ res = close( pMI->txt_zero_fd );
+ pMI->txt_zero_fd = -1;
+ }
+
+ error_return:
+ pMI->txt_errno = errno;
+ return res;
+#else /* HAVE_MMAP */
+
+ errno = 0;
+ /*
+ * IF the memory is writable *AND* it is not private (copy-on-write)
+ * *AND* the memory is "sharable" (seen by other processes)
+ * THEN rewrite the data.
+ */
+ if ( FILE_WRITABLE(pMI->txt_prot, pMI->txt_flags)
+ && (lseek( pMI->txt_fd, 0, SEEK_SET ) >= 0) ) {
+ write( pMI->txt_fd, pMI->txt_data, pMI->txt_size );
+ }
+
+ close( pMI->txt_fd );
+ pMI->txt_fd = -1;
+ pMI->txt_errno = errno;
+ free( pMI->txt_data );
+
+ return pMI->txt_errno;
+#endif /* HAVE_MMAP */
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/text_mmap.c */
diff --git a/contrib/ntp/libopts/tokenize.c b/contrib/ntp/libopts/tokenize.c
new file mode 100644
index 0000000..0e576ce
--- /dev/null
+++ b/contrib/ntp/libopts/tokenize.c
@@ -0,0 +1,321 @@
+/*
+ * This file defines the string_tokenize interface
+ * Time-stamp: "2006-06-24 15:27:49 bkorb"
+ *
+ * string_tokenize copyright 2005 Bruce Korb
+ *
+ * string_tokenize is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * string_tokenize 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with string_tokenize; if not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#include <ctype.h>
+#include <errno.h>
+#include <stdlib.h>
+
+#define cc_t const unsigned char
+#define ch_t unsigned char
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+copy_cooked( ch_t** ppDest, char const ** ppSrc );
+
+static void
+copy_raw( ch_t** ppDest, char const ** ppSrc );
+/* = = = END-STATIC-FORWARD = = = */
+
+static void
+copy_cooked( ch_t** ppDest, char const ** ppSrc )
+{
+ ch_t* pDest = (ch_t*)*ppDest;
+ const ch_t* pSrc = (const ch_t*)(*ppSrc + 1);
+
+ for (;;) {
+ ch_t ch = *(pSrc++);
+ switch (ch) {
+ case NUL: *ppSrc = NULL; return;
+ case '"': goto done;
+ case '\\':
+ pSrc += ao_string_cook_escape_char( (char*)pSrc, (char*)&ch, 0x7F );
+ if (ch == 0x7F)
+ break;
+ /* FALLTHROUGH */
+
+ default:
+ *(pDest++) = ch;
+ }
+ }
+
+ done:
+ *ppDest = (ch_t*)pDest; /* next spot for storing character */
+ *ppSrc = (char const *)pSrc; /* char following closing quote */
+}
+
+
+static void
+copy_raw( ch_t** ppDest, char const ** ppSrc )
+{
+ ch_t* pDest = *ppDest;
+ cc_t* pSrc = (cc_t*) (*ppSrc + 1);
+
+ for (;;) {
+ ch_t ch = *(pSrc++);
+ switch (ch) {
+ case NUL: *ppSrc = NULL; return;
+ case '\'': goto done;
+ case '\\':
+ /*
+ * *Four* escapes are handled: newline removal, escape char
+ * quoting and apostrophe quoting
+ */
+ switch (*pSrc) {
+ case NUL: *ppSrc = NULL; return;
+ case '\r':
+ if (*(++pSrc) == '\n')
+ ++pSrc;
+ continue;
+
+ case '\n':
+ ++pSrc;
+ continue;
+
+ case '\'':
+ ch = '\'';
+ /* FALLTHROUGH */
+
+ case '\\':
+ ++pSrc;
+ break;
+ }
+ /* FALLTHROUGH */
+
+ default:
+ *(pDest++) = ch;
+ }
+ }
+
+ done:
+ *ppDest = pDest; /* next spot for storing character */
+ *ppSrc = (char const *) pSrc; /* char following closing quote */
+}
+
+
+/*=export_func ao_string_tokenize
+ *
+ * what: tokenize an input string
+ *
+ * arg: + char const* + string + string to be tokenized +
+ *
+ * ret_type: token_list_t*
+ * ret_desc: pointer to a structure that lists each token
+ *
+ * doc:
+ *
+ * This function will convert one input string into a list of strings.
+ * The list of strings is derived by separating the input based on
+ * white space separation. However, if the input contains either single
+ * or double quote characters, then the text after that character up to
+ * a matching quote will become the string in the list.
+ *
+ * The returned pointer should be deallocated with @code{free(3C)} when
+ * are done using the data. The data are placed in a single block of
+ * allocated memory. Do not deallocate individual token/strings.
+ *
+ * The structure pointed to will contain at least these two fields:
+ * @table @samp
+ * @item tkn_ct
+ * The number of tokens found in the input string.
+ * @item tok_list
+ * An array of @code{tkn_ct + 1} pointers to substring tokens, with
+ * the last pointer set to NULL.
+ * @end table
+ *
+ * There are two types of quoted strings: single quoted (@code{'}) and
+ * double quoted (@code{"}). Singly quoted strings are fairly raw in that
+ * escape characters (@code{\\}) are simply another character, except when
+ * preceding the following characters:
+ * @example
+ * @code{\\} double backslashes reduce to one
+ * @code{'} incorporates the single quote into the string
+ * @code{\n} suppresses both the backslash and newline character
+ * @end example
+ *
+ * Double quote strings are formed according to the rules of string
+ * constants in ANSI-C programs.
+ *
+ * example:
+ * @example
+ * #include <stdlib.h>
+ * int ix;
+ * token_list_t* ptl = ao_string_tokenize( some_string )
+ * for (ix = 0; ix < ptl->tkn_ct; ix++)
+ * do_something_with_tkn( ptl->tkn_list[ix] );
+ * free( ptl );
+ * @end example
+ * Note that everything is freed with the one call to @code{free(3C)}.
+ *
+ * err:
+ * NULL is returned and @code{errno} will be set to indicate the problem:
+ * @itemize @bullet
+ * @item
+ * @code{EINVAL} - There was an unterminated quoted string.
+ * @item
+ * @code{ENOENT} - The input string was empty.
+ * @item
+ * @code{ENOMEM} - There is not enough memory.
+ * @end itemize
+=*/
+token_list_t*
+ao_string_tokenize( char const* str )
+{
+ int max_token_ct = 1; /* allow for trailing NUL on string */
+ token_list_t* res;
+
+ if (str == NULL) goto bogus_str;
+
+ /*
+ * Trim leading white space. Use "ENOENT" and a NULL return to indicate
+ * an empty string was passed.
+ */
+ while (isspace( (ch_t)*str )) str++;
+ if (*str == NUL) {
+ bogus_str:
+ errno = ENOENT;
+ return NULL;
+ }
+
+ /*
+ * Take an approximate count of tokens. If no quoted strings are used,
+ * it will be accurate. If quoted strings are used, it will be a little
+ * high and we'll squander the space for a few extra pointers.
+ */
+ {
+ cc_t* pz = (cc_t*)str;
+
+ do {
+ max_token_ct++;
+ while (! isspace( *++pz ))
+ if (*pz == NUL) goto found_nul;
+ while (isspace( *pz )) pz++;
+ } while (*pz != NUL);
+
+ found_nul:
+ ;
+ }
+
+ res = malloc( sizeof(*res) + strlen(str) + (max_token_ct * sizeof(ch_t*)) );
+ if (res == NULL) {
+ errno = ENOMEM;
+ return res;
+ }
+
+ /*
+ * Now copy each token into the output buffer.
+ */
+ {
+ ch_t* pzDest = (ch_t*)(res->tkn_list + (max_token_ct + 1));
+ res->tkn_ct = 0;
+
+ do {
+ res->tkn_list[ res->tkn_ct++ ] = pzDest;
+ for (;;) {
+ int ch = (ch_t)*str;
+ if (isspace( ch )) {
+ found_white_space:
+ while (isspace( (ch_t)*++str )) ;
+ break;
+ }
+
+ switch (ch) {
+ case '"':
+ copy_cooked( &pzDest, &str );
+ if (str == NULL) {
+ free(res);
+ errno = EINVAL;
+ return NULL;
+ }
+ if (isspace( (ch_t)*str ))
+ goto found_white_space;
+ break;
+
+ case '\'':
+ copy_raw( &pzDest, &str );
+ if (str == NULL) {
+ free(res);
+ errno = EINVAL;
+ return NULL;
+ }
+ if (isspace( (ch_t)*str ))
+ goto found_white_space;
+ break;
+
+ case NUL:
+ goto copy_done;
+
+ default:
+ str++;
+ *(pzDest++) = ch;
+ }
+ } copy_done:;
+
+ /*
+ * NUL terminate the last token and see if we have any more tokens.
+ */
+ *(pzDest++) = NUL;
+ } while (*str != NUL);
+
+ res->tkn_list[ res->tkn_ct ] = NULL;
+ }
+
+ return res;
+}
+
+#ifdef TEST
+#include <stdio.h>
+#include <string.h>
+
+int
+main( int argc, char** argv )
+{
+ if (argc == 1) {
+ printf("USAGE: %s arg [ ... ]\n", *argv);
+ return 1;
+ }
+ while (--argc > 0) {
+ char* arg = *(++argv);
+ token_list_t* p = ao_string_tokenize( arg );
+ if (p == NULL) {
+ printf( "Parsing string ``%s'' failed:\n\terrno %d (%s)\n",
+ arg, errno, strerror( errno ));
+ } else {
+ int ix = 0;
+ printf( "Parsed string ``%s''\ninto %d tokens:\n", arg, p->tkn_ct );
+ do {
+ printf( " %3d: ``%s''\n", ix+1, p->tkn_list[ix] );
+ } while (++ix < p->tkn_ct);
+ free(p);
+ }
+ }
+ return 0;
+}
+#endif
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/tokenize.c */
diff --git a/contrib/ntp/libopts/usage.c b/contrib/ntp/libopts/usage.c
new file mode 100644
index 0000000..960339b
--- /dev/null
+++ b/contrib/ntp/libopts/usage.c
@@ -0,0 +1,740 @@
+
+/*
+ * usage.c $Id: usage.c,v 4.15 2007/04/28 22:19:23 bkorb Exp $
+ * Time-stamp: "2007-04-15 11:02:46 bkorb"
+ *
+ * This module implements the default usage procedure for
+ * Automated Options. It may be overridden, of course.
+ *
+ * Sort options:
+ --start=END-[S]TATIC-FORWARD --patt='^/\*($|[^:])' \
+ --out=xx.c key='^[a-zA-Z0-9_]+\(' --trail='^/\*:' \
+ --spac=2 --input=usage.c
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+#define OPTPROC_L_N_S (OPTPROC_LONGOPT | OPTPROC_SHORTOPT)
+
+static arg_types_t argTypes;
+
+FILE* option_usage_fp = NULL;
+static char zOptFmtLine[ 16 ];
+static ag_bool displayEnum;
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static ag_bool
+checkGNUUsage( tOptions* pOpts );
+
+static void
+printExtendedUsage(
+ tOptions* pOptions,
+ tOptDesc* pOD,
+ arg_types_t* pAT );
+
+static void
+printInitList(
+ tCC* const* papz,
+ ag_bool* pInitIntro,
+ tCC* pzRc,
+ tCC* pzPN );
+
+static void
+printOneUsage(
+ tOptions* pOptions,
+ tOptDesc* pOD,
+ arg_types_t* pAT );
+
+static void
+printOptionUsage(
+ tOptions* pOpts,
+ int ex_code,
+ tCC* pOptTitle );
+
+static void
+printProgramDetails( tOptions* pOptions );
+
+static int
+setGnuOptFmts( tOptions* pOpts, tCC** ppT );
+
+static int
+setStdOptFmts( tOptions* pOpts, tCC** ppT );
+/* = = = END-STATIC-FORWARD = = = */
+
+
+/*
+ * Figure out if we should try to format usage text sort-of like
+ * the way many GNU programs do.
+ */
+static ag_bool
+checkGNUUsage( tOptions* pOpts )
+{
+ char* pz = getenv( "AUTOOPTS_USAGE" );
+ if (pz == NULL)
+ ;
+
+ else if (streqvcmp( pz, "gnu" ) == 0)
+ pOpts->fOptSet |= OPTPROC_GNUUSAGE;
+
+ else if (streqvcmp( pz, "autoopts" ) == 0)
+ pOpts->fOptSet &= ~OPTPROC_GNUUSAGE;
+
+ return (pOpts->fOptSet & OPTPROC_GNUUSAGE) ? AG_TRUE : AG_FALSE;
+}
+
+
+/*=export_func optionOnlyUsage
+ *
+ * what: Print usage text for just the options
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + int + ex_code + exit code for calling exit(3) +
+ *
+ * doc:
+ * This routine will print only the usage for each option.
+ * This function may be used when the emitted usage must incorporate
+ * information not available to AutoOpts.
+=*/
+void
+optionOnlyUsage(
+ tOptions* pOpts,
+ int ex_code )
+{
+ tCC* pOptTitle = NULL;
+
+ /*
+ * Determine which header and which option formatting strings to use
+ */
+ if (checkGNUUsage(pOpts)) {
+ (void)setGnuOptFmts( pOpts, &pOptTitle );
+ }
+ else {
+ (void)setStdOptFmts( pOpts, &pOptTitle );
+ }
+
+ printOptionUsage( pOpts, ex_code, pOptTitle );
+}
+
+
+/*=export_func optionUsage
+ * private:
+ *
+ * what: Print usage text
+ * arg: + tOptions* + pOptions + program options descriptor +
+ * arg: + int + exitCode + exit code for calling exit(3) +
+ *
+ * doc:
+ * This routine will print usage in both GNU-standard and AutoOpts-expanded
+ * formats. The descriptor specifies the default, but AUTOOPTS_USAGE will
+ * over-ride this, providing the value of it is set to either "gnu" or
+ * "autoopts". This routine will @strong{not} return.
+ *
+ * If "exitCode" is "EX_USAGE" (normally 64), then output will to to stdout
+ * and the actual exit code will be "EXIT_SUCCESS".
+=*/
+void
+optionUsage(
+ tOptions* pOptions,
+ int usage_exit_code )
+{
+ int actual_exit_code =
+ (usage_exit_code == EX_USAGE) ? EXIT_SUCCESS : usage_exit_code;
+
+ displayEnum = AG_FALSE;
+
+ /*
+ * Paged usage will preset option_usage_fp to an output file.
+ * If it hasn't already been set, then set it to standard output
+ * on successful exit (help was requested), otherwise error out.
+ */
+ if (option_usage_fp == NULL)
+ option_usage_fp = (actual_exit_code != EXIT_SUCCESS) ? stderr : stdout;
+
+ fprintf( option_usage_fp, pOptions->pzUsageTitle, pOptions->pzProgName );
+
+ {
+ tCC* pOptTitle = NULL;
+
+ /*
+ * Determine which header and which option formatting strings to use
+ */
+ if (checkGNUUsage(pOptions)) {
+ int flen = setGnuOptFmts( pOptions, &pOptTitle );
+ sprintf( zOptFmtLine, zFmtFmt, flen );
+ fputc( '\n', option_usage_fp );
+ }
+ else {
+ int flen = setStdOptFmts( pOptions, &pOptTitle );
+ sprintf( zOptFmtLine, zFmtFmt, flen );
+
+ /*
+ * When we exit with EXIT_SUCCESS and the first option is a doc
+ * option, we do *NOT* want to emit the column headers.
+ * Otherwise, we do.
+ */
+ if ( (usage_exit_code != EXIT_SUCCESS)
+ || ((pOptions->pOptDesc->fOptState & OPTST_DOCUMENT) == 0) )
+
+ fputs( pOptTitle, option_usage_fp );
+ }
+
+ printOptionUsage( pOptions, usage_exit_code, pOptTitle );
+ }
+
+ /*
+ * Describe the mechanics of denoting the options
+ */
+ switch (pOptions->fOptSet & OPTPROC_L_N_S) {
+ case OPTPROC_L_N_S: fputs( zFlagOkay, option_usage_fp ); break;
+ case OPTPROC_SHORTOPT: break;
+ case OPTPROC_LONGOPT: fputs( zNoFlags, option_usage_fp ); break;
+ case 0: fputs( zOptsOnly, option_usage_fp ); break;
+ }
+
+ if ((pOptions->fOptSet & OPTPROC_NUM_OPT) != 0) {
+ fputs( zNumberOpt, option_usage_fp );
+ }
+
+ if ((pOptions->fOptSet & OPTPROC_REORDER) != 0) {
+ fputs( zReorder, option_usage_fp );
+ }
+
+ if (pOptions->pzExplain != NULL)
+ fputs( pOptions->pzExplain, option_usage_fp );
+
+ /*
+ * IF the user is asking for help (thus exiting with SUCCESS),
+ * THEN see what additional information we can provide.
+ */
+ if (usage_exit_code == EXIT_SUCCESS)
+ printProgramDetails( pOptions );
+
+ if (pOptions->pzBugAddr != NULL)
+ fprintf( option_usage_fp, zPlsSendBugs, pOptions->pzBugAddr );
+ fflush( option_usage_fp );
+
+ exit( actual_exit_code );
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * PER OPTION TYPE USAGE INFORMATION
+ */
+static void
+printExtendedUsage(
+ tOptions* pOptions,
+ tOptDesc* pOD,
+ arg_types_t* pAT )
+{
+ /*
+ * IF there are option conflicts or dependencies,
+ * THEN print them here.
+ */
+ if ( (pOD->pOptMust != NULL)
+ || (pOD->pOptCant != NULL) ) {
+
+ fputs( zTabHyp, option_usage_fp );
+
+ /*
+ * DEPENDENCIES:
+ */
+ if (pOD->pOptMust != NULL) {
+ const int* pOptNo = pOD->pOptMust;
+
+ fputs( zReqThese, option_usage_fp );
+ for (;;) {
+ fprintf( option_usage_fp, zTabout, pOptions->pOptDesc[
+ *pOptNo ].pz_Name );
+ if (*++pOptNo == NO_EQUIVALENT)
+ break;
+ }
+
+ if (pOD->pOptCant != NULL)
+ fputs( zTabHypAnd, option_usage_fp );
+ }
+
+ /*
+ * CONFLICTS:
+ */
+ if (pOD->pOptCant != NULL) {
+ const int* pOptNo = pOD->pOptCant;
+
+ fputs( zProhib, option_usage_fp );
+ for (;;) {
+ fprintf( option_usage_fp, zTabout, pOptions->pOptDesc[
+ *pOptNo ].pz_Name );
+ if (*++pOptNo == NO_EQUIVALENT)
+ break;
+ }
+ }
+ }
+
+ /*
+ * IF there is a disablement string
+ * THEN print the disablement info
+ */
+ if (pOD->pz_DisableName != NULL )
+ fprintf( option_usage_fp, zDis, pOD->pz_DisableName );
+
+ /*
+ * IF the numeric option has a special callback,
+ * THEN call it, requesting the range or other special info
+ */
+ if ( (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_NUMERIC)
+ && (pOD->pOptProc != NULL)
+ && (pOD->pOptProc != optionNumericVal) ) {
+ (*(pOD->pOptProc))( pOptions, NULL );
+ }
+
+ /*
+ * IF the option defaults to being enabled,
+ * THEN print that out
+ */
+ if (pOD->fOptState & OPTST_INITENABLED)
+ fputs( zEnab, option_usage_fp );
+
+ /*
+ * IF the option is in an equivalence class
+ * AND not the designated lead
+ * THEN print equivalence and leave it at that.
+ */
+ if ( (pOD->optEquivIndex != NO_EQUIVALENT)
+ && (pOD->optEquivIndex != pOD->optActualIndex ) ) {
+ fprintf( option_usage_fp, zAlt,
+ pOptions->pOptDesc[ pOD->optEquivIndex ].pz_Name );
+ return;
+ }
+
+ /*
+ * IF this particular option can NOT be preset
+ * AND some form of presetting IS allowed,
+ * AND it is not an auto-managed option (e.g. --help, et al.)
+ * THEN advise that this option may not be preset.
+ */
+ if ( ((pOD->fOptState & OPTST_NO_INIT) != 0)
+ && ( (pOptions->papzHomeList != NULL)
+ || (pOptions->pzPROGNAME != NULL)
+ )
+ && (pOD->optIndex < pOptions->presetOptCt)
+ )
+
+ fputs( zNoPreset, option_usage_fp );
+
+ /*
+ * Print the appearance requirements.
+ */
+ if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_MEMBERSHIP)
+ fputs( zMembers, option_usage_fp );
+
+ else switch (pOD->optMinCt) {
+ case 1:
+ case 0:
+ switch (pOD->optMaxCt) {
+ case 0: fputs( zPreset, option_usage_fp ); break;
+ case NOLIMIT: fputs( zNoLim, option_usage_fp ); break;
+ case 1: break;
+ /*
+ * IF the max is more than one but limited, print "UP TO" message
+ */
+ default: fprintf( option_usage_fp, zUpTo, pOD->optMaxCt ); break;
+ }
+ break;
+
+ default:
+ /*
+ * More than one is required. Print the range.
+ */
+ fprintf( option_usage_fp, zMust, pOD->optMinCt, pOD->optMaxCt );
+ }
+
+ if ( NAMED_OPTS( pOptions )
+ && (pOptions->specOptIdx.default_opt == pOD->optIndex))
+ fputs( zDefaultOpt, option_usage_fp );
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Figure out where all the initialization files might live.
+ * This requires translating some environment variables and
+ * testing to see if a name is a directory or a file. It's
+ * squishy, but important to tell users how to find these files.
+ */
+static void
+printInitList(
+ tCC* const* papz,
+ ag_bool* pInitIntro,
+ tCC* pzRc,
+ tCC* pzPN )
+{
+ char zPath[ AG_PATH_MAX+1 ];
+
+ if (papz == NULL)
+ return;
+
+ fputs( zPresetIntro, option_usage_fp );
+ *pInitIntro = AG_FALSE;
+
+ for (;;) {
+ char const* pzPath = *(papz++);
+
+ if (pzPath == NULL)
+ break;
+
+ if (optionMakePath(zPath, (int)sizeof( zPath ), pzPath, pzPN))
+ pzPath = zPath;
+
+ /*
+ * Print the name of the "homerc" file. If the "rcfile" name is
+ * not empty, we may or may not print that, too...
+ */
+ fprintf( option_usage_fp, zPathFmt, pzPath );
+ if (*pzRc != NUL) {
+ struct stat sb;
+
+ /*
+ * IF the "homerc" file is a directory,
+ * then append the "rcfile" name.
+ */
+ if ( (stat( pzPath, &sb ) == 0)
+ && S_ISDIR( sb.st_mode ) ) {
+ fputc( DIRCH, option_usage_fp );
+ fputs( pzRc, option_usage_fp );
+ }
+ }
+
+ fputc( '\n', option_usage_fp );
+ }
+}
+
+
+/*
+ * Print the usage information for a single option.
+ */
+static void
+printOneUsage(
+ tOptions* pOptions,
+ tOptDesc* pOD,
+ arg_types_t* pAT )
+{
+ /*
+ * Flag prefix: IF no flags at all, then omit it. If not printable
+ * (not allowed for this option), then blank, else print it.
+ * Follow it with a comma if we are doing GNU usage and long
+ * opts are to be printed too.
+ */
+ if ((pOptions->fOptSet & OPTPROC_SHORTOPT) == 0)
+ fputs( pAT->pzSpc, option_usage_fp );
+ else if (! isgraph( pOD->optValue)) {
+ if ( (pOptions->fOptSet & (OPTPROC_GNUUSAGE|OPTPROC_LONGOPT))
+ == (OPTPROC_GNUUSAGE|OPTPROC_LONGOPT))
+ fputc( ' ', option_usage_fp );
+ fputs( pAT->pzNoF, option_usage_fp );
+ } else {
+ fprintf( option_usage_fp, " -%c", pOD->optValue );
+ if ( (pOptions->fOptSet & (OPTPROC_GNUUSAGE|OPTPROC_LONGOPT))
+ == (OPTPROC_GNUUSAGE|OPTPROC_LONGOPT))
+ fputs( ", ", option_usage_fp );
+ }
+
+ {
+ char z[ 80 ];
+ tCC* pzArgType;
+ /*
+ * Determine the argument type string first on its usage, then,
+ * when the option argument is required, base the type string on the
+ * argument type.
+ */
+ if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_NONE) {
+ pzArgType = pAT->pzNo;
+
+ } else if (pOD->fOptState & OPTST_ARG_OPTIONAL) {
+ pzArgType = pAT->pzOpt;
+
+ } else switch (OPTST_GET_ARGTYPE(pOD->fOptState)) {
+ case OPARG_TYPE_ENUMERATION: pzArgType = pAT->pzKey; break;
+ case OPARG_TYPE_MEMBERSHIP: pzArgType = pAT->pzKeyL; break;
+ case OPARG_TYPE_BOOLEAN: pzArgType = pAT->pzBool; break;
+ case OPARG_TYPE_NUMERIC: pzArgType = pAT->pzNum; break;
+ case OPARG_TYPE_HIERARCHY: pzArgType = pAT->pzNest; break;
+ case OPARG_TYPE_STRING: pzArgType = pAT->pzStr; break;
+ default: goto bogus_desc; break;
+ }
+
+ snprintf( z, sizeof(z), pAT->pzOptFmt, pzArgType, pOD->pz_Name,
+ (pOD->optMinCt != 0) ? pAT->pzReq : pAT->pzOpt );
+
+ fprintf( option_usage_fp, zOptFmtLine, z, pOD->pzText );
+
+ switch (OPTST_GET_ARGTYPE(pOD->fOptState)) {
+ case OPARG_TYPE_ENUMERATION:
+ case OPARG_TYPE_MEMBERSHIP:
+ displayEnum = (pOD->pOptProc != NULL) ? AG_TRUE : displayEnum;
+ }
+ }
+ return;
+
+ bogus_desc:
+ fprintf( stderr, zInvalOptDesc, pOD->pz_Name );
+ exit( EX_SOFTWARE );
+}
+
+
+/*
+ * Print out the usage information for just the options.
+ */
+static void
+printOptionUsage(
+ tOptions* pOpts,
+ int ex_code,
+ tCC* pOptTitle )
+{
+ int ct = pOpts->optCt;
+ int optNo = 0;
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int docCt = 0;
+
+ do {
+ if ((pOD->fOptState & OPTST_OMITTED) != 0)
+ continue;
+
+ if ((pOD->fOptState & OPTST_DOCUMENT) != 0) {
+ if (ex_code == EXIT_SUCCESS) {
+ fprintf(option_usage_fp, argTypes.pzBrk, pOD->pzText,
+ pOptTitle);
+ docCt++;
+ }
+
+ continue;
+ }
+
+ /*
+ * IF this is the first auto-opt maintained option
+ * *AND* we are doing a full help
+ * *AND* there are documentation options
+ * *AND* the last one was not a doc option,
+ * THEN document that the remaining options are not user opts
+ */
+ if ( (pOpts->presetOptCt == optNo)
+ && (ex_code == EXIT_SUCCESS)
+ && (docCt > 0)
+ && ((pOD[-1].fOptState & OPTST_DOCUMENT) == 0) )
+ fprintf( option_usage_fp, argTypes.pzBrk, zAuto, pOptTitle );
+
+ printOneUsage( pOpts, pOD, &argTypes );
+
+ /*
+ * IF we were invoked because of the --help option,
+ * THEN print all the extra info
+ */
+ if (ex_code == EXIT_SUCCESS)
+ printExtendedUsage( pOpts, pOD, &argTypes );
+
+ } while (pOD++, optNo++, (--ct > 0));
+
+ fputc( '\n', option_usage_fp );
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * PROGRAM DETAILS
+ */
+static void
+printProgramDetails( tOptions* pOptions )
+{
+ ag_bool initIntro = AG_TRUE;
+
+ /*
+ * Display all the places we look for config files
+ */
+ printInitList( pOptions->papzHomeList, &initIntro,
+ pOptions->pzRcName, pOptions->pzProgPath );
+
+ /*
+ * Let the user know about environment variable settings
+ */
+ if ((pOptions->fOptSet & OPTPROC_ENVIRON) != 0) {
+ if (initIntro)
+ fputs( zPresetIntro, option_usage_fp );
+
+ fprintf( option_usage_fp, zExamineFmt, pOptions->pzPROGNAME );
+ }
+
+ /*
+ * IF we found an enumeration,
+ * THEN hunt for it again. Call the handler proc with a NULL
+ * option struct pointer. That tells it to display the keywords.
+ */
+ if (displayEnum) {
+ int ct = pOptions->optCt;
+ int optNo = 0;
+ tOptDesc* pOD = pOptions->pOptDesc;
+
+ fputc( '\n', option_usage_fp );
+ fflush( option_usage_fp );
+ do {
+ switch (OPTST_GET_ARGTYPE(pOD->fOptState)) {
+ case OPARG_TYPE_ENUMERATION:
+ case OPARG_TYPE_MEMBERSHIP:
+ (*(pOD->pOptProc))( NULL, pOD );
+ }
+ } while (pOD++, optNo++, (--ct > 0));
+ }
+
+ /*
+ * If there is a detail string, now is the time for that.
+ */
+ if (pOptions->pzDetail != NULL)
+ fputs( pOptions->pzDetail, option_usage_fp );
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * OPTION LINE FORMATTING SETUP
+ *
+ * The "OptFmt" formats receive three arguments:
+ * 1. the type of the option's argument
+ * 2. the long name of the option
+ * 3. "YES" or "no ", depending on whether or not the option must appear
+ * on the command line.
+ * These formats are used immediately after the option flag (if used) has
+ * been printed.
+ *
+ * Set up the formatting for GNU-style output
+ */
+static int
+setGnuOptFmts( tOptions* pOpts, tCC** ppT )
+{
+ int flen = 22;
+ *ppT = zNoRq_ShrtTtl;
+
+ argTypes.pzStr = zGnuStrArg;
+ argTypes.pzReq = zOneSpace;
+ argTypes.pzNum = zGnuNumArg;
+ argTypes.pzKey = zGnuKeyArg;
+ argTypes.pzKeyL = zGnuKeyLArg;
+ argTypes.pzBool = zGnuBoolArg;
+ argTypes.pzNest = zGnuNestArg;
+ argTypes.pzOpt = zGnuOptArg;
+ argTypes.pzNo = zOneSpace;
+ argTypes.pzBrk = zGnuBreak;
+ argTypes.pzNoF = zSixSpaces;
+ argTypes.pzSpc = zThreeSpaces;
+
+ switch (pOpts->fOptSet & OPTPROC_L_N_S) {
+ case OPTPROC_L_N_S: argTypes.pzOptFmt = zGnuOptFmt; break;
+ case OPTPROC_LONGOPT: argTypes.pzOptFmt = zGnuOptFmt; break;
+ case 0: argTypes.pzOptFmt = zGnuOptFmt + 2; break;
+ case OPTPROC_SHORTOPT:
+ argTypes.pzOptFmt = zShrtGnuOptFmt;
+ zGnuStrArg[0] = zGnuNumArg[0] = zGnuKeyArg[0] = zGnuBoolArg[0] = ' ';
+ argTypes.pzOpt = " [arg]";
+ flen = 8;
+ break;
+ }
+
+ return flen;
+}
+
+
+/*
+ * Standard (AutoOpts normal) option line formatting
+ */
+static int
+setStdOptFmts( tOptions* pOpts, tCC** ppT )
+{
+ int flen = 0;
+
+ argTypes.pzStr = zStdStrArg;
+ argTypes.pzReq = zStdReqArg;
+ argTypes.pzNum = zStdNumArg;
+ argTypes.pzKey = zStdKeyArg;
+ argTypes.pzKeyL = zStdKeyLArg;
+ argTypes.pzBool = zStdBoolArg;
+ argTypes.pzNest = zStdNestArg;
+ argTypes.pzOpt = zStdOptArg;
+ argTypes.pzNo = zStdNoArg;
+ argTypes.pzBrk = zStdBreak;
+ argTypes.pzNoF = zFiveSpaces;
+ argTypes.pzSpc = zTwoSpaces;
+
+ switch (pOpts->fOptSet & (OPTPROC_NO_REQ_OPT | OPTPROC_SHORTOPT)) {
+ case (OPTPROC_NO_REQ_OPT | OPTPROC_SHORTOPT):
+ *ppT = zNoRq_ShrtTtl;
+ argTypes.pzOptFmt = zNrmOptFmt;
+ flen = 19;
+ break;
+
+ case OPTPROC_NO_REQ_OPT:
+ *ppT = zNoRq_NoShrtTtl;
+ argTypes.pzOptFmt = zNrmOptFmt;
+ flen = 19;
+ break;
+
+ case OPTPROC_SHORTOPT:
+ *ppT = zReq_ShrtTtl;
+ argTypes.pzOptFmt = zReqOptFmt;
+ flen = 24;
+ break;
+
+ case 0:
+ *ppT = zReq_NoShrtTtl;
+ argTypes.pzOptFmt = zReqOptFmt;
+ flen = 24;
+ }
+
+ return flen;
+}
+
+
+/*:
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/usage.c */
diff --git a/contrib/ntp/libopts/version.c b/contrib/ntp/libopts/version.c
new file mode 100644
index 0000000..85949d5
--- /dev/null
+++ b/contrib/ntp/libopts/version.c
@@ -0,0 +1,178 @@
+
+/* $Id: version.c,v 4.10 2007/04/28 22:19:23 bkorb Exp $
+ * Time-stamp: "2007-04-28 10:08:34 bkorb"
+ *
+ * This module implements the default usage procedure for
+ * Automated Options. It may be overridden, of course.
+ */
+
+static char const zAOV[] =
+ "Automated Options version %s, copyright (c) 1999-2007 Bruce Korb\n";
+
+/* Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+printVersion( tOptions* pOpts, tOptDesc* pOD, FILE* fp );
+/* = = = END-STATIC-FORWARD = = = */
+
+/*=export_func optionVersion
+ *
+ * what: return the compiled AutoOpts version number
+ * ret_type: char const*
+ * ret_desc: the version string in constant memory
+ * doc:
+ * Returns the full version string compiled into the library.
+ * The returned string cannot be modified.
+=*/
+char const*
+optionVersion( void )
+{
+ static char const zVersion[] =
+ STR( AO_CURRENT.AO_REVISION );
+
+ return zVersion;
+}
+
+
+static void
+printVersion( tOptions* pOpts, tOptDesc* pOD, FILE* fp )
+{
+ char swCh;
+
+ /*
+ * IF the optional argument flag is off, or the argument is not provided,
+ * then just print the version.
+ */
+ if ( ((pOD->fOptState & OPTST_ARG_OPTIONAL) == 0)
+ || (pOD->optArg.argString == NULL))
+ swCh = 'v';
+ else swCh = tolower(pOD->optArg.argString[0]);
+
+ if (pOpts->pzFullVersion != NULL) {
+ fputs( pOpts->pzFullVersion, fp );
+ fputc( '\n', fp );
+
+ } else {
+ char const *pz = pOpts->pzUsageTitle;
+ do { fputc(*pz, fp); } while (*(pz++) != '\n');
+ }
+
+ switch (swCh) {
+ case NUL: /* arg provided, but empty */
+ case 'v':
+ break;
+
+ case 'c':
+ if (pOpts->pzCopyright != NULL) {
+ fputs( pOpts->pzCopyright, fp );
+ fputc( '\n', fp );
+ }
+ fprintf( fp, zAOV, optionVersion() );
+ if (pOpts->pzBugAddr != NULL)
+ fprintf( fp, zPlsSendBugs, pOpts->pzBugAddr );
+ break;
+
+ case 'n':
+ if (pOpts->pzCopyright != NULL) {
+ fputs( pOpts->pzCopyright, fp );
+ fputc( '\n', fp );
+ fputc( '\n', fp );
+ }
+
+ if (pOpts->pzCopyNotice != NULL) {
+ fputs( pOpts->pzCopyNotice, fp );
+ fputc( '\n', fp );
+ }
+
+ fprintf( fp, zAOV, optionVersion() );
+ if (pOpts->pzBugAddr != NULL)
+ fprintf( fp, zPlsSendBugs, pOpts->pzBugAddr );
+ break;
+
+ default:
+ fprintf( stderr, zBadVerArg, swCh );
+ exit( EXIT_FAILURE );
+ }
+
+ exit( EXIT_SUCCESS );
+}
+
+/*=export_func optionPrintVersion
+ * private:
+ *
+ * what: Print the program version
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * This routine will print the version to stdout.
+=*/
+void
+optionPrintVersion( tOptions* pOpts, tOptDesc* pOD )
+{
+ printVersion( pOpts, pOD, stdout );
+}
+
+/*=export_func optionVersionStderr
+ * private:
+ *
+ * what: Print the program version to stderr
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * This routine will print the version to stderr.
+=*/
+void
+optionVersionStderr( tOptions* pOpts, tOptDesc* pOD )
+{
+ printVersion( pOpts, pOD, stderr );
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/version.c */
diff --git a/contrib/ntp/libparse/Makefile.am b/contrib/ntp/libparse/Makefile.am
index c972004..c2c4036 100644
--- a/contrib/ntp/libparse/Makefile.am
+++ b/contrib/ntp/libparse/Makefile.am
@@ -23,7 +23,11 @@ libparse_a_SOURCES = parse.c \
clk_varitext.c \
data_mbg.c \
info_trimble.c \
- trim_info.c
+ trim_info.c \
+ binio.c \
+ ieee754io.c \
+ mfp_mul.c \
+ gpstolfp.c
libparse_kernel_a_SOURCES =
libparse_kernel_a_LIBADD = kparse$U.o \
@@ -38,7 +42,12 @@ libparse_kernel_a_LIBADD = kparse$U.o \
kclk_trimtaip$U.o \
kclk_trimtsip$U.o \
kclk_varitext$U.o \
- kclk_wharton$U.o
+ kclk_wharton$U.o \
+ kbinio$U.o \
+ kieee754io$U.o \
+ kmfp_mul$U.o \
+ kgpstolfp$U.o
+
INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/kernel
ETAGS_ARGS = Makefile.am
@@ -53,6 +62,18 @@ info_trimble.c: $(top_srcdir)/include/trimble.h mkinfo_rcmd.sed mkinfo_scmd.sed
sed -n -f $(srcdir)/mkinfo_scmd.sed $(top_srcdir)/include/trimble.h > info_trimble.c || rm -f info_trimble.c
sed -n -f $(srcdir)/mkinfo_rcmd.sed $(top_srcdir)/include/trimble.h >> info_trimble.c || rm -f info_trimble.c
+kieee754io.o: ieee754io.c
+ $(COMPILE) $(K_CFLAGS) -c $(srcdir)/ieee754io.c -o $@
+
+kmfp_mul.o: mfp_mul.c
+ $(COMPILE) $(K_CFLAGS) -c $(srcdir)/mfp_mul.c -o $@
+
+kgpstolfp.o: gpstolfp.c
+ $(COMPILE) $(K_CFLAGS) -c $(srcdir)/gpstolfp.c -o $@
+
+kbinio.o: binio.c
+ $(COMPILE) $(K_CFLAGS) -c $(srcdir)/binio.c -o $@
+
kclk_computime.o: clk_computime.c
$(COMPILE) $(K_CFLAGS) -c $(srcdir)/clk_computime.c -o $@
diff --git a/contrib/ntp/libparse/Makefile.in b/contrib/ntp/libparse/Makefile.in
index e1e2a60..47ddec9 100644
--- a/contrib/ntp/libparse/Makefile.in
+++ b/contrib/ntp/libparse/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -14,6 +14,7 @@
@SET_MAKE@
+
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -21,7 +22,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +37,82 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+ANSI2KNR = ../util/ansi2knr
+EXTRA_PROGRAMS = parsestreams$(EXEEXT) parsesolaris$(EXEEXT)
+noinst_PROGRAMS = @MAKE_PARSEKMODULE@
+subdir = libparse
+DIST_COMMON = README $(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/hs_ulong_const.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 =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+libparse_a_AR = $(AR) $(ARFLAGS)
+libparse_a_LIBADD =
+am_libparse_a_OBJECTS = parse$U.$(OBJEXT) parse_conf$U.$(OBJEXT) \
+ clk_meinberg$U.$(OBJEXT) clk_schmid$U.$(OBJEXT) \
+ clk_rawdcf$U.$(OBJEXT) clk_trimtsip$U.$(OBJEXT) \
+ clk_dcf7000$U.$(OBJEXT) clk_trimtaip$U.$(OBJEXT) \
+ clk_rcc8000$U.$(OBJEXT) clk_hopf6021$U.$(OBJEXT) \
+ clk_computime$U.$(OBJEXT) clk_wharton$U.$(OBJEXT) \
+ clk_varitext$U.$(OBJEXT) data_mbg$U.$(OBJEXT) \
+ info_trimble$U.$(OBJEXT) trim_info$U.$(OBJEXT) \
+ binio$U.$(OBJEXT) ieee754io$U.$(OBJEXT) mfp_mul$U.$(OBJEXT) \
+ gpstolfp$U.$(OBJEXT)
+libparse_a_OBJECTS = $(am_libparse_a_OBJECTS)
+libparse_kernel_a_AR = $(AR) $(ARFLAGS)
+libparse_kernel_a_DEPENDENCIES = kparse$U.o kparse_conf$U.o \
+ kclk_computime$U.o kclk_dcf7000$U.o kclk_hopf6021$U.o \
+ kclk_meinberg$U.o kclk_rawdcf$U.o kclk_rcc8000$U.o \
+ kclk_schmid$U.o kclk_trimtaip$U.o kclk_trimtsip$U.o \
+ kclk_varitext$U.o kclk_wharton$U.o kbinio$U.o kieee754io$U.o \
+ kmfp_mul$U.o kgpstolfp$U.o
+am_libparse_kernel_a_OBJECTS =
+libparse_kernel_a_OBJECTS = $(am_libparse_kernel_a_OBJECTS)
+PROGRAMS = $(noinst_PROGRAMS)
+parsesolaris_SOURCES = parsesolaris.c
+parsesolaris_OBJECTS = parsesolaris$U.$(OBJEXT)
+parsesolaris_LDADD = $(LDADD)
+parsestreams_SOURCES = parsestreams.c
+parsestreams_OBJECTS = parsestreams$U.$(OBJEXT)
+parsestreams_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libparse_a_SOURCES) $(libparse_kernel_a_SOURCES) \
+ parsesolaris.c parsestreams.c
+DIST_SOURCES = $(libparse_a_SOURCES) $(libparse_kernel_a_SOURCES) \
+ parsesolaris.c parsestreams.c
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +120,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +136,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +191,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +226,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,22 +234,14 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
noinst_LIBRARIES = @MAKE_LIBPARSE@ @MAKE_LIBPARSE_KERNEL@
EXTRA_LIBRARIES = libparse.a libparse_kernel.a
-EXTRA_PROGRAMS = parsestreams parsesolaris
-noinst_PROGRAMS = @MAKE_PARSEKMODULE@
CLEANFILES = libparse.a libparse_kernel.a
-
K_CFLAGS = -DPARSESTREAM -DNTP_NEED_BOPS
-
libparse_a_SOURCES = parse.c \
parse_conf.c \
clk_meinberg.c \
@@ -177,8 +257,11 @@ libparse_a_SOURCES = parse.c \
clk_varitext.c \
data_mbg.c \
info_trimble.c \
- trim_info.c
-
+ trim_info.c \
+ binio.c \
+ ieee754io.c \
+ mfp_mul.c \
+ gpstolfp.c
libparse_kernel_a_SOURCES =
libparse_kernel_a_LIBADD = kparse$U.o \
@@ -193,94 +276,48 @@ libparse_kernel_a_LIBADD = kparse$U.o \
kclk_trimtaip$U.o \
kclk_trimtsip$U.o \
kclk_varitext$U.o \
- kclk_wharton$U.o
-
+ kclk_wharton$U.o \
+ kbinio$U.o \
+ kieee754io$U.o \
+ kmfp_mul$U.o \
+ kgpstolfp$U.o
INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/kernel
ETAGS_ARGS = Makefile.am
-
EXTRA_DIST = parsesolaris.c parsestreams.c mkinfo_scmd.sed mkinfo_rcmd.sed info_trimble.c
-subdir = libparse
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
-
-libparse_a_AR = $(AR) cru
-libparse_a_LIBADD =
-am_libparse_a_OBJECTS = parse$U.$(OBJEXT) parse_conf$U.$(OBJEXT) \
- clk_meinberg$U.$(OBJEXT) clk_schmid$U.$(OBJEXT) \
- clk_rawdcf$U.$(OBJEXT) clk_trimtsip$U.$(OBJEXT) \
- clk_dcf7000$U.$(OBJEXT) clk_trimtaip$U.$(OBJEXT) \
- clk_rcc8000$U.$(OBJEXT) clk_hopf6021$U.$(OBJEXT) \
- clk_computime$U.$(OBJEXT) clk_wharton$U.$(OBJEXT) \
- clk_varitext$U.$(OBJEXT) data_mbg$U.$(OBJEXT) \
- info_trimble$U.$(OBJEXT) trim_info$U.$(OBJEXT)
-libparse_a_OBJECTS = $(am_libparse_a_OBJECTS)
-libparse_kernel_a_AR = $(AR) cru
-libparse_kernel_a_DEPENDENCIES = kparse$U.o kparse_conf$U.o \
- kclk_computime$U.o kclk_dcf7000$U.o kclk_hopf6021$U.o \
- kclk_meinberg$U.o kclk_rawdcf$U.o kclk_rcc8000$U.o \
- kclk_schmid$U.o kclk_trimtaip$U.o kclk_trimtsip$U.o \
- kclk_varitext$U.o kclk_wharton$U.o
-am_libparse_kernel_a_OBJECTS =
-libparse_kernel_a_OBJECTS = $(am_libparse_kernel_a_OBJECTS)
-EXTRA_PROGRAMS = parsestreams$(EXEEXT) parsesolaris$(EXEEXT)
-noinst_PROGRAMS = @MAKE_PARSEKMODULE@
-PROGRAMS = $(noinst_PROGRAMS)
-
-parsesolaris_SOURCES = parsesolaris.c
-parsesolaris_OBJECTS = parsesolaris$U.$(OBJEXT)
-parsesolaris_LDADD = $(LDADD)
-parsesolaris_DEPENDENCIES =
-parsesolaris_LDFLAGS =
-parsestreams_SOURCES = parsestreams.c
-parsestreams_OBJECTS = parsestreams$U.$(OBJEXT)
-parsestreams_LDADD = $(LDADD)
-parsestreams_DEPENDENCIES =
-parsestreams_LDFLAGS =
-
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/clk_computime$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clk_dcf7000$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clk_hopf6021$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clk_meinberg$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clk_rawdcf$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clk_rcc8000$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clk_schmid$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clk_trimtaip$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clk_trimtsip$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clk_varitext$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/clk_wharton$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/data_mbg$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/info_trimble$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/parse$U.Po ./$(DEPDIR)/parse_conf$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/parsesolaris$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/parsestreams$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/trim_info$U.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = $(libparse_a_SOURCES) $(libparse_kernel_a_SOURCES) \
- parsesolaris.c parsestreams.c
-DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am
-SOURCES = $(libparse_a_SOURCES) $(libparse_kernel_a_SOURCES) parsesolaris.c parsestreams.c
-
all: all-am
.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+.SUFFIXES: .c .lo .o .obj
+$(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 libparse/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu libparse/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-AR = ar
+ $(AUTOMAKE) --foreign libparse/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
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
@@ -294,7 +331,11 @@ libparse_kernel.a: $(libparse_kernel_a_OBJECTS) $(libparse_kernel_a_DEPENDENCIES
$(RANLIB) libparse_kernel.a
clean-noinstPROGRAMS:
- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
parsesolaris$(EXEEXT): $(parsesolaris_OBJECTS) $(parsesolaris_DEPENDENCIES)
@rm -f parsesolaris$(EXEEXT)
$(LINK) $(parsesolaris_LDFLAGS) $(parsesolaris_OBJECTS) $(parsesolaris_LDADD) $(LIBS)
@@ -303,18 +344,17 @@ parsestreams$(EXEEXT): $(parsestreams_OBJECTS) $(parsestreams_DEPENDENCIES)
$(LINK) $(parsestreams_LDFLAGS) $(parsestreams_OBJECTS) $(parsestreams_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-
-ANSI2KNR = ../util/ansi2knr
../util/ansi2knr:
cd ../util && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
mostlyclean-kr:
-test "$U" = "" || rm -f *_.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binio$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clk_computime$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clk_dcf7000$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clk_hopf6021$U.Po@am__quote@
@@ -327,7 +367,10 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clk_varitext$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clk_wharton$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data_mbg$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpstolfp$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ieee754io$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/info_trimble$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mfp_mul$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse_conf$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parsesolaris$U.Po@am__quote@
@@ -335,26 +378,27 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trim_info$U.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+binio_.c: binio.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/binio.c; then echo $(srcdir)/binio.c; else echo binio.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
clk_computime_.c: clk_computime.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/clk_computime.c; then echo $(srcdir)/clk_computime.c; else echo clk_computime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
clk_dcf7000_.c: clk_dcf7000.c $(ANSI2KNR)
@@ -379,8 +423,14 @@ clk_wharton_.c: clk_wharton.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/clk_wharton.c; then echo $(srcdir)/clk_wharton.c; else echo clk_wharton.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
data_mbg_.c: data_mbg.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/data_mbg.c; then echo $(srcdir)/data_mbg.c; else echo data_mbg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+gpstolfp_.c: gpstolfp.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/gpstolfp.c; then echo $(srcdir)/gpstolfp.c; else echo gpstolfp.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+ieee754io_.c: ieee754io.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ieee754io.c; then echo $(srcdir)/ieee754io.c; else echo ieee754io.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
info_trimble_.c: info_trimble.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/info_trimble.c; then echo $(srcdir)/info_trimble.c; else echo info_trimble.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+mfp_mul_.c: mfp_mul.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/mfp_mul.c; then echo $(srcdir)/mfp_mul.c; else echo mfp_mul.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
parse_.c: parse.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/parse.c; then echo $(srcdir)/parse.c; else echo parse.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
parse_conf_.c: parse_conf.c $(ANSI2KNR)
@@ -391,23 +441,31 @@ parsestreams_.c: parsestreams.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/parsestreams.c; then echo $(srcdir)/parsestreams.c; else echo parsestreams.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
trim_info_.c: trim_info.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/trim_info.c; then echo $(srcdir)/trim_info.c; else echo trim_info.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-clk_computime_.$(OBJEXT) clk_dcf7000_.$(OBJEXT) clk_hopf6021_.$(OBJEXT) \
-clk_meinberg_.$(OBJEXT) clk_rawdcf_.$(OBJEXT) clk_rcc8000_.$(OBJEXT) \
-clk_schmid_.$(OBJEXT) clk_trimtaip_.$(OBJEXT) clk_trimtsip_.$(OBJEXT) \
-clk_varitext_.$(OBJEXT) clk_wharton_.$(OBJEXT) data_mbg_.$(OBJEXT) \
-info_trimble_.$(OBJEXT) parse_.$(OBJEXT) parse_conf_.$(OBJEXT) \
-parsesolaris_.$(OBJEXT) parsestreams_.$(OBJEXT) trim_info_.$(OBJEXT) : \
-$(ANSI2KNR)
+binio_.$(OBJEXT) binio_.lo clk_computime_.$(OBJEXT) clk_computime_.lo \
+clk_dcf7000_.$(OBJEXT) clk_dcf7000_.lo clk_hopf6021_.$(OBJEXT) \
+clk_hopf6021_.lo clk_meinberg_.$(OBJEXT) clk_meinberg_.lo \
+clk_rawdcf_.$(OBJEXT) clk_rawdcf_.lo clk_rcc8000_.$(OBJEXT) \
+clk_rcc8000_.lo clk_schmid_.$(OBJEXT) clk_schmid_.lo \
+clk_trimtaip_.$(OBJEXT) clk_trimtaip_.lo clk_trimtsip_.$(OBJEXT) \
+clk_trimtsip_.lo clk_varitext_.$(OBJEXT) clk_varitext_.lo \
+clk_wharton_.$(OBJEXT) clk_wharton_.lo data_mbg_.$(OBJEXT) \
+data_mbg_.lo gpstolfp_.$(OBJEXT) gpstolfp_.lo ieee754io_.$(OBJEXT) \
+ieee754io_.lo info_trimble_.$(OBJEXT) info_trimble_.lo \
+mfp_mul_.$(OBJEXT) mfp_mul_.lo parse_.$(OBJEXT) parse_.lo \
+parse_conf_.$(OBJEXT) parse_conf_.lo parsesolaris_.$(OBJEXT) \
+parsesolaris_.lo parsestreams_.$(OBJEXT) parsestreams_.lo \
+trim_info_.$(OBJEXT) trim_info_.lo : $(ANSI2KNR)
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
uninstall-info-am:
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -416,6 +474,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -427,10 +486,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -453,10 +513,6 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -470,7 +526,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -488,7 +544,6 @@ distdir: $(DISTFILES)
check-am: all-am
check: check-am
all-am: Makefile $(LIBRARIES) $(PROGRAMS)
-
installdirs:
install: install-am
install-exec: install-exec-am
@@ -501,7 +556,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -510,27 +565,28 @@ clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -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-noinstLIBRARIES clean-noinstPROGRAMS \
- mostlyclean-am
+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
+ clean-noinstPROGRAMS mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+ distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
@@ -548,12 +604,12 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool
pdf: pdf-am
@@ -566,15 +622,16 @@ ps-am:
uninstall-am: uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-noinstLIBRARIES clean-noinstPROGRAMS ctags distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am info info-am install install-am install-data \
+ clean-libtool clean-noinstLIBRARIES clean-noinstPROGRAMS ctags \
+ distclean distclean-compile 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-compile \
- mostlyclean-generic mostlyclean-kr pdf pdf-am ps ps-am tags \
- uninstall uninstall-am uninstall-info-am
+ mostlyclean-generic mostlyclean-kr mostlyclean-libtool pdf \
+ pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am
#
@@ -585,6 +642,18 @@ info_trimble.c: $(top_srcdir)/include/trimble.h mkinfo_rcmd.sed mkinfo_scmd.sed
sed -n -f $(srcdir)/mkinfo_scmd.sed $(top_srcdir)/include/trimble.h > info_trimble.c || rm -f info_trimble.c
sed -n -f $(srcdir)/mkinfo_rcmd.sed $(top_srcdir)/include/trimble.h >> info_trimble.c || rm -f info_trimble.c
+kieee754io.o: ieee754io.c
+ $(COMPILE) $(K_CFLAGS) -c $(srcdir)/ieee754io.c -o $@
+
+kmfp_mul.o: mfp_mul.c
+ $(COMPILE) $(K_CFLAGS) -c $(srcdir)/mfp_mul.c -o $@
+
+kgpstolfp.o: gpstolfp.c
+ $(COMPILE) $(K_CFLAGS) -c $(srcdir)/gpstolfp.c -o $@
+
+kbinio.o: binio.c
+ $(COMPILE) $(K_CFLAGS) -c $(srcdir)/binio.c -o $@
+
kclk_computime.o: clk_computime.c
$(COMPILE) $(K_CFLAGS) -c $(srcdir)/clk_computime.c -o $@
diff --git a/contrib/ntp/libparse/README b/contrib/ntp/libparse/README
index 3484f9a..ac77054 100644
--- a/contrib/ntp/libparse/README
+++ b/contrib/ntp/libparse/README
@@ -31,9 +31,9 @@ SunOS (SunOS4 and SunOS5).
The structure of the parse reference clock driver is as follows:
- xntpd - contains NTP implementation and calls a reference clock
+ ntpd - contains NTP implementation and calls a reference clock
127.127.8.x which is implemented by
- refclock_parse.c
+ refclock_parse.c
- which contains several refclock decriptions. These are
selected by the x part of the refclock address.
The lower two bits specify the device to use. Thus the
diff --git a/contrib/ntp/libntp/binio.c b/contrib/ntp/libparse/binio.c
index bbaf06f..2f8546b 100644
--- a/contrib/ntp/libntp/binio.c
+++ b/contrib/ntp/libparse/binio.c
@@ -1,9 +1,36 @@
/*
- * /src/NTP/ntp-4/libntp/binio.c,v 4.2 1999/02/21 12:17:34 kardel RELEASE_19990228_A
+ * /src/NTP/ntp4-dev/libntp/binio.c,v 4.5 2005/04/16 17:32:10 kardel RELEASE_20050508_A
+ *
+ * binio.c,v 4.5 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* $Created: Sun Jul 20 12:55:33 1997 $
*
- * Copyright (C) 1997, 1998 by Frank Kardel
+ * Copyright (c) 1997-2005 by Frank Kardel <kardel <AT> ntp.org>
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#include "binio.h"
diff --git a/contrib/ntp/libparse/clk_computime.c b/contrib/ntp/libparse/clk_computime.c
index 3312b3f..d0db6a9 100644
--- a/contrib/ntp/libparse/clk_computime.c
+++ b/contrib/ntp/libparse/clk_computime.c
@@ -4,9 +4,9 @@
#if defined(REFCLOCK) && defined(CLOCK_PARSE) && defined(CLOCK_COMPUTIME)
/*
- * /src/NTP/ntp-4/libparse/clk_computime.c,v 4.6 1999/11/28 09:13:49 kardel RELEASE_19991128_A
+ * /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.6 1999/11/28 09:13:49 kardel RELEASE_19991128_A
+ * clk_computime.c,v 4.10 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* Supports Diem's Computime Radio Clock
*
@@ -14,13 +14,33 @@
*
* adapted by Alois Camenzind <alois.camenzind@ubs.ch>
*
- * Copyright (C) 1992-1998 by Frank Kardel
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
- *
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#include "ntp_fp.h"
@@ -167,6 +187,12 @@ int clk_computime_bs;
/*
* clk_computime.c,v
+ * Revision 4.10 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.9 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.6 1999/11/28 09:13:49 kardel
* RECON_4_0_98F
*
diff --git a/contrib/ntp/libparse/clk_dcf7000.c b/contrib/ntp/libparse/clk_dcf7000.c
index 30506c5..e481731 100644
--- a/contrib/ntp/libparse/clk_dcf7000.c
+++ b/contrib/ntp/libparse/clk_dcf7000.c
@@ -1,16 +1,36 @@
/*
- * /src/NTP/ntp-4/libparse/clk_dcf7000.c,v 4.6 1999/11/28 09:13:49 kardel RELEASE_19991128_A
+ * /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.6 1999/11/28 09:13:49 kardel RELEASE_19991128_A
+ * clk_dcf7000.c,v 4.10 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* ELV DCF7000 module
*
- * Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998 by Frank Kardel
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
*/
@@ -162,6 +182,12 @@ int clk_dcf7000_bs;
* History:
*
* clk_dcf7000.c,v
+ * Revision 4.10 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.9 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.6 1999/11/28 09:13:49 kardel
* RECON_4_0_98F
*
diff --git a/contrib/ntp/libparse/clk_hopf6021.c b/contrib/ntp/libparse/clk_hopf6021.c
index b2d53cd..426ea48 100644
--- a/contrib/ntp/libparse/clk_hopf6021.c
+++ b/contrib/ntp/libparse/clk_hopf6021.c
@@ -1,7 +1,7 @@
/*
- * /src/NTP/ntp-4/libparse/clk_hopf6021.c,v 4.7 1999/11/28 09:13:49 kardel RELEASE_19991128_A
+ * /src/NTP/ntp4-dev/libparse/clk_hopf6021.c,v 4.10 2004/11/14 15:29:41 kardel RELEASE_20050508_A
*
- * clk_hopf6021.c,v 4.7 1999/11/28 09:13:49 kardel RELEASE_19991128_A
+ * clk_hopf6021.c,v 4.10 2004/11/14 15:29:41 kardel RELEASE_20050508_A
*
* Radiocode Clocks HOPF Funkuhr 6021 mit serieller Schnittstelle
* base code version from 24th Nov 1995 - history at end
@@ -251,6 +251,9 @@ int clk_hopf6021_bs;
* History:
*
* clk_hopf6021.c,v
+ * Revision 4.10 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.7 1999/11/28 09:13:49 kardel
* RECON_4_0_98F
*
diff --git a/contrib/ntp/libparse/clk_meinberg.c b/contrib/ntp/libparse/clk_meinberg.c
index 87c7fde..90bb886 100644
--- a/contrib/ntp/libparse/clk_meinberg.c
+++ b/contrib/ntp/libparse/clk_meinberg.c
@@ -1,16 +1,36 @@
/*
- * /src/NTP/ntp-4/libparse/clk_meinberg.c,v 4.8 1999/11/28 09:13:50 kardel RELEASE_19991128_A
+ * /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.8 1999/11/28 09:13:50 kardel RELEASE_19991128_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-1999 by Frank Kardel <kardel@acm.org>
- * Copyright (C) 1992-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
*/
@@ -626,7 +646,7 @@ gps_input(
msg_buf->phase = MBG_NONE; /* buffer overflow - discard */
parseio->parse_data[parseio->parse_index] = '\0';
memcpy(parseio->parse_ldata, parseio->parse_data, (unsigned)(parseio->parse_index+1));
- parseio->parse_ldsize = parseio->parse_index+1;
+ parseio->parse_ldsize = parseio->parse_index;
return PARSE_INP_DATA;
}
@@ -650,7 +670,7 @@ gps_input(
parseprintf(DD_PARSE, ("gps_input: string complete\n"));
parseio->parse_data[parseio->parse_index] = '\0';
memcpy(parseio->parse_ldata, parseio->parse_data, (unsigned)(parseio->parse_index+1));
- parseio->parse_ldsize = parseio->parse_index+1;
+ parseio->parse_ldsize = parseio->parse_index;
parseio->parse_index = 0;
return PARSE_INP_TIME;
}
@@ -715,6 +735,15 @@ int clk_meinberg_bs;
* History:
*
* clk_meinberg.c,v
+ * Revision 4.12.2.1 2005/09/25 10:22:35 kardel
+ * cleanup buffer bounds
+ *
+ * Revision 4.12 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.11 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.8 1999/11/28 09:13:50 kardel
* RECON_4_0_98F
*
diff --git a/contrib/ntp/libparse/clk_rawdcf.c b/contrib/ntp/libparse/clk_rawdcf.c
index 40ec8ad..3ef36c4 100644
--- a/contrib/ntp/libparse/clk_rawdcf.c
+++ b/contrib/ntp/libparse/clk_rawdcf.c
@@ -1,16 +1,36 @@
/*
- * /src/NTP/ntp-4/libparse/clk_rawdcf.c,v 4.9 1999/12/06 13:42:23 kardel Exp
+ * /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.9 1999/12/06 13:42:23 kardel Exp
+ * clk_rawdcf.c,v 4.18 2006/06/22 18:40:01 kardel RELEASE_20060622_A
*
* Raw DCF77 pulse clock support
*
- * Copyright (C) 1992-1998 by Frank Kardel
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2006 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
*/
@@ -89,6 +109,8 @@ typedef struct last_tcode {
time_t tcode; /* last converted time code */
} last_tcode_t;
+#define BUFFER_MAX 61
+
clockformat_t clock_rawdcf =
{
inp_rawdcf, /* DCF77 input handling */
@@ -97,18 +119,18 @@ clockformat_t clock_rawdcf =
0, /* no private configuration data */
"RAW DCF77 Timecode", /* direct decoding / time synthesis */
- 61, /* bit buffer */
+ BUFFER_MAX, /* bit buffer */
sizeof(last_tcode_t)
};
static struct dcfparam
{
- unsigned char onebits[60];
- unsigned char zerobits[60];
+ unsigned char *onebits;
+ unsigned char *zerobits;
} dcfparameter =
{
- "###############RADMLS1248124P124812P1248121241248112481248P", /* 'ONE' representation */
- "--------------------s-------p------p----------------------p" /* 'ZERO' representation */
+ (unsigned char *)"###############RADMLS1248124P124812P1248121241248112481248P??", /* 'ONE' representation */
+ (unsigned char *)"--------------------s-------p------p----------------------p__" /* 'ZERO' representation */
};
static struct rawdcfcode
@@ -158,13 +180,13 @@ static struct partab
static u_long
ext_bf(
- register unsigned char *buf,
- register int idx,
- register unsigned char *zero
+ unsigned char *buf,
+ int idx,
+ unsigned char *zero
)
{
- register u_long sum = 0;
- register int i, first;
+ u_long sum = 0;
+ int i, first;
first = rawdcfcode[idx].offset;
@@ -202,10 +224,10 @@ convert_rawdcf(
clocktime_t *clock_time
)
{
- register unsigned char *s = buffer;
- register unsigned char *b = dcfprm->onebits;
- register unsigned char *c = dcfprm->zerobits;
- register int i;
+ unsigned char *s = buffer;
+ unsigned char *b = dcfprm->onebits;
+ unsigned char *c = dcfprm->zerobits;
+ int i;
parseprintf(DD_RAWDCF,("parse: convert_rawdcf: \"%s\"\n", buffer));
@@ -217,7 +239,7 @@ convert_rawdcf(
return CVT_NONE;
}
- for (i = 0; i < 58; i++)
+ for (i = 0; i < size; i++)
{
if ((*s != *b) && (*s != *c))
{
@@ -225,15 +247,15 @@ convert_rawdcf(
* we only have two types of bytes (ones and zeros)
*/
#ifndef PARSEKERNEL
- msyslog(LOG_ERR, "parse: convert_rawdcf: BAD DATA - no conversion for \"%s\"\n", buffer);
+ msyslog(LOG_ERR, "parse: convert_rawdcf: BAD DATA - no conversion");
#endif
return CVT_NONE;
}
- b++;
- c++;
+ if (*b) b++;
+ if (*c) c++;
s++;
}
-
+
/*
* check Start and Parity bits
*/
@@ -317,13 +339,13 @@ cvt_rawdcf(
void *local
)
{
- last_tcode_t *t = (last_tcode_t *)local;
- register unsigned char *s = (unsigned char *)buffer;
- register unsigned char *e = s + size;
- register unsigned char *b = dcfparameter.onebits;
- register unsigned char *c = dcfparameter.zerobits;
- u_long rtc = CVT_NONE;
- register unsigned int i, lowmax, highmax, cutoff, span;
+ 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;
+ u_long rtc = CVT_NONE;
+ unsigned int i, lowmax, highmax, cutoff, span;
#define BITS 9
unsigned char histbuf[BITS];
/*
@@ -345,7 +367,7 @@ cvt_rawdcf(
while (s < e)
{
- register unsigned int ch = *s ^ 0xFF;
+ unsigned int ch = *s ^ 0xFF;
/*
* these lines are left as an excercise to the reader 8-)
*/
@@ -445,7 +467,7 @@ cvt_rawdcf(
parseprintf(DD_RAWDCF,("parse: cvt_rawdcf: lower maximum %d, higher maximum %d, cutoff %d\n", lowmax, highmax, cutoff));
s = (unsigned char *)buffer;
- while ((s < e) && *c && *b)
+ while (s < e)
{
if (*s == (unsigned char)~0)
{
@@ -456,8 +478,8 @@ cvt_rawdcf(
*s = (*s >= cutoff) ? *b : *c;
}
s++;
- b++;
- c++;
+ if (*b) b++;
+ if (*c) c++;
}
if (rtc == CVT_NONE)
@@ -495,9 +517,9 @@ cvt_rawdcf(
/*ARGSUSED*/
static u_long
pps_rawdcf(
- register parse_t *parseio,
- register int status,
- register timestamp_t *ptime
+ parse_t *parseio,
+ int status,
+ timestamp_t *ptime
)
{
if (!status) /* negative edge for simpler wiring (Rx->DCD) */
@@ -511,8 +533,8 @@ pps_rawdcf(
static u_long
snt_rawdcf(
- register parse_t *parseio,
- register timestamp_t *ptime
+ parse_t *parseio,
+ timestamp_t *ptime
)
{
if ((parseio->parse_dtime.parse_status & CVT_MASK) == CVT_OK)
@@ -535,7 +557,7 @@ snt_rawdcf(
/*
* inp_rawdcf
*
- * grep DCF77 data from input stream
+ * grab DCF77 data from input stream
*/
static u_long
inp_rawdcf(
@@ -580,6 +602,27 @@ int clk_rawdcf_bs;
* History:
*
* clk_rawdcf.c,v
+ * Revision 4.18 2006/06/22 18:40:01 kardel
+ * clean up signedness (gcc 4)
+ *
+ * Revision 4.17 2006/01/22 16:01:55 kardel
+ * update version information
+ *
+ * Revision 4.16 2006/01/22 15:51:22 kardel
+ * generate reasonable timecode output on invalid input
+ *
+ * Revision 4.15 2005/08/06 19:17:06 kardel
+ * clean log output
+ *
+ * Revision 4.14 2005/08/06 17:39:40 kardel
+ * cleanup size handling wrt/ to buffer boundaries
+ *
+ * Revision 4.13 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.12 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.9 1999/12/06 13:42:23 kardel
* transfer correctly converted time codes always into tcode
*
diff --git a/contrib/ntp/libparse/clk_rcc8000.c b/contrib/ntp/libparse/clk_rcc8000.c
index 23e6763..9ce270d 100644
--- a/contrib/ntp/libparse/clk_rcc8000.c
+++ b/contrib/ntp/libparse/clk_rcc8000.c
@@ -1,7 +1,7 @@
/*
- * /src/NTP/ntp-4/libparse/clk_rcc8000.c,v 4.6 1999/11/28 09:13:51 kardel RELEASE_19991128_A
+ * /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.6 1999/11/28 09:13:51 kardel RELEASE_19991128_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
*
@@ -169,6 +169,9 @@ int clk_rcc8000_bs;
* History:
*
* clk_rcc8000.c,v
+ * Revision 4.9 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.6 1999/11/28 09:13:51 kardel
* RECON_4_0_98F
*
diff --git a/contrib/ntp/libparse/clk_schmid.c b/contrib/ntp/libparse/clk_schmid.c
index 52c0ef4..4f48201 100644
--- a/contrib/ntp/libparse/clk_schmid.c
+++ b/contrib/ntp/libparse/clk_schmid.c
@@ -1,16 +1,37 @@
/*
- * /src/NTP/ntp-4/libparse/clk_schmid.c,v 4.5 1999/11/28 09:13:51 kardel RELEASE_19991128_A
+ * /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.5 1999/11/28 09:13:51 kardel RELEASE_19991128_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) 1992-1998 by Frank Kardel
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
*/
@@ -208,6 +229,12 @@ int clk_schmid_bs;
* History:
*
* clk_schmid.c,v
+ * Revision 4.9 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.8 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.5 1999/11/28 09:13:51 kardel
* RECON_4_0_98F
*
diff --git a/contrib/ntp/libparse/clk_trimtaip.c b/contrib/ntp/libparse/clk_trimtaip.c
index 4453e2b..67db471 100644
--- a/contrib/ntp/libparse/clk_trimtaip.c
+++ b/contrib/ntp/libparse/clk_trimtaip.c
@@ -1,9 +1,37 @@
/*
- * /src/NTP/ntp-4/libparse/clk_trimtaip.c,v 4.7 1999/11/28 09:13:51 kardel RELEASE_19991128_A
+ * /src/NTP/ntp4-dev/libparse/clk_trimtaip.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
- * clk_trimtaip.c,v 4.7 1999/11/28 09:13:51 kardel RELEASE_19991128_A
+ * clk_trimtaip.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* Trimble SV6 clock support - several collected codepieces
+ *
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#ifdef HAVE_CONFIG_H
@@ -159,6 +187,12 @@ int clk_trimtaip_bs;
* History:
*
* clk_trimtaip.c,v
+ * Revision 4.11 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.10 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.7 1999/11/28 09:13:51 kardel
* RECON_4_0_98F
*
diff --git a/contrib/ntp/libparse/clk_trimtsip.c b/contrib/ntp/libparse/clk_trimtsip.c
index 4e1d983..be97b74 100644
--- a/contrib/ntp/libparse/clk_trimtsip.c
+++ b/contrib/ntp/libparse/clk_trimtsip.c
@@ -1,9 +1,38 @@
/*
- * /src/NTP/ntp-4/libparse/clk_trimtsip.c,v 4.13 1999/11/28 09:13:51 kardel RELEASE_19991128_A
+ * /src/NTP/ntp4-dev/libparse/clk_trimtsip.c,v 4.17 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
- * clk_trimtsip.c,v 4.13 1999/11/28 09:13:51 kardel RELEASE_19991128_A
+ * clk_trimtsip.c,v 4.17 2005/04/16 17:32:10 kardel RELEASE_20050508_A
+ *
+ * Trimble TSIP support
+ * Thanks to Sven Dietrich for providing test hardware
+ *
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
- * Trimble TSIP support - CURRENTLY VERY MUCH UNDER CONSTRUCTION
*/
#ifdef HAVE_CONFIG_H
@@ -369,6 +398,12 @@ int clk_trimtsip_bs;
* History:
*
* clk_trimtsip.c,v
+ * Revision 4.17 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.16 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.13 1999/11/28 09:13:51 kardel
* RECON_4_0_98F
*
diff --git a/contrib/ntp/libparse/clk_varitext.c b/contrib/ntp/libparse/clk_varitext.c
index 8019e0e..01b8719 100644
--- a/contrib/ntp/libparse/clk_varitext.c
+++ b/contrib/ntp/libparse/clk_varitext.c
@@ -4,19 +4,44 @@
#if defined(REFCLOCK) && defined(CLOCK_PARSE) && defined(CLOCK_VARITEXT)
/*
- * clk_varitext.c,v 1.0 1997/01/19 A.McConnell
+ * /src/NTP/ntp4-dev/libparse/clk_varitext.c,v 1.5 2005/04/16 17:32:10 kardel RELEASE_20050508_A
+ *
+ * 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
*
- * Copyright (C) 1992-1996 by Frank Kardel
- * Friedrich-Alexander Universitt Erlangen-Nrnberg, Germany
- *
- * 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.
- *
+ * Codebase:
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#include "ntp_fp.h"
@@ -230,6 +255,16 @@ int clk_varitext_bs;
#endif /* not (REFCLOCK && CLOCK_PARSE && CLOCK_VARITEXT) */
/*
+ * History:
+ *
+ * clk_varitext.c,v
+ * Revision 1.5 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 1.4 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
+ *
* Revision 1.0 1997/06/02 13:16:30 McConnell
* File created
*
diff --git a/contrib/ntp/libparse/clk_wharton.c b/contrib/ntp/libparse/clk_wharton.c
index 6dfc971..b4332fb 100644
--- a/contrib/ntp/libparse/clk_wharton.c
+++ b/contrib/ntp/libparse/clk_wharton.c
@@ -1,7 +1,7 @@
/*
- * /src/NTP/ntp-4/libparse/clk_wharton.c,v 4.1 1999/02/28 15:27:24 kardel RELEASE_19990228_A
+ * /src/NTP/ntp4-dev/libparse/clk_wharton.c,v 4.2 2004/11/14 15:29:41 kardel RELEASE_20050508_A
*
- * clk_wharton.c,v 4.1 1999/02/28 15:27:24 kardel RELEASE_19990228_A
+ * clk_wharton.c,v 4.2 2004/11/14 15:29:41 kardel RELEASE_20050508_A
*
* From Philippe De Muyter <phdm@macqel.be>, 1999
*/
diff --git a/contrib/ntp/libparse/data_mbg.c b/contrib/ntp/libparse/data_mbg.c
index 2545b98..9b6f1aa 100644
--- a/contrib/ntp/libparse/data_mbg.c
+++ b/contrib/ntp/libparse/data_mbg.c
@@ -1,9 +1,36 @@
/*
- * /src/NTP/ntp-4/libparse/data_mbg.c,v 4.3 1999/02/21 12:17:42 kardel RELEASE_19991128_A
+ * /src/NTP/REPOSITORY/ntp4-dev/libparse/data_mbg.c,v 4.8 2006/06/22 18:40:01 kardel RELEASE_20060622_A
+ *
+ * data_mbg.c,v 4.8 2006/06/22 18:40:01 kardel RELEASE_20060622_A
*
* $Created: Sun Jul 20 12:08:14 1997 $
*
- * Copyright (C) 1997, 1998 by Frank Kardel
+ * Copyright (c) 1997-2005 by Frank Kardel <kardel <AT> ntp.org>
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#ifdef PARSESTREAM
@@ -20,7 +47,7 @@
#include "ieee754io.h"
static void get_mbg_tzname P((unsigned char **, char *));
-static void mbg_time_status_str P((unsigned char **, unsigned int));
+static void mbg_time_status_str P((char **, unsigned int, int));
#if 0 /* no actual floats on Meinberg binary interface */
static offsets_t mbg_float = { 1, 0, 3, 2, 0, 0, 0, 0 }; /* byte order for meinberg floats */
@@ -181,75 +208,81 @@ get_mbg_antinfo(
static void
mbg_time_status_str(
- unsigned char **buffpp,
- unsigned int status
+ char **buffpp,
+ unsigned int status,
+ int size
)
{
- static struct state
- {
- int flag; /* bit flag */
- const char *string; /* bit name */
- } states[] =
- {
- { TM_UTC, "UTC CORR" },
- { TM_LOCAL, "LOCAL TIME" },
- { TM_DL_ANN, "DST WARN" },
- { TM_DL_ENB, "DST" },
- { TM_LS_ANN, "LEAP WARN" },
- { TM_LS_ENB, "LEAP SEC" },
- { 0, "" }
- };
-
- if (status)
- {
- unsigned char *p;
- struct state *s;
+ static struct state
+ {
+ int flag; /* bit flag */
+ const char *string; /* bit name */
+ } states[] =
+ {
+ { TM_UTC, "UTC CORR" },
+ { TM_LOCAL, "LOCAL TIME" },
+ { TM_DL_ANN, "DST WARN" },
+ { TM_DL_ENB, "DST" },
+ { TM_LS_ANN, "LEAP WARN" },
+ { TM_LS_ENB, "LEAP SEC" },
+ { 0, "" }
+ };
+
+ if (status)
+ {
+ char *start, *p;
+ struct state *s;
- p = *buffpp;
+ start = p = *buffpp;
- for (s = states; s->flag; s++)
- {
- if (s->flag & status)
- {
- if (p != *buffpp)
+ for (s = states; s->flag; s++)
{
- *p++ = ',';
- *p++ = ' ';
+ if (s->flag & status)
+ {
+ if (p != *buffpp)
+ {
+ strncpy(p, ", ", size - (p - start));
+ p += 2;
+ }
+ strncpy(p, s->string, size - (p - start));
+ p += strlen(p);
+ }
}
- strcpy((char *)p, s->string);
- p += strlen((char *)p);
- }
+ *buffpp = p;
}
- *buffpp = p;
- }
}
void
mbg_tm_str(
- unsigned char **buffpp,
- TM *tmp
+ char **buffpp,
+ TM *tmp,
+ int size
)
{
- sprintf((char *)*buffpp, "%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->offs_from_utc < 0) ? '-' : '+',
- abs(tmp->offs_from_utc) / 3600,
- (abs(tmp->offs_from_utc) / 60) % 60);
- *buffpp += strlen((char *)*buffpp);
- mbg_time_status_str(buffpp, tmp->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->offs_from_utc < 0) ? '-' : '+',
+ abs(tmp->offs_from_utc) / 3600,
+ (abs(tmp->offs_from_utc) / 60) % 60);
+ *buffpp += strlen(*buffpp);
+
+ mbg_time_status_str(buffpp, tmp->status, size - (*buffpp - s));
}
void
mbg_tgps_str(
- unsigned char **buffpp,
- T_GPS *tgpsp
+ char **buffpp,
+ T_GPS *tgpsp,
+ int size
)
{
- sprintf((char *)*buffpp, "week %d + %ld days + %ld.%07ld sec",
- tgpsp->wn, tgpsp->sec / 86400,
- tgpsp->sec % 86400, tgpsp->tick);
- *buffpp += strlen((char *)*buffpp);
+ snprintf(*buffpp, size, "week %d + %ld days + %ld.%07ld sec",
+ tgpsp->wn, tgpsp->sec / 86400,
+ tgpsp->sec % 86400, tgpsp->tick);
+ *buffpp += strlen(*buffpp);
}
void
@@ -475,6 +508,21 @@ get_mbg_iono(
/*
* data_mbg.c,v
+ * Revision 4.8 2006/06/22 18:40:01 kardel
+ * clean up signedness (gcc 4)
+ *
+ * Revision 4.7 2005/10/07 22:11:10 kardel
+ * bounded buffer implementation
+ *
+ * Revision 4.6.2.1 2005/09/25 10:23:06 kardel
+ * support bounded buffers
+ *
+ * Revision 4.6 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.5 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.3 1999/02/21 12:17:42 kardel
* 4.91f reconcilation
*
diff --git a/contrib/ntp/libparse/gpstolfp.c b/contrib/ntp/libparse/gpstolfp.c
new file mode 100644
index 0000000..fd7be31
--- /dev/null
+++ b/contrib/ntp/libparse/gpstolfp.c
@@ -0,0 +1,76 @@
+/*
+ * /src/NTP/ntp4-dev/libntp/gpstolfp.c,v 4.8 2005/04/16 17:32:10 kardel RELEASE_20050508_A
+ *
+ * gpstolfp.c,v 4.8 2005/04/16 17:32:10 kardel RELEASE_20050508_A
+ *
+ * $Created: Sun Jun 28 16:30:38 1998 $
+ *
+ * Copyright (c) 1998-2005 by Frank Kardel <kardel <AT> ntp.org>
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
+ */
+#include "ntp_fp.h"
+
+#define GPSORIGIN ULONG_CONST(2524953600) /* 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 */
+
+void
+gpstolfp(
+ int weeks,
+ int days,
+ unsigned long seconds,
+ l_fp * lfp
+ )
+{
+ if (weeks < GPSWRAP)
+ {
+ weeks += 1024;
+ }
+
+ lfp->l_ui = weeks * SECSPERWEEK + days * 86400 + seconds + GPSORIGIN; /* convert to NTP time */
+ lfp->l_uf = 0;
+}
+
+/*
+ * History:
+ *
+ * gpstolfp.c,v
+ * Revision 4.8 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.7 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
+ * Revision 4.3 1999/02/28 11:42:44 kardel
+ * (GPSWRAP): update GPS rollover to 990 weeks
+ *
+ * Revision 4.2 1998/07/11 10:05:25 kardel
+ * Release 4.0.73d reconcilation
+ *
+ * Revision 4.1 1998/06/28 16:47:15 kardel
+ * added gpstolfp() function
+ */
diff --git a/contrib/ntp/libntp/ieee754io.c b/contrib/ntp/libparse/ieee754io.c
index 979fed9..27c6525 100644
--- a/contrib/ntp/libntp/ieee754io.c
+++ b/contrib/ntp/libparse/ieee754io.c
@@ -1,9 +1,36 @@
/*
- * /src/NTP/ntp-4/libntp/ieee754io.c,v 4.8 1999/02/21 12:17:36 kardel RELEASE_19990228_A
+ * /src/NTP/ntp4-dev/libntp/ieee754io.c,v 4.12 2005/04/16 17:32:10 kardel RELEASE_20050508_A
+ *
+ * ieee754io.c,v 4.12 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* $Created: Sun Jul 13 09:12:02 1997 $
*
- * Copyright (C) 1997, 1998 by Frank Kardel
+ * Copyright (c) 1997-2005 by Frank Kardel <kardel <AT> ntp.org>
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#ifdef HAVE_CONFIG_H
@@ -538,7 +565,15 @@ int main(
#endif
/*
+ * History:
+ *
* ieee754io.c,v
+ * Revision 4.12 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.11 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.8 1999/02/21 12:17:36 kardel
* 4.91f reconcilation
*
diff --git a/contrib/ntp/libparse/info_trimble.c b/contrib/ntp/libparse/info_trimble.c
index af50858..eea6cbd 100644
--- a/contrib/ntp/libparse/info_trimble.c
+++ b/contrib/ntp/libparse/info_trimble.c
@@ -1,6 +1,6 @@
/*
-* Automatically generated - do not modify
-*/
+ * Automatically generated - do not modify
+ */
#include "ntp_types.h"
#include "ntpd.h"
@@ -47,7 +47,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, "", "" }
};
@@ -89,6 +89,6 @@ 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, "", "" }
};
diff --git a/contrib/ntp/libparse/mfp_mul.c b/contrib/ntp/libparse/mfp_mul.c
new file mode 100644
index 0000000..677ed18
--- /dev/null
+++ b/contrib/ntp/libparse/mfp_mul.c
@@ -0,0 +1,206 @@
+/*
+ * /src/NTP/ntp4-dev/libparse/mfp_mul.c,v 4.9 2005/07/17 20:34:40 kardel RELEASE_20050717_A
+ *
+ * mfp_mul.c,v 4.9 2005/07/17 20:34:40 kardel RELEASE_20050717_A
+ *
+ * $Created: Sat Aug 16 20:35:08 1997 $
+ *
+ * Copyright (c) 1997-2005 by Frank Kardel <kardel <AT> ntp.org>
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
+ */
+#include <stdio.h>
+#include "ntp_stdlib.h"
+#include "ntp_types.h"
+#include "ntp_fp.h"
+
+#define LOW_MASK (u_int32)((1<<(FRACTION_PREC/2))-1)
+#define HIGH_MASK (u_int32)(LOW_MASK << (FRACTION_PREC/2))
+
+/*
+ * for those who worry about overflows (possibly triggered by static analysis tools):
+ *
+ * Largest value of a 2^n bit number is 2^n-1.
+ * Thus the result is: (2^n-1)*(2^n-1) = 2^2n - 2^n - 2^n + 1 < 2^2n
+ * Here overflow can not happen for 2 reasons:
+ * 1) the code actually multiplies the absolute values of two signed
+ * 64bit quantities.thus effectively multiplying 2 63bit quantities.
+ * 2) Carry propagation is from low to high, building principle is
+ * addition, so no storage for the 2^2n term from above is needed.
+ */
+
+void
+mfp_mul(
+ int32 *o_i,
+ u_int32 *o_f,
+ int32 a_i,
+ u_int32 a_f,
+ int32 b_i,
+ u_int32 b_f
+ )
+{
+ int32 i, j;
+ u_int32 f;
+ u_long a[4]; /* operand a */
+ u_long b[4]; /* operand b */
+ u_long c[5]; /* result c - 5 items for performance - see below */
+ u_long carry;
+
+ int neg = 0;
+
+ if (a_i < 0) /* examine sign situation */
+ {
+ neg = 1;
+ M_NEG(a_i, a_f);
+ }
+
+ if (b_i < 0) /* examine sign situation */
+ {
+ neg = !neg;
+ M_NEG(b_i, b_f);
+ }
+
+ a[0] = a_f & LOW_MASK; /* prepare a operand */
+ a[1] = (a_f & HIGH_MASK) >> (FRACTION_PREC/2);
+ a[2] = a_i & LOW_MASK;
+ a[3] = (a_i & HIGH_MASK) >> (FRACTION_PREC/2);
+
+ b[0] = b_f & LOW_MASK; /* prepare b operand */
+ b[1] = (b_f & HIGH_MASK) >> (FRACTION_PREC/2);
+ b[2] = b_i & LOW_MASK;
+ b[3] = (b_i & HIGH_MASK) >> (FRACTION_PREC/2);
+
+ c[0] = c[1] = c[2] = c[3] = c[4] = 0;
+
+ for (i = 0; i < 4; i++) /* we do assume 32 * 32 = 64 bit multiplication */
+ for (j = 0; j < 4; j++)
+ {
+ u_long result_low, result_high;
+ int low_index = (i+j)/2; /* formal [0..3] - index for low long word */
+ int mid_index = 1+low_index; /* formal [1..4]! - index for high long word
+ will generate unecessary add of 0 to c[4]
+ but save 15 'if (result_high) expressions' */
+ int high_index = 1+mid_index; /* formal [2..5]! - index for high word overflow
+ - only assigned on overflow (limits range to 2..3) */
+
+ result_low = (u_long)a[i] * (u_long)b[j]; /* partial product */
+
+ if ((i+j) & 1) /* splits across two result registers */
+ {
+ result_high = result_low >> (FRACTION_PREC/2);
+ result_low <<= FRACTION_PREC/2;
+ carry = (unsigned)1<<(FRACTION_PREC/2);
+ }
+ else
+ { /* stays in a result register - except for overflows */
+ result_high = 0;
+ carry = 1;
+ }
+
+ if (((c[low_index] >> 1) + (result_low >> 1) + ((c[low_index] & result_low & carry) != 0)) &
+ (u_int32)((unsigned)1<<(FRACTION_PREC - 1))) {
+ result_high++; /* propagate overflows */
+ }
+
+ c[low_index] += result_low; /* add up partial products */
+
+ if (((c[mid_index] >> 1) + (result_high >> 1) + ((c[mid_index] & result_high & 1) != 0)) &
+ (u_int32)((unsigned)1<<(FRACTION_PREC - 1))) {
+ c[high_index]++; /* propagate overflows of high word sum */
+ }
+
+ c[mid_index] += result_high; /* will add a 0 to c[4] once but saves 15 if conditions */
+ }
+
+#ifdef DEBUG
+ if (debug > 6)
+ printf("mfp_mul: 0x%04lx%04lx%04lx%04lx * 0x%04lx%04lx%04lx%04lx = 0x%08lx%08lx%08lx%08lx\n",
+ a[3], a[2], a[1], a[0], b[3], b[2], b[1], b[0], c[3], c[2], c[1], c[0]);
+#endif
+
+ if (c[3]) /* overflow */
+ {
+ i = ((unsigned)1 << (FRACTION_PREC-1)) - 1;
+ f = ~(unsigned)0;
+ }
+ else
+ { /* take produkt - discarding extra precision */
+ i = c[2];
+ f = c[1];
+ }
+
+ if (neg) /* recover sign */
+ {
+ M_NEG(i, f);
+ }
+
+ *o_i = i;
+ *o_f = f;
+
+#ifdef DEBUG
+ if (debug > 6)
+ printf("mfp_mul: %s * %s => %s\n",
+ mfptoa((u_long)a_i, a_f, 6),
+ mfptoa((u_long)b_i, b_f, 6),
+ mfptoa((u_long)i, f, 6));
+#endif
+}
+
+/*
+ * History:
+ *
+ * mfp_mul.c,v
+ * Revision 4.9 2005/07/17 20:34:40 kardel
+ * correct carry propagation implementation
+ *
+ * Revision 4.8 2005/07/12 16:17:26 kardel
+ * add explanation why we do not write into c[4]
+ *
+ * Revision 4.7 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.6 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
+ * Revision 4.3 1999/02/21 12:17:37 kardel
+ * 4.91f reconcilation
+ *
+ * Revision 4.2 1998/12/20 23:45:28 kardel
+ * fix types and warnings
+ *
+ * Revision 4.1 1998/05/24 07:59:57 kardel
+ * conditional debug support
+ *
+ * Revision 4.0 1998/04/10 19:46:38 kardel
+ * Start 4.0 release version numbering
+ *
+ * Revision 1.1 1998/04/10 19:27:47 kardel
+ * initial NTP VERSION 4 integration of PARSE with GPS166 binary support
+ *
+ * Revision 1.1 1997/10/06 21:05:46 kardel
+ * new parse structure
+ *
+ */
diff --git a/contrib/ntp/libparse/parse.c b/contrib/ntp/libparse/parse.c
index d3712b6..dfbbaa6 100644
--- a/contrib/ntp/libparse/parse.c
+++ b/contrib/ntp/libparse/parse.c
@@ -1,7 +1,7 @@
/*
- * /src/NTP/ntp-4/libparse/parse.c,v 4.14 1999/11/28 09:13:52 kardel RELEASE_19991128_A
+ * /src/NTP/ntp4-dev/libparse/parse.c,v 4.20 2005/08/06 17:39:40 kardel RELEASE_20050806_A
*
- * parse.c,v 4.14 1999/11/28 09:13:52 kardel RELEASE_19991128_A
+ * parse.c,v 4.20 2005/08/06 17:39:40 kardel RELEASE_20050806_A
*
* Parser module for reference clock
*
@@ -11,12 +11,32 @@
* a struct timeval.
* when PARSEKERNEL is not defined NTP time stamps will be used.
*
- * Copyright (c) 1992-1998 by Frank Kardel
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
*/
@@ -27,7 +47,7 @@
#if defined(REFCLOCK) && defined(CLOCK_PARSE)
#if !(defined(lint) || defined(__GNUC__))
-static char rcsid[] = "parse.c,v 4.14 1999/11/28 09:13:52 kardel RELEASE_19991128_A";
+static char rcsid[] = "parse.c,v 4.20 2005/08/06 17:39:40 kardel RELEASE_20050806_A";
#endif
#include "ntp_fp.h"
@@ -189,7 +209,7 @@ parse_restart(
*/
parseio->parse_data[parseio->parse_index] = '\0';
memcpy(parseio->parse_ldata, parseio->parse_data, (unsigned)(parseio->parse_index+1));
- parseio->parse_ldsize = parseio->parse_index+1;
+ parseio->parse_ldsize = parseio->parse_index;
updated = PARSE_INP_TIME;
}
@@ -234,7 +254,7 @@ parse_end(
*/
parseio->parse_data[parseio->parse_index] = '\0';
memcpy(parseio->parse_ldata, parseio->parse_data, (unsigned)(parseio->parse_index+1));
- parseio->parse_ldsize = parseio->parse_index+1;
+ parseio->parse_ldsize = parseio->parse_index;
parseio->parse_index = 0;
parseprintf(DD_PARSE, ("parse: parse_end: buffer end\n"));
return PARSE_INP_TIME;
@@ -866,6 +886,18 @@ int parse_bs;
* History:
*
* parse.c,v
+ * Revision 4.20 2005/08/06 17:39:40 kardel
+ * cleanup size handling wrt/ to buffer boundaries
+ *
+ * Revision 4.19 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.18 2004/11/14 16:11:05 kardel
+ * update Id tags
+ *
+ * Revision 4.17 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.14 1999/11/28 09:13:52 kardel
* RECON_4_0_98F
*
diff --git a/contrib/ntp/libparse/parse_conf.c b/contrib/ntp/libparse/parse_conf.c
index 5dc267b..b5451cf 100644
--- a/contrib/ntp/libparse/parse_conf.c
+++ b/contrib/ntp/libparse/parse_conf.c
@@ -1,7 +1,7 @@
/*
- * /src/NTP/ntp-4/libparse/parse_conf.c,v 4.5 1999/11/28 09:13:53 kardel RELEASE_19991128_A
+ * /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.5 1999/11/28 09:13:53 kardel RELEASE_19991128_A
+ * parse_conf.c,v 4.9 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* Parser configuration module for reference clocks
*
@@ -11,12 +11,32 @@
* a struct timeval.
* when STREAM is not defined NTP time stamps will be used.
*
- * Copyright (C) 1995-1998 by Frank Kardel
- * Copyright (C) 1992-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
*/
@@ -128,6 +148,12 @@ int parse_conf_bs;
* History:
*
* parse_conf.c,v
+ * Revision 4.9 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.8 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.5 1999/11/28 09:13:53 kardel
* RECON_4_0_98F
*
diff --git a/contrib/ntp/libparse/parsesolaris.c b/contrib/ntp/libparse/parsesolaris.c
index 896f9f0..c023ad8 100644
--- a/contrib/ntp/libparse/parsesolaris.c
+++ b/contrib/ntp/libparse/parsesolaris.c
@@ -1,25 +1,43 @@
/*
- * /src/NTP/ntp-4/libparse/parsesolaris.c,v 4.6 1998/11/15 21:56:08 kardel RELEASE_19991128_A
+ * /src/NTP/ntp4-dev/libparse/parsesolaris.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
- * parsesolaris.c,v 4.6 1998/11/15 21:56:08 kardel RELEASE_19991128_A
+ * parsesolaris.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* STREAMS module for reference clocks
*
- * Copyright (C) 1993-1998 by Frank Kardel
- * derived work from parsestreams.c ((c) 1991-1993, Frank Kardel) and
- * dcf77sync.c((c) Frank Kardel)
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
*/
#define _KERNEL /* it is a _KERNEL module */
#ifndef lint
-static char rcsid[] = "parsesolaris.c,v 4.6 1998/11/15 21:56:08 kardel RELEASE_19991128_A";
+static char rcsid[] = "parsesolaris.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A";
#endif
#include <sys/types.h>
@@ -368,7 +386,7 @@ parseopen(
*/
if (!notice)
{
- cmn_err(CE_CONT, "?%s: Copyright (c) 1993-1998, Frank Kardel\n", modlstrmod.strmod_linkinfo);
+ cmn_err(CE_CONT, "?%s: Copyright (c) 1993-2005, Frank Kardel\n", modlstrmod.strmod_linkinfo);
notice = 1;
}
@@ -1143,6 +1161,15 @@ zs_xsisr(
* History:
*
* parsesolaris.c,v
+ * Revision 4.11 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.10 2004/11/14 16:06:08 kardel
+ * update Id tags
+ *
+ * Revision 4.9 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.6 1998/11/15 21:56:08 kardel
* ntp_memset not necessary
*
diff --git a/contrib/ntp/libparse/parsestreams.c b/contrib/ntp/libparse/parsestreams.c
index 8510ea1..7df3542 100644
--- a/contrib/ntp/libparse/parsestreams.c
+++ b/contrib/ntp/libparse/parsestreams.c
@@ -1,17 +1,37 @@
/*
- * /src/NTP/ntp-4/libparse/parsestreams.c,v 4.7 1999/11/28 09:13:53 kardel RELEASE_19991128_A
+ * /src/NTP/ntp4-dev/libparse/parsestreams.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
- * parsestreams.c,v 4.7 1999/11/28 09:13:53 kardel RELEASE_19991128_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) 1989-1998 by Frank Kardel
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
*/
@@ -23,7 +43,7 @@
#endif
#ifndef lint
-static char rcsid[] = "parsestreams.c,v 4.7 1999/11/28 09:13:53 kardel RELEASE_19991128_A";
+static char rcsid[] = "parsestreams.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A";
#endif
#ifndef KERNEL
@@ -520,9 +540,9 @@ parseopen(
if (!notice)
{
#ifdef VDDRV
- printf("%s: Copyright (C) 1991-1998, Frank Kardel\n", parsesync_vd.Drv_name);
+ printf("%s: Copyright (C) 1991-2005, Frank Kardel\n", parsesync_vd.Drv_name);
#else
- printf("%s: Copyright (C) 1991-1998, Frank Kardel\n", "parsestreams.c,v 4.7 1999/11/28 09:13:53 kardel RELEASE_19991128_A");
+ printf("%s: Copyright (C) 1991-2005, Frank Kardel\n", "parsestreams.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A");
#endif
notice = 1;
}
@@ -1307,6 +1327,15 @@ zs_xsisr(
* History:
*
* parsestreams.c,v
+ * Revision 4.11 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.10 2004/11/14 16:06:08 kardel
+ * update Id tags
+ *
+ * Revision 4.9 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.7 1999/11/28 09:13:53 kardel
* RECON_4_0_98F
*
diff --git a/contrib/ntp/libparse/trim_info.c b/contrib/ntp/libparse/trim_info.c
index ab2e1fe..8fdc4f6 100644
--- a/contrib/ntp/libparse/trim_info.c
+++ b/contrib/ntp/libparse/trim_info.c
@@ -1,9 +1,37 @@
/*
- * /src/NTP/ntp-4/libparse/trim_info.c,v 4.2 1998/12/20 23:45:31 kardel RELEASE_19990228_A
+ * /src/NTP/ntp4-dev/libparse/trim_info.c,v 4.5 2005/04/16 17:32:10 kardel RELEASE_20050508_A
+ *
+ * trim_info.c,v 4.5 2005/04/16 17:32:10 kardel RELEASE_20050508_A
*
* $Created: Sun Aug 2 20:20:34 1998 $
*
- * Copyright (C) 1998 by Frank Kardel
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
+ *
*/
#include "ntp_types.h"
#include "trimble.h"
@@ -26,6 +54,12 @@ trimble_convert(
/*
* trim_info.c,v
+ * Revision 4.5 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.4 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
* Revision 4.2 1998/12/20 23:45:31 kardel
* fix types and warnings
*
diff --git a/contrib/ntp/ltmain.sh b/contrib/ntp/ltmain.sh
new file mode 100644
index 0000000..06823e0
--- /dev/null
+++ b/contrib/ntp/ltmain.sh
@@ -0,0 +1,6863 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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.
+
+basename="s,^.*/,,g"
+
+# 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"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.22
+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes.
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# 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'
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ SP2NL='tr \040 \012'
+ NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ SP2NL='tr \100 \n'
+ NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+ save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+ save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+duplicate_deps=no
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# 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 "$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" || {
+ $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+ exit $EXIT_FAILURE
+ }
+ fi
+
+ $echo "X$my_tmpdir" | $Xsed
+}
+
+
+# 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.
+func_win32_libid ()
+{
+ 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
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+ $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_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 ()
+{
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ 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 "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+ # 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.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+ # 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
+ $echo "$modename: unable to infer tagged configuration"
+ $echo "$modename: specify a tag with \`--tag'" 1>&2
+ exit $EXIT_FAILURE
+# else
+# $echo "$modename: using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+
+ $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+ $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+ exit $EXIT_FAILURE
+ fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+ my_status=""
+
+ $show "${rm}r $my_gentop"
+ $run ${rm}r "$my_gentop"
+ $show "$mkdir $my_gentop"
+ $run $mkdir "$my_gentop"
+ my_status=$?
+ if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+ exit $my_status
+ fi
+
+ 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
+ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+ my_xdir="$my_gentop/$my_xlib"
+
+ $show "${rm}r $my_xdir"
+ $run ${rm}r "$my_xdir"
+ $show "$mkdir $my_xdir"
+ $run $mkdir "$my_xdir"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+ exit $exit_status
+ fi
+ case $host in
+ *-darwin*)
+ $show "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ if test -z "$run"; then
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ $show "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ 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 have a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+ lipo -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ ${rm}r unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd "$darwin_orig_dir"
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ fi # $run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+ func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+disable_libs=no
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+ arg="$1"
+ shift
+
+ case $arg in
+ -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ execute_dlfiles)
+ execute_dlfiles="$execute_dlfiles $arg"
+ ;;
+ tag)
+ tagname="$arg"
+ preserve_args="${preserve_args}=$arg"
+
+ # Check whether tagname contains only valid characters
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ $echo "$progname: invalid tag name: $tagname" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $tagname in
+ CC)
+ # Don't test for the "default" C tag, as we know, it's there, but
+ # not specially marked.
+ ;;
+ *)
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+ taglist="$taglist $tagname"
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+ else
+ $echo "$progname: ignoring unknown tag $tagname" 1>&2
+ fi
+ ;;
+ esac
+ ;;
+ *)
+ eval "$prev=\$arg"
+ ;;
+ esac
+
+ prev=
+ prevopt=
+ continue
+ fi
+
+ # Have we seen a non-optional argument yet?
+ case $arg in
+ --help)
+ show_help=yes
+ ;;
+
+ --version)
+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ $echo
+ $echo "Copyright (C) 2005 Free Software Foundation, Inc."
+ $echo "This is free software; see the source for copying conditions. There is NO"
+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ exit $?
+ ;;
+
+ --config)
+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+ done
+ exit $?
+ ;;
+
+ --debug)
+ $echo "$progname: enabling shell trace mode"
+ set -x
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --dry-run | -n)
+ run=:
+ ;;
+
+ --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 $?
+ ;;
+
+ --finish) mode="finish" ;;
+
+ --mode) prevopt="--mode" prev=mode ;;
+ --mode=*) mode="$optarg" ;;
+
+ --preserve-dup-deps) duplicate_deps="yes" ;;
+
+ --quiet | --silent)
+ show=:
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --tag)
+ prevopt="--tag"
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+
+ -dlopen)
+ prevopt="-dlopen"
+ prev=execute_dlfiles
+ ;;
+
+ -*)
+ $echo "$modename: unrecognized option \`$arg'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+
+ *)
+ nonopt="$arg"
+ break
+ ;;
+ esac
+done
+
+if test -n "$prevopt"; then
+ $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+fi
+
+case $disable_libs in
+no)
+ ;;
+shared)
+ build_libtool_libs=no
+ build_old_libs=yes
+ ;;
+static)
+ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+ ;;
+esac
+
+# 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=
+
+if test -z "$show_help"; then
+
+ # Infer the operation mode.
+ if test -z "$mode"; then
+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+ $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+ case $nonopt in
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ mode=link
+ for arg
+ do
+ case $arg in
+ -c)
+ mode=compile
+ break
+ ;;
+ esac
+ done
+ ;;
+ *db | *dbx | *strace | *truss)
+ mode=execute
+ ;;
+ *install*|cp|mv)
+ mode=install
+ ;;
+ *rm)
+ mode=uninstall
+ ;;
+ *)
+ # If we have no mode, but dlfiles were specified, then do execute mode.
+ test -n "$execute_dlfiles" && mode=execute
+
+ # Just use the default operation mode.
+ if test -z "$mode"; then
+ if test -n "$nonopt"; then
+ $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+ else
+ $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+ fi
+ fi
+ ;;
+ esac
+ fi
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$modename --help --mode=$mode' for more information."
+
+ # These modes are in order of execution frequency so that they run quickly.
+ case $mode in
+ # libtool compile mode
+ compile)
+ modename="$modename: compile"
+ # 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=
+
+ 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)
+ if test -n "$libobj" ; then
+ $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ arg_mode=target
+ continue
+ ;;
+
+ -static | -prefer-pic | -prefer-non-pic)
+ later="$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,*)
+ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ lastarg="$lastarg $arg"
+ done
+ IFS="$save_ifs"
+ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+ # Add the arguments to base_compile.
+ base_compile="$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.
+ lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+ case $lastarg in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, and some SunOS ksh mistreat backslash-escaping
+ # in scan sets (worked around with variable expansion),
+ # and furthermore cannot handle '|' '&' '(' ')' in scan sets
+ # at all, so we specify them separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ lastarg="\"$lastarg\""
+ ;;
+ esac
+
+ base_compile="$base_compile $lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ $echo "$modename: you must specify an argument for -Xcompile"
+ exit $EXIT_FAILURE
+ ;;
+ target)
+ $echo "$modename: you must specify a target with \`-o'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *)
+ # Get the name of the library object.
+ [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ xform='[cCFSifmso]'
+ case $libobj in
+ *.ada) xform=ada ;;
+ *.adb) xform=adb ;;
+ *.ads) xform=ads ;;
+ *.asm) xform=asm ;;
+ *.c++) xform=c++ ;;
+ *.cc) xform=cc ;;
+ *.ii) xform=ii ;;
+ *.class) xform=class ;;
+ *.cpp) xform=cpp ;;
+ *.cxx) xform=cxx ;;
+ *.f90) xform=f90 ;;
+ *.for) xform=for ;;
+ *.java) xform=java ;;
+ esac
+
+ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+ case $libobj in
+ *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+ *)
+ $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -static)
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+ case $qlibobj in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qlibobj="\"$qlibobj\"" ;;
+ esac
+ test "X$libobj" != "X$qlibobj" \
+ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+ xdir=
+ else
+ xdir=$xdir/
+ fi
+ lobj=${xdir}$objdir/$objname
+
+ if test -z "$base_compile"; then
+ $echo "$modename: you must specify a compilation command" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # 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
+
+ $run $rm $removelist
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2*)
+ 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 "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ removelist="$removelist $output_obj $lockfile"
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+ 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 $run ln "$progpath" "$lockfile" 2>/dev/null; do
+ $show "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."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+ $echo "$srcfile" > "$lockfile"
+ fi
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+ qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+ case $qsrcfile in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qsrcfile="\"$qsrcfile\"" ;;
+ esac
+
+ $run $rm "$libobj" "${libobj}T"
+
+ # Create a libtool object file (analogous to a ".la" file),
+ # but don't create it if we're doing a dry run.
+ test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+ # 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
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ $run $rm "$lobj" "$output_obj"
+
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ test -n "$output_obj" && $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ 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."
+
+ $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
+ $show "$mv $output_obj $lobj"
+ if $run $mv $output_obj $lobj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the PIC object to the libtool object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ else
+ # No PIC object so indicate it doesn't exist in the libtool
+ # object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+ 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"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ $run $rm "$obj" "$output_obj"
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ 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."
+
+ $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
+ $show "$mv $output_obj $obj"
+ if $run $mv $output_obj $obj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+ else
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+ fi
+
+ $run $mv "${libobj}T" "${libobj}"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ $run $rm "$lockfile"
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool link mode
+ link | relink)
+ modename="$modename: link"
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # 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=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ notinst_path= # paths that contain not-installed libtool libraries
+ 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
+
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -all-static | -static)
+ if test "X$arg" = "X-all-static"; then
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ else
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ fi
+ 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
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+ ;;
+ *) qarg=$arg ;;
+ esac
+ libtool_args="$libtool_args $qarg"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ compile_command="$compile_command @OUTPUT@"
+ finalize_command="$finalize_command @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ compile_command="$compile_command @SYMFILE@"
+ finalize_command="$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
+ dlfiles="$dlfiles $arg"
+ else
+ dlprefiles="$dlprefiles $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ if test ! -f "$arg"; then
+ $echo "$modename: symbol file \`$arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat $save_arg`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ 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
+ dlfiles="$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.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$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
+ non_pic_objects="$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"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ done
+ else
+ $echo "$modename: link input file \`$save_arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ compile_command="$compile_command $wl$qarg"
+ finalize_command="$finalize_command $wl$qarg"
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ darwin_framework|darwin_framework_skip)
+ test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ prev=
+ 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
+ compile_command="$compile_command $link_static_flag"
+ finalize_command="$finalize_command $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+ continue
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ 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
+ $echo "$modename: more than one -exported-symbols argument is not allowed"
+ exit $EXIT_FAILURE
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework|-arch|-isysroot)
+ case " $CC " in
+ *" ${arg} ${1} "* | *" ${arg} ${1} "*)
+ prev=darwin_framework_skip ;;
+ *) compiler_flags="$compiler_flags $arg"
+ prev=darwin_framework ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ 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*)
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ notinst_path="$notinst_path $dir"
+ fi
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$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*)
+ # 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
+ deplibs="$deplibs -framework System"
+ 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
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ -model)
+ compile_command="$compile_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ finalize_command="$finalize_command $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+ # -r[0-9][0-9]* specifies the processor on the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+ # +DA*, +DD* enable 64-bit mode on the HP compiler
+ # -q* pass through compiler args for the IBM compiler
+ # -m* pass through architecture-specific compiler args for GCC
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+ # -pg pass through profiling flag for GCC
+ # @file GCC response files
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+ -t[45]*|-txscale*|@*)
+
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # in order for the loader to find any dlls it needs.
+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+ 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*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ continue
+ ;;
+
+ -static)
+ # 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
+ ;;
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Wl,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $wl$flag"
+ linker_flags="$linker_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ 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
+ dlfiles="$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.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$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
+ non_pic_objects="$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"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ 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.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+ done # argument parsing loop
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'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\"
+
+ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$output_objdir" = "X$output"; then
+ output_objdir="$objdir"
+ else
+ output_objdir="$output_objdir/$objdir"
+ fi
+ # Create the object directory.
+ if test ! -d "$output_objdir"; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ # Determine the type of output
+ case $output in
+ "")
+ $echo "$modename: you must specify an output file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ case $host in
+ *cygwin* | *mingw* | *pw32*)
+ # don't eliminate duplications in $postdeps and $predeps
+ duplicate_compiler_generated_deps=yes
+ ;;
+ *)
+ duplicate_compiler_generated_deps=$duplicate_deps
+ ;;
+ 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 test "X$duplicate_deps" = "Xyes" ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ libs="$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 test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$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
+ case $linkmode in
+ lib)
+ passes="conv link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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
+ 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 "$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)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags $deplib"
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; 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 (${SED} -e '2q' $lib |
+ grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ library_names=
+ old_library=
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ 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
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+ 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
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ 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
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ *)
+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ 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 used here."
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the"
+ $echo "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ 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.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ # 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
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$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
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ $echo "$modename: \`$lib' is not a convenience library" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ 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.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$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
+ $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ $echo "$modename: warning: library \`$lib' was moved." 1>&2
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$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
+ notinst_path="$notinst_path $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi
+ fi # $installed = yes
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ 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
+ newlib_search_path="$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*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+ 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 test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$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 -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
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+ *) temp_rpath="$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 "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$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
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on
+ # some systems (darwin)
+ if 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 "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ realname="$2"
+ shift; 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*)
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+ newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ $show "extracting exported symbol list from \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$extract_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ $show "generating import library for \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$old_archive_from_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ 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 "$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 module then we can not link against
+ # it, someone is ignoring the new warnings I added
+ if /usr/bin/file -L $add 2> /dev/null |
+ $EGREP ": [^:]* bundle" >/dev/null ; 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
+ 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; 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
+ [\\/]*)
+ add_dir="$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
+ $echo "$modename: configuration error: unsupported hardcode properties"
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$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:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes; 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:"*) ;;
+ *) finalize_shlibpath="$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
+ [\\/]*)
+ add_dir="$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*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ newlib_search_path="$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"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$deplib" && dir="."
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if grep "^installed=no" $deplib > /dev/null; then
+ path="$absdir/$objdir"
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$absdir" != "$libdir"; then
+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ fi
+ path="$absdir"
+ fi
+ depdepl=
+ case $host in
+ *-*-darwin*)
+ # we do not want to link against static libs,
+ # but need to link against shared
+ 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 "$path/$depdepl" ; then
+ depdepl="$path/$depdepl"
+ fi
+ # do not add paths which are already there
+ case " $newlib_search_path " in
+ *" $path "*) ;;
+ *) newlib_search_path="$newlib_search_path $path";;
+ esac
+ fi
+ path=""
+ ;;
+ *)
+ path="-L$path"
+ ;;
+ esac
+ ;;
+ -l*)
+ case $host in
+ *-*-darwin*)
+ # Again, we only want to link against shared libraries
+ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+ for tmp in $newlib_search_path ; do
+ if test -f "$tmp/lib$tmp_libs.dylib" ; then
+ eval depdepl="$tmp/lib$tmp_libs.dylib"
+ break
+ fi
+ done
+ path=""
+ ;;
+ *) continue ;;
+ esac
+ ;;
+ *) continue ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ case " $deplibs " in
+ *" $depdepl "*) ;;
+ *) deplibs="$depdepl $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ 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 "*) ;;
+ *) lib_search_path="$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 "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$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
+ tmp_libs="$tmp_libs $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+ fi
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ if test "$module" = no; then
+ $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+ exit $EXIT_FAILURE
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the non-libtool"
+ $echo "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
+ fi
+
+ if test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+ fi
+
+ set dummy $rpath
+ if test "$#" -gt 2; then
+ $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+ fi
+ install_libdir="$2"
+
+ 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
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+ fi
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ IFS="$save_ifs"
+
+ if test -n "$8"; then
+ $echo "$modename: too many parameters to \`-version-info'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # 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="$2"
+ number_minor="$3"
+ number_revision="$4"
+ #
+ # 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)
+ current=`expr $number_major + $number_minor`
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ current=`expr $number_major + $number_minor - 1`
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+ esac
+ ;;
+ no)
+ current="$2"
+ revision="$3"
+ age="$4"
+ ;;
+ 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]) ;;
+ *)
+ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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]) ;;
+ *)
+ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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]) ;;
+ *)
+ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ 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
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current";
+ ;;
+
+ irix | nonstopux)
+ major=`expr $current - $age + 1`
+
+ 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
+ iface=`expr $revision - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ major=.`expr $current - $age`
+ 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
+ iface=`expr $current - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+
+ *)
+ $echo "$modename: unknown library version type \`$version_type'" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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
+ $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+ fi
+
+ if test "$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)
+ ;;
+ $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
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ if test -n "$removelist"; then
+ $show "${rm}r $removelist"
+ $run ${rm}r $removelist
+ fi
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ for path in $notinst_path; do
+ lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+ deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+ dependency_libs=`$echo "$dependency_libs " | ${SED} -e "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
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$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 "*) ;;
+ *) dlfiles="$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 "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs -framework System"
+ ;;
+ *-*-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
+ deplibs="$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.
+ $rm conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $rm conftest
+ $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" -ne "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $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 I believe you do not have"
+ $echo "*** because a test_compile did reveal that the linker did not use it for"
+ $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+ $LTCC $LTCFLAGS -o conftest conftest.c $i
+ # Did it work?
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $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 a test_compile did reveal that the linker did not use this one"
+ $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning! Library $i is needed by this library but I was not able to"
+ $echo "*** make it link in! You will probably need to install it or some"
+ $echo "*** library that it depends on before this library will be fully"
+ $echo "*** functional. Installing it before continuing would be even better."
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$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
+ # 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 "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$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
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$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
+ newdeplibs="$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
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+ -e '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 "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+ done
+ fi
+ if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
+ | grep . >/dev/null; then
+ $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
+ fi
+ ;;
+ 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 is the System framework
+ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ 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
+
+
+ # 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 "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$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 "$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
+ 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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$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
+ rpath="$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 "$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
+ realname="$2"
+ shift; 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
+ linknames="$linknames $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ if len=`expr "X$cmd" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ $show "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"; then
+ $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+ $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+ $run eval '$mv "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ libobjs="$libobjs $func_extract_archives_result"
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $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:" &&
+ len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise.
+ $echo "creating reloadable object files..."
+
+ # 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
+ output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ delfiles=
+ last_robj=
+ k=1
+ output=$output_objdir/$output_la-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$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.
+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ k=`expr $k + 1`
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=$obj
+ len=1
+ 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~
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+ if ${skipped_export-false}; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+ fi
+
+ # Set up a command to remove the reloadable object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+ done
+
+ $echo "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"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ 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\"
+ 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
+
+ # Append the command to remove the reloadable object files
+ # to the just-reset $cmds.
+ eval cmds=\"\$cmds~\$rm $delfiles\"
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(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 "$mode" = relink; then
+ $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
+ $show "${rm}r $gentop"
+ $run ${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
+ $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+ $run 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 "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+ fi
+
+ case $output in
+ *.lo)
+ if test -n "$objs$old_deplibs"; then
+ $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ libobj="$output"
+ obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $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
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${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"
+ # $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"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+ esac
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+ fi
+
+ if test "$preload" = yes; then
+ if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+ test "$dlopen_self_static" = unknown; then
+ $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+ fi
+ fi
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ case $host in
+ *darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ if test "$tagname" = CXX ; then
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ fi
+ ;;
+ 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 "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$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 "*) ;;
+ *) finalize_rpath="$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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$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 "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ fi
+
+ dlsyms=
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ dlsyms="${outputname}S.c"
+ else
+ $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+ fi
+ fi
+
+ if test -n "$dlsyms"; then
+ case $dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${outputname}.nm"
+
+ $show "$rm $nlist ${nlist}S ${nlist}T"
+ $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+ # Parse the name list into a source file.
+ $show "creating $output_objdir/$dlsyms"
+
+ test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ $show "generating symbol list for \`$output'"
+
+ test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ for arg in $progfiles; do
+ $show "extracting global C symbols from \`$arg'"
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $run $rm $export_symbols
+ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ else
+ $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ $run eval 'mv "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ fi
+ fi
+
+ for arg in $dlprefiles; do
+ $show "extracting global C symbols from \`$arg'"
+ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+ $run eval '$echo ": $name " >> "$nlist"'
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -z "$run"; then
+ # 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 >/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/$dlsyms"'
+ else
+ $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+ fi
+
+ $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+ case $host in
+ *cygwin* | *mingw* )
+ $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+ runtime relocations are performed -- see ld's documentation
+ on pseudo-relocs */
+struct {
+"
+ ;;
+ * )
+ $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+ ;;
+ esac
+
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ const char *name;
+ lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ fi
+
+ pic_flag_for_symtable=
+ 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*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+ esac;;
+ *-*-hpux*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag";;
+ esac
+ esac
+
+ # Now compile the dynamic symbol file.
+ $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+ $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+ # Clean up the generated files.
+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+ # Transform the symbol file into the correct name.
+ case $host in
+ *cygwin* | *mingw* )
+ if test -f "$output_objdir/${outputname}.def" ; then
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ else
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ fi
+ ;;
+ * )
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ ;;
+ esac
+ ;;
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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 "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ fi
+
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ # Replace the output file specification.
+ compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$link_command"
+ $run eval "$link_command"
+ exit_status=$?
+
+ # Delete the generated files.
+ if test -n "$dlsyms"; then
+ $show "$rm $output_objdir/${outputname}S.${objext}"
+ $run $rm "$output_objdir/${outputname}S.${objext}"
+ fi
+
+ exit $exit_status
+ fi
+
+ if test -n "$shlibpath_var"; then
+ # We should set the shlibpath_var
+ rpath=
+ for dir in $temp_rpath; do
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*)
+ # Absolute path.
+ rpath="$rpath$dir:"
+ ;;
+ *)
+ # Relative path: add a thisdir entry.
+ rpath="$rpath\$thisdir/$dir:"
+ ;;
+ esac
+ done
+ temp_rpath="$rpath"
+ 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
+ rpath="$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
+ rpath="$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 "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $run $rm $output
+ # Link the executable and exit
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+ 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"
+
+ $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+ $echo "$modename: \`$output' will be relinked during installation" 1>&2
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e '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 "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+
+ # Now create the wrapper script.
+ $show "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}\" || 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
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Quote $echo for shipping.
+ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+ case $progpath in
+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+ esac
+ qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+ else
+ qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if our run command is non-null.
+ if test -z "$run"; then
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ output_name=`basename $output`
+ output_path=`dirname $output`
+ 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
+
+ cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+
+ Currently, it simply execs the wrapper *script* "/bin/sh $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#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
+# 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 */
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+/* -DDEBUG is fairly common in CFLAGS. */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#endif
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+const char * base_name (const char *name);
+char * find_executable(const char *wrapper);
+int check_executable(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ DEBUG("(main) argv[0] : %s\n",argv[0]);
+ DEBUG("(main) program_name : %s\n",program_name);
+ newargz = XMALLOC(char *, argc+2);
+EOF
+
+ cat >> $cwrappersource <<EOF
+ newargz[0] = (char *) xstrdup("$SHELL");
+EOF
+
+ cat >> $cwrappersource <<"EOF"
+ newargz[1] = find_executable(argv[0]);
+ if (newargz[1] == NULL)
+ lt_fatal("Couldn't find %s", argv[0]);
+ DEBUG("(main) found exe at : %s\n",newargz[1]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+
+ for (i=0; i<argc+1; i++)
+ {
+ DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+ ;
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",(char const **)newargz);
+EOF
+ ;;
+ *)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+EOF
+ ;;
+ esac
+
+ cat >> $cwrappersource <<"EOF"
+ return 127;
+}
+
+void *
+xmalloc (size_t num)
+{
+ void * p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("Memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+const char *
+base_name (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char)name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable(const char * path)
+{
+ struct stat st;
+
+ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0) &&
+ (
+ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+ ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+ ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+ ((st.st_mode & S_IXUSR) == S_IXUSR))
+ )
+ return 1;
+ else
+ return 0;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise */
+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;
+
+ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+ 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 ("getcwd failed");
+ 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 ("getcwd failed");
+ 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 *
+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;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+ const char * message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+EOF
+ # we should really use a build-platform specific compiler
+ # here, but OTOH, the wrappers (shell script and this C one)
+ # are only useful if you want to execute the "real" binary.
+ # Since the "real" binary is built for $host, then this
+ # wrapper might as well be built for $host, too.
+ $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+ ;;
+ esac
+ $rm $output
+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+ $echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# 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.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# 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 variable:
+ 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
+ echo=\"$qecho\"
+ file=\"\$0\"
+ # Make sure echo works.
+ if test \"X\$1\" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+ # Yippee, \$echo works!
+ :
+ else
+ # Restart under the correct shell, and then maybe \$echo will work.
+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+ fi
+ fi\
+"
+ $echo >> $output "\
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$echo \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $echo >> $output "\
+ 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 >> $output "\
+
+ # 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 $EXIT_FAILURE
+ fi
+ fi
+
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $rm \"\$progdir/\$program\";
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $rm \"\$progdir/\$file\"
+ fi"
+ else
+ $echo >> $output "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $echo >> $output "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $echo >> $output "\
+ # 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 \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $echo >> $output "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ $echo >> $output "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $echo >> $output "\
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $echo >> $output "\
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $echo >> $output "\
+ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+ exit $EXIT_FAILURE
+ 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 $EXIT_FAILURE
+ fi
+fi\
+"
+ chmod +x $output
+ fi
+ 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"
+ 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"
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $addlibs
+ oldobjs="$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
+ # 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
+ $echo "X$obj" | $Xsed -e 's%^.*/%%'
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "copying selected object files to avoid basename conflicts..."
+
+ if test -z "$gentop"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+ exit $exit_status
+ fi
+ fi
+
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ counter=`expr $counter + 1`
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ $run ln "$obj" "$gentop/$newobj" ||
+ $run cp "$obj" "$gentop/$newobj"
+ oldobjs="$oldobjs $gentop/$newobj"
+ ;;
+ *) oldobjs="$oldobjs $obj" ;;
+ esac
+ done
+ fi
+
+ eval cmds=\"$old_archive_cmds\"
+
+ if len=`expr "X$cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ $echo "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_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
+ for obj in $save_oldobjs
+ do
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$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=
+ 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
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ eval cmd=\"$cmd\"
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$generated"; then
+ $show "${rm}r$generated"
+ $run ${rm}r$generated
+ fi
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ $show "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}\" || 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
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; 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 "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+
+ # Only create the output if not a dry run.
+ if test -z "$run"; then
+ 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)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+ for lib in $dlfiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlfiles="$newdlfiles $libdir/$name"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $rm $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# 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'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_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
+ fi
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+ $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool install mode
+ install)
+ modename="$modename: install"
+
+ # 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.
+ $echo "X$nonopt" | grep shtool > /dev/null; then
+ # Aesthetically quote it.
+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$arg "
+ arg="$1"
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog$arg"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ case " $install_prog " in
+ *[\\\ /]cp\ *) ;;
+ *) prev=$arg ;;
+ esac
+ ;;
+ -g | -m | -o) prev=$arg ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog $arg"
+ done
+
+ if test -z "$install_prog"; then
+ $echo "$modename: you must specify an install program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prev' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ $echo "$modename: no file or destination specified" 1>&2
+ else
+ $echo "$modename: you must specify a destination" 1>&2
+ fi
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Strip any trailing slash from the destination.
+ dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$destdir" = "X$dest" && destdir=.
+ destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files
+ if test "$#" -gt 2; then
+ $echo "$modename: \`$dest' is not a directory" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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.
+ staticlibs="$staticlibs $file"
+ ;;
+
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ library_names=
+ old_library=
+ relink_command=
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+ test "X$dir" = "X$file/" && dir=
+ dir="$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 "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.
+ if test "$inst_prefix_dir" = "$destdir"; then
+ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ 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
+
+ $echo "$modename: warning: relinking \`$file'" 1>&2
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names
+ if test -n "$2"; then
+ realname="$2"
+ shift
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ $show "$install_prog $dir/$srcname $destdir/$realname"
+ $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+ if test -n "$stripme" && test -n "$striplib"; then
+ $show "$striplib $destdir/$realname"
+ $run 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
+ if test "$linkname" != "$realname"; then
+ $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ fi
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ cmds=$postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Install the pseudo-library for information purposes.
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ instname="$dir/$name"i
+ $show "$install_prog $instname $destdir/$name"
+ $run eval "$install_prog $instname $destdir/$name" || exit $?
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$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
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ if test -n "$destfile"; then
+ $show "$install_prog $file $destfile"
+ $run eval "$install_prog $file $destfile" || exit $?
+ fi
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+ $show "$install_prog $staticobj $staticdest"
+ $run 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
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ 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
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin*|*mingw*)
+ wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+ notinst_deplibs=
+ relink_command=
+
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo 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.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ # Check the variables that should have been set.
+ if test -z "$notinst_deplibs"; then
+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ # If there is no directory component, then add one.
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ fi
+ libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo 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.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ if test "$finalize" = yes && test -z "$run"; then
+ tmpdir=`func_mktempdir`
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ ${rm}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ $echo "$modename: warning: cannot relink \`$file'" 1>&2
+ fi
+ else
+ # Install the binary that we compiled earlier.
+ file=`$echo "X$file$stripped_ext" | $Xsed -e "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)
+ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+ ;;
+ esac
+ ;;
+ esac
+ $show "$install_prog$stripme $file $destfile"
+ $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+ test -n "$outputname" && ${rm}r "$tmpdir"
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ $show "$install_prog $file $oldlib"
+ $run eval "$install_prog \$file \$oldlib" || exit $?
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ $show "$old_striplib $oldlib"
+ $run eval "$old_striplib $oldlib" || exit $?
+ fi
+
+ # Do each command in the postinstall commands.
+ cmds=$old_postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$future_libdirs"; then
+ $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+ fi
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ test -n "$run" && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool finish mode
+ finish)
+ modename="$modename: finish"
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ cmds=$finish_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || admincmds="$admincmds
+ $cmd"
+ done
+ IFS="$save_ifs"
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $run eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ test "$show" = : && exit $EXIT_SUCCESS
+
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ $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"
+ $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool execute mode
+ execute)
+ modename="$modename: execute"
+
+ # The first argument is the command name.
+ cmd="$nonopt"
+ if test -z "$cmd"; then
+ $echo "$modename: you must specify a COMMAND" 1>&2
+ $echo "$help"
+ exit $EXIT_FAILURE
+ fi
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ if test ! -f "$file"; then
+ $echo "$modename: \`$file' is not a file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ dir=
+ case $file in
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+ ;;
+
+ *)
+ $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+ 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
+ -*) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+ args="$args \"$file\""
+ done
+
+ if test -z "$run"; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ if test "${save_LC_ALL+set}" = set; then
+ LC_ALL="$save_LC_ALL"; export LC_ALL
+ fi
+ if test "${save_LANG+set}" = set; then
+ LANG="$save_LANG"; export LANG
+ fi
+
+ # 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
+ ;;
+
+ # libtool clean and uninstall mode
+ clean | uninstall)
+ modename="$modename: $mode"
+ 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) rm="$rm $arg"; rmforce=yes ;;
+ -*) rm="$rm $arg" ;;
+ *) files="$files $arg" ;;
+ esac
+ done
+
+ if test -z "$rm"; then
+ $echo "$modename: you must specify an RM program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ rmdirs=
+
+ origobjdir="$objdir"
+ for file in $files; do
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$dir" = "X$file"; then
+ dir=.
+ objdir="$origobjdir"
+ else
+ objdir="$dir/$origobjdir"
+ fi
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ test "$mode" = uninstall && objdir="$dir"
+
+ # Remember objdir for removal later, being careful to avoid duplicates
+ if test "$mode" = clean; then
+ case " $rmdirs " in
+ *" $objdir "*) ;;
+ *) rmdirs="$rmdirs $objdir" ;;
+ 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 (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ . $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+ case "$mode" in
+ clean)
+ case " $library_names " in
+ # " " in the beginning catches empty $dlname
+ *" $dlname "*) ;;
+ *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ esac
+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ cmds=$postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ cmds=$old_postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+ # Read the .lo file
+ . $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" \
+ && test "$pic_object" != none; then
+ rmfiles="$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
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ noexename=`$echo $name|${SED} 's,.exe$,,'`
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ relink_command=
+ . $dir/$noexename
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ $show "$rm $rmfiles"
+ $run $rm $rmfiles || exit_status=1
+ done
+ objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ $show "rmdir $dir"
+ $run rmdir $dir >/dev/null 2>&1
+ fi
+ done
+
+ exit $exit_status
+ ;;
+
+ "")
+ $echo "$modename: you must specify a MODE" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test -z "$exec_cmd"; then
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+ eval exec $exec_cmd
+ exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [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
+ --finish same as \`--mode=finish'
+ --help display this help message and exit
+ --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
+ --quiet same as \`--silent'
+ --silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
+ --version print version information
+
+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. Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+ exit $EXIT_SUCCESS
+ ;;
+
+clean)
+ $echo \
+"Usage: $modename [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: $modename [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
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -static always build a \`.o' file suitable for static linking
+
+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: $modename [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: $modename [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: $modename [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 rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+link)
+ $echo \
+"Usage: $modename [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
+ -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
+ -static do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+
+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: $modename [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."
+ ;;
+
+*)
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# 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
+disable_libs=shared
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+disable_libs=static
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/contrib/ntp/acinclude.m4 b/contrib/ntp/m4/define_dir.m4
index 194bf6a..4877176 100644
--- a/contrib/ntp/acinclude.m4
+++ b/contrib/ntp/m4/define_dir.m4
@@ -1,14 +1,3 @@
-AC_DEFUN(hs_ULONG_CONST,
-[ AH_TEMPLATE(ULONG_CONST, [How do we create unsigned long constants?])
-AC_EGREP_CPP(Circus,
- [#define ACAT(a,b)a ## b
-ACAT(Cir,cus)
-], AC_DEFINE([ULONG_CONST(a)], [a ## UL]),
- AC_EGREP_CPP(Reiser,
-[#define RCAT(a,b)a/**/b
-RCAT(Rei,ser)
-], AC_DEFINE([ULONG_CONST(a)], [a/**/L]),
- AC_MSG_ERROR([How do we create an unsigned long constant?])))])
dnl @synopsis AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
dnl
dnl This macro defines (with AC_DEFINE) VARNAME to the expansion of the DIR
@@ -25,7 +14,7 @@ dnl
dnl @version $Id: acinclude.m4,v 1.3 2000/08/04 03:26:22 stenn Exp $
dnl @author Alexandre Oliva <oliva@lsd.ic.unicamp.br>
-AC_DEFUN(AC_DEFINE_DIR, [
+AC_DEFUN([AC_DEFINE_DIR], [
ac_expanded=`(
test "x$prefix" = xNONE && prefix="$ac_default_prefix"
test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
diff --git a/contrib/ntp/m4/hs_ulong_const.m4 b/contrib/ntp/m4/hs_ulong_const.m4
new file mode 100644
index 0000000..b137cfd
--- /dev/null
+++ b/contrib/ntp/m4/hs_ulong_const.m4
@@ -0,0 +1,11 @@
+AC_DEFUN([hs_ULONG_CONST],
+[ AH_TEMPLATE(ULONG_CONST, [How do we create unsigned long constants?])
+AC_EGREP_CPP(Circus,
+ [#define ACAT(a,b)a ## b
+ACAT(Cir,cus)
+], AC_DEFINE([ULONG_CONST(a)], [a ## UL]),
+ AC_EGREP_CPP(Reiser,
+[#define RCAT(a,b)a/**/b
+RCAT(Rei,ser)
+], AC_DEFINE([ULONG_CONST(a)], [a/**/L]),
+ AC_MSG_ERROR([How do we create an unsigned long constant?])))])
diff --git a/contrib/ntp/m4/os_cflags.m4 b/contrib/ntp/m4/os_cflags.m4
new file mode 100644
index 0000000..35efa44
--- /dev/null
+++ b/contrib/ntp/m4/os_cflags.m4
@@ -0,0 +1,87 @@
+dnl ######################################################################
+dnl Specify additional compile options based on the OS and the compiler
+dnl From Erez Zadok <ezk@cs.sunysb.edu>, http://www.am-utils.org
+AC_DEFUN([AMU_OS_CFLAGS],
+[
+AC_CACHE_CHECK(additional compiler flags,
+ac_cv_os_cflags,
+[
+case "${host_os}" in
+ irix6* )
+ case "${CC}" in
+ cc )
+ # do not use 64-bit compiler
+ ac_cv_os_cflags="-n32 -mips3 -Wl,-woff,84"
+ ;;
+ esac
+ ;;
+# HMS: am-utils needed this but we don't (apparently)
+# osf[[1-3]]* )
+# # get the right version of struct sockaddr
+# case "${CC}" in
+# cc )
+# ac_cv_os_cflags="-std -D_SOCKADDR_LEN -D_NO_PROTO"
+# ;;
+# * )
+# ac_cv_os_cflags="-D_SOCKADDR_LEN -D_NO_PROTO"
+# ;;
+# esac
+# ;;
+# osf* )
+# # get the right version of struct sockaddr
+# case "${CC}" in
+# cc )
+# ac_cv_os_cflags="-std -D_SOCKADDR_LEN"
+# ;;
+# * )
+# ac_cv_os_cflags="-D_SOCKADDR_LEN"
+# ;;
+# esac
+# ;;
+ aix[[1-3]]* )
+ ac_cv_os_cflags="" ;;
+ aix4.[[0-2]]* )
+ # turn on additional headers
+ ac_cv_os_cflags="-D_XOPEN_EXTENDED_SOURCE"
+ ;;
+ aix* )
+ # avoid circular dependencies in yp headers
+ ac_cv_os_cflags="-DHAVE_BAD_HEADERS -D_XOPEN_EXTENDED_SOURCE"
+ ;;
+ OFF-sunos4* )
+ # make sure passing whole structures is handled in gcc
+ case "${CC}" in
+ gcc )
+ ac_cv_os_cflags="-fpcc-struct-return"
+ ;;
+ esac
+ ;;
+ sunos[[34]]* | solaris1* | solaris2.[[0-5]]* | sunos5.[[0-5]]* )
+ ac_cv_os_cflags="" ;;
+ solaris* | sunos* )
+ # turn on 64-bit file offset interface
+ case "${CC}" in
+ * )
+ ac_cv_os_cflags="-D_LARGEFILE64_SOURCE"
+ ;;
+ esac
+ ;;
+ hpux* )
+ # use Ansi compiler on HPUX
+ case "${CC}" in
+ cc )
+ ac_cv_os_cflags="-Ae"
+ ;;
+ esac
+ ;;
+ darwin* | rhapsody* )
+ ac_cv_os_cflags="-D_P1003_1B_VISIBLE"
+ ;;
+ * )
+ ac_cv_os_cflags=""
+ ;;
+esac
+])
+CFLAGS="$CFLAGS $ac_cv_os_cflags"
+])
+dnl ======================================================================
diff --git a/contrib/ntp/missing b/contrib/ntp/missing
index 6a37006..894e786 100755
--- a/contrib/ntp/missing
+++ b/contrib/ntp/missing
@@ -1,6 +1,10 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
+
+scriptversion=2005-06-08.21
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
@@ -15,8 +19,8 @@
# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# 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
@@ -38,18 +42,24 @@ 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
;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
-h|--h|--he|--hel|--help)
echo "\
@@ -74,11 +84,15 @@ Supported PROGRAM values:
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]"
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
- echo "missing 0.4 - GNU automake"
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
;;
-*)
@@ -87,14 +101,44 @@ Supported PROGRAM values:
exit 1
;;
- aclocal*)
+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 missing on your system. You should only need it if
+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."
@@ -102,13 +146,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
autoconf)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -116,13 +155,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
autoheader)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -140,13 +174,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
automake*)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -156,16 +185,11 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
autom4te)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
- system. You might have modified some files without having the
+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 \`$1Help2man' as part of \`Autoconf' from any GNU
+ You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
@@ -185,7 +209,7 @@ WARNING: \`$1' is needed, and you do not seem to have it handy on your
bison|yacc)
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -215,7 +239,7 @@ WARNING: \`$1' is missing on your system. You should only need it if
lex|flex)
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -237,13 +261,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
help2man)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -262,32 +281,30 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
makeinfo)
- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
- # We have makeinfo, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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
- file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+ # ... 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
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- fi
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
@@ -323,10 +340,10 @@ WARNING: I can't seem to be able to run \`tar' with the given arguments.
*)
echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
- system. You might have modified some files without having the
+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 prerequirements for installing
+ 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
@@ -334,3 +351,10 @@ WARNING: \`$1' is needed, and you do not seem to have it handy on your
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/contrib/ntp/mkinstalldirs b/contrib/ntp/mkinstalldirs
deleted file mode 100755
index d2d5f21..0000000
--- a/contrib/ntp/mkinstalldirs
+++ /dev/null
@@ -1,111 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
-
-errstatus=0
-dirmode=""
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
-
-# process command line arguments
-while test $# -gt 0 ; do
- case $1 in
- -h | --help | --h*) # -h for help
- echo "$usage" 1>&2
- exit 0
- ;;
- -m) # -m PERM arg
- shift
- test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
- dirmode=$1
- shift
- ;;
- --) # stop option processing
- shift
- break
- ;;
- -*) # unknown option
- echo "$usage" 1>&2
- exit 1
- ;;
- *) # first non-opt arg
- break
- ;;
- esac
-done
-
-for file
-do
- if test -d "$file"; then
- shift
- else
- break
- fi
-done
-
-case $# in
- 0) exit 0 ;;
-esac
-
-case $dirmode in
- '')
- if mkdir -p -- . 2>/dev/null; then
- echo "mkdir -p -- $*"
- exec mkdir -p -- "$@"
- fi
- ;;
- *)
- if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
- echo "mkdir -m $dirmode -p -- $*"
- exec mkdir -m "$dirmode" -p -- "$@"
- fi
- ;;
-esac
-
-for file
-do
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
- shift
-
- pathcomp=
- for d
- do
- pathcomp="$pathcomp$d"
- case $pathcomp in
- -*) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- else
- if test ! -z "$dirmode"; then
- echo "chmod $dirmode $pathcomp"
- lasterr=""
- chmod "$dirmode" "$pathcomp" || lasterr=$?
-
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
- fi
- fi
-
- pathcomp="$pathcomp/"
- done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# End:
-# mkinstalldirs ends here
diff --git a/contrib/ntp/ntpd/Makefile.am b/contrib/ntp/ntpd/Makefile.am
index 0fa4e21..6896b45 100644
--- a/contrib/ntp/ntpd/Makefile.am
+++ b/contrib/ntp/ntpd/Makefile.am
@@ -1,60 +1,108 @@
-#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
-AUTOMAKE_OPTIONS = ../util/ansi2knr
-bin_PROGRAMS = ntpd @MAKE_NTPDSIM@
-noinst_LIBRARIES = libntpd.a
-INCLUDES = -I$(top_srcdir)/include -I../include
+AUTOMAKE_OPTIONS= ../util/ansi2knr
+
+bindir= ${exec_prefix}/${BINSUBDIR}
+
+bin_PROGRAMS= ntpd @MAKE_NTPDSIM@
+
+noinst_LIBRARIES= libntpd.a
+
+AM_CPPFLAGS= -I$(top_srcdir)/include -I../include $(LIBOPTS_CFLAGS)
# LDADD might need RESLIB and ADJLIB.
-# If LIBPARSE, we need libntpd.a 2wagain afterwards...
-LDADD = version.o libntpd.a @LIBPARSE@ libntpd.a
+LDADD= version.o libntpd.a @LIBPARSE@
+
+BUILT_SOURCES= ntpd-opts.c ntpd-opts.h ntpd.1 ntpd-opts.texi ntpd-opts.menu
+man_MANS= ntpd.1
+
+BUILT_SOURCES+= ntpdsim-opts.c ntpdsim-opts.h ntpdsim.1 ntpdsim-opts.texi ntpdsim-opts.menu
+man_MANS+= ntpdsim.1
+
# ntpd may need:
# log10 refclock_wwv.o
# sqrt ntp_control.o
# floor refclock_wwv.o
# which are (usually) provided by -lm.
-ntpd_LDADD = $(LDADD) ../libntp/libntp.a -lm @LCRYPTO@
-ntpdsim_LDADD = $(LDADD) ../libntp/libntpsim.a -lm @LCRYPTO@
+ntpd_LDADD = $(LDADD) -lm @LCRYPTO@ $(LIBOPTS_LDADD) ../libntp/libntp.a
+ntpdsim_LDADD = $(LDADD) ../libntp/libntpsim.a -lm @LCRYPTO@ $(LIBOPTS_LDADD)
ntpdsim_CFLAGS = $(CFLAGS) -DSIM
check_y2k_LDADD = $(LDADD) ../libntp/libntp.a
DISTCLEANFILES = .version version.c
-#EXTRA_DIST = ntpd.mak
+EXTRA_DIST = ntpd-opts.def ntpdbase-opts.def ntpdsim-opts.def \
+ refclock_msfees.c \
+ refclock_trak.c \
+ $(BUILT_SOURCES)
ETAGS_ARGS = Makefile.am
### Y2Kfixes
check_PROGRAMS = @MAKE_CHECK_Y2K@
EXTRA_PROGRAMS = check_y2k ntpdsim
+run_ag = cd $(srcdir) && autogen -L ../include --writable
+std_def_list= $(top_srcdir)/include/debug-opt.def \
+ $(top_srcdir)/include/autogen-version.def \
+ $(top_srcdir)/include/copyright.def \
+ $(top_srcdir)/include/version.def
check-local: @MAKE_CHECK_Y2K@
test -z "@MAKE_CHECK_Y2K@" || ./@MAKE_CHECK_Y2K@
# SIM: cmd_args.c ntp_config.c ntp_io.c ntpd.c + ntpsim.c (include/ntpsim.h)
# ntp_resolver.c is presently unused...
-ntpd_SOURCES = cmd_args.c ntp_config.c ntp_io.c ntpd.c
-ntpdsim_SOURCES = $(ntpd_SOURCES) ntpsim.c
-libntpd_a_SOURCES = jupiter.h map_vme.c ntp_control.c \
+ntpd_SOURCES = cmd_args.c ntp_config.c ntp_io.c ntpd.c ntpd-opts.c ntpd-opts.h
+ntpdsim_SOURCES = $(ntpd_SOURCES) ntpsim.c ntpdsim-opts.c ntpdsim-opts.h
+libntpd_a_SOURCES = jupiter.h ntp_control.c \
ntp_crypto.c ntp_filegen.c \
ntp_intres.c ntp_loopfilter.c ntp_monitor.c ntp_peer.c \
ntp_proto.c ntp_refclock.c ntp_request.c \
ntp_restrict.c ntp_timer.c ntp_util.c \
+ ppsapi_timepps.h \
refclock_acts.c refclock_arbiter.c refclock_arc.c refclock_as2201.c \
refclock_atom.c refclock_bancomm.c refclock_chronolog.c \
refclock_chu.c refclock_conf.c refclock_datum.c refclock_dumbclock.c \
refclock_fg.c refclock_gpsvme.c refclock_heath.c refclock_hopfser.c \
refclock_hopfpci.c refclock_hpgps.c refclock_irig.c refclock_jjy.c \
refclock_jupiter.c refclock_leitch.c refclock_local.c \
- refclock_msfees.c refclock_mx4200.c refclock_nmea.c refclock_oncore.c \
- refclock_palisade.c refclock_palisade.h refclock_parse.c \
- refclock_pcf.c refclock_pst.c refclock_ptbacts.c refclock_shm.c \
- refclock_tpro.c refclock_trak.c refclock_true.c refclock_tt560.c \
- refclock_ulink.c refclock_usno.c refclock_wwv.c refclock_wwvb.c \
- refclock_zyfer.c refclock_ripencc.c refclock_neoclock4x.c
+ refclock_mx4200.c refclock_neoclock4x.c \
+ refclock_nmea.c refclock_oncore.c refclock_palisade.c \
+ refclock_palisade.h refclock_parse.c \
+ refclock_pcf.c refclock_pst.c refclock_ripencc.c refclock_shm.c \
+ refclock_tpro.c refclock_true.c refclock_tt560.c \
+ refclock_ulink.c refclock_wwv.c refclock_wwvb.c \
+ refclock_zyfer.c
+
+$(srcdir)/ntpd-opts.h: $(srcdir)/ntpd-opts.c
+$(srcdir)/ntpd-opts.c: $(srcdir)/ntpd-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list)
+ $(run_ag) ntpd-opts.def
+
+$(srcdir)/ntpd.1: $(srcdir)/ntpd-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list)
+ $(run_ag) -Tagman1.tpl -bntpd ntpd-opts.def
+
+$(srcdir)/ntpd-opts.texi $(srcdir)/ntpd-opts.menu: $(srcdir)/ntpd-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list)
+ $(run_ag) -Taginfo.tpl -DLEVEL=section ntpd-opts.def
+
+$(srcdir)/ntpdsim-opts.h: $(srcdir)/ntpdsim-opts.c
+$(srcdir)/ntpdsim-opts.c: $(srcdir)/ntpdsim-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list) $(top_srcdir)/include/homerc.def
+ $(run_ag) ntpdsim-opts.def
+
+$(srcdir)/ntpdsim.1: $(srcdir)/ntpdsim-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list) $(top_srcdir)/include/homerc.def
+ $(run_ag) -Tagman1.tpl -bntpdsim ntpdsim-opts.def
+
+$(srcdir)/ntpdsim-opts.texi $(srcdir)/ntpdsim-opts.menu: $(srcdir)/ntpdsim-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list) $(top_srcdir)/include/homerc.def
+ $(run_ag) -Taginfo.tpl -DLEVEL=section ntpdsim-opts.def
$(PROGRAMS): $(LDADD)
../libntp/libntp.a:
- cd ../libntp && $(MAKE)
+ cd ../libntp && $(MAKE) libntp.a
+
+../libntp/libntpsim.a:
+ cd ../libntp && $(MAKE) libntpsim.a
../libparse/libparse.a:
cd ../libparse && $(MAKE)
+$(top_srcdir)/version :
+ cd $(top_srcdir) && $(MAKE) version
+
version.o: $(ntpd_OBJECTS) ../libntp/libntp.a @LIBPARSE@ Makefile $(top_srcdir)/version
env CSET=`cat $(top_srcdir)/version` $(top_builddir)/scripts/mkver ntpd
$(COMPILE) -c version.c
+
+include ../bincheck.mf
diff --git a/contrib/ntp/ntpd/Makefile.in b/contrib/ntp/ntpd/Makefile.in
index eef0774..ad07930 100644
--- a/contrib/ntp/ntpd/Makefile.in
+++ b/contrib/ntp/ntpd/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -14,6 +14,11 @@
@SET_MAKE@
+# we traditionally installed software in bindir, while it should have gone
+# in sbindir. Now that we offer a choice, look in the "other" installation
+# subdir to warn folks if there is another version there.
+
+
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -21,7 +26,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +41,108 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+ANSI2KNR = ../util/ansi2knr
+bin_PROGRAMS = ntpd$(EXEEXT) @MAKE_NTPDSIM@
+check_PROGRAMS = @MAKE_CHECK_Y2K@
+EXTRA_PROGRAMS = check_y2k$(EXEEXT) ntpdsim$(EXEEXT)
+DIST_COMMON = $(srcdir)/../bincheck.mf $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+subdir = ntpd
+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/hs_ulong_const.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 =
+LIBRARIES = $(noinst_LIBRARIES)
+ARFLAGS = cru
+libntpd_a_AR = $(AR) $(ARFLAGS)
+libntpd_a_LIBADD =
+am_libntpd_a_OBJECTS = ntp_control$U.$(OBJEXT) ntp_crypto$U.$(OBJEXT) \
+ ntp_filegen$U.$(OBJEXT) ntp_intres$U.$(OBJEXT) \
+ ntp_loopfilter$U.$(OBJEXT) ntp_monitor$U.$(OBJEXT) \
+ ntp_peer$U.$(OBJEXT) ntp_proto$U.$(OBJEXT) \
+ ntp_refclock$U.$(OBJEXT) ntp_request$U.$(OBJEXT) \
+ ntp_restrict$U.$(OBJEXT) ntp_timer$U.$(OBJEXT) \
+ ntp_util$U.$(OBJEXT) refclock_acts$U.$(OBJEXT) \
+ refclock_arbiter$U.$(OBJEXT) refclock_arc$U.$(OBJEXT) \
+ refclock_as2201$U.$(OBJEXT) refclock_atom$U.$(OBJEXT) \
+ refclock_bancomm$U.$(OBJEXT) refclock_chronolog$U.$(OBJEXT) \
+ refclock_chu$U.$(OBJEXT) refclock_conf$U.$(OBJEXT) \
+ refclock_datum$U.$(OBJEXT) refclock_dumbclock$U.$(OBJEXT) \
+ refclock_fg$U.$(OBJEXT) refclock_gpsvme$U.$(OBJEXT) \
+ refclock_heath$U.$(OBJEXT) refclock_hopfser$U.$(OBJEXT) \
+ refclock_hopfpci$U.$(OBJEXT) refclock_hpgps$U.$(OBJEXT) \
+ refclock_irig$U.$(OBJEXT) refclock_jjy$U.$(OBJEXT) \
+ refclock_jupiter$U.$(OBJEXT) refclock_leitch$U.$(OBJEXT) \
+ refclock_local$U.$(OBJEXT) refclock_mx4200$U.$(OBJEXT) \
+ refclock_neoclock4x$U.$(OBJEXT) refclock_nmea$U.$(OBJEXT) \
+ refclock_oncore$U.$(OBJEXT) refclock_palisade$U.$(OBJEXT) \
+ refclock_parse$U.$(OBJEXT) refclock_pcf$U.$(OBJEXT) \
+ refclock_pst$U.$(OBJEXT) refclock_ripencc$U.$(OBJEXT) \
+ refclock_shm$U.$(OBJEXT) refclock_tpro$U.$(OBJEXT) \
+ refclock_true$U.$(OBJEXT) refclock_tt560$U.$(OBJEXT) \
+ refclock_ulink$U.$(OBJEXT) refclock_wwv$U.$(OBJEXT) \
+ refclock_wwvb$U.$(OBJEXT) refclock_zyfer$U.$(OBJEXT)
+libntpd_a_OBJECTS = $(am_libntpd_a_OBJECTS)
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+check_y2k_SOURCES = check_y2k.c
+check_y2k_OBJECTS = check_y2k$U.$(OBJEXT)
+am__DEPENDENCIES_1 = version.o libntpd.a
+check_y2k_DEPENDENCIES = $(am__DEPENDENCIES_1) ../libntp/libntp.a
+am_ntpd_OBJECTS = cmd_args$U.$(OBJEXT) ntp_config$U.$(OBJEXT) \
+ ntp_io$U.$(OBJEXT) ntpd$U.$(OBJEXT) ntpd-opts$U.$(OBJEXT)
+ntpd_OBJECTS = $(am_ntpd_OBJECTS)
+am__DEPENDENCIES_2 =
+ntpd_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
+ ../libntp/libntp.a
+am__objects_1 = ntpdsim-cmd_args$U.$(OBJEXT) \
+ ntpdsim-ntp_config$U.$(OBJEXT) ntpdsim-ntp_io$U.$(OBJEXT) \
+ ntpdsim-ntpd$U.$(OBJEXT) ntpdsim-ntpd-opts$U.$(OBJEXT)
+am_ntpdsim_OBJECTS = $(am__objects_1) ntpdsim-ntpsim$U.$(OBJEXT) \
+ ntpdsim-ntpdsim-opts$U.$(OBJEXT)
+ntpdsim_OBJECTS = $(am_ntpdsim_OBJECTS)
+ntpdsim_DEPENDENCIES = $(am__DEPENDENCIES_1) ../libntp/libntpsim.a \
+ $(am__DEPENDENCIES_2)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libntpd_a_SOURCES) check_y2k.c $(ntpd_SOURCES) \
+ $(ntpdsim_SOURCES)
+DIST_SOURCES = $(libntpd_a_SOURCES) check_y2k.c $(ntpd_SOURCES) \
+ $(ntpdsim_SOURCES)
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +150,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +166,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,15 +221,22 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
-bindir = @bindir@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = ${exec_prefix}/${BINSUBDIR}
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
@@ -139,6 +256,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,208 +264,98 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-
-#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
-bin_PROGRAMS = ntpd @MAKE_NTPDSIM@
noinst_LIBRARIES = libntpd.a
-INCLUDES = -I$(top_srcdir)/include -I../include
+AM_CPPFLAGS = -I$(top_srcdir)/include -I../include $(LIBOPTS_CFLAGS)
# LDADD might need RESLIB and ADJLIB.
-# If LIBPARSE, we need libntpd.a 2wagain afterwards...
-LDADD = version.o libntpd.a @LIBPARSE@ libntpd.a
+LDADD = version.o libntpd.a @LIBPARSE@
+BUILT_SOURCES = ntpd-opts.c ntpd-opts.h ntpd.1 ntpd-opts.texi \
+ ntpd-opts.menu ntpdsim-opts.c ntpdsim-opts.h ntpdsim.1 \
+ ntpdsim-opts.texi ntpdsim-opts.menu
+man_MANS = ntpd.1 ntpdsim.1
+
# ntpd may need:
# log10 refclock_wwv.o
# sqrt ntp_control.o
# floor refclock_wwv.o
# which are (usually) provided by -lm.
-ntpd_LDADD = $(LDADD) ../libntp/libntp.a -lm @LCRYPTO@
-ntpdsim_LDADD = $(LDADD) ../libntp/libntpsim.a -lm @LCRYPTO@
+ntpd_LDADD = $(LDADD) -lm @LCRYPTO@ $(LIBOPTS_LDADD) ../libntp/libntp.a
+ntpdsim_LDADD = $(LDADD) ../libntp/libntpsim.a -lm @LCRYPTO@ $(LIBOPTS_LDADD)
ntpdsim_CFLAGS = $(CFLAGS) -DSIM
check_y2k_LDADD = $(LDADD) ../libntp/libntp.a
DISTCLEANFILES = .version version.c
-#EXTRA_DIST = ntpd.mak
+EXTRA_DIST = ntpd-opts.def ntpdbase-opts.def ntpdsim-opts.def \
+ refclock_msfees.c \
+ refclock_trak.c \
+ $(BUILT_SOURCES)
+
ETAGS_ARGS = Makefile.am
-### Y2Kfixes
-check_PROGRAMS = @MAKE_CHECK_Y2K@
-EXTRA_PROGRAMS = check_y2k ntpdsim
+run_ag = cd $(srcdir) && autogen -L ../include --writable
+std_def_list = $(top_srcdir)/include/debug-opt.def \
+ $(top_srcdir)/include/autogen-version.def \
+ $(top_srcdir)/include/copyright.def \
+ $(top_srcdir)/include/version.def
+
# SIM: cmd_args.c ntp_config.c ntp_io.c ntpd.c + ntpsim.c (include/ntpsim.h)
# ntp_resolver.c is presently unused...
-ntpd_SOURCES = cmd_args.c ntp_config.c ntp_io.c ntpd.c
-ntpdsim_SOURCES = $(ntpd_SOURCES) ntpsim.c
-libntpd_a_SOURCES = jupiter.h map_vme.c ntp_control.c \
+ntpd_SOURCES = cmd_args.c ntp_config.c ntp_io.c ntpd.c ntpd-opts.c ntpd-opts.h
+ntpdsim_SOURCES = $(ntpd_SOURCES) ntpsim.c ntpdsim-opts.c ntpdsim-opts.h
+libntpd_a_SOURCES = jupiter.h ntp_control.c \
ntp_crypto.c ntp_filegen.c \
ntp_intres.c ntp_loopfilter.c ntp_monitor.c ntp_peer.c \
ntp_proto.c ntp_refclock.c ntp_request.c \
ntp_restrict.c ntp_timer.c ntp_util.c \
+ ppsapi_timepps.h \
refclock_acts.c refclock_arbiter.c refclock_arc.c refclock_as2201.c \
refclock_atom.c refclock_bancomm.c refclock_chronolog.c \
refclock_chu.c refclock_conf.c refclock_datum.c refclock_dumbclock.c \
refclock_fg.c refclock_gpsvme.c refclock_heath.c refclock_hopfser.c \
refclock_hopfpci.c refclock_hpgps.c refclock_irig.c refclock_jjy.c \
refclock_jupiter.c refclock_leitch.c refclock_local.c \
- refclock_msfees.c refclock_mx4200.c refclock_nmea.c refclock_oncore.c \
- refclock_palisade.c refclock_palisade.h refclock_parse.c \
- refclock_pcf.c refclock_pst.c refclock_ptbacts.c refclock_shm.c \
- refclock_tpro.c refclock_trak.c refclock_true.c refclock_tt560.c \
- refclock_ulink.c refclock_usno.c refclock_wwv.c refclock_wwvb.c \
- refclock_zyfer.c refclock_ripencc.c refclock_neoclock4x.c
-
-subdir = ntpd
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
+ refclock_mx4200.c refclock_neoclock4x.c \
+ refclock_nmea.c refclock_oncore.c refclock_palisade.c \
+ refclock_palisade.h refclock_parse.c \
+ refclock_pcf.c refclock_pst.c refclock_ripencc.c refclock_shm.c \
+ refclock_tpro.c refclock_true.c refclock_tt560.c \
+ refclock_ulink.c refclock_wwv.c refclock_wwvb.c \
+ refclock_zyfer.c
-libntpd_a_AR = $(AR) cru
-libntpd_a_LIBADD =
-am_libntpd_a_OBJECTS = map_vme$U.$(OBJEXT) ntp_control$U.$(OBJEXT) \
- ntp_crypto$U.$(OBJEXT) ntp_filegen$U.$(OBJEXT) \
- ntp_intres$U.$(OBJEXT) ntp_loopfilter$U.$(OBJEXT) \
- ntp_monitor$U.$(OBJEXT) ntp_peer$U.$(OBJEXT) \
- ntp_proto$U.$(OBJEXT) ntp_refclock$U.$(OBJEXT) \
- ntp_request$U.$(OBJEXT) ntp_restrict$U.$(OBJEXT) \
- ntp_timer$U.$(OBJEXT) ntp_util$U.$(OBJEXT) \
- refclock_acts$U.$(OBJEXT) refclock_arbiter$U.$(OBJEXT) \
- refclock_arc$U.$(OBJEXT) refclock_as2201$U.$(OBJEXT) \
- refclock_atom$U.$(OBJEXT) refclock_bancomm$U.$(OBJEXT) \
- refclock_chronolog$U.$(OBJEXT) refclock_chu$U.$(OBJEXT) \
- refclock_conf$U.$(OBJEXT) refclock_datum$U.$(OBJEXT) \
- refclock_dumbclock$U.$(OBJEXT) refclock_fg$U.$(OBJEXT) \
- refclock_gpsvme$U.$(OBJEXT) refclock_heath$U.$(OBJEXT) \
- refclock_hopfser$U.$(OBJEXT) refclock_hopfpci$U.$(OBJEXT) \
- refclock_hpgps$U.$(OBJEXT) refclock_irig$U.$(OBJEXT) \
- refclock_jjy$U.$(OBJEXT) refclock_jupiter$U.$(OBJEXT) \
- refclock_leitch$U.$(OBJEXT) refclock_local$U.$(OBJEXT) \
- refclock_msfees$U.$(OBJEXT) refclock_mx4200$U.$(OBJEXT) \
- refclock_nmea$U.$(OBJEXT) refclock_oncore$U.$(OBJEXT) \
- refclock_palisade$U.$(OBJEXT) refclock_parse$U.$(OBJEXT) \
- refclock_pcf$U.$(OBJEXT) refclock_pst$U.$(OBJEXT) \
- refclock_ptbacts$U.$(OBJEXT) refclock_shm$U.$(OBJEXT) \
- refclock_tpro$U.$(OBJEXT) refclock_trak$U.$(OBJEXT) \
- refclock_true$U.$(OBJEXT) refclock_tt560$U.$(OBJEXT) \
- refclock_ulink$U.$(OBJEXT) refclock_usno$U.$(OBJEXT) \
- refclock_wwv$U.$(OBJEXT) refclock_wwvb$U.$(OBJEXT) \
- refclock_zyfer$U.$(OBJEXT) refclock_ripencc$U.$(OBJEXT) \
- refclock_neoclock4x$U.$(OBJEXT)
-libntpd_a_OBJECTS = $(am_libntpd_a_OBJECTS)
-EXTRA_PROGRAMS = check_y2k$(EXEEXT) ntpdsim$(EXEEXT)
-bin_PROGRAMS = ntpd$(EXEEXT) @MAKE_NTPDSIM@
-check_PROGRAMS = @MAKE_CHECK_Y2K@
-PROGRAMS = $(bin_PROGRAMS)
-
-check_y2k_SOURCES = check_y2k.c
-check_y2k_OBJECTS = check_y2k$U.$(OBJEXT)
-check_y2k_DEPENDENCIES = version.o libntpd.a libntpd.a \
- ../libntp/libntp.a
-check_y2k_LDFLAGS =
-am_ntpd_OBJECTS = cmd_args$U.$(OBJEXT) ntp_config$U.$(OBJEXT) \
- ntp_io$U.$(OBJEXT) ntpd$U.$(OBJEXT)
-ntpd_OBJECTS = $(am_ntpd_OBJECTS)
-ntpd_DEPENDENCIES = version.o libntpd.a libntpd.a ../libntp/libntp.a
-ntpd_LDFLAGS =
-am__objects_1 = ntpdsim-cmd_args$U.$(OBJEXT) \
- ntpdsim-ntp_config$U.$(OBJEXT) ntpdsim-ntp_io$U.$(OBJEXT) \
- ntpdsim-ntpd$U.$(OBJEXT)
-am_ntpdsim_OBJECTS = $(am__objects_1) ntpdsim-ntpsim$U.$(OBJEXT)
-ntpdsim_OBJECTS = $(am_ntpdsim_OBJECTS)
-ntpdsim_DEPENDENCIES = version.o libntpd.a libntpd.a \
- ../libntp/libntpsim.a
-ntpdsim_LDFLAGS =
-
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/check_y2k$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/cmd_args$U.Po ./$(DEPDIR)/map_vme$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_config$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_control$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_crypto$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_filegen$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_intres$U.Po ./$(DEPDIR)/ntp_io$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_loopfilter$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_monitor$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_peer$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_proto$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_refclock$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_request$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_restrict$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_timer$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp_util$U.Po ./$(DEPDIR)/ntpd$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntpdsim-cmd_args$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntpdsim-ntp_config$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntpdsim-ntp_io$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntpdsim-ntpd$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntpdsim-ntpsim$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_acts$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_arbiter$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_arc$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_as2201$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_atom$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_bancomm$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_chronolog$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_chu$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_conf$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_datum$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_dumbclock$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_fg$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_gpsvme$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_heath$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_hopfpci$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_hopfser$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_hpgps$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_irig$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_jjy$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_jupiter$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_leitch$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_local$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_msfees$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_mx4200$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_neoclock4x$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_nmea$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_oncore$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_palisade$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_parse$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_pcf$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_pst$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_ptbacts$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_ripencc$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_shm$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_tpro$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_trak$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_true$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_tt560$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_ulink$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_usno$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_wwv$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_wwvb$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/refclock_zyfer$U.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = $(libntpd_a_SOURCES) check_y2k.c $(ntpd_SOURCES) \
- $(ntpdsim_SOURCES)
-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
-SOURCES = $(libntpd_a_SOURCES) check_y2k.c $(ntpd_SOURCES) $(ntpdsim_SOURCES)
-
-all: all-am
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../bincheck.mf $(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 ntpd/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu ntpd/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-AR = ar
+ $(AUTOMAKE) --foreign ntpd/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
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
@@ -355,17 +363,17 @@ libntpd.a: $(libntpd_a_OBJECTS) $(libntpd_a_DEPENDENCIES)
-rm -f libntpd.a
$(libntpd_a_AR) libntpd.a $(libntpd_a_OBJECTS) $(libntpd_a_LIBADD)
$(RANLIB) libntpd.a
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
+ || test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
@@ -373,15 +381,23 @@ uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
- rm -f $(DESTDIR)$(bindir)/$$f; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
clean-checkPROGRAMS:
- -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
+ @list='$(check_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
check_y2k$(EXEEXT): $(check_y2k_OBJECTS) $(check_y2k_DEPENDENCIES)
@rm -f check_y2k$(EXEEXT)
$(LINK) $(check_y2k_LDFLAGS) $(check_y2k_OBJECTS) $(check_y2k_LDADD) $(LIBS)
@@ -393,12 +409,10 @@ ntpdsim$(EXEEXT): $(ntpdsim_OBJECTS) $(ntpdsim_DEPENDENCIES)
$(LINK) $(ntpdsim_LDFLAGS) $(ntpdsim_OBJECTS) $(ntpdsim_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-
-ANSI2KNR = ../util/ansi2knr
../util/ansi2knr:
cd ../util && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
@@ -407,7 +421,6 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_y2k$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cmd_args$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/map_vme$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_config$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_control$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_crypto$U.Po@am__quote@
@@ -424,10 +437,13 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_timer$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_util$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpd$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpd-opts$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdsim-cmd_args$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdsim-ntp_config$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdsim-ntp_io$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdsim-ntpd$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdsim-ntpd-opts$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdsim-ntpdsim-opts$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdsim-ntpsim$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_acts$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_arbiter$U.Po@am__quote@
@@ -451,7 +467,6 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_jupiter$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_leitch$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_local$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_msfees$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_mx4200$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_neoclock4x$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_nmea$U.Po@am__quote@
@@ -460,156 +475,138 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_parse$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_pcf$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_pst$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_ptbacts$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_ripencc$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_shm$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_tpro$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_trak$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_true$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_tt560$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_ulink$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_usno$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_wwv$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_wwvb$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refclock_zyfer$U.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
ntpdsim-cmd_args$U.o: cmd_args$U.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-cmd_args$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo" \
-@am__fastdepCC_TRUE@ -c -o ntpdsim-cmd_args$U.o `test -f 'cmd_args$U.c' || echo '$(srcdir)/'`cmd_args$U.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo" "$(DEPDIR)/ntpdsim-cmd_args$U.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-cmd_args$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo" -c -o ntpdsim-cmd_args$U.o `test -f 'cmd_args$U.c' || echo '$(srcdir)/'`cmd_args$U.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo" "$(DEPDIR)/ntpdsim-cmd_args$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmd_args$U.c' object='ntpdsim-cmd_args$U.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/ntpdsim-cmd_args$U.Po' tmpdepfile='$(DEPDIR)/ntpdsim-cmd_args$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-cmd_args$U.o `test -f 'cmd_args$U.c' || echo '$(srcdir)/'`cmd_args$U.c
ntpdsim-cmd_args$U.obj: cmd_args$U.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-cmd_args$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo" \
-@am__fastdepCC_TRUE@ -c -o ntpdsim-cmd_args$U.obj `if test -f 'cmd_args$U.c'; then $(CYGPATH_W) 'cmd_args$U.c'; else $(CYGPATH_W) '$(srcdir)/cmd_args$U.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo" "$(DEPDIR)/ntpdsim-cmd_args$U.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-cmd_args$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo" -c -o ntpdsim-cmd_args$U.obj `if test -f 'cmd_args$U.c'; then $(CYGPATH_W) 'cmd_args$U.c'; else $(CYGPATH_W) '$(srcdir)/cmd_args$U.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo" "$(DEPDIR)/ntpdsim-cmd_args$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-cmd_args$U.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cmd_args$U.c' object='ntpdsim-cmd_args$U.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/ntpdsim-cmd_args$U.Po' tmpdepfile='$(DEPDIR)/ntpdsim-cmd_args$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-cmd_args$U.obj `if test -f 'cmd_args$U.c'; then $(CYGPATH_W) 'cmd_args$U.c'; else $(CYGPATH_W) '$(srcdir)/cmd_args$U.c'; fi`
ntpdsim-ntp_config$U.o: ntp_config$U.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_config$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo" \
-@am__fastdepCC_TRUE@ -c -o ntpdsim-ntp_config$U.o `test -f 'ntp_config$U.c' || echo '$(srcdir)/'`ntp_config$U.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo" "$(DEPDIR)/ntpdsim-ntp_config$U.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_config$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo" -c -o ntpdsim-ntp_config$U.o `test -f 'ntp_config$U.c' || echo '$(srcdir)/'`ntp_config$U.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo" "$(DEPDIR)/ntpdsim-ntp_config$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_config$U.c' object='ntpdsim-ntp_config$U.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/ntpdsim-ntp_config$U.Po' tmpdepfile='$(DEPDIR)/ntpdsim-ntp_config$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_config$U.o `test -f 'ntp_config$U.c' || echo '$(srcdir)/'`ntp_config$U.c
ntpdsim-ntp_config$U.obj: ntp_config$U.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_config$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo" \
-@am__fastdepCC_TRUE@ -c -o ntpdsim-ntp_config$U.obj `if test -f 'ntp_config$U.c'; then $(CYGPATH_W) 'ntp_config$U.c'; else $(CYGPATH_W) '$(srcdir)/ntp_config$U.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo" "$(DEPDIR)/ntpdsim-ntp_config$U.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_config$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo" -c -o ntpdsim-ntp_config$U.obj `if test -f 'ntp_config$U.c'; then $(CYGPATH_W) 'ntp_config$U.c'; else $(CYGPATH_W) '$(srcdir)/ntp_config$U.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo" "$(DEPDIR)/ntpdsim-ntp_config$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntp_config$U.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_config$U.c' object='ntpdsim-ntp_config$U.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/ntpdsim-ntp_config$U.Po' tmpdepfile='$(DEPDIR)/ntpdsim-ntp_config$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_config$U.obj `if test -f 'ntp_config$U.c'; then $(CYGPATH_W) 'ntp_config$U.c'; else $(CYGPATH_W) '$(srcdir)/ntp_config$U.c'; fi`
ntpdsim-ntp_io$U.o: ntp_io$U.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_io$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo" \
-@am__fastdepCC_TRUE@ -c -o ntpdsim-ntp_io$U.o `test -f 'ntp_io$U.c' || echo '$(srcdir)/'`ntp_io$U.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo" "$(DEPDIR)/ntpdsim-ntp_io$U.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_io$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo" -c -o ntpdsim-ntp_io$U.o `test -f 'ntp_io$U.c' || echo '$(srcdir)/'`ntp_io$U.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo" "$(DEPDIR)/ntpdsim-ntp_io$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_io$U.c' object='ntpdsim-ntp_io$U.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/ntpdsim-ntp_io$U.Po' tmpdepfile='$(DEPDIR)/ntpdsim-ntp_io$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_io$U.o `test -f 'ntp_io$U.c' || echo '$(srcdir)/'`ntp_io$U.c
ntpdsim-ntp_io$U.obj: ntp_io$U.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_io$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo" \
-@am__fastdepCC_TRUE@ -c -o ntpdsim-ntp_io$U.obj `if test -f 'ntp_io$U.c'; then $(CYGPATH_W) 'ntp_io$U.c'; else $(CYGPATH_W) '$(srcdir)/ntp_io$U.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo" "$(DEPDIR)/ntpdsim-ntp_io$U.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntp_io$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo" -c -o ntpdsim-ntp_io$U.obj `if test -f 'ntp_io$U.c'; then $(CYGPATH_W) 'ntp_io$U.c'; else $(CYGPATH_W) '$(srcdir)/ntp_io$U.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo" "$(DEPDIR)/ntpdsim-ntp_io$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntp_io$U.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntp_io$U.c' object='ntpdsim-ntp_io$U.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/ntpdsim-ntp_io$U.Po' tmpdepfile='$(DEPDIR)/ntpdsim-ntp_io$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntp_io$U.obj `if test -f 'ntp_io$U.c'; then $(CYGPATH_W) 'ntp_io$U.c'; else $(CYGPATH_W) '$(srcdir)/ntp_io$U.c'; fi`
ntpdsim-ntpd$U.o: ntpd$U.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpd$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpd$U.Tpo" \
-@am__fastdepCC_TRUE@ -c -o ntpdsim-ntpd$U.o `test -f 'ntpd$U.c' || echo '$(srcdir)/'`ntpd$U.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpd$U.Tpo" "$(DEPDIR)/ntpdsim-ntpd$U.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/ntpdsim-ntpd$U.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpd$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpd$U.Tpo" -c -o ntpdsim-ntpd$U.o `test -f 'ntpd$U.c' || echo '$(srcdir)/'`ntpd$U.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpd$U.Tpo" "$(DEPDIR)/ntpdsim-ntpd$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntpd$U.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpd$U.c' object='ntpdsim-ntpd$U.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/ntpdsim-ntpd$U.Po' tmpdepfile='$(DEPDIR)/ntpdsim-ntpd$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd$U.o `test -f 'ntpd$U.c' || echo '$(srcdir)/'`ntpd$U.c
ntpdsim-ntpd$U.obj: ntpd$U.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpd$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpd$U.Tpo" \
-@am__fastdepCC_TRUE@ -c -o ntpdsim-ntpd$U.obj `if test -f 'ntpd$U.c'; then $(CYGPATH_W) 'ntpd$U.c'; else $(CYGPATH_W) '$(srcdir)/ntpd$U.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpd$U.Tpo" "$(DEPDIR)/ntpdsim-ntpd$U.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/ntpdsim-ntpd$U.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpd$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpd$U.Tpo" -c -o ntpdsim-ntpd$U.obj `if test -f 'ntpd$U.c'; then $(CYGPATH_W) 'ntpd$U.c'; else $(CYGPATH_W) '$(srcdir)/ntpd$U.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpd$U.Tpo" "$(DEPDIR)/ntpdsim-ntpd$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntpd$U.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpd$U.c' object='ntpdsim-ntpd$U.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/ntpdsim-ntpd$U.Po' tmpdepfile='$(DEPDIR)/ntpdsim-ntpd$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd$U.obj `if test -f 'ntpd$U.c'; then $(CYGPATH_W) 'ntpd$U.c'; else $(CYGPATH_W) '$(srcdir)/ntpd$U.c'; fi`
+ntpdsim-ntpd-opts$U.o: ntpd-opts$U.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpd-opts$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpd-opts$U.Tpo" -c -o ntpdsim-ntpd-opts$U.o `test -f 'ntpd-opts$U.c' || echo '$(srcdir)/'`ntpd-opts$U.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpd-opts$U.Tpo" "$(DEPDIR)/ntpdsim-ntpd-opts$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntpd-opts$U.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpd-opts$U.c' object='ntpdsim-ntpd-opts$U.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd-opts$U.o `test -f 'ntpd-opts$U.c' || echo '$(srcdir)/'`ntpd-opts$U.c
+
+ntpdsim-ntpd-opts$U.obj: ntpd-opts$U.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpd-opts$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpd-opts$U.Tpo" -c -o ntpdsim-ntpd-opts$U.obj `if test -f 'ntpd-opts$U.c'; then $(CYGPATH_W) 'ntpd-opts$U.c'; else $(CYGPATH_W) '$(srcdir)/ntpd-opts$U.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpd-opts$U.Tpo" "$(DEPDIR)/ntpdsim-ntpd-opts$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntpd-opts$U.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpd-opts$U.c' object='ntpdsim-ntpd-opts$U.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpd-opts$U.obj `if test -f 'ntpd-opts$U.c'; then $(CYGPATH_W) 'ntpd-opts$U.c'; else $(CYGPATH_W) '$(srcdir)/ntpd-opts$U.c'; fi`
+
ntpdsim-ntpsim$U.o: ntpsim$U.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpsim$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo" \
-@am__fastdepCC_TRUE@ -c -o ntpdsim-ntpsim$U.o `test -f 'ntpsim$U.c' || echo '$(srcdir)/'`ntpsim$U.c; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo" "$(DEPDIR)/ntpdsim-ntpsim$U.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpsim$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo" -c -o ntpdsim-ntpsim$U.o `test -f 'ntpsim$U.c' || echo '$(srcdir)/'`ntpsim$U.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo" "$(DEPDIR)/ntpdsim-ntpsim$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpsim$U.c' object='ntpdsim-ntpsim$U.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/ntpdsim-ntpsim$U.Po' tmpdepfile='$(DEPDIR)/ntpdsim-ntpsim$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpsim$U.o `test -f 'ntpsim$U.c' || echo '$(srcdir)/'`ntpsim$U.c
ntpdsim-ntpsim$U.obj: ntpsim$U.c
-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpsim$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo" \
-@am__fastdepCC_TRUE@ -c -o ntpdsim-ntpsim$U.obj `if test -f 'ntpsim$U.c'; then $(CYGPATH_W) 'ntpsim$U.c'; else $(CYGPATH_W) '$(srcdir)/ntpsim$U.c'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo" "$(DEPDIR)/ntpdsim-ntpsim$U.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpsim$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo" -c -o ntpdsim-ntpsim$U.obj `if test -f 'ntpsim$U.c'; then $(CYGPATH_W) 'ntpsim$U.c'; else $(CYGPATH_W) '$(srcdir)/ntpsim$U.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo" "$(DEPDIR)/ntpdsim-ntpsim$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntpsim$U.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpsim$U.c' object='ntpdsim-ntpsim$U.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/ntpdsim-ntpsim$U.Po' tmpdepfile='$(DEPDIR)/ntpdsim-ntpsim$U.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpsim$U.obj `if test -f 'ntpsim$U.c'; then $(CYGPATH_W) 'ntpsim$U.c'; else $(CYGPATH_W) '$(srcdir)/ntpsim$U.c'; fi`
+
+ntpdsim-ntpdsim-opts$U.o: ntpdsim-opts$U.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpdsim-opts$U.o -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpdsim-opts$U.Tpo" -c -o ntpdsim-ntpdsim-opts$U.o `test -f 'ntpdsim-opts$U.c' || echo '$(srcdir)/'`ntpdsim-opts$U.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpdsim-opts$U.Tpo" "$(DEPDIR)/ntpdsim-ntpdsim-opts$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntpdsim-opts$U.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpdsim-opts$U.c' object='ntpdsim-ntpdsim-opts$U.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpdsim-opts$U.o `test -f 'ntpdsim-opts$U.c' || echo '$(srcdir)/'`ntpdsim-opts$U.c
+
+ntpdsim-ntpdsim-opts$U.obj: ntpdsim-opts$U.c
+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -MT ntpdsim-ntpdsim-opts$U.obj -MD -MP -MF "$(DEPDIR)/ntpdsim-ntpdsim-opts$U.Tpo" -c -o ntpdsim-ntpdsim-opts$U.obj `if test -f 'ntpdsim-opts$U.c'; then $(CYGPATH_W) 'ntpdsim-opts$U.c'; else $(CYGPATH_W) '$(srcdir)/ntpdsim-opts$U.c'; fi`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/ntpdsim-ntpdsim-opts$U.Tpo" "$(DEPDIR)/ntpdsim-ntpdsim-opts$U.Po"; else rm -f "$(DEPDIR)/ntpdsim-ntpdsim-opts$U.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ntpdsim-opts$U.c' object='ntpdsim-ntpdsim-opts$U.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ntpdsim_CFLAGS) $(CFLAGS) -c -o ntpdsim-ntpdsim-opts$U.obj `if test -f 'ntpdsim-opts$U.c'; then $(CYGPATH_W) 'ntpdsim-opts$U.c'; else $(CYGPATH_W) '$(srcdir)/ntpdsim-opts$U.c'; fi`
check_y2k_.c: check_y2k.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/check_y2k.c; then echo $(srcdir)/check_y2k.c; else echo check_y2k.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
cmd_args_.c: cmd_args.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/cmd_args.c; then echo $(srcdir)/cmd_args.c; else echo cmd_args.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-map_vme_.c: map_vme.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/map_vme.c; then echo $(srcdir)/map_vme.c; else echo map_vme.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntp_config_.c: ntp_config.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntp_config.c; then echo $(srcdir)/ntp_config.c; else echo ntp_config.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntp_control_.c: ntp_control.c $(ANSI2KNR)
@@ -642,6 +639,10 @@ ntp_util_.c: ntp_util.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntp_util.c; then echo $(srcdir)/ntp_util.c; else echo ntp_util.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntpd_.c: ntpd.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpd.c; then echo $(srcdir)/ntpd.c; else echo ntpd.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+ntpd-opts_.c: ntpd-opts.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpd-opts.c; then echo $(srcdir)/ntpd-opts.c; else echo ntpd-opts.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+ntpdsim-opts_.c: ntpdsim-opts.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpdsim-opts.c; then echo $(srcdir)/ntpdsim-opts.c; else echo ntpdsim-opts.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntpsim_.c: ntpsim.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpsim.c; then echo $(srcdir)/ntpsim.c; else echo ntpsim.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_acts_.c: refclock_acts.c $(ANSI2KNR)
@@ -688,8 +689,6 @@ refclock_leitch_.c: refclock_leitch.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_leitch.c; then echo $(srcdir)/refclock_leitch.c; else echo refclock_leitch.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_local_.c: refclock_local.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_local.c; then echo $(srcdir)/refclock_local.c; else echo refclock_local.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-refclock_msfees_.c: refclock_msfees.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_msfees.c; then echo $(srcdir)/refclock_msfees.c; else echo refclock_msfees.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_mx4200_.c: refclock_mx4200.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_mx4200.c; then echo $(srcdir)/refclock_mx4200.c; else echo refclock_mx4200.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_neoclock4x_.c: refclock_neoclock4x.c $(ANSI2KNR)
@@ -706,67 +705,122 @@ refclock_pcf_.c: refclock_pcf.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_pcf.c; then echo $(srcdir)/refclock_pcf.c; else echo refclock_pcf.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_pst_.c: refclock_pst.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_pst.c; then echo $(srcdir)/refclock_pst.c; else echo refclock_pst.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-refclock_ptbacts_.c: refclock_ptbacts.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_ptbacts.c; then echo $(srcdir)/refclock_ptbacts.c; else echo refclock_ptbacts.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_ripencc_.c: refclock_ripencc.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_ripencc.c; then echo $(srcdir)/refclock_ripencc.c; else echo refclock_ripencc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_shm_.c: refclock_shm.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_shm.c; then echo $(srcdir)/refclock_shm.c; else echo refclock_shm.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_tpro_.c: refclock_tpro.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_tpro.c; then echo $(srcdir)/refclock_tpro.c; else echo refclock_tpro.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-refclock_trak_.c: refclock_trak.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_trak.c; then echo $(srcdir)/refclock_trak.c; else echo refclock_trak.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_true_.c: refclock_true.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_true.c; then echo $(srcdir)/refclock_true.c; else echo refclock_true.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_tt560_.c: refclock_tt560.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_tt560.c; then echo $(srcdir)/refclock_tt560.c; else echo refclock_tt560.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_ulink_.c: refclock_ulink.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_ulink.c; then echo $(srcdir)/refclock_ulink.c; else echo refclock_ulink.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-refclock_usno_.c: refclock_usno.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_usno.c; then echo $(srcdir)/refclock_usno.c; else echo refclock_usno.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_wwv_.c: refclock_wwv.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_wwv.c; then echo $(srcdir)/refclock_wwv.c; else echo refclock_wwv.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_wwvb_.c: refclock_wwvb.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_wwvb.c; then echo $(srcdir)/refclock_wwvb.c; else echo refclock_wwvb.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
refclock_zyfer_.c: refclock_zyfer.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/refclock_zyfer.c; then echo $(srcdir)/refclock_zyfer.c; else echo refclock_zyfer.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-check_y2k_.$(OBJEXT) cmd_args_.$(OBJEXT) map_vme_.$(OBJEXT) \
-ntp_config_.$(OBJEXT) ntp_control_.$(OBJEXT) ntp_crypto_.$(OBJEXT) \
-ntp_filegen_.$(OBJEXT) ntp_intres_.$(OBJEXT) ntp_io_.$(OBJEXT) \
-ntp_loopfilter_.$(OBJEXT) ntp_monitor_.$(OBJEXT) ntp_peer_.$(OBJEXT) \
-ntp_proto_.$(OBJEXT) ntp_refclock_.$(OBJEXT) ntp_request_.$(OBJEXT) \
-ntp_restrict_.$(OBJEXT) ntp_timer_.$(OBJEXT) ntp_util_.$(OBJEXT) \
-ntpd_.$(OBJEXT) ntpsim_.$(OBJEXT) refclock_acts_.$(OBJEXT) \
-refclock_arbiter_.$(OBJEXT) refclock_arc_.$(OBJEXT) \
-refclock_as2201_.$(OBJEXT) refclock_atom_.$(OBJEXT) \
-refclock_bancomm_.$(OBJEXT) refclock_chronolog_.$(OBJEXT) \
-refclock_chu_.$(OBJEXT) refclock_conf_.$(OBJEXT) \
-refclock_datum_.$(OBJEXT) refclock_dumbclock_.$(OBJEXT) \
-refclock_fg_.$(OBJEXT) refclock_gpsvme_.$(OBJEXT) \
-refclock_heath_.$(OBJEXT) refclock_hopfpci_.$(OBJEXT) \
-refclock_hopfser_.$(OBJEXT) refclock_hpgps_.$(OBJEXT) \
-refclock_irig_.$(OBJEXT) refclock_jjy_.$(OBJEXT) \
-refclock_jupiter_.$(OBJEXT) refclock_leitch_.$(OBJEXT) \
-refclock_local_.$(OBJEXT) refclock_msfees_.$(OBJEXT) \
-refclock_mx4200_.$(OBJEXT) refclock_neoclock4x_.$(OBJEXT) \
-refclock_nmea_.$(OBJEXT) refclock_oncore_.$(OBJEXT) \
-refclock_palisade_.$(OBJEXT) refclock_parse_.$(OBJEXT) \
-refclock_pcf_.$(OBJEXT) refclock_pst_.$(OBJEXT) \
-refclock_ptbacts_.$(OBJEXT) refclock_ripencc_.$(OBJEXT) \
-refclock_shm_.$(OBJEXT) refclock_tpro_.$(OBJEXT) \
-refclock_trak_.$(OBJEXT) refclock_true_.$(OBJEXT) \
-refclock_tt560_.$(OBJEXT) refclock_ulink_.$(OBJEXT) \
-refclock_usno_.$(OBJEXT) refclock_wwv_.$(OBJEXT) \
-refclock_wwvb_.$(OBJEXT) refclock_zyfer_.$(OBJEXT) : $(ANSI2KNR)
+check_y2k_.$(OBJEXT) check_y2k_.lo cmd_args_.$(OBJEXT) cmd_args_.lo \
+ntp_config_.$(OBJEXT) ntp_config_.lo ntp_control_.$(OBJEXT) \
+ntp_control_.lo ntp_crypto_.$(OBJEXT) ntp_crypto_.lo \
+ntp_filegen_.$(OBJEXT) ntp_filegen_.lo ntp_intres_.$(OBJEXT) \
+ntp_intres_.lo ntp_io_.$(OBJEXT) ntp_io_.lo ntp_loopfilter_.$(OBJEXT) \
+ntp_loopfilter_.lo ntp_monitor_.$(OBJEXT) ntp_monitor_.lo \
+ntp_peer_.$(OBJEXT) ntp_peer_.lo ntp_proto_.$(OBJEXT) ntp_proto_.lo \
+ntp_refclock_.$(OBJEXT) ntp_refclock_.lo ntp_request_.$(OBJEXT) \
+ntp_request_.lo ntp_restrict_.$(OBJEXT) ntp_restrict_.lo \
+ntp_timer_.$(OBJEXT) ntp_timer_.lo ntp_util_.$(OBJEXT) ntp_util_.lo \
+ntpd_.$(OBJEXT) ntpd_.lo ntpd-opts_.$(OBJEXT) ntpd-opts_.lo \
+ntpdsim-opts_.$(OBJEXT) ntpdsim-opts_.lo ntpsim_.$(OBJEXT) ntpsim_.lo \
+refclock_acts_.$(OBJEXT) refclock_acts_.lo refclock_arbiter_.$(OBJEXT) \
+refclock_arbiter_.lo refclock_arc_.$(OBJEXT) refclock_arc_.lo \
+refclock_as2201_.$(OBJEXT) refclock_as2201_.lo \
+refclock_atom_.$(OBJEXT) refclock_atom_.lo refclock_bancomm_.$(OBJEXT) \
+refclock_bancomm_.lo refclock_chronolog_.$(OBJEXT) \
+refclock_chronolog_.lo refclock_chu_.$(OBJEXT) refclock_chu_.lo \
+refclock_conf_.$(OBJEXT) refclock_conf_.lo refclock_datum_.$(OBJEXT) \
+refclock_datum_.lo refclock_dumbclock_.$(OBJEXT) \
+refclock_dumbclock_.lo refclock_fg_.$(OBJEXT) refclock_fg_.lo \
+refclock_gpsvme_.$(OBJEXT) refclock_gpsvme_.lo \
+refclock_heath_.$(OBJEXT) refclock_heath_.lo \
+refclock_hopfpci_.$(OBJEXT) refclock_hopfpci_.lo \
+refclock_hopfser_.$(OBJEXT) refclock_hopfser_.lo \
+refclock_hpgps_.$(OBJEXT) refclock_hpgps_.lo refclock_irig_.$(OBJEXT) \
+refclock_irig_.lo refclock_jjy_.$(OBJEXT) refclock_jjy_.lo \
+refclock_jupiter_.$(OBJEXT) refclock_jupiter_.lo \
+refclock_leitch_.$(OBJEXT) refclock_leitch_.lo \
+refclock_local_.$(OBJEXT) refclock_local_.lo \
+refclock_mx4200_.$(OBJEXT) refclock_mx4200_.lo \
+refclock_neoclock4x_.$(OBJEXT) refclock_neoclock4x_.lo \
+refclock_nmea_.$(OBJEXT) refclock_nmea_.lo refclock_oncore_.$(OBJEXT) \
+refclock_oncore_.lo refclock_palisade_.$(OBJEXT) refclock_palisade_.lo \
+refclock_parse_.$(OBJEXT) refclock_parse_.lo refclock_pcf_.$(OBJEXT) \
+refclock_pcf_.lo refclock_pst_.$(OBJEXT) refclock_pst_.lo \
+refclock_ripencc_.$(OBJEXT) refclock_ripencc_.lo \
+refclock_shm_.$(OBJEXT) refclock_shm_.lo refclock_tpro_.$(OBJEXT) \
+refclock_tpro_.lo refclock_true_.$(OBJEXT) refclock_true_.lo \
+refclock_tt560_.$(OBJEXT) refclock_tt560_.lo refclock_ulink_.$(OBJEXT) \
+refclock_ulink_.lo refclock_wwv_.$(OBJEXT) refclock_wwv_.lo \
+refclock_wwvb_.$(OBJEXT) refclock_wwvb_.lo refclock_zyfer_.$(OBJEXT) \
+refclock_zyfer_.lo : $(ANSI2KNR)
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
uninstall-info-am:
-
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
+install-man1: $(man1_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+ else file=$$i; fi; \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
+ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -776,6 +830,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -787,10 +842,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -813,12 +869,9 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/..
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@@ -830,7 +883,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -848,12 +901,15 @@ distdir: $(DISTFILES)
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
$(MAKE) $(AM_MAKEFLAGS) check-local
-check: check-am
-all-am: Makefile $(LIBRARIES) $(PROGRAMS)
-
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(MANS)
installdirs:
- $(mkinstalldirs) $(DESTDIR)$(bindir)
-install: install-am
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
@@ -864,7 +920,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -872,51 +928,55 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
clean: clean-am
clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
- clean-noinstLIBRARIES mostlyclean-am
+ clean-libtool clean-noinstLIBRARIES mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+ distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
-install-data-am:
+install-data-am: install-man
install-exec-am: install-binPROGRAMS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
install-info: install-info-am
-install-man:
+install-man: install-man1
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool
pdf: pdf-am
@@ -926,35 +986,78 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-man
+
+uninstall-man: uninstall-man1
.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
- clean-noinstLIBRARIES ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am info \
- info-am install install-am install-binPROGRAMS 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-compile \
- mostlyclean-generic mostlyclean-kr pdf pdf-am ps ps-am tags \
- uninstall uninstall-am uninstall-binPROGRAMS uninstall-info-am
+ clean-libtool clean-noinstLIBRARIES ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-binPROGRAMS install-data \
+ install-data-am install-exec install-exec-am install-exec-hook \
+ install-info install-info-am install-man install-man1 \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-binPROGRAMS uninstall-info-am \
+ uninstall-man uninstall-man1
check-local: @MAKE_CHECK_Y2K@
test -z "@MAKE_CHECK_Y2K@" || ./@MAKE_CHECK_Y2K@
+$(srcdir)/ntpd-opts.h: $(srcdir)/ntpd-opts.c
+$(srcdir)/ntpd-opts.c: $(srcdir)/ntpd-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list)
+ $(run_ag) ntpd-opts.def
+
+$(srcdir)/ntpd.1: $(srcdir)/ntpd-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list)
+ $(run_ag) -Tagman1.tpl -bntpd ntpd-opts.def
+
+$(srcdir)/ntpd-opts.texi $(srcdir)/ntpd-opts.menu: $(srcdir)/ntpd-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list)
+ $(run_ag) -Taginfo.tpl -DLEVEL=section ntpd-opts.def
+
+$(srcdir)/ntpdsim-opts.h: $(srcdir)/ntpdsim-opts.c
+$(srcdir)/ntpdsim-opts.c: $(srcdir)/ntpdsim-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list) $(top_srcdir)/include/homerc.def
+ $(run_ag) ntpdsim-opts.def
+
+$(srcdir)/ntpdsim.1: $(srcdir)/ntpdsim-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list) $(top_srcdir)/include/homerc.def
+ $(run_ag) -Tagman1.tpl -bntpdsim ntpdsim-opts.def
+
+$(srcdir)/ntpdsim-opts.texi $(srcdir)/ntpdsim-opts.menu: $(srcdir)/ntpdsim-opts.def $(srcdir)/ntpdbase-opts.def $(std_def_list) $(top_srcdir)/include/homerc.def
+ $(run_ag) -Taginfo.tpl -DLEVEL=section ntpdsim-opts.def
+
$(PROGRAMS): $(LDADD)
../libntp/libntp.a:
- cd ../libntp && $(MAKE)
+ cd ../libntp && $(MAKE) libntp.a
+
+../libntp/libntpsim.a:
+ cd ../libntp && $(MAKE) libntpsim.a
../libparse/libparse.a:
cd ../libparse && $(MAKE)
+$(top_srcdir)/version :
+ cd $(top_srcdir) && $(MAKE) version
+
version.o: $(ntpd_OBJECTS) ../libntp/libntp.a @LIBPARSE@ Makefile $(top_srcdir)/version
env CSET=`cat $(top_srcdir)/version` $(top_builddir)/scripts/mkver ntpd
$(COMPILE) -c version.c
+
+install-exec-hook:
+ @case ${BINSUBDIR} in \
+ bin) ODIR=${exec_prefix}/sbin ;; \
+ sbin) ODIR=${exec_prefix}/bin ;; \
+ esac; \
+ test -z "${bin_PROGRAMS}${bin_SCRIPTS}" \
+ || for i in ${bin_PROGRAMS} ${bin_SCRIPTS} " "; do \
+ test ! -f $$ODIR/$$i || echo "*** $$i is also in $$ODIR!"; \
+ done
+
+#
# 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/contrib/ntp/ntpd/cmd_args.c b/contrib/ntp/ntpd/cmd_args.c
index 3ed9b66..760bced 100644
--- a/contrib/ntp/ntpd/cmd_args.c
+++ b/contrib/ntp/ntpd/cmd_args.c
@@ -10,20 +10,20 @@
#include "ntp_cmdargs.h"
#ifdef SIM
-#include "ntpsim.h"
+# include "ntpsim.h"
+# include "ntpdsim-opts.h"
+# define OPTSTRUCT ntpdsimOptions
+#else
+# include "ntpd-opts.h"
+# define OPTSTRUCT ntpdOptions
#endif /* SIM */
/*
* Definitions of things either imported from or exported to outside
*/
extern char const *progname;
-int listen_to_virtual_ips = 1;
-
-#ifdef SYS_WINNT
-extern BOOL NoWinService;
-#endif
-
-static const char *ntp_options = "aAbB:c:C:dD:f:gi:k:l:LmnNO:p:P:qr:s:S:t:T:W:u:v:V:xY:Z:-:";
+extern const char *specific_interface;
+extern short default_ai_family;
#ifdef HAVE_NETINFO
extern int check_netinfo;
@@ -31,388 +31,202 @@ extern int check_netinfo;
/*
- * getstartup - search through the options looking for a debugging flag
+ * getCmdOpts - get command line options
*/
void
-getstartup(
+getCmdOpts(
int argc,
char *argv[]
)
{
+ extern const char *config_file;
int errflg;
- extern int priority_done;
- int c;
-
-#ifdef DEBUG
- debug = 0; /* no debugging by default */
-#endif
+ tOptions *myOptions = &OPTSTRUCT;
/*
- * This is a big hack. We don't really want to read command line
- * configuration until everything else is initialized, since
- * the ability to configure the system may depend on storage
- * and the like having been initialized. Except that we also
- * don't want to initialize anything until after detaching from
- * the terminal, but we won't know to do that until we've
- * parsed the command line. Do that now, crudely, and do it
- * again later. Our ntp_getopt() is explicitly reusable, by the
- * way. Your own mileage may vary.
- *
- * This hack is even called twice (to allow complete logging to file)
+ * Initialize, initialize
*/
errflg = 0;
- progname = argv[0];
- /*
- * Decode argument list
- */
- while ((c = ntp_getopt(argc, argv, ntp_options)) != EOF)
- switch (c) {
-#ifdef DEBUG
- case 'd':
- ++debug;
- break;
- case 'D':
- debug = (int)atol(ntp_optarg);
- printf("Debug1: %s -> %x = %d\n", ntp_optarg, debug, debug);
- break;
-#else
- case 'd':
- case 'D':
- msyslog(LOG_ERR, "ntpd not compiled with -DDEBUG option - no DEBUG support");
- fprintf(stderr, "ntpd not compiled with -DDEBUG option - no DEBUG support\n");
- ++errflg;
- break;
-#endif
- case 'L':
- listen_to_virtual_ips = 0;
- break;
- case 'l':
- {
- FILE *new_file;
-
- if(strcmp(ntp_optarg, "stderr") == 0)
- new_file = stderr;
- else if(strcmp(ntp_optarg, "stdout") == 0)
- new_file = stdout;
- else
- new_file = fopen(ntp_optarg, "a");
- if (new_file != NULL) {
- NLOG(NLOG_SYSINFO)
- msyslog(LOG_NOTICE, "logging to file %s", ntp_optarg);
- if (syslog_file != NULL &&
- fileno(syslog_file) != fileno(new_file))
- (void)fclose(syslog_file);
-
- syslog_file = new_file;
- syslogit = 0;
- }
- else
- msyslog(LOG_ERR,
- "Cannot open log file %s",
- ntp_optarg);
- }
- break;
+ switch (WHICH_IDX_IPV4) {
+ case INDEX_OPT_IPV4:
+ default_ai_family = AF_INET;
+ break;
+ case INDEX_OPT_IPV6:
+ default_ai_family = AF_INET6;
+ break;
+ default:
+ /* ai_fam_templ = ai_fam_default; */
+ break;
+ }
- case 'n':
- case 'q':
- ++nofork;
-#ifdef SYS_WINNT
- NoWinService = TRUE;
-#endif
- break;
-
- case 'N':
- priority_done = 0;
- break;
-
- case '?':
- ++errflg;
- break;
-
- case '-':
- if ( ! strcmp(ntp_optarg, "version") ) {
- printf("%.80s: %.80s\n", progname, Version);
- exit(0);
- } else if ( ! strcmp(ntp_optarg, "help") ) {
- /* usage(); */
- /* exit(0); */
- ++errflg;
- } else if ( ! strcmp(ntp_optarg, "copyright") ) {
- printf("unknown\n");
- exit(0);
- } else {
- fprintf(stderr, "%.80s: Error unknown argument '--%.80s'\n",
- progname,
- ntp_optarg);
- exit(12);
- }
- break;
-
- default:
- break;
- }
+ if (HAVE_OPT( AUTHREQ ))
+ proto_config(PROTO_AUTHENTICATE, 1, 0., NULL);
- if (errflg || ntp_optind != argc) {
- (void) fprintf(stderr, "usage: %s [ -abdgmnqx ] [ -c config_file ] [ -e e_delay ]\n", progname);
- (void) fprintf(stderr, "\t\t[ -f freq_file ] [ -k key_file ] [ -l log_file ]\n");
- (void) fprintf(stderr, "\t\t[ -p pid_file ] [ -r broad_delay ] [ -s statdir ]\n");
- (void) fprintf(stderr, "\t\t[ -t trust_key ] [ -v sys_var ] [ -V default_sysvar ]\n");
-#if defined(HAVE_SCHED_SETSCHEDULER)
- (void) fprintf(stderr, "\t\t[ -P fixed_process_priority ]\n");
-#endif
-#ifdef HAVE_CLOCKCTL
- (void) fprintf(stderr, "\t\t[ -u user[:group] ] [ -i chrootdir ]\n");
+ if (HAVE_OPT( AUTHNOREQ ))
+ proto_config(PROTO_AUTHENTICATE, 0, 0., NULL);
+
+ if (HAVE_OPT( BCASTSYNC ))
+ proto_config(PROTO_BROADCLIENT, 1, 0., NULL);
+
+ if (HAVE_OPT( CONFIGFILE )) {
+ config_file = OPT_ARG( CONFIGFILE );
+#ifdef HAVE_NETINFO
+ check_netinfo = 0;
#endif
- exit(2);
}
- ntp_optind = 0; /* reset ntp_optind to restart ntp_getopt */
-#ifdef DEBUG
- if (debug) {
-#ifdef HAVE_SETVBUF
- static char buf[BUFSIZ];
- setvbuf(stdout, buf, _IOLBF, BUFSIZ);
+ if (HAVE_OPT( DRIFTFILE ))
+ stats_config(STATS_FREQ_FILE, OPT_ARG( DRIFTFILE ));
+
+ if (HAVE_OPT( PANICGATE ))
+ allow_panic = TRUE;
+
+ if (HAVE_OPT( JAILDIR )) {
+#ifdef HAVE_DROPROOT
+ droproot = 1;
+ chrootdir = OPT_ARG( JAILDIR );
#else
- setlinebuf(stdout);
+ errflg++;
#endif
}
-#endif
-}
-/*
- * getCmdOpts - get command line options
- */
-void
-getCmdOpts(
- int argc,
- char *argv[]
- )
-{
- extern char *config_file;
- struct sockaddr_in inaddrntp;
- int errflg;
- int c;
+ if (HAVE_OPT( KEYFILE ))
+ getauthkeys(OPT_ARG( KEYFILE ));
- /*
- * Initialize, initialize
- */
- errflg = 0;
-#ifdef DEBUG
- debug = 0;
-#endif /* DEBUG */
+ if (HAVE_OPT( PIDFILE ))
+ stats_config(STATS_PID_FILE, OPT_ARG( PIDFILE ));
- progname = argv[0];
+ if (HAVE_OPT( QUIT ))
+ mode_ntpdate = TRUE;
- /*
- * Decode argument list
- */
- while ((c = ntp_getopt(argc, argv, ntp_options)) != EOF) {
- switch (c) {
- case 'a':
- proto_config(PROTO_AUTHENTICATE, 1, 0., NULL);
- break;
-
- case 'A':
- proto_config(PROTO_AUTHENTICATE, 0, 0., NULL);
- break;
-
- case 'b':
- proto_config(PROTO_BROADCLIENT, 1, 0., NULL);
- break;
-
- case 'c':
- config_file = ntp_optarg;
-#ifdef HAVE_NETINFO
- check_netinfo = 0;
-#endif
- break;
+ if (HAVE_OPT( PROPAGATIONDELAY ))
+ do {
+ double tmp;
+ const char *my_ntp_optarg = OPT_ARG( PROPAGATIONDELAY );
- case 'd':
-#ifdef DEBUG
- debug++;
-#else
- errflg++;
-#endif /* DEBUG */
- break;
+ if (sscanf(my_ntp_optarg, "%lf", &tmp) != 1) {
+ msyslog(LOG_ERR,
+ "command line broadcast delay value %s undecodable",
+ my_ntp_optarg);
+ } else {
+ proto_config(PROTO_BROADDELAY, 0, tmp, NULL);
+ }
+ } while (0);
+
+ if (HAVE_OPT( STATSDIR ))
+ stats_config(STATS_STATSDIR, OPT_ARG( STATSDIR ));
+
+ if (HAVE_OPT( TRUSTEDKEY )) {
+ int ct = STACKCT_OPT( TRUSTEDKEY );
+ const char** pp = STACKLST_OPT( TRUSTEDKEY );
+
+ do {
+ u_long tkey;
+ const char* p = *pp++;
+
+ tkey = (int)atol(p);
+ if (tkey == 0 || tkey > NTP_MAXKEY) {
+ msyslog(LOG_ERR,
+ "command line trusted key %s is invalid",
+ p);
+ } else {
+ authtrust(tkey, 1);
+ }
+ } while (--ct > 0);
+ }
- case 'D':
-#ifdef DEBUG
- debug = (int)atol(ntp_optarg);
- printf("Debug2: %s -> %x = %d\n", ntp_optarg, debug, debug);
-#else
- errflg++;
-#endif /* DEBUG */
- break;
-
- case 'f':
- stats_config(STATS_FREQ_FILE, ntp_optarg);
- break;
-
- case 'g':
- allow_panic = TRUE;
- break;
-
- case 'i':
-#ifdef HAVE_CLOCKCTL
- if (!ntp_optarg)
- errflg++;
- else
- chrootdir = ntp_optarg;
- break;
-#else
- errflg++;
-#endif
- case 'k':
- getauthkeys(ntp_optarg);
- break;
-
- case 'L': /* already done at pre-scan */
- case 'l': /* already done at pre-scan */
- break;
-
- case 'm':
- inaddrntp.sin_family = AF_INET;
- inaddrntp.sin_port = htons(NTP_PORT);
- inaddrntp.sin_addr.s_addr = htonl(INADDR_NTP);
- proto_config(PROTO_MULTICAST_ADD, 0, 0., (struct sockaddr_storage*)&inaddrntp);
- sys_bclient = 1;
- break;
-
- case 'n': /* already done at pre-scan */
- break;
-
- case 'N': /* already done at pre-scan */
- break;
-
- case 'p':
- stats_config(STATS_PID_FILE, ntp_optarg);
- break;
-
- case 'P':
-#if defined(HAVE_SCHED_SETSCHEDULER)
- config_priority = (int)atol(ntp_optarg);
- config_priority_override = 1;
-#else
+ if (HAVE_OPT( USER )) {
+#ifdef HAVE_DROPROOT
+ char *ntp_optarg = OPT_ARG( USER );
+
+ droproot = 1;
+ user = malloc(strlen(ntp_optarg) + 1);
+ if (user == NULL) {
errflg++;
-#endif
- break;
-
- case 'q':
- mode_ntpdate = TRUE;
- break;
-
- case 'r':
- do {
- double tmp;
-
- if (sscanf(ntp_optarg, "%lf", &tmp) != 1) {
- msyslog(LOG_ERR,
- "command line broadcast delay value %s undecodable",
- ntp_optarg);
- } else {
- proto_config(PROTO_BROADDELAY, 0, tmp, NULL);
- }
- } while (0);
- break;
-
- case 'u':
-#ifdef HAVE_CLOCKCTL
- user = malloc(strlen(ntp_optarg) + 1);
- if ((user == NULL) || (ntp_optarg == NULL))
- errflg++;
+ } else {
(void)strncpy(user, ntp_optarg, strlen(ntp_optarg) + 1);
group = rindex(user, ':');
if (group)
*group++ = '\0'; /* get rid of the ':' */
+ }
#else
- errflg++;
+ errflg++;
#endif
- break;
- case 's':
- stats_config(STATS_STATSDIR, ntp_optarg);
- break;
-
- case 't':
- do {
- u_long tkey;
-
- tkey = (int)atol(ntp_optarg);
- if (tkey <= 0 || tkey > NTP_MAXKEY) {
- msyslog(LOG_ERR,
- "command line trusted key %s is invalid",
- ntp_optarg);
- } else {
- authtrust(tkey, 1);
- }
- } while (0);
- break;
-
- case 'v':
- case 'V':
- set_sys_var(ntp_optarg, strlen(ntp_optarg)+1,
- (u_short) (RW | ((c == 'V') ? DEF : 0)));
- break;
-
- case 'x':
- clock_max = 600;
- break;
+ }
+
+ if (HAVE_OPT( VAR )) {
+ int ct = STACKCT_OPT( VAR );
+ const char** pp = STACKLST_OPT( VAR );
+
+ do {
+ const char* my_ntp_optarg = *pp++;
+
+ set_sys_var(my_ntp_optarg, strlen(my_ntp_optarg)+1,
+ (u_short) (RW));
+ } while (--ct > 0);
+ }
+
+ if (HAVE_OPT( DVAR )) {
+ int ct = STACKCT_OPT( DVAR );
+ const char** pp = STACKLST_OPT( DVAR );
+
+ do {
+ const char* my_ntp_optarg = *pp++;
+
+ set_sys_var(my_ntp_optarg, strlen(my_ntp_optarg)+1,
+ (u_short) (RW | DEF));
+ } while (--ct > 0);
+ }
+
+ if (HAVE_OPT( SLEW ))
+ clock_max = 600;
+
+ if (HAVE_OPT( UPDATEINTERVAL )) {
+ long val = OPT_VALUE_UPDATEINTERVAL;
+
+ if (val >= 0)
+ interface_interval = val;
+ else {
+ msyslog(LOG_ERR,
+ "command line interface update interval %ld must be greater or equal to 0",
+ val);
+ errflg++;
+ }
+ }
#ifdef SIM
- case 'B':
- sscanf(ntp_optarg, "%lf", &ntp_node.bdly);
- break;
+ if (HAVE_OPT( SIMBROADCASTDELAY ))
+ sscanf(OPT_ARG( SIMBROADCASTDELAY ), "%lf", &ntp_node.bdly);
- case 'C':
- sscanf(ntp_optarg, "%lf", &ntp_node.snse);
- break;
+ if (HAVE_OPT( PHASENOISE ))
+ sscanf(OPT_ARG( PHASENOISE ), "%lf", &ntp_node.snse);
- case 'H':
- sscanf(ntp_optarg, "%lf", &ntp_node.slew);
- break;
+ if (HAVE_OPT( SIMSLEW ))
+ sscanf(OPT_ARG( SIMSLEW ), "%lf", &ntp_node.slew);
- case 'O':
- sscanf(ntp_optarg, "%lf", &ntp_node.clk_time);
- break;
+ if (HAVE_OPT( SERVERTIME ))
+ sscanf(OPT_ARG( SERVERTIME ), "%lf", &ntp_node.clk_time);
- case 'S':
- sscanf(ntp_optarg, "%lf", &ntp_node.sim_time);
- break;
+ if (HAVE_OPT( ENDSIMTIME ))
+ sscanf(OPT_ARG( ENDSIMTIME ), "%lf", &ntp_node.sim_time);
- case 'T':
- sscanf(ntp_optarg, "%lf", &ntp_node.ferr);
- break;
+ if (HAVE_OPT( FREQERR ))
+ sscanf(OPT_ARG( FREQERR ), "%lf", &ntp_node.ferr);
- case 'W':
- sscanf(ntp_optarg, "%lf", &ntp_node.fnse);
- break;
+ if (HAVE_OPT( WALKNOISE ))
+ sscanf(OPT_ARG( WALKNOISE ), "%lf", &ntp_node.fnse);
- case 'Y':
- sscanf(ntp_optarg, "%lf", &ntp_node.ndly);
- break;
+ if (HAVE_OPT( NDELAY ))
+ sscanf(OPT_ARG( NDELAY ), "%lf", &ntp_node.ndly);
- case 'Z':
- sscanf(ntp_optarg, "%lf", &ntp_node.pdly);
- break;
+ if (HAVE_OPT( PDELAY ))
+ sscanf(OPT_ARG( PDELAY ), "%lf", &ntp_node.pdly);
#endif /* SIM */
- default:
- errflg++;
- break;
- }
- }
- if (errflg || ntp_optind != argc) {
- (void) fprintf(stderr, "usage: %s [ -abdgmnx ] [ -c config_file ] [ -e e_delay ]\n", progname);
- (void) fprintf(stderr, "\t\t[ -f freq_file ] [ -k key_file ] [ -l log_file ]\n");
- (void) fprintf(stderr, "\t\t[ -p pid_file ] [ -r broad_delay ] [ -s statdir ]\n");
- (void) fprintf(stderr, "\t\t[ -t trust_key ] [ -v sys_var ] [ -V default_sysvar ]\n");
-#if defined(HAVE_SCHED_SETSCHEDULER)
- (void) fprintf(stderr, "\t\t[ -P fixed_process_priority ]\n");
-#endif
-#ifdef HAVE_CLOCKCTL
- (void) fprintf(stderr, "\t\t[ -u user[:group] ] [ -i chrootdir ]\n");
-#endif
- exit(2);
+ if (errflg || argc) {
+ printf("argc is <%d>\n", argc);
+ optionUsage(myOptions, 2);
}
return;
}
diff --git a/contrib/ntp/ntpd/map_vme.c b/contrib/ntp/ntpd/map_vme.c
deleted file mode 100644
index e4569ce..0000000
--- a/contrib/ntp/ntpd/map_vme.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/********************************************************/
-/* map_vme.c */
-/* VME control of TrueTime VME-SG sync gen card */
-/* and TrueTime GPS-VME receiver card */
-/* Version for 700 series HPUX 9.0 */
-/* Richard E.Schmidt, US Naval Observatory, Washington */
-/* 27 March 94 */
-/********************************************************/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined(REFCLOCK) && defined(CLOCK_GPSVME)
-#include <stdio.h>
-#include <errno.h>
-#include <time.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <sys/file.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/sysmacros.h>
-#include <sys/rtprio.h> /* for rtprio */
-#include <sys/lock.h> /* for plock */
-#include "/etc/conf/machine/vme2.h"
-#include "/etc/conf/h/io.h"
-#include "gps.h"
-
-/* GLOBALS */
-void *gps_base;
-unsigned short *greg[NREGS];
-struct vme2_map_addr ma; /* memory mapped structure */
-int fd; /* file descriptor for VME */
-
-void unmap_vme ();
-
-caddr_t
-map_vme (
- char *filename
- )
-{
- int ret;
- caddr_t base;
- struct vme2_io_testx tx;
- caddr_t cp;
-
-#define VME_START_ADDR 0x00000 /* Starting address in A16N VME Space */
-#define VMESIZE 0xFF /* 256 bytes of A16N space length */
-
- /*
- To create the HP9000/700 series device file, /dev/vme2:
- mknod /dev/vme2 c 44 0x0; chmod 600 /dev/vme2
-
- Then must create /etc/vme.CFG and run /etc/vme_config and reboot.
- */
- if ((fd = open (filename, O_RDWR)) < 0) {
- printf("ERROR: VME bus adapter open failed. errno:%d\n",
- errno);
- if(errno == ENODEV) {
- printf("ENODEV. Is driver in kernel? vme2 in dfile?\n");
- }
- exit(errno);
- }
- tx.card_type = VME_A16;
- tx.vme_addr = VME_START_ADDR;
- tx.width = SHORT_WIDE;
-
- if(ioctl(fd, VME2_IO_TESTR, &tx)) {
- printf("ioctl to test VME space failed. Errno: %d\n",
- errno);
- exit(errno);
- }
- if(tx.error)
- printf("io_testr failed internal error %d\n",tx.error);
- if(tx.access_result < 0) {
- printf("io_testr failed\n");
- exit(2);
- }
-
- /* If successful mmap the device */
- /* NOW MAP THE CARD */
- ma.card_type = VME_A16;
- ma.vme_addr = VME_START_ADDR;
- ma.size = VMESIZE;
-
- if(ioctl(fd, VME2_MAP_ADDR, &ma)) {
- printf("ioctl to map VME space failed. Errno: %d\n",
- errno);
- exit(errno);
- }
- if(ma.error) {
- printf("ioctl to map VME failed\n");
- exit(ENOMEM);
- }
- base = ma.user_addr;
- return(base);
-}
-
-
-void
-unmap_vme(void)
-{
- if(ioctl(fd, VME2_UNMAP_ADDR, &ma))
- printf("ioctl to unmap VME space failed. Errno: %d\n",
- errno);
- close(fd);
- return;
-}
-
-
-int
-init_vme(boid)
-{
- /* set up address offsets */
-
- gps_base = map_vme (GPS_VME);
-
-/* offsets from base address: */
-
- greg[0] = (unsigned short *)gps_base + GFRZ1;
- greg[1] = (unsigned short *)gps_base + GUFRZ1;
- greg[2] = (unsigned short *)gps_base + GREG1A;
- greg[3] = (unsigned short *)gps_base + GREG1B;
- greg[4] = (unsigned short *)gps_base + GREG1C;
- greg[5] = (unsigned short *)gps_base + GREG1D;
- greg[6] = (unsigned short *)gps_base + GREG1E;
-
- return (0);
-}
-
-#else /* not (REFCLOCK && CLOCK_GPSVME) */
-int map_vme_bs;
-#endif /* not (REFCLOCK && CLOCK_GPSVME) */
diff --git a/contrib/ntp/ntpd/ntp_config.c b/contrib/ntp/ntpd/ntp_config.c
index f1428b1..beb4c48 100644
--- a/contrib/ntp/ntpd/ntp_config.c
+++ b/contrib/ntp/ntpd/ntp_config.c
@@ -15,8 +15,9 @@
#include "ntp_refclock.h"
#include "ntp_filegen.h"
#include "ntp_stdlib.h"
-#include "ntp_config.h"
-#include "ntp_cmdargs.h"
+#include <ntp_random.h>
+#include <isc/net.h>
+#include <isc/result.h>
#include <stdio.h>
#include <ctype.h>
@@ -35,10 +36,19 @@
#ifdef SYS_WINNT
# include <io.h>
-extern HANDLE ResolverThreadHandle;
+static HANDLE ResolverThreadHandle = NULL;
+HANDLE ResolverEventHandle;
+#else
+int resolver_pipe_fd[2]; /* used to let the resolver process alert the parent process */
#endif /* SYS_WINNT */
-#include <netdb.h>
+/*
+ * [Bug 467]: Some linux headers collide with CONFIG_PHONE and CONFIG_KEYS
+ * so #include these later.
+ */
+
+#include "ntp_config.h"
+#include "ntp_cmdargs.h"
extern int priority_done;
@@ -73,6 +83,7 @@ static struct keyword keywords[] = {
{ "disable", CONFIG_DISABLE },
{ "driftfile", CONFIG_DRIFTFILE },
{ "enable", CONFIG_ENABLE },
+ { "end", CONFIG_END },
{ "filegen", CONFIG_FILEGEN },
{ "fudge", CONFIG_FUDGE },
{ "includefile", CONFIG_INCLUDEFILE },
@@ -115,9 +126,12 @@ static struct keyword mod_keywords[] = {
{ "minpoll", CONF_MOD_MINPOLL },
{ "mode", CONF_MOD_MODE }, /* refclocks */
{ "noselect", CONF_MOD_NOSELECT },
+ { "preempt", CONF_MOD_PREEMPT },
+ { "true", CONF_MOD_TRUE },
{ "prefer", CONF_MOD_PREFER },
{ "ttl", CONF_MOD_TTL }, /* NTP peers */
{ "version", CONF_MOD_VERSION },
+ { "dynamic", CONF_MOD_DYNAMIC },
{ "", CONFIG_UNKNOWN }
};
@@ -158,7 +172,7 @@ static struct keyword fudge_keywords[] = {
{ "flag2", CONF_FDG_FLAG2 },
{ "flag3", CONF_FDG_FLAG3 },
{ "flag4", CONF_FDG_FLAG4 },
- { "refid", CONF_FDG_REFID },
+ { "refid", CONF_FDG_REFID }, /* this mapping should be cleaned up (endianness, \0) - kd 20041031 */
{ "stratum", CONF_FDG_STRATUM },
{ "time1", CONF_FDG_TIME1 },
{ "time2", CONF_FDG_TIME2 },
@@ -202,7 +216,6 @@ static struct keyword flags_keywords[] = {
{ "kernel", PROTO_KERNEL },
{ "monitor", PROTO_MONITOR },
{ "ntp", PROTO_NTP },
- { "pps", PROTO_PPS },
{ "stats", PROTO_FILEGEN },
{ "", CONFIG_UNKNOWN }
};
@@ -236,10 +249,16 @@ static struct keyword tinker_keywords[] = {
*/
static struct keyword tos_keywords[] = {
{ "minclock", CONF_TOS_MINCLOCK },
+ { "maxclock", CONF_TOS_MAXCLOCK },
{ "minsane", CONF_TOS_MINSANE },
{ "floor", CONF_TOS_FLOOR },
{ "ceiling", CONF_TOS_CEILING },
{ "cohort", CONF_TOS_COHORT },
+ { "mindist", CONF_TOS_MINDISP },
+ { "maxdist", CONF_TOS_MAXDIST },
+ { "maxhop", CONF_TOS_MAXHOP },
+ { "beacon", CONF_TOS_BEACON },
+ { "orphan", CONF_TOS_ORPHAN },
{ "", CONFIG_UNKNOWN }
};
@@ -251,6 +270,7 @@ static struct keyword crypto_keywords[] = {
{ "cert", CONF_CRYPTO_CERT },
{ "gqpar", CONF_CRYPTO_GQPAR },
{ "host", CONF_CRYPTO_RSA },
+ { "ident", CONF_CRYPTO_IDENT },
{ "iffpar", CONF_CRYPTO_IFFPAR },
{ "leap", CONF_CRYPTO_LEAP },
{ "mvpar", CONF_CRYPTO_MVPAR },
@@ -309,7 +329,7 @@ static struct masks logcfg_item[] = {
*/
#define MAXTOKENS 20 /* 20 tokens on line */
#define MAXLINE 1024 /* maximum length of line */
-#define MAXPHONE 5 /* maximum number of phone strings */
+#define MAXPHONE 10 /* maximum number of phone strings */
#define MAXPPS 20 /* maximum length of PPS device string */
#define MAXINCLUDELEVEL 5 /* maximum include file levels */
@@ -339,10 +359,10 @@ static char res_file[MAX_PATH];
/*
* Definitions of things either imported from or exported to outside
*/
-char const *progname;
-char sys_phone[MAXPHONE][MAXDIAL]; /* ACTS phone numbers */
+
+short default_ai_family = AF_UNSPEC; /* Default either IPv4 or IPv6 */
+char *sys_phone[MAXPHONE] = {NULL}; /* ACTS phone numbers */
char *keysdir = NTP_KEYSDIR; /* crypto keys directory */
-char pps_device[MAXPPS + 1]; /* PPS device name */
#if defined(HAVE_SCHED_SETSCHEDULER)
int config_priority_override = 0;
int config_priority;
@@ -386,7 +406,13 @@ static int gettokens_netinfo P((struct netinfo_config_state *, char **, int *));
#endif
static int gettokens P((FILE *, char *, char **, int *));
static int matchkey P((char *, struct keyword *, int));
-static int getnetnum P((const char *, struct sockaddr_storage *, int));
+enum gnn_type {
+ t_UNK, /* Unknown */
+ t_REF, /* Refclock */
+ t_MSK /* Network Mask */
+ };
+static int getnetnum P((const char *, struct sockaddr_storage *, int,
+ enum gnn_type));
static void save_resolve P((char *, int, int, int, int, u_int, int,
keyid_t, u_char *));
static void do_resolve_internal P((void));
@@ -472,6 +498,7 @@ getconfig(
register int i;
int c;
int errflg;
+ int status;
int istart;
int peerversion;
int minpoll;
@@ -501,7 +528,7 @@ getconfig(
* Initialize, initialize
*/
errflg = 0;
- /* HMS: don't initialize debug to 0 here! */
+
#ifndef SYS_WINNT
config_file = CONFIG_FILE;
#else
@@ -520,9 +547,7 @@ getconfig(
alt_config_file = alt_config_file_storage;
#endif /* SYS_WINNT */
- progname = argv[0];
res_fp = NULL;
- memset((char *)sys_phone, 0, sizeof(sys_phone));
ntp_syslogmask = NLOG_SYNCMASK; /* set more via logconfig */
/*
@@ -573,6 +598,8 @@ getconfig(
}
for (;;) {
+ if (tok == CONFIG_END)
+ break;
if (fp[includelevel])
tok = gettokens(fp[includelevel], line, tokens, &ntokens);
#ifdef HAVE_NETINFO
@@ -612,6 +639,7 @@ getconfig(
istart = 1;
memset((char *)&peeraddr, 0, sizeof(peeraddr));
+ peeraddr.ss_family = default_ai_family;
switch (matchkey(tokens[istart], addr_type, 0)) {
case CONF_ADDR_IPV4:
peeraddr.ss_family = AF_INET;
@@ -623,7 +651,10 @@ getconfig(
break;
}
- if (!getnetnum(tokens[istart], &peeraddr, 0)) {
+ status = getnetnum(tokens[istart], &peeraddr, 0, t_UNK);
+ if (status == -1)
+ break; /* Found IPv6 address */
+ if(status != 1) {
errflg = -1;
} else {
errflg = 0;
@@ -684,7 +715,10 @@ getconfig(
}
}
}
-
+ if (peeraddr.ss_family == AF_INET6 &&
+ isc_net_probeipv6() != ISC_R_SUCCESS)
+ break;
+
peerversion = NTP_VERSION;
minpoll = NTP_MINDPOLL;
maxpoll = NTP_MAXDPOLL;
@@ -760,10 +794,17 @@ getconfig(
peerflags |= FLAG_PREFER;
break;
+ case CONF_MOD_PREEMPT:
+ peerflags |= FLAG_PREEMPT;
+ break;
+
case CONF_MOD_NOSELECT:
peerflags |= FLAG_NOSELECT;
break;
+ case CONF_MOD_TRUE:
+ peerflags |= FLAG_TRUE;
+
case CONF_MOD_BURST:
peerflags |= FLAG_BURST;
break;
@@ -771,6 +812,13 @@ getconfig(
case CONF_MOD_IBURST:
peerflags |= FLAG_IBURST;
break;
+
+ case CONF_MOD_DYNAMIC:
+ msyslog(LOG_WARNING,
+ "Warning: the \"dynamic\" keyword has been obsoleted"
+ " and will be removed in the next release\n");
+ break;
+
#ifdef OPENSSL
case CONF_MOD_SKEY:
peerflags |= FLAG_SKEY |
@@ -821,10 +869,6 @@ getconfig(
"configuration of %s failed",
stoa(&peeraddr));
}
- if (tok == CONFIG_MANYCASTCLIENT)
- proto_config(PROTO_MULTICAST_ADD,
- 0, 0., &peeraddr);
-
} else if (errflg == -1) {
save_resolve(tokens[1], hmode, peerversion,
minpoll, maxpoll, peerflags, ttl,
@@ -837,6 +881,16 @@ getconfig(
stats_config(STATS_FREQ_FILE, tokens[1]);
else
stats_config(STATS_FREQ_FILE, (char *)0);
+ stats_write_period = stats_write_tolerance = 0;
+ if (ntokens >= 3)
+ stats_write_period = 60 * atol(tokens[2]);
+ if (stats_write_period <= 0)
+ stats_write_period = 3600;
+ if (ntokens >= 4) {
+ double ftemp;
+ sscanf(tokens[3], "%lf", &ftemp);
+ stats_write_tolerance = ftemp / 100;
+ }
break;
case CONFIG_PIDFILE:
@@ -846,6 +900,12 @@ getconfig(
stats_config(STATS_PID_FILE, (char *)0);
break;
+ case CONFIG_END:
+ for ( i = 0; i <= includelevel; i++ ) {
+ fclose(fp[i]);
+ }
+ break;
+
case CONFIG_INCLUDEFILE:
if (ntokens < 2) {
msyslog(LOG_ERR, "includefile needs one argument");
@@ -925,7 +985,11 @@ getconfig(
break;
case CONFIG_BROADCASTCLIENT:
- proto_config(PROTO_BROADCLIENT, 1, 0., NULL);
+ if (ntokens == 1) {
+ proto_config(PROTO_BROADCLIENT, 1, 0., NULL);
+ } else {
+ proto_config(PROTO_BROADCLIENT, 2, 0., NULL);
+ }
break;
case CONFIG_MULTICASTCLIENT:
@@ -933,6 +997,7 @@ getconfig(
if (ntokens > 1) {
istart = 1;
memset((char *)&peeraddr, 0, sizeof(peeraddr));
+ peeraddr.ss_family = default_ai_family;
switch (matchkey(tokens[istart],
addr_type, 0)) {
case CONF_ADDR_IPV4:
@@ -955,7 +1020,8 @@ getconfig(
memset((char *)&peeraddr, 0,
sizeof(peeraddr));
peeraddr.ss_family = maskaddr.ss_family;
- if (getnetnum(tokens[i], &peeraddr, 1))
+ if (getnetnum(tokens[i], &peeraddr, 1,
+ t_UNK) == 1)
proto_config(PROTO_MULTICAST_ADD,
0, 0., &peeraddr);
}
@@ -963,7 +1029,7 @@ getconfig(
proto_config(PROTO_MULTICAST_ADD,
0, 0., NULL);
if (tok == CONFIG_MULTICASTCLIENT)
- sys_bclient = 1;
+ proto_config(PROTO_MULTICAST_ADD, 1, 0., NULL);
else if (tok == CONFIG_MANYCASTSERVER)
sys_manycastserver = 1;
break;
@@ -980,7 +1046,7 @@ getconfig(
"Keys directory name required");
break;
}
- keysdir = emalloc(strlen(tokens[1]) + 1);
+ keysdir = (char *)emalloc(strlen(tokens[1]) + 1);
strcpy(keysdir, tokens[1]);
break;
@@ -1038,7 +1104,7 @@ getconfig(
temp = matchkey(tokens[i++], tos_keywords, 1);
if (i > ntokens - 1) {
msyslog(LOG_ERR,
- "tinker: missing argument");
+ "tos: missing argument");
errflg++;
break;
}
@@ -1049,6 +1115,10 @@ getconfig(
proto_config(PROTO_MINCLOCK, 0, ftemp, NULL);
break;
+ case CONF_TOS_MAXCLOCK:
+ proto_config(PROTO_MAXCLOCK, 0, ftemp, NULL);
+ break;
+
case CONF_TOS_MINSANE:
proto_config(PROTO_MINSANE, 0, ftemp, NULL);
break;
@@ -1064,6 +1134,26 @@ getconfig(
case CONF_TOS_COHORT:
proto_config(PROTO_COHORT, 0, ftemp, NULL);
break;
+
+ case CONF_TOS_MINDISP:
+ proto_config(PROTO_MINDISP, 0, ftemp, NULL);
+ break;
+
+ case CONF_TOS_MAXDIST:
+ proto_config(PROTO_MAXDIST, 0, ftemp, NULL);
+ break;
+
+ case CONF_TOS_MAXHOP:
+ proto_config(PROTO_MAXHOP, 0, ftemp, NULL);
+ break;
+
+ case CONF_TOS_ORPHAN:
+ proto_config(PROTO_ORPHAN, 0, ftemp, NULL);
+ break;
+
+ case CONF_TOS_BEACON:
+ proto_config(PROTO_BEACON, 0, ftemp, NULL);
+ break;
}
}
break;
@@ -1089,15 +1179,15 @@ getconfig(
}
switch(temp) {
case CONF_DISCARD_AVERAGE:
- res_avg_interval = atoi(tokens[i++]);
+ res_avg_interval = atoi(tokens[i]);
break;
case CONF_DISCARD_MINIMUM:
- res_min_interval = atoi(tokens[i++]);
+ res_min_interval = atoi(tokens[i]);
break;
case CONF_DISCARD_MONITOR:
- mon_age = atoi(tokens[i++]);
+ mon_age = atoi(tokens[i]);
break;
default:
@@ -1147,6 +1237,11 @@ getconfig(
tokens[i]);
break;
+ case CONF_CRYPTO_IDENT:
+ crypto_config(CRYPTO_CONF_IDENT,
+ tokens[i]);
+ break;
+
case CONF_CRYPTO_IFFPAR:
crypto_config(CRYPTO_CONF_IFFPAR,
tokens[i]);
@@ -1198,6 +1293,7 @@ getconfig(
}
istart = 1;
memset((char *)&peeraddr, 0, sizeof(peeraddr));
+ peeraddr.ss_family = default_ai_family;
switch (matchkey(tokens[istart], addr_type, 0)) {
case CONF_ADDR_IPV4:
peeraddr.ss_family = AF_INET;
@@ -1216,7 +1312,8 @@ getconfig(
if (STREQ(tokens[istart], "default")) {
if (peeraddr.ss_family == 0)
peeraddr.ss_family = AF_INET;
- } else if (!getnetnum(tokens[istart], &peeraddr, 1))
+ } else if (getnetnum(tokens[istart], &peeraddr, 1,
+ t_UNK) != 1)
break;
/*
@@ -1237,7 +1334,8 @@ getconfig(
break;
}
i++;
- if (!getnetnum(tokens[i], &maskaddr, 1))
+ if (getnetnum(tokens[i], &maskaddr, 1,
+ t_MSK) != 1)
errflg++;
break;
@@ -1386,6 +1484,7 @@ getconfig(
}
istart = 1;
memset((char *)&peeraddr, 0, sizeof(peeraddr));
+ peeraddr.ss_family = default_ai_family;
switch (matchkey(tokens[istart], addr_type, 0)) {
case CONF_ADDR_IPV4:
peeraddr.ss_family = AF_INET;
@@ -1397,7 +1496,7 @@ getconfig(
break;
}
- if (!getnetnum(tokens[istart], &peeraddr, 1))
+ if (getnetnum(tokens[istart], &peeraddr, 1, t_UNK) != 1)
break;
/*
@@ -1437,8 +1536,8 @@ getconfig(
memset((char *)&maskaddr, 0,
sizeof(maskaddr));
maskaddr.ss_family = peeraddr.ss_family;
- if (!getnetnum(tokens[++i],
- &maskaddr, 1)) {
+ if (getnetnum(tokens[++i],
+ &maskaddr, 1, t_UNK) != 1) {
errflg = 1;
break;
}
@@ -1479,7 +1578,7 @@ getconfig(
break;
}
memset((char *)&peeraddr, 0, sizeof(peeraddr));
- if (!getnetnum(tokens[1], &peeraddr, 1))
+ if (getnetnum(tokens[1], &peeraddr, 1, t_REF) != 1)
break;
if (!ISREFCLOCKADR(&peeraddr)) {
@@ -1534,10 +1633,10 @@ getconfig(
break;
case CONF_FDG_REFID:
- /* HMS: Endianness and 0 bytes? */
- /* XXX */
- strncpy((char *)&clock_stat.fudgeval2,
- tokens[++i], 4);
+ i++;
+ memcpy(&clock_stat.fudgeval2,
+ tokens[i], min(strlen(tokens[i]),
+ 4));
clock_stat.haveflags |= CLK_HAVEVAL2;
break;
@@ -1746,11 +1845,12 @@ getconfig(
break;
case CONFIG_PHONE:
- for (i = 1; i < ntokens && i < MAXPHONE; i++) {
- (void)strncpy(sys_phone[i - 1],
- tokens[i], MAXDIAL);
+ for (i = 1; i < ntokens && i < MAXPHONE - 1; i++) {
+ sys_phone[i - 1] =
+ emalloc(strlen(tokens[i]) + 1);
+ strcpy(sys_phone[i - 1], tokens[i]);
}
- sys_phone[i - 1][0] = '\0';
+ sys_phone[i] = NULL;
break;
case CONFIG_ADJ: {
@@ -1785,7 +1885,7 @@ getconfig(
for (i = 0; i < 8; i++)
for (j = 1; j < 100; ++j) {
- rankey[i] = (char) (RANDOM & 0xff);
+ rankey[i] = (char) (ntp_random() & 0xff);
if (rankey[i] != 0) break;
}
rankey[8] = 0;
@@ -1952,9 +2052,17 @@ gettokens_netinfo (
if (ISEOL(*tokens)) break;
}
}
- *ntokens = ntok + 1;
-
- config->val_index++;
+
+ if (ntok == MAXTOKENS) {
+ /* HMS: chomp it to lose the EOL? */
+ msyslog(LOG_ERR,
+ "gettokens_netinfo: too many tokens. Ignoring: %s",
+ tokens);
+ } else {
+ *ntokens = ntok + 1;
+ }
+
+ config->val_index++; /* HMS: Should this be in the 'else'? */
return keywords[prop_index].keytype;
}
@@ -2024,13 +2132,40 @@ gettokens (
}
}
- /*
- * Return the match
- */
- *ntokens = ntok + 1;
- ntok = matchkey(tokenlist[0], keywords, 1);
- if (ntok == CONFIG_UNKNOWN)
- goto again;
+ /* Heiko: Remove leading and trailing quotes around tokens */
+ {
+ int i,j = 0;
+
+
+ for (i = 0; i < ntok; i++) {
+ /* Now check if the first char is a quote and remove that */
+ if ( tokenlist[ntok][0] == '"' )
+ tokenlist[ntok]++;
+
+ /* Now check the last char ... */
+ j = strlen(tokenlist[ntok])-1;
+ if ( tokenlist[ntok][j] == '"' )
+ tokenlist[ntok][j] = '\0';
+ }
+
+ }
+
+ if (ntok == MAXTOKENS) {
+ --ntok;
+ /* HMS: chomp it to lose the EOL? */
+ msyslog(LOG_ERR,
+ "gettokens: too many tokens on the line. Ignoring %s",
+ cp);
+ } else {
+ /*
+ * Return the match
+ */
+ *ntokens = ntok + 1;
+ ntok = matchkey(tokenlist[0], keywords, 1);
+ if (ntok == CONFIG_UNKNOWN)
+ goto again;
+ }
+
return ntok;
}
@@ -2068,11 +2203,26 @@ static int
getnetnum(
const char *num,
struct sockaddr_storage *addr,
- int complain
+ int complain,
+ enum gnn_type a_type
)
{
struct addrinfo hints;
struct addrinfo *ptr;
+ int retval;
+
+#if 0
+ printf("getnetnum: <%s> is a %s (%d)\n",
+ num,
+ (a_type == t_UNK)
+ ? "t_UNK"
+ : (a_type == t_REF)
+ ? "t_REF"
+ : (a_type == t_MSK)
+ ? "t_MSK"
+ : "???",
+ a_type);
+#endif
/* Get host address. Looking for UDP datagram connection */
memset(&hints, 0, sizeof (hints));
@@ -2080,33 +2230,61 @@ getnetnum(
hints.ai_family = addr->ss_family;
else
hints.ai_family = AF_UNSPEC;
+ /*
+ * If we don't have an IPv6 stack, just look up IPv4 addresses
+ */
+ if (isc_net_probeipv6() != ISC_R_SUCCESS)
+ hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_DGRAM;
+
+ if (a_type != t_UNK) {
+ hints.ai_flags = AI_NUMERICHOST;
+ }
+
#ifdef DEBUG
- if (debug > 3)
- printf("getaddrinfo %s\n", num);
+ if (debug > 3)
+ printf("getnetnum: calling getaddrinfo(%s,...)\n", num);
#endif
- if (getaddrinfo(num, "ntp", &hints, &ptr)!=0) {
+ retval = getaddrinfo(num, "ntp", &hints, &ptr);
+ if (retval != 0 ||
+ (ptr->ai_family == AF_INET6 && isc_net_probeipv6() != ISC_R_SUCCESS)) {
if (complain)
msyslog(LOG_ERR,
- "getaddrinfo: \"%s\" invalid host address, line ignored",
+ "getaddrinfo: \"%s\" invalid host address, ignored",
num);
#ifdef DEBUG
- if (debug > 3)
+ if (debug > 0)
printf(
"getaddrinfo: \"%s\" invalid host address%s.\n",
num, (complain)
- ? ", line ignored"
+ ? ", ignored"
: "");
#endif
- return 0;
+ if (retval == 0 &&
+ ptr->ai_family == AF_INET6 &&
+ isc_net_probeipv6() != ISC_R_SUCCESS)
+ {
+ return -1;
+ }
+ else {
+ return 0;
+ }
}
memcpy(addr, ptr->ai_addr, ptr->ai_addrlen);
#ifdef DEBUG
if (debug > 1)
- printf("getnetnum given %s, got %s \n",
- num, stoa(addr));
+ printf("getnetnum given %s, got %s (%s/%d)\n",
+ num, stoa(addr),
+ (a_type == t_UNK)
+ ? "t_UNK"
+ : (a_type == t_REF)
+ ? "t_REF"
+ : (a_type == t_MSK)
+ ? "t_MSK"
+ : "???",
+ a_type);
#endif
freeaddrinfo(ptr);
return 1;
@@ -2259,7 +2437,22 @@ do_resolve_internal(void)
(void) signal_no_reset(SIGCHLD, catchchild);
#ifndef SYS_VXWORKS
+ /* the parent process will write to the pipe
+ * in order to wake up to child process
+ * which may be waiting in a select() call
+ * on the read fd */
+ if (pipe(resolver_pipe_fd) < 0) {
+ msyslog(LOG_ERR,
+ "unable to open resolver pipe");
+ exit(1);
+ }
+
i = fork();
+ /* Shouldn't the code below be re-ordered?
+ * I.e. first check if the fork() returned an error, then
+ * check whether we're parent or child.
+ * Martin Burnicki
+ */
if (i == 0) {
/*
* this used to close everything
@@ -2294,6 +2487,9 @@ do_resolve_internal(void)
* THUS:
*/
+ /* This is the child process who will read the pipe,
+ * so we close the write fd */
+ close(resolver_pipe_fd[1]);
closelog();
kill_asyncio(0);
@@ -2342,6 +2538,11 @@ do_resolve_internal(void)
(void) signal_no_reset(SIGCHLD, SIG_DFL);
abort_resolve();
}
+ else {
+ /* This is the parent process who will write to the pipe,
+ * so we close the read fd */
+ close(resolver_pipe_fd[0]);
+ }
#else /* SYS_WINNT */
{
/* NT's equivalent of fork() is _spawn(), but the start point
@@ -2350,6 +2551,11 @@ do_resolve_internal(void)
*/
DWORD dwThreadId;
fflush(stdout);
+ ResolverEventHandle = CreateEvent(NULL, FALSE, FALSE, NULL);
+ if (ResolverEventHandle == NULL) {
+ msyslog(LOG_ERR, "Unable to create resolver event object, can't start ntp_intres");
+ abort_resolve();
+ }
ResolverThreadHandle = CreateThread(
NULL, /* no security attributes */
0, /* use default stack size */
@@ -2359,6 +2565,8 @@ do_resolve_internal(void)
&dwThreadId); /* returns the thread identifier */
if (ResolverThreadHandle == NULL) {
msyslog(LOG_ERR, "CreateThread() failed, can't start ntp_intres");
+ CloseHandle(ResolverEventHandle);
+ ResolverEventHandle = NULL;
abort_resolve();
}
}
diff --git a/contrib/ntp/ntpd/ntp_control.c b/contrib/ntp/ntpd/ntp_control.c
index cbcc8375..15f5856 100644
--- a/contrib/ntp/ntpd/ntp_control.c
+++ b/contrib/ntp/ntpd/ntp_control.c
@@ -14,6 +14,7 @@
#include "ntp_io.h"
#include "ntp_refclock.h"
#include "ntp_control.h"
+#include "ntp_unixtime.h"
#include "ntp_stdlib.h"
#include <stdio.h>
@@ -64,6 +65,9 @@ static void ctl_putid P((const char *, char *));
static void ctl_putarray P((const char *, double *, int));
static void ctl_putsys P((int));
static void ctl_putpeer P((int, struct peer *));
+#ifdef OPENSSL
+static void ctl_putfs P((const char *, tstamp_t));
+#endif
#ifdef REFCLOCK
static void ctl_putclock P((int, struct refclockstat *, int));
#endif /* REFCLOCK */
@@ -111,23 +115,26 @@ static struct ctl_var sys_var[] = {
{ CS_OFFSET, RO, "offset" }, /* 11 */
{ CS_DRIFT, RO, "frequency" }, /* 12 */
{ CS_JITTER, RO, "jitter" }, /* 13 */
- { CS_CLOCK, RO, "clock" }, /* 14 */
- { CS_PROCESSOR, RO, "processor" }, /* 15 */
- { CS_SYSTEM, RO, "system" }, /* 16 */
- { CS_VERSION, RO, "version" }, /* 17 */
- { CS_STABIL, RO, "stability" }, /* 18 */
- { CS_VARLIST, RO, "sys_var_list" }, /* 19 */
+ { CS_ERROR, RO, "noise" }, /* 14 */
+ { CS_CLOCK, RO, "clock" }, /* 15 */
+ { CS_PROCESSOR, RO, "processor" }, /* 16 */
+ { CS_SYSTEM, RO, "system" }, /* 17 */
+ { CS_VERSION, RO, "version" }, /* 18 */
+ { CS_STABIL, RO, "stability" }, /* 19 */
+ { CS_VARLIST, RO, "sys_var_list" }, /* 20 */
#ifdef OPENSSL
- { CS_FLAGS, RO, "flags" }, /* 20 */
- { CS_HOST, RO, "hostname" }, /* 21 */
- { CS_PUBLIC, RO, "hostkey" }, /* 22 */
- { CS_CERTIF, RO, "cert" }, /* 23 */
- { CS_REVTIME, RO, "refresh" }, /* 24 */
- { CS_LEAPTAB, RO, "leapseconds" }, /* 25 */
- { CS_TAI, RO, "tai" }, /* 26 */
- { CS_DIGEST, RO, "signature" }, /* 27 */
+ { CS_FLAGS, RO, "flags" }, /* 21 */
+ { CS_HOST, RO, "hostname" }, /* 22 */
+ { CS_PUBLIC, RO, "update" }, /* 23 */
+ { CS_CERTIF, RO, "cert" }, /* 24 */
+ { CS_REVTIME, RO, "expire" }, /* 25 */
+ { CS_LEAPTAB, RO, "leapsec" }, /* 26 */
+ { CS_TAI, RO, "tai" }, /* 27 */
+ { CS_DIGEST, RO, "signature" }, /* 28 */
+ { CS_IDENT, RO, "ident" }, /* 29 */
+ { CS_REVOKE, RO, "expire" }, /* 30 */
#endif /* OPENSSL */
- { 0, EOV, "" } /* 28 */
+ { 0, EOV, "" } /* 21/31 */
};
static struct ctl_var *ext_sys_var = (struct ctl_var *)0;
@@ -154,14 +161,16 @@ static u_char def_sys_var[] = {
CS_OFFSET,
CS_DRIFT,
CS_JITTER,
+ CS_ERROR,
CS_STABIL,
#ifdef OPENSSL
CS_HOST,
CS_DIGEST,
CS_FLAGS,
CS_PUBLIC,
- CS_REVTIME,
+ CS_IDENT,
CS_LEAPTAB,
+ CS_TAI,
CS_CERTIF,
#endif /* OPENSSL */
0
@@ -194,7 +203,7 @@ static struct ctl_var peer_var[] = {
{ CP_REC, RO, "rec" }, /* 19 */
{ CP_XMT, RO, "xmt" }, /* 20 */
{ CP_REACH, RO, "reach" }, /* 21 */
- { CP_VALID, RO, "unreach" }, /* 22 */
+ { CP_UNREACH, RO, "unreach" }, /* 22 */
{ CP_TIMER, RO, "timer" }, /* 23 */
{ CP_DELAY, RO, "delay" }, /* 24 */
{ CP_OFFSET, RO, "offset" }, /* 25 */
@@ -209,18 +218,18 @@ static struct ctl_var peer_var[] = {
{ CP_FILTERROR, RO, "filtdisp=" }, /* 34 */
{ CP_FLASH, RO, "flash" }, /* 35 */
{ CP_TTL, RO, "ttl" }, /* 36 */
- { CP_RANK, RO, "rank" }, /* 37 */
- { CP_VARLIST, RO, "peer_var_list" }, /* 38 */
+ { CP_VARLIST, RO, "peer_var_list" }, /* 37 */
#ifdef OPENSSL
- { CP_FLAGS, RO, "flags" }, /* 39 */
- { CP_HOST, RO, "hostname" }, /* 40 */
+ { CP_FLAGS, RO, "flags" }, /* 38 */
+ { CP_HOST, RO, "hostname" }, /* 39 */
+ { CP_VALID, RO, "valid" }, /* 40 */
{ CP_INITSEQ, RO, "initsequence" }, /* 41 */
{ CP_INITKEY, RO, "initkey" }, /* 42 */
{ CP_INITTSP, RO, "timestamp" }, /* 43 */
{ CP_DIGEST, RO, "signature" }, /* 44 */
- { CP_IDENT, RO, "identity" }, /* 45 */
+ { CP_IDENT, RO, "trust" }, /* 45 */
#endif /* OPENSSL */
- { 0, EOV, "" } /* 39/46 */
+ { 0, EOV, "" } /* 38/46 */
};
@@ -239,7 +248,7 @@ static u_char def_peer_var[] = {
CP_ROOTDISPERSION,
CP_REFID,
CP_REACH,
- CP_VALID,
+ CP_UNREACH,
CP_HMODE,
CP_PMODE,
CP_HPOLL,
@@ -261,6 +270,7 @@ static u_char def_peer_var[] = {
#ifdef OPENSSL
CP_HOST,
CP_DIGEST,
+ CP_VALID,
CP_FLAGS,
CP_IDENT,
CP_INITSEQ,
@@ -358,11 +368,11 @@ int num_ctl_traps;
static u_char clocktypes[] = {
CTL_SST_TS_NTP, /* REFCLK_NONE (0) */
CTL_SST_TS_LOCAL, /* REFCLK_LOCALCLOCK (1) */
- CTL_SST_TS_UHF, /* 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_GOES_TRAK (6) */
+ CTL_SST_TS_UHF, /* REFCLK_GOES_TRAK (6) IRIG_AUDIO? */
CTL_SST_TS_HF, /* REFCLK_CHU (7) */
CTL_SST_TS_LF, /* REFCLOCK_PARSE (default) (8) */
CTL_SST_TS_LF, /* REFCLK_GPS_MX4200 (9) */
@@ -370,8 +380,8 @@ static u_char clocktypes[] = {
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, /* REFCLK_MSF_EES (14) */
- CTL_SST_TS_UHF, /* REFCLK_TRUETIME (15) */
+ 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_TELEPHONE, /* REFCLK_NIST_ACTS (18) */
@@ -379,9 +389,9 @@ static u_char clocktypes[] = {
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_TELEPHONE, /* REFCLK_PTB_ACTS (23) */
- CTL_SST_TS_TELEPHONE, /* REFCLK_USNO (24) */
- CTL_SST_TS_UHF, /* REFCLK_TRUETIME (25) */
+ 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_TELEPHONE, /* REFCLK_ARCRON_MSF (27) */
CTL_SST_TS_TELEPHONE, /* REFCLK_SHM (28) */
@@ -389,8 +399,8 @@ static u_char clocktypes[] = {
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 (32) */
- CTL_SST_TS_LF, /* REFCLK_ULINK (33) */
+ CTL_SST_TS_LF, /* REFCLK_DUMBCLOCK (33) */
+ CTL_SST_TS_LF, /* REFCLK_ULINK (34) */
CTL_SST_TS_LF, /* REFCLK_PCF (35) */
CTL_SST_TS_LF, /* REFCLK_WWV (36) */
CTL_SST_TS_LF, /* REFCLK_FG (37) */
@@ -757,6 +767,7 @@ ctlsysstatus(void)
register u_char this_clock;
this_clock = CTL_SST_TS_UNSPEC;
+#ifdef REFCLOCK
if (sys_peer != 0) {
if (sys_peer->sstclktype != CTL_SST_TS_UNSPEC) {
this_clock = sys_peer->sstclktype;
@@ -770,6 +781,7 @@ ctlsysstatus(void)
this_clock |= CTL_SST_TS_PPS;
}
}
+#endif /* REFCLOCK */
return (u_short)CTL_SYS_STATUS(sys_leap, this_clock,
ctl_sys_num_events, ctl_sys_last_event);
}
@@ -996,6 +1008,41 @@ ctl_putuint(
ctl_putdata(buffer, (unsigned)( cp - buffer ), 0);
}
+/*
+ * ctl_putfs - write a decoded filestamp into the response
+ */
+#ifdef OPENSSL
+static void
+ctl_putfs(
+ const char *tag,
+ tstamp_t uval
+ )
+{
+ register char *cp;
+ register const char *cq;
+ char buffer[200];
+ struct tm *tm = NULL;
+ time_t fstamp;
+
+ cp = buffer;
+ cq = tag;
+ while (*cq != '\0')
+ *cp++ = *cq++;
+
+ *cp++ = '=';
+ fstamp = uval - JAN_1970;
+ tm = gmtime(&fstamp);
+ if (tm == NULL)
+ return;
+
+ sprintf(cp, "%04d%02d%02d%02d%02d", tm->tm_year + 1900,
+ tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min);
+ while (*cp != '\0')
+ cp++;
+ ctl_putdata(buffer, (unsigned)( cp - buffer ), 0);
+}
+#endif
+
/*
* ctl_puthex - write a tagged unsigned integer, in hex, into the response
@@ -1068,8 +1115,9 @@ ctl_putts(
*cp++ = *cq++;
*cp++ = '=';
- (void) sprintf(cp, "0x%08lx.%08lx", ts->l_ui & 0xffffffffL,
- ts->l_uf & 0xffffffffL);
+ (void) sprintf(cp, "0x%08lx.%08lx",
+ ts->l_ui & ULONG_CONST(0xffffffff),
+ ts->l_uf & ULONG_CONST(0xffffffff));
while (*cp != '\0')
cp++;
ctl_putdata(buffer, (unsigned)( cp - buffer ), 0);
@@ -1105,7 +1153,6 @@ ctl_putadr(
ctl_putdata(buffer, (unsigned)( cp - buffer ), 0);
}
-
/*
* ctl_putid - write a tagged clock ID into the response
*/
@@ -1242,6 +1289,10 @@ ctl_putsys(
ctl_putdbl(sys_var[CS_JITTER].text, sys_jitter * 1e3);
break;
+ case CS_ERROR:
+ ctl_putdbl(sys_var[CS_ERROR].text, clock_jitter * 1e3);
+ break;
+
case CS_CLOCK:
get_systime(&tmp);
ctl_putts(sys_var[CS_CLOCK].text, &tmp);
@@ -1366,32 +1417,46 @@ ctl_putsys(
case CS_CERTIF:
for (cp = cinfo; cp != NULL; cp = cp->link) {
- sprintf(cbuf, "%s %s 0x%x %u", cp->subject,
- cp->issuer, cp->flags,
- ntohl(cp->cert.fstamp));
+ sprintf(cbuf, "%s %s 0x%x", cp->subject,
+ cp->issuer, cp->flags);
ctl_putstr(sys_var[CS_CERTIF].text, cbuf,
strlen(cbuf));
+ ctl_putfs(sys_var[CS_REVOKE].text, cp->last);
}
break;
case CS_PUBLIC:
if (hostval.fstamp != 0)
- ctl_putuint(sys_var[CS_PUBLIC].text,
- ntohl(hostval.fstamp));
+ ctl_putfs(sys_var[CS_PUBLIC].text,
+ ntohl(hostval.tstamp));
break;
case CS_REVTIME:
if (hostval.tstamp != 0)
- ctl_putuint(sys_var[CS_REVTIME].text,
+ ctl_putfs(sys_var[CS_REVTIME].text,
ntohl(hostval.tstamp));
break;
+ case CS_IDENT:
+ if (iffpar_pkey != NULL)
+ ctl_putstr(sys_var[CS_IDENT].text,
+ iffpar_file, strlen(iffpar_file));
+ if (gqpar_pkey != NULL)
+ ctl_putstr(sys_var[CS_IDENT].text,
+ gqpar_file, strlen(gqpar_file));
+ if (mvpar_pkey != NULL)
+ ctl_putstr(sys_var[CS_IDENT].text,
+ mvpar_file, strlen(mvpar_file));
+ break;
+
case CS_LEAPTAB:
if (tai_leap.fstamp != 0)
- ctl_putuint(sys_var[CS_LEAPTAB].text,
+ ctl_putfs(sys_var[CS_LEAPTAB].text,
ntohl(tai_leap.fstamp));
- if (sys_tai != 0)
- ctl_putuint(sys_var[CS_TAI].text, sys_tai);
+ break;
+
+ case CS_TAI:
+ ctl_putuint(sys_var[CS_TAI].text, sys_tai);
break;
#endif /* OPENSSL */
}
@@ -1407,6 +1472,7 @@ ctl_putpeer(
struct peer *peer
)
{
+ int temp;
#ifdef OPENSSL
char str[256];
struct autokey *ap;
@@ -1440,8 +1506,13 @@ ctl_putpeer(
break;
case CP_DSTADR:
- ctl_putadr(peer_var[CP_DSTADR].text, 0,
- &(peer->dstadr->sin));
+ if (peer->dstadr) {
+ ctl_putadr(peer_var[CP_DSTADR].text, 0,
+ &(peer->dstadr->sin));
+ } else {
+ ctl_putadr(peer_var[CP_DSTADR].text, 0,
+ NULL);
+ }
break;
case CP_DSTPORT:
@@ -1487,13 +1558,8 @@ ctl_putpeer(
case CP_REFID:
if (peer->flags & FLAG_REFCLOCK) {
- if (peer->stratum > 0 && peer->stratum <
- STRATUM_UNSPEC)
- ctl_putadr(peer_var[CP_REFID].text,
- peer->refid, NULL);
- else
- ctl_putid(peer_var[CP_REFID].text,
- (char *)&peer->refid);
+ ctl_putid(peer_var[CP_REFID].text,
+ (char *)&peer->refid);
} else {
if (peer->stratum > 1 && peer->stratum <
STRATUM_UNSPEC)
@@ -1526,19 +1592,16 @@ ctl_putpeer(
break;
case CP_FLASH:
- ctl_puthex(peer_var[CP_FLASH].text, peer->flash);
+ temp = peer->flash;
+ ctl_puthex(peer_var[CP_FLASH].text, temp);
break;
case CP_TTL:
ctl_putint(peer_var[CP_TTL].text, sys_ttl[peer->ttl]);
break;
- case CP_VALID:
- ctl_putuint(peer_var[CP_VALID].text, peer->unreach);
- break;
-
- case CP_RANK:
- ctl_putuint(peer_var[CP_RANK].text, peer->rank);
+ case CP_UNREACH:
+ ctl_putuint(peer_var[CP_UNREACH].text, peer->unreach);
break;
case CP_TIMER:
@@ -1556,8 +1619,7 @@ ctl_putpeer(
break;
case CP_JITTER:
- ctl_putdbl(peer_var[CP_JITTER].text,
- SQRT(peer->jitter) * 1e3);
+ ctl_putdbl(peer_var[CP_JITTER].text, peer->jitter * 1e3);
break;
case CP_DISPERSION:
@@ -1653,14 +1715,17 @@ ctl_putpeer(
case CP_HOST:
if (peer->subject != NULL)
- ctl_putstr(peer_var[CP_HOST].text, peer->subject,
- strlen(peer->subject));
+ ctl_putstr(peer_var[CP_HOST].text,
+ peer->subject, strlen(peer->subject));
+ break;
+
+ case CP_VALID: /* not used */
break;
case CP_IDENT:
if (peer->issuer != NULL)
- ctl_putstr(peer_var[CP_IDENT].text, peer->issuer,
- strlen(peer->issuer));
+ ctl_putstr(peer_var[CP_IDENT].text,
+ peer->issuer, strlen(peer->issuer));
break;
case CP_INITSEQ:
@@ -1668,7 +1733,7 @@ ctl_putpeer(
break;
ctl_putint(peer_var[CP_INITSEQ].text, ap->seq);
ctl_puthex(peer_var[CP_INITKEY].text, ap->key);
- ctl_putuint(peer_var[CP_INITTSP].text,
+ ctl_putfs(peer_var[CP_INITTSP].text,
ntohl(peer->recval.tstamp));
break;
#endif /* OPENSSL */
@@ -1895,14 +1960,24 @@ ctl_getitem(
cp++;
while (cp < reqend && *cp != ',') {
*tp++ = *cp++;
- if (tp >= buf + sizeof(buf))
+ if (tp >= buf + sizeof(buf)) {
+ ctl_error(CERR_BADFMT);
+ numctlbadpkts++;
+#if 0 /* Avoid possible DOS attack */
+/* If we get a smarter msyslog we can re-enable this */
+ msyslog(LOG_WARNING,
+ "Possible 'ntpdx' exploit from %s:%d (possibly spoofed)\n",
+ stoa(rmt_addr), SRCPORT(rmt_addr)
+ );
+#endif
return (0);
+ }
}
if (cp < reqend)
cp++;
*tp-- = '\0';
while (tp >= buf) {
- if (!isspace((unsigned char)(*tp)))
+ if (!isspace((unsigned int)(*tp)))
break;
*tp-- = '\0';
}
@@ -1978,7 +2053,7 @@ read_status(
n = 0;
rpkt.status = htons(ctlsysstatus());
- for (i = 0; i < HASH_SIZE; i++) {
+ for (i = 0; i < NTP_HASH_SIZE; i++) {
for (peer = assoc_hash[i]; peer != 0;
peer = peer->ass_next) {
ass_stat[n++] = htons(peer->associd);
@@ -2273,7 +2348,7 @@ read_clock_status(
peer = sys_peer;
} else {
peer = 0;
- for (i = 0; peer == 0 && i < HASH_SIZE; i++) {
+ for (i = 0; peer == 0 && i < NTP_HASH_SIZE; i++) {
for (peer = assoc_hash[i]; peer != 0;
peer = peer->ass_next) {
if (peer->flags & FLAG_REFCLOCK)
@@ -2904,7 +2979,7 @@ set_var(
void
set_sys_var(
- char *data,
+ const char *data,
u_long size,
u_short def
)
diff --git a/contrib/ntp/ntpd/ntp_crypto.c b/contrib/ntp/ntpd/ntp_crypto.c
index 3e67703..84adbdd 100644
--- a/contrib/ntp/ntpd/ntp_crypto.c
+++ b/contrib/ntp/ntpd/ntp_crypto.c
@@ -16,6 +16,7 @@
#include "ntp_stdlib.h"
#include "ntp_unixtime.h"
#include "ntp_string.h"
+#include <ntp_random.h>
#include "openssl/asn1_mac.h"
#include "openssl/bn.h"
@@ -98,7 +99,6 @@
* Global cryptodata in host byte order
*/
u_int32 crypto_flags = 0x0; /* status word */
-u_int sys_tai; /* current UTC offset from TAI */
/*
* Global cryptodata in network byte order
@@ -107,6 +107,12 @@ struct cert_info *cinfo = NULL; /* certificate info/value */
struct value hostval; /* host value */
struct value pubkey; /* public key */
struct value tai_leap; /* leapseconds table */
+EVP_PKEY *iffpar_pkey = NULL; /* IFF parameters */
+EVP_PKEY *gqpar_pkey = NULL; /* GQ parameters */
+EVP_PKEY *mvpar_pkey = NULL; /* MV parameters */
+char *iffpar_file = NULL; /* IFF parameters file */
+char *gqpar_file = NULL; /* GQ parameters file */
+char *mvpar_file = NULL; /* MV parameters file */
/*
* Private cryptodata in host byte order
@@ -114,22 +120,17 @@ struct value tai_leap; /* leapseconds table */
static char *passwd = NULL; /* private key password */
static EVP_PKEY *host_pkey = NULL; /* host key */
static EVP_PKEY *sign_pkey = NULL; /* sign key */
-static EVP_PKEY *iffpar_pkey = NULL; /* IFF parameters */
-static EVP_PKEY *gqpar_pkey = NULL; /* GQ parameters */
-static EVP_PKEY *mvpar_pkey = NULL; /* MV parameters */
static const EVP_MD *sign_digest = NULL; /* sign digest */
static u_int sign_siglen; /* sign key length */
static char *rand_file = NULL; /* random seed file */
static char *host_file = NULL; /* host key file */
static char *sign_file = NULL; /* sign key file */
-static char *iffpar_file = NULL; /* IFF parameters file */
-static char *gqpar_file = NULL; /* GQ parameters file */
-static char *mvpar_file = NULL; /* MV parameters file */
static char *cert_file = NULL; /* certificate file */
static char *leap_file = NULL; /* leapseconds file */
-static tstamp_t if_fstamp = 0; /* IFF file stamp */
+static tstamp_t if_fstamp = 0; /* IFF filestamp */
static tstamp_t gq_fstamp = 0; /* GQ file stamp */
-static tstamp_t mv_fstamp = 0; /* MV file stamp */
+static tstamp_t mv_fstamp = 0; /* MV filestamp */
+static u_int ident_scheme = 0; /* server identity scheme */
/*
* Cryptotypes
@@ -192,6 +193,9 @@ session_key(
u_int32 header[10]; /* data in network byte order */
u_int hdlen, len;
+ if (!dstadr)
+ return 0;
+
/*
* Generate the session key and key ID. If the lifetime is
* greater than zero, install the key and call it trusted.
@@ -205,6 +209,7 @@ session_key(
header[3] = htonl(private);
hdlen = 4 * sizeof(u_int32);
break;
+
case AF_INET6:
memcpy(&header[0], &GET_INADDR6(*srcadr),
sizeof(struct in6_addr));
@@ -238,13 +243,17 @@ session_key(
/*
* make_keylist - generate key list
*
+ * Returns
+ * XEVNT_OK success
+ * XEVNT_PER host certificate expired
+ *
* This routine constructs a pseudo-random sequence by repeatedly
* hashing the session key starting from a given source address,
* destination address, private value and the next key ID of the
* preceeding session key. The last entry on the list is saved along
* with its sequence number and public signature.
*/
-void
+int
make_keylist(
struct peer *peer, /* peer structure pointer */
struct interface *dstadr /* interface */
@@ -257,9 +266,12 @@ make_keylist(
keyid_t keyid = 0; /* next key ID */
keyid_t cookie; /* private value */
u_long lifetime;
- u_int len;
+ u_int len, mpoll;
int i;
+ if (!dstadr)
+ return XEVNT_OK;
+
/*
* Allocate the key list if necessary.
*/
@@ -273,9 +285,8 @@ make_keylist(
* NTP_MAXKEY.
*/
while (1) {
- keyid = (u_long)RANDOM & 0xffffffff;
- if (keyid <= NTP_MAXKEY)
- continue;
+ keyid = (ntp_random() + NTP_MAXKEY + 1) & ((1 <<
+ sizeof(keyid_t)) - 1);
if (authhavekey(keyid))
continue;
break;
@@ -288,7 +299,8 @@ make_keylist(
* included in the hash is zero if broadcast mode, the peer
* cookie if client mode or the host cookie if symmetric modes.
*/
- lifetime = min(sys_automax, (unsigned long) NTP_MAXSESSION * (1 <<(peer->kpoll)));
+ mpoll = 1 << min(peer->ppoll, peer->hpoll);
+ lifetime = min(sys_automax, NTP_MAXSESSION * mpoll);
if (peer->hmode == MODE_BROADCAST)
cookie = 0;
else
@@ -298,9 +310,9 @@ make_keylist(
peer->keynumber = i;
keyid = session_key(&dstadr->sin, &peer->srcadr, keyid,
cookie, lifetime);
- lifetime -= 1 << peer->kpoll;
+ lifetime -= mpoll;
if (auth_havekey(keyid) || keyid <= NTP_MAXKEY ||
- lifetime <= (unsigned long)(1 << (peer->kpoll)))
+ lifetime <= mpoll)
break;
}
@@ -320,7 +332,10 @@ make_keylist(
vp->fstamp = hostval.tstamp;
vp->vallen = htonl(sizeof(struct autokey));
vp->siglen = 0;
- if (vp->tstamp != 0) {
+ if (tstamp != 0) {
+ if (tstamp < cinfo->first || tstamp > cinfo->last)
+ return (XEVNT_PER);
+
if (vp->sig == NULL)
vp->sig = emalloc(sign_siglen);
EVP_SignInit(&ctx, sign_digest);
@@ -337,8 +352,9 @@ make_keylist(
if (debug)
printf("make_keys: %d %08x %08x ts %u fs %u poll %d\n",
ntohl(ap->seq), ntohl(ap->key), cookie,
- ntohl(vp->tstamp), ntohl(vp->fstamp), peer->kpoll);
+ ntohl(vp->tstamp), ntohl(vp->fstamp), peer->hpoll);
#endif
+ return (XEVNT_OK);
}
@@ -374,14 +390,10 @@ crypto_recv(
X509 *cert; /* X509 certificate */
char statstr[NTP_MAXSTRLEN]; /* statistics for filegen */
keyid_t cookie; /* crumbles */
+ int hismode; /* packet mode */
int rval = XEVNT_OK;
u_char *ptr;
u_int32 temp32;
-#ifdef KERNEL_PLL
-#if NTP_API > 3
- struct timex ntv; /* kernel interface structure */
-#endif /* NTP_API */
-#endif /* KERNEL_PLL */
/*
* Initialize. Note that the packet has already been checked for
@@ -394,6 +406,7 @@ crypto_recv(
* association ID is saved only if nonzero.
*/
authlen = LEN_PKT_NOMAC;
+ hismode = (int)PKT_MODE((&rbufp->recv_pkt)->li_vn_mode);
while ((has_mac = rbufp->recv_length - authlen) > MAX_MAC_LEN) {
pkt = (u_int32 *)&rbufp->recv_pkt + authlen / 4;
ep = (struct exten *)pkt;
@@ -404,7 +417,7 @@ crypto_recv(
#ifdef DEBUG
if (debug)
printf(
- "crypto_recv: flags 0x%x ext offset %d len %u code %x assocID %d\n",
+ "crypto_recv: flags 0x%x ext offset %d len %u code 0x%x assocID %d\n",
peer->crypto, authlen, len, code >> 16,
associd);
#endif
@@ -413,8 +426,7 @@ crypto_recv(
* Check version number and field length. If bad,
* quietly ignore the packet.
*/
- if (((code >> 24) & 0x3f) != CRYPTO_VN || len < 8 ||
- (len < VALUE_LEN && (code & CRYPTO_RESP))) {
+ if (((code >> 24) & 0x3f) != CRYPTO_VN || len < 8) {
sys_unknownversion++;
code |= CRYPTO_ERROR;
}
@@ -444,15 +456,21 @@ crypto_recv(
* defines the signature scheme. Note the request and
* response are identical, but neither is validated by
* signature. The request is processed here only in
- * symmetric modes. The server name field would be
+ * symmetric modes. The server name field might be
* useful to implement access controls in future.
*/
case CRYPTO_ASSOC:
/*
- * Pass the extension field to the transmit
- * side.
+ * If the machine is running when this message
+ * arrives, the other fellow has reset and so
+ * must we. Otherwise, pass the extension field
+ * to the transmit side.
*/
+ if (peer->crypto) {
+ rval = XEVNT_ERR;
+ break;
+ }
fp = emalloc(len);
memcpy(fp, ep, len);
temp32 = CRYPTO_RESP;
@@ -464,12 +482,13 @@ crypto_recv(
/*
* Discard the message if it has already been
- * stored or the server is not synchronized.
+ * stored or the message has been amputated.
*/
- if (peer->crypto || !fstamp)
+ if (peer->crypto)
break;
- if (len < VALUE_LEN + vallen) {
+ if (vallen == 0 || vallen > MAXHOSTNAME ||
+ len < VALUE_LEN + vallen) {
rval = XEVNT_LEN;
break;
}
@@ -481,51 +500,68 @@ crypto_recv(
* identity are presumed valid, so we skip the
* certificate and identity exchanges and move
* immediately to the cookie exchange which
- * confirms the server signature. If the client
- * has IFF or GC or both, the server must have
- * the same one or both. Otherwise, the default
- * TC scheme is used.
+ * confirms the server signature.
*/
+#ifdef DEBUG
+ if (debug)
+ printf(
+ "crypto_recv: ident host 0x%x server 0x%x\n",
+ crypto_flags, fstamp);
+#endif
+ temp32 = (crypto_flags | ident_scheme) &
+ fstamp & CRYPTO_FLAG_MASK;
if (crypto_flags & CRYPTO_FLAG_PRIV) {
- if (!(fstamp & CRYPTO_FLAG_PRIV))
+ if (!(fstamp & CRYPTO_FLAG_PRIV)) {
rval = XEVNT_KEY;
- else
+ break;
+
+ } else {
fstamp |= CRYPTO_FLAG_VALID |
- CRYPTO_FLAG_VRFY;
- } else if (crypto_flags & CRYPTO_FLAG_MASK &&
- !(crypto_flags & fstamp &
- CRYPTO_FLAG_MASK)) {
+ CRYPTO_FLAG_VRFY |
+ CRYPTO_FLAG_SIGN;
+ }
+ /*
+ * In symmetric modes it is an error if either
+ * peer requests identity and the other peer
+ * does not support it.
+ */
+ } else if ((hismode == MODE_ACTIVE || hismode ==
+ MODE_PASSIVE) && ((crypto_flags | fstamp) &
+ CRYPTO_FLAG_MASK) && !temp32) {
+ rval = XEVNT_KEY;
+ break;
+ /*
+ * It is an error if the client requests
+ * identity and the server does not support it.
+ */
+ } else if (hismode == MODE_CLIENT && (fstamp &
+ CRYPTO_FLAG_MASK) && !temp32) {
rval = XEVNT_KEY;
+ break;
}
/*
- * Discard the message if identity error.
+ * Otherwise, the identity scheme(s) are those
+ * that both client and server support.
*/
- if (rval != XEVNT_OK)
- break;
+ fstamp = temp32 | (fstamp & ~CRYPTO_FLAG_MASK);
/*
- * Discard the message if the host name length
- * is unreasonable or the signature digest NID
- * is not supported.
+ * Discard the message if the signature digest
+ * NID is not supported.
*/
temp32 = (fstamp >> 16) & 0xffff;
dp =
(const EVP_MD *)EVP_get_digestbynid(temp32);
- if (vallen == 0 || vallen > MAXHOSTNAME)
- rval = XEVNT_LEN;
- else if (dp == NULL)
+ if (dp == NULL) {
rval = XEVNT_MD;
- if (rval != XEVNT_OK)
break;
+ }
/*
* Save status word, host name and message
- * digest/signature type. If PC identity, be
- * sure not to sign the certificate.
+ * digest/signature type.
*/
- if (crypto_flags & CRYPTO_FLAG_PRIV)
- fstamp |= CRYPTO_FLAG_SIGN;
peer->crypto = fstamp;
peer->digest = dp;
peer->subject = emalloc(vallen + 1);
@@ -554,12 +590,8 @@ crypto_recv(
case CRYPTO_CERT | CRYPTO_RESP:
/*
- * Discard the message if invalid or identity
- * already confirmed.
+ * Discard the message if invalid.
*/
- if (peer->crypto & CRYPTO_FLAG_VRFY)
- break;
-
if ((rval = crypto_verify(ep, NULL, peer)) !=
XEVNT_OK)
break;
@@ -589,7 +621,7 @@ crypto_recv(
strcpy(peer->issuer, cinfo->issuer);
/*
- * We plug in the public key and group key in
+ * We plug in the public key and lifetime from
* the first certificate received. However, note
* that this certificate might not be signed by
* the server, so we can't check the
@@ -602,7 +634,7 @@ crypto_recv(
peer->pkey = X509_get_pubkey(cert);
X509_free(cert);
}
- peer->flash &= ~TEST10;
+ peer->flash &= ~TEST8;
temp32 = cinfo->nid;
sprintf(statstr, "cert %s 0x%x %s (%u) fs %u",
cinfo->subject, cinfo->flags,
@@ -627,12 +659,13 @@ crypto_recv(
case CRYPTO_IFF | CRYPTO_RESP:
/*
- * Discard the message if invalid or identity
- * already confirmed.
+ * Discard the message if invalid or certificate
+ * trail not trusted.
*/
- if (peer->crypto & CRYPTO_FLAG_VRFY)
+ if (!(peer->crypto & CRYPTO_FLAG_VALID)) {
+ rval = XEVNT_ERR;
break;
-
+ }
if ((rval = crypto_verify(ep, NULL, peer)) !=
XEVNT_OK)
break;
@@ -651,7 +684,7 @@ crypto_recv(
peer->crypto |= CRYPTO_FLAG_VRFY |
CRYPTO_FLAG_PROV;
- peer->flash &= ~TEST10;
+ peer->flash &= ~TEST8;
sprintf(statstr, "iff fs %u",
ntohl(ep->fstamp));
record_crypto_stats(&peer->srcadr, statstr);
@@ -674,12 +707,13 @@ crypto_recv(
case CRYPTO_GQ | CRYPTO_RESP:
/*
- * Discard the message if invalid or identity
- * already confirmed.
+ * Discard the message if invalid or certificate
+ * trail not trusted.
*/
- if (peer->crypto & CRYPTO_FLAG_VRFY)
+ if (!(peer->crypto & CRYPTO_FLAG_VALID)) {
+ rval = XEVNT_ERR;
break;
-
+ }
if ((rval = crypto_verify(ep, NULL, peer)) !=
XEVNT_OK)
break;
@@ -698,7 +732,7 @@ crypto_recv(
peer->crypto |= CRYPTO_FLAG_VRFY |
CRYPTO_FLAG_PROV;
- peer->flash &= ~TEST10;
+ peer->flash &= ~TEST8;
sprintf(statstr, "gq fs %u",
ntohl(ep->fstamp));
record_crypto_stats(&peer->srcadr, statstr);
@@ -714,12 +748,13 @@ crypto_recv(
case CRYPTO_MV | CRYPTO_RESP:
/*
- * Discard the message if invalid or identity
- * already confirmed.
+ * Discard the message if invalid or certificate
+ * trail not trusted.
*/
- if (peer->crypto & CRYPTO_FLAG_VRFY)
+ if (!(peer->crypto & CRYPTO_FLAG_VALID)) {
+ rval = XEVNT_ERR;
break;
-
+ }
if ((rval = crypto_verify(ep, NULL, peer)) !=
XEVNT_OK)
break;
@@ -738,7 +773,7 @@ crypto_recv(
peer->crypto |= CRYPTO_FLAG_VRFY |
CRYPTO_FLAG_PROV;
- peer->flash &= ~TEST10;
+ peer->flash &= ~TEST8;
sprintf(statstr, "mv fs %u",
ntohl(ep->fstamp));
record_crypto_stats(&peer->srcadr, statstr);
@@ -747,47 +782,6 @@ crypto_recv(
printf("crypto_recv: %s\n", statstr);
#endif
break;
-
- /*
- * X509 certificate sign response. Validate the
- * certificate signed by the server and install. Later
- * this can be provided to clients of this server in
- * lieu of the self signed certificate in order to
- * validate the public key.
- */
- case CRYPTO_SIGN | CRYPTO_RESP:
-
- /*
- * Discard the message if invalid or identity
- * not confirmed.
- */
- if (!(peer->crypto & CRYPTO_FLAG_VRFY))
- break;
-
- if ((rval = crypto_verify(ep, NULL, peer)) !=
- XEVNT_OK)
- break;
-
- /*
- * Scan the certificate list to delete old
- * versions and link the newest version first on
- * the list.
- */
- if ((rval = cert_install(ep, peer)) != XEVNT_OK) break;
-
- peer->crypto |= CRYPTO_FLAG_SIGN;
- peer->flash &= ~TEST10;
- temp32 = cinfo->nid;
- sprintf(statstr, "sign %s 0x%x %s (%u) fs %u",
- cinfo->issuer, cinfo->flags,
- OBJ_nid2ln(temp32), temp32,
- ntohl(ep->fstamp));
- record_crypto_stats(&peer->srcadr, statstr);
-#ifdef DEBUG
- if (debug)
- printf("crypto_recv: %s\n", statstr);
-#endif
- break;
/*
* Cookie request in symmetric modes. Roll a random
@@ -797,12 +791,13 @@ crypto_recv(
case CRYPTO_COOK:
/*
- * Discard the message if invalid or identity
- * not confirmed.
+ * Discard the message if invalid or certificate
+ * trail not trusted.
*/
- if (!(peer->crypto & CRYPTO_FLAG_VRFY))
+ if (!(peer->crypto & CRYPTO_FLAG_VALID)) {
+ rval = XEVNT_ERR;
break;
-
+ }
if ((rval = crypto_verify(ep, NULL, peer)) !=
XEVNT_OK)
break;
@@ -817,7 +812,7 @@ crypto_recv(
fp->opcode |= htonl(temp32);
peer->cmmd = fp;
if (peer->crypto & CRYPTO_FLAG_AGREE) {
- peer->flash &= ~TEST10;
+ peer->flash &= ~TEST8;
break;
}
@@ -832,7 +827,7 @@ crypto_recv(
RAND_bytes((u_char *)&peer->pcookie, 4);
peer->crypto &= ~CRYPTO_FLAG_AUTO;
peer->crypto |= CRYPTO_FLAG_AGREE;
- peer->flash &= ~TEST10;
+ peer->flash &= ~TEST8;
sprintf(statstr, "cook %x ts %u fs %u",
peer->pcookie, ntohl(ep->tstamp),
ntohl(ep->fstamp));
@@ -855,9 +850,10 @@ crypto_recv(
* not confirmed or signature not verified with
* respect to the cookie values.
*/
- if (!(peer->crypto & CRYPTO_FLAG_VRFY))
+ if (!(peer->crypto & CRYPTO_FLAG_VRFY)) {
+ rval = XEVNT_ERR;
break;
-
+ }
if ((rval = crypto_verify(ep, &peer->cookval,
peer)) != XEVNT_OK)
break;
@@ -896,7 +892,7 @@ crypto_recv(
else
peer->crypto &= ~CRYPTO_FLAG_AUTO;
peer->crypto |= CRYPTO_FLAG_AGREE;
- peer->flash &= ~TEST10;
+ peer->flash &= ~TEST8;
sprintf(statstr, "cook %x ts %u fs %u",
peer->pcookie, ntohl(ep->tstamp),
ntohl(ep->fstamp));
@@ -924,9 +920,10 @@ crypto_recv(
* not confirmed or signature not verified with
* respect to the receive autokey values.
*/
- if (!(peer->crypto & CRYPTO_FLAG_VRFY))
+ if (!(peer->crypto & CRYPTO_FLAG_VRFY)) {
+ rval = XEVNT_ERR;
break;
-
+ }
if ((rval = crypto_verify(ep, &peer->recval,
peer)) != XEVNT_OK)
break;
@@ -946,7 +943,7 @@ crypto_recv(
bp->key = ntohl(ap->key);
peer->pkeyid = bp->key;
peer->crypto |= CRYPTO_FLAG_AUTO;
- peer->flash &= ~TEST10;
+ peer->flash &= ~TEST8;
sprintf(statstr,
"auto seq %d key %x ts %u fs %u", bp->seq,
bp->key, ntohl(ep->tstamp),
@@ -957,6 +954,49 @@ crypto_recv(
printf("crypto_recv: %s\n", statstr);
#endif
break;
+
+ /*
+ * X509 certificate sign response. Validate the
+ * certificate signed by the server and install. Later
+ * this can be provided to clients of this server in
+ * lieu of the self signed certificate in order to
+ * validate the public key.
+ */
+ case CRYPTO_SIGN | CRYPTO_RESP:
+
+ /*
+ * Discard the message if invalid or not
+ * proventic.
+ */
+ if (!(peer->crypto & CRYPTO_FLAG_PROV)) {
+ rval = XEVNT_ERR;
+ break;
+ }
+ if ((rval = crypto_verify(ep, NULL, peer)) !=
+ XEVNT_OK)
+ break;
+
+ /*
+ * Scan the certificate list to delete old
+ * versions and link the newest version first on
+ * the list.
+ */
+ if ((rval = cert_install(ep, peer)) != XEVNT_OK)
+ break;
+
+ peer->crypto |= CRYPTO_FLAG_SIGN;
+ peer->flash &= ~TEST8;
+ temp32 = cinfo->nid;
+ sprintf(statstr, "sign %s 0x%x %s (%u) fs %u",
+ cinfo->issuer, cinfo->flags,
+ OBJ_nid2ln(temp32), temp32,
+ ntohl(ep->fstamp));
+ record_crypto_stats(&peer->srcadr, statstr);
+#ifdef DEBUG
+ if (debug)
+ printf("crypto_recv: %s\n", statstr);
+#endif
+ break;
/*
* Install leapseconds table in symmetric modes. This
@@ -970,12 +1010,8 @@ crypto_recv(
case CRYPTO_TAI:
/*
- * Discard the message if invalid or identity
- * not confirmed.
+ * Discard the message if invalid.
*/
- if (!(peer->crypto & CRYPTO_FLAG_VRFY))
- break;
-
if ((rval = crypto_verify(ep, NULL, peer)) !=
XEVNT_OK)
break;
@@ -991,7 +1027,7 @@ crypto_recv(
fp->opcode |= htonl(temp32);
peer->cmmd = fp;
if (len <= VALUE_LEN) {
- peer->flash &= ~TEST10;
+ peer->flash &= ~TEST8;
break;
}
/* fall through */
@@ -999,22 +1035,18 @@ crypto_recv(
case CRYPTO_TAI | CRYPTO_RESP:
/*
- * Discard the message if invalid or identity
- * not confirmed or signature not verified with
- * respect to the leapsecond table values.
+ * If this is a response, discard the message if
+ * signature not verified with respect to the
+ * leapsecond table values.
*/
- if (!(peer->crypto & CRYPTO_FLAG_VRFY))
- break;
-
- if ((rval = crypto_verify(ep, &peer->tai_leap,
- peer)) != XEVNT_OK)
- break;
+ if (peer->cmmd == NULL) {
+ if ((rval = crypto_verify(ep,
+ &peer->tai_leap, peer)) != XEVNT_OK)
+ break;
+ }
/*
- * Initialize peer variables, leapseconds
- * structure and extension field in network byte
- * order. Since a filestamp may have changed,
- * recompute the signatures.
+ * Initialize peer variables with latest update.
*/
peer->tai_leap.tstamp = ep->tstamp;
peer->tai_leap.fstamp = ep->fstamp;
@@ -1035,25 +1067,12 @@ crypto_recv(
tai_leap.ptr = emalloc(vallen);
memcpy(tai_leap.ptr, ep->pkt, vallen);
crypto_update();
- sys_tai = vallen / 4 + TAI_1972 - 1;
}
crypto_flags |= CRYPTO_FLAG_TAI;
peer->crypto |= CRYPTO_FLAG_LEAP;
- peer->flash &= ~TEST10;
-#ifdef KERNEL_PLL
-#if NTP_API > 3
- /*
- * If the kernel cooperates, initialize the
- * current TAI offset.
- */
- ntv.modes = MOD_TAI;
- ntv.constant = sys_tai;
- (void)ntp_adjtime(&ntv);
-#endif /* NTP_API */
-#endif /* KERNEL_PLL */
- sprintf(statstr, "leap %u ts %u fs %u",
- vallen, ntohl(ep->tstamp),
- ntohl(ep->fstamp));
+ peer->flash &= ~TEST8;
+ sprintf(statstr, "leap %u ts %u fs %u", vallen,
+ ntohl(ep->tstamp), ntohl(ep->fstamp));
record_crypto_stats(&peer->srcadr, statstr);
#ifdef DEBUG
if (debug)
@@ -1068,6 +1087,7 @@ crypto_recv(
* valid field length. Remaining checks are below and on
* the transmit side.
*/
+ case CRYPTO_CERT:
case CRYPTO_IFF:
case CRYPTO_GQ:
case CRYPTO_MV:
@@ -1076,7 +1096,6 @@ crypto_recv(
rval = XEVNT_LEN;
break;
}
-
/* fall through */
/*
@@ -1088,7 +1107,7 @@ crypto_recv(
*/
default:
if (code & (CRYPTO_RESP | CRYPTO_ERROR)) {
- rval = XEVNT_LEN;
+ rval = XEVNT_ERR;
} else if ((rval = crypto_verify(ep, NULL,
peer)) == XEVNT_OK) {
fp = emalloc(len);
@@ -1100,24 +1119,27 @@ crypto_recv(
}
/*
- * We log everything except length/format errors and
+ * We don't log length/format/timestamp errors and
* duplicates, which are log clogging vulnerabilities.
* The first error found terminates the extension field
- * scan and we return the laundry to the caller.
+ * scan and we return the laundry to the caller. A
+ * length/format/timestamp error on transmit is
+ * cheerfully ignored, as the message is not sent.
*/
- if (rval != XEVNT_OK) {
+ if (rval > XEVNT_TSP) {
sprintf(statstr,
"error %x opcode %x ts %u fs %u", rval,
code, tstamp, fstamp);
- if (rval > XEVNT_TSP)
- record_crypto_stats(&peer->srcadr,
- statstr);
+ record_crypto_stats(&peer->srcadr, statstr);
report_event(rval, peer);
#ifdef DEBUG
if (debug)
printf("crypto_recv: %s\n", statstr);
#endif
break;
+
+ } else if (rval > XEVNT_OK && (code & CRYPTO_RESP)) {
+ rval = XEVNT_OK;
}
authlen += len;
}
@@ -1148,9 +1170,10 @@ crypto_xmit(
struct peer *peer; /* peer structure pointer */
u_int opcode; /* extension field opcode */
struct exten *fp; /* extension pointers */
- struct cert_info *cp; /* certificate info/value pointer */
+ struct cert_info *cp, *xp; /* certificate info/value pointer */
char certname[MAXHOSTNAME + 1]; /* subject name buffer */
char statstr[NTP_MAXSTRLEN]; /* statistics for filegen */
+ tstamp_t tstamp;
u_int vallen;
u_int len;
struct value vtemp;
@@ -1170,21 +1193,22 @@ crypto_xmit(
fp->associd = htonl(associd);
len = 8;
rval = XEVNT_OK;
+ tstamp = crypto_time();
switch (opcode & 0xffff0000) {
/*
* Send association request and response with status word and
* host name. Note, this message is not signed and the filestamp
- * contains only the status word. We check at this point whether
- * the identity schemes are compatible to save tears later on.
+ * contains only the status word.
*/
case CRYPTO_ASSOC | CRYPTO_RESP:
+ len += crypto_send(fp, &hostval);
+ fp->fstamp = htonl(crypto_flags);
+ break;
+
case CRYPTO_ASSOC:
len += crypto_send(fp, &hostval);
- if (crypto_time() == 0)
- fp->fstamp = 0;
- else
- fp->fstamp = htonl(crypto_flags);
+ fp->fstamp = htonl(crypto_flags | ident_scheme);
break;
/*
@@ -1196,17 +1220,15 @@ crypto_xmit(
vtemp.tstamp = ep->tstamp;
vtemp.fstamp = ep->fstamp;
vtemp.vallen = ep->vallen;
- vtemp.ptr = (unsigned char *)ep->pkt;
+ vtemp.ptr = (u_char *)ep->pkt;
len += crypto_send(fp, &vtemp);
break;
/*
* Send certificate response or sign request. Use the values
- * from the certificate. If the request contains no subject
- * name, assume the name of this host. This is for backwards
- * compatibility. Light the error bit if no certificate with
- * the given subject name is found. Of course, private
- * certificates are never sent.
+ * from the certificate cache. If the request contains no
+ * subject name, assume the name of this host. This is for
+ * backwards compatibility. Private certificates are never sent.
*/
case CRYPTO_SIGN:
case CRYPTO_CERT | CRYPTO_RESP:
@@ -1214,23 +1236,61 @@ crypto_xmit(
if (vallen == 8) {
strcpy(certname, sys_hostname);
} else if (vallen == 0 || vallen > MAXHOSTNAME) {
- opcode |= CRYPTO_ERROR;
+ rval = XEVNT_LEN;
break;
} else {
memcpy(certname, ep->pkt, vallen);
certname[vallen] = '\0';
}
+
+ /*
+ * Find all certificates with matching subject. If a
+ * self-signed, trusted certificate is found, use that.
+ * If not, use the first one with matching subject. A
+ * private certificate is never divulged or signed.
+ */
+ xp = NULL;
for (cp = cinfo; cp != NULL; cp = cp->link) {
if (cp->flags & CERT_PRIV)
continue;
+
if (strcmp(certname, cp->subject) == 0) {
- len += crypto_send(fp, &cp->cert);
- break;
+ if (xp == NULL)
+ xp = cp;
+ if (strcmp(certname, cp->issuer) ==
+ 0 && cp->flags & CERT_TRUST) {
+ xp = cp;
+ break;
+ }
}
}
- if (cp == NULL)
- opcode |= CRYPTO_ERROR;
+
+ /*
+ * Be careful who you trust. If not yet synchronized,
+ * give back an empty response. If certificate not found
+ * or beyond the lifetime, return an error. This is to
+ * avoid a bad dude trying to get an expired certificate
+ * re-signed. Otherwise, send it.
+ *
+ * Note the timestamp and filestamp are taken from the
+ * certificate value structure. For all certificates the
+ * timestamp is the latest signature update time. For
+ * host and imported certificates the filestamp is the
+ * creation epoch. For signed certificates the filestamp
+ * is the creation epoch of the trusted certificate at
+ * the base of the certificate trail. In principle, this
+ * allows strong checking for signature masquerade.
+ */
+ if (tstamp == 0)
+ break;
+
+ if (xp == NULL)
+ rval = XEVNT_CRT;
+ else if (tstamp < xp->first || tstamp > xp->last)
+ rval = XEVNT_SRV;
+ else
+ len += crypto_send(fp, &xp->cert);
break;
/*
@@ -1238,21 +1298,23 @@ crypto_xmit(
*/
case CRYPTO_IFF:
if ((peer = findpeerbyassoc(ep->pkt[0])) == NULL) {
- opcode |= CRYPTO_ERROR;
+ rval = XEVNT_ERR;
break;
}
- if ((rval = crypto_alice(peer, &vtemp)) == XEVNT_OK)
+ if ((rval = crypto_alice(peer, &vtemp)) == XEVNT_OK) {
len += crypto_send(fp, &vtemp);
- value_free(&vtemp);
+ value_free(&vtemp);
+ }
break;
/*
* Send response in Schnorr (IFF) identity scheme.
*/
case CRYPTO_IFF | CRYPTO_RESP:
- if ((rval = crypto_bob(ep, &vtemp)) == XEVNT_OK)
+ if ((rval = crypto_bob(ep, &vtemp)) == XEVNT_OK) {
len += crypto_send(fp, &vtemp);
- value_free(&vtemp);
+ value_free(&vtemp);
+ }
break;
/*
@@ -1260,21 +1322,23 @@ crypto_xmit(
*/
case CRYPTO_GQ:
if ((peer = findpeerbyassoc(ep->pkt[0])) == NULL) {
- opcode |= CRYPTO_ERROR;
+ rval = XEVNT_ERR;
break;
}
- if ((rval = crypto_alice2(peer, &vtemp)) == XEVNT_OK)
+ if ((rval = crypto_alice2(peer, &vtemp)) == XEVNT_OK) {
len += crypto_send(fp, &vtemp);
- value_free(&vtemp);
+ value_free(&vtemp);
+ }
break;
/*
* Send response in Guillou-Quisquater (GQ) identity scheme.
*/
case CRYPTO_GQ | CRYPTO_RESP:
- if ((rval = crypto_bob2(ep, &vtemp)) == XEVNT_OK)
+ if ((rval = crypto_bob2(ep, &vtemp)) == XEVNT_OK) {
len += crypto_send(fp, &vtemp);
- value_free(&vtemp);
+ value_free(&vtemp);
+ }
break;
/*
@@ -1282,21 +1346,23 @@ crypto_xmit(
*/
case CRYPTO_MV:
if ((peer = findpeerbyassoc(ep->pkt[0])) == NULL) {
- opcode |= CRYPTO_ERROR;
+ rval = XEVNT_ERR;
break;
}
- if ((rval = crypto_alice3(peer, &vtemp)) == XEVNT_OK)
+ if ((rval = crypto_alice3(peer, &vtemp)) == XEVNT_OK) {
len += crypto_send(fp, &vtemp);
- value_free(&vtemp);
+ value_free(&vtemp);
+ }
break;
/*
* Send response in MV identity scheme.
*/
case CRYPTO_MV | CRYPTO_RESP:
- if ((rval = crypto_bob3(ep, &vtemp)) == XEVNT_OK)
+ if ((rval = crypto_bob3(ep, &vtemp)) == XEVNT_OK) {
len += crypto_send(fp, &vtemp);
- value_free(&vtemp);
+ value_free(&vtemp);
+ }
break;
/*
@@ -1327,14 +1393,14 @@ crypto_xmit(
*/
case CRYPTO_COOK | CRYPTO_RESP:
if ((opcode & 0xffff) < VALUE_LEN) {
- opcode |= CRYPTO_ERROR;
+ rval = XEVNT_LEN;
break;
}
if (PKT_MODE(xpkt->li_vn_mode) == MODE_SERVER) {
tcookie = cookie;
} else {
if ((peer = findpeerbyassoc(associd)) == NULL) {
- opcode |= CRYPTO_ERROR;
+ rval = XEVNT_ERR;
break;
}
tcookie = peer->pcookie;
@@ -1354,7 +1420,7 @@ crypto_xmit(
*/
case CRYPTO_AUTO | CRYPTO_RESP:
if ((peer = findpeerbyassoc(associd)) == NULL) {
- opcode |= CRYPTO_ERROR;
+ rval = XEVNT_ERR;
break;
}
peer->flags &= ~FLAG_ASSOC;
@@ -1363,8 +1429,8 @@ crypto_xmit(
/*
* Send leapseconds table and signature. Use the values from the
- * tai structure. If no table has been loaded, just send a
- * request.
+ * tai structure. If no table has been loaded, just send an
+ * empty request.
*/
case CRYPTO_TAI:
case CRYPTO_TAI | CRYPTO_RESP:
@@ -1378,22 +1444,24 @@ crypto_xmit(
*/
default:
if (opcode & CRYPTO_RESP)
- opcode |= CRYPTO_ERROR;
+ rval = XEVNT_ERR;
}
/*
- * We ignore length/format errors and duplicates. Other errors
- * are reported to the log and deny further service. To really
- * persistent rascals we toss back a kiss-of-death grenade.
+ * In case of error, flame the log. If a request, toss the
+ * puppy; if a response, return so the sender can flame, too.
*/
- if (rval > XEVNT_TSP) {
+ if (rval != XEVNT_OK) {
opcode |= CRYPTO_ERROR;
sprintf(statstr, "error %x opcode %x", rval, opcode);
record_crypto_stats(srcadr_sin, statstr);
+ report_event(rval, NULL);
#ifdef DEBUG
if (debug)
printf("crypto_xmit: %s\n", statstr);
#endif
+ if (!(opcode & CRYPTO_RESP))
+ return (0);
}
/*
@@ -1405,8 +1473,8 @@ crypto_xmit(
#ifdef DEBUG
if (debug)
printf(
- "crypto_xmit: ext offset %d len %u code %x assocID %d\n",
- start, len, opcode>> 16, associd);
+ "crypto_xmit: flags 0x%x ext offset %d len %u code 0x%x assocID %d\n",
+ crypto_flags, start, len, opcode >> 16, associd);
#endif
return (len);
}
@@ -1423,6 +1491,7 @@ crypto_xmit(
* XEVNT_PUB bad or missing public key
* XEVNT_SGL bad signature length
* XEVNT_SIG signature not verified
+ * XEVNT_ERR protocol error
*/
static int
crypto_verify(
@@ -1433,16 +1502,15 @@ crypto_verify(
{
EVP_PKEY *pkey; /* server public key */
EVP_MD_CTX ctx; /* signature context */
- tstamp_t tstamp; /* timestamp */
- tstamp_t fstamp; /* filestamp */
+ tstamp_t tstamp, tstamp1 = 0; /* timestamp */
+ tstamp_t fstamp, fstamp1 = 0; /* filestamp */
u_int vallen; /* value length */
u_int siglen; /* signature length */
u_int opcode, len;
- int rval;
int i;
/*
- * We require valid opcode and field length, timestamp,
+ * We require valid opcode and field lengths, timestamp,
* filestamp, public key, digest, signature length and
* signature, where relevant. Note that preliminary length
* checks are done in the main loop.
@@ -1457,7 +1525,8 @@ crypto_verify(
* header, no need for further checking.
*/
if (opcode & CRYPTO_ERROR)
- return (XEVNT_LEN);
+ return (XEVNT_ERR);
+
if (opcode & CRYPTO_RESP) {
if (len < VALUE_LEN)
return (XEVNT_LEN);
@@ -1465,91 +1534,93 @@ crypto_verify(
if (len < VALUE_LEN)
return (XEVNT_OK);
}
+
/*
* We have a value header. Check for valid field lengths. The
* field length must be long enough to contain the value header,
- * value and signature. If a request and a previous request of
- * the same type is pending, discard the previous request. If a
- * request but no signature, there is no need for further
- * checking.
+ * value and signature. Note both the value and signature fields
+ * are rounded up to the next word.
*/
vallen = ntohl(ep->vallen);
- if (len < ((VALUE_LEN + vallen + 3) / 4) * 4)
- return (XEVNT_LEN);
-
i = (vallen + 3) / 4;
siglen = ntohl(ep->pkt[i++]);
- if (len < VALUE_LEN + vallen + siglen)
+ if (len < VALUE_LEN + ((vallen + 3) / 4) * 4 + ((siglen + 3) /
+ 4) * 4)
return (XEVNT_LEN);
- if (!(opcode & CRYPTO_RESP)) {
- if (peer->cmmd != NULL) {
- if ((opcode | CRYPTO_RESP) ==
- (ntohl(peer->cmmd->opcode) & 0xffff0000)) {
- free(peer->cmmd);
- peer->cmmd = NULL;
- } else {
- return (XEVNT_LEN);
- }
- }
- if (siglen == 0)
- return (XEVNT_OK);
+ /*
+ * Punt if this is a response with no data. Punt if this is a
+ * request and a previous response is pending.
+ */
+ if (opcode & CRYPTO_RESP) {
+ if (vallen == 0)
+ return (XEVNT_LEN);
+ } else {
+ if (peer->cmmd != NULL)
+ return (XEVNT_LEN);
}
/*
- * We have a signature. Check for valid timestamp and filestamp.
- * The timestamp must not precede the filestamp. The timestamp
- * and filestamp must not precede the corresponding values in
- * the value structure. Once the autokey values have been
- * installed, the timestamp must always be later than the
- * corresponding value in the value structure. Duplicate
- * timestamps are illegal once the cookie has been validated.
+ * Check for valid timestamp and filestamp. If the timestamp is
+ * zero, the sender is not synchronized and signatures are
+ * disregarded. If not, the timestamp must not precede the
+ * filestamp. The timestamp and filestamp must not precede the
+ * corresponding values in the value structure, if present. Once
+ * the autokey values have been installed, the timestamp must
+ * always be later than the corresponding value in the value
+ * structure. Duplicate timestamps are illegal once the cookie
+ * has been validated.
+ */
+ tstamp = ntohl(ep->tstamp);
+ fstamp = ntohl(ep->fstamp);
+ if (tstamp == 0)
+ return (XEVNT_OK);
+
+ if (tstamp < fstamp)
+ return (XEVNT_TSP);
+
+ if (vp != NULL) {
+ tstamp1 = ntohl(vp->tstamp);
+ fstamp1 = ntohl(vp->fstamp);
+ if ((tstamp < tstamp1 || (tstamp == tstamp1 &&
+ (peer->crypto & CRYPTO_FLAG_AUTO))))
+ return (XEVNT_TSP);
+
+ if ((tstamp < fstamp1 || fstamp < fstamp1))
+ return (XEVNT_FSP);
+ }
+
+ /*
+ * Check for valid signature length, public key and digest
+ * algorithm.
*/
- rval = XEVNT_OK;
if (crypto_flags & peer->crypto & CRYPTO_FLAG_PRIV)
pkey = sign_pkey;
else
pkey = peer->pkey;
- tstamp = ntohl(ep->tstamp);
- fstamp = ntohl(ep->fstamp);
- if (tstamp == 0 || tstamp < fstamp) {
- rval = XEVNT_TSP;
- } else if (vp != NULL && (tstamp < ntohl(vp->tstamp) ||
- (tstamp == ntohl(vp->tstamp) && (peer->crypto &
- CRYPTO_FLAG_AUTO)))) {
- rval = XEVNT_TSP;
- } else if (vp != NULL && (tstamp < ntohl(vp->fstamp) || fstamp <
- ntohl(vp->fstamp))) {
- rval = XEVNT_FSP;
-
- /*
- * If a public key and digest is present, and if valid key
- * length, check for valid signature. Note that the first valid
- * signature lights the proventic bit.
- */
- } else if (pkey == NULL || peer->digest == NULL) {
- /* fall through */
- } else if (siglen != (u_int) EVP_PKEY_size(pkey)) {
- rval = XEVNT_SGL;
- } else {
- EVP_VerifyInit(&ctx, peer->digest);
- EVP_VerifyUpdate(&ctx, (u_char *)&ep->tstamp, vallen +
- 12);
- if (EVP_VerifyFinal(&ctx, (u_char *)&ep->pkt[i], siglen,
- pkey)) {
- if (peer->crypto & CRYPTO_FLAG_VRFY)
- peer->crypto |= CRYPTO_FLAG_PROV;
- } else {
- rval = XEVNT_SIG;
- }
+ if (siglen == 0 || pkey == NULL || peer->digest == NULL)
+ return (XEVNT_OK);
+
+ if (siglen != (u_int)EVP_PKEY_size(pkey))
+ return (XEVNT_SGL);
+
+ /*
+ * Darn, I thought we would never get here. Verify the
+ * signature. If the identity exchange is verified, light the
+ * proventic bit. If no client identity scheme is specified,
+ * avoid doing the sign exchange.
+ */
+ EVP_VerifyInit(&ctx, peer->digest);
+ EVP_VerifyUpdate(&ctx, (u_char *)&ep->tstamp, vallen + 12);
+ if (!EVP_VerifyFinal(&ctx, (u_char *)&ep->pkt[i], siglen, pkey))
+ return (XEVNT_SIG);
+
+ if (peer->crypto & CRYPTO_FLAG_VRFY) {
+ peer->crypto |= CRYPTO_FLAG_PROV;
+ if (!(crypto_flags & CRYPTO_FLAG_MASK))
+ peer->crypto |= CRYPTO_FLAG_SIGN;
}
-#ifdef DEBUG
- if (debug > 1)
- printf(
- "crypto_recv: verify %x vallen %u siglen %u ts %u fs %u\n",
- rval, vallen, siglen, tstamp, fstamp);
-#endif
- return (rval);
+ return (XEVNT_OK);
}
@@ -1561,6 +1632,7 @@ crypto_verify(
* XEVNT_OK success
* XEVNT_PUB bad or missing public key
* XEVNT_CKY bad or missing cookie
+ * XEVNT_PER host certificate expired
*/
static int
crypto_encrypt(
@@ -1610,6 +1682,10 @@ crypto_encrypt(
vp->siglen = 0;
if (tstamp == 0)
return (XEVNT_OK);
+
+ if (tstamp < cinfo->first || tstamp > cinfo->last)
+ return (XEVNT_PER);
+
vp->sig = emalloc(sign_siglen);
EVP_SignInit(&ctx, sign_digest);
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
@@ -1642,9 +1718,6 @@ crypto_ident(
* been found and the CRYPTO_FLAG_VALID bit is set, so the
* certificate issuer is valid.
*/
- if (peer->crypto & CRYPTO_FLAG_VRFY)
- return (0);
-
if (peer->ident_pkey != NULL)
EVP_PKEY_free(peer->ident_pkey);
if (peer->crypto & CRYPTO_FLAG_GQ) {
@@ -1688,8 +1761,7 @@ crypto_ident(
}
/*
- * No compatible identity scheme is available. Use the default
- * TC scheme.
+ * No compatible identity scheme is available. Life is hard.
*/
msyslog(LOG_INFO,
"crypto_ident: no compatible identity scheme found");
@@ -1724,6 +1796,9 @@ crypto_args(
len += strlen(str);
ep = emalloc(len);
memset(ep, 0, len);
+ if (opcode == 0)
+ return (ep);
+
ep->opcode = htonl(opcode + len);
/*
@@ -1813,13 +1888,14 @@ void
crypto_update(void)
{
EVP_MD_CTX ctx; /* message digest context */
- struct cert_info *cp, *cpn, **zp; /* certificate info/value */
+ struct cert_info *cp, *cpn; /* certificate info/value */
char statstr[NTP_MAXSTRLEN]; /* statistics for filegen */
tstamp_t tstamp; /* NTP timestamp */
u_int len;
if ((tstamp = crypto_time()) == 0)
return;
+
hostval.tstamp = htonl(tstamp);
/*
@@ -1842,29 +1918,21 @@ crypto_update(void)
/*
* Sign certificates and timestamps. The filestamp is derived
* from the certificate file extension from wherever the file
- * was generated. At the same time expired certificates are
- * expunged.
+ * was generated. Note we do not throw expired certificates
+ * away; they may have signed younger ones.
*/
- zp = &cinfo;
for (cp = cinfo; cp != NULL; cp = cpn) {
cpn = cp->link;
- if (tstamp > cp->last) {
- *zp = cpn;
- cert_free(cp);
- } else {
- cp->cert.tstamp = hostval.tstamp;
- cp->cert.siglen = 0;
- if (cp->cert.sig == NULL)
- cp->cert.sig = emalloc(sign_siglen);
- EVP_SignInit(&ctx, sign_digest);
- EVP_SignUpdate(&ctx, (u_char *)&cp->cert, 12);
- EVP_SignUpdate(&ctx, cp->cert.ptr,
- ntohl(cp->cert.vallen));
- if (EVP_SignFinal(&ctx, cp->cert.sig, &len,
- sign_pkey))
- cp->cert.siglen = htonl(len);
- zp = &cp->link;
- }
+ cp->cert.tstamp = hostval.tstamp;
+ cp->cert.siglen = 0;
+ if (cp->cert.sig == NULL)
+ cp->cert.sig = emalloc(sign_siglen);
+ EVP_SignInit(&ctx, sign_digest);
+ EVP_SignUpdate(&ctx, (u_char *)&cp->cert, 12);
+ EVP_SignUpdate(&ctx, cp->cert.ptr,
+ ntohl(cp->cert.vallen));
+ if (EVP_SignFinal(&ctx, cp->cert.sig, &len, sign_pkey))
+ cp->cert.siglen = htonl(len);
}
/*
@@ -1946,6 +2014,7 @@ asn2ntp (
*/
if (asn1time->length > 13)
return ((u_long)(~0)); /* We can't use -1 here. It's invalid */
+
v = (char *)asn1time->data;
tm.tm_year = (v[0] - '0') * 10 + v[1] - '0';
if (tm.tm_year < 50)
@@ -1983,6 +2052,9 @@ bighash(
EVP_DigestUpdate(&ctx, ptr, len);
EVP_DigestFinal(&ctx, dgst, &len);
BN_bin2bn(dgst, len, bk);
+
+ /* XXX MEMLEAK? free ptr? */
+
return (1);
}
@@ -2036,7 +2108,7 @@ bighash(
* Returns
* XEVNT_OK success
* XEVNT_PUB bad or missing public key
- * XEVNT_ID bad or missing identity parameters
+ * XEVNT_ID bad or missing group key
*/
static int
crypto_alice(
@@ -2055,6 +2127,7 @@ crypto_alice(
*/
if (peer->ident_pkey == NULL)
return (XEVNT_ID);
+
if ((dsa = peer->ident_pkey->pkey.dsa) == NULL) {
msyslog(LOG_INFO, "crypto_alice: defective key");
return (XEVNT_PUB);
@@ -2086,6 +2159,10 @@ crypto_alice(
vp->siglen = 0;
if (tstamp == 0)
return (XEVNT_OK);
+
+ if (tstamp < cinfo->first || tstamp > cinfo->last)
+ return (XEVNT_PER);
+
vp->sig = emalloc(sign_siglen);
EVP_SignInit(&ctx, sign_digest);
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
@@ -2101,7 +2178,9 @@ crypto_alice(
*
* Returns
* XEVNT_OK success
- * XEVNT_PUB bad or missing public key
+ * XEVNT_ID bad or missing group key
+ * XEVNT_ERR protocol error
+ * XEVNT_PER host expired certificate
*/
static int
crypto_bob(
@@ -2122,9 +2201,9 @@ crypto_bob(
* If the IFF parameters are not valid, something awful
* happened or we are being tormented.
*/
- if (!(crypto_flags & CRYPTO_FLAG_IFF)) {
+ if (iffpar_pkey == NULL) {
msyslog(LOG_INFO, "crypto_bob: scheme unavailable");
- return (XEVNT_PUB);
+ return (XEVNT_ID);
}
dsa = iffpar_pkey->pkey.dsa;
@@ -2135,7 +2214,7 @@ crypto_bob(
if ((r = BN_bin2bn((u_char *)ep->pkt, len, NULL)) == NULL) {
msyslog(LOG_ERR, "crypto_bob %s\n",
ERR_error_string(ERR_get_error(), NULL));
- return (XEVNT_PUB);
+ return (XEVNT_ERR);
}
/*
@@ -2167,7 +2246,7 @@ crypto_bob(
msyslog(LOG_ERR, "crypto_bob %s\n",
ERR_error_string(ERR_get_error(), NULL));
DSA_SIG_free(sdsa);
- return (XEVNT_PUB);
+ return (XEVNT_ERR);
}
vp->vallen = htonl(len);
ptr = emalloc(len);
@@ -2177,6 +2256,10 @@ crypto_bob(
vp->siglen = 0;
if (tstamp == 0)
return (XEVNT_OK);
+
+ if (tstamp < cinfo->first || tstamp > cinfo->last)
+ return (XEVNT_PER);
+
vp->sig = emalloc(sign_siglen);
EVP_SignInit(&ctx, sign_digest);
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
@@ -2193,8 +2276,8 @@ crypto_bob(
* Returns
* XEVNT_OK success
* XEVNT_PUB bad or missing public key
+ * XEVNT_ID bad or missing group key
* XEVNT_FSP bad filestamp
- * XEVNT_ID bad or missing identity parameters
*/
int
crypto_iff(
@@ -2216,7 +2299,7 @@ crypto_iff(
*/
if (peer->ident_pkey == NULL) {
msyslog(LOG_INFO, "crypto_iff: scheme unavailable");
- return (XEVNT_PUB);
+ return (XEVNT_ID);
}
if (ntohl(ep->fstamp) != peer->fstamp) {
msyslog(LOG_INFO, "crypto_iff: invalid filestamp %u",
@@ -2229,7 +2312,7 @@ crypto_iff(
}
if (peer->iffval == NULL) {
msyslog(LOG_INFO, "crypto_iff: missing challenge");
- return (XEVNT_PUB);
+ return (XEVNT_ID);
}
/*
@@ -2241,7 +2324,7 @@ crypto_iff(
if ((sdsa = d2i_DSA_SIG(NULL, &ptr, len)) == NULL) {
msyslog(LOG_ERR, "crypto_iff %s\n",
ERR_error_string(ERR_get_error(), NULL));
- return (XEVNT_PUB);
+ return (XEVNT_ERR);
}
/*
@@ -2262,6 +2345,7 @@ crypto_iff(
DSA_SIG_free(sdsa);
if (temp == 0)
return (XEVNT_OK);
+
else
return (XEVNT_ID);
}
@@ -2325,7 +2409,8 @@ crypto_iff(
* Returns
* XEVNT_OK success
* XEVNT_PUB bad or missing public key
- * XEVNT_ID bad or missing identity parameters
+ * XEVNT_ID bad or missing group key
+ * XEVNT_PER host certificate expired
*/
static int
crypto_alice2(
@@ -2344,6 +2429,7 @@ crypto_alice2(
*/
if (peer->ident_pkey == NULL)
return (XEVNT_ID);
+
if ((rsa = peer->ident_pkey->pkey.rsa) == NULL) {
msyslog(LOG_INFO, "crypto_alice2: defective key");
return (XEVNT_PUB);
@@ -2375,6 +2461,10 @@ crypto_alice2(
vp->siglen = 0;
if (tstamp == 0)
return (XEVNT_OK);
+
+ if (tstamp < cinfo->first || tstamp > cinfo->last)
+ return (XEVNT_PER);
+
vp->sig = emalloc(sign_siglen);
EVP_SignInit(&ctx, sign_digest);
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
@@ -2390,7 +2480,9 @@ crypto_alice2(
*
* Returns
* XEVNT_OK success
- * XEVNT_PUB bad or missing public key
+ * XEVNT_ID bad or missing group key
+ * XEVNT_ERR protocol error
+ * XEVNT_PER host certificate expired
*/
static int
crypto_bob2(
@@ -2411,9 +2503,9 @@ crypto_bob2(
* If the GQ parameters are not valid, something awful
* happened or we are being tormented.
*/
- if (!(crypto_flags & CRYPTO_FLAG_GQ)) {
+ if (gqpar_pkey == NULL) {
msyslog(LOG_INFO, "crypto_bob2: scheme unavailable");
- return (XEVNT_PUB);
+ return (XEVNT_ID);
}
rsa = gqpar_pkey->pkey.rsa;
@@ -2424,7 +2516,7 @@ crypto_bob2(
if ((r = BN_bin2bn((u_char *)ep->pkt, len, NULL)) == NULL) {
msyslog(LOG_ERR, "crypto_bob2 %s\n",
ERR_error_string(ERR_get_error(), NULL));
- return (XEVNT_PUB);
+ return (XEVNT_ERR);
}
/*
@@ -2456,7 +2548,7 @@ crypto_bob2(
msyslog(LOG_ERR, "crypto_bob2 %s\n",
ERR_error_string(ERR_get_error(), NULL));
DSA_SIG_free(sdsa);
- return (XEVNT_PUB);
+ return (XEVNT_ERR);
}
vp->vallen = htonl(len);
ptr = emalloc(len);
@@ -2466,6 +2558,10 @@ crypto_bob2(
vp->siglen = 0;
if (tstamp == 0)
return (XEVNT_OK);
+
+ if (tstamp < cinfo->first || tstamp > cinfo->last)
+ return (XEVNT_PER);
+
vp->sig = emalloc(sign_siglen);
EVP_SignInit(&ctx, sign_digest);
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
@@ -2482,8 +2578,9 @@ crypto_bob2(
* Returns
* XEVNT_OK success
* XEVNT_PUB bad or missing public key
+ * XEVNT_ID bad or missing group keys
+ * XEVNT_ERR protocol error
* XEVNT_FSP bad filestamp
- * XEVNT_ID bad or missing identity parameters
*/
int
crypto_gq(
@@ -2505,7 +2602,7 @@ crypto_gq(
*/
if (peer->ident_pkey == NULL) {
msyslog(LOG_INFO, "crypto_gq: scheme unavailable");
- return (XEVNT_PUB);
+ return (XEVNT_ID);
}
if (ntohl(ep->fstamp) != peer->fstamp) {
msyslog(LOG_INFO, "crypto_gq: invalid filestamp %u",
@@ -2518,7 +2615,7 @@ crypto_gq(
}
if (peer->iffval == NULL) {
msyslog(LOG_INFO, "crypto_gq: missing challenge");
- return (XEVNT_PUB);
+ return (XEVNT_ID);
}
/*
@@ -2531,7 +2628,7 @@ crypto_gq(
if ((sdsa = d2i_DSA_SIG(NULL, &ptr, len)) == NULL) {
msyslog(LOG_ERR, "crypto_gq %s\n",
ERR_error_string(ERR_get_error(), NULL));
- return (XEVNT_PUB);
+ return (XEVNT_ERR);
}
/*
@@ -2553,6 +2650,7 @@ crypto_gq(
DSA_SIG_free(sdsa);
if (temp == 0)
return (XEVNT_OK);
+
else
return (XEVNT_ID);
}
@@ -2637,7 +2735,8 @@ crypto_gq(
* Returns
* XEVNT_OK success
* XEVNT_PUB bad or missing public key
- * XEVNT_ID bad or missing identity parameters
+ * XEVNT_ID bad or missing group key
+ * XEVNT_PER host certificate expired
*/
static int
crypto_alice3(
@@ -2656,6 +2755,7 @@ crypto_alice3(
*/
if (peer->ident_pkey == NULL)
return (XEVNT_ID);
+
if ((dsa = peer->ident_pkey->pkey.dsa) == NULL) {
msyslog(LOG_INFO, "crypto_alice3: defective key");
return (XEVNT_PUB);
@@ -2687,6 +2787,10 @@ crypto_alice3(
vp->siglen = 0;
if (tstamp == 0)
return (XEVNT_OK);
+
+ if (tstamp < cinfo->first || tstamp > cinfo->last)
+ return (XEVNT_PER);
+
vp->sig = emalloc(sign_siglen);
EVP_SignInit(&ctx, sign_digest);
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
@@ -2702,7 +2806,8 @@ crypto_alice3(
*
* Returns
* XEVNT_OK success
- * XEVNT_PUB bad or missing public key
+ * XEVNT_ERR protocol error
+ * XEVNT_PER host certificate expired
*/
static int
crypto_bob3(
@@ -2723,9 +2828,9 @@ crypto_bob3(
* If the MV parameters are not valid, something awful
* happened or we are being tormented.
*/
- if (!(crypto_flags & CRYPTO_FLAG_MV)) {
+ if (mvpar_pkey == NULL) {
msyslog(LOG_INFO, "crypto_bob3: scheme unavailable");
- return (XEVNT_PUB);
+ return (XEVNT_ID);
}
dsa = mvpar_pkey->pkey.dsa;
@@ -2736,7 +2841,7 @@ crypto_bob3(
if ((r = BN_bin2bn((u_char *)ep->pkt, len, NULL)) == NULL) {
msyslog(LOG_ERR, "crypto_bob3 %s\n",
ERR_error_string(ERR_get_error(), NULL));
- return (XEVNT_PUB);
+ return (XEVNT_ERR);
}
/*
@@ -2773,7 +2878,7 @@ crypto_bob3(
msyslog(LOG_ERR, "crypto_bob3 %s\n",
ERR_error_string(ERR_get_error(), NULL));
DSA_free(sdsa);
- return (XEVNT_PUB);
+ return (XEVNT_ERR);
}
vp->vallen = htonl(len);
ptr = emalloc(len);
@@ -2783,6 +2888,10 @@ crypto_bob3(
vp->siglen = 0;
if (tstamp == 0)
return (XEVNT_OK);
+
+ if (tstamp < cinfo->first || tstamp > cinfo->last)
+ return (XEVNT_PER);
+
vp->sig = emalloc(sign_siglen);
EVP_SignInit(&ctx, sign_digest);
EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12);
@@ -2799,8 +2908,9 @@ crypto_bob3(
* Returns
* XEVNT_OK success
* XEVNT_PUB bad or missing public key
+ * XEVNT_ID bad or missing group key
+ * XEVNT_ERR protocol error
* XEVNT_FSP bad filestamp
- * XEVNT_ID bad or missing identity parameters
*/
int
crypto_mv(
@@ -2822,7 +2932,7 @@ crypto_mv(
*/
if (peer->ident_pkey == NULL) {
msyslog(LOG_INFO, "crypto_mv: scheme unavailable");
- return (XEVNT_PUB);
+ return (XEVNT_ID);
}
if (ntohl(ep->fstamp) != peer->fstamp) {
msyslog(LOG_INFO, "crypto_mv: invalid filestamp %u",
@@ -2835,7 +2945,7 @@ crypto_mv(
}
if (peer->iffval == NULL) {
msyslog(LOG_INFO, "crypto_mv: missing challenge");
- return (XEVNT_PUB);
+ return (XEVNT_ID);
}
/*
@@ -2847,7 +2957,7 @@ crypto_mv(
if ((sdsa = d2i_DSAparams(NULL, &ptr, len)) == NULL) {
msyslog(LOG_ERR, "crypto_mv %s\n",
ERR_error_string(ERR_get_error(), NULL));
- return (XEVNT_PUB);
+ return (XEVNT_ERR);
}
/*
@@ -2870,6 +2980,7 @@ crypto_mv(
DSA_free(sdsa);
if (temp == 0)
return (XEVNT_OK);
+
else
return (XEVNT_ID);
}
@@ -3026,7 +3137,7 @@ cert_parse(
if (strcmp(ret->subject, ret->issuer) == 0) {
if (!X509_verify(cert, ret->pkey)) {
msyslog(LOG_INFO,
- "cert_parse: invalid signature not verified %s",
+ "cert_parse: signature not verified %s",
pathbuf);
cert_free(ret);
X509_free(cert);
@@ -3040,8 +3151,8 @@ cert_parse(
*/
if (ret->first > ret->last || ret->first < fstamp) {
msyslog(LOG_INFO,
- "cert_parse: expired %s",
- ret->subject);
+ "cert_parse: invalid certificate %s first %u last %u fstamp %u",
+ ret->subject, ret->first, ret->last, fstamp);
cert_free(ret);
X509_free(cert);
return (NULL);
@@ -3064,21 +3175,38 @@ cert_parse(
/*
- * cert_sign - sign x509 certificate and update value structure.
+ * cert_sign - sign x509 certificate equest and update value structure.
*
- * The certificate request is a copy of the client certificate, which
- * includes the version number, subject name and public key of the
- * client. The resulting certificate includes these values plus the
- * serial number, issuer name and validity interval of the server. The
- * validity interval extends from the current time to the same time one
- * year hence. For NTP purposes, it is convenient to use the NTP seconds
- * of the current time as the serial number.
+ * The certificate request includes a copy of the host certificate,
+ * which includes the version number, subject name and public key of the
+ * host. The resulting certificate includes these values plus the
+ * serial number, issuer name and valid interval of the server. The
+ * valid interval extends from the current time to the same time one
+ * year hence. This may extend the life of the signed certificate beyond
+ * that of the signer certificate.
+ *
+ * It is convenient to use the NTP seconds of the current time as the
+ * serial number. In the value structure the timestamp is the current
+ * time and the filestamp is taken from the extension field. Note this
+ * routine is called only when the client clock is synchronized to a
+ * proventic source, so timestamp comparisons are valid.
+ *
+ * The host certificate is valid from the time it was generated for a
+ * period of one year. A signed certificate is valid from the time of
+ * signature for a period of one year, but only the host certificate (or
+ * sign certificate if used) is actually used to encrypt and decrypt
+ * signatures. The signature trail is built from the client via the
+ * intermediate servers to the trusted server. Each signature on the
+ * trail must be valid at the time of signature, but it could happen
+ * that a signer certificate expire before the signed certificate, which
+ * remains valid until its expiration.
*
* Returns
* XEVNT_OK success
* XEVNT_PUB bad or missing public key
* XEVNT_CRT bad or missing certificate
* XEVNT_VFY certificate not verified
+ * XEVNT_PER host certificate expired
*/
static int
cert_sign(
@@ -3100,11 +3228,16 @@ cert_sign(
/*
* Decode ASN.1 objects and construct certificate structure.
+ * Make sure the system clock is synchronized to a proventic
+ * source.
*/
tstamp = crypto_time();
if (tstamp == 0)
return (XEVNT_TSP);
+ if (tstamp < cinfo->first || tstamp > cinfo->last)
+ return (XEVNT_PER);
+
ptr = (u_char *)ep->pkt;
if ((req = d2i_X509(NULL, &ptr, ntohl(ep->vallen))) == NULL) {
msyslog(LOG_ERR, "cert_sign %s\n",
@@ -3123,7 +3256,7 @@ cert_sign(
/*
* Generate X509 certificate signed by this server. For this
- * prupose the issuer name is the server name. Also copy any
+ * purpose the issuer name is the server name. Also copy any
* extensions that might be present.
*/
cert = X509_new();
@@ -3135,7 +3268,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,
- (unsigned char *) sys_hostname, strlen(sys_hostname), -1, 0);
+ (u_char *)sys_hostname, strlen(sys_hostname), -1, 0);
subj = X509_get_subject_name(req);
X509_set_subject_name(cert, subj);
X509_set_pubkey(cert, pkey);
@@ -3209,11 +3342,12 @@ cert_valid(
if (cinf->flags & CERT_SIGN)
return (XEVNT_OK);
+
ptr = (u_char *)cinf->cert.ptr;
cert = d2i_X509(NULL, &ptr, ntohl(cinf->cert.vallen));
- if (!X509_verify(cert, pkey))
+ if (cert == NULL || !X509_verify(cert, pkey))
return (XEVNT_VFY);
- cinf->flags |= CERT_SIGN;
+
X509_free(cert);
return (XEVNT_OK);
}
@@ -3230,7 +3364,7 @@ cert_valid(
*
* Returns
* XEVNT_OK success
- * XEVNT_PER certificate expired
+ * XEVNT_FSP bad or missing filestamp
* XEVNT_CRT bad or missing certificate
*/
int
@@ -3240,33 +3374,28 @@ cert_install(
)
{
struct cert_info *cp, *xp, *yp, **zp;
- int rval;
- tstamp_t tstamp;
/*
* Parse and validate the signed certificate. If valid,
* construct the info/value structure; otherwise, scamper home.
- * Note this allows a certificate not-before time to be in the
- * future, but not a not-after time to be in the past.
*/
if ((cp = cert_parse((u_char *)ep->pkt, ntohl(ep->vallen),
ntohl(ep->fstamp))) == NULL)
return (XEVNT_CRT);
- tstamp = crypto_time();
- if (tstamp > cp->last) {
- cert_free(cp);
- return (XEVNT_PER);
- }
-
/*
* Scan certificate list looking for another certificate with
* the same subject and issuer. If another is found with the
* same or older filestamp, unlink it and return the goodies to
- * the heap. If another is found with a later filetsamp, discard
+ * the heap. If another is found with a later filestamp, discard
* the new one and leave the building.
+ *
+ * Make a note to study this issue again. An earlier certificate
+ * with a long lifetime might be overtaken by a later
+ * certificate with a short lifetime, thus invalidating the
+ * earlier signature. However, we gotta find a way to leak old
+ * stuff from the cache, so we do it anyway.
*/
- rval = XEVNT_OK;
yp = cp;
zp = &cinfo;
for (xp = cinfo; xp != NULL; xp = xp->link) {
@@ -3278,7 +3407,7 @@ cert_install(
cert_free(xp);
} else {
cert_free(cp);
- return (XEVNT_TSP);
+ return (XEVNT_FSP);
}
break;
}
@@ -3288,29 +3417,42 @@ cert_install(
cinfo = yp;
/*
- * Scan the certificate list to see if Y is signed by X.
+ * Scan the certificate list to see if Y is signed by X. This is
+ * independent of order.
*/
for (yp = cinfo; yp != NULL; yp = yp->link) {
for (xp = cinfo; xp != NULL; xp = xp->link) {
- if (yp->flags & CERT_ERROR)
- continue;
/*
- * If issuer Y matches subject X and signature Y
- * is valid using public key X, then Y is valid.
+ * If the issuer of certificate Y matches the
+ * subject of certificate X, verify the
+ * signature of Y using the public key of X. If
+ * so, X signs Y.
*/
- if (strcmp(yp->issuer, xp->subject) != 0)
+ if (strcmp(yp->issuer, xp->subject) != 0 ||
+ xp->flags & CERT_ERROR)
continue;
if (cert_valid(yp, xp->pkey) != XEVNT_OK) {
yp->flags |= CERT_ERROR;
continue;
}
- xp->flags |= CERT_SIGN;
+
+ /*
+ * The signature Y is valid only if it begins
+ * during the lifetime of X; however, it is not
+ * necessarily an error, since some other
+ * certificate might sign Y.
+ */
+ if (yp->first < xp->first || yp->first >
+ xp->last)
+ continue;
+
+ yp->flags |= CERT_SIGN;
/*
* If X is trusted, then Y is trusted. Note that
- * we might stumble over a self signed
+ * we might stumble over a self-signed
* certificate that is not trusted, at least
* temporarily. This can happen when a dude
* first comes up, but has not synchronized the
@@ -3319,10 +3461,10 @@ cert_install(
* this might result in a loop that could
* persist until timeout.
*/
- if (!(xp->flags & CERT_TRUST))
+ if (!(xp->flags & (CERT_TRUST | CERT_VALID)))
continue;
- yp->flags |= CERT_TRUST;
+ yp->flags |= CERT_VALID;
/*
* If subject Y matches the server subject name,
@@ -3359,7 +3501,7 @@ cert_install(
* That was awesome. Now update the timestamps and signatures.
*/
crypto_update();
- return (rval);
+ return (XEVNT_OK);
}
@@ -3432,16 +3574,19 @@ crypto_key(
if ((ptr = fgets(linkname, MAXFILENAME, str)) == NULL) {
msyslog(LOG_ERR, "crypto_key: no data %s\n",
filename);
+ (void)fclose(str);
return (NULL);
}
if ((ptr = strrchr(ptr, '.')) == NULL) {
msyslog(LOG_ERR, "crypto_key: no filestamp %s\n",
filename);
+ (void)fclose(str);
return (NULL);
}
if (sscanf(++ptr, "%u", fstamp) != 1) {
msyslog(LOG_ERR, "crypto_key: invalid timestamp %s\n",
filename);
+ (void)fclose(str);
return (NULL);
}
@@ -3523,16 +3668,19 @@ crypto_cert(
if ((ptr = fgets(linkname, MAXFILENAME, str)) == NULL) {
msyslog(LOG_ERR, "crypto_cert: no data %s\n",
filename);
+ (void)fclose(str);
return (NULL);
}
if ((ptr = strrchr(ptr, '.')) == NULL) {
msyslog(LOG_ERR, "crypto_cert: no filestamp %s\n",
filename);
+ (void)fclose(str);
return (NULL);
}
if (sscanf(++ptr, "%u", &fstamp) != 1) {
msyslog(LOG_ERR, "crypto_cert: invalid filestamp %s\n",
filename);
+ (void)fclose(str);
return (NULL);
}
@@ -3542,6 +3690,7 @@ crypto_cert(
if (!PEM_read(str, &name, &header, &data, &len)) {
msyslog(LOG_ERR, "crypto_cert %s\n",
ERR_error_string(ERR_get_error(), NULL));
+ (void)fclose(str);
return (NULL);
}
free(header);
@@ -3550,6 +3699,7 @@ crypto_cert(
name);
free(name);
free(data);
+ (void)fclose(str);
return (NULL);
}
free(name);
@@ -3559,8 +3709,10 @@ crypto_cert(
*/
ret = cert_parse(data, len, fstamp);
free(data);
+ (void)fclose(str);
if (ret == NULL)
return (NULL);
+
if ((ptr = strrchr(linkname, '\n')) != NULL)
*ptr = '\0';
sprintf(statstr, "%s 0x%x len %lu", &linkname[2], ret->flags,
@@ -3590,20 +3742,16 @@ crypto_tai(
{
FILE *str; /* file handle */
char buf[NTP_MAXSTRLEN]; /* file line buffer */
- u_int leapsec[MAX_LEAP]; /* NTP time at leaps */
- u_int offset; /* offset at leap (s) */
+ u_int32 leapsec[MAX_LEAP]; /* NTP time at leaps */
+ int offset; /* offset at leap (s) */
char filename[MAXFILENAME]; /* name of leapseconds file */
char linkname[MAXFILENAME]; /* file link (for filestamp) */
char statstr[NTP_MAXSTRLEN]; /* statistics for filegen */
tstamp_t fstamp; /* filestamp */
u_int len;
- char *ptr;
- int rval, i;
-#ifdef KERNEL_PLL
-#if NTP_API > 3
- struct timex ntv; /* kernel interface structure */
-#endif /* NTP_API */
-#endif /* KERNEL_PLL */
+ u_int32 *ptr;
+ char *dp;
+ int rval, i, j;
/*
* Open the file and discard comment lines. If the first
@@ -3625,12 +3773,12 @@ crypto_tai(
rval = readlink(filename, linkname, MAXFILENAME - 1);
if (rval > 0) {
linkname[rval] = '\0';
- ptr = strrchr(linkname, '.');
+ dp = strrchr(linkname, '.');
} else {
- ptr = strrchr(filename, '.');
+ dp = strrchr(filename, '.');
}
- if (ptr != NULL)
- sscanf(++ptr, "%u", &fstamp);
+ if (dp != NULL)
+ sscanf(++dp, "%u", &fstamp);
else
fstamp = 0;
tai_leap.fstamp = htonl(fstamp);
@@ -3647,22 +3795,26 @@ crypto_tai(
*/
i = 0;
while (i < MAX_LEAP) {
- ptr = fgets(buf, NTP_MAXSTRLEN - 1, str);
- if (ptr == NULL)
+ dp = fgets(buf, NTP_MAXSTRLEN - 1, str);
+ if (dp == NULL)
break;
+
if (strlen(buf) < 1)
continue;
+
if (*buf == '#')
continue;
- if (sscanf(buf, "%u %u", &leapsec[i], &offset) != 2)
+
+ if (sscanf(buf, "%u %d", &leapsec[i], &offset) != 2)
continue;
- if (i != (int)(offset - TAI_1972)) {
+
+ if (i != offset - TAI_1972)
break;
- }
+
i++;
}
fclose(str);
- if (ptr != NULL) {
+ if (dp != NULL) {
msyslog(LOG_INFO,
"crypto_tai: leapseconds file %s error %d", cp,
rval);
@@ -3671,29 +3823,17 @@ crypto_tai(
/*
* The extension field table entries consists of the NTP seconds
- * of leap insertion in reverse order, so that the most recent
- * insertion is the first entry in the table.
+ * of leap insertion in network byte order.
*/
- len = i * 4;
+ len = i * sizeof(u_int32);
tai_leap.vallen = htonl(len);
ptr = emalloc(len);
- tai_leap.ptr = (unsigned char *) ptr;
- for (; i >= 0; i--) {
- *ptr++ = (char) htonl(leapsec[i]);
- }
+ tai_leap.ptr = (u_char *)ptr;
+ for (j = 0; j < i; j++)
+ *ptr++ = htonl(leapsec[j]);
crypto_flags |= CRYPTO_FLAG_TAI;
- sys_tai = len / 4 + TAI_1972 - 1;
-#ifdef KERNEL_PLL
-#if NTP_API > 3
- ntv.modes = MOD_TAI;
- ntv.constant = sys_tai;
- if (ntp_adjtime(&ntv) == TIME_ERROR)
- msyslog(LOG_INFO,
- "crypto_tai: kernel TAI update failed");
-#endif /* NTP_API */
-#endif /* KERNEL_PLL */
- sprintf(statstr, "%s link %d fs %u offset %u", cp, rval, fstamp,
- ntohl(tai_leap.vallen) / 4 + TAI_1972 - 1);
+ sprintf(statstr, "%s fs %u leap %u len %u", cp, fstamp,
+ leapsec[--j], len);
record_crypto_stats(NULL, statstr);
#ifdef DEBUG
if (debug)
@@ -3727,6 +3867,7 @@ crypto_setup(void)
*/
if (!crypto_flags)
return;
+
gethostname(filename, MAXFILENAME);
bytes = strlen(filename) + 1;
sys_hostname = emalloc(bytes);
@@ -3806,7 +3947,7 @@ crypto_setup(void)
exit (-1);
}
hostval.vallen = htonl(strlen(sys_hostname));
- hostval.ptr = (unsigned char *) sys_hostname;
+ hostval.ptr = (u_char *)sys_hostname;
/*
* Construct public key extension field for agreement scheme.
@@ -3909,7 +4050,7 @@ crypto_setup(void)
* It the certificate is trusted, the subject must be the same
* as the issuer, in other words it must be self signed.
*/
- if (cinfo->flags & CERT_PRIV && strcmp(cinfo->subject,
+ if (cinfo->flags & CERT_TRUST && strcmp(cinfo->subject,
cinfo->issuer) != 0) {
if (cert_valid(cinfo, sign_pkey) != XEVNT_OK) {
msyslog(LOG_ERR,
@@ -4009,6 +4150,18 @@ crypto_config(
break;
/*
+ * Set identity scheme.
+ */
+ case CRYPTO_CONF_IDENT:
+ if (!strcasecmp(cp, "iff"))
+ ident_scheme |= CRYPTO_FLAG_IFF;
+ else if (!strcasecmp(cp, "gq"))
+ ident_scheme |= CRYPTO_FLAG_GQ;
+ else if (!strcasecmp(cp, "mv"))
+ ident_scheme |= CRYPTO_FLAG_MV;
+ break;
+
+ /*
* Set certificate file name.
*/
case CRYPTO_CONF_CERT:
diff --git a/contrib/ntp/ntpd/ntp_filegen.c b/contrib/ntp/ntpd/ntp_filegen.c
index 59a1d91..932d1b6 100644
--- a/contrib/ntp/ntpd/ntp_filegen.c
+++ b/contrib/ntp/ntpd/ntp_filegen.c
@@ -13,7 +13,7 @@
*/
#ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
#endif
#include <stdio.h>
@@ -55,6 +55,25 @@ static int valid_fileref P((char *, char *));
static FILEGEN *filegen_unregister P((char *));
#endif /* UNUSED */
+static void filegen_init P((char *, const char *, FILEGEN *));
+
+/*
+ * filegen_init
+ */
+
+static void
+filegen_init(char *prefix, const char *basename, FILEGEN *fp)
+{
+ fp->fp = NULL;
+ fp->prefix = prefix; /* Yes, this is TOTALLY lame! */
+ fp->basename = (char*)emalloc(strlen(basename) + 1);
+ strcpy(fp->basename, basename);
+ fp->id = 0;
+ fp->type = FILEGEN_DAY;
+ fp->flag = FGEN_FLAG_LINK; /* not yet enabled !!*/
+}
+
+
/*
* open a file generation according to the current settings of gen
* will also provide a link to basename if requested to do so
@@ -169,7 +188,8 @@ filegen_open(
free(savename);
} else {
/*
- * there is at least a second link tpo this file
+ * there is at least a second link to
+ * this file.
* just remove the conflicting one
*/
if (
@@ -335,6 +355,11 @@ filegen_setup(
* reopen new file generation file on change of generation id
*/
if (gen->fp == NULL || gen->id != new_gen) {
+#if DEBUG
+ if (debug)
+ printf("filegen %0x %lu %lu %lu\n", gen->type, now,
+ gen->id, new_gen);
+#endif
filegen_open(gen, new_gen);
}
}
@@ -477,6 +502,7 @@ filegen_get(
void
filegen_register(
+ char *prefix,
const char *name,
FILEGEN *filegen
)
@@ -487,6 +513,9 @@ filegen_register(
if (debug > 3)
printf("filegen_register(\"%s\",%x)\n", name, (u_int)filegen);
#endif
+
+ filegen_init(prefix, name, filegen);
+
while (*f) {
if ((*f)->name == name || strcmp(name, (*f)->name) == 0) {
#ifdef XXX /* this gives the Alpha compiler fits */
diff --git a/contrib/ntp/ntpd/ntp_intres.c b/contrib/ntp/ntpd/ntp_intres.c
index 7f27f21..2a4b51f 100644
--- a/contrib/ntp/ntpd/ntp_intres.c
+++ b/contrib/ntp/ntpd/ntp_intres.c
@@ -15,6 +15,11 @@
* might go about autoconfiguring an NTP distribution network.
*
*/
+ /*
+ * For special situations define the FORCE_DNSRETRY Macro
+ * to force retries even if it fails the lookup.
+ * Use with extreme caution since it will then retry forever.
+ */
#ifdef HAVE_CONFIG_H
# include <config.h>
@@ -29,7 +34,6 @@
#include <stdio.h>
#include <ctype.h>
-#include <netdb.h>
#include <signal.h>
/**/
@@ -40,6 +44,9 @@
# include <sys/param.h> /* MAXHOSTNAMELEN (often) */
#endif
+#include <isc/net.h>
+#include <isc/result.h>
+
#define STREQ(a, b) (*(a) == *(b) && strcmp((a), (b)) == 0)
/*
@@ -135,7 +142,6 @@ char *req_file; /* name of the file with configuration info */
/* end stuff to be filled in */
-static RETSIGTYPE bong P((int));
static void checkparent P((void));
static void removeentry P((struct conf_entry *));
static void addentry P((char *, int, int, int, int, u_int,
@@ -167,6 +173,23 @@ struct ntp_res_c_pkt { /* Control packet: */
};
+static void resolver_exit P((int));
+
+/*
+ * Call here instead of just exiting
+ */
+
+static void resolver_exit (int code)
+{
+#ifdef SYS_WINNT
+ CloseHandle(ResolverEventHandle);
+ ResolverEventHandle = NULL;
+ ExitThread(code); /* Just to kill the thread not the process */
+#else
+ exit(code); /* kill the forked process */
+#endif
+}
+
/*
* ntp_res_recv: Process an answer from the resolver
*/
@@ -193,11 +216,13 @@ void
ntp_intres(void)
{
FILE *in;
-#ifdef HAVE_SIGSUSPEND
- sigset_t set;
-
- sigemptyset(&set);
-#endif /* HAVE_SIGSUSPEND */
+ struct timeval tv;
+ fd_set fdset;
+#ifdef SYS_WINNT
+ DWORD rc;
+#else
+ int rc;
+#endif
#ifdef DEBUG
if (debug > 1) {
@@ -210,7 +235,7 @@ ntp_intres(void)
if (!authistrusted(req_keyid)) {
msyslog(LOG_ERR, "invalid request keyid %08x",
req_keyid );
- exit(1);
+ resolver_exit(1);
}
}
@@ -222,106 +247,93 @@ ntp_intres(void)
if ((in = fopen(req_file, "r")) == NULL) {
msyslog(LOG_ERR, "can't open configuration file %s: %m",
req_file);
- exit(1);
+ resolver_exit(1);
}
readconf(in, req_file);
(void) fclose(in);
+#ifdef DEBUG
if (!debug )
+#endif
(void) unlink(req_file);
/*
- * Sleep a little to make sure the server is completely up
- */
-
- sleep(SLEEPTIME);
-
- /*
- * Make a first cut at resolving the bunch
- */
- doconfigure(1);
- if (confentries == NULL) {
-#if defined SYS_WINNT
- ExitThread(0); /* Don't want to kill whole NT process */
-#else
- exit(0); /* done that quick */
-#endif
- }
-
- /*
- * Here we've got some problem children. Set up the timer
- * and wait for it.
+ * Set up the timers to do first shot immediately.
*/
- resolve_value = resolve_timer = MINRESOLVE;
+ resolve_timer = 0;
+ resolve_value = MINRESOLVE;
config_timer = CONFIG_TIME;
-#ifndef SYS_WINNT
- (void) signal_no_reset(SIGALRM, bong);
- alarm(ALARM_TIME);
-#endif /* SYS_WINNT */
for (;;) {
- if (confentries == NULL)
- exit(0);
-
checkparent();
if (resolve_timer == 0) {
- if (resolve_value < MAXRESOLVE)
- resolve_value <<= 1;
+ /*
+ * Sleep a little to make sure the network is completely up
+ */
+ sleep(SLEEPTIME);
+ doconfigure(1);
+
+ /* prepare retry, in case there's more work to do */
resolve_timer = resolve_value;
#ifdef DEBUG
if (debug > 2)
msyslog(LOG_INFO, "resolve_timer: 0->%d", resolve_timer);
#endif
+ if (resolve_value < MAXRESOLVE)
+ resolve_value <<= 1;
+
config_timer = CONFIG_TIME;
- doconfigure(1);
- continue;
- } else if (config_timer == 0) {
+ } else if (config_timer == 0) { /* MB: in which case would this be required ? */
+ doconfigure(0);
+ /* MB: should we check now if we could exit, similar to the code above? */
config_timer = CONFIG_TIME;
#ifdef DEBUG
if (debug > 2)
msyslog(LOG_INFO, "config_timer: 0->%d", config_timer);
#endif
- doconfigure(0);
+ }
+
+ if (confentries == NULL)
+ resolver_exit(0); /* done */
+
+#ifdef SYS_WINNT
+ rc = WaitForSingleObject(ResolverEventHandle, 1000 * ALARM_TIME); /* in milliseconds */
+
+ if ( rc == WAIT_OBJECT_0 ) { /* signaled by the main thread */
+ resolve_timer = 0; /* retry resolving immediately */
continue;
}
-#ifndef SYS_WINNT
- /*
- * There is a race in here. Is okay, though, since
- * all it does is delay things by 30 seconds.
- */
-# ifdef HAVE_SIGSUSPEND
- sigsuspend(&set);
-# else
- sigpause(0);
-# endif /* HAVE_SIGSUSPEND */
-#else
+
+ if ( rc != WAIT_TIMEOUT ) /* not timeout: error */
+ resolver_exit(1);
+
+#else /* not SYS_WINNT */
+ tv.tv_sec = ALARM_TIME;
+ tv.tv_usec = 0;
+ FD_ZERO(&fdset);
+ FD_SET(resolver_pipe_fd[0], &fdset);
+ rc = select(resolver_pipe_fd[0] + 1, &fdset, (fd_set *)0, (fd_set *)0, &tv);
+
+ if (rc > 0) { /* parent process has written to the pipe */
+ read(resolver_pipe_fd[0], (char *)&rc, sizeof(rc)); /* make pipe empty */
+ resolve_timer = 0; /* retry resolving immediately */
+ continue;
+ }
+
+ if ( rc < 0 ) /* select() returned error */
+ resolver_exit(1);
+#endif
+
+ /* normal timeout, keep on waiting */
if (config_timer > 0)
- config_timer--;
+ config_timer--;
if (resolve_timer > 0)
- resolve_timer--;
- sleep(ALARM_TIME);
-#endif /* SYS_WINNT */
+ resolve_timer--;
}
}
-#ifndef SYS_WINNT
-/*
- * bong - service and reschedule an alarm() interrupt
- */
-static RETSIGTYPE
-bong(
- int sig
- )
-{
- if (config_timer > 0)
- config_timer--;
- if (resolve_timer > 0)
- resolve_timer--;
- alarm(ALARM_TIME);
-}
-#endif /* SYS_WINNT */
/*
* checkparent - see if our parent process is still running
@@ -344,7 +356,7 @@ checkparent(void)
*/
if (getppid() == 1) {
msyslog(LOG_INFO, "parent died before we finished, exiting");
- exit(0);
+ resolver_exit(0);
}
#endif /* SYS_WINNT && SYS_VXWORKS*/
}
@@ -411,7 +423,9 @@ addentry(
ce = (struct conf_entry *)emalloc(sizeof(struct conf_entry));
ce->ce_name = cp;
ce->ce_peeraddr = 0;
+#ifdef ISC_PLATFORM_HAVEIPV6
ce->ce_peeraddr6 = in6addr_any;
+#endif
ANYSOCK(&ce->peer_store);
ce->ce_hmode = (u_char)mode;
ce->ce_version = (u_char)version;
@@ -450,17 +464,18 @@ findhostaddr(
)
{
struct addrinfo *addr;
+ struct addrinfo hints;
int error;
checkparent(); /* make sure our guy is still running */
- if (entry->ce_name != NULL && SOCKNUL(&entry->peer_store)) {
+ if (entry->ce_name != NULL && !SOCKNUL(&entry->peer_store)) {
/* HMS: Squawk? */
msyslog(LOG_ERR, "findhostaddr: both ce_name and ce_peeraddr are defined...");
return 1;
}
- if (entry->ce_name == NULL && !SOCKNUL(&entry->peer_store)) {
+ if (entry->ce_name == NULL && SOCKNUL(&entry->peer_store)) {
msyslog(LOG_ERR, "findhostaddr: both ce_name and ce_peeraddr are undefined!");
return 0;
}
@@ -471,7 +486,16 @@ findhostaddr(
msyslog(LOG_INFO, "findhostaddr: Resolving <%s>",
entry->ce_name);
#endif /* DEBUG */
- error = getaddrinfo(entry->ce_name, NULL, NULL, &addr);
+
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = AF_UNSPEC;
+ /*
+ * If the IPv6 stack is not available look only for IPv4 addresses
+ */
+ if (isc_net_probeipv6() != ISC_R_SUCCESS)
+ hints.ai_family = AF_INET;
+
+ error = getaddrinfo(entry->ce_name, NULL, &hints, &addr);
if (error == 0) {
entry->peer_store = *((struct sockaddr_storage*)(addr->ai_addr));
if (entry->peer_store.ss_family == AF_INET) {
@@ -484,6 +508,10 @@ findhostaddr(
entry->ce_config.v6_flag = 1;
}
}
+ else if (error == EAI_NONAME)
+ {
+ msyslog(LOG_ERR, "host name not found: %s", entry->ce_name);
+ }
} else {
#ifdef DEBUG
if (debug > 2)
@@ -496,15 +524,37 @@ findhostaddr(
(char *)&entry->ce_name, MAXHOSTNAMELEN,
NULL, 0, 0);
}
+#ifdef DEBUG
+ if (debug > 2)
+ printf("intres: got error status of: %d\n", error);
+#endif
+ /*
+ * If the resolver failed, see if the failure is
+ * temporary. If so, return success.
+ */
if (error != 0) {
- /*
- * If the resolver is in use, see if the failure is
- * temporary. If so, return success.
- */
- if (h_errno == TRY_AGAIN)
- return (1);
- return (0);
+ switch (error)
+ {
+ case EAI_AGAIN:
+ return (1);
+ case EAI_NONAME:
+#ifndef FORCE_DNSRETRY
+ return (0);
+#else
+ return (1);
+#endif
+#if defined(EAI_NODATA) && (EAI_NODATA != EAI_NONAME)
+ case EAI_NODATA:
+#endif
+ case EAI_FAIL:
+#ifdef EAI_SYSTEM
+ case EAI_SYSTEM:
+ return (1);
+#endif
+ default:
+ return (0);
+ }
}
if (entry->ce_name) {
@@ -531,22 +581,28 @@ openntp(void)
{
struct addrinfo hints;
struct addrinfo *addrResult;
+ const char *localhost = "127.0.0.1"; /* Use IPv6 loopback */
- if (sockfd >= 0)
+ if (sockfd != INVALID_SOCKET)
return;
memset(&hints, 0, sizeof(hints));
- hints.ai_family = AF_UNSPEC;
+
+ /*
+ * For now only bother with IPv4
+ */
+ hints.ai_family = AF_INET;
+
hints.ai_socktype = SOCK_DGRAM;
- if (getaddrinfo(NULL, "ntp", &hints, &addrResult)!=0) {
+ if (getaddrinfo(localhost, "ntp", &hints, &addrResult)!=0) {
msyslog(LOG_ERR, "getaddrinfo failed: %m");
- exit(1);
+ resolver_exit(1);
}
sockfd = socket(addrResult->ai_family, addrResult->ai_socktype, 0);
if (sockfd == -1) {
msyslog(LOG_ERR, "socket() failed: %m");
- exit(1);
+ resolver_exit(1);
}
/*
@@ -556,13 +612,13 @@ openntp(void)
#if defined(O_NONBLOCK)
if (fcntl(sockfd, F_SETFL, O_NONBLOCK) == -1) {
msyslog(LOG_ERR, "fcntl(O_NONBLOCK) failed: %m");
- exit(1);
+ resolver_exit(1);
}
#else
#if defined(FNDELAY)
if (fcntl(sockfd, F_SETFL, FNDELAY) == -1) {
msyslog(LOG_ERR, "fcntl(FNDELAY) failed: %m");
- exit(1);
+ resolver_exit(1);
}
#else
# include "Bletch: NEED NON BLOCKING IO"
@@ -573,13 +629,13 @@ openntp(void)
int on = 1;
if (ioctlsocket(sockfd,FIONBIO,(u_long *) &on) == SOCKET_ERROR) {
msyslog(LOG_ERR, "ioctlsocket(FIONBIO) fails: %m");
- exit(1); /* Windows NT - set socket in non-blocking mode */
+ resolver_exit(1); /* Windows NT - set socket in non-blocking mode */
}
}
#endif /* SYS_WINNT */
if (connect(sockfd, addrResult->ai_addr, addrResult->ai_addrlen) == -1) {
msyslog(LOG_ERR, "openntp: connect() failed: %m");
- exit(1);
+ resolver_exit(1);
}
freeaddrinfo(addrResult);
}
@@ -607,7 +663,7 @@ request(
checkparent(); /* make sure our guy is still running */
- if (sockfd < 0)
+ if (sockfd == INVALID_SOCKET)
openntp();
#ifdef SYS_WINNT
@@ -643,7 +699,7 @@ request(
/* Make sure mbz_itemsize <= sizeof reqpkt.data */
if (sizeof(struct conf_peer) > sizeof (reqpkt.data)) {
msyslog(LOG_ERR, "Bletch: conf_peer is too big for reqpkt.data!");
- exit(1);
+ resolver_exit(1);
}
memmove(reqpkt.data, (char *)conf, sizeof(struct conf_peer));
reqpkt.keyid = htonl(req_keyid);
@@ -678,7 +734,7 @@ request(
overlap.Offset = overlap.OffsetHigh = (DWORD)0;
overlap.hEvent = hReadWriteEvent;
ret = WriteFile((HANDLE)sockfd, (char *)&reqpkt, REQ_LEN_NOMAC + n,
- (LPDWORD)&NumberOfBytesWritten, (LPOVERLAPPED)&overlap);
+ NULL, (LPOVERLAPPED)&overlap);
if ((ret == FALSE) && (GetLastError() != ERROR_IO_PENDING)) {
msyslog(LOG_ERR, "send to NTP server failed: %m");
return 0;
@@ -689,6 +745,11 @@ request(
msyslog(LOG_ERR, "WaitForSingleObject failed: %m");
return 0;
}
+ if (!GetOverlappedResult((HANDLE)sockfd, (LPOVERLAPPED)&overlap,
+ (LPDWORD)&NumberOfBytesWritten, FALSE)) {
+ msyslog(LOG_ERR, "GetOverlappedResult for WriteFile fails: %m");
+ return 0;
+ }
#endif /* SYS_WINNT */
@@ -718,8 +779,10 @@ request(
}
else if (n == 0)
{
+#ifdef DEBUG
if (debug)
msyslog(LOG_INFO, "select() returned 0.");
+#endif
return 0;
}
@@ -734,7 +797,7 @@ request(
}
#else /* Overlapped I/O used on non-blocking sockets on Windows NT */
ret = ReadFile((HANDLE)sockfd, (char *)&reqpkt, (DWORD)REQ_LEN_MAC,
- (LPDWORD)&NumberOfBytesRead, (LPOVERLAPPED)&overlap);
+ NULL, (LPOVERLAPPED)&overlap);
if ((ret == FALSE) && (GetLastError() != ERROR_IO_PENDING)) {
msyslog(LOG_ERR, "ReadFile() fails: %m");
return 0;
@@ -742,11 +805,16 @@ request(
dwWait = WaitForSingleObject(hReadWriteEvent, (DWORD) TIMEOUT_SEC * 1000);
if ((dwWait == WAIT_FAILED) || (dwWait == WAIT_TIMEOUT)) {
if (dwWait == WAIT_FAILED) {
- msyslog(LOG_ERR, "WaitForSingleObject fails: %m");
+ msyslog(LOG_ERR, "WaitForSingleObject for ReadFile fails: %m");
return 0;
}
continue;
}
+ if (!GetOverlappedResult((HANDLE)sockfd, (LPOVERLAPPED)&overlap,
+ (LPDWORD)&NumberOfBytesRead, FALSE)) {
+ msyslog(LOG_ERR, "GetOverlappedResult fails: %m");
+ return 0;
+ }
n = NumberOfBytesRead;
#endif /* SYS_WINNT */
@@ -941,7 +1009,7 @@ readconf(
msyslog(LOG_ERR,
"tokenizing error in file `%s', quitting",
name);
- exit(1);
+ resolver_exit(1);
}
}
@@ -950,7 +1018,7 @@ readconf(
msyslog(LOG_ERR,
"format error for integer token `%s', file `%s', quitting",
token[i], name);
- exit(1);
+ resolver_exit(1);
}
}
@@ -959,27 +1027,27 @@ readconf(
intval[TOK_HMODE] != MODE_BROADCAST) {
msyslog(LOG_ERR, "invalid mode (%ld) in file %s",
intval[TOK_HMODE], name);
- exit(1);
+ resolver_exit(1);
}
if (intval[TOK_VERSION] > NTP_VERSION ||
intval[TOK_VERSION] < NTP_OLDVERSION) {
msyslog(LOG_ERR, "invalid version (%ld) in file %s",
intval[TOK_VERSION], name);
- exit(1);
+ resolver_exit(1);
}
if (intval[TOK_MINPOLL] < NTP_MINPOLL ||
intval[TOK_MINPOLL] > NTP_MAXPOLL) {
msyslog(LOG_ERR, "invalid MINPOLL value (%ld) in file %s",
intval[TOK_MINPOLL], name);
- exit(1);
+ resolver_exit(1);
}
if (intval[TOK_MAXPOLL] < NTP_MINPOLL ||
intval[TOK_MAXPOLL] > NTP_MAXPOLL) {
msyslog(LOG_ERR, "invalid MAXPOLL value (%ld) in file %s",
intval[TOK_MAXPOLL], name);
- exit(1);
+ resolver_exit(1);
}
if ((intval[TOK_FLAGS] & ~(FLAG_AUTHENABLE | FLAG_PREFER |
@@ -987,7 +1055,7 @@ readconf(
!= 0) {
msyslog(LOG_ERR, "invalid flags (%ld) in file %s",
intval[TOK_FLAGS], name);
- exit(1);
+ resolver_exit(1);
}
flags = 0;
@@ -1026,6 +1094,12 @@ doconfigure(
register struct conf_entry *ce;
register struct conf_entry *ceremove;
+#ifdef DEBUG
+ if (debug > 1)
+ msyslog(LOG_INFO, "Running doconfigure %s DNS",
+ dores ? "with" : "without" );
+#endif
+
ce = confentries;
while (ce != NULL) {
#ifdef DEBUG
@@ -1034,7 +1108,7 @@ doconfigure(
"doconfigure: <%s> has peeraddr %s",
ce->ce_name, stoa(&ce->peer_store));
#endif
- if (dores && !SOCKNUL(&(ce->peer_store))) {
+ if (dores && SOCKNUL(&(ce->peer_store))) {
if (!findhostaddr(ce)) {
msyslog(LOG_ERR,
"couldn't resolve `%s', giving up on it",
diff --git a/contrib/ntp/ntpd/ntp_io.c b/contrib/ntp/ntpd/ntp_io.c
index 9f2acea..faa4646 100644
--- a/contrib/ntp/ntpd/ntp_io.c
+++ b/contrib/ntp/ntpd/ntp_io.c
@@ -12,9 +12,10 @@
#include "ntp_io.h"
#include "iosignal.h"
#include "ntp_refclock.h"
-#include "ntp_if.h"
#include "ntp_stdlib.h"
+#include "ntp_request.h"
#include "ntp.h"
+#include "ntp_unixtime.h"
/* Don't include ISC's version of IPv6 variables and structures */
#define ISC_IPV6_H 1
@@ -31,28 +32,53 @@
#ifdef HAVE_SYS_PARAM_H
# include <sys/param.h>
#endif /* HAVE_SYS_PARAM_H */
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_IN_SYSTM_H
-# include <netinet/in_systm.h>
-#else /* Some old linux systems at least have in_system.h instead. */
-# ifdef HAVE_NETINET_IN_SYSTEM_H
-# include <netinet/in_system.h>
-# endif
-#endif /* HAVE_NETINET_IN_SYSTM_H */
-#ifdef HAVE_NETINET_IP_H
-# include <netinet/ip.h>
-#endif
#ifdef HAVE_SYS_IOCTL_H
# include <sys/ioctl.h>
#endif
#ifdef HAVE_SYS_SOCKIO_H /* UXPV: SIOC* #defines (Frank Vance <fvance@waii.com>) */
# include <sys/sockio.h>
#endif
-#include <arpa/inet.h>
+#ifdef HAVE_SYS_UIO_H
+# include <sys/uio.h>
+#endif
+
+/*
+ * setsockopt does not always have the same arg declaration
+ * across all platforms. If it's not defined we make it empty
+ */
+
+#ifndef SETSOCKOPT_ARG_CAST
+#define SETSOCKOPT_ARG_CAST
+#endif
+
+/*
+ * Set up some macros to look for IPv6 and IPv6 multicast
+ */
+
+#if defined(ISC_PLATFORM_HAVEIPV6) && !defined(DISABLE_IPV6)
+
+#define INCLUDE_IPV6_SUPPORT
+
+#if defined(INCLUDE_IPV6_SUPPORT) && defined(IPV6_JOIN_GROUP) && defined(IPV6_LEAVE_GROUP)
+#define INCLUDE_IPV6_MULTICAST_SUPPORT
+
+#endif /* IPV6 Multicast Support */
+#endif /* IPv6 Support */
extern int listen_to_virtual_ips;
+extern const char *specific_interface;
+
+#if defined(SO_TIMESTAMP) && defined(SCM_TIMESTAMP)
+#if defined(CMSG_FIRSTHDR)
+#define HAVE_TIMESTAMP
+#define USE_TIMESTAMP_CMSG
+#ifndef TIMESTAMP_CTLMSGBUF_SIZE
+#define TIMESTAMP_CTLMSGBUF_SIZE 1536 /* moderate default */
+#endif
+#else
+/* fill in for old/other timestamp interfaces */
+#endif
+#endif
#if defined(SYS_WINNT)
#include <transmitbuff.h>
@@ -106,12 +132,10 @@ u_long io_timereset; /* time counters were reset */
struct interface *any_interface; /* default ipv4 interface */
struct interface *any6_interface; /* default ipv6 interface */
struct interface *loopback_interface; /* loopback ipv4 interface */
-struct interface *loopback6_interface; /* loopback ipv6 interface */
-struct interface inter_list[MAXINTERFACES]; /* Interface list */
+
int ninterfaces; /* Total number of interfaces */
-int nwilds; /* Total number of wildcard intefaces */
-int wildipv4 = -1; /* Index into inter_list for IPv4 wildcard */
-int wildipv6 = -1; /* Index into inter_list for IPv6 wildcard */
+
+volatile int disable_dynamic_updates; /* when set to != 0 dynamic updates won't happen */
#ifdef REFCLOCK
/*
@@ -141,43 +165,118 @@ static struct refclockio *refio;
*/
fd_set activefds;
int maxactivefd;
+/*
+ * bit alternating value to detect verified interfaces during an update cycle
+ */
+static u_char sys_interphase = 0;
-static int create_sockets P((u_short));
-static SOCKET open_socket P((struct sockaddr_storage *, int, int));
-static void close_socket P((SOCKET));
-#ifdef REFCLOCK
-static void close_file P((SOCKET));
+static struct interface *new_interface P((struct interface *));
+static void add_interface P((struct interface *));
+static int update_interfaces P((u_short, interface_receiver_t, void *));
+static void remove_interface P((struct interface *));
+static struct interface *create_interface P((u_short, struct interface *));
+
+static int move_fd P((SOCKET));
+
+/*
+ * Multicast functions
+ */
+static isc_boolean_t addr_ismulticast P((struct sockaddr_storage *));
+/*
+ * Not all platforms support multicast
+ */
+#ifdef MCAST
+static isc_boolean_t socket_multicast_enable P((struct interface *, int, struct sockaddr_storage *));
+static isc_boolean_t socket_multicast_disable P((struct interface *, struct sockaddr_storage *));
+#endif
+
+#ifdef DEBUG
+static void print_interface P((struct interface *, char *, char *));
+#define DPRINT_INTERFACE(_LVL_, _ARGS_) do { if (debug >= (_LVL_)) { print_interface _ARGS_; } } while (0)
+#else
+#define DPRINT_INTERFACE(_LVL_, _ARGS_)
#endif
-static char * fdbits P((int, fd_set *));
-static void set_reuseaddr P((int));
typedef struct vsock vsock_t;
+enum desc_type { FD_TYPE_SOCKET, FD_TYPE_FILE };
struct vsock {
SOCKET fd;
+ enum desc_type type;
ISC_LINK(vsock_t) link;
};
-ISC_LIST(vsock_t) sockets_list;
+#if !defined(HAVE_IO_COMPLETION_PORT) && defined(HAS_ROUTING_SOCKET)
+/*
+ * async notification processing (e. g. routing sockets)
+ */
+/*
+ * support for receiving data on fd that is not a refclock or a socket
+ * like e. g. routing sockets
+ */
+struct asyncio_reader {
+ SOCKET fd; /* fd to be read */
+ void *data; /* possibly local data */
+ void (*receiver)(struct asyncio_reader *); /* input handler */
+ ISC_LINK(struct asyncio_reader) link; /* the list this is being kept in */
+};
+
+ISC_LIST(struct asyncio_reader) asyncio_reader_list;
+
+static void delete_asyncio_reader P((struct asyncio_reader *));
+static struct asyncio_reader *new_asyncio_reader P((void));
+static void add_asyncio_reader P((struct asyncio_reader *, enum desc_type));
+static void remove_asyncio_reader P((struct asyncio_reader *));
+
+#endif /* !defined(HAVE_IO_COMPLETION_PORT) && defined(HAS_ROUTING_SOCKET) */
+
+static void init_async_notifications P((void));
+
+static int create_sockets P((u_short));
+static SOCKET open_socket P((struct sockaddr_storage *, int, int, struct interface *));
+static char * fdbits P((int, fd_set *));
+static void set_reuseaddr P((int));
+static isc_boolean_t socket_broadcast_enable P((struct interface *, SOCKET, struct sockaddr_storage *));
+static isc_boolean_t socket_broadcast_disable P((struct interface *, struct sockaddr_storage *));
+
+ISC_LIST(vsock_t) fd_list;
typedef struct remaddr remaddr_t;
struct remaddr {
- struct sockaddr_storage addr;
- int if_index;
- ISC_LINK(remaddr_t) link;
+ struct sockaddr_storage addr;
+ struct interface *interface;
+ ISC_LINK(remaddr_t) link;
};
ISC_LIST(remaddr_t) remoteaddr_list;
-void add_socket_to_list P((SOCKET));
-void delete_socket_from_list P((SOCKET));
-void add_addr_to_list P((struct sockaddr_storage *, int));
-void delete_addr_from_list P((struct sockaddr_storage *));
-int find_addr_in_list P((struct sockaddr_storage *));
-int create_wildcards P((u_short));
-isc_boolean_t address_okay P((isc_interface_t *));
-void convert_isc_if P((isc_interface_t *, struct interface *, u_short));
+ISC_LIST(struct interface) inter_list;
+
+static struct interface *wildipv4 = NULL;
+static struct interface *wildipv6 = NULL;
+
+static void add_fd_to_list P((SOCKET, enum desc_type));
+static void close_and_delete_fd_from_list P((SOCKET));
+static void add_addr_to_list P((struct sockaddr_storage *, struct interface *));
+static void delete_addr_from_list P((struct sockaddr_storage *));
+static struct interface *find_addr_in_list P((struct sockaddr_storage *));
+static struct interface *find_flagged_addr_in_list P((struct sockaddr_storage *, int));
+static void create_wildcards P((u_short));
+static isc_boolean_t address_okay P((struct interface *));
+static void convert_isc_if P((isc_interface_t *, struct interface *, u_short));
+static void delete_interface_from_list P((struct interface *));
+static struct interface *getinterface P((struct sockaddr_storage *, int));
+static struct interface *findlocalinterface P((struct sockaddr_storage *, int));
+static struct interface *findlocalcastinterface P((struct sockaddr_storage *, int));
+
+/*
+ * Routines to read the ntp packets
+ */
+#if !defined(HAVE_IO_COMPLETION_PORT)
+static inline int read_network_packet P((SOCKET, struct interface *, l_fp));
+static inline int read_refclock_packet P((SOCKET, struct refclockio *, l_fp));
+#endif
#ifdef SYS_WINNT
/*
@@ -209,6 +308,168 @@ connection_reset_fix(SOCKET fd) {
return (ISC_R_UNEXPECTED);
}
#endif
+
+/*
+ * on Unix systems the stdio library typically
+ * makes use of file descriptors in the lower
+ * integer range. stdio usually will make use
+ * of the file descriptor in the range of
+ * [0..FOPEN_MAX)
+ * in order to keep this range clean for socket
+ * file descriptors we attempt to move them above
+ * FOPEM_MAX. This is not as easy as it sounds as
+ * FOPEN_MAX changes from implementation to implementation
+ * and may exceed to current file decriptor limits.
+ * We are using following strategy:
+ * - keep a current socket fd boundary initialized with
+ * max(0, min(getdtablesize() - FD_CHUNK, FOPEN_MAX))
+ * - attempt to move the descriptor to the boundary or
+ * above.
+ * - if that fails and boundary > 0 set boundary
+ * to min(0, socket_fd_boundary - FD_CHUNK)
+ * -> retry
+ * if failure and boundary == 0 return old fd
+ * - on success close old fd return new fd
+ *
+ * effects:
+ * - fds will be moved above the socket fd boundary
+ * if at all possible.
+ * - the socket boundary will be reduced until
+ * allocation is possible or 0 is reached - at this
+ * point the algrithm will be disabled
+ */
+static int move_fd(SOCKET fd)
+{
+#if !defined(SYS_WINNT) && defined(F_DUPFD)
+#ifndef FD_CHUNK
+#define FD_CHUNK 10
+#endif
+/*
+ * number of fds we would like to have for
+ * stdio FILE* available.
+ * we can pick a "low" number as our use of
+ * FILE* is limited to log files and temporarily
+ * to data and config files. Except for log files
+ * we don't keep the other FILE* open beyond the
+ * scope of the function that opened it.
+ */
+#ifndef FD_PREFERRED_SOCKBOUNDARY
+#define FD_PREFERRED_SOCKBOUNDARY 48
+#endif
+
+#ifndef HAVE_GETDTABLESIZE
+/*
+ * if we have no idea about the max fd value set up things
+ * so we will start at FOPEN_MAX
+ */
+#define getdtablesize() (FOPEN_MAX+FD_CHUNK)
+#endif
+
+#ifndef FOPEN_MAX
+#define FOPEN_MAX 20 /* assume that for the lack of anything better */
+#endif
+ static SOCKET socket_boundary = -1;
+ SOCKET newfd;
+
+ /*
+ * check whether boundary has be set up
+ * already
+ */
+ if (socket_boundary == -1) {
+ socket_boundary = max(0, min(getdtablesize() - FD_CHUNK,
+ min(FOPEN_MAX, FD_PREFERRED_SOCKBOUNDARY)));
+#ifdef DEBUG
+ msyslog(LOG_DEBUG, "ntp_io: estimated max descriptors: %d, initial socket boundary: %d",
+ getdtablesize(), socket_boundary);
+#endif
+ }
+
+ /*
+ * Leave a space for stdio to work in. potentially moving the
+ * socket_boundary lower until allocation succeeds.
+ */
+ do {
+ if (fd >= 0 && fd < socket_boundary) {
+ /* inside reserved range: attempt to move fd */
+ newfd = fcntl(fd, F_DUPFD, socket_boundary);
+
+ if (newfd != -1) {
+ /* success: drop the old one - return the new one */
+ (void)close(fd);
+ return (newfd);
+ }
+ } else {
+ /* outside reserved range: no work - return the original one */
+ return (fd);
+ }
+ socket_boundary = max(0, socket_boundary - FD_CHUNK);
+#ifdef DEBUG
+ msyslog(LOG_DEBUG, "ntp_io: selecting new socket boundary: %d",
+ socket_boundary);
+#endif
+ } while (socket_boundary > 0);
+#endif /* !defined(SYS_WINNT) && defined(F_DUPFD) */
+ return (fd);
+}
+
+#ifdef DEBUG_TIMING
+/*
+ * collect timing information for various processing
+ * paths. currently we only pass then on to the file
+ * for later processing. this could also do histogram
+ * based analysis in other to reduce the load (and skew)
+ * dur to the file output
+ */
+void
+collect_timing(struct recvbuf *rb, const char *tag, int count, l_fp *dts)
+{
+ char buf[2048];
+
+ snprintf(buf, sizeof(buf), "%s %d %s %s",
+ (rb != NULL) ?
+ ((rb->dstadr) ? stoa(&rb->recv_srcadr) : "-REFCLOCK-") : "-",
+ count, lfptoa(dts, 9), tag);
+ record_timing_stats(buf);
+}
+#endif
+
+/*
+ * About dynamic interfaces, sockets, reception and more...
+ *
+ * the code solves following tasks:
+ *
+ * - keep a current list of active interfaces in order
+ * to bind to to the interface address on NTP_PORT so that
+ * all wild and specific bindings for NTP_PORT are taken by ntpd
+ * to avoid other daemons messing with the time or sockets.
+ * - all interfaces keep a list of peers that are referencing
+ * the interface in order to quickly re-assign the peers to
+ * new interface in case an interface is deleted (=> gone from system or
+ * down)
+ * - have a preconfigured socket ready with the right local address
+ * for transmission and reception
+ * - have an address list for all destination addresses used within ntpd
+ * to find the "right" preconfigured socket.
+ * - facilitate updating the internal interface list with respect to
+ * the current kernel state
+ *
+ * special issues:
+ *
+ * - mapping of multicast addresses to the interface affected is not always
+ * one to one - especially on hosts with multiple interfaces
+ * the code here currently allocates a separate interface entry for those
+ * multicast addresses
+ * iff it is able to bind to a *new* socket with the multicast address (flags |= MCASTIF)
+ * in case of failure the multicast address is bound to an existing interface.
+ * - on some systems it is perfectly legal to assign the same address to
+ * multiple interfaces. Therefore this code does not keep a list of interfaces
+ * but a list of interfaces that represent a unique address as determined by the kernel
+ * by the procedure in findlocalinterface. Thus it is perfectly legal to see only
+ * one representative of a group of real interfaces if they share the same address.
+ *
+ * Frank Kardel 20050910
+ */
+
/*
* init_io - initialize I/O data structures and call socket creation routine
*/
@@ -216,6 +477,11 @@ void
init_io(void)
{
#ifdef SYS_WINNT
+ if (!Win32InitSockets())
+ {
+ netsyslog(LOG_ERR, "No useable winsock.dll: %m");
+ exit(1);
+ }
init_transmitbuff();
#endif /* SYS_WINNT */
@@ -230,28 +496,27 @@ init_io(void)
handler_calls = handler_pkts = 0;
io_timereset = 0;
loopback_interface = NULL;
- loopback6_interface = NULL;
+ any_interface = NULL;
+ any6_interface = NULL;
#ifdef REFCLOCK
- refio = 0;
+ refio = NULL;
#endif
#if defined(HAVE_SIGNALED_IO)
(void) set_signal();
#endif
-#ifdef SYS_WINNT
- if (!Win32InitSockets())
- {
- netsyslog(LOG_ERR, "No useable winsock.dll: %m");
- exit(1);
- }
-#endif /* SYS_WINNT */
+ ISC_LIST_INIT(fd_list);
- ISC_LIST_INIT(sockets_list);
+#if !defined(HAVE_IO_COMPLETION_PORT) && defined(HAS_ROUTING_SOCKET)
+ ISC_LIST_INIT(asyncio_reader_list);
+#endif
ISC_LIST_INIT(remoteaddr_list);
+ ISC_LIST_INIT(inter_list);
+
/*
* Create the sockets
*/
@@ -259,95 +524,436 @@ init_io(void)
(void) create_sockets(htons(NTP_PORT));
UNBLOCKIO();
+ init_async_notifications();
+
+ DPRINTF(3, ("init_io: maxactivefd %d\n", maxactivefd));
+}
+
#ifdef DEBUG
- if (debug)
- printf("init_io: maxactivefd %d\n", maxactivefd);
+/*
+ * function to dump the contents of the interface structure
+ * for debugging use only.
+ */
+void
+interface_dump(struct interface *itf)
+{
+ u_char* cp;
+ int i;
+ /* Limit the size of the sockaddr_storage hex dump */
+ int maxsize = min(32, sizeof(struct sockaddr_storage));
+
+ printf("Dumping interface: %p\n", itf);
+ printf("fd = %d\n", itf->fd);
+ printf("bfd = %d\n", itf->bfd);
+ printf("sin = %s,\n", stoa(&(itf->sin)));
+ cp = (u_char*) &(itf->sin);
+ for(i = 0; i < maxsize; i++)
+ {
+ printf("%02x", *cp++);
+ if((i+1)%4 == 0)
+ printf(" ");
+ }
+ printf("\n");
+ printf("bcast = %s,\n", stoa(&(itf->bcast)));
+ cp = (u_char*) &(itf->bcast);
+ for(i = 0; i < maxsize; i++)
+ {
+ printf("%02x", *cp++);
+ if((i+1)%4 == 0)
+ printf(" ");
+ }
+ printf("\n");
+ printf("mask = %s,\n", stoa(&(itf->mask)));
+ cp = (u_char*) &(itf->mask);
+ for(i = 0; i < maxsize; i++)
+ {
+ printf("%02x", *cp++);
+ if((i+1)%4 == 0)
+ printf(" ");
+ }
+ printf("\n");
+ printf("name = %s\n", itf->name);
+ printf("flags = 0x%08x\n", itf->flags);
+ printf("last_ttl = %d\n", itf->last_ttl);
+ printf("addr_refid = %08x\n", itf->addr_refid);
+ printf("num_mcast = %d\n", itf->num_mcast);
+ printf("received = %ld\n", itf->received);
+ printf("sent = %ld\n", itf->sent);
+ printf("notsent = %ld\n", itf->notsent);
+ printf("ifindex = %u\n", itf->ifindex);
+ printf("scopeid = %u\n", itf->scopeid);
+ printf("peercnt = %u\n", itf->peercnt);
+ printf("phase = %u\n", itf->phase);
+}
+
+/*
+ * print_interface - helper to output debug information
+ */
+static void
+print_interface(struct interface *iface, char *pfx, char *sfx)
+{
+ printf("%sinterface #%d: fd=%d, bfd=%d, name=%s, flags=0x%x, scope=%d, ifindex=%d",
+ pfx,
+ iface->ifnum,
+ iface->fd,
+ iface->bfd,
+ iface->name,
+ iface->flags,
+ iface->scopeid,
+ iface->ifindex);
+ /* Leave these as three printf calls. */
+ printf(", sin=%s",
+ stoa((&iface->sin)));
+ if (iface->flags & INT_BROADCAST)
+ printf(", bcast=%s,",
+ stoa((&iface->bcast)));
+ if (iface->family == AF_INET)
+ printf(", mask=%s",
+ stoa((&iface->mask)));
+ printf(", %s:%s", iface->ignore_packets == ISC_FALSE ? "Enabled" : "Disabled", sfx);
+ if (debug > 4) /* in-depth debugging only */
+ interface_dump(iface);
+}
+
#endif
+
+#if !defined(HAVE_IO_COMPLETION_PORT) && defined(HAS_ROUTING_SOCKET)
+/*
+ * create an asyncio_reader structure
+ */
+static struct asyncio_reader *
+new_asyncio_reader()
+{
+ struct asyncio_reader *reader;
+
+ reader = (struct asyncio_reader *)emalloc(sizeof(struct asyncio_reader));
+
+ memset((char *)reader, 0, sizeof(*reader));
+ ISC_LINK_INIT(reader, link);
+ reader->fd = INVALID_SOCKET;
+ return reader;
}
-int
-create_wildcards(u_short port) {
+/*
+ * delete a reader
+ */
+static void
+delete_asyncio_reader(struct asyncio_reader *reader)
+{
+ free(reader);
+}
- int idx = 0;
+/*
+ * add asynchio_reader
+ */
+static void
+add_asyncio_reader(struct asyncio_reader *reader, enum desc_type type)
+{
+ ISC_LIST_APPEND(asyncio_reader_list, reader, link);
+ add_fd_to_list(reader->fd, type);
+}
+
+/*
+ * remove asynchio_reader
+ */
+static void
+remove_asyncio_reader(struct asyncio_reader *reader)
+{
+ ISC_LIST_UNLINK_TYPE(asyncio_reader_list, reader, link, struct asyncio_reader);
+
+ if (reader->fd != INVALID_SOCKET)
+ close_and_delete_fd_from_list(reader->fd);
+
+ reader->fd = INVALID_SOCKET;
+}
+#endif /* !defined(HAVE_IO_COMPLETION_PORT) && defined(HAS_ROUTING_SOCKET) */
+
+/*
+ * interface list enumerator - visitor pattern
+ */
+void
+interface_enumerate(interface_receiver_t receiver, void *data)
+{
+ interface_info_t ifi;
+ struct interface *interf;
+
+ ifi.action = IFS_EXISTS;
+
+ for (interf = ISC_LIST_HEAD(inter_list);
+ interf != NULL;
+ interf = ISC_LIST_NEXT(interf, link)) {
+ ifi.interface = interf;
+ receiver(data, &ifi);
+ }
+}
+
+/*
+ * do standard initialization of interface structure
+ */
+static void
+init_interface(struct interface *interface)
+{
+ memset((char *)interface, 0, sizeof(struct interface));
+ ISC_LINK_INIT(interface, link);
+ ISC_LIST_INIT(interface->peers);
+ interface->fd = INVALID_SOCKET;
+ interface->bfd = INVALID_SOCKET;
+ interface->num_mcast = 0;
+ interface->received = 0;
+ interface->sent = 0;
+ interface->notsent = 0;
+ interface->peercnt = 0;
+ interface->phase = sys_interphase;
+}
+
+/*
+ * create new interface structure initialize from
+ * template structure or via standard initialization
+ * function
+ */
+static struct interface *
+new_interface(struct interface *interface)
+{
+ static u_int sys_ifnum = 0;
+
+ struct interface *iface = (struct interface *)emalloc(sizeof(struct interface));
+
+ if (interface != NULL)
+ {
+ memcpy((char*)iface, (char*)interface, sizeof(*interface));
+ }
+ else
+ {
+ init_interface(iface);
+ }
+
+ iface->ifnum = sys_ifnum++; /* count every new instance of an interface in the system */
+ iface->starttime = current_time;
+
+ return iface;
+}
+
+/*
+ * return interface storage into free memory pool
+ */
+static void
+delete_interface(struct interface *interface)
+{
+ free(interface);
+}
+
+/*
+ * link interface into list of known interfaces
+ */
+static void
+add_interface(struct interface *interface)
+{
/*
- * create pseudo-interface with wildcard IPv4 address
+ * Calculate the address hash
*/
- inter_list[idx].sin.ss_family = AF_INET;
- ((struct sockaddr_in*)&inter_list[idx].sin)->sin_addr.s_addr = htonl(INADDR_ANY);
- ((struct sockaddr_in*)&inter_list[idx].sin)->sin_port = port;
- (void) strncpy(inter_list[idx].name, "wildcard", sizeof(inter_list[idx].name));
- inter_list[idx].mask.ss_family = AF_INET;
- ((struct sockaddr_in*)&inter_list[idx].mask)->sin_addr.s_addr = htonl(~(u_int32)0);
- inter_list[idx].bfd = INVALID_SOCKET;
- inter_list[idx].num_mcast = 0;
- inter_list[idx].received = 0;
- inter_list[idx].sent = 0;
- inter_list[idx].notsent = 0;
- inter_list[idx].flags = INT_BROADCAST;
- any_interface = &inter_list[idx];
-#if defined(MCAST)
+ interface->addr_refid = addr2refid(&interface->sin);
+
+ ISC_LIST_APPEND(inter_list, interface, link);
+ ninterfaces++;
+}
+
+/*
+ * remove interface from known interface list and clean up
+ * associated resources
+ */
+static void
+remove_interface(struct interface *interface)
+{
+ struct sockaddr_storage resmask;
+
+ ISC_LIST_UNLINK_TYPE(inter_list, interface, link, struct interface);
+
+ delete_interface_from_list(interface);
+
+ if (interface->fd != INVALID_SOCKET)
+ {
+ msyslog(LOG_INFO, "Deleting interface #%d %s, %s#%d, interface stats: received=%ld, sent=%ld, dropped=%ld, active_time=%ld secs",
+ interface->ifnum,
+ interface->name,
+ stoa((&interface->sin)),
+ NTP_PORT, /* XXX should extract port from sin structure */
+ interface->received,
+ interface->sent,
+ interface->notsent,
+ current_time - interface->starttime);
+
+ close_and_delete_fd_from_list(interface->fd);
+ }
+
+ if (interface->bfd != INVALID_SOCKET)
+ {
+ msyslog(LOG_INFO, "Deleting interface #%d %s, broadcast address %s#%d",
+ interface->ifnum,
+ interface->name,
+ stoa((&interface->bcast)),
+ (u_short) NTP_PORT); /* XXX extract port from sin structure */
+ close_and_delete_fd_from_list(interface->bfd);
+ }
+
+ ninterfaces--;
+ ntp_monclearinterface(interface);
+
+ /* remove restrict interface entry */
+
+ /*
+ * Blacklist bound interface address
+ */
+ SET_HOSTMASK(&resmask, interface->sin.ss_family);
+ hack_restrict(RESTRICT_REMOVEIF, &interface->sin, &resmask,
+ RESM_NTPONLY|RESM_INTERFACE, RES_IGNORE);
+}
+
+static void
+list_if_listening(struct interface *interface, u_short port)
+{
+ msyslog(LOG_INFO, "Listening on interface #%d %s, %s#%d %s",
+ interface->ifnum,
+ interface->name,
+ stoa((&interface->sin)),
+ ntohs( (u_short) port),
+ (interface->ignore_packets == ISC_FALSE) ?
+ "Enabled": "Disabled");
+}
+
+static void
+create_wildcards(u_short port) {
+ isc_boolean_t okipv4 = ISC_TRUE;
/*
- * enable possible multicast reception on the broadcast socket
+ * create pseudo-interface with wildcard IPv4 address
*/
- inter_list[idx].bcast.ss_family = AF_INET;
- ((struct sockaddr_in*)&inter_list[idx].bcast)->sin_port = port;
- ((struct sockaddr_in*)&inter_list[idx].bcast)->sin_addr.s_addr = htonl(INADDR_ANY);
+#ifdef IPV6_V6ONLY
+ if(isc_net_probeipv4() != ISC_R_SUCCESS)
+ okipv4 = ISC_FALSE;
+#endif
+
+ if(okipv4 == ISC_TRUE) {
+ struct interface *interface = new_interface(NULL);
+
+ interface->family = AF_INET;
+ interface->sin.ss_family = AF_INET;
+ ((struct sockaddr_in*)&interface->sin)->sin_addr.s_addr = htonl(INADDR_ANY);
+ ((struct sockaddr_in*)&interface->sin)->sin_port = port;
+ (void) strncpy(interface->name, "wildcard", sizeof(interface->name));
+ interface->mask.ss_family = AF_INET;
+ ((struct sockaddr_in*)&interface->mask)->sin_addr.s_addr = htonl(~(u_int32)0);
+ interface->flags = INT_BROADCAST | INT_UP | INT_WILDCARD;
+ interface->ignore_packets = ISC_TRUE;
+#if defined(MCAST)
+ /*
+ * enable possible multicast reception on the broadcast socket
+ */
+ interface->bcast.ss_family = AF_INET;
+ ((struct sockaddr_in*)&interface->bcast)->sin_port = port;
+ ((struct sockaddr_in*)&interface->bcast)->sin_addr.s_addr = htonl(INADDR_ANY);
#endif /* MCAST */
- wildipv4 = idx;
- idx++;
+ interface->fd = open_socket(&interface->sin,
+ interface->flags, 1, interface);
+
+ if (interface->fd != INVALID_SOCKET) {
+ wildipv4 = interface;
+ any_interface = interface;
+
+ add_addr_to_list(&interface->sin, interface);
+ add_interface(interface);
+ list_if_listening(interface, port);
+ } else {
+ msyslog(LOG_ERR, "unable to bind to wildcard socket address %s - another process may be running - EXITING",
+ stoa((&interface->sin)));
+ exit(1);
+ }
+ }
-#ifdef HAVE_IPV6
+#ifdef INCLUDE_IPV6_SUPPORT
/*
* create pseudo-interface with wildcard IPv6 address
*/
if (isc_net_probeipv6() == ISC_R_SUCCESS) {
- inter_list[idx].sin.ss_family = AF_INET6;
- ((struct sockaddr_in6*)&inter_list[idx].sin)->sin6_addr = in6addr_any;
- ((struct sockaddr_in6*)&inter_list[idx].sin)->sin6_port = port;
- (void) strncpy(inter_list[idx].name, "wildcard", sizeof(inter_list[idx].name));
- inter_list[idx].mask.ss_family = AF_INET6;
- memset(&((struct sockaddr_in6*)&inter_list[idx].mask)->sin6_addr.s6_addr, 0xff, sizeof(struct in6_addr));
- inter_list[idx].bfd = INVALID_SOCKET;
- inter_list[idx].num_mcast = 0;
- inter_list[idx].received = 0;
- inter_list[idx].sent = 0;
- inter_list[idx].notsent = 0;
- inter_list[idx].flags = 0;
- any6_interface = &inter_list[idx];
- wildipv6 = idx;
- idx++;
+ struct interface *interface = new_interface(NULL);
+
+ interface->family = AF_INET6;
+ interface->sin.ss_family = AF_INET6;
+ ((struct sockaddr_in6*)&interface->sin)->sin6_addr = in6addr_any;
+ ((struct sockaddr_in6*)&interface->sin)->sin6_port = port;
+# ifdef ISC_PLATFORM_HAVESCOPEID
+ ((struct sockaddr_in6*)&interface->sin)->sin6_scope_id = 0;
+# endif
+ (void) strncpy(interface->name, "wildcard", sizeof(interface->name));
+ interface->mask.ss_family = AF_INET6;
+ memset(&((struct sockaddr_in6*)&interface->mask)->sin6_addr.s6_addr, 0xff, sizeof(struct in6_addr));
+ interface->flags = INT_UP | INT_WILDCARD;
+ interface->ignore_packets = ISC_TRUE;
+
+ interface->fd = open_socket(&interface->sin,
+ interface->flags, 1, interface);
+
+ if (interface->fd != INVALID_SOCKET) {
+ wildipv6 = interface;
+ any6_interface = interface;
+ add_addr_to_list(&interface->sin, interface);
+ add_interface(interface);
+ list_if_listening(interface, port);
+ } else {
+ msyslog(LOG_ERR, "unable to bind to wildcard socket address %s - another process may be running - EXITING",
+ stoa((&interface->sin)));
+ exit(1);
+ }
}
#endif
- return (idx);
}
-isc_boolean_t
-address_okay(isc_interface_t *isc_if) {
-#ifdef DEBUG
- if (debug > 2)
- printf("address_okay: listen Virtual: %d, IF name: %s, Up Flag: %d\n",
- listen_to_virtual_ips, isc_if->name, (isc_if->flags & INTERFACE_F_UP));
-#endif
+static isc_boolean_t
+address_okay(struct interface *iface) {
- if (listen_to_virtual_ips == 0 && (strchr(isc_if->name, (int)':') != NULL))
- return (ISC_FALSE);
+ DPRINTF(4, ("address_okay: listen Virtual: %d, IF name: %s\n",
+ listen_to_virtual_ips, iface->name));
- /* XXXPDM This should be fixed later, but since we may not have set
- * the UP flag, we at least get to use the interface.
- * The UP flag is not always set so we don't do this right now.
+ /*
+ * Always allow the loopback
*/
-/* if ((isc_if->flags & INTERFACE_F_UP) == 0)
- return (ISC_FALSE);
-*/
+ if((iface->flags & INT_LOOPBACK) != 0) {
+ DPRINTF(4, ("address_okay: loopback - OK\n"));
+ return (ISC_TRUE);
+ }
+
+ /*
+ * Check if the interface is specified
+ */
+ if (specific_interface != NULL) {
+ if (strcasecmp(iface->name, specific_interface) == 0) {
+ DPRINTF(4, ("address_okay: specific interface name matched - OK\n"));
+ return (ISC_TRUE);
+ } else {
+ DPRINTF(4, ("address_okay: specific interface name NOT matched - FAIL\n"));
+ return (ISC_FALSE);
+ }
+ }
+ else {
+ if (listen_to_virtual_ips == 0 &&
+ (strchr(iface->name, (int)':') != NULL)) {
+ DPRINTF(4, ("address_okay: virtual ip/alias - FAIL\n"));
+ return (ISC_FALSE);
+ }
+ }
+
+ DPRINTF(4, ("address_okay: OK\n"));
return (ISC_TRUE);
}
-void
-convert_isc_if(isc_interface_t *isc_if, struct interface *itf, u_short port) {
+
+static void
+convert_isc_if(isc_interface_t *isc_if, struct interface *itf, u_short port)
+{
+ itf->scopeid = 0;
+ itf->family = (short) isc_if->af;
+ strcpy(itf->name, isc_if->name);
if(isc_if->af == AF_INET) {
itf->sin.ss_family = (u_short) isc_if->af;
- strcpy(itf->name, isc_if->name);
memcpy(&(((struct sockaddr_in*)&itf->sin)->sin_addr),
&(isc_if->address.type.in),
sizeof(struct in_addr));
@@ -367,35 +973,31 @@ convert_isc_if(isc_interface_t *isc_if, struct interface *itf, u_short port) {
&(isc_if->netmask.type.in),
sizeof(struct in_addr));
((struct sockaddr_in*)&itf->mask)->sin_port = port;
-
- if (((isc_if->flags & INTERFACE_F_LOOPBACK) != 0) && (loopback_interface == NULL))
- {
- loopback_interface = itf;
- }
}
-#ifdef HAVE_IPV6
+#ifdef INCLUDE_IPV6_SUPPORT
else if (isc_if->af == AF_INET6) {
itf->sin.ss_family = (u_short) isc_if->af;
- strcpy(itf->name, isc_if->name);
memcpy(&(((struct sockaddr_in6 *)&itf->sin)->sin6_addr),
&(isc_if->address.type.in6),
- sizeof(struct in6_addr));
+ sizeof(((struct sockaddr_in6 *)&itf->sin)->sin6_addr));
((struct sockaddr_in6 *)&itf->sin)->sin6_port = port;
+#ifdef ISC_PLATFORM_HAVESCOPEID
+ ((struct sockaddr_in6 *)&itf->sin)->sin6_scope_id = isc_netaddr_getzone(&isc_if->address);
+ itf->scopeid = isc_netaddr_getzone(&isc_if->address);
+#endif
itf->mask.ss_family = itf->sin.ss_family;
memcpy(&(((struct sockaddr_in6 *)&itf->mask)->sin6_addr),
&(isc_if->netmask.type.in6),
sizeof(struct in6_addr));
((struct sockaddr_in6 *)&itf->mask)->sin6_port = port;
-
- if (((isc_if->flags & INTERFACE_F_LOOPBACK) != 0) && (loopback6_interface == NULL))
- {
- loopback6_interface = itf;
- }
+ /* Copy the interface index */
+ itf->ifindex = isc_if->ifindex;
}
-#endif /* HAVE_IPV6 */
+#endif /* INCLUDE_IPV6_SUPPORT */
+
- /* Process the rest of the flags */
+ /* Process the rest of the flags */
if((isc_if->flags & INTERFACE_F_UP) != 0)
itf->flags |= INT_UP;
@@ -403,57 +1005,228 @@ convert_isc_if(isc_interface_t *isc_if, struct interface *itf, u_short port) {
itf->flags |= INT_LOOPBACK;
if((isc_if->flags & INTERFACE_F_POINTTOPOINT) != 0)
itf->flags |= INT_PPP;
+ if((isc_if->flags & INTERFACE_F_MULTICAST) != 0)
+ itf->flags |= INT_MULTICAST;
+
}
+
/*
- * create_sockets - create a socket for each interface plus a default
- * socket for when we don't know where to send
+ * refresh_interface
+ *
+ * some OSes have been observed to keep
+ * cached routes even when more specific routes
+ * become available.
+ * this can be mitigated by re-binding
+ * the socket.
*/
static int
-create_sockets(
- u_short port
+refresh_interface(struct interface * interface)
+{
+#ifdef OS_MISSES_SPECIFIC_ROUTE_UPDATES
+ if (interface->fd != INVALID_SOCKET)
+ {
+ close_and_delete_fd_from_list(interface->fd);
+ interface->fd = open_socket(&interface->sin,
+ interface->flags, 0, interface);
+ /*
+ * reset TTL indication so TTL is is set again
+ * next time around
+ */
+ interface->last_ttl = 0;
+ return interface->fd != INVALID_SOCKET;
+ }
+ else
+ {
+ return 0; /* invalid sockets are not refreshable */
+ }
+#else /* !OS_MISSES_SPECIFIC_ROUTE_UPDATES */
+ return interface->fd != INVALID_SOCKET;
+#endif /* !OS_MISSES_SPECIFIC_ROUTE_UPDATES */
+}
+
+/*
+ * interface_update - externally callable update function
+ */
+void
+interface_update(interface_receiver_t receiver, void *data)
+{
+ if (!disable_dynamic_updates) {
+ int new_interface_found;
+
+ BLOCKIO();
+ new_interface_found = update_interfaces(htons(NTP_PORT), receiver, data);
+ UNBLOCKIO();
+
+ if (new_interface_found) {
+#ifdef DEBUG
+ msyslog(LOG_DEBUG, "new interface(s) found: waking up resolver");
+#endif
+#ifdef SYS_WINNT
+ /* wake up the resolver thread */
+ if (ResolverEventHandle != NULL)
+ SetEvent(ResolverEventHandle);
+#else
+ /* write any single byte to the pipe to wake up the resolver process */
+ write( resolver_pipe_fd[1], &new_interface_found, 1 );
+#endif
+ }
+ }
+}
+
+/*
+ * find out if a given interface structure contains
+ * a wildcard address
+ */
+static int
+is_wildcard_addr(struct sockaddr_storage *sas)
+{
+ if (sas->ss_family == AF_INET &&
+ ((struct sockaddr_in*)sas)->sin_addr.s_addr == htonl(INADDR_ANY))
+ return 1;
+
+#ifdef INCLUDE_IPV6_SUPPORT
+ if (sas->ss_family == AF_INET6 &&
+ memcmp(&((struct sockaddr_in6*)sas)->sin6_addr, &in6addr_any,
+ sizeof(in6addr_any) == 0))
+ return 1;
+#endif
+
+ return 0;
+}
+
+#ifdef OS_NEEDS_REUSEADDR_FOR_IFADDRBIND
+/*
+ * enable/disable re-use of wildcard address socket
+ */
+static void
+set_wildcard_reuse(int family, int on)
+{
+ int onvalue = 1;
+ int offvalue = 0;
+ int *onoff;
+ SOCKET fd = INVALID_SOCKET;
+
+ onoff = on ? &onvalue : &offvalue;
+
+ switch (family) {
+ case AF_INET:
+ if (any_interface) {
+ fd = any_interface->fd;
+ }
+ break;
+
+#ifdef INCLUDE_IPV6_SUPPORT
+ case AF_INET6:
+ if (any6_interface) {
+ fd = any6_interface->fd;
+ }
+ break;
+#endif /* !INCLUDE_IPV6_SUPPORT */
+ }
+
+ if (fd != INVALID_SOCKET) {
+ if (setsockopt(fd, SOL_SOCKET,
+ SO_REUSEADDR, (char *)onoff,
+ sizeof(*onoff))) {
+ netsyslog(LOG_ERR, "set_wildcard_reuse: setsockopt(SO_REUSEADDR, %s) failed: %m", *onoff ? "on" : "off");
+ }
+ DPRINTF(4, ("set SO_REUSEADDR to %s on %s\n", *onoff ? "ON" : "OFF",
+ stoa((family == AF_INET) ?
+ &any_interface->sin : &any6_interface->sin)));
+ }
+}
+#endif /* OS_NEEDS_REUSEADDR_FOR_IFADDRBIND */
+
+/*
+ * update_interface strategy
+ *
+ * toggle configuration phase
+ *
+ * Phase 1:
+ * forall currently existing interfaces
+ * if address is known:
+ * drop socket - rebind again
+ *
+ * if address is NOT known:
+ * attempt to create a new interface entry
+ *
+ * Phase 2:
+ * forall currently known non MCAST and WILDCARD interfaces
+ * if interface does not match configuration phase (not seen in phase 1):
+ * remove interface from known interface list
+ * forall peers associated with this interface
+ * disconnect peer from this interface
+ *
+ * Phase 3:
+ * attempt to re-assign interfaces to peers
+ *
+ */
+
+static int
+update_interfaces(
+ u_short port,
+ interface_receiver_t receiver,
+ void *data
)
{
- struct sockaddr_storage resmask;
- int i;
+ interface_info_t ifi;
isc_mem_t *mctx = NULL;
isc_interfaceiter_t *iter = NULL;
isc_boolean_t scan_ipv4 = ISC_FALSE;
isc_boolean_t scan_ipv6 = ISC_FALSE;
isc_result_t result;
- int idx = 0;
+ int new_interface_found = 0;
-#ifdef DEBUG
- if (debug)
- printf("create_sockets(%d)\n", ntohs( (u_short) port));
-#endif
+ DPRINTF(3, ("update_interfaces(%d)\n", ntohs( (u_short) port)));
+#ifdef INCLUDE_IPV6_SUPPORT
if (isc_net_probeipv6() == ISC_R_SUCCESS)
scan_ipv6 = ISC_TRUE;
-#ifdef HAVE_IPV6
+#if defined(DEBUG)
else
- netsyslog(LOG_ERR, "no IPv6 interfaces found");
+ if(debug)
+ netsyslog(LOG_ERR, "no IPv6 interfaces found");
+#endif
+#endif
+ if (isc_net_probeipv6() == ISC_R_SUCCESS)
+ scan_ipv6 = ISC_TRUE;
+#if defined(ISC_PLATFORM_HAVEIPV6) && defined(DEBUG)
+ else
+ if(debug)
+ netsyslog(LOG_ERR, "no IPv6 interfaces found");
#endif
if (isc_net_probeipv4() == ISC_R_SUCCESS)
scan_ipv4 = ISC_TRUE;
+#ifdef DEBUG
else
- netsyslog(LOG_ERR, "no IPv4 interfaces found");
-
- nwilds = create_wildcards(port);
- idx = nwilds;
+ if(debug)
+ netsyslog(LOG_ERR, "no IPv4 interfaces found");
+#endif
+ /*
+ * phase one - scan interfaces
+ * - create those that are not found
+ * - update those that are found
+ */
result = isc_interfaceiter_create(mctx, &iter);
+
if (result != ISC_R_SUCCESS)
- return (result);
+ return 0;
+ sys_interphase ^= 0x1; /* toggle system phase for finding untouched (to be deleted) interfaces */
+
for (result = isc_interfaceiter_first(iter);
result == ISC_R_SUCCESS;
result = isc_interfaceiter_next(iter))
{
isc_interface_t isc_if;
- unsigned int family;
-
+ unsigned int family;
+ struct interface interface;
+ struct interface *iface;
+
result = isc_interfaceiter_current(iter, &isc_if);
+
if (result != ISC_R_SUCCESS)
break;
@@ -466,152 +1239,266 @@ create_sockets(
if (scan_ipv6 == ISC_FALSE && family == AF_INET6)
continue;
- /* Check to see if we are going to use the interface */
- if (address_okay(&isc_if) == ISC_TRUE) {
- convert_isc_if(&isc_if, &inter_list[idx], port);
- inter_list[idx].fd = INVALID_SOCKET;
- inter_list[idx].bfd = INVALID_SOCKET;
- inter_list[idx].num_mcast = 0;
- inter_list[idx].received = 0;
- inter_list[idx].sent = 0;
- inter_list[idx].notsent = 0;
- idx++;
+ /*
+ * create prototype
+ */
+ init_interface(&interface);
+
+ convert_isc_if(&isc_if, &interface, port);
+
+ /*
+ * Check to see if we are going to use the interface
+ * If we don't use it we mark it to drop any packet
+ * received but we still must create the socket and
+ * bind to it. This prevents other apps binding to it
+ * and potentially causing problems with more than one
+ * process fiddling with the clock
+ */
+ if (address_okay(&interface) == ISC_TRUE) {
+ interface.ignore_packets = ISC_FALSE;
+ }
+ else {
+ interface.ignore_packets = ISC_TRUE;
+ }
+
+ DPRINT_INTERFACE(4, (&interface, "examining ", "\n"));
+
+ if (!(interface.flags & INT_UP)) { /* interfaces must be UP to be usable */
+ DPRINTF(4, ("skipping interface %s (%s) - DOWN\n", interface.name, stoa(&interface.sin)));
+ continue;
+ }
+
+ /*
+ * skip any interfaces UP and bound to a wildcard
+ * address - some dhcp clients produce that in the
+ * wild
+ */
+ if (is_wildcard_addr(&interface.sin))
+ continue;
+
+ /*
+ * map to local *address* in order
+ * to map all duplicate interfaces to an interface structure
+ * with the appropriate socket (our name space is
+ * (ip-address) - NOT (interface name, ip-address))
+ */
+ iface = getinterface(&interface.sin, INT_WILDCARD);
+
+ if (iface && refresh_interface(iface))
+ {
+ /*
+ * found existing and up to date interface - mark present
+ */
+
+ iface->phase = sys_interphase;
+ DPRINT_INTERFACE(4, (iface, "updating ", " present\n"));
+ ifi.action = IFS_EXISTS;
+ ifi.interface = iface;
+ if (receiver)
+ receiver(data, &ifi);
+ }
+ else
+ {
+ /*
+ * this is new or refreshing failed - add to our interface list
+ * if refreshing failed we will delete the interface structure in
+ * phase 2 as the interface was not marked current. We can bind to
+ * the address as the refresh code already closed the offending socket
+ */
+
+ iface = create_interface(port, &interface);
+
+ if (iface)
+ {
+ ifi.action = IFS_CREATED;
+ ifi.interface = iface;
+ if (receiver)
+ receiver(data, &ifi);
+
+ new_interface_found = 1;
+
+ DPRINT_INTERFACE(3, (iface, "updating ", " new - created\n"));
+ }
+ else
+ {
+ DPRINT_INTERFACE(3, (&interface, "updating ", " new - creation FAILED"));
+
+ msyslog(LOG_INFO, "failed to initialize interface for address %s", stoa(&interface.sin));
+ continue;
+ }
}
}
+
isc_interfaceiter_destroy(&iter);
- ninterfaces = idx;
/*
- * I/O Completion Ports don't care about the select and FD_SET
+ * phase 2 - delete gone interfaces - reassigning peers to other interfaces
*/
-#ifndef HAVE_IO_COMPLETION_PORT
- maxactivefd = 0;
- FD_ZERO(&activefds);
-#endif
- for (i = 0; i < ninterfaces; i++) {
- inter_list[i].fd = open_socket(&inter_list[i].sin,
- inter_list[i].flags & INT_BROADCAST, 0);
- if (inter_list[i].bfd != INVALID_SOCKET)
- msyslog(LOG_INFO, "Listening on interface %s, %s#%d",
- inter_list[i].name,
- stoa((&inter_list[i].sin)),
- NTP_PORT);
- if ((inter_list[i].flags & INT_BROADCAST) &&
- inter_list[i].bfd != INVALID_SOCKET)
- msyslog(LOG_INFO, "Listening on broadcast address %s#%d",
- stoa((&inter_list[i].bcast)),
- NTP_PORT);
-#if defined (HAVE_IO_COMPLETION_PORT)
- if (inter_list[i].fd != INVALID_SOCKET) {
- io_completion_port_add_socket(inter_list[i].fd, &inter_list[i]);
+ {
+ struct interface *interf = ISC_LIST_HEAD(inter_list);
+
+ while (interf != NULL)
+ {
+ struct interface *next = ISC_LIST_NEXT(interf, link);
+
+ if (!(interf->flags & (INT_WILDCARD|INT_MCASTIF))) {
+ /*
+ * if phase does not match sys_phase this interface was not
+ * enumerated during interface scan - so it is gone and
+ * will be deleted here unless it is solely an MCAST/WILDCARD interface
+ */
+ if (interf->phase != sys_interphase) {
+ struct peer *peer;
+ DPRINT_INTERFACE(3, (interf, "updating ", "GONE - deleting\n"));
+ remove_interface(interf);
+
+ ifi.action = IFS_DELETED;
+ ifi.interface = interf;
+ if (receiver)
+ receiver(data, &ifi);
+
+ peer = ISC_LIST_HEAD(interf->peers);
+ /*
+ * disconnect peer from deleted interface
+ */
+ while (peer != NULL) {
+ struct peer *npeer = ISC_LIST_NEXT(peer, ilink);
+
+ /*
+ * this one just lost it's interface
+ */
+ set_peerdstadr(peer, NULL);
+
+ peer = npeer;
+ }
+
+ /*
+ * update globals in case we lose
+ * a loopback interface
+ */
+ if (interf == loopback_interface)
+ loopback_interface = NULL;
+
+ delete_interface(interf);
+ }
+ }
+ interf = next;
}
-#endif
}
/*
- * Now that we have opened all the sockets, turn off the reuse
- * flag for security.
+ * phase 3 - re-configure as the world has changed if necessary
*/
- set_reuseaddr(0);
+ refresh_all_peerinterfaces();
+ return new_interface_found;
+}
+
+/*
+ * create_sockets - create a socket for each interface plus a default
+ * socket for when we don't know where to send
+ */
+static int
+create_sockets(
+ u_short port
+ )
+{
+#ifndef HAVE_IO_COMPLETION_PORT
/*
- * Blacklist all bound interface addresses
- * Wildcard interfaces are ignored.
+ * I/O Completion Ports don't care about the select and FD_SET
*/
+ maxactivefd = 0;
+ FD_ZERO(&activefds);
+#endif
- for (i = nwilds; i < ninterfaces; i++) {
- SET_HOSTMASK(&resmask, inter_list[i].sin.ss_family);
- hack_restrict(RESTRICT_FLAGS, &inter_list[i].sin, &resmask,
- RESM_NTPONLY|RESM_INTERFACE, RES_IGNORE);
- }
+ DPRINTF(2, ("create_sockets(%d)\n", ntohs( (u_short) port)));
+ create_wildcards(port);
+
+ update_interfaces(port, NULL, NULL);
+
/*
- * Calculate the address hash for each interface address.
+ * Now that we have opened all the sockets, turn off the reuse
+ * flag for security.
*/
- for (i = 0; i < ninterfaces; i++) {
- inter_list[i].addr_refid = addr2refid(&inter_list[i].sin);
- }
+ set_reuseaddr(0);
+ DPRINTF(2, ("create_sockets: Total interfaces = %d\n", ninterfaces));
-#ifdef DEBUG
- if (debug > 1) {
- printf("create_sockets: ninterfaces=%d\n", ninterfaces);
- for (i = 0; i < ninterfaces; i++) {
- printf("interface %d: fd=%d, bfd=%d, name=%.8s, flags=0x%x\n",
- i,
- inter_list[i].fd,
- inter_list[i].bfd,
- inter_list[i].name,
- inter_list[i].flags);
- /* Leave these as three printf calls. */
- printf(" sin=%s",
- stoa((&inter_list[i].sin)));
- if (inter_list[i].flags & INT_BROADCAST)
- printf(" bcast=%s,",
- stoa((&inter_list[i].bcast)));
- printf(" mask=%s\n",
- stoa((&inter_list[i].mask)));
- }
- }
-#endif
return ninterfaces;
}
/*
- * io_setbclient - open the broadcast client sockets
+ * create_interface - create a new interface for a given prototype
+ * binding the socket.
*/
-void
-io_setbclient(void)
+static struct interface *
+create_interface(
+ u_short port,
+ struct interface *iface
+ )
{
- int i;
+ struct sockaddr_storage resmask;
+ struct interface *interface;
-#ifdef OPEN_BCAST_SOCKET
- set_reuseaddr(1);
-#endif
- for (i = nwilds; i < ninterfaces; i++) {
- /* Only IPv4 addresses are valid for broadcast */
- if (inter_list[i].bcast.ss_family != AF_INET)
- continue;
+ DPRINTF(2, ("create_interface(%s#%d)\n", stoa(&iface->sin), ntohs( (u_short) port)));
- /* Is this a broadcast address? */
- if (!(inter_list[i].flags & INT_BROADCAST))
- continue;
+ /* build an interface */
+ interface = new_interface(iface);
+
+ /*
+ * create socket
+ */
+ interface->fd = open_socket(&interface->sin,
+ interface->flags, 0, interface);
+
+ if (interface->fd != INVALID_SOCKET)
+ list_if_listening(interface, port);
+
+ if ((interface->flags & INT_BROADCAST) &&
+ interface->bfd != INVALID_SOCKET)
+ msyslog(LOG_INFO, "Listening on broadcast address %s#%d",
+ stoa((&interface->bcast)),
+ ntohs( (u_short) port));
+
+ if (interface->fd == INVALID_SOCKET &&
+ interface->bfd == INVALID_SOCKET) {
+ msyslog(LOG_ERR, "unable to create socket on %s (%d) for %s#%d",
+ interface->name,
+ interface->ifnum,
+ stoa((&interface->sin)),
+ ntohs( (u_short) port));
+ delete_interface(interface);
+ return NULL;
+ }
+
+ /*
+ * Blacklist bound interface address
+ */
+
+ SET_HOSTMASK(&resmask, interface->sin.ss_family);
+ hack_restrict(RESTRICT_FLAGS, &interface->sin, &resmask,
+ RESM_NTPONLY|RESM_INTERFACE, RES_IGNORE);
+
+ /*
+ * set globals with the first found
+ * loopback interface of the appropriate class
+ */
+ if ((loopback_interface == NULL) &&
+ (interface->family == AF_INET) &&
+ ((interface->flags & INT_LOOPBACK) != 0))
+ {
+ loopback_interface = interface;
+ }
- /* Do we already have the broadcast address open? */
- if (inter_list[i].flags & INT_BCASTOPEN)
- continue;
+ /*
+ * put into our interface list
+ */
+ add_addr_to_list(&interface->sin, interface);
+ add_interface(interface);
-#ifdef SYS_SOLARIS
- inter_list[i].bcast.sin_addr.s_addr = htonl(INADDR_ANY);
-#endif
-#ifdef OPEN_BCAST_SOCKET /* Was: !SYS_DOMAINOS && !SYS_LINUX */
- inter_list[i].bfd = open_socket(&inter_list[i].bcast,
- INT_BROADCAST, 1);
- if (inter_list[i].bfd != INVALID_SOCKET) {
- inter_list[i].flags |= INT_BCASTOPEN;
-#if defined (HAVE_IO_COMPLETION_PORT)
- io_completion_port_add_socket(inter_list[i].bfd, &inter_list[i]);
-#endif
- }
-#ifdef DEBUG
- if (debug) {
- if (inter_list[i].bfd != INVALID_SOCKET)
- printf("io_setbclient: Opened broadcast client on interface %d, socket: %d\n",
- i, inter_list[i].bfd);
- else
- printf("io_setbclient: Unable to Open broadcast client on interface %d\n",
- i);
- }
-#endif
-#endif
- }
-#ifdef OPEN_BCAST_SOCKET
- set_reuseaddr(0);
-#endif
-#ifdef DEBUG
- if (debug)
- printf("io_setbclient: Opened broadcast clients\n");
-#endif
+ DPRINT_INTERFACE(2, (interface, "created ", "\n"));
+ return interface;
}
/*
@@ -621,15 +1508,22 @@ io_setbclient(void)
*/
static void
set_reuseaddr(int flag) {
- int i;
-
- for (i=0; i < ninterfaces; i++) {
+ struct interface *interf;
+
+ for (interf = ISC_LIST_HEAD(inter_list);
+ interf != NULL;
+ interf = ISC_LIST_NEXT(interf, link)) {
+ if (interf->flags & INT_WILDCARD)
+ continue;
+
/*
- * if inter_list[ n ].fd is -1, we might have a adapter
+ * if interf->fd is INVALID_SOCKET, we might have a adapter
* configured but not present
*/
- if (inter_list[i].fd != INVALID_SOCKET) {
- if (setsockopt(inter_list[i].fd, SOL_SOCKET,
+ DPRINTF(4, ("setting SO_REUSEADDR on %.16s@%s to %s\n", interf->name, stoa(&interf->sin), flag ? "on" : "off"));
+
+ if (interf->fd != INVALID_SOCKET) {
+ if (setsockopt(interf->fd, SOL_SOCKET,
SO_REUSEADDR, (char *)&flag,
sizeof(flag))) {
netsyslog(LOG_ERR, "set_reuseaddr: setsockopt(SO_REUSEADDR, %s) failed: %m", flag ? "on" : "off");
@@ -638,203 +1532,422 @@ set_reuseaddr(int flag) {
}
}
-
/*
- * io_multicast_add() - add multicast group address
+ * This is just a wrapper around an internal function so we can
+ * make other changes as necessary later on
*/
void
-io_multicast_add(
- struct sockaddr_storage addr
- )
+enable_broadcast(struct interface *iface, struct sockaddr_storage *baddr)
{
-#ifdef MCAST
- struct ip_mreq mreq;
- int i = ninterfaces; /* Use the next interface */
- u_int32 haddr = ntohl(((struct sockaddr_in*)&addr)->sin_addr.s_addr);
- struct in_addr iaddr;
- SOCKET s;
- struct sockaddr_in *sinp;
+#ifdef SO_BROADCAST
+ socket_broadcast_enable(iface, iface->fd, baddr);
+#endif
+}
-#ifdef HAVE_IPV6
- struct ipv6_mreq mreq6;
- struct in6_addr iaddr6;
- struct sockaddr_in6 *sin6p;
-#endif /* HAVE_IPV6 */
+#ifdef OPEN_BCAST_SOCKET
+/*
+ * Enable a broadcast address to a given socket
+ * The socket is in the inter_list all we need to do is enable
+ * broadcasting. It is not this function's job to select the socket
+ */
+static isc_boolean_t
+socket_broadcast_enable(struct interface *iface, SOCKET fd, struct sockaddr_storage *maddr)
+{
+#ifdef SO_BROADCAST
+ int on = 1;
- switch (addr.ss_family)
+ if (maddr->ss_family == AF_INET)
+ {
+ /* if this interface can support broadcast, set SO_BROADCAST */
+ if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST,
+ (char *)&on, sizeof(on)))
+ {
+ netsyslog(LOG_ERR, "setsockopt(SO_BROADCAST) enable failure on address %s: %m",
+ stoa(maddr));
+ }
+#ifdef DEBUG
+ else if (debug > 1) {
+ printf("Broadcast enabled on socket %d for address %s\n",
+ fd, stoa(maddr));
+ }
+#endif
+ }
+ iface->flags |= INT_BCASTOPEN;
+ return ISC_TRUE;
+#else
+ return ISC_FALSE;
+#endif /* SO_BROADCAST */
+}
+
+/*
+ * Remove a broadcast address from a given socket
+ * The socket is in the inter_list all we need to do is disable
+ * broadcasting. It is not this function's job to select the socket
+ */
+static isc_boolean_t
+socket_broadcast_disable(struct interface *iface, struct sockaddr_storage *maddr)
+{
+#ifdef SO_BROADCAST
+ int off = 0; /* This seems to be OK as an int */
+
+ if (maddr->ss_family == AF_INET)
+ {
+ if (setsockopt(iface->fd, SOL_SOCKET, SO_BROADCAST,
+ (char *)&off, sizeof(off)))
+ {
+ netsyslog(LOG_ERR, "setsockopt(SO_BROADCAST) disable failure on address %s: %m",
+ stoa(maddr));
+ }
+ }
+ iface->flags &= ~INT_BCASTOPEN;
+ return ISC_TRUE;
+#else
+ return ISC_FALSE;
+#endif /* SO_BROADCAST */
+}
+
+#endif /* OPEN_BCAST_SOCKET */
+/*
+ * Check to see if the address is a multicast address
+ */
+static isc_boolean_t
+addr_ismulticast(struct sockaddr_storage *maddr)
+{
+ switch (maddr->ss_family)
{
case AF_INET :
- iaddr = (((struct sockaddr_in*)&addr)->sin_addr);
- if (!IN_CLASSD(haddr)) {
- netsyslog(LOG_ERR,
- "multicast address %s not class D",
- inet_ntoa(iaddr));
- return;
+ if (!IN_CLASSD(ntohl(((struct sockaddr_in*)maddr)->sin_addr.s_addr))) {
+ DPRINTF(4, ("multicast address %s not class D\n", stoa(maddr)));
+ return (ISC_FALSE);
}
- for (i = nwilds; i < ninterfaces; i++) {
- /* Be sure it's the correct family */
- if (inter_list[i].sin.ss_family != AF_INET)
- continue;
- /* Already have this address */
- if (SOCKCMP(&inter_list[i].sin, &addr))
- return;
- /* found a free slot */
- if (SOCKNUL(&inter_list[i].sin) &&
- inter_list[i].fd <= 0 && inter_list[i].bfd <= 0 &&
- inter_list[i].flags == 0)
- break;
+ else
+ {
+ return (ISC_TRUE);
}
- sinp = (struct sockaddr_in*)&(inter_list[i].sin);
- memset((char *)&mreq, 0, sizeof(mreq));
- memset((char *)&inter_list[i], 0, sizeof(struct interface));
- sinp->sin_family = AF_INET;
- sinp->sin_addr = iaddr;
- sinp->sin_port = htons(NTP_PORT);
- /*
- * Try opening a socket for the specified class D address. This
- * works under SunOS 4.x, but not OSF1 .. :-(
- */
- set_reuseaddr(1);
- s = open_socket((struct sockaddr_storage*)sinp, 0, 1);
- set_reuseaddr(0);
- if (s == INVALID_SOCKET) {
- memset((char *)&inter_list[i], 0, sizeof(struct interface));
- if (wildipv4 >= 0) {
- i = wildipv4;
- /* HACK ! -- stuff in an address */
- inter_list[i].bcast = addr;
- netsyslog(LOG_ERR,
- "...multicast address %s using wildcard socket",
- inet_ntoa(iaddr));
- } else {
- netsyslog(LOG_ERR,
- "No wildcard socket available to use for address %s",
- inet_ntoa(iaddr));
- return;
- }
- } else {
- inter_list[i].fd = s;
- inter_list[i].bfd = INVALID_SOCKET;
- (void) strncpy(inter_list[i].name, "multicast",
- sizeof(inter_list[i].name));
- ((struct sockaddr_in*)&inter_list[i].mask)->sin_addr.s_addr = htonl(~(u_int32)0);
-#if defined (HAVE_IO_COMPLETION_PORT)
- io_completion_port_add_socket(inter_list[i].fd, &inter_list[i]);
-#endif
+ case AF_INET6 :
+#ifdef INCLUDE_IPV6_MULTICAST_SUPPORT
+ if (!IN6_IS_ADDR_MULTICAST(&((struct sockaddr_in6*)maddr)->sin6_addr)) {
+ DPRINTF(4, ("address %s not IPv6 multicast address\n", stoa(maddr)));
+ return (ISC_FALSE);
+ }
+ else
+ {
+ return (ISC_TRUE);
}
+/*
+ * If we don't have IPV6 support any IPV6 address is not multicast
+ */
+#else
+ return (ISC_FALSE);
+#endif
+ /*
+ * Never valid
+ */
+ default:
+ return (ISC_FALSE);
+ }
+}
+
+/*
+ * Multicast servers need to set the appropriate Multicast interface
+ * socket option in order for it to know which interface to use for
+ * send the multicast packet.
+ */
+void
+enable_multicast_if(struct interface *iface, struct sockaddr_storage *maddr)
+{
+#ifdef MCAST
+ /*u_char*/ TYPEOF_IP_MULTICAST_LOOP off = 0;
+
+ switch (maddr->ss_family)
+ {
+ case AF_INET:
+ if (setsockopt(iface->fd, IPPROTO_IP, IP_MULTICAST_IF,
+ (char *)&(((struct sockaddr_in*)&iface->sin)->sin_addr.s_addr),
+ sizeof(struct in_addr)) == -1) {
+ netsyslog(LOG_ERR,
+ "setsockopt IP_MULTICAST_IF failure: %m on socket %d, addr %s for multicast address %s",
+ iface->fd, stoa(&iface->sin), stoa(maddr));
+ return;
+ }
+#ifdef IP_MULTICAST_LOOP
/*
- * enable reception of multicast packets
- */
- mreq.imr_multiaddr = iaddr;
- mreq.imr_interface.s_addr = htonl(INADDR_ANY);
- if (setsockopt(inter_list[i].fd, IPPROTO_IP, IP_ADD_MEMBERSHIP,
- (char *)&mreq, sizeof(mreq)) == -1)
+ * Don't send back to itself, but allow it to fail to set it
+ */
+ if (setsockopt(iface->fd, IPPROTO_IP, IP_MULTICAST_LOOP,
+ SETSOCKOPT_ARG_CAST &off, sizeof(off)) == -1) {
netsyslog(LOG_ERR,
- "setsockopt IP_ADD_MEMBERSHIP fails: %m for %x / %x (%s)",
- mreq.imr_multiaddr.s_addr,
- mreq.imr_interface.s_addr, inet_ntoa(iaddr));
- inter_list[i].flags |= INT_MULTICAST;
- inter_list[i].num_mcast++;
- if (i >= ninterfaces)
- ninterfaces = i+1;
-
- add_addr_to_list(&addr, i);
+ "setsockopt IP_MULTICAST_LOOP failure: %m on socket %d, addr %s for multicast address %s",
+ iface->fd, stoa(&iface->sin), stoa(maddr));
+ }
+#endif
+ DPRINTF(4, ("Added IPv4 multicast interface on socket %d, addr %s for multicast address %s\n",
+ iface->fd, stoa(&iface->sin),
+ stoa(maddr)));
break;
-#ifdef HAVE_IPV6
- case AF_INET6 :
-
- iaddr6 = ((struct sockaddr_in6*)&addr)->sin6_addr;
- if (!IN6_IS_ADDR_MULTICAST(&iaddr6)) {
+ case AF_INET6:
+#ifdef INCLUDE_IPV6_MULTICAST_SUPPORT
+ if (setsockopt(iface->fd, IPPROTO_IPV6, IPV6_MULTICAST_IF,
+ &iface->scopeid, sizeof(iface->scopeid)) == -1) {
netsyslog(LOG_ERR,
- "address %s not IPv6 multicast address",
- stoa(&addr));
+ "setsockopt IPV6_MULTICAST_IF failure: %m on socket %d, addr %s, scope %d for multicast address %s",
+ iface->fd, stoa(&iface->sin), iface->scopeid,
+ stoa(maddr));
return;
}
- for (i = nwilds; i < ninterfaces; i++) {
- /* Be sure it's the correct family */
- if(inter_list[i].sin.ss_family != AF_INET6)
- continue;
- /* Already have this address */
- if (SOCKCMP(&inter_list[i].sin, &addr))
- return;
- /* found a free slot */
- if (SOCKNUL(&inter_list[i].sin) &&
- inter_list[i].fd <= 0 && inter_list[i].bfd <= 0 &&
- inter_list[i].flags == 0)
- break;
+#ifdef IPV6_MULTICAST_LOOP
+ /*
+ * Don't send back to itself, but allow it to fail to set it
+ */
+ if (setsockopt(iface->fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP,
+ &off, sizeof(off)) == -1) {
+ netsyslog(LOG_ERR,
+ "setsockopt IP_MULTICAST_LOOP failure: %m on socket %d, addr %s for multicast address %s",
+ iface->fd, stoa(&iface->sin), stoa(maddr));
}
- sin6p = (struct sockaddr_in6*)&inter_list[i].sin;
- memset((char *)&mreq6, 0, sizeof(mreq6));
- memset((char *)&inter_list[i], 0, sizeof(struct interface));
- sin6p->sin6_family = AF_INET6;
- sin6p->sin6_addr = iaddr6;
- sin6p->sin6_port = htons(NTP_PORT);
+#endif
+ DPRINTF(4, ("Added IPv6 multicast interface on socket %d, addr %s, scope %d for multicast address %s\n",
+ iface->fd, stoa(&iface->sin), iface->scopeid,
+ stoa(maddr)));
+ break;
+#else
+ return;
+#endif /* INCLUDE_IPV6_MULTICAST_SUPPORT */
+ }
+ return;
+#endif
+}
+
+/*
+ * Add a multicast address to a given socket
+ * The socket is in the inter_list all we need to do is enable
+ * multicasting. It is not this function's job to select the socket
+ */
+static isc_boolean_t
+socket_multicast_enable(struct interface *iface, int lscope, struct sockaddr_storage *maddr)
+{
+#ifdef INCLUDE_IPV6_MULTICAST_SUPPORT
+ struct ipv6_mreq mreq6;
+ struct in6_addr iaddr6;
+#endif /* INCLUDE_IPV6_MULTICAST_SUPPORT */
+
+ struct ip_mreq mreq;
+
+ if (find_addr_in_list(maddr)) {
+ DPRINTF(4, ("socket_multicast_enable(%s): already enabled\n", stoa(maddr)));
+ return ISC_TRUE;
+ }
+
+ switch (maddr->ss_family)
+ {
+ case AF_INET:
+ memset((char *)&mreq, 0, sizeof(mreq));
+ mreq.imr_multiaddr = (((struct sockaddr_in*)maddr)->sin_addr);
+ mreq.imr_interface.s_addr = htonl(INADDR_ANY);
+ if (setsockopt(iface->fd, IPPROTO_IP, IP_ADD_MEMBERSHIP,
+ (char *)&mreq, sizeof(mreq)) == -1) {
+ netsyslog(LOG_ERR,
+ "setsockopt IP_ADD_MEMBERSHIP failure: %m on socket %d, addr %s for %x / %x (%s)",
+ iface->fd, stoa(&iface->sin),
+ mreq.imr_multiaddr.s_addr,
+ mreq.imr_interface.s_addr, stoa(maddr));
+ return ISC_FALSE;
+ }
+ DPRINTF(4, ("Added IPv4 multicast membership on socket %d, addr %s for %x / %x (%s)\n",
+ iface->fd, stoa(&iface->sin),
+ mreq.imr_multiaddr.s_addr,
+ mreq.imr_interface.s_addr, stoa(maddr)));
+ break;
+ case AF_INET6:
+#ifdef INCLUDE_IPV6_MULTICAST_SUPPORT
/*
- * Try opening a socket for the specified class D address. This
- * works under SunOS 4.x, but not OSF1 .. :-(
+ * Enable reception of multicast packets
+ * If the address is link-local we can get the interface index
+ * from the scope id. Don't do this for other types of multicast
+ * addresses. For now let the kernel figure it out.
*/
- set_reuseaddr(1);
- s = open_socket((struct sockaddr_storage*)sin6p, 0, 1);
- set_reuseaddr(0);
- if(s == INVALID_SOCKET){
- memset((char *)&inter_list[i], 0, sizeof(struct interface));
- if (wildipv6 >= 0) {
- i = wildipv6;
- /* HACK ! -- stuff in an address */
- inter_list[i].bcast = addr;
- netsyslog(LOG_ERR,
- "...multicast address %s using wildcard socket",
- stoa(&addr));
- } else {
- netsyslog(LOG_ERR,
- "No wildcard socket available to use for address %s",
- stoa(&addr));
- return;
- }
- } else {
- inter_list[i].fd = s;
- inter_list[i].bfd = INVALID_SOCKET;
- (void)strncpy(inter_list[i].name, "multicast",
- sizeof(inter_list[i].name));
- memset(&(((struct sockaddr_in6*)&inter_list[i].mask)->sin6_addr), 1, sizeof(struct in6_addr));
-#if defined (HAVE_IO_COMPLETION_PORT)
- io_completion_port_add_socket(inter_list[i].fd, &inter_list[i]);
-#endif
+ memset((char *)&mreq6, 0, sizeof(mreq6));
+ iaddr6 = ((struct sockaddr_in6*)maddr)->sin6_addr;
+ mreq6.ipv6mr_multiaddr = iaddr6;
+ mreq6.ipv6mr_interface = lscope;
+
+ if (setsockopt(iface->fd, IPPROTO_IPV6, IPV6_JOIN_GROUP,
+ (char *)&mreq6, sizeof(mreq6)) == -1) {
+ netsyslog(LOG_ERR,
+ "setsockopt IPV6_JOIN_GROUP failure: %m on socket %d, addr %s for interface %d(%s)",
+ iface->fd, stoa(&iface->sin),
+ mreq6.ipv6mr_interface, stoa(maddr));
+ return ISC_FALSE;
}
+ DPRINTF(4, ("Added IPv6 multicast group on socket %d, addr %s for interface %d(%s)\n",
+ iface->fd, stoa(&iface->sin),
+ mreq6.ipv6mr_interface, stoa(maddr)));
+ break;
+#else
+ return ISC_FALSE;
+#endif /* INCLUDE_IPV6_MULTICAST_SUPPORT */
+ }
+ iface->flags |= INT_MCASTOPEN;
+ iface->num_mcast++;
+ add_addr_to_list(maddr, iface);
+ return ISC_TRUE;
+}
+
+/*
+ * Remove a multicast address from a given socket
+ * The socket is in the inter_list all we need to do is disable
+ * multicasting. It is not this function's job to select the socket
+ */
+static isc_boolean_t
+socket_multicast_disable(struct interface *iface, struct sockaddr_storage *maddr)
+{
+#ifdef INCLUDE_IPV6_MULTICAST_SUPPORT
+ struct ipv6_mreq mreq6;
+ struct in6_addr iaddr6;
+#endif /* INCLUDE_IPV6_MULTICAST_SUPPORT */
+
+ struct ip_mreq mreq;
+ memset((char *)&mreq, 0, sizeof(mreq));
+
+ if (find_addr_in_list(maddr) == NULL) {
+ DPRINTF(4, ("socket_multicast_disable(%s): not enabled\n", stoa(maddr)));
+ return ISC_TRUE;
+ }
+ switch (maddr->ss_family)
+ {
+ case AF_INET:
+ mreq.imr_multiaddr = (((struct sockaddr_in*)&maddr)->sin_addr);
+ mreq.imr_interface.s_addr = ((struct sockaddr_in*)&iface->sin)->sin_addr.s_addr;
+ if (setsockopt(iface->fd, IPPROTO_IP, IP_DROP_MEMBERSHIP,
+ (char *)&mreq, sizeof(mreq)) == -1) {
+ netsyslog(LOG_ERR,
+ "setsockopt IP_DROP_MEMBERSHIP failure: %m on socket %d, addr %s for %x / %x (%s)",
+ iface->fd, stoa(&iface->sin),
+ mreq.imr_multiaddr.s_addr,
+ mreq.imr_interface.s_addr, stoa(maddr));
+ return ISC_FALSE;
+ }
+ break;
+ case AF_INET6:
+#ifdef INCLUDE_IPV6_MULTICAST_SUPPORT
/*
- * enable reception of multicast packets
+ * Disable reception of multicast packets
+ * If the address is link-local we can get the interface index
+ * from the scope id. Don't do this for other types of multicast
+ * addresses. For now let the kernel figure it out.
*/
+ iaddr6 = ((struct sockaddr_in6*)&maddr)->sin6_addr;
mreq6.ipv6mr_multiaddr = iaddr6;
- mreq6.ipv6mr_interface = 0;
- if(setsockopt(inter_list[i].fd, IPPROTO_IPV6, IPV6_JOIN_GROUP,
- (char *)&mreq6, sizeof(mreq6)) == -1)
+ mreq6.ipv6mr_interface = iface->scopeid;
+
+ if (setsockopt(iface->fd, IPPROTO_IPV6, IPV6_LEAVE_GROUP,
+ (char *)&mreq6, sizeof(mreq6)) == -1) {
netsyslog(LOG_ERR,
- "setsockopt IPV6_JOIN_GROUP fails: %m on interface %d(%s)",
- mreq6.ipv6mr_interface, stoa(&addr));
- inter_list[i].flags |= INT_MULTICAST;
- inter_list[i].num_mcast++;
- if(i >= ninterfaces)
- ninterfaces = i+1;
-
- add_addr_to_list(&addr, i);
+ "setsockopt IPV6_LEAVE_GROUP failure: %m on socket %d, addr %s for %d(%s)",
+ iface->fd, stoa(&iface->sin),
+ mreq6.ipv6mr_interface, stoa(maddr));
+ return ISC_FALSE;
+ }
break;
-#endif /* HAVE_IPV6 */
+#else
+ return ISC_FALSE;
+#endif /* INCLUDE_IPV6_MULTICAST_SUPPORT */
+
+ }
+ iface->num_mcast--;
+ if (iface->num_mcast <= 0) {
+ iface->num_mcast = 0;
+ iface->flags &= ~INT_MCASTOPEN;
}
+ return ISC_TRUE;
+}
+
+/*
+ * io_setbclient - open the broadcast client sockets
+ */
+void
+io_setbclient(void)
+{
+#ifdef OPEN_BCAST_SOCKET
+ struct interface *interf;
+ int nif = 0;
+ isc_boolean_t jstatus;
+ SOCKET fd;
+
+ set_reuseaddr(1);
+
+ for (interf = ISC_LIST_HEAD(inter_list);
+ interf != NULL;
+ interf = ISC_LIST_NEXT(interf, link)) {
+ if (interf->flags & INT_WILDCARD)
+ continue;
+
+ /* use only allowed addresses */
+ if (interf->ignore_packets == ISC_TRUE)
+ continue;
+ /* Only IPv4 addresses are valid for broadcast */
+ if (interf->sin.ss_family != AF_INET)
+ continue;
+ /* Is this a broadcast address? */
+ if (!(interf->flags & INT_BROADCAST))
+ continue;
+
+ /* Skip the loopback addresses */
+ if (interf->flags & INT_LOOPBACK)
+ continue;
+
+ /* Do we already have the broadcast address open? */
+ if (interf->flags & INT_BCASTOPEN) {
+ /* account for already open interfaces to aviod misleading warning below */
+ nif++;
+ continue;
+ }
+
+ /*
+ * Try to open the broadcast address
+ */
+ interf->family = AF_INET;
+ interf->bfd = open_socket(&interf->bcast,
+ INT_BROADCAST, 0, interf);
+
+ /*
+ * If we succeeded then we use it otherwise
+ * enable the underlying address
+ */
+ if (interf->bfd == INVALID_SOCKET) {
+ fd = interf->fd;
+ }
+ else {
+ fd = interf->bfd;
+ }
+
+ /* Enable Broadcast on socket */
+ jstatus = socket_broadcast_enable(interf, fd, &interf->sin);
+ if (jstatus == ISC_TRUE)
+ {
+ nif++;
+ netsyslog(LOG_INFO,"io_setbclient: Opened broadcast client on interface #%d %s, socket: %d",
+ interf->ifnum, interf->name, fd);
+ interf->addr_refid = addr2refid(&interf->sin);
+ }
+ }
+ set_reuseaddr(0);
#ifdef DEBUG
if (debug)
- printf("io_multicast_add %s\n", stoa(&addr));
+ if (nif > 0)
+ printf("io_setbclient: Opened broadcast clients\n");
+#endif
+ if (nif == 0)
+ netsyslog(LOG_ERR, "Unable to listen for broadcasts, no broadcast interfaces available");
+#else
+ netsyslog(LOG_ERR, "io_setbclient: Broadcast Client disabled by build");
#endif
-#else /* MCAST */
- netsyslog(LOG_ERR,
- "cannot add multicast address %s as no MCAST support",
- stoa(&addr));
-#endif /* MCAST */
}
/*
@@ -843,139 +1956,225 @@ io_multicast_add(
void
io_unsetbclient(void)
{
- int i;
+ struct interface *interf;
+ isc_boolean_t lstatus;
- for (i = nwilds; i < ninterfaces; i++)
+ for (interf = ISC_LIST_HEAD(inter_list);
+ interf != NULL;
+ interf = ISC_LIST_NEXT(interf, link))
{
- if (!(inter_list[i].flags & INT_BCASTOPEN))
+ if (interf->flags & INT_WILDCARD)
+ continue;
+
+ if (!(interf->flags & INT_BCASTOPEN))
continue;
- close_socket(inter_list[i].bfd);
- inter_list[i].bfd = INVALID_SOCKET;
- inter_list[i].flags &= ~INT_BCASTOPEN;
+ lstatus = socket_broadcast_disable(interf, &interf->sin);
}
}
-
/*
- * io_multicast_del() - delete multicast group address
+ * io_multicast_add() - add multicast group address
*/
void
-io_multicast_del(
+io_multicast_add(
struct sockaddr_storage addr
)
{
#ifdef MCAST
- int i;
- struct ip_mreq mreq;
- u_int32 haddr;
-
-#ifdef HAVE_IPV6
- struct ipv6_mreq mreq6;
- struct in6_addr haddr6;
-#endif /* HAVE_IPV6 */
+ struct interface *interface, *iface;
+ int lscope = 0;
+
+ /*
+ * Check to see if this is a multicast address
+ */
+ if (addr_ismulticast(&addr) == ISC_FALSE)
+ return;
- switch (addr.ss_family)
+ /* If we already have it we can just return */
+ if (find_flagged_addr_in_list(&addr, INT_MCASTOPEN|INT_MCASTIF) != NULL)
{
- case AF_INET :
+ netsyslog(LOG_INFO, "Duplicate request found for multicast address %s",
+ stoa(&addr));
+ return;
+ }
- haddr = ntohl(((struct sockaddr_in*)&addr)->sin_addr.s_addr);
+#ifndef MULTICAST_NONEWSOCKET
+ interface = new_interface(NULL);
+
+ /*
+ * Open a new socket for the multicast address
+ */
+ interface->sin.ss_family = addr.ss_family;
+ interface->family = addr.ss_family;
- if (!IN_CLASSD(haddr))
- {
+ switch(addr.ss_family) {
+ case AF_INET:
+ memcpy(&(((struct sockaddr_in *)&interface->sin)->sin_addr),
+ &(((struct sockaddr_in*)&addr)->sin_addr),
+ sizeof(struct in_addr));
+ ((struct sockaddr_in*)&interface->sin)->sin_port = htons(NTP_PORT);
+ memset(&((struct sockaddr_in*)&interface->mask)->sin_addr.s_addr, 0xff, sizeof(struct in_addr));
+ break;
+ case AF_INET6:
+#ifdef INCLUDE_IPV6_MULTICAST_SUPPORT
+ memcpy(&(((struct sockaddr_in6 *)&interface->sin)->sin6_addr),
+ &((struct sockaddr_in6*)&addr)->sin6_addr,
+ sizeof(struct in6_addr));
+ ((struct sockaddr_in6*)&interface->sin)->sin6_port = htons(NTP_PORT);
+#ifdef ISC_PLATFORM_HAVESCOPEID
+ ((struct sockaddr_in6*)&interface->sin)->sin6_scope_id = ((struct sockaddr_in6*)&addr)->sin6_scope_id;
+#endif
+ memset(&((struct sockaddr_in6*)&interface->mask)->sin6_addr.s6_addr, 0xff, sizeof(struct in6_addr));
+#endif
+ iface = findlocalcastinterface(&addr, INT_MULTICAST);
+ if (iface) {
+# ifdef ISC_PLATFORM_HAVESCOPEID
+ lscope = ((struct sockaddr_in6*)&iface->sin)->sin6_scope_id;
+# endif
+ DPRINTF(4, ("Found interface #%d %s, scope: %d for address %s\n", iface->ifnum, iface->name, lscope, stoa(&addr)));
+ }
+ break;
+ }
+
+ set_reuseaddr(1);
+ interface->bfd = INVALID_SOCKET;
+ interface->fd = open_socket(&interface->sin,
+ INT_MULTICAST, 0, interface);
+
+ if (interface->fd != INVALID_SOCKET)
+ {
+ interface->bfd = INVALID_SOCKET;
+ interface->ignore_packets = ISC_FALSE;
+ interface->flags |= INT_MCASTIF;
+
+ (void) strncpy(interface->name, "multicast",
+ sizeof(interface->name));
+ ((struct sockaddr_in*)&interface->mask)->sin_addr.s_addr =
+ htonl(~(u_int32)0);
+ DPRINT_INTERFACE(2, (interface, "multicast add ", "\n"));
+ /* socket_multicast_enable() will add this address to the addresslist */
+ add_interface(interface);
+ list_if_listening(interface, htons(NTP_PORT));
+ }
+ else
+ {
+ delete_interface(interface); /* re-use existing interface */
+ interface = NULL;
+ if (addr.ss_family == AF_INET)
+ interface = wildipv4;
+ else if (addr.ss_family == AF_INET6)
+ interface = wildipv6;
+
+ if (interface != NULL) {
+ /* HACK ! -- stuff in an address */
+ interface->bcast = addr;
+ netsyslog(LOG_ERR,
+ "...multicast address %s using wildcard interface #%d %s",
+ stoa(&addr), interface->ifnum, interface->name);
+ } else {
netsyslog(LOG_ERR,
- "invalid multicast address %s", stoa(&addr));
+ "No multicast socket available to use for address %s",
+ stoa(&addr));
return;
}
+ }
+#else
+ /*
+ * For the case where we can't use a separate socket
+ */
+ interface = findlocalcastinterface(&addr, INT_MULTICAST);
+ /*
+ * If we don't have a valid socket, just return
+ */
+ if (!interface)
+ {
+ netsyslog(LOG_ERR,
+ "Cannot add multicast address %s: Cannot find slot",
+ stoa(&addr));
+ return;
+ }
+
+#endif
+ {
+ isc_boolean_t jstatus;
+ jstatus = socket_multicast_enable(interface, lscope, &addr);
+
+ if (jstatus == ISC_TRUE)
+ netsyslog(LOG_INFO, "Added Multicast Listener %s on interface #%d %s\n", stoa(&addr), interface->ifnum, interface->name);
+ else
+ netsyslog(LOG_ERR, "Failed to add Multicast Listener %s\n", stoa(&addr));
+ }
+#else /* MCAST */
+ netsyslog(LOG_ERR,
+ "Cannot add multicast address %s: no Multicast support",
+ stoa(&addr));
+#endif /* MCAST */
+ return;
+}
+
+/*
+ * io_multicast_del() - delete multicast group address
+ */
+void
+io_multicast_del(
+ struct sockaddr_storage addr
+ )
+{
+#ifdef MCAST
+ struct interface *interface;
+ isc_boolean_t lstatus;
+
+ /*
+ * Check to see if this is a multicast address
+ */
+ if (addr_ismulticast(&addr) == ISC_FALSE)
+ {
+ netsyslog(LOG_ERR,
+ "invalid multicast address %s", stoa(&addr));
+ return;
+ }
+ switch (addr.ss_family)
+ {
+ case AF_INET :
/*
- * Disable reception of multicast packets
- */
- mreq.imr_multiaddr = ((struct sockaddr_in*)&addr)->sin_addr;
- mreq.imr_interface.s_addr = htonl(INADDR_ANY);
- for (i = 0; i < ninterfaces; i++)
- {
- /* Be sure it's the correct family */
- if (inter_list[i].sin.ss_family != AF_INET)
- continue;
- if (!(inter_list[i].flags & INT_MULTICAST))
- continue;
- if (!(inter_list[i].fd < 0))
- continue;
- if (!SOCKCMP(&addr, &inter_list[i].sin))
- continue;
- if (i != wildipv4)
- {
- /* we have an explicit fd, so we can close it */
- close_socket(inter_list[i].fd);
- memset((char *)&inter_list[i], 0, sizeof(struct interface));
- inter_list[i].fd = INVALID_SOCKET;
- inter_list[i].bfd = INVALID_SOCKET;
- }
- else
- {
- /* We are sharing "any address" port :-( Don't close it! */
- if (setsockopt(inter_list[i].fd, IPPROTO_IP, IP_DROP_MEMBERSHIP,
- (char *)&mreq, sizeof(mreq)) == -1)
- netsyslog(LOG_ERR, "setsockopt IP_DROP_MEMBERSHIP fails on address: %s %m",
- stoa(&addr));
- inter_list[i].num_mcast--;
- /* If there are none left negate the Multicast flag */
- if(inter_list[i].num_mcast == 0)
- inter_list[i].flags &= ~INT_MULTICAST;
- }
+ * Disable reception of multicast packets
+ */
+ interface = find_flagged_addr_in_list(&addr, INT_MCASTOPEN);
+ while ( interface != NULL) {
+ lstatus = socket_multicast_disable(interface, &addr);
+ interface = find_flagged_addr_in_list(&addr, INT_MCASTOPEN);
}
break;
-#ifdef HAVE_IPV6
+#ifdef INCLUDE_IPV6_MULTICAST_SUPPORT
case AF_INET6 :
- haddr6 = ((struct sockaddr_in6*)&addr)->sin6_addr;
-
- if (!IN6_IS_ADDR_MULTICAST(&haddr6))
- {
- netsyslog(LOG_ERR,
- "invalid multicast address %s", stoa(&addr));
- return;
- }
-
/*
- * Disable reception of multicast packets
- */
- mreq6.ipv6mr_multiaddr = ((struct sockaddr_in6*)&addr)->sin6_addr;
- mreq6.ipv6mr_interface = 0;
- for (i = 0; i < ninterfaces; i++)
+ * Disable reception of multicast packets
+ */
+ for (interface = ISC_LIST_HEAD(inter_list);
+ interface != NULL;
+ interface = ISC_LIST_NEXT(interface, link))
{
+ if (interface->flags & INT_WILDCARD)
+ continue;
+
/* Be sure it's the correct family */
- if (inter_list[i].sin.ss_family != AF_INET6)
+ if (interface->sin.ss_family != AF_INET6)
continue;
- if (!(inter_list[i].flags & INT_MULTICAST))
+ if (!(interface->flags & INT_MCASTOPEN))
continue;
- if (!(inter_list[i].fd < 0))
+ if (!(interface->fd < 0))
continue;
- if (!SOCKCMP(&addr, &inter_list[i].sin))
+ if (!SOCKCMP(&addr, &interface->sin))
continue;
- if (i != wildipv6)
- {
- /* we have an explicit fd, so we can close it */
- close_socket(inter_list[i].fd);
- memset((char *)&inter_list[i], 0, sizeof(struct interface));
- inter_list[i].fd = INVALID_SOCKET;
- inter_list[i].bfd = INVALID_SOCKET;
- }
- else
- {
- /* We are sharing "any address" port :-( Don't close it! */
- if (setsockopt(inter_list[i].fd, IPPROTO_IPV6, IPV6_LEAVE_GROUP,
- (char *)&mreq6, sizeof(mreq6)) == -1)
- netsyslog(LOG_ERR, "setsockopt IP_DROP_MEMBERSHIP fails on address %s: %m",
- stoa(&addr));
- /* If there are none left negate the Multicast flag */
- if(inter_list[i].num_mcast == 0)
- inter_list[i].flags &= ~INT_MULTICAST;
- }
+ lstatus = socket_multicast_disable(interface, &addr);
}
break;
-#endif /* HAVE_IPV6 */
+#endif /* INCLUDE_IPV6_MULTICAST_SUPPORT */
+
}/* switch */
+
delete_addr_from_list(&addr);
#else /* not MCAST */
@@ -983,6 +2182,76 @@ io_multicast_del(
#endif /* not MCAST */
}
+/*
+ * init_nonblocking_io() - set up descriptor to be non blocking
+ */
+static void init_nonblocking_io(SOCKET fd)
+{
+ /*
+ * set non-blocking,
+ */
+
+#ifdef USE_FIONBIO
+ /* in vxWorks we use FIONBIO, but the others are defined for old systems, so
+ * all hell breaks loose if we leave them defined
+ */
+#undef O_NONBLOCK
+#undef FNDELAY
+#undef O_NDELAY
+#endif
+
+#if defined(O_NONBLOCK) /* POSIX */
+ if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0)
+ {
+ netsyslog(LOG_ERR, "fcntl(O_NONBLOCK) fails on fd #%d: %m",
+ fd);
+ exit(1);
+ /*NOTREACHED*/
+ }
+#elif defined(FNDELAY)
+ if (fcntl(fd, F_SETFL, FNDELAY) < 0)
+ {
+ netsyslog(LOG_ERR, "fcntl(FNDELAY) fails on fd #%d: %m",
+ fd);
+ exit(1);
+ /*NOTREACHED*/
+ }
+#elif defined(O_NDELAY) /* generally the same as FNDELAY */
+ if (fcntl(fd, F_SETFL, O_NDELAY) < 0)
+ {
+ netsyslog(LOG_ERR, "fcntl(O_NDELAY) fails on fd #%d: %m",
+ fd);
+ exit(1);
+ /*NOTREACHED*/
+ }
+#elif defined(FIONBIO)
+ {
+ int on = 1;
+# if defined(SYS_WINNT)
+
+ if (ioctlsocket(fd,FIONBIO,(u_long *) &on) == SOCKET_ERROR)
+# else
+ if (ioctl(fd,FIONBIO,&on) < 0)
+# endif
+ {
+ netsyslog(LOG_ERR, "ioctl(FIONBIO) fails on fd #%d: %m",
+ fd);
+ exit(1);
+ /*NOTREACHED*/
+ }
+ }
+#elif defined(FIOSNBIO)
+ if (ioctl(fd,FIOSNBIO,&on) < 0)
+ {
+ netsyslog(LOG_ERR, "ioctl(FIOSNBIO) fails on fd #%d: %m",
+ fd);
+ exit(1);
+ /*NOTREACHED*/
+ }
+#else
+# include "Bletch: Need non-blocking I/O!"
+#endif
+}
/*
* open_socket - open a socket, returning the file descriptor
@@ -992,12 +2261,14 @@ static SOCKET
open_socket(
struct sockaddr_storage *addr,
int flags,
- int turn_off_reuse
+ int turn_off_reuse,
+ struct interface *interf
)
{
int errval;
SOCKET fd;
- int on = 1, off = 0;
+ int on = 1, off = 0; /* int is OK for REUSEADR per */
+ /* http://www.kohala.com/start/mcast.api.txt */
#if defined(IPTOS_LOWDELAY) && defined(IPPROTO_IP) && defined(IP_TOS)
int tos;
#endif /* IPTOS_LOWDELAY && IPPROTO_IP && IP_TOS */
@@ -1009,70 +2280,84 @@ open_socket(
#ifndef SYS_WINNT
if ( (fd = socket(addr->ss_family, SOCK_DGRAM, 0)) < 0) {
errval = errno;
- if(addr->ss_family == AF_INET)
- netsyslog(LOG_ERR, "socket(AF_INET, SOCK_DGRAM, 0) failed on address %s: %m",
- stoa(addr));
- else if(addr->ss_family == AF_INET6)
- netsyslog(LOG_ERR, "socket(AF_INET6, SOCK_DGRAM, 0) failed on address %s: %m",
- stoa(addr));
- if (errval == EPROTONOSUPPORT || errval == EAFNOSUPPORT ||
- errval == EPFNOSUPPORT)
- return (INVALID_SOCKET);
- exit(1);
- /*NOTREACHED*/
- }
#else
if ( (fd = socket(addr->ss_family, SOCK_DGRAM, 0)) == INVALID_SOCKET) {
errval = WSAGetLastError();
+#endif
if(addr->ss_family == AF_INET)
netsyslog(LOG_ERR, "socket(AF_INET, SOCK_DGRAM, 0) failed on address %s: %m",
stoa(addr));
else if(addr->ss_family == AF_INET6)
netsyslog(LOG_ERR, "socket(AF_INET6, SOCK_DGRAM, 0) failed on address %s: %m",
stoa(addr));
+#ifndef SYS_WINNT
+ if (errval == EPROTONOSUPPORT || errval == EAFNOSUPPORT ||
+ errval == EPFNOSUPPORT)
+#else
if (errval == WSAEPROTONOSUPPORT || errval == WSAEAFNOSUPPORT ||
errval == WSAEPFNOSUPPORT)
+#endif
return (INVALID_SOCKET);
+ msyslog(LOG_ERR, "unexpected error code %d (not PROTONOSUPPORT|AFNOSUPPORT|FPNOSUPPORT) - exiting", errval);
exit(1);
/*NOTREACHED*/
}
+#ifdef SYS_WINNT
if (connection_reset_fix(fd) != ISC_R_SUCCESS) {
netsyslog(LOG_ERR, "connection_reset_fix(fd) failed on address %s: %m",
stoa(addr));
}
-
#endif /* SYS_WINNT */
- /* set SO_REUSEADDR since we will be binding the same port
- number on each interface */
+ /*
+ * Fixup the file descriptor for some systems
+ * See bug #530 for details of the issue.
+ */
+ fd = move_fd(fd);
+
+ /*
+ * set SO_REUSEADDR since we will be binding the same port
+ * number on each interface according to flag
+ */
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
- (char *)&on, sizeof(on)))
+ turn_off_reuse ? (char *)&off : (char *)&on, sizeof(on)))
{
- netsyslog(LOG_ERR, "setsockopt SO_REUSEADDR on fails on address %s: %m",
- stoa(addr));
+ netsyslog(LOG_ERR, "setsockopt SO_REUSEADDR %s on fails on address %s: %m",
+ turn_off_reuse ? "off" : "on", stoa(addr));
+
+ closesocket(fd);
+
+ return INVALID_SOCKET;
}
+ /*
+ * IPv4 specific options go here
+ */
+ if (addr->ss_family == AF_INET) {
#if defined(IPTOS_LOWDELAY) && defined(IPPROTO_IP) && defined(IP_TOS)
/* set IP_TOS to minimize packet delay */
- tos = IPTOS_LOWDELAY;
- if (addr->ss_family == AF_INET)
+ tos = IPTOS_LOWDELAY;
if (setsockopt(fd, IPPROTO_IP, IP_TOS, (char *) &tos, sizeof(tos)) < 0)
{
netsyslog(LOG_ERR, "setsockopt IPTOS_LOWDELAY on fails on address %s: %m",
stoa(addr));
}
+#endif /* IPTOS_LOWDELAY && IPPROTO_IP && IP_TOS */
+ }
+ /*
+ * IPv6 specific options go here
+ */
+ if (addr->ss_family == AF_INET6) {
#if defined(IPV6_V6ONLY)
- if (addr->ss_family == AF_INET6)
if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY,
(char*)&on, sizeof(on)))
{
netsyslog(LOG_ERR, "setsockopt IPV6_V6ONLY on fails on address %s: %m",
stoa(addr));
}
-#else /* IPV6_V6ONLY */
+#endif /* IPV6_V6ONLY */
#if defined(IPV6_BINDV6ONLY)
- if (addr->ss_family == AF_INET6)
if (setsockopt(fd, IPPROTO_IPV6, IPV6_BINDV6ONLY,
(char*)&on, sizeof(on)))
{
@@ -1081,238 +2366,119 @@ open_socket(
stoa(addr));
}
#endif /* IPV6_BINDV6ONLY */
-#endif /* IPV6_V6ONLY */
-
-#endif /* IPTOS_LOWDELAY && IPPROTO_IP && IP_TOS */
+ }
+#ifdef OS_NEEDS_REUSEADDR_FOR_IFADDRBIND
/*
- * bind the local address.
+ * some OSes don't allow binding to more specific
+ * addresses if a wildcard address already bound
+ * to the port and SO_REUSEADDR is not set
*/
- if (bind(fd, (struct sockaddr *)addr, SOCKLEN(addr)) < 0) {
- char buff[160];
-
- if(addr->ss_family == AF_INET)
- sprintf(buff,
- "bind() fd %d, family %d, port %d, addr %s, in_classd=%d flags=%d fails: %%m",
- fd, addr->ss_family, (int)ntohs(((struct sockaddr_in*)addr)->sin_port),
- stoa(addr),
- IN_CLASSD(ntohl(((struct sockaddr_in*)addr)->sin_addr.s_addr)), flags);
- else if(addr->ss_family == AF_INET6)
- sprintf(buff,
- "bind() fd %d, family %d, port %d, addr %s, in6_is_addr_multicast=%d flags=%d fails: %%m",
- fd, addr->ss_family, (int)ntohs(((struct sockaddr_in6*)addr)->sin6_port),
- stoa(addr),
- IN6_IS_ADDR_MULTICAST(&((struct sockaddr_in6*)addr)->sin6_addr), flags);
- else return INVALID_SOCKET;
-
- netsyslog(LOG_ERR, buff);
- closesocket(fd);
-
- /*
- * soft fail if opening a multicast address
- */
- if(addr->ss_family == AF_INET){
- if(IN_CLASSD(ntohl(((struct sockaddr_in*)addr)->sin_addr.s_addr)))
- return (INVALID_SOCKET);
- }
- else {
- if(IN6_IS_ADDR_MULTICAST(&((struct sockaddr_in6*)addr)->sin6_addr))
- return (INVALID_SOCKET);
- }
-#if 0
- exit(1);
-#else
- return INVALID_SOCKET;
-#endif
+ if (!is_wildcard_addr(addr)) {
+ set_wildcard_reuse(addr->ss_family, 1);
}
-#ifdef DEBUG
- if (debug)
- printf("bind() fd %d, family %d, port %d, addr %s, flags=%d\n",
- fd,
- addr->ss_family,
- (int)ntohs(((struct sockaddr_in*)addr)->sin_port),
- stoa(addr),
- flags);
#endif
/*
- * I/O Completion Ports don't care about the select and FD_SET
- */
-#ifndef HAVE_IO_COMPLETION_PORT
- if (fd > maxactivefd)
- maxactivefd = fd;
- FD_SET(fd, &activefds);
-#endif
- add_socket_to_list(fd);
- /*
- * set non-blocking,
+ * bind the local address.
*/
+ errval = bind(fd, (struct sockaddr *)addr, SOCKLEN(addr));
-#ifdef USE_FIONBIO
- /* in vxWorks we use FIONBIO, but the others are defined for old systems, so
- * all hell breaks loose if we leave them defined
+#ifdef OS_NEEDS_REUSEADDR_FOR_IFADDRBIND
+ /*
+ * some OSes don't allow binding to more specific
+ * addresses if a wildcard address already bound
+ * to the port and REUSE_ADDR is not set
*/
-#undef O_NONBLOCK
-#undef FNDELAY
-#undef O_NDELAY
+ if (!is_wildcard_addr(addr)) {
+ set_wildcard_reuse(addr->ss_family, 0);
+ }
#endif
-#if defined(O_NONBLOCK) /* POSIX */
- if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0)
- {
- netsyslog(LOG_ERR, "fcntl(O_NONBLOCK) fails on address %s: %m",
- stoa(addr));
- exit(1);
- /*NOTREACHED*/
- }
-#elif defined(FNDELAY)
- if (fcntl(fd, F_SETFL, FNDELAY) < 0)
- {
- netsyslog(LOG_ERR, "fcntl(FNDELAY) fails on address %s: %m",
- stoa(addr));
- exit(1);
- /*NOTREACHED*/
- }
-#elif defined(O_NDELAY) /* generally the same as FNDELAY */
- if (fcntl(fd, F_SETFL, O_NDELAY) < 0)
- {
- netsyslog(LOG_ERR, "fcntl(O_NDELAY) fails on address %s: %m",
- stoa(addr));
- exit(1);
- /*NOTREACHED*/
- }
-#elif defined(FIONBIO)
-# if defined(VMS)
- if (ioctl(fd,FIONBIO,&on) < 0)
-# elif defined(SYS_WINNT)
- if (ioctlsocket(fd,FIONBIO,(u_long *) &on) == SOCKET_ERROR)
+ if (errval < 0) {
+ /*
+ * Don't log this under all conditions
+ */
+ if (turn_off_reuse == 0
+#ifdef DEBUG
+ || debug > 1
+#endif
+ ) {
+ if (addr->ss_family == AF_INET)
+ netsyslog(LOG_ERR,
+ "bind() fd %d, family %d, port %d, addr %s, in_classd=%d flags=0x%x fails: %m",
+ fd, addr->ss_family, (int)ntohs(((struct sockaddr_in*)addr)->sin_port),
+ stoa(addr),
+ IN_CLASSD(ntohl(((struct sockaddr_in*)addr)->sin_addr.s_addr)), flags);
+#ifdef INCLUDE_IPV6_SUPPORT
+ else if (addr->ss_family == AF_INET6)
+ netsyslog(LOG_ERR,
+ "bind() fd %d, family %d, port %d, scope %d, addr %s, in6_is_addr_multicast=%d flags=0x%x fails: %m",
+ fd, addr->ss_family, (int)ntohs(((struct sockaddr_in6*)addr)->sin6_port),
+# ifdef ISC_PLATFORM_HAVESCOPEID
+ ((struct sockaddr_in6*)addr)->sin6_scope_id
# else
- if (ioctl(fd,FIONBIO,&on) < 0)
+ -1
# endif
- {
- netsyslog(LOG_ERR, "ioctl(FIONBIO) fails on address %s: %m",
- stoa(addr));
- exit(1);
- /*NOTREACHED*/
+ , stoa(addr),
+ IN6_IS_ADDR_MULTICAST(&((struct sockaddr_in6*)addr)->sin6_addr), flags);
+#endif
+ }
+
+ closesocket(fd);
+
+ return INVALID_SOCKET;
}
-#elif defined(FIOSNBIO)
- if (ioctl(fd,FIOSNBIO,&on) < 0)
+
+#ifdef HAVE_TIMESTAMP
{
- netsyslog(LOG_ERR, "ioctl(FIOSNBIO) fails on address %s: %m",
- stoa(addr));
- exit(1);
- /*NOTREACHED*/
- }
-#else
-# include "Bletch: Need non-blocking I/O!"
+ if (setsockopt(fd, SOL_SOCKET, SO_TIMESTAMP,
+ (char*)&on, sizeof(on)))
+ {
+ netsyslog(LOG_DEBUG,
+ "setsockopt SO_TIMESTAMP on fails on address %s: %m",
+ stoa(addr));
+ }
+#ifdef DEBUG
+ else
+ {
+ DPRINTF(4, ("setsockopt SO_TIMESTAMP enabled on fd %d address %s\n", fd, stoa(addr)));
+ }
+#endif
+ }
#endif
+ DPRINTF(4, ("bind() fd %d, family %d, port %d, addr %s, flags=0x%x\n",
+ fd,
+ addr->ss_family,
+ (int)ntohs(((struct sockaddr_in*)addr)->sin_port),
+ stoa(addr),
+ flags));
+ init_nonblocking_io(fd);
+
#ifdef HAVE_SIGNALED_IO
init_socket_sig(fd);
#endif /* not HAVE_SIGNALED_IO */
- /*
- * Turn off the SO_REUSEADDR socket option. It apparently
- * causes heartburn on systems with multicast IP installed.
- * On normal systems it only gets looked at when the address
- * is being bound anyway..
- */
- if (turn_off_reuse)
- if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
- (char *)&off, sizeof(off)))
- {
- netsyslog(LOG_ERR, "setsockopt SO_REUSEADDR off fails on address %s: %m",
- stoa(addr));
- }
-
-#ifdef SO_BROADCAST
- /* if this interface can support broadcast, set SO_BROADCAST */
- if (flags & INT_BROADCAST)
- {
- if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST,
- (char *)&on, sizeof(on)))
- {
- netsyslog(LOG_ERR, "setsockopt(SO_BROADCAST) on address %s: %m",
- stoa(addr));
- }
- }
-#endif /* SO_BROADCAST */
+ add_fd_to_list(fd, FD_TYPE_SOCKET);
#if !defined(SYS_WINNT) && !defined(VMS)
-# ifdef DEBUG
- if (debug > 1)
- printf("flags for fd %d: 0%o\n", fd,
- fcntl(fd, F_GETFL, 0));
-# endif
+ DPRINTF(4, ("flags for fd %d: 0x%x\n", fd,
+ fcntl(fd, F_GETFL, 0)));
#endif /* SYS_WINNT || VMS */
- return fd;
-}
-
-
-/*
- * close_socket - close a socket and remove from the activefd list
- */
-static void
-close_socket(
- SOCKET fd
- )
-{
- SOCKET i, newmax;
-
- (void) closesocket(fd);
-
- /*
- * I/O Completion Ports don't care about select and fd_set
- */
-#ifndef HAVE_IO_COMPLETION_PORT
- FD_CLR( (u_int) fd, &activefds);
-
- if (fd == maxactivefd) {
- newmax = 0;
- for (i = 0; i < maxactivefd; i++)
- if (FD_ISSET(i, &activefds))
- newmax = i;
- maxactivefd = newmax;
- }
-#endif
- delete_socket_from_list(fd);
-
-}
-
-
+#if defined (HAVE_IO_COMPLETION_PORT)
/*
- * close_file - close a file and remove from the activefd list
- * added 1/31/1997 Greg Schueman for Windows NT portability
+ * Add the socket to the completion port
*/
-#ifdef REFCLOCK
-static void
-close_file(
- SOCKET fd
- )
-{
- int i, newmax;
-
- (void) close(fd);
- /*
- * I/O Completion Ports don't care about select and fd_set
- */
-#ifndef HAVE_IO_COMPLETION_PORT
- FD_CLR( (u_int) fd, &activefds);
-
- if (fd == maxactivefd) {
- newmax = 0;
- for (i = 0; i < maxactivefd; i++)
- if (FD_ISSET(i, &activefds))
- newmax = i;
- maxactivefd = newmax;
+ if (io_completion_port_add_socket(fd, interf))
+ {
+ msyslog(LOG_ERR, "unable to set up io completion port - EXITING");
+ exit(1);
}
#endif
- delete_socket_from_list(fd);
-
+ return fd;
}
-#endif
-
/* XXX ELIMINATE sendpkt similar in ntpq.c, ntpdc.c, ntp_io.c, ntptrace.c */
/*
@@ -1343,87 +2509,98 @@ sendpkt(
struct in_addr addr;
};
-#ifdef HAVE_IPV6
+#ifdef INCLUDE_IPV6_SUPPORT
struct cache6 {
u_short port;
struct in6_addr addr;
};
-#endif /* HAVE_IPV6 */
+#endif /* INCLUDE_IPV6_SUPPORT */
+
#ifndef ERRORCACHESIZE
#define ERRORCACHESIZE 8
#endif
#if ERRORCACHESIZE > 0
static struct cache badaddrs[ERRORCACHESIZE];
-#ifdef HAVE_IPV6
+#ifdef INCLUDE_IPV6_SUPPORT
static struct cache6 badaddrs6[ERRORCACHESIZE];
-#endif /* HAVE_IPV6 */
+#endif /* INCLUDE_IPV6_SUPPORT */
#else
#define badaddrs ((struct cache *)0) /* Only used in empty loops! */
-#ifdef HAVE_IPV6
+#ifdef INCLUDE_IPV6_SUPPORT
#define badaddrs6 ((struct cache6 *)0) /* Only used in empty loops! */
-#endif /* HAVE_IPV6 */
+#endif /* INCLUDE_IPV6_SUPPORT */
#endif
#ifdef DEBUG
if (debug > 1)
- printf("%ssendpkt(fd=%d dst=%s, src=%s, ttl=%d, len=%d)\n",
- (ttl >= 0) ? "\tMCAST\t*****" : "",
- inter->fd, stoa(dest),
- stoa(&inter->sin), ttl, len);
+ {
+ if (inter != NULL)
+ {
+ printf("%ssendpkt(fd=%d dst=%s, src=%s, ttl=%d, len=%d)\n",
+ (ttl > 0) ? "\tMCAST\t***** " : "",
+ inter->fd, stoa(dest),
+ stoa(&inter->sin), ttl, len);
+ }
+ else
+ {
+ printf("%ssendpkt(dst=%s, ttl=%d, len=%d): no interface - IGNORED\n",
+ (ttl > 0) ? "\tMCAST\t***** " : "",
+ stoa(dest),
+ ttl, len);
+ }
+ }
#endif
+ if (inter == NULL) /* unbound peer - drop request and wait for better network conditions */
+ return;
+
#ifdef MCAST
- switch (inter->sin.ss_family) {
-
- case AF_INET :
-
+ /*
+ * for the moment we use the bcast option to set multicast ttl
+ */
+ if (ttl > 0 && ttl != inter->last_ttl) {
+
/*
- * for the moment we use the bcast option to set multicast ttl
- */
- if (ttl > 0 && ttl != inter->last_ttl) {
+ * set the multicast ttl for outgoing packets
+ */
+ int rtc;
+
+ switch (inter->sin.ss_family) {
+
+ case AF_INET :
+ {
+ u_char mttl = (u_char) ttl;
- /*
- * set the multicast ttl for outgoing packets
- */
- if (setsockopt(inter->fd, IPPROTO_IP, IP_MULTICAST_TTL,
- (char *) &ttl, sizeof(ttl)) != 0) {
- netsyslog(LOG_ERR, "setsockopt IP_MULTICAST_TTL fails on address %s: %m",
- stoa(&inter->sin));
- }
- else
- inter->last_ttl = ttl;
+ rtc = setsockopt(inter->fd, IPPROTO_IP, IP_MULTICAST_TTL,
+ (const void *) &mttl, sizeof(mttl));
+ break;
}
- break;
-
-#ifdef HAVE_IPV6
- case AF_INET6 :
+
+#ifdef INCLUDE_IPV6_SUPPORT
+ case AF_INET6 :
+ {
+ u_int ittl = (u_char) ttl;
- /*
- * for the moment we use the bcast option to set
- * multicast max hops
- */
- if (ttl > 0 && ttl != inter->last_ttl) {
-
- /*
- * set the multicast ttl for outgoing packets
- */
- if (setsockopt(inter->fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS,
- &ttl, sizeof(ttl)) == -1)
- netsyslog(LOG_ERR, "setsockopt IP_MULTICAST_TTL fails on address %s: %m",
- stoa(&inter->sin));
- else
- inter->last_ttl = ttl;
- }
- break;
-#endif /* HAVE_IPV6 */
-
- default :
- exit(1);
+ rtc = setsockopt(inter->fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS,
+ (const void *) &ittl, sizeof(ittl));
+ break;
+ }
+#endif /* INCLUDE_IPV6_SUPPORT */
+ default: /* just NOP if not supported */
+ rtc = 0;
+ break;
+ }
+
+ if (rtc != 0) {
+ netsyslog(LOG_ERR, "setsockopt IP_MULTICAST_TTL/IPV6_MULTICAST_HOPS fails on address %s: %m",
+ stoa(&inter->sin));
+ }
+ else
+ inter->last_ttl = ttl;
}
-
#endif /* MCAST */
for (slot = ERRORCACHESIZE; --slot >= 0; )
@@ -1432,14 +2609,13 @@ sendpkt(
badaddrs[slot].addr.s_addr == ((struct sockaddr_in*)dest)->sin_addr.s_addr)
break;
}
-#ifdef HAVE_IPV6
+#ifdef INCLUDE_IPV6_SUPPORT
else if (dest->ss_family == AF_INET6) {
if (badaddrs6[slot].port == ((struct sockaddr_in6*)dest)->sin6_port &&
badaddrs6[slot].addr.s6_addr == ((struct sockaddr_in6*)dest)->sin6_addr.s6_addr)
break;
}
-#endif /* HAVE_IPV6 */
- else exit(1); /* address family not supported yet */
+#endif /* INCLUDE_IPV6_SUPPORT */
#if defined(HAVE_IO_COMPLETION_PORT)
err = io_completion_port_sendto(inter, pkt, len, dest);
@@ -1479,7 +2655,7 @@ sendpkt(
}
break;
-#ifdef HAVE_IPV6
+#ifdef INCLUDE_IPV6_SUPPORT
case AF_INET6 :
for (slot = ERRORCACHESIZE; --slot >= 0; )
@@ -1490,13 +2666,13 @@ sendpkt(
break;
}
break;
-#endif /* HAVE_IPV6 */
-
- default :
- exit(1);
+#endif /* INCLUDE_IPV6_SUPPORT */
+ default: /* don't care if not supported */
+ break;
}
- netsyslog(LOG_ERR, "sendto(%s): %m", stoa(dest));
+ netsyslog(LOG_ERR, "sendto(%s) (fd=%d): %m",
+ stoa(dest), inter->fd);
}
}
else
@@ -1513,11 +2689,13 @@ sendpkt(
case AF_INET :
badaddrs[slot].port = 0;
break;
-#ifdef HAVE_IPV6
+#ifdef INCLUDE_IPV6_SUPPORT
case AF_INET6 :
badaddrs6[slot].port = 0;
break;
-#endif /* HAVE_IPV6 */
+#endif /* INCLUDE_IPV6_SUPPORT */
+ default: /* don't care if not supported */
+ break;
}
}
}
@@ -1550,363 +2728,506 @@ fdbits(
}
/*
- * input_handler - receive packets asynchronously
+ * Routine to read the refclock packets for a specific interface
+ * Return the number of bytes read. That way we know if we should
+ * read it again or go on to the next one if no bytes returned
*/
-void
-input_handler(
- l_fp *cts
- )
+static inline int
+read_refclock_packet(SOCKET fd, struct refclockio *rp, l_fp ts)
{
- register int i, n;
+ int i;
+ int buflen;
register struct recvbuf *rb;
- register int doing;
- register SOCKET fd;
- struct timeval tvzero;
- int fromlen;
- l_fp ts; /* Timestamp at BOselect() gob */
- l_fp ts_e; /* Timestamp at EOselect() gob */
- fd_set fds;
- int select_count = 0;
- static int handler_count = 0;
- ++handler_count;
- if (handler_count != 1)
- msyslog(LOG_ERR, "input_handler: handler_count is %d!", handler_count);
- handler_calls++;
- ts = *cts;
+ rb = get_free_recv_buffer();
- for (;;)
+ if (rb == NULL)
{
/*
- * Do a poll to see who has data
+ * No buffer space available - just drop the packet
*/
+ char buf[RX_BUFF_SIZE];
+
+ buflen = read(fd, buf, sizeof buf);
+ packets_dropped++;
+ return (buflen);
+ }
- fds = activefds;
- tvzero.tv_sec = tvzero.tv_usec = 0;
+ i = (rp->datalen == 0
+ || rp->datalen > sizeof(rb->recv_space))
+ ? sizeof(rb->recv_space) : rp->datalen;
+ buflen = read(fd, (char *)&rb->recv_space, (unsigned)i);
+ if (buflen < 0)
+ {
+ if (errno != EINTR && errno != EAGAIN) {
+ netsyslog(LOG_ERR, "clock read fd %d: %m", fd);
+ }
+ freerecvbuf(rb);
+ return (buflen);
+ }
+
+ /*
+ * Got one. Mark how and when it got here,
+ * put it on the full list and do bookkeeping.
+ */
+ rb->recv_length = buflen;
+ rb->recv_srcclock = rp->srcclock;
+ rb->dstadr = 0;
+ rb->fd = fd;
+ rb->recv_time = ts;
+ rb->receiver = rp->clock_recv;
+
+ if (rp->io_input)
+ {
/*
- * If we have something to do, freeze a timestamp.
- * See below for the other cases (nothing (left) to do or error)
+ * have direct input routine for refclocks
*/
- while (0 < (n = select(maxactivefd+1, &fds, (fd_set *)0, (fd_set *)0, &tvzero)))
+ if (rp->io_input(rb) == 0)
{
- ++select_count;
- ++handler_pkts;
-
-#ifdef REFCLOCK
/*
- * Check out the reference clocks first, if any
+ * data was consumed - nothing to pass up
+ * into block input machine
*/
- if (refio != 0)
- {
- register struct refclockio *rp;
+ freerecvbuf(rb);
+ return (buflen);
+ }
+ }
+
+ add_full_recv_buffer(rb);
- for (rp = refio; rp != 0 && n > 0; rp = rp->next)
- {
- fd = rp->fd;
- if (FD_ISSET(fd, &fds))
- {
- n--;
- if (free_recvbuffs() == 0)
- {
- char buf[RX_BUFF_SIZE];
-
- (void) read(fd, buf, sizeof buf);
- packets_dropped++;
- goto select_again;
- }
-
- rb = get_free_recv_buffer();
-
- i = (rp->datalen == 0
- || rp->datalen > sizeof(rb->recv_space))
- ? sizeof(rb->recv_space) : rp->datalen;
- rb->recv_length =
- read(fd, (char *)&rb->recv_space, (unsigned)i);
-
- if (rb->recv_length == -1)
- {
- netsyslog(LOG_ERR, "clock read fd %d: %m", fd);
- freerecvbuf(rb);
- goto select_again;
- }
+ rp->recvcount++;
+ packets_received++;
+ return (buflen);
+}
- /*
- * Got one. Mark how
- * and when it got here,
- * put it on the full
- * list and do
- * bookkeeping.
- */
- rb->recv_srcclock = rp->srcclock;
- rb->dstadr = 0;
- rb->fd = fd;
- rb->recv_time = ts;
- rb->receiver = rp->clock_recv;
-
- if (rp->io_input)
- {
- /*
- * have direct
- * input routine
- * for refclocks
- */
- if (rp->io_input(rb) == 0)
- {
- /*
- * data
- * was
- * consumed
- * -
- * nothing
- * to
- * pass
- * up
- * into
- * block
- * input
- * machine
- */
- freerecvbuf(rb);
-#if 1
- goto select_again;
-#else
- continue;
+#ifdef HAVE_TIMESTAMP
+/*
+ * extract timestamps from control message buffer
+ */
+static l_fp
+ fetch_timestamp(struct recvbuf *rb, struct msghdr *msghdr, l_fp ts)
+{
+#ifdef USE_TIMESTAMP_CMSG
+ struct cmsghdr *cmsghdr;
+
+ cmsghdr = CMSG_FIRSTHDR(msghdr);
+ while (cmsghdr != NULL) {
+ switch (cmsghdr->cmsg_type)
+ {
+ case SCM_TIMESTAMP:
+ {
+ struct timeval *tvp = (struct timeval *)CMSG_DATA(cmsghdr);
+ double dtemp;
+ l_fp nts;
+ DPRINTF(4, ("fetch_timestamp: system network time stamp: %ld.%06ld\n", tvp->tv_sec, tvp->tv_usec));
+ nts.l_i = tvp->tv_sec + JAN_1970;
+ dtemp = tvp->tv_usec / 1e6;
+
+ /* fuzz lower bits not covered by precision */
+ if (sys_precision != 0)
+ dtemp += (ntp_random() / FRAC - .5) / (1 <<
+ -sys_precision);
+
+ nts.l_uf = (u_int32)(dtemp*FRAC);
+#ifdef DEBUG_TIMING
+ {
+ l_fp dts = ts;
+ L_SUB(&dts, &nts);
+ collect_timing(rb, "input processing delay", 1, &dts);
+ DPRINTF(4, ("fetch_timestamp: timestamp delta: %s (incl. prec fuzz)\n", lfptoa(&dts, 9)));
+ }
+#endif
+ ts = nts; /* network time stamp */
+ break;
+ }
+ default:
+ DPRINTF(4, ("fetch_timestamp: skipping control message 0x%x\n", cmsghdr->cmsg_type));
+ break;
+ }
+ cmsghdr = CMSG_NXTHDR(msghdr, cmsghdr);
+ }
+#endif
+ return ts;
+}
#endif
- }
- }
- add_full_recv_buffer(rb);
+/*
+ * Routine to read the network NTP packets for a specific interface
+ * Return the number of bytes read. That way we know if we should
+ * read it again or go on to the next one if no bytes returned
+ */
+static inline int
+read_network_packet(SOCKET fd, struct interface *itf, l_fp ts)
+{
+ GETSOCKNAME_SOCKLEN_TYPE fromlen;
+ int buflen;
+ register struct recvbuf *rb;
+#ifdef HAVE_TIMESTAMP
+ struct msghdr msghdr;
+ struct iovec iovec;
+ char control[TIMESTAMP_CTLMSGBUF_SIZE]; /* pick up control messages */
+#endif
- rp->recvcount++;
- packets_received++;
- }
- }
- }
-#endif /* REFCLOCK */
+ /*
+ * Get a buffer and read the frame. If we
+ * haven't got a buffer, or this is received
+ * on a disallowed socket, just dump the
+ * packet.
+ */
- /*
- * Loop through the interfaces looking for data
- * to read.
- */
- for (i = ninterfaces - 1; (i >= 0) && (n > 0); i--)
- {
- for (doing = 0; (doing < 2) && (n > 0); doing++)
- {
- if (doing == 0)
- {
- fd = inter_list[i].fd;
- }
- else
- {
- if (!(inter_list[i].flags & INT_BCASTOPEN))
- break;
- fd = inter_list[i].bfd;
- }
- if (fd < 0) continue;
- if (FD_ISSET(fd, &fds))
- {
- n--;
+ rb = get_free_recv_buffer();
- /*
- * Get a buffer and read
- * the frame. If we
- * haven't got a buffer,
- * or this is received
- * on the wild card
- * socket, just dump the
- * packet.
- */
- if (
-#ifdef UDP_WILDCARD_DELIVERY
- /*
- * these guys manage to put properly addressed
- * packets into the wildcard queue
- */
- (free_recvbuffs() == 0)
-#else
- ((i == wildipv4) || (i == wildipv6)||
- (free_recvbuffs() == 0))
-#endif
- )
+ if (rb == NULL || itf->ignore_packets == ISC_TRUE)
{
char buf[RX_BUFF_SIZE];
struct sockaddr_storage from;
-
- fromlen = sizeof from;
- (void) recvfrom(fd, buf, sizeof(buf), 0, (struct sockaddr*)&from, &fromlen);
-#ifdef DEBUG
- if (debug)
- printf("%s on %d(%lu) fd=%d from %s\n",
- (i) ? "drop" : "ignore",
- i, free_recvbuffs(), fd,
- stoa(&from));
-#endif
- if (i == wildipv4 || i == wildipv6)
- packets_ignored++;
+ if (rb != NULL)
+ freerecvbuf(rb);
+
+ fromlen = sizeof(from);
+ buflen = recvfrom(fd, buf, sizeof(buf), 0,
+ (struct sockaddr*)&from, &fromlen);
+ DPRINTF(4, ("%s on (%lu) fd=%d from %s\n",
+ (itf->ignore_packets == ISC_TRUE) ? "ignore" : "drop",
+ free_recvbuffs(), fd,
+ stoa(&from)));
+ if (itf->ignore_packets == ISC_TRUE)
+ packets_ignored++;
else
- packets_dropped++;
- goto select_again;
+ packets_dropped++;
+ return (buflen);
}
- rb = get_free_recv_buffer();
-
fromlen = sizeof(struct sockaddr_storage);
+
+#ifndef HAVE_TIMESTAMP
rb->recv_length = recvfrom(fd,
- (char *)&rb->recv_space,
- sizeof(rb->recv_space), 0,
- (struct sockaddr *)&rb->recv_srcadr,
- &fromlen);
- if (rb->recv_length == 0
-#ifdef EWOULDBLOCK
- || errno==EWOULDBLOCK
+ (char *)&rb->recv_space,
+ sizeof(rb->recv_space), 0,
+ (struct sockaddr *)&rb->recv_srcadr,
+ &fromlen);
+#else
+ iovec.iov_base = (void *)&rb->recv_space;
+ iovec.iov_len = sizeof(rb->recv_space);
+ msghdr.msg_name = (void *)&rb->recv_srcadr;
+ msghdr.msg_namelen = sizeof(rb->recv_srcadr);
+ msghdr.msg_iov = &iovec;
+ msghdr.msg_iovlen = 1;
+ msghdr.msg_control = (void *)&control;
+ msghdr.msg_controllen = sizeof(control);
+ msghdr.msg_flags = 0;
+ rb->recv_length = recvmsg(fd, &msghdr, 0);
#endif
+
+ buflen = rb->recv_length;
+
+ if (buflen == 0 || (buflen == -1 &&
+ (errno==EWOULDBLOCK
#ifdef EAGAIN
- || errno==EAGAIN
+ || errno==EAGAIN
#endif
- ) {
+ ))) {
freerecvbuf(rb);
- continue;
+ return (buflen);
}
- else if (rb->recv_length < 0)
+ else if (buflen < 0)
{
netsyslog(LOG_ERR, "recvfrom(%s) fd=%d: %m",
- stoa(&rb->recv_srcadr), fd);
-#ifdef DEBUG
- if (debug)
- printf("input_handler: fd=%d dropped (bad recvfrom)\n", fd);
-#endif
+ stoa(&rb->recv_srcadr), fd);
+ DPRINTF(5, ("read_network_packet: fd=%d dropped (bad recvfrom)\n", fd));
freerecvbuf(rb);
- continue;
+ return (buflen);
}
+
#ifdef DEBUG
if (debug > 2) {
if(rb->recv_srcadr.ss_family == AF_INET)
- printf("input_handler: if=%d fd=%d length %d from %08lx %s\n",
- i, fd, rb->recv_length,
+ printf("read_network_packet: fd=%d length %d from %08lx %s\n",
+ fd, buflen,
(u_long)ntohl(((struct sockaddr_in*)&rb->recv_srcadr)->sin_addr.s_addr) &
0x00000000ffffffff,
- stoa(&rb->recv_srcadr));
+ stoa(&rb->recv_srcadr));
else
- printf("input_handler: if=%d fd=%d length %d from %s\n",
- i, fd, rb->recv_length,
+ printf("read_network_packet: fd=%d length %d from %s\n",
+ fd, buflen,
stoa(&rb->recv_srcadr));
- }
+ }
#endif
/*
* Got one. Mark how and when it got here,
* put it on the full list and do bookkeeping.
*/
- rb->dstadr = &inter_list[i];
+ rb->dstadr = itf;
rb->fd = fd;
+#ifdef HAVE_TIMESTAMP
+ ts = fetch_timestamp(rb, &msghdr, ts); /* pick up a network time stamp if possible */
+#endif
rb->recv_time = ts;
rb->receiver = receive;
add_full_recv_buffer(rb);
- inter_list[i].received++;
+ itf->received++;
packets_received++;
- goto select_again;
- }
- /* Check more interfaces */
- }
- }
- select_again:;
- /*
- * Done everything from that select. Poll again.
- */
- }
+ return (buflen);
+}
+
+/*
+ * input_handler - receive packets asynchronously
+ */
+void
+input_handler(
+ l_fp *cts
+ )
+{
+
+ int buflen;
+ int n;
+ int doing;
+ SOCKET fd;
+ struct timeval tvzero;
+ l_fp ts; /* Timestamp at BOselect() gob */
+#ifdef DEBUG_TIMING
+ l_fp ts_e; /* Timestamp at EOselect() gob */
+#endif
+ fd_set fds;
+ int select_count = 0;
+ struct interface *interface;
+#if defined(HAS_ROUTING_SOCKET)
+ struct asyncio_reader *asyncio_reader;
+#endif
+
+ handler_calls++;
+
+ /*
+ * If we have something to do, freeze a timestamp.
+ * See below for the other cases (nothing (left) to do or error)
+ */
+ ts = *cts;
+
+ /*
+ * Do a poll to see who has data
+ */
+
+ fds = activefds;
+ tvzero.tv_sec = tvzero.tv_usec = 0;
+ n = select(maxactivefd+1, &fds, (fd_set *)0, (fd_set *)0, &tvzero);
+
+ /*
+ * If there are no packets waiting just return
+ */
+ if (n < 0)
+ {
+ int err = errno;
/*
- * If nothing more to do, try again.
- * If nothing to do, just return.
- * If an error occurred, complain and return.
+ * extended FAU debugging output
*/
- if (n == 0)
+ if (err != EINTR)
+ netsyslog(LOG_ERR,
+ "select(%d, %s, 0L, 0L, &0.0) error: %m",
+ maxactivefd+1,
+ fdbits(maxactivefd, &activefds));
+ if (err == EBADF) {
+ int j, b;
+ fds = activefds;
+ for (j = 0; j <= maxactivefd; j++)
+ if ((FD_ISSET(j, &fds) && (read(j, &b, 0) == -1)))
+ netsyslog(LOG_ERR, "Bad file descriptor %d", j);
+ }
+ return;
+ }
+ else if (n == 0)
+ return;
+
+ ++handler_pkts;
+
+#ifdef REFCLOCK
+ /*
+ * Check out the reference clocks first, if any
+ */
+
+ if (refio != NULL)
+ {
+ register struct refclockio *rp;
+
+ for (rp = refio; rp != NULL; rp = rp->next)
{
- if (select_count == 0) /* We really had nothing to do */
+ fd = rp->fd;
+
+ if (FD_ISSET(fd, &fds))
{
- if (debug)
- netsyslog(LOG_DEBUG, "input_handler: select() returned 0");
- --handler_count;
- return;
- }
- /* We've done our work */
- get_systime(&ts_e);
- /*
- * (ts_e - ts) is the amount of time we spent
- * processing this gob of file descriptors. Log
- * it.
- */
- L_SUB(&ts_e, &ts);
- if (debug > 3)
- netsyslog(LOG_INFO, "input_handler: Processed a gob of fd's in %s msec", lfptoms(&ts_e, 6));
+ do {
+ ++select_count;
+ buflen = read_refclock_packet(fd, rp, ts);
+ } while (buflen > 0);
- /* just bail. */
- --handler_count;
- return;
- }
- else if (n == -1)
- {
- int err = errno;
+ } /* End if (FD_ISSET(fd, &fds)) */
+ } /* End for (rp = refio; rp != 0 && n > 0; rp = rp->next) */
+ } /* End if (refio != 0) */
- /*
- * extended FAU debugging output
- */
- if (err != EINTR)
- netsyslog(LOG_ERR,
- "select(%d, %s, 0L, 0L, &0.0) error: %m",
- maxactivefd+1,
- fdbits(maxactivefd, &activefds));
- if (err == EBADF) {
- int j, b;
-
- fds = activefds;
- for (j = 0; j <= maxactivefd; j++)
- if (
- (FD_ISSET(j, &fds) && (read(j, &b, 0) == -1))
- )
- netsyslog(LOG_ERR, "Bad file descriptor %d", j);
+#endif /* REFCLOCK */
+
+ /*
+ * Loop through the interfaces looking for data to read.
+ */
+ for (interface = ISC_LIST_TAIL(inter_list);
+ interface != NULL;
+ interface = ISC_LIST_PREV(interface, link))
+ {
+ for (doing = 0; (doing < 2); doing++)
+ {
+ if (doing == 0)
+ {
+ fd = interface->fd;
}
- --handler_count;
- return;
+ else
+ {
+ if (!(interface->flags & INT_BCASTOPEN))
+ break;
+ fd = interface->bfd;
+ }
+ if (fd < 0) continue;
+ if (FD_ISSET(fd, &fds))
+ {
+ do {
+ ++select_count;
+ buflen = read_network_packet(fd, interface, ts);
+ } while (buflen > 0);
+ }
+ /* Check more interfaces */
}
}
- msyslog(LOG_ERR, "input_handler: fell out of infinite for(;;) loop!");
- --handler_count;
+
+#ifdef HAS_ROUTING_SOCKET
+ /*
+ * scan list of asyncio readers - currently only used for routing sockets
+ */
+ asyncio_reader = ISC_LIST_TAIL(asyncio_reader_list);
+
+ while (asyncio_reader != NULL)
+ {
+ struct asyncio_reader *next = ISC_LIST_PREV(asyncio_reader, link);
+ if (FD_ISSET(asyncio_reader->fd, &fds)) {
+ ++select_count;
+ asyncio_reader->receiver(asyncio_reader);
+ }
+ asyncio_reader = next;
+ }
+#endif /* HAS_ROUTING_SOCKET */
+
+ /*
+ * Done everything from that select.
+ */
+
+ /*
+ * If nothing to do, just return.
+ * If an error occurred, complain and return.
+ */
+ if (select_count == 0) /* We really had nothing to do */
+ {
+#ifdef DEBUG
+ if (debug)
+ netsyslog(LOG_DEBUG, "input_handler: select() returned 0");
+#endif
+ return;
+ }
+ /* We've done our work */
+#ifdef DEBUG_TIMING
+ get_systime(&ts_e);
+ /*
+ * (ts_e - ts) is the amount of time we spent
+ * processing this gob of file descriptors. Log
+ * it.
+ */
+ L_SUB(&ts_e, &ts);
+ collect_timing(NULL, "input handler", 1, &ts_e);
+ if (debug > 3)
+ netsyslog(LOG_INFO, "input_handler: Processed a gob of fd's in %s msec", lfptoms(&ts_e, 6));
+#endif
+ /* just bail. */
return;
}
#endif
+
/*
- * findinterface - find interface corresponding to address
+ * findinterface - find local interface corresponding to address
*/
struct interface *
findinterface(
struct sockaddr_storage *addr
)
{
+ struct interface *interface;
+
+ interface = findlocalinterface(addr, INT_WILDCARD);
+
+ if (interface == NULL)
+ {
+ DPRINTF(4, ("Found no interface for address %s - returning wildcard\n",
+ stoa(addr)));
+
+ return (ANY_INTERFACE_CHOOSE(addr));
+ }
+ else
+ {
+ DPRINTF(4, ("Found interface #%d %s for address %s\n",
+ interface->ifnum, interface->name, stoa(addr)));
+
+ return (interface);
+ }
+}
+
+/*
+ * findlocalinterface - find local interface index corresponding to address
+ *
+ * This code attempts to find the local sending address for an outgoing
+ * address by connecting a new socket to destinationaddress:NTP_PORT
+ * and reading the sockname of the resulting connect.
+ * the complicated sequence simulates the routing table lookup
+ * for to first hop without duplicating any of the routing logic into
+ * ntpd. preferably we would have used an API call - but its not there -
+ * so this is the best we can do here short of duplicating to entire routing
+ * logic in ntpd which would be a silly and really unportable thing to do.
+ *
+ */
+static struct interface *
+findlocalinterface(
+ struct sockaddr_storage *addr,
+ int flags
+ )
+{
SOCKET s;
- int rtn, i;
+ int rtn;
struct sockaddr_storage saddr;
- int saddrlen = SOCKLEN(addr);
- /*
- * This is considerably hoke. We open a socket, connect to it
- * and slap a getsockname() on it. If anything breaks, as it
- * probably will in some j-random knockoff, we just return the
- * wildcard interface.
- */
+ GETSOCKNAME_SOCKLEN_TYPE saddrlen = SOCKLEN(addr);
+ struct interface *iface;
+
+ DPRINTF(4, ("Finding interface for addr %s in list of addresses\n",
+ stoa(addr));)
+
memset(&saddr, 0, sizeof(saddr));
saddr.ss_family = addr->ss_family;
- if(addr->ss_family == AF_INET)
+ if(addr->ss_family == AF_INET) {
memcpy(&((struct sockaddr_in*)&saddr)->sin_addr, &((struct sockaddr_in*)addr)->sin_addr, sizeof(struct in_addr));
- else if(addr->ss_family == AF_INET6)
- memcpy(&((struct sockaddr_in6*)&saddr)->sin6_addr, &((struct sockaddr_in6*)addr)->sin6_addr, sizeof(struct in6_addr));
- ((struct sockaddr_in*)&saddr)->sin_port = htons(2000);
+ ((struct sockaddr_in*)&saddr)->sin_port = htons(NTP_PORT);
+ }
+#ifdef INCLUDE_IPV6_SUPPORT
+ else if(addr->ss_family == AF_INET6) {
+ memcpy(&((struct sockaddr_in6*)&saddr)->sin6_addr, &((struct sockaddr_in6*)addr)->sin6_addr, sizeof(struct in6_addr));
+ ((struct sockaddr_in6*)&saddr)->sin6_port = htons(NTP_PORT);
+# ifdef ISC_PLATFORM_HAVESCOPEID
+ ((struct sockaddr_in6*)&saddr)->sin6_scope_id = ((struct sockaddr_in6*)addr)->sin6_scope_id;
+# endif
+ }
+#endif
+
s = socket(addr->ss_family, SOCK_DGRAM, 0);
if (s == INVALID_SOCKET)
- return ANY_INTERFACE_CHOOSE(addr);
+ return NULL;
rtn = connect(s, (struct sockaddr *)&saddr, SOCKLEN(&saddr));
#ifndef SYS_WINNT
@@ -1916,7 +3237,7 @@ findinterface(
#endif
{
closesocket(s);
- return ANY_INTERFACE_CHOOSE(addr);
+ return NULL;
}
rtn = getsockname(s, (struct sockaddr *)&saddr, &saddrlen);
@@ -1926,21 +3247,132 @@ findinterface(
#else
if (rtn == SOCKET_ERROR)
#endif
- return ANY_INTERFACE_CHOOSE(addr);
+ return NULL;
- for (i = 0; i < ninterfaces; i++) {
- /*
- * First look if is the the correct family
- */
- if(inter_list[i].sin.ss_family != saddr.ss_family)
- continue;
- /*
- * We match the unicast address only.
- */
- if (SOCKCMP(&inter_list[i].sin, &saddr))
- return (&inter_list[i]);
+ DPRINTF(4, ("findlocalinterface: kernel maps %s to %s\n", stoa(addr), stoa(&saddr)));
+
+ iface = getinterface(&saddr, flags);
+
+ /* Don't both with ignore interfaces */
+ if (iface != NULL && iface->ignore_packets == ISC_TRUE)
+ {
+ return NULL;
+ }
+ else
+ {
+ return iface;
+ }
+}
+
+/*
+ * fetch an interface structure the matches the
+ * address is has the given flags not set
+ */
+static struct interface *
+getinterface(struct sockaddr_storage *addr, int flags)
+{
+ struct interface *interface = find_addr_in_list(addr);
+
+ if (interface != NULL && interface->flags & flags)
+ {
+ return NULL;
+ }
+ else
+ {
+ return interface;
+ }
+}
+
+/*
+ * findlocalcastinterface - find local *cast interface index corresponding to address
+ * depending on the flags passed
+ */
+static struct interface *
+findlocalcastinterface(
+ struct sockaddr_storage *addr, int flags
+ )
+{
+ struct interface *interface;
+ struct interface *nif = NULL;
+#ifdef INCLUDE_IPV6_MULTICAST_SUPPORT
+ isc_boolean_t want_linklocal;
+#endif
+
+ /*
+ * see how kernel maps the mcast address
+ */
+ nif = findlocalinterface(addr, 0);
+
+ if (nif) {
+ DPRINTF(2, ("findlocalcastinterface: kernel recommends interface #%d %s\n", nif->ifnum, nif->name));
+ return nif;
+ }
+
+#ifdef INCLUDE_IPV6_MULTICAST_SUPPORT
+ want_linklocal = ISC_FALSE;
+ if (addr_ismulticast(addr) && flags == INT_MULTICAST)
+ {
+ if (IN6_IS_ADDR_MC_LINKLOCAL(&((struct sockaddr_in6*)addr)->sin6_addr))
+ {
+ want_linklocal = ISC_TRUE;
+ }
+ else if (IN6_IS_ADDR_MC_SITELOCAL(&((struct sockaddr_in6*)addr)->sin6_addr))
+ {
+ want_linklocal = ISC_TRUE;
+ }
+ }
+#endif
+
+ for (interface = ISC_LIST_HEAD(inter_list);
+ interface != NULL;
+ interface = ISC_LIST_NEXT(interface, link))
+ {
+ /* use only allowed addresses */
+ if (interface->ignore_packets == ISC_TRUE)
+ continue;
+
+ /* Skip the loopback and wildcard addresses */
+ if (interface->flags & (INT_LOOPBACK|INT_WILDCARD))
+ continue;
+
+ /* Skip if different family */
+ if(interface->sin.ss_family != addr->ss_family)
+ continue;
+
+ /* Is this it one of these based on flags? */
+ if (!(interface->flags & flags))
+ continue;
+
+ /* for IPv6 multicast check the address for linklocal */
+#ifdef INCLUDE_IPV6_MULTICAST_SUPPORT
+ if (flags == INT_MULTICAST && interface->sin.ss_family == AF_INET6 &&
+ (IN6_IS_ADDR_LINKLOCAL(&((struct sockaddr_in6*)&interface->sin)->sin6_addr))
+ && want_linklocal == ISC_TRUE)
+ {
+ nif = interface;
+ break;
+ }
+ /* If we want a linklocal address and this isn't it, skip */\
+ if (want_linklocal == ISC_TRUE)
+ continue;
+#endif
+ /* Otherwise just look for the flag */
+ if((interface->flags & flags))
+ {
+ nif = interface;
+ break;
+ }
}
- return ANY_INTERFACE_CHOOSE(addr);
+#ifdef DEBUG
+ if (debug > 2)
+ {
+ if (nif)
+ printf("findlocalcastinterface: found interface #%d %s\n", nif->ifnum, nif->name);
+ else
+ printf("findlocalcastinterface: no interface found for %s flags 0x%x\n", stoa(addr), flags);
+ }
+#endif
+ return (nif);
}
/*
@@ -1952,43 +3384,94 @@ findbcastinter(
)
{
#if !defined(MPE) && (defined(SIOCGIFCONF) || defined(SYS_WINNT))
- register int i;
+ struct interface *interface;
+
- i = find_addr_in_list(addr);
- if(i >= 0)
- return (&inter_list[i]);
+ DPRINTF(4, ("Finding broadcast/multicast interface for addr %s in list of addresses\n",
+ stoa(addr)));
- for (i = 0; i < ninterfaces; i++) {
+ interface = findlocalinterface(addr, INT_LOOPBACK|INT_WILDCARD);
+
+ if (interface != NULL)
+ {
+ DPRINTF(4, ("Found bcast-/mcast- interface index #%d %s\n", interface->ifnum, interface->name));
+ return interface;
+ }
+
+ /* plan B - try to find something reasonable in our lists in case kernel lookup doesn't help */
+
+ for (interface = ISC_LIST_HEAD(inter_list);
+ interface != NULL;
+ interface = ISC_LIST_NEXT(interface, link))
+ {
+ if (interface->flags & INT_WILDCARD)
+ continue;
+
+ /* Don't bother with ignored interfaces */
+ if (interface->ignore_packets == ISC_TRUE)
+ continue;
+
/*
- * First look if this is the correct family
- */
- if(inter_list[i].sin.ss_family != addr->ss_family)
+ * First look if this is the correct family
+ */
+ if(interface->sin.ss_family != addr->ss_family)
continue;
+
+ /* Skip the loopback addresses */
+ if (interface->flags & INT_LOOPBACK)
+ continue;
+
+ /*
+ * If we are looking to match a multicast address grab it.
+ */
+ if (addr_ismulticast(addr) == ISC_TRUE && interface->flags & INT_MULTICAST)
+ {
+#ifdef INCLUDE_IPV6_SUPPORT
+ if(addr->ss_family == AF_INET6) {
+ /* Only use link-local address for link-scope mcast */
+ if(IN6_IS_ADDR_MC_LINKLOCAL(&((struct sockaddr_in6*)addr)->sin6_addr) &&
+ !IN6_IS_ADDR_LINKLOCAL(&((struct sockaddr_in6*)&interface->sin)->sin6_addr)) {
+ continue;
+ }
+ }
+#endif
+ break;
+ }
+
/*
* We match only those interfaces marked as
* broadcastable and either the explicit broadcast
* address or the network portion of the IP address.
* Sloppy.
*/
- if (!(inter_list[i].flags & INT_BROADCAST))
- continue;
if(addr->ss_family == AF_INET) {
- if (SOCKCMP(&inter_list[i].bcast, addr))
- return (&inter_list[i]);
- if ((NSRCADR(&inter_list[i].sin) &
- NSRCADR(&inter_list[i].mask)) == (NSRCADR(addr) &
- NSRCADR(&inter_list[i].mask)))
- return (&inter_list[i]);
+ if (SOCKCMP(&interface->bcast, addr)) {
+ break;
+ }
+ if ((NSRCADR(&interface->sin) &
+ NSRCADR(&interface->mask)) == (NSRCADR(addr) &
+ NSRCADR(&interface->mask)))
+ break;
}
+#ifdef INCLUDE_IPV6_SUPPORT
else if(addr->ss_family == AF_INET6) {
- if (SOCKCMP(&inter_list[i].bcast, addr))
- return (&inter_list[i]);
- if (SOCKCMP(netof(&inter_list[i].sin), netof(addr)))
- return (&inter_list[i]);
- }
+ if (SOCKCMP(&interface->bcast, addr)) {
+ break;
+ }
+ if (SOCKCMP(netof(&interface->sin), netof(addr))) {
+ break;
+ }
+ }
+#endif
}
#endif /* SIOCGIFCONF */
- return ANY_INTERFACE_CHOOSE(addr);
+ if (interface == NULL) {
+ DPRINTF(4, ("No bcast interface found for %s\n", stoa(addr)));
+ return ANY_INTERFACE_CHOOSE(addr);
+ } else {
+ DPRINTF(4, ("Found bcast-/mcast- interface index #%d %s\n", interface->ifnum, interface->name));
+ return interface;
+ }
}
@@ -2012,36 +3495,6 @@ io_clr_stats(void)
#ifdef REFCLOCK
/*
- * This is a hack so that I don't have to fool with these ioctls in the
- * pps driver ... we are already non-blocking and turn on SIGIO thru
- * another mechanisim
- */
-int
-io_addclock_simple(
- struct refclockio *rio
- )
-{
- BLOCKIO();
- /*
- * Stuff the I/O structure in the list and mark the descriptor
- * in use. There is a harmless (I hope) race condition here.
- */
- rio->next = refio;
- refio = rio;
-
- /*
- * I/O Completion Ports don't care about select and fd_set
- */
-#ifndef HAVE_IO_COMPLETION_PORT
- if (rio->fd > maxactivefd)
- maxactivefd = rio->fd;
- FD_SET(rio->fd, &activefds);
-#endif
- UNBLOCKIO();
- return 1;
-}
-
-/*
* io_addclock - add a reference clock to the list and arrange that we
* get SIGIO interrupts from it.
*/
@@ -2056,33 +3509,31 @@ io_addclock(
* in use. There is a harmless (I hope) race condition here.
*/
rio->next = refio;
- refio = rio;
# ifdef HAVE_SIGNALED_IO
if (init_clock_sig(rio))
{
- refio = rio->next;
UNBLOCKIO();
return 0;
}
# elif defined(HAVE_IO_COMPLETION_PORT)
if (io_completion_port_add_clock_io(rio))
{
- add_socket_to_list(rio->fd);
- refio = rio->next;
UNBLOCKIO();
return 0;
}
# endif
/*
- * I/O Completion Ports don't care about select and fd_set
+ * enqueue
*/
-#ifndef HAVE_IO_COMPLETION_PORT
- if (rio->fd > maxactivefd)
- maxactivefd = rio->fd;
- FD_SET(rio->fd, &activefds);
-#endif
+ refio = rio;
+
+ /*
+ * register fd
+ */
+ add_fd_to_list(rio->fd, FD_TYPE_FILE);
+
UNBLOCKIO();
return 1;
}
@@ -2095,6 +3546,7 @@ io_closeclock(
struct refclockio *rio
)
{
+ BLOCKIO();
/*
* Remove structure from the list
*/
@@ -2106,20 +3558,15 @@ io_closeclock(
{
register struct refclockio *rp;
- for (rp = refio; rp != 0; rp = rp->next)
+ for (rp = refio; rp != NULL; rp = rp->next)
if (rp->next == rio)
{
rp->next = rio->next;
break;
}
- if (rp == 0)
- {
- /*
- * Internal error. Report it.
- */
- msyslog(LOG_ERR,
- "internal error: refclockio structure not found");
+ if (rp == NULL) {
+ UNBLOCKIO();
return;
}
}
@@ -2127,26 +3574,11 @@ io_closeclock(
/*
* Close the descriptor.
*/
- close_file(rio->fd);
+ close_and_delete_fd_from_list(rio->fd);
+ UNBLOCKIO();
}
#endif /* REFCLOCK */
- /*
- * I/O Completion Ports don't care about select and fd_set
- */
-#ifndef HAVE_IO_COMPLETION_PORT
-void
-kill_asyncio(
- int startfd
- )
-{
- SOCKET i;
-
- BLOCKIO();
- for (i = startfd; i <= maxactivefd; i++)
- (void)close_socket(i);
-}
-#else
/*
* On NT a SOCKET is an unsigned int so we cannot possibly keep it in
* an array. So we use one of the ISC_LIST functions to hold the
@@ -2160,58 +3592,119 @@ kill_asyncio(int startfd)
BLOCKIO();
- lsock = ISC_LIST_HEAD(sockets_list);
+ lsock = ISC_LIST_HEAD(fd_list);
while (lsock != NULL) {
+ /*
+ * careful here - list is being dismantled while
+ * we scan it - setting next here insures that
+ * we are able to correctly scan the list
+ */
next = ISC_LIST_NEXT(lsock, link);
- close_socket(lsock->fd);
+ /*
+ * will remove socket from list
+ */
+ close_and_delete_fd_from_list(lsock->fd);
lsock = next;
}
+ UNBLOCKIO();
}
-#endif
+
/*
* Add and delete functions for the list of open sockets
*/
-void
-add_socket_to_list(SOCKET fd){
- vsock_t *lsock = malloc(sizeof(vsock_t));
+static void
+add_fd_to_list(SOCKET fd, enum desc_type type) {
+ vsock_t *lsock = (vsock_t *)emalloc(sizeof(vsock_t));
lsock->fd = fd;
+ lsock->type = type;
- ISC_LIST_APPEND(sockets_list, lsock, link);
+ ISC_LIST_APPEND(fd_list, lsock, link);
+ /*
+ * I/O Completion Ports don't care about the select and FD_SET
+ */
+#ifndef HAVE_IO_COMPLETION_PORT
+ /*
+ * keep activefds in sync
+ */
+ if (fd > maxactivefd)
+ maxactivefd = fd;
+ FD_SET( (u_int)fd, &activefds);
+#endif
}
-void
-delete_socket_from_list(SOCKET fd) {
+
+static void
+close_and_delete_fd_from_list(SOCKET fd) {
vsock_t *next;
- vsock_t *lsock = ISC_LIST_HEAD(sockets_list);
+ vsock_t *lsock = ISC_LIST_HEAD(fd_list);
while(lsock != NULL) {
next = ISC_LIST_NEXT(lsock, link);
if(lsock->fd == fd) {
- ISC_LIST_DEQUEUE(sockets_list, lsock, link);
+ ISC_LIST_DEQUEUE_TYPE(fd_list, lsock, link, vsock_t);
+
+ switch (lsock->type) {
+ case FD_TYPE_SOCKET:
+#ifdef SYS_WINNT
+ closesocket(lsock->fd);
+ break;
+#endif
+ case FD_TYPE_FILE:
+ (void) close(lsock->fd);
+ break;
+ default:
+ msyslog(LOG_ERR, "internal error - illegal descriptor type %d - EXITING", (int)lsock->type);
+ exit(1);
+ }
+
free(lsock);
+ /*
+ * I/O Completion Ports don't care about select and fd_set
+ */
+#ifndef HAVE_IO_COMPLETION_PORT
+ /*
+ * remove from activefds
+ */
+ FD_CLR( (u_int) fd, &activefds);
+
+ if (fd == maxactivefd) {
+ int i, newmax = 0;
+ for (i = 0; i < maxactivefd; i++)
+ if (FD_ISSET(i, &activefds))
+ newmax = i;
+ maxactivefd = newmax;
+ }
+#endif
break;
}
- else
- lsock = next;
+ lsock = next;
}
}
-void
-add_addr_to_list(struct sockaddr_storage *addr, int if_index){
- remaddr_t *laddr = malloc(sizeof(remaddr_t));
- memcpy(&laddr->addr, addr, sizeof(addr));
- laddr->if_index = if_index;
- ISC_LIST_APPEND(remoteaddr_list, laddr, link);
+static void
+add_addr_to_list(struct sockaddr_storage *addr, struct interface *interface){
#ifdef DEBUG
- if (debug)
- printf("Added addr %s to list of addresses\n",
- stoa(addr));
+ if (find_addr_in_list(addr) == NULL) {
+#endif
+ /* not there yet - add to list */
+ remaddr_t *laddr = (remaddr_t *)emalloc(sizeof(remaddr_t));
+ memcpy(&laddr->addr, addr, sizeof(struct sockaddr_storage));
+ laddr->interface = interface;
+
+ ISC_LIST_APPEND(remoteaddr_list, laddr, link);
+
+ DPRINTF(4, ("Added addr %s to list of addresses\n",
+ stoa(addr)));
+#ifdef DEBUG
+ } else {
+ DPRINTF(4, ("WARNING: Attempt to add duplicate addr %s to address list\n",
+ stoa(addr)));
+ }
#endif
-
-
}
-void
+
+static void
delete_addr_from_list(struct sockaddr_storage *addr) {
remaddr_t *next;
@@ -2220,38 +3713,201 @@ delete_addr_from_list(struct sockaddr_storage *addr) {
while(laddr != NULL) {
next = ISC_LIST_NEXT(laddr, link);
if(SOCKCMP(&laddr->addr, addr)) {
- ISC_LIST_DEQUEUE(remoteaddr_list, laddr, link);
+ ISC_LIST_DEQUEUE_TYPE(remoteaddr_list, laddr, link, remaddr_t);
+ DPRINTF(4, ("Deleted addr %s from list of addresses\n",
+ stoa(addr)));
free(laddr);
break;
}
- else
- laddr = next;
+ laddr = next;
}
-#ifdef DEBUG
- if (debug)
- printf("Deleted addr %s from list of addresses\n",
- stoa(addr));
-#endif
}
-int
+
+static void
+delete_interface_from_list(struct interface *iface) {
+ remaddr_t *next;
+ remaddr_t *laddr = ISC_LIST_HEAD(remoteaddr_list);
+
+ while(laddr != NULL) {
+ next = ISC_LIST_NEXT(laddr, link);
+ if (laddr->interface == iface) {
+ ISC_LIST_DEQUEUE_TYPE(remoteaddr_list, laddr, link, remaddr_t);
+ DPRINTF(4, ("Deleted addr %s for interface #%d %s from list of addresses\n",
+ stoa(&laddr->addr), iface->ifnum, iface->name));
+ free(laddr);
+ }
+ laddr = next;
+ }
+}
+
+static struct interface *
find_addr_in_list(struct sockaddr_storage *addr) {
remaddr_t *next;
remaddr_t *laddr = ISC_LIST_HEAD(remoteaddr_list);
-#ifdef DEBUG
- if (debug)
- printf("Finding addr %s in list of addresses\n",
- stoa(addr));
-#endif
+ DPRINTF(4, ("Searching for addr %s in list of addresses - ",
+ stoa(addr)));
while(laddr != NULL) {
next = ISC_LIST_NEXT(laddr, link);
if(SOCKCMP(&laddr->addr, addr)) {
- return (laddr->if_index);
+ DPRINTF(4, ("FOUND\n"));
+ return laddr->interface;
+ }
+ else
+ laddr = next;
+ }
+ DPRINTF(4, ("NOT FOUND\n"));
+ return NULL; /* Not found */
+}
+
+/*
+ * Find the given address with the associated flag in the list
+ */
+static struct interface *
+find_flagged_addr_in_list(struct sockaddr_storage *addr, int flag) {
+
+ remaddr_t *next;
+ remaddr_t *laddr = ISC_LIST_HEAD(remoteaddr_list);
+ DPRINTF(4, ("Finding addr %s in list of addresses\n",
+ stoa(addr)));
+
+ while(laddr != NULL) {
+ next = ISC_LIST_NEXT(laddr, link);
+ if(SOCKCMP(&laddr->addr, addr) && (laddr->interface->flags & flag)) {
+ return laddr->interface;
break;
}
else
laddr = next;
}
- return (-1); /* Not found */
+ return NULL; /* Not found */
+}
+
+#ifdef HAS_ROUTING_SOCKET
+#include <net/route.h>
+
+#ifndef UPDATE_GRACE
+#define UPDATE_GRACE 2 /* wait UPDATE_GRACE seconds before scanning */
+#endif
+
+static void
+process_routing_msgs(struct asyncio_reader *reader)
+{
+ char buffer[5120];
+ char *p = buffer;
+
+ int cnt;
+
+ if (disable_dynamic_updates) {
+ /*
+ * discard ourselves if we are not need any more
+ * usually happens when running unprivileged
+ */
+ remove_asyncio_reader(reader);
+ delete_asyncio_reader(reader);
+ return;
+ }
+
+ cnt = read(reader->fd, buffer, sizeof(buffer));
+
+ if (cnt < 0) {
+ msyslog(LOG_ERR, "i/o error on routing socket %m - disabling");
+ remove_asyncio_reader(reader);
+ delete_asyncio_reader(reader);
+ return;
+ }
+
+ /*
+ * process routing message
+ */
+ while ((p + sizeof(struct rt_msghdr)) <= (buffer + cnt))
+ {
+ struct rt_msghdr *rtm;
+
+ rtm = (struct rt_msghdr *)p;
+ if (rtm->rtm_version != RTM_VERSION) {
+ msyslog(LOG_ERR, "version mismatch on routing socket %m - disabling");
+ remove_asyncio_reader(reader);
+ delete_asyncio_reader(reader);
+ return;
+ }
+
+ switch (rtm->rtm_type) {
+#ifdef RTM_NEWADDR
+ case RTM_NEWADDR:
+#endif
+#ifdef RTM_DELADDR
+ case RTM_DELADDR:
+#endif
+#ifdef RTM_ADD
+ case RTM_ADD:
+#endif
+#ifdef RTM_DELETE
+ case RTM_DELETE:
+#endif
+#ifdef RTM_REDIRECT
+ case RTM_REDIRECT:
+#endif
+#ifdef RTM_CHANGE
+ case RTM_CHANGE:
+#endif
+#ifdef RTM_LOSING
+ case RTM_LOSING:
+#endif
+#ifdef RTM_IFINFO
+ case RTM_IFINFO:
+#endif
+#ifdef RTM_IFANNOUNCE
+ case RTM_IFANNOUNCE:
+#endif
+ /*
+ * we are keen on new and deleted addresses and if an interface goes up and down or routing changes
+ */
+ DPRINTF(3, ("routing message op = %d: scheduling interface update\n", rtm->rtm_type));
+ timer_interfacetimeout(current_time + UPDATE_GRACE);
+ break;
+ default:
+ /*
+ * the rest doesn't bother us.
+ */
+ DPRINTF(4, ("routing message op = %d: ignored\n", rtm->rtm_type));
+ break;
+ }
+ p += rtm->rtm_msglen;
+ }
+}
+
+/*
+ * set up routing notifications
+ */
+static void
+init_async_notifications()
+{
+ struct asyncio_reader *reader;
+ int fd = socket(PF_ROUTE, SOCK_RAW, 0);
+
+ if (fd >= 0) {
+ fd = move_fd(fd);
+ init_nonblocking_io(fd);
+#if defined(HAVE_SIGNALED_IO)
+ init_socket_sig(fd);
+#endif /* HAVE_SIGNALED_IO */
+
+ reader = new_asyncio_reader();
+
+ reader->fd = fd;
+ reader->receiver = process_routing_msgs;
+
+ add_asyncio_reader(reader, FD_TYPE_SOCKET);
+ msyslog(LOG_INFO, "Listening on routing socket on fd #%d for interface updates", fd);
+ } else {
+ msyslog(LOG_ERR, "unable to open routing socket (%m) - using polled interface update");
+ }
+}
+#else
+static void
+init_async_notifications()
+{
}
+#endif
diff --git a/contrib/ntp/ntpd/ntp_loopfilter.c b/contrib/ntp/ntpd/ntp_loopfilter.c
index 99d1cc4..d0fa466c 100644
--- a/contrib/ntp/ntpd/ntp_loopfilter.c
+++ b/contrib/ntp/ntpd/ntp_loopfilter.c
@@ -38,11 +38,12 @@
#define CLOCK_MINSTEP 900. /* default stepout threshold (s) */
#define CLOCK_PANIC 1000. /* default panic threshold (s) */
#define CLOCK_PHI 15e-6 /* max frequency error (s/s) */
-#define CLOCK_PLL 16. /* PLL loop gain */
-#define CLOCK_FLL 8. /* FLL loop gain */
-#define CLOCK_AVG 4. /* parameter averaging constant */
+#define CLOCK_PLL 16. /* PLL loop gain (log2) */
+#define CLOCK_AVG 8. /* parameter averaging constant */
+#define CLOCK_FLL (NTP_MAXPOLL + CLOCK_AVG) /* FLL loop gain */
#define CLOCK_ALLAN 1500. /* compromise Allan intercept (s) */
#define CLOCK_DAY 86400. /* one day in seconds (s) */
+#define CLOCK_JUNE (CLOCK_DAY * 30) /* June in seconds (s) */
#define CLOCK_LIMIT 30 /* poll-adjust threshold */
#define CLOCK_PGATE 4. /* poll-adjust gate */
#define PPS_MAXAGE 120 /* kernel pps signal timeout (s) */
@@ -52,31 +53,29 @@
* synchronization behavior during initialization and following a
* timewarp.
*
- * State < max > max Comments
+ * State < step > step Comments
* ====================================================
- * NSET FREQ FREQ no ntp.drift
+ * NSET FREQ step, FREQ no ntp.drift
*
- * FSET TSET if (allow) TSET, ntp.drift
- * else FREQ
+ * FSET SYNC step, SYNC ntp.drift
*
- * TSET SYNC FREQ time set
+ * FREQ if (mu < 900) if (mu < 900) set freq
+ * ignore ignore
+ * else else
+ * freq, SYNC freq, step, SYNC
*
- * FREQ SYNC if (mu < 900) FREQ calculate frequency
- * else if (allow) TSET
- * else FREQ
+ * SYNC SYNC if (mu < 900) adjust phase/freq
+ * ignore
+ * else
+ * SPIK
*
- * SYNC SYNC if (mu < 900) SYNC normal state
- * else SPIK
- *
- * SPIK SYNC if (allow) TSET spike detector
- * else FREQ
+ * SPIK SYNC step, SYNC set phase
*/
#define S_NSET 0 /* clock never set */
#define S_FSET 1 /* frequency set from the drift file */
-#define S_TSET 2 /* time set */
+#define S_SPIK 2 /* spike detected */
#define S_FREQ 3 /* frequency mode */
#define S_SYNC 4 /* clock synchronized */
-#define S_SPIK 5 /* spike detected */
/*
* Kernel PLL/PPS state machine. This is used with the kernel PLL
@@ -85,10 +84,18 @@
* If kernel support for the ntp_adjtime() system call is available, the
* ntp_control flag is set. The ntp_enable and kern_enable flags can be
* set at configuration time or run time using ntpdc. If ntp_enable is
- * false, the discipline loop is unlocked and no correctios of any kind
+ * false, the discipline loop is unlocked and no corrections of any kind
* are made. If both ntp_control and kern_enable are set, the kernel
* support is used as described above; if false, the kernel is bypassed
- * entirely and the daemon PLL used instead.
+ * entirely and the daemon discipline used instead.
+ *
+ * There have been three versions of the kernel discipline code. The
+ * first (microkernel) now in Solaris discipilnes the microseconds. The
+ * second and third (nanokernel) disciplines the clock in nanoseconds.
+ * These versions are identifed if the symbol STA_PLL is present in the
+ * header file /usr/include/sys/timex.h. The third and current version
+ * includes TAI offset and is identified by the symbol NTP_API with
+ * value 4.
*
* Each update to a prefer peer sets pps_stratum if it survives the
* intersection algorithm and its time is within range. The PPS time
@@ -118,16 +125,18 @@ double allan_xpt = CLOCK_ALLAN; /* Allan intercept (s) */
/*
* Program variables
*/
-static double clock_offset; /* clock offset adjustment (s) */
-double drift_comp; /* clock frequency (s/s) */
-double clock_stability; /* clock stability (s/s) */
-u_long pps_control; /* last pps sample time */
+static double clock_offset; /* offset (s) */
+double clock_jitter; /* offset jitter (s) */
+double drift_comp; /* frequency (s/s) */
+double clock_stability; /* frequency stability (wander) (s/s) */
+u_long sys_clocktime; /* last system clock update */
+u_long pps_control; /* last pps update */
+u_long sys_tai; /* UTC offset from TAI (s) */
static void rstclock P((int, u_long, double)); /* transition function */
#ifdef KERNEL_PLL
struct timex ntv; /* kernel API parameters */
int pll_status; /* status bits for kernel pll */
-int pll_nano; /* nanosecond kernel switch */
#endif /* KERNEL_PLL */
/*
@@ -145,12 +154,10 @@ int mode_ntpdate = FALSE; /* exit on first clock set */
/*
* Clock state machine variables
*/
-u_char sys_poll = NTP_MINDPOLL; /* system poll interval (log2 s) */
int state; /* clock discipline state */
-int tc_counter; /* hysteresis counter */
-u_long last_time; /* time of last clock update (s) */
-double last_offset; /* last clock offset (s) */
-double sys_jitter; /* system RMS jitter (s) */
+u_char sys_poll = NTP_MINDPOLL; /* time constant/poll (log2 s) */
+int tc_counter; /* jiggle counter */
+double last_offset; /* last offset (s) */
/*
* Huff-n'-puff filter variables
@@ -180,50 +187,61 @@ init_loopfilter(void)
{
/*
* Initialize state variables. Initially, we expect no drift
- * file, so set the state to S_NSET.
+ * file, so set the state to S_NSET. If a drift file is present,
+ * it will be detected later and the state set to S_FSET.
*/
- rstclock(S_NSET, current_time, 0);
+ rstclock(S_NSET, 0, 0);
+ clock_jitter = LOGTOD(sys_precision);
}
/*
- * local_clock - the NTP logical clock loop filter. Returns 1 if the
- * clock was stepped, 0 if it was slewed and -1 if it is hopeless.
+ * local_clock - the NTP logical clock loop filter.
+ *
+ * Return codes:
+ * -1 update ignored: exceeds panic threshold
+ * 0 update ignored: popcorn or exceeds step threshold
+ * 1 clock was slewed
+ * 2 clock was stepped
*
* LOCKCLOCK: The only thing this routine does is set the
* sys_rootdispersion variable equal to the peer dispersion.
*/
int
local_clock(
- struct peer *peer, /* synch source peer structure */
- double fp_offset, /* clock offset (s) */
- double epsil /* jittter (square s*s) */
+ struct peer *peer, /* synch source peer structure */
+ double fp_offset /* clock offset (s) */
)
{
- u_long mu; /* interval since last update (s) */
- double oerror; /* previous error estimate */
- double flladj; /* FLL frequency adjustment (ppm) */
- double plladj; /* PLL frequency adjustment (ppm) */
- double clock_frequency; /* clock frequency adjustment (ppm) */
- double dtemp, etemp; /* double temps */
- int retval; /* return value */
+ int rval; /* return code */
+ u_long mu; /* interval since last update (s) */
+ double flladj; /* FLL frequency adjustment (ppm) */
+ double plladj; /* PLL frequency adjustment (ppm) */
+ double clock_frequency; /* clock frequency adjustment (ppm) */
+ double dtemp, etemp; /* double temps */
+#ifdef OPENSSL
+ u_int32 *tpt;
+ int i;
+ u_int len;
+ long togo;
+#endif /* OPENSSL */
/*
- * If the loop is opened, monitor and record the offsets
- * anyway in order to determine the open-loop response.
+ * If the loop is opened or the NIST LOCKCLOCK is in use,
+ * monitor and record the offsets anyway in order to determine
+ * the open-loop response and then go home.
*/
#ifdef DEBUG
if (debug)
printf(
- "local_clock: assocID %d offset %.9f jitter %.9f state %d\n",
- peer->associd, fp_offset, SQRT(epsil), state);
+ "local_clock: assocID %d offset %.9f freq %.3f state %d\n",
+ peer->associd, fp_offset, drift_comp * 1e6, state);
#endif
#ifdef LOCKCLOCK
- sys_rootdispersion = peer->rootdispersion;
- return (0);
+ return (0);
#else /* LOCKCLOCK */
if (!ntp_enable) {
- record_loop_stats(fp_offset, drift_comp, SQRT(epsil),
+ record_loop_stats(fp_offset, drift_comp, clock_jitter,
clock_stability, sys_poll);
return (0);
}
@@ -234,8 +252,8 @@ local_clock(
* occur. The allow_panic defaults to FALSE, so the first panic
* will exit. It can be set TRUE by a command line option, in
* which case the clock will be set anyway and time marches on.
- * But, allow_panic will be set it FALSE when the update is
- * within the step range; so, subsequent panics will exit.
+ * But, allow_panic will be set FALSE when the update is less
+ * than the step threshold; so, subsequent panics will exit.
*/
if (fabs(fp_offset) > clock_panic && clock_panic > 0 &&
!allow_panic) {
@@ -251,7 +269,8 @@ local_clock(
* threshold, above which the clock will be stepped instead of
* slewed. The value defaults to 128 ms, but can be set to even
* unreasonable values. If set to zero, the clock will never be
- * stepped.
+ * stepped. Note that a slew will persist beyond the life of
+ * this program.
*
* Note that if ntpdate is active, the terminal does not detach,
* so the termination comments print directly to the console.
@@ -268,45 +287,24 @@ local_clock(
fp_offset);
printf("ntpd: time slew %+.6fs\n", fp_offset);
}
- record_loop_stats(fp_offset, drift_comp, SQRT(epsil),
+ record_loop_stats(fp_offset, drift_comp, clock_jitter,
clock_stability, sys_poll);
exit (0);
}
/*
- * If the clock has never been set, set it and initialize the
- * discipline parameters. We then switch to frequency mode to
- * speed the inital convergence process. If lucky, after an hour
- * the ntp.drift file is created and initialized and we don't
- * get here again.
- */
- if (state == S_NSET) {
- if (fabs(fp_offset) > clock_max && clock_max > 0) {
- step_systime(fp_offset);
- msyslog(LOG_NOTICE, "time reset %+.6f s",
- fp_offset);
- reinit_timer();
- }
- rstclock(S_FREQ, peer->epoch, 0);
- return (1);
- }
-
- /*
- * Update the jitter estimate.
- */
- oerror = sys_jitter;
- dtemp = SQUARE(sys_jitter);
- sys_jitter = SQRT(dtemp + (epsil - dtemp) / CLOCK_AVG);
-
- /*
* The huff-n'-puff filter finds the lowest delay in the recent
* interval. This is used to correct the offset by one-half the
* difference between the sample delay and minimum delay. This
* is most effective if the delays are highly assymetric and
* clockhopping is avoided and the clock frequency wander is
* relatively small.
+ *
+ * Note either there is no prefer peer or this update is from
+ * the prefer peer.
*/
- if (sys_huffpuff != NULL) {
+ if (sys_huffpuff != NULL && (sys_prefer == NULL || sys_prefer ==
+ peer)) {
if (peer->delay < sys_huffpuff[sys_huffptr])
sys_huffpuff[sys_huffptr] = peer->delay;
if (peer->delay < sys_mindly)
@@ -332,83 +330,125 @@ local_clock(
* However, if the step threshold is set to zero, a step will
* never occur. See the instruction manual for the details how
* these actions interact with the command line options.
+ *
+ * Note the system poll is set to minpoll only if the clock is
+ * stepped. Note also the kernel is disabled if step is
+ * disabled or greater than 0.5 s.
*/
- retval = 0;
- if (sys_poll > peer->maxpoll)
- sys_poll = peer->maxpoll;
- else if (sys_poll < peer->minpoll)
- sys_poll = peer->minpoll;
clock_frequency = flladj = plladj = 0;
- mu = peer->epoch - last_time;
+ mu = peer->epoch - sys_clocktime;
+ if (clock_max == 0 || clock_max > 0.5)
+ kern_enable = 0;
+ rval = 1;
if (fabs(fp_offset) > clock_max && clock_max > 0) {
switch (state) {
/*
- * In S_TSET state the time has been set at the last
- * valid update and the offset at that time set to zero.
- * If following that we cruise outside the capture
- * range, assume a really bad frequency error and switch
- * to S_FREQ state.
- */
- case S_TSET:
- state = S_FREQ;
- break;
-
- /*
- * In S_SYNC state we ignore outlyers. At the first
- * outlyer after the stepout threshold, switch to S_SPIK
- * state.
+ * In S_SYNC state we ignore the first outlyer amd
+ * switch to S_SPIK state.
*/
case S_SYNC:
- if (mu < clock_minstep)
- return (0);
state = S_SPIK;
return (0);
/*
- * In S_FREQ state we ignore outlyers. At the first
- * outlyer after 900 s, compute the apparent phase and
- * frequency correction.
+ * In S_FREQ state we ignore outlyers and inlyers. At
+ * the first outlyer after the stepout threshold,
+ * compute the apparent frequency correction and step
+ * the phase.
*/
case S_FREQ:
if (mu < clock_minstep)
return (0);
+
+ clock_frequency = (fp_offset - clock_offset) /
+ mu;
+
/* fall through to S_SPIK */
/*
- * In S_SPIK state a large correction is necessary.
- * Since the outlyer may be due to a large frequency
- * error, compute the apparent frequency correction.
+ * In S_SPIK state we ignore succeeding outlyers until
+ * either an inlyer is found or the stepout threshold is
+ * exceeded.
*/
case S_SPIK:
- clock_frequency = (fp_offset - clock_offset) /
- mu;
+ if (mu < clock_minstep)
+ return (0);
+
/* fall through to default */
/*
- * We get here directly in S_FSET state and indirectly
- * from S_FREQ and S_SPIK states. The clock is either
- * reset or shaken, but never stirred.
- */
+ * We get here by default in S_NSET and S_FSET states
+ * and from above in S_FREQ or S_SPIK states.
+ *
+ * In S_NSET state an initial frequency correction is
+ * not available, usually because the frequency file has
+ * not yet been written. Since the time is outside the
+ * step threshold, the clock is stepped. The frequency
+ * will be set directly following the stepout interval.
+ *
+ * In S_FSET state the initial frequency has been set
+ * from the frequency file. Since the time is outside
+ * the step threshold, the clock is stepped immediately,
+ * rather than after the stepout interval. Guys get
+ * nervous if it takes 17 minutes to set the clock for
+ * the first time.
+ *
+ * In S_FREQ and S_SPIK states the stepout threshold has
+ * expired and the phase is still above the step
+ * threshold. Note that a single spike greater than the
+ * step threshold is always suppressed, even at the
+ * longer poll intervals.
+ */
default:
step_systime(fp_offset);
msyslog(LOG_NOTICE, "time reset %+.6f s",
fp_offset);
reinit_timer();
- rstclock(S_TSET, peer->epoch, 0);
- retval = 1;
+ tc_counter = 0;
+ sys_poll = NTP_MINPOLL;
+ sys_tai = 0;
+ clock_jitter = LOGTOD(sys_precision);
+ rval = 2;
+ if (state == S_NSET) {
+ rstclock(S_FREQ, peer->epoch, 0);
+ return (rval);
+ }
break;
}
+ rstclock(S_SYNC, peer->epoch, 0);
} else {
+
+ /*
+ * The offset is less than the step threshold. Calculate
+ * the jitter as the exponentially weighted offset
+ * differences.
+ */
+ etemp = SQUARE(clock_jitter);
+ dtemp = SQUARE(max(fabs(fp_offset - last_offset),
+ LOGTOD(sys_precision)));
+ clock_jitter = SQRT(etemp + (dtemp - etemp) /
+ CLOCK_AVG);
switch (state) {
/*
- * In S_FSET state this is the first update. Adjust the
- * phase, but don't adjust the frequency until the next
+ * In S_NSET state this is the first update received and
+ * the frequency has not been initialized. Adjust the
+ * phase, but do not adjust the frequency until after
+ * the stepout threshold.
+ */
+ case S_NSET:
+ rstclock(S_FREQ, peer->epoch, fp_offset);
+ break;
+
+ /*
+ * In S_FSET state this is the first update received and
+ * the frequency has been initialized. Adjust the phase,
+ * but do not adjust the frequency until the next
* update.
*/
case S_FSET:
- rstclock(S_TSET, peer->epoch, fp_offset);
+ rstclock(S_SYNC, peer->epoch, fp_offset);
break;
/*
@@ -419,76 +459,78 @@ local_clock(
case S_FREQ:
if (mu < clock_minstep)
return (0);
+
clock_frequency = (fp_offset - clock_offset) /
mu;
rstclock(S_SYNC, peer->epoch, fp_offset);
break;
/*
- * Either the clock has just been set or the previous
- * update was a spike and ignored. Since this update is
- * not an outlyer, fold the tent and resume life.
- */
- case S_TSET:
- case S_SPIK:
- state = S_SYNC;
- /* fall through to default */
-
- /*
- * We come here in the normal case for linear phase and
- * frequency adjustments. If the difference between the
- * last offset and the current one exceeds the jitter by
- * CLOCK_SGATE and the interval since the last update is
- * less than twice the system poll interval, consider
- * the update a popcorn spike and ignore it..
+ * We get here by default in S_SYNC and S_SPIK states.
+ * Here we compute the frequency update due to PLL and
+ * FLL contributions.
*/
default:
allow_panic = FALSE;
- dtemp = fabs(fp_offset - last_offset);
-/*
- if (dtemp > CLOCK_SGATE * oerror && mu <
- (u_long) ULOGTOD(sys_poll + 1)) {
-#ifdef DEBUG
- if (debug)
- printf(
- "local_clock: popcorn %.6f %.6f\n",
- dtemp, oerror);
-#endif
- last_offset = fp_offset;
- return (0);
- }
-*/
/*
* The FLL and PLL frequency gain constants
* depend on the poll interval and Allan
- * intercept. The PLL constant is calculated
- * throughout the poll interval range, but the
- * update interval is clamped so as not to
- * exceed the poll interval. The FLL gain is
- * zero below one-half the Allan intercept and
- * unity at MAXPOLL. It decreases as 1 /
- * (MAXPOLL + 1 - poll interval) in a feeble
- * effort to match the loop stiffness to the
- * Allan wobble. Particularly for the PLL, these
- * measures allow oversampling, but not
- * undersampling and insure stability even when
- * the rules of fair engagement are broken.
+ * intercept. The PLL is always used, but
+ * becomes ineffective above the Allan
+ * intercept. The FLL is not used below one-half
+ * the Allan intercept. Above that the loop gain
+ * increases in steps to 1 / CLOCK_AVG.
*/
if (ULOGTOD(sys_poll) > allan_xpt / 2) {
- dtemp = NTP_MAXPOLL + 1 - sys_poll;
+ dtemp = CLOCK_FLL - sys_poll;
flladj = (fp_offset - clock_offset) /
(max(mu, allan_xpt) * dtemp);
}
+
+ /*
+ * For the PLL the integration interval
+ * (numerator) is the minimum of the update
+ * interval and poll interval. This allows
+ * oversampling, but not undersampling.
+ */
etemp = min(mu, (u_long)ULOGTOD(sys_poll));
dtemp = 4 * CLOCK_PLL * ULOGTOD(sys_poll);
plladj = fp_offset * etemp / (dtemp * dtemp);
- last_time = peer->epoch;
- last_offset = clock_offset = fp_offset;
+ rstclock(S_SYNC, peer->epoch, fp_offset);
break;
}
}
+#ifdef OPENSSL
+ /*
+ * Scan the loopsecond table to determine the TAI offset. If
+ * there is a scheduled leap in future, set the leap warning,
+ * but only if less than 30 days before the leap.
+ */
+ tpt = (u_int32 *)tai_leap.ptr;
+ len = ntohl(tai_leap.vallen) / sizeof(u_int32);
+ if (tpt != NULL) {
+ for (i = 0; i < len; i++) {
+ togo = (long)ntohl(tpt[i]) -
+ (long)peer->rec.l_ui;
+ if (togo > 0) {
+ if (togo < CLOCK_JUNE)
+ leap_next |= LEAP_ADDSECOND;
+ break;
+ }
+ }
+#if defined(STA_NANO) && NTP_API == 4
+ if (pll_control && kern_enable && sys_tai == 0) {
+ memset(&ntv, 0, sizeof(ntv));
+ ntv.modes = MOD_TAI;
+ ntv.constant = i + TAI_1972 - 1;
+ ntp_adjtime(&ntv);
+ }
+#endif /* STA_NANO */
+ sys_tai = i + TAI_1972 - 1;
+ }
+#endif /* OPENSSL */
#ifdef KERNEL_PLL
/*
* This code segment works when clock adjustments are made using
@@ -499,6 +541,11 @@ local_clock(
* DECstation 5000/240 and Alpha AXP, additional kernel
* modifications provide a true microsecond clock and nanosecond
* clock, respectively.
+ *
+ * Important note: The kernel discipline is used only if the
+ * step threshold is less than 0.5 s, as anything higher can
+ * lead to overflow problems. This might occur if some misguided
+ * lad set the step threshold to something ridiculous.
*/
if (pll_control && kern_enable) {
@@ -511,60 +558,68 @@ local_clock(
* variables, which will be read later by the local
* clock driver. Afterwards, remember the time and
* frequency offsets for jitter and stability values and
- * to update the drift file.
+ * to update the frequency file.
*/
memset(&ntv, 0, sizeof(ntv));
if (ext_enable) {
ntv.modes = MOD_STATUS;
} else {
+ struct tm *tm = NULL;
+ time_t tstamp;
+
+#ifdef STA_NANO
+ ntv.modes = MOD_BITS | MOD_NANO;
+#else /* STA_NANO */
ntv.modes = MOD_BITS;
+#endif /* STA_NANO */
if (clock_offset < 0)
dtemp = -.5;
else
dtemp = .5;
- if (pll_nano) {
- ntv.offset = (int32)(clock_offset *
- 1e9 + dtemp);
- ntv.constant = sys_poll;
- } else {
- ntv.offset = (int32)(clock_offset *
- 1e6 + dtemp);
- ntv.constant = sys_poll - 4;
- }
+#ifdef STA_NANO
+ ntv.offset = (int32)(clock_offset * 1e9 +
+ dtemp);
+ ntv.constant = sys_poll;
+#else /* STA_NANO */
+ ntv.offset = (int32)(clock_offset * 1e6 +
+ dtemp);
+ ntv.constant = sys_poll - 4;
+#endif /* STA_NANO */
+
+ /*
+ * The frequency is set directly only if
+ * clock_frequency is nonzero coming out of FREQ
+ * state.
+ */
if (clock_frequency != 0) {
ntv.modes |= MOD_FREQUENCY;
ntv.freq = (int32)((clock_frequency +
drift_comp) * 65536e6);
}
- ntv.esterror = (u_int32)(sys_jitter * 1e6);
+ ntv.esterror = (u_int32)(clock_jitter * 1e6);
ntv.maxerror = (u_int32)((sys_rootdelay / 2 +
sys_rootdispersion) * 1e6);
ntv.status = STA_PLL;
/*
- * Set the leap bits in the status word.
+ * Set the leap bits in the status word, but
+ * only on the last day of June or December.
*/
- if (sys_leap == LEAP_NOTINSYNC) {
- ntv.status |= STA_UNSYNC;
- } else if (calleapwhen(sys_reftime.l_ui) <
- CLOCK_DAY) {
- if (sys_leap & LEAP_ADDSECOND)
- ntv.status |= STA_INS;
- else if (sys_leap & LEAP_DELSECOND)
- ntv.status |= STA_DEL;
+ tstamp = peer->rec.l_ui - JAN_1970;
+ tm = gmtime(&tstamp);
+ if (tm != NULL) {
+ if ((tm->tm_mon + 1 == 6 &&
+ tm->tm_mday == 30) || (tm->tm_mon +
+ 1 == 12 && tm->tm_mday == 31)) {
+ if (leap_next & LEAP_ADDSECOND)
+ ntv.status |= STA_INS;
+ else if (leap_next &
+ LEAP_DELSECOND)
+ ntv.status |= STA_DEL;
+ }
}
/*
- * Switch to FLL mode if the poll interval is
- * greater than MAXDPOLL, so that the kernel
- * loop behaves as the daemon loop; viz.,
- * selects the FLL when necessary, etc. For
- * legacy only.
- */
- if (sys_poll > NTP_MAXDPOLL)
- ntv.status |= STA_FLL;
-
- /*
* If the PPS signal is up and enabled, light
* the frequency bit. If the PPS driver is
* working, light the phase bit as well. If not,
@@ -583,29 +638,28 @@ local_clock(
/*
* Pass the stuff to the kernel. If it squeals, turn off
- * the pigs. In any case, fetch the kernel offset and
+ * the pig. In any case, fetch the kernel offset and
* frequency and pretend we did it here.
*/
if (ntp_adjtime(&ntv) == TIME_ERROR) {
- if (ntv.status != pll_status)
- NLOG(NLOG_SYNCEVENT | NLOG_SYSEVENT)
- msyslog(LOG_NOTICE,
- "kernel time sync disabled %04x",
- ntv.status);
+ NLOG(NLOG_SYNCEVENT | NLOG_SYSEVENT)
+ msyslog(LOG_NOTICE,
+ "kernel time sync error %04x", ntv.status);
ntv.status &= ~(STA_PPSFREQ | STA_PPSTIME);
} else {
- if (ntv.status != pll_status)
+ if ((ntv.status ^ pll_status) & ~STA_FLL)
NLOG(NLOG_SYNCEVENT | NLOG_SYSEVENT)
msyslog(LOG_NOTICE,
- "kernel time sync enabled %04x",
+ "kernel time sync status change %04x",
ntv.status);
}
pll_status = ntv.status;
- if (pll_nano)
- clock_offset = ntv.offset / 1e9;
- else
- clock_offset = ntv.offset / 1e6;
- clock_frequency = ntv.freq / 65536e6 - drift_comp;
+#ifdef STA_NANO
+ clock_offset = ntv.offset / 1e9;
+#else /* STA_NANO */
+ clock_offset = ntv.offset / 1e6;
+#endif /* STA_NANO */
+ clock_frequency = ntv.freq / 65536e6;
flladj = plladj = 0;
/*
@@ -613,90 +667,91 @@ local_clock(
*/
if (ntv.status & STA_PPSTIME) {
pps_control = current_time;
- if (pll_nano)
- sys_jitter = ntv.jitter / 1e9;
- else
- sys_jitter = ntv.jitter / 1e6;
+#ifdef STA_NANO
+ clock_jitter = ntv.jitter / 1e9;
+#else /* STA_NANO */
+ clock_jitter = ntv.jitter / 1e6;
+#endif /* STA_NANO */
}
- }
+ } else {
#endif /* KERNEL_PLL */
+ /*
+ * We get here if the kernel discipline is not enabled.
+ * Adjust the clock frequency as the sum of the directly
+ * computed frequency (if measured) and the PLL and FLL
+ * increments.
+ */
+ clock_frequency = drift_comp + clock_frequency +
+ flladj + plladj;
+#ifdef KERNEL_PLL
+ }
+#endif /* KERNEL_PLL */
+
/*
- * Adjust the clock frequency and calculate the stability. If
- * kernel support is available, we use the results of the kernel
- * discipline instead of the PLL/FLL discipline. In this case,
- * drift_comp is a sham and used only for updating the drift
- * file and for billboard eye candy.
+ * Clamp the frequency within the tolerance range and calculate
+ * the frequency change since the last update.
*/
- dtemp = clock_frequency + flladj + plladj;
- etemp = drift_comp + dtemp;
- if (etemp > NTP_MAXFREQ)
- drift_comp = NTP_MAXFREQ;
- else if (etemp <= -NTP_MAXFREQ)
- drift_comp = -NTP_MAXFREQ;
- else
- drift_comp = etemp;
- if (fabs(etemp) > NTP_MAXFREQ)
+ if (fabs(clock_frequency) > NTP_MAXFREQ)
NLOG(NLOG_SYNCEVENT | NLOG_SYSEVENT)
msyslog(LOG_NOTICE,
"frequency error %.0f PPM exceeds tolerance %.0f PPM",
- etemp * 1e6, NTP_MAXFREQ * 1e6);
+ clock_frequency * 1e6, NTP_MAXFREQ * 1e6);
+ dtemp = SQUARE(clock_frequency - drift_comp);
+ if (clock_frequency > NTP_MAXFREQ)
+ drift_comp = NTP_MAXFREQ;
+ else if (clock_frequency < -NTP_MAXFREQ)
+ drift_comp = -NTP_MAXFREQ;
+ else
+ drift_comp = clock_frequency;
+ /*
+ * Calculate the wander as the exponentially weighted frequency
+ * differences.
+ */
etemp = SQUARE(clock_stability);
- dtemp = SQUARE(dtemp);
clock_stability = SQRT(etemp + (dtemp - etemp) / CLOCK_AVG);
/*
- * In SYNC state, adjust the poll interval. The trick here is to
- * compare the apparent frequency change induced by the system
- * jitter over the poll interval, or fritter, to the frequency
- * stability. If the fritter is greater than the stability,
- * phase noise predominates and the averaging interval is
- * increased; otherwise, it is decreased. A bit of hysteresis
+ * Here we adjust the poll interval by comparing the current
+ * offset with the clock jitter. If the offset is less than the
+ * clock jitter times a constant, then the averaging interval is
+ * increased, otherwise it is decreased. A bit of hysteresis
* helps calm the dance. Works best using burst mode.
*/
- if (state == S_SYNC) {
- if (sys_jitter > ULOGTOD(sys_poll) * clock_stability &&
- fabs(clock_offset) < CLOCK_PGATE * sys_jitter) {
- tc_counter += sys_poll;
- if (tc_counter > CLOCK_LIMIT) {
- tc_counter = CLOCK_LIMIT;
- if (sys_poll < peer->maxpoll) {
- tc_counter = 0;
- sys_poll++;
- }
+ if (fabs(clock_offset) < CLOCK_PGATE * clock_jitter) {
+ tc_counter += sys_poll;
+ if (tc_counter > CLOCK_LIMIT) {
+ tc_counter = CLOCK_LIMIT;
+ if (sys_poll < peer->maxpoll) {
+ tc_counter = 0;
+ sys_poll++;
}
- } else {
- tc_counter -= sys_poll << 1;
- if (tc_counter < -CLOCK_LIMIT) {
- tc_counter = -CLOCK_LIMIT;
- if (sys_poll > peer->minpoll) {
- tc_counter = 0;
- sys_poll--;
- }
+ }
+ } else {
+ tc_counter -= sys_poll << 1;
+ if (tc_counter < -CLOCK_LIMIT) {
+ tc_counter = -CLOCK_LIMIT;
+ if (sys_poll > peer->minpoll) {
+ tc_counter = 0;
+ sys_poll--;
}
}
}
/*
- * Update the system time variables.
+ * Yibbidy, yibbbidy, yibbidy; that'h all folks.
*/
- dtemp = peer->disp + (current_time - peer->epoch) * clock_phi +
- sys_jitter + fabs(last_offset);
- if (!(peer->flags & FLAG_REFCLOCK) && dtemp < MINDISPERSE)
- dtemp = MINDISPERSE;
- sys_rootdispersion = peer->rootdispersion + dtemp;
- record_loop_stats(last_offset, drift_comp, sys_jitter,
+ record_loop_stats(clock_offset, drift_comp, clock_jitter,
clock_stability, sys_poll);
-
#ifdef DEBUG
if (debug)
printf(
- "local_clock: mu %lu rootjit %.6f stab %.3f poll %d count %d\n",
- mu, dtemp, clock_stability * 1e6, sys_poll,
- tc_counter);
+ "local_clock: mu %lu jitr %.6f freq %.3f stab %.6f poll %d count %d\n",
+ mu, clock_jitter, drift_comp * 1e6,
+ clock_stability * 1e6, sys_poll, tc_counter);
#endif /* DEBUG */
- return (retval);
+ return (rval);
#endif /* LOCKCLOCK */
}
@@ -728,6 +783,14 @@ adj_host_clock(
#ifndef LOCKCLOCK
/*
+ * If clock discipline is disabled or if the kernel is enabled,
+ * get out of Dodge quick.
+ */
+ if (!ntp_enable || mode_ntpdate || (pll_control &&
+ kern_enable))
+ return;
+
+ /*
* Declare PPS kernel unsync if the pps signal has not been
* heard for a few minutes.
*/
@@ -739,30 +802,14 @@ adj_host_clock(
}
/*
- * If NTP is disabled or ntpdate mode enabled or the kernel
- * discipline enabled, we have no business going further.
- */
- if (!ntp_enable || mode_ntpdate || (pll_control && kern_enable))
- return;
-
- /*
- * Intricate wrinkle for legacy only. If the local clock driver
- * is in use and selected for synchronization, somebody else may
- * tinker the adjtime() syscall. If this is the case, the driver
- * is marked prefer and we have to avoid calling adjtime(),
- * since that may truncate the other guy's requests.
+ * Implement the phase and frequency adjustments. The gain
+ * factor (denominator) is not allowed to increase beyond the
+ * Allan intercept. It doesn't make sense to average phase noise
+ * beyond this point and it helps to damp residual offset at the
+ * longer poll intervals.
*/
- if (sys_peer != 0) {
- if (sys_peer->refclktype == REFCLK_LOCALCLOCK &&
- sys_peer->flags & FLAG_PREFER)
- return;
- }
-
- /*
- * Implement the phase and frequency adjustments. Note the
- * black art formerly practiced here has been whitewashed.
- */
- adjustment = clock_offset / (CLOCK_PLL * ULOGTOD(sys_poll));
+ adjustment = clock_offset / (CLOCK_PLL * min(ULOGTOD(sys_poll),
+ allan_xpt));
clock_offset -= adjustment;
adj_systime(adjustment + drift_comp);
#endif /* LOCKCLOCK */
@@ -770,25 +817,25 @@ adj_host_clock(
/*
- * Clock state machine. Enter new state and set state variables.
+ * Clock state machine. Enter new state and set state variables. Note we
+ * use the time of the last clock filter sample, which may be earlier
+ * than the current time.
*/
static void
rstclock(
- int trans, /* new state */
- u_long epoch, /* last time */
- double offset /* last offset */
+ int trans, /* new state */
+ u_long update, /* new update time */
+ double offset /* new offset */
)
{
- tc_counter = 0;
- sys_poll = NTP_MINPOLL;
- state = trans;
- last_time = epoch;
- last_offset = clock_offset = offset;
#ifdef DEBUG
if (debug)
- printf("local_clock: at %lu state %d\n", last_time,
- trans);
+ printf("local_clock: time %lu offset %.6f freq %.3f state %d\n",
+ update, offset, drift_comp * 1e6, trans);
#endif
+ state = trans;
+ sys_clocktime = update;
+ last_offset = clock_offset = offset;
}
@@ -802,6 +849,7 @@ huffpuff()
if (sys_huffpuff == NULL)
return;
+
sys_huffptr = (sys_huffptr + 1) % sys_hufflen;
sys_huffpuff[sys_huffptr] = 1e9;
sys_mindly = 1e9;
@@ -833,25 +881,20 @@ loop_config(
#ifdef KERNEL_PLL
/*
* Assume the kernel supports the ntp_adjtime() syscall.
- * If that syscall works, initialize the kernel
- * variables. Otherwise, continue leaving no harm
+ * If that syscall works, initialize the kernel time
+ * variables. Otherwise, continue leaving no harm
* behind. While at it, ask to set nanosecond mode. If
* the kernel agrees, rejoice; othewise, it does only
* microseconds.
- *
- * Call out the safety patrol. If ntpdate mode or if the
- * step threshold has been changed by the -x option or
- * tinker command, kernel discipline is unsafe, so don't
- * do any of this stuff.
*/
- if (mode_ntpdate || clock_max != CLOCK_MAX)
+ if (mode_ntpdate)
break;
pll_control = 1;
memset(&ntv, 0, sizeof(ntv));
#ifdef STA_NANO
ntv.modes = MOD_BITS | MOD_NANO;
-#else
+#else /* STA_NANO */
ntv.modes = MOD_BITS;
#endif /* STA_NANO */
ntv.maxerror = MAXDISPERSE;
@@ -881,11 +924,14 @@ loop_config(
#else /* SIGSYS */
ntp_adjtime(&ntv);
#endif /* SIGSYS */
+
+ /*
+ * Save the result status and light up an external clock
+ * if available.
+ */
pll_status = ntv.status;
if (pll_control) {
#ifdef STA_NANO
- if (pll_status & STA_NANO)
- pll_nano = 1;
if (pll_status & STA_CLK)
ext_enable = 1;
#endif /* STA_NANO */
@@ -910,34 +956,46 @@ loop_config(
*/
if (freq <= NTP_MAXFREQ && freq >= -NTP_MAXFREQ) {
drift_comp = freq;
- rstclock(S_FSET, current_time, 0);
+ rstclock(S_FSET, 0, 0);
} else {
drift_comp = 0;
}
#ifdef KERNEL_PLL
/*
- * Sanity check. If the kernel is enabled, load the
- * frequency and light up the loop. If not, set the
- * kernel frequency to zero and leave the loop dark. In
- * either case set the time to zero to cancel any
- * previous nonsense.
+ * Sanity check. If the kernel is available, load the
+ * frequency and light up the loop. Make sure the offset
+ * is zero to cancel any previous nonsense. If you don't
+ * want this initialization, remove the ntp.drift file.
*/
- if (pll_control) {
+ if (pll_control && kern_enable) {
memset((char *)&ntv, 0, sizeof(ntv));
ntv.modes = MOD_OFFSET | MOD_FREQUENCY;
- if (kern_enable) {
- ntv.modes |= MOD_STATUS;
- ntv.status = STA_PLL;
- ntv.freq = (int32)(drift_comp *
- 65536e6);
- }
- (void)ntp_adjtime(&ntv);
+ ntv.freq = (int32)(drift_comp * 65536e6);
+ ntp_adjtime(&ntv);
}
#endif /* KERNEL_PLL */
#endif /* LOCKCLOCK */
break;
+ case LOOP_KERN_CLEAR:
+#ifndef LOCKCLOCK
+#ifdef KERNEL_PLL
+ /* Completely turn off the kernel time adjustments. */
+ if (pll_control) {
+ memset((char *)&ntv, 0, sizeof(ntv));
+ ntv.modes = MOD_BITS | MOD_OFFSET | MOD_FREQUENCY;
+ ntv.status = STA_UNSYNC;
+ ntp_adjtime(&ntv);
+ NLOG(NLOG_SYNCEVENT | NLOG_SYSEVENT)
+ msyslog(LOG_INFO,
+ "kernel time sync disabled %04x",
+ ntv.status);
+ }
+#endif /* KERNEL_PLL */
+#endif /* LOCKCLOCK */
+ break;
+
/*
* Special tinker variables for Ulrich Windl. Very dangerous.
*/
@@ -974,7 +1032,7 @@ loop_config(
case LOOP_FREQ: /* initial frequency */
drift_comp = freq / 1e6;
- rstclock(S_FSET, current_time, 0);
+ rstclock(S_FSET, 0, 0);
break;
}
}
diff --git a/contrib/ntp/ntpd/ntp_monitor.c b/contrib/ntp/ntpd/ntp_monitor.c
index 6b288fc..753fa76 100644
--- a/contrib/ntp/ntpd/ntp_monitor.c
+++ b/contrib/ntp/ntpd/ntp_monitor.c
@@ -9,6 +9,7 @@
#include "ntp_io.h"
#include "ntp_if.h"
#include "ntp_stdlib.h"
+#include <ntp_random.h>
#include <stdio.h>
#include <signal.h>
@@ -177,11 +178,31 @@ mon_stop(
mon_mru_list.mru_prev = &mon_mru_list;
}
+void
+ntp_monclearinterface(struct interface *interface)
+{
+ struct mon_data *md;
+
+ for (md = mon_mru_list.mru_next; md != &mon_mru_list;
+ md = md->mru_next) {
+ if (md->interface == interface)
+ {
+ /* dequeue from mru list and put to free list */
+ md->mru_prev->mru_next = md->mru_next;
+ md->mru_next->mru_prev = md->mru_prev;
+ remove_from_hash(md);
+ md->hash_next = mon_free;
+ mon_free = md;
+ }
+ }
+}
/*
* ntp_monitor - record stats about this packet
+ *
+ * Returns 1 if the packet is at the head of the list, 0 otherwise.
*/
-void
+int
ntp_monitor(
struct recvbuf *rbufp
)
@@ -193,7 +214,7 @@ ntp_monitor(
register int mode;
if (mon_enabled == MON_OFF)
- return;
+ return 0;
pkt = &rbufp->recv_pkt;
memset(&addr, 0, sizeof(addr));
@@ -223,7 +244,7 @@ ntp_monitor(
md->mru_prev = &mon_mru_list;
mon_mru_list.mru_next->mru_prev = md;
mon_mru_list.mru_next = md;
- return;
+ return 1;
}
md = md->hash_next;
}
@@ -239,9 +260,10 @@ ntp_monitor(
* Preempt from the MRU list if old enough.
*/
md = mon_mru_list.mru_prev;
- if (((u_long)RANDOM & 0xffffffff) / FRAC >
+ /* We get 31 bits from ntp_random() */
+ if (((u_long)ntp_random()) / FRAC >
(double)(current_time - md->lasttime) / mon_age)
- return;
+ return 0;
md->mru_prev->mru_next = &mon_mru_list;
mon_mru_list.mru_prev = md->mru_prev;
@@ -266,7 +288,7 @@ ntp_monitor(
md->mode = (u_char) mode;
md->version = PKT_VERSION(pkt->li_vn_mode);
md->interface = rbufp->dstadr;
- md->cast_flags = (u_char)(((rbufp->dstadr->flags & INT_MULTICAST) &&
+ md->cast_flags = (u_char)(((rbufp->dstadr->flags & INT_MCASTOPEN) &&
rbufp->fd == md->interface->fd) ? MDF_MCAST: rbufp->fd ==
md->interface->bfd ? MDF_BCAST : MDF_UCAST);
@@ -280,6 +302,7 @@ ntp_monitor(
md->mru_prev = &mon_mru_list;
mon_mru_list.mru_next->mru_prev = md;
mon_mru_list.mru_next = md;
+ return 1;
}
diff --git a/contrib/ntp/ntpd/ntp_peer.c b/contrib/ntp/ntpd/ntp_peer.c
index cf8a600..deeec5b 100644
--- a/contrib/ntp/ntpd/ntp_peer.c
+++ b/contrib/ntp/ntpd/ntp_peer.c
@@ -10,10 +10,15 @@
#include "ntpd.h"
#include "ntp_stdlib.h"
+#include <ntp_random.h>
#ifdef OPENSSL
#include "openssl/rand.h"
#endif /* OPENSSL */
+#ifdef SYS_WINNT
+extern int accept_wildcard_if_for_winnt;
+#endif
+
/*
* Table of valid association combinations
* ---------------------------------------
@@ -21,14 +26,12 @@
* packet->mode
* peer->mode | UNSPEC ACTIVE PASSIVE CLIENT SERVER BCAST
* ---------- | ---------------------------------------------
- * NO_PEER | e 1 e 1 1 1
+ * NO_PEER | e 1 0 1 1 1
* ACTIVE | e 1 1 0 0 0
* PASSIVE | e 1 e 0 0 0
* CLIENT | e 0 0 0 1 1
* SERVER | e 0 0 0 0 0
- * BCAST | e 0 0 0 0 0
- * CONTROL | e 0 0 0 0 0
- * PRIVATE | e 0 0 0 0 0
+ * BCAST | e 0 0 0 0 0
* BCLIENT | e 0 0 0 e 1
*
* One point to note here: a packet in BCAST mode can potentially match
@@ -38,11 +41,13 @@
* circumvent that problem by requiring that the first b(m)roadcast
* received after the change back to BCLIENT mode sets the clock.
*/
+#define AM_MODES 7 /* number of rows and columns */
+#define NO_PEER 0 /* action when no peer is found */
int AM[AM_MODES][AM_MODES] = {
/* { UNSPEC, ACTIVE, PASSIVE, CLIENT, SERVER, BCAST } */
-/*NONE*/{ AM_ERR, AM_NEWPASS, AM_ERR, AM_FXMIT, AM_MANYCAST, AM_NEWBCL},
+/*NONE*/{ AM_ERR, AM_NEWPASS, AM_NOMATCH, AM_FXMIT, AM_MANYCAST, AM_NEWBCL},
/*A*/ { AM_ERR, AM_PROCPKT, AM_PROCPKT, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH},
@@ -54,11 +59,7 @@ int AM[AM_MODES][AM_MODES] = {
/*BCST*/{ AM_ERR, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH},
-/*CNTL*/{ AM_ERR, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH},
-
-/*PRIV*/{ AM_ERR, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH},
-
-/*BCL*/ { AM_ERR, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH, AM_ERR, AM_PROCPKT},
+/*BCL*/ { AM_ERR, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH, AM_NOMATCH, AM_PROCPKT},
};
#define MATCH_ASSOC(x,y) AM[(x)][(y)]
@@ -74,10 +75,10 @@ int AM[AM_MODES][AM_MODES] = {
/*
* Peer hash tables
*/
-struct peer *peer_hash[HASH_SIZE]; /* peer hash table */
-int peer_hash_count[HASH_SIZE]; /* peers in each bucket */
-struct peer *assoc_hash[HASH_SIZE]; /* association ID hash table */
-int assoc_hash_count[HASH_SIZE]; /* peers in each bucket */
+struct peer *peer_hash[NTP_HASH_SIZE]; /* peer hash table */
+int peer_hash_count[NTP_HASH_SIZE]; /* peers in each bucket */
+struct peer *assoc_hash[NTP_HASH_SIZE]; /* association ID hash table */
+int assoc_hash_count[NTP_HASH_SIZE]; /* peers in each bucket */
static struct peer *peer_free; /* peer structures free list */
int peer_free_count; /* count of free structures */
@@ -102,10 +103,12 @@ u_long assocpeer_calls; /* calls to findpeerbyassoc */
u_long peer_allocations; /* allocations from free list */
u_long peer_demobilizations; /* structs freed to free list */
int total_peer_structs; /* peer structs */
-int peer_associations; /* active associations */
+int peer_associations; /* mobilized associations */
+int peer_preempt; /* preemptable associations */
static struct peer init_peer_alloc[INIT_PEER_ALLOC]; /* init alloc */
-static void getmorepeermem P((void));
+static void getmorepeermem P((void));
+static struct interface *select_peerinterface P((struct peer *, struct sockaddr_storage *, struct interface *, u_char));
/*
* init_peer - initialize peer data structures and counters
@@ -121,7 +124,7 @@ init_peer(void)
/*
* Clear hash table and counters.
*/
- for (i = 0; i < HASH_SIZE; i++) {
+ for (i = 0; i < NTP_HASH_SIZE; i++) {
peer_hash[i] = 0;
peer_hash_count[i] = 0;
assoc_hash[i] = 0;
@@ -148,9 +151,7 @@ init_peer(void)
/*
* Initialize our first association ID
*/
- current_association_ID = (associd_t)ranp2(16);
- if (current_association_ID == 0)
- current_association_ID = 1;
+ while ((current_association_ID = ntp_random() & 0xffff) == 0);
}
@@ -193,7 +194,7 @@ findexistingpeer(
* same peer through different interfaces in the hash table.
*/
if (start_peer == 0)
- peer = peer_hash[HASH_ADDR(addr)];
+ peer = peer_hash[NTP_HASH_ADDR(addr)];
else
peer = start_peer->next;
@@ -218,19 +219,18 @@ struct peer *
findpeer(
struct sockaddr_storage *srcadr,
struct interface *dstadr,
- int fd,
- int pkt_mode,
- int *action
+ int pkt_mode,
+ int *action
)
{
register struct peer *peer;
int hash;
findpeer_calls++;
- hash = HASH_ADDR(srcadr);
+ hash = NTP_HASH_ADDR(srcadr);
for (peer = peer_hash[hash]; peer != NULL; peer = peer->next) {
- if (SOCKCMP(srcadr, &peer->srcadr)
- && NSRCPORT(srcadr) == NSRCPORT(&peer->srcadr)) {
+ if (SOCKCMP(srcadr, &peer->srcadr) &&
+ NSRCPORT(srcadr) == NSRCPORT(&peer->srcadr)) {
/*
* if the association matching rules determine
@@ -240,14 +240,6 @@ findpeer(
*action = MATCH_ASSOC(peer->hmode, pkt_mode);
/*
- * Sigh! Check if BCLIENT peer in client
- * server mode, else return error.
- */
- if ((*action == AM_POSSBCL) && !(peer->flags &
- FLAG_MCAST))
- *action = AM_ERR;
-
- /*
* if an error was returned, exit back right
* here.
*/
@@ -269,7 +261,9 @@ findpeer(
*action = MATCH_ASSOC(NO_PEER, pkt_mode);
return ((struct peer *)0);
}
- peer->dstadr = dstadr;
+
+ set_peerdstadr(peer, dstadr);
+
return (peer);
}
@@ -286,7 +280,7 @@ findpeerbyassoc(
assocpeer_calls++;
- hash = assoc & HASH_MASK;
+ hash = assoc & NTP_HASH_MASK;
for (peer = assoc_hash[hash]; peer != 0; peer =
peer->ass_next) {
if (assoc == peer->associd)
@@ -309,15 +303,13 @@ clear_all(void)
* This routine is called when the clock is stepped, and so all
* previously saved time values are untrusted.
*/
- for (n = 0; n < HASH_SIZE; n++) {
+ for (n = 0; n < NTP_HASH_SIZE; n++) {
for (peer = peer_hash[n]; peer != 0; peer = next_peer) {
next_peer = peer->next;
- if (peer->flags & FLAG_CONFIG) {
- if (!(peer->cast_flags & (MDF_ACAST |
- MDF_MCAST | MDF_BCAST)))
- peer_clear(peer, "STEP");
- } else {
- unpeer(peer);
+ if (!(peer->cast_flags & (MDF_ACAST | MDF_MCAST |
+ MDF_BCAST))) {
+ peer->hpoll = peer->minpoll;
+ peer_clear(peer, "STEP");
}
}
}
@@ -353,13 +345,19 @@ unpeer(
#endif /* OPENSSL */
#ifdef DEBUG
if (debug)
- printf("demobilize %u %d\n", peer_to_remove->associd,
- peer_associations);
+ printf("demobilize %u %d %d\n", peer_to_remove->associd,
+ peer_associations, peer_preempt);
#endif
- peer_clear(peer_to_remove, "NULL");
- hash = HASH_ADDR(&peer_to_remove->srcadr);
+ set_peerdstadr(peer_to_remove, NULL);
+
+ /* XXXMEMLEAK? peer_clear->crypto allocation */
+
+ hash = NTP_HASH_ADDR(&peer_to_remove->srcadr);
peer_hash_count[hash]--;
peer_demobilizations++;
+ peer_associations--;
+ if (peer_to_remove->flags & FLAG_PREEMPT)
+ peer_preempt--;
#ifdef REFCLOCK
/*
* If this peer is actually a clock, shut it down first
@@ -389,7 +387,7 @@ unpeer(
/*
* Remove him from the association hash as well.
*/
- hash = peer_to_remove->associd & HASH_MASK;
+ hash = peer_to_remove->associd & NTP_HASH_MASK;
assoc_hash_count[hash]--;
if (assoc_hash[hash] == peer_to_remove)
assoc_hash[hash] = peer_to_remove->ass_next;
@@ -412,7 +410,6 @@ unpeer(
peer_to_remove->next = peer_free;
peer_free = peer_to_remove;
peer_free_count++;
- peer_associations--;
}
@@ -440,13 +437,18 @@ peer_config(
* First search from the beginning for an association with given
* remote address and mode. If an interface is given, search
* from there to find the association which matches that
- * destination.
+ * destination. If the given interface is "any", track down
+ * the actual interface, because that's what gets put into the
+ * peer structure.
*/
peer = findexistingpeer(srcadr, (struct peer *)0, hmode);
if (dstadr != 0) {
while (peer != 0) {
if (peer->dstadr == dstadr)
break;
+ if (dstadr == ANY_INTERFACE_CHOOSE(srcadr) &&
+ peer->dstadr == findinterface(srcadr))
+ break;
peer = findexistingpeer(srcadr, peer, hmode);
}
}
@@ -525,6 +527,197 @@ peer_config(
return (peer);
}
+/*
+ * setup peer dstadr field keeping it in sync with the interface structures
+ */
+void
+set_peerdstadr(struct peer *peer, struct interface *interface)
+{
+ if (peer->dstadr != interface) {
+ if (interface != NULL &&
+ (peer->cast_flags & MDF_BCLNT) &&
+ (interface->flags & INT_MCASTIF) &&
+ peer->burst) {
+ /*
+ * don't accept updates to a true multicast reception
+ * interface while a BCLNT peer is running it's
+ * unicast protocol
+ */
+ return;
+ }
+
+ if (peer->dstadr != NULL)
+ {
+ peer->dstadr->peercnt--;
+ ISC_LIST_UNLINK_TYPE(peer->dstadr->peers, peer, ilink, struct peer);
+ }
+
+ DPRINTF(4, ("set_peerdstadr(%s): change interface from %s to %s\n",
+ stoa(&peer->srcadr),
+ (peer->dstadr != NULL) ? stoa(&peer->dstadr->sin) : "<null>",
+ (interface != NULL) ? stoa(&interface->sin) : "<null>"));
+
+ peer->dstadr = interface;
+
+ if (peer->dstadr != NULL)
+ {
+ ISC_LIST_APPEND(peer->dstadr->peers, peer, ilink);
+ peer->dstadr->peercnt++;
+ }
+ }
+}
+
+/*
+ * attempt to re-rebind interface if necessary
+ */
+static void
+peer_refresh_interface(struct peer *peer)
+{
+ struct interface *niface, *piface;
+
+ niface = select_peerinterface(peer, &peer->srcadr, NULL, peer->cast_flags);
+
+#ifdef DEBUG
+ if (debug > 3)
+ {
+ printf(
+ "peer_refresh_interface: %s->%s mode %d vers %d poll %d %d flags 0x%x 0x%x ttl %d key %08x: new interface: ",
+ peer->dstadr == NULL ? "<null>" : stoa(&peer->dstadr->sin),
+ stoa(&peer->srcadr),
+ peer->hmode, peer->version, peer->minpoll,
+ peer->maxpoll, peer->flags, peer->cast_flags,
+ peer->ttl, peer->keyid);
+ if (niface != NULL)
+ {
+ printf("fd=%d, bfd=%d, name=%.16s, flags=0x%x, scope=%d, ",
+ niface->fd,
+ niface->bfd,
+ niface->name,
+ niface->flags,
+ niface->scopeid);
+ /* Leave these as three printf calls. */
+ printf(", sin=%s",
+ stoa((&niface->sin)));
+ if (niface->flags & INT_BROADCAST)
+ printf(", bcast=%s,",
+ stoa((&niface->bcast)));
+ printf(", mask=%s\n",
+ stoa((&niface->mask)));
+ }
+ else
+ {
+ printf("<NONE>\n");
+ }
+ }
+#endif
+
+ piface = peer->dstadr;
+
+ set_peerdstadr(peer, niface);
+
+ if (peer->dstadr) {
+ /*
+ * clear crypto if we change the local address
+ */
+ if (peer->dstadr != piface && !(peer->cast_flags & MDF_BCLNT)) {
+ peer_crypto_clear(peer);
+ }
+
+ /*
+ * Broadcast needs the socket enabled for broadcast
+ */
+ if (peer->cast_flags & MDF_BCAST) {
+ enable_broadcast(peer->dstadr, &peer->srcadr);
+ }
+
+ /*
+ * Multicast needs the socket interface enabled for multicast
+ */
+ if (peer->cast_flags & MDF_MCAST) {
+ enable_multicast_if(peer->dstadr, &peer->srcadr);
+ }
+ }
+}
+
+/*
+ * refresh_all_peerinterfaces - see that all interface bindings are up to date
+ */
+void
+refresh_all_peerinterfaces(void)
+{
+ struct peer *peer, *next_peer;
+ int n;
+
+ /*
+ * this is called when the interface list has changed
+ * give all peers a chance to find a better interface
+ */
+ for (n = 0; n < NTP_HASH_SIZE; n++) {
+ for (peer = peer_hash[n]; peer != 0; peer = next_peer) {
+ next_peer = peer->next;
+ peer_refresh_interface(peer);
+ }
+ }
+}
+
+
+/*
+ * find an interface suitable for the src address
+ */
+static struct interface *
+select_peerinterface(struct peer *peer, struct sockaddr_storage *srcadr, struct interface *dstadr, u_char cast_flags)
+{
+ struct interface *interface;
+
+ /*
+ * Initialize the peer structure and dance the interface jig.
+ * Reference clocks step the loopback waltz, the others
+ * squaredance around the interface list looking for a buddy. If
+ * the dance peters out, there is always the wildcard interface.
+ * This might happen in some systems and would preclude proper
+ * operation with public key cryptography.
+ */
+ if (ISREFCLOCKADR(srcadr))
+ interface = loopback_interface;
+ else
+ if (cast_flags & (MDF_BCLNT | MDF_ACAST | MDF_MCAST | MDF_BCAST)) {
+ interface = findbcastinter(srcadr);
+#ifdef DEBUG
+ if (debug > 3) {
+ if (interface != NULL)
+ printf("Found *-cast interface address %s, for address %s\n",
+ stoa(&(interface)->sin), stoa(srcadr));
+ else
+ printf("No *-cast local address found for address %s\n",
+ stoa(srcadr));
+ }
+#endif
+ /*
+ * If it was a multicast packet, findbcastinter() may not
+ * find it, so try a little harder.
+ */
+ if (interface == ANY_INTERFACE_CHOOSE(srcadr))
+ interface = findinterface(srcadr);
+ }
+ else if (dstadr != NULL && dstadr != ANY_INTERFACE_CHOOSE(srcadr))
+ interface = dstadr;
+ else
+ interface = findinterface(srcadr);
+
+ /*
+ * we do not bind to the wildcard interfaces for output
+ * as our (network) source address would be undefined and
+ * crypto will not work without knowing the own transmit address
+ */
+ if (interface != NULL && interface->flags & INT_WILDCARD)
+#ifdef SYS_WINNT
+ if ( !accept_wildcard_if_for_winnt )
+#endif
+ interface = NULL;
+
+
+ return interface;
+}
/*
* newpeer - initialize a new peer association
@@ -559,6 +752,8 @@ newpeer(
peer_free = peer->next;
peer_free_count--;
peer_associations++;
+ if (flags & FLAG_PREEMPT)
+ peer_preempt++;
memset((char *)peer, 0, sizeof(struct peer));
/*
@@ -568,34 +763,41 @@ newpeer(
if (++current_association_ID == 0)
++current_association_ID;
- /*
- * Initialize the peer structure and dance the interface jig.
- * Reference clocks step the loopback waltz, the others
- * squaredance around the interface list looking for a buddy. If
- * the dance peters out, there is always the wildcard interface.
- * This might happen in some systems and would preclude proper
- * operation with public key cryptography.
- */
- if (ISREFCLOCKADR(srcadr))
- peer->dstadr = loopback_interface;
- else if (cast_flags & (MDF_BCLNT | MDF_ACAST | MDF_MCAST | MDF_BCAST)) {
- peer->dstadr = findbcastinter(srcadr);
- /*
- * If it was a multicast packet, findbcastinter() may not
- * find it, so try a little harder.
- */
- if (peer->dstadr == ANY_INTERFACE_CHOOSE(srcadr))
- peer->dstadr = findinterface(srcadr);
- } else if (dstadr != NULL && dstadr != ANY_INTERFACE_CHOOSE(srcadr))
- peer->dstadr = dstadr;
- else
- peer->dstadr = findinterface(srcadr);
+ DPRINTF(3, ("newpeer: cast flags: 0x%x for address: %s\n",
+ cast_flags, stoa(srcadr)));
+
+ ISC_LINK_INIT(peer, ilink); /* set up interface link chain */
peer->srcadr = *srcadr;
+ set_peerdstadr(peer, select_peerinterface(peer, srcadr, dstadr,
+ cast_flags));
peer->hmode = (u_char)hmode;
peer->version = (u_char)version;
peer->minpoll = (u_char)max(NTP_MINPOLL, minpoll);
peer->maxpoll = (u_char)min(NTP_MAXPOLL, maxpoll);
peer->flags = flags;
+#ifdef DEBUG
+ if (debug > 2) {
+ if (peer->dstadr)
+ printf("newpeer: using fd %d and our addr %s\n",
+ peer->dstadr->fd,
+ stoa(&peer->dstadr->sin));
+ else
+ printf("newpeer: local interface currently not bound\n");
+ }
+#endif
+
+ /*
+ * Broadcast needs the socket enabled for broadcast
+ */
+ if (cast_flags & MDF_BCAST && peer->dstadr) {
+ enable_broadcast(peer->dstadr, srcadr);
+ }
+ /*
+ * Multicast needs the socket interface enabled for multicast
+ */
+ if (cast_flags & MDF_MCAST && peer->dstadr) {
+ enable_multicast_if(peer->dstadr, srcadr);
+ }
if (key != 0)
peer->flags |= FLAG_AUTHENABLE;
if (key > NTP_MAXKEY)
@@ -604,6 +806,7 @@ newpeer(
peer->ttl = (u_char)ttl;
peer->keyid = key;
peer->precision = sys_precision;
+ peer->hpoll = peer->minpoll;
if (cast_flags & MDF_ACAST)
peer_clear(peer, "ACST");
else if (cast_flags & MDF_MCAST)
@@ -621,8 +824,10 @@ newpeer(
peer->timereset = current_time;
peer->timereachable = current_time;
peer->timereceived = current_time;
+
#ifdef REFCLOCK
if (ISREFCLOCKADR(&peer->srcadr)) {
+
/*
* We let the reference clock support do clock
* dependent initialization. This includes setting
@@ -633,6 +838,8 @@ newpeer(
/*
* Dump it, something screwed up
*/
+ set_peerdstadr(peer, NULL);
+
peer->next = peer_free;
peer_free = peer;
peer_free_count++;
@@ -644,34 +851,30 @@ newpeer(
/*
* Put the new peer in the hash tables.
*/
- i = HASH_ADDR(&peer->srcadr);
+ i = NTP_HASH_ADDR(&peer->srcadr);
peer->next = peer_hash[i];
peer_hash[i] = peer;
peer_hash_count[i]++;
- i = peer->associd & HASH_MASK;
+ i = peer->associd & NTP_HASH_MASK;
peer->ass_next = assoc_hash[i];
assoc_hash[i] = peer;
assoc_hash_count[i]++;
+
#ifdef OPENSSL
if (peer->flags & FLAG_SKEY) {
sprintf(statstr, "newpeer %d", peer->associd);
record_crypto_stats(&peer->srcadr, statstr);
-#ifdef DEBUG
- if (debug)
- printf("peer: %s\n", statstr);
-#endif
+ DPRINTF(1, ("peer: %s\n", statstr));
}
#endif /* OPENSSL */
-#ifdef DEBUG
- if (debug)
- printf(
- "newpeer: %s->%s mode %d vers %d poll %d %d flags 0x%x 0x%x ttl %d key %08x\n",
- peer->dstadr == NULL ? "null" : stoa(&peer->dstadr->sin),
+
+ DPRINTF(1, ("newpeer: %s->%s mode %d vers %d poll %d %d flags 0x%x 0x%x ttl %d key %08x\n",
+ peer->dstadr == NULL ? "<null>" : stoa(&peer->dstadr->sin),
stoa(&peer->srcadr),
peer->hmode, peer->version, peer->minpoll,
peer->maxpoll, peer->flags, peer->cast_flags,
- peer->ttl, peer->keyid);
-#endif
+ peer->ttl, peer->keyid));
+
return (peer);
}
@@ -749,8 +952,6 @@ peer_reset(
peer->bogusorg = 0;
peer->oldpkt = 0;
peer->seldisptoolarge = 0;
- peer->selbroken = 0;
- peer->rank = 0;
peer->timereset = current_time;
}
@@ -764,7 +965,7 @@ peer_all_reset(void)
struct peer *peer;
int hash;
- for (hash = 0; hash < HASH_SIZE; hash++)
+ for (hash = 0; hash < NTP_HASH_SIZE; hash++)
for (peer = peer_hash[hash]; peer != 0; peer = peer->next)
peer_reset(peer);
}
@@ -790,13 +991,13 @@ expire_all(void)
*/
if (!crypto_flags)
return;
- for (n = 0; n < HASH_SIZE; n++) {
+
+ for (n = 0; n < NTP_HASH_SIZE; n++) {
for (peer = peer_hash[n]; peer != 0; peer = next_peer) {
next_peer = peer->next;
if (!(peer->flags & FLAG_SKEY)) {
continue;
- } else if (peer->cast_flags & MDF_ACAST) {
- peer_clear(peer, "ACST");
+
} else if (peer->hmode == MODE_ACTIVE ||
peer->hmode == MODE_PASSIVE) {
key_expire(peer);
@@ -808,7 +1009,6 @@ expire_all(void)
}
RAND_bytes((u_char *)&sys_private, 4);
crypto_update();
- resetmanycast();
}
#endif /* OPENSSL */
@@ -827,14 +1027,14 @@ findmanycastpeer(
int i;
/*
- * This routine is called upon arrival of a client-mode message
- * from a manycast server. Search the peer list for a manycast
+ * This routine is called upon arrival of a server-mode message
+ * from a manycast client. Search the peer list for a manycast
* client association where the last transmit timestamp matches
* the originate timestamp. This assumes the transmit timestamps
* for possibly more than one manycast association are unique.
*/
pkt = &rbufp->recv_pkt;
- for (i = 0; i < HASH_SIZE; i++) {
+ for (i = 0; i < NTP_HASH_SIZE; i++) {
if (peer_hash_count[i] == 0)
continue;
@@ -849,32 +1049,3 @@ findmanycastpeer(
}
return (NULL);
}
-
-
-/*
- * resetmanycast - reset all manycast clients
- */
-void
-resetmanycast(void)
-{
- register struct peer *peer;
- int i;
-
- /*
- * This routine is called when the number of client associations
- * falls below the minimum. Search the peer list for manycast
- * client associations and reset the ttl and poll interval.
- */
- for (i = 0; i < HASH_SIZE; i++) {
- if (peer_hash_count[i] == 0)
- continue;
-
- for (peer = peer_hash[i]; peer != 0; peer =
- peer->next) {
- if (peer->cast_flags & MDF_ACAST) {
- peer->ttl = 0;
- poll_update(peer, 0);
- }
- }
- }
-}
diff --git a/contrib/ntp/ntpd/ntp_proto.c b/contrib/ntp/ntpd/ntp_proto.c
index 451bc9a..0ab2498 100644
--- a/contrib/ntp/ntpd/ntp_proto.c
+++ b/contrib/ntp/ntpd/ntp_proto.c
@@ -25,19 +25,26 @@
#endif
/*
+ * This macro defines the authentication state. If x is 1 authentication
+ * is required; othewise it is optional.
+ */
+#define AUTH(x, y) ((x) ? (y) == AUTH_OK : (y) == AUTH_OK || \
+ (y) == AUTH_NONE)
+
+/*
* System variables are declared here. See Section 3.2 of the
* specification.
*/
u_char sys_leap; /* system leap indicator */
u_char sys_stratum; /* stratum of system */
-s_char sys_precision; /* local clock precision */
+s_char sys_precision; /* local clock precision (log2 s) */
double sys_rootdelay; /* roundtrip delay to primary source */
double sys_rootdispersion; /* dispersion to primary source */
-u_int32 sys_refid; /* reference source for local clock */
-u_int32 sys_peer_refid; /* hashed refid of our current peer */
+u_int32 sys_refid; /* source/loop in network byte order */
static double sys_offset; /* current local clock offset */
l_fp sys_reftime; /* time we were last updated */
struct peer *sys_peer; /* our current peer */
+struct peer *sys_pps; /* our PPS peer */
struct peer *sys_prefer; /* our cherished peer */
int sys_kod; /* kod credit */
int sys_kod_rate = 2; /* max kod packets per second */
@@ -54,9 +61,12 @@ int sys_calldelay; /* modem callup delay (s) */
int sys_authenticate; /* requre authentication for config */
l_fp sys_authdelay; /* authentication delay */
static u_long sys_authdly[2]; /* authentication delay shift reg */
-static u_char leap_consensus; /* consensus of survivor leap bits */
-static double sys_selerr; /* select error (squares) */
-static double sys_syserr; /* system error (squares) */
+static double sys_mindisp = MINDISPERSE; /* min disp increment (s) */
+static double sys_maxdist = MAXDISTANCE; /* selection threshold (s) */
+double sys_jitter; /* system jitter (s) */
+static int sys_hopper; /* anticlockhop counter */
+static int sys_maxhop = MAXHOP; /* anticlockhop counter threshold */
+int leap_next; /* leap consensus */
keyid_t sys_private; /* private value for session seed */
int sys_manycastserver; /* respond to manycast client pkts */
int peer_ntpdate; /* active peers in ntpdate mode */
@@ -68,11 +78,15 @@ char *sys_hostname; /* gethostname() name */
/*
* TOS and multicast mapping stuff
*/
-int sys_floor = 1; /* cluster stratum floor */
-int sys_ceiling = STRATUM_UNSPEC; /* cluster stratum ceiling*/
+int sys_floor = 0; /* cluster stratum floor */
+int sys_ceiling = STRATUM_UNSPEC; /* cluster stratum ceiling */
int sys_minsane = 1; /* minimum candidates */
int sys_minclock = NTP_MINCLOCK; /* minimum survivors */
+int sys_maxclock = NTP_MAXCLOCK; /* maximum candidates */
int sys_cohort = 0; /* cohort switch */
+int sys_orphan = STRATUM_UNSPEC + 1; /* orphan stratum */
+double sys_orphandelay = 0; /* orphan root delay */
+int sys_beacon = BEACON; /* manycast beacon interval */
int sys_ttlmax; /* max ttl mapping vector index */
u_char sys_ttl[MAX_TTL]; /* ttl mapping vector */
@@ -91,13 +105,15 @@ u_long sys_badauth; /* bad authentication */
u_long sys_limitrejected; /* rate exceeded */
static double root_distance P((struct peer *));
-static double clock_combine P((struct peer **, int));
+static void clock_combine P((struct peer **, int));
static void peer_xmit P((struct peer *));
-static void fast_xmit P((struct recvbuf *, int, keyid_t, int));
+static void fast_xmit P((struct recvbuf *, int, keyid_t,
+ int));
static void clock_update P((void));
-int default_get_precision P((void));
+static int default_get_precision P((void));
static int peer_unfit P((struct peer *));
+
/*
* transmit - Transmit Procedure. See Section 3.4.2 of the
* specification.
@@ -109,193 +125,199 @@ transmit(
{
int hpoll;
-
/*
* The polling state machine. There are two kinds of machines,
* those that never expect a reply (broadcast and manycast
* server modes) and those that do (all other modes). The dance
* is intricate...
*/
+ /*
+ * Orphan mode is active when enabled and when no servers less
+ * than the orphan statum are available. In this mode packets
+ * are sent at the orphan stratum. An orphan with no other
+ * synchronization source is an orphan parent. It assumes root
+ * delay zero and reference ID the loopback address. All others
+ * are orphan children with root delay randomized over a 1-s
+ * range. The root delay is used by the election algorithm to
+ * select the order of synchronization.
+ */
hpoll = peer->hpoll;
+ if (sys_orphan < STRATUM_UNSPEC && sys_peer == NULL) {
+ sys_leap = LEAP_NOWARNING;
+ sys_stratum = sys_orphan;
+ sys_refid = htonl(LOOPBACKADR);
+ sys_rootdelay = 0;
+ sys_rootdispersion = 0;
+ }
+
+ /*
+ * In broadcast mode the poll interval is never changed from
+ * minpoll.
+ */
if (peer->cast_flags & (MDF_BCAST | MDF_MCAST)) {
+ peer->outdate = current_time;
+ peer_xmit(peer);
+ poll_update(peer, hpoll);
+ return;
+ }
- /*
- * In broadcast mode the poll interval is fixed
- * at minpoll.
- */
- hpoll = peer->minpoll;
- } else if (peer->cast_flags & MDF_ACAST) {
+ /*
+ * In manycast mode we start with unity ttl. The ttl is
+ * increased by one for each poll until either sys_maxclock
+ * servers have been found or the maximum ttl is reached. When
+ * sys_maxclock servers are found we stop polling until one or
+ * more servers have timed out or until less than minpoll
+ * associations turn up. In this case additional better servers
+ * are dragged in and preempt the existing ones.
+ */
+ if (peer->cast_flags & MDF_ACAST) {
+ peer->outdate = current_time;
+ if (peer->unreach > sys_beacon) {
+ peer->unreach = 0;
+ peer->ttl = 0;
+ peer_xmit(peer);
+ } else if (sys_survivors < sys_minclock ||
+ peer_preempt < sys_maxclock) {
+ if (peer->ttl < sys_ttlmax)
+ peer->ttl++;
+ peer_xmit(peer);
+ }
+ peer->unreach++;
+ poll_update(peer, hpoll);
+ return;
+ }
- /*
- * In manycast mode we start with the minpoll interval
- * and ttl. However, the actual poll interval is eight
- * times the nominal poll interval shown here. If fewer
- * than sys_minclock servers are found, the ttl is
- * increased by one and we try again. If this continues
- * to the max ttl, the poll interval is bumped by one
- * and we try again. If at least sys_minclock servers
- * are found, the poll interval increases with the
- * system poll interval to the max and we continue
- * indefinately. However, about once per day when the
- * agreement parameters are refreshed, the manycast
- * clients are reset and we start from the beginning.
- * This is to catch and clamp the ttl to the lowest
- * practical value and avoid knocking on spurious doors.
- */
- if (sys_survivors < sys_minclock && peer->ttl <
- sys_ttlmax)
- peer->ttl++;
- hpoll = sys_poll;
- } else {
+ /*
+ * In unicast modes the dance is much more intricate. It is
+ * desigmed to back off whenever possible to minimize network
+ * traffic.
+ */
+ if (peer->burst == 0) {
+ u_char oreach;
/*
- * For associations expecting a reply, the watchdog
- * counter is bumped by one if the peer has not been
- * heard since the previous poll. If the counter reaches
- * the max, the poll interval is doubled and the peer is
- * demobilized if not configured.
+ * Update the reachability status. If not heard for
+ * three consecutive polls, stuff infinity in the clock
+ * filter.
*/
- peer->unreach++;
- if (peer->unreach >= NTP_UNREACH) {
- hpoll++;
- if (peer->flags & FLAG_CONFIG) {
+ oreach = peer->reach;
+ peer->outdate = current_time;
+ if (peer == sys_peer)
+ sys_hopper++;
+ peer->reach <<= 1;
+ if (!(peer->reach & 0x07))
+ clock_filter(peer, 0., 0., MAXDISPERSE);
+ if (!peer->reach) {
- /*
- * If nothing is likely to change in
- * future, flash the access denied bit
- * so we won't bother the dude again.
- */
- if (memcmp((char *)&peer->refid,
- "DENY", 4) == 0 ||
- memcmp((char *)&peer->refid,
- "CRYP", 4) == 0)
- peer->flash |= TEST4;
- } else {
- unpeer(peer);
- return;
+ /*
+ * Here the peer is unreachable. If it was
+ * previously reachable, raise a trap.
+ */
+ if (oreach) {
+ report_event(EVNT_UNREACH, peer);
+ peer->timereachable = current_time;
}
- }
- if (peer->burst == 0) {
- u_char oreach;
- oreach = peer->reach;
- peer->reach <<= 1;
- peer->hyst *= HYST_TC;
- if (peer->reach == 0) {
-
- /*
- * If this association has become
- * unreachable, clear it and raise a
- * trap.
- */
- if (oreach != 0) {
- report_event(EVNT_UNREACH,
- peer);
- peer->timereachable =
- current_time;
- if (peer->flags & FLAG_CONFIG) {
- peer_clear(peer,
- "INIT");
- } else {
- unpeer(peer);
- return;
- }
- }
- if (peer->flags & FLAG_IBURST)
- peer->burst = NTP_BURST;
- } else {
- /*
- * Here the peer is reachable. If it has
- * not been heard for three consecutive
- * polls, stuff the clock filter. Next,
- * determine the poll interval. If the
- * peer is unfit for synchronization,
- * increase it by one; otherwise, use
- * the system poll interval.
- */
- if (!(peer->reach & 0x07)) {
- clock_filter(peer, 0., 0.,
- MAXDISPERSE);
- clock_select();
- }
- if (peer_unfit(peer))
- hpoll++;
- else
- hpoll = sys_poll;
- if (peer->flags & FLAG_BURST)
- peer->burst = NTP_BURST;
+ /*
+ * Send a burst if enabled, but only once after
+ * a peer becomes unreachable. If the prempt
+ * flag is dim, bump the unreach counter by one;
+ * otherwise, bump it by three.
+ */
+ if (peer->flags & FLAG_IBURST &&
+ peer->unreach == 0) {
+ peer->burst = NTP_BURST;
}
+ if (!(peer->flags & FLAG_PREEMPT))
+ peer->unreach++;
+ else
+ peer->unreach += 3;
} else {
/*
- * Source rate control. If we are restrained,
- * each burst consists of only one packet.
+ * Here the peer is reachable. Set the poll
+ * interval to the system poll interval. Send a
+ * burst only if enabled and the peer is fit.
+ *
+ * Respond to the peer evaluation produced by
+ * the selection algorithm. If less than the
+ * outlyer level, up the unreach by three. If
+ * there are excess associations, up the unreach
+ * by two if not a candidate and by one if so.
*/
- if (memcmp((char *)&peer->refid, "RSTR", 4) ==
- 0)
- peer->burst = 0;
- else
- peer->burst--;
- if (peer->burst == 0) {
- /*
- * If a broadcast client at this point,
- * the burst has concluded, so we switch
- * to client mode and purge the keylist,
- * since no further transmissions will
- * be made.
- */
- if (peer->cast_flags & MDF_BCLNT) {
- peer->hmode = MODE_BCLIENT;
+ if (!(peer->flags & FLAG_PREEMPT)) {
+ peer->unreach = 0;
+ } else if (peer->status < CTL_PST_SEL_SELCAND) {
+ peer->unreach += 3;
+ } else if (peer_preempt > sys_maxclock) {
+ if (peer->status < CTL_PST_SEL_SYNCCAND)
+ peer->unreach += 2;
+ else
+ peer->unreach++;
+ } else {
+ peer->unreach = 0;
+ }
+ hpoll = sys_poll;
+ if (peer->flags & FLAG_BURST &&
+ !peer_unfit(peer))
+ peer->burst = NTP_BURST;
+ }
+
+ /*
+ * Watch for timeout. If ephemeral or preemptable, toss
+ * the rascal; otherwise, bump the poll interval.
+ */
+ if (peer->unreach >= NTP_UNREACH) {
+ if (peer->flags & FLAG_PREEMPT ||
+ !(peer->flags & FLAG_CONFIG)) {
+ peer_clear(peer, "TIME");
+ unpeer(peer);
+ return;
+ } else {
+ hpoll++;
+ }
+ }
+ } else {
+ peer->burst--;
+
+ /*
+ * If a broadcast client at this point, the burst has
+ * concluded, so we switch to client mode and purge the
+ * keylist, since no further transmissions will be made.
+ */
+ if (peer->burst == 0) {
+ if (peer->cast_flags & MDF_BCLNT) {
+ peer->hmode = MODE_BCLIENT;
#ifdef OPENSSL
- key_expire(peer);
+ key_expire(peer);
#endif /* OPENSSL */
- }
- poll_update(peer, hpoll);
- clock_select();
+ }
- /*
- * If ntpdate mode and the clock has not
- * been set and all peers have completed
- * the burst, we declare a successful
- * failure.
- */
- if (mode_ntpdate) {
- peer_ntpdate--;
- if (peer_ntpdate > 0) {
- poll_update(
- peer, hpoll);
- return;
- }
+ /*
+ * If ntpdate mode and the clock has not been
+ * set and all peers have completed the burst,
+ * we declare a successful failure.
+ */
+ if (mode_ntpdate) {
+ peer_ntpdate--;
+ if (peer_ntpdate == 0) {
msyslog(LOG_NOTICE,
"no reply; clock not set");
exit (0);
}
- poll_update(peer, hpoll);
- return;
}
}
}
- peer->outdate = current_time;
/*
- * Do not transmit if in broadcast cclient mode or access has
- * been denied.
+ * Do not transmit if in broadcast client mode.
*/
- if (peer->hmode == MODE_BCLIENT || peer->flash & TEST4) {
- poll_update(peer, hpoll);
- return;
-
- /*
- * Do not transmit in broadcast mode unless we are synchronized.
- */
- } else if (peer->hmode == MODE_BROADCAST && sys_peer == NULL) {
- poll_update(peer, hpoll);
- return;
- }
- peer_xmit(peer);
+ if (peer->hmode != MODE_BCLIENT)
+ peer_xmit(peer);
poll_update(peer, hpoll);
}
+
/*
* receive - Receive Procedure. See section 3.4.3 in the specification.
*/
@@ -306,15 +328,19 @@ receive(
{
register struct peer *peer; /* peer structure pointer */
register struct pkt *pkt; /* receive packet pointer */
+ int hisversion; /* packet version */
+ int hisleap; /* packet leap indicator */
int hismode; /* packet mode */
+ int hisstratum; /* packet stratum */
int restrict_mask; /* restrict bits */
int has_mac; /* length of MAC field */
int authlen; /* offset of MAC field */
- int is_authentic; /* cryptosum ok */
+ int is_authentic = 0; /* cryptosum ok */
keyid_t skeyid = 0; /* key ID */
struct sockaddr_storage *dstadr_sin; /* active runway */
struct peer *peer2; /* aux peer structure pointer */
- l_fp p_org; /* originate timestamp */
+ l_fp p_org; /* origin timestamp */
+ l_fp p_rec; /* receive timestamp */
l_fp p_xmt; /* transmit timestamp */
#ifdef OPENSSL
keyid_t tkeyid = 0; /* temporary key ID */
@@ -323,6 +349,7 @@ receive(
int rval; /* cookie snatcher */
#endif /* OPENSSL */
int retcode = AM_NOMATCH;
+ int at_listhead;
/*
* Monitor the packet and get restrictions. Note that the packet
@@ -343,20 +370,24 @@ receive(
sys_badlength++;
return; /* bogus port */
}
- ntp_monitor(rbufp);
- restrict_mask = restrictions(&rbufp->recv_srcadr);
+ at_listhead = ntp_monitor(rbufp);
+ restrict_mask = restrictions(&rbufp->recv_srcadr, at_listhead);
#ifdef DEBUG
if (debug > 1)
- printf("receive: at %ld %s<-%s restrict %03x\n",
+ printf("receive: at %ld %s<-%s flags %x restrict %03x\n",
current_time, stoa(&rbufp->dstadr->sin),
- stoa(&rbufp->recv_srcadr), restrict_mask);
+ stoa(&rbufp->recv_srcadr),
+ rbufp->dstadr->flags, restrict_mask);
#endif
if (restrict_mask & RES_IGNORE) {
sys_restricted++;
- return; /* no anything */
+ return; /* ignore everything */
}
pkt = &rbufp->recv_pkt;
+ hisversion = PKT_VERSION(pkt->li_vn_mode);
+ hisleap = PKT_LEAP(pkt->li_vn_mode);
hismode = (int)PKT_MODE(pkt->li_vn_mode);
+ hisstratum = PKT_TO_STRATUM(pkt->stratum);
if (hismode == MODE_PRIVATE) {
if (restrict_mask & RES_NOQUERY) {
sys_restricted++;
@@ -387,10 +418,10 @@ receive(
* Version check must be after the query packets, since they
* intentionally use early version.
*/
- if (PKT_VERSION(pkt->li_vn_mode) == NTP_VERSION) {
+ if (hisversion == NTP_VERSION) {
sys_newversionpkt++; /* new version */
- } else if (!(restrict_mask & RES_VERSION) &&
- PKT_VERSION(pkt->li_vn_mode) >= NTP_OLDVERSION) {
+ } else if (!(restrict_mask & RES_VERSION) && hisversion >=
+ NTP_OLDVERSION) {
sys_oldversionpkt++; /* previous version */
} else {
sys_unknownversion++;
@@ -404,7 +435,7 @@ receive(
* would interpret as client mode.
*/
if (hismode == MODE_UNSPEC) {
- if (PKT_VERSION(pkt->li_vn_mode) == NTP_OLDVERSION) {
+ if (hisversion == NTP_OLDVERSION) {
hismode = MODE_CLIENT;
} else {
sys_badlength++;
@@ -413,35 +444,15 @@ receive(
}
/*
- * Discard broadcast if not enabled as broadcast client. If
- * Autokey, the wildcard interface cannot be used, so dump
- * packets gettiing off the bus at that stop as well. This means
- * that some systems with broken interface code, specifically
- * Linux, will not work with Autokey.
- */
- if (hismode == MODE_BROADCAST) {
- if (!sys_bclient || restrict_mask & RES_NOPEER) {
- sys_restricted++;
- return; /* no client */
- }
-#ifdef OPENSSL
- if (crypto_flags && rbufp->dstadr == any_interface) {
- sys_restricted++;
- return; /* no client */
- }
-#endif /* OPENSSL */
- }
-
- /*
* Parse the extension field if present. We figure out whether
* an extension field is present by measuring the MAC size. If
- * the number of words following the packet header is 0 or 1, no
- * MAC is present and the packet is not authenticated. If 1, the
- * packet is a reply to a previous request that failed to
- * authenticate. If 3, the packet is authenticated with DES; if
- * 5, the packet is authenticated with MD5. If greater than 5,
- * an extension field is present. If 2 or 4, the packet is a
- * runt and goes poof! with a brilliant flash.
+ * the number of words following the packet header is 0, no MAC
+ * is present and the packet is not authenticated. If 1, the
+ * packet is a crypto-NAK; if 3, the packet is authenticated
+ * with DES; if 5, the packet is authenticated with MD5. If 2 or
+ * 4, the packet is a runt and discarded forthwith. If greater
+ * than 5, an extension field is present, so we subtract the
+ * length of the field and go around again.
*/
authlen = LEN_PKT_NOMAC;
has_mac = rbufp->recv_length - authlen;
@@ -491,21 +502,58 @@ receive(
* address used to construct the autokey is the unicast address
* of the interface. However, if the sender is a broadcaster,
* the interface broadcast address is used instead.
- * Notwithstanding this technobabble, if the sender is a
+ & Notwithstanding this technobabble, if the sender is a
* multicaster, the broadcast address is null, so we use the
* unicast address anyway. Don't ask.
*/
- peer = findpeer(&rbufp->recv_srcadr, rbufp->dstadr, rbufp->fd,
- hismode, &retcode);
- is_authentic = 0;
+ peer = findpeer(&rbufp->recv_srcadr, rbufp->dstadr, hismode,
+ &retcode);
dstadr_sin = &rbufp->dstadr->sin;
+ NTOHL_FP(&pkt->org, &p_org);
+ NTOHL_FP(&pkt->rec, &p_rec);
+ NTOHL_FP(&pkt->xmt, &p_xmt);
+
+ /*
+ * Authentication is conditioned by three switches:
+ *
+ * NOPEER (RES_NOPEER) do not mobilize an association unless
+ * authenticated
+ * NOTRUST (RES_DONTTRUST) do not allow access unless
+ * authenticated (implies NOPEER)
+ * enable (sys_authenticate) master NOPEER switch, by default
+ * on
+ *
+ * The NOPEER and NOTRUST can be specified on a per-client basis
+ * using the restrict command. The enable switch if on implies
+ * NOPEER for all clients. There are four outcomes:
+ *
+ * NONE The packet has no MAC.
+ * OK the packet has a MAC and authentication succeeds
+ * ERROR the packet has a MAC and authentication fails
+ * CRYPTO crypto-NAK. The MAC has four octets only.
+ *
+ * Note: The AUTH(x, y) macro is used to filter outcomes. If x
+ * is zero, acceptable outcomes of y are NONE and OK. If x is
+ * one, the only acceptable outcome of y is OK.
+ */
if (has_mac == 0) {
+ is_authentic = AUTH_NONE; /* not required */
#ifdef DEBUG
if (debug)
- printf("receive: at %ld %s<-%s mode %d code %d\n",
- current_time, stoa(&rbufp->dstadr->sin),
- stoa(&rbufp->recv_srcadr), hismode,
- retcode);
+ printf("receive: at %ld %s<-%s mode %d code %d auth %d\n",
+ current_time, stoa(dstadr_sin),
+ stoa(&rbufp->recv_srcadr), hismode, retcode,
+ is_authentic);
+#endif
+ } else if (has_mac == 4) {
+ is_authentic = AUTH_CRYPTO; /* crypto-NAK */
+#ifdef DEBUG
+ if (debug)
+ printf(
+ "receive: at %ld %s<-%s mode %d code %d keyid %08x len %d mac %d auth %d\n",
+ current_time, stoa(dstadr_sin),
+ stoa(&rbufp->recv_srcadr), hismode, retcode,
+ skeyid, authlen, has_mac, is_authentic);
#endif
} else {
#ifdef OPENSSL
@@ -548,8 +596,14 @@ receive(
* broadcast address when available;
* otherwise, use the unicast address
* found when the association was
- * mobilized.
+ * mobilized. However, if this is from
+ * the wildcard interface, game over.
*/
+ if (crypto_flags && rbufp->dstadr ==
+ any_interface) {
+ sys_restricted++;
+ return; /* no wildcard */
+ }
pkeyid = 0;
if (!SOCKNUL(&rbufp->dstadr->bcast))
dstadr_sin =
@@ -588,15 +642,15 @@ receive(
* Compute the cryptosum. Note a clogging attack may
* succeed in bloating the key cache. If an autokey,
* purge it immediately, since we won't be needing it
- * again. If the packet is authentic, it may mobilize an
- * association.
+ * again. If the packet is authentic, it can mobilize an
+ * association. Note that there is no key zero.
*/
- if (authdecrypt(skeyid, (u_int32 *)pkt, authlen,
+ if (!authdecrypt(skeyid, (u_int32 *)pkt, authlen,
has_mac)) {
- is_authentic = 1;
- restrict_mask &= ~RES_DONTTRUST;
- } else {
+ is_authentic = AUTH_ERROR;
sys_badauth++;
+ } else {
+ is_authentic = AUTH_OK;
}
#ifdef OPENSSL
if (skeyid > NTP_MAXKEY)
@@ -608,97 +662,114 @@ receive(
"receive: at %ld %s<-%s mode %d code %d keyid %08x len %d mac %d auth %d\n",
current_time, stoa(dstadr_sin),
stoa(&rbufp->recv_srcadr), hismode, retcode,
- skeyid, authlen, has_mac,
- is_authentic);
+ skeyid, authlen, has_mac, is_authentic);
#endif
}
/*
* The association matching rules are implemented by a set of
- * routines and a table in ntp_peer.c. A packet matching an
- * association is processed by that association. If not and
- * certain conditions prevail, then an ephemeral association is
- * mobilized: a broadcast packet mobilizes a broadcast client
+ * routines and an association table. A packet matching an
+ * association is processed by the peer process for that
+ * association. If there are no errors, an ephemeral association
+ * is mobilized: a broadcast packet mobilizes a broadcast client
* aassociation; a manycast server packet mobilizes a manycast
* client association; a symmetric active packet mobilizes a
- * symmetric passive association. And, the adventure
- * continues...
+ * symmetric passive association.
*/
switch (retcode) {
+
+ /*
+ * This is a client mode packet not matching any association. If
+ * an ordinary client, simply toss a server mode packet back
+ * over the fence. If a manycast client, we have to work a
+ * little harder.
+ */
case AM_FXMIT:
/*
- * This is a client mode packet not matching a known
- * association. If from a manycast client we run a few
- * sanity checks before deciding to send a unicast
- * server response. Otherwise, it must be a client
- * request, so send a server response and go home.
+ * The vanilla case is when this is not a multicast
+ * interface. If authentication succeeds, return a
+ * server mode packet; if not and the key ID is nonzero,
+ * return a crypto-NAK.
*/
- if (sys_manycastserver && (rbufp->dstadr->flags &
- INT_MULTICAST)) {
-
- /*
- * There is no reason to respond to a request if
- * our time is worse than the manycaster or it
- * has already synchronized to us.
- */
- if (sys_peer == NULL ||
- PKT_TO_STRATUM(pkt->stratum) <
- sys_stratum || (sys_cohort &&
- PKT_TO_STRATUM(pkt->stratum) ==
- sys_stratum) ||
- rbufp->dstadr->addr_refid == pkt->refid)
- return; /* manycast dropped */
+ if (!(rbufp->dstadr->flags & INT_MCASTOPEN)) {
+ if (AUTH(restrict_mask & RES_DONTTRUST,
+ is_authentic))
+ fast_xmit(rbufp, MODE_SERVER, skeyid,
+ restrict_mask);
+ else if (is_authentic == AUTH_ERROR)
+ fast_xmit(rbufp, MODE_SERVER, 0,
+ restrict_mask);
+ return; /* hooray */
}
/*
- * Note that we don't require an authentication check
- * here, since we can't set the system clock; but, we do
- * send a crypto-NAK to tell the caller about this.
+ * This must be manycast. Do not respond if not
+ * configured as a manycast server.
*/
- if (has_mac && !is_authentic)
- fast_xmit(rbufp, MODE_SERVER, 0, restrict_mask);
- else
- fast_xmit(rbufp, MODE_SERVER, skeyid,
- restrict_mask);
- return;
+ if (!sys_manycastserver) {
+ sys_restricted++;
+ return; /* not enabled */
+ }
- case AM_MANYCAST:
+ /*
+ * Do not respond if unsynchronized or stratum is below
+ * the floor or at or above the ceiling.
+ */
+ if (sys_leap == LEAP_NOTINSYNC || sys_stratum <
+ sys_floor || sys_stratum >= sys_ceiling)
+ return; /* bad stratum */
/*
- * This is a server mode packet returned in response to
- * a client mode packet sent to a multicast group
- * address. The originate timestamp is a good nonce to
- * reliably associate the reply with what was sent. If
- * there is no match, that's curious and could be an
- * intruder attempting to clog, so we just ignore it.
- *
- * First, make sure the packet is authentic and not
- * restricted. If so and the manycast association is
- * found, we mobilize a client association and copy
- * pertinent variables from the manycast association to
- * the new client association.
- *
- * There is an implosion hazard at the manycast client,
- * since the manycast servers send the server packet
- * immediately. If the guy is already here, don't fire
- * up a duplicate.
+ * Do not respond if our stratum is greater than the
+ * manycaster or it has already synchronized to us.
*/
- if (restrict_mask & RES_DONTTRUST) {
- sys_restricted++;
- return; /* no trust */
- }
+ if (sys_peer == NULL || hisstratum < sys_stratum ||
+ (sys_cohort && hisstratum == sys_stratum) ||
+ rbufp->dstadr->addr_refid == pkt->refid)
+ return; /* no help */
- if (sys_authenticate && !is_authentic)
- return; /* bad auth */
+ /*
+ * Respond only if authentication succeeds. Don't do a
+ * crypto-NAK, as that would not be useful.
+ */
+ if (AUTH(restrict_mask & RES_DONTTRUST, is_authentic))
+ fast_xmit(rbufp, MODE_SERVER, skeyid,
+ restrict_mask);
- if ((peer2 = findmanycastpeer(rbufp)) == NULL)
- return; /* no assoc match */
+ return; /* hooray */
- if ((peer = newpeer(&rbufp->recv_srcadr, rbufp->dstadr,
- MODE_CLIENT, PKT_VERSION(pkt->li_vn_mode),
- NTP_MINDPOLL, NTP_MAXDPOLL, FLAG_IBURST, MDF_UCAST |
- MDF_ACLNT, 0, skeyid)) == NULL)
+ /*
+ * This is a server mode packet returned in response to a client
+ * mode packet sent to a multicast group address. The origin
+ * timestamp is a good nonce to reliably associate the reply
+ * with what was sent. If there is no match, that's curious and
+ * could be an intruder attempting to clog, so we just ignore
+ * it.
+ *
+ * If the packet is authentic and the manycast association is
+ * found, we mobilize a client association and copy pertinent
+ * variables from the manycast association to the new client
+ * association. If not, just ignore the packet.
+ *
+ * There is an implosion hazard at the manycast client, since
+ * the manycast servers send the server packet immediately. If
+ * the guy is already here, don't fire up a duplicate.
+ */
+ case AM_MANYCAST:
+ if (!AUTH(sys_authenticate | (restrict_mask &
+ (RES_NOPEER | RES_DONTTRUST)), is_authentic))
+ return; /* bad auth */
+
+ if ((peer2 = findmanycastpeer(rbufp)) == NULL) {
+ sys_restricted++;
+ return; /* not enabled */
+ }
+ if ((peer = newpeer(&rbufp->recv_srcadr,
+ rbufp->dstadr, MODE_CLIENT,
+ hisversion, NTP_MINDPOLL, NTP_MAXDPOLL,
+ FLAG_IBURST | FLAG_PREEMPT, MDF_UCAST | MDF_ACLNT,
+ 0, skeyid)) == NULL)
return; /* system error */
/*
@@ -707,260 +778,223 @@ receive(
peer->ttl = peer2->ttl;
break;
- case AM_NEWPASS:
+ /*
+ * This is the first packet received from a broadcast server. If
+ * the packet is authentic and we are enabled as broadcast
+ * client, mobilize a broadcast client association. We don't
+ * kiss any frogs here.
+ */
+ case AM_NEWBCL:
+ if (!AUTH(sys_authenticate | (restrict_mask &
+ (RES_NOPEER | RES_DONTTRUST)), is_authentic))
+ return; /* bad auth */
/*
- * This is the first packet received from a symmetric
- * active peer. First, make sure it is authentic and not
- * restricted. If so, mobilize a passive association.
- * If authentication fails send a crypto-NAK; otherwise,
- * kiss the frog.
+ * Do not respond if unsynchronized or stratum is below
+ * the floor or at or above the ceiling.
*/
- if (restrict_mask & RES_DONTTRUST) {
- sys_restricted++;
- return; /* no trust */
- }
- if (sys_authenticate && !is_authentic) {
- fast_xmit(rbufp, MODE_PASSIVE, 0,
- restrict_mask);
- return; /* bad auth */
- }
- if ((peer = newpeer(&rbufp->recv_srcadr, rbufp->dstadr,
- MODE_PASSIVE, PKT_VERSION(pkt->li_vn_mode),
- NTP_MINDPOLL, NTP_MAXDPOLL, 0, MDF_UCAST, 0,
- skeyid)) == NULL)
- return; /* system error */
-
- break;
+ if (hisleap == LEAP_NOTINSYNC || hisstratum <
+ sys_floor || hisstratum >= sys_ceiling)
+ return; /* bad stratum */
- case AM_NEWBCL:
+ switch (sys_bclient) {
/*
- * This is the first packet received from a broadcast
- * server. First, make sure it is authentic and not
- * restricted and that we are a broadcast client. If so,
- * mobilize a broadcast client association. We don't
- * kiss any frogs here.
+ * If not enabled, just skedaddle.
*/
- if (restrict_mask & RES_DONTTRUST) {
+ case 0:
sys_restricted++;
- return; /* no trust */
- }
- if (sys_authenticate && !is_authentic)
- return; /* bad auth */
-
- if (!sys_bclient)
- return; /* not a client */
+ return; /* not enabled */
- if ((peer = newpeer(&rbufp->recv_srcadr, rbufp->dstadr,
- MODE_CLIENT, PKT_VERSION(pkt->li_vn_mode),
- NTP_MINDPOLL, NTP_MAXDPOLL, FLAG_MCAST |
- FLAG_IBURST, MDF_BCLNT, 0, skeyid)) == NULL)
- return; /* system error */
-#ifdef OPENSSL
/*
- * Danger looms. If this is autokey, go process the
- * extension fields. If something goes wrong, abandon
- * ship and don't trust subsequent packets.
+ * Execute the initial volley in order to calibrate the
+ * propagation delay and run the Autokey protocol, if
+ * enabled.
*/
- if (crypto_flags) {
- if ((rval = crypto_recv(peer, rbufp)) !=
- XEVNT_OK) {
- struct sockaddr_storage mskadr_sin;
-
- unpeer(peer);
- sys_restricted++;
- SET_HOSTMASK(&mskadr_sin,
- rbufp->recv_srcadr.ss_family);
- hack_restrict(RESTRICT_FLAGS,
- &rbufp->recv_srcadr, &mskadr_sin,
- 0, RES_DONTTRUST | RES_TIMEOUT);
-#ifdef DEBUG
- if (debug)
- printf(
- "packet: bad exten %x\n",
- rval);
-#endif
- }
- }
+ case 1:
+ if ((peer = newpeer(&rbufp->recv_srcadr,
+ rbufp->dstadr, MODE_CLIENT, hisversion,
+ NTP_MINDPOLL, NTP_MAXDPOLL, FLAG_MCAST |
+ FLAG_IBURST, MDF_BCLNT, 0, skeyid)) ==
+ NULL)
+ return; /* system error */
+#ifdef OPENSSL
+ if (skeyid > NTP_MAXKEY)
+ crypto_recv(peer, rbufp);
#endif /* OPENSSL */
- return;
-
- case AM_POSSBCL:
+ return; /* hooray */
- /*
- * This is a broadcast packet received in client mode.
- * It could happen if the initial client/server volley
- * is not complete before the next broadcast packet is
- * received. Be liberal in what we accept.
- */
- case AM_PROCPKT:
/*
- * This is a symmetric mode packet received in symmetric
- * mode, a server packet received in client mode or a
- * broadcast packet received in broadcast client mode.
- * If it is restricted, this is very strange because it
- * is rude to send a packet to a restricted address. If
- * anyway, flash a restrain kiss and skedaddle to
- * Seattle. If not authentic, leave a light on and
- * continue.
+ * Do not execute the initial volley.
*/
- peer->flash = 0;
- if (restrict_mask & RES_DONTTRUST) {
- sys_restricted++;
- if (peer->flags & FLAG_CONFIG)
- peer_clear(peer, "RSTR");
- else
- unpeer(peer);
- return; /* no trust */
+ case 2:
+#ifdef OPENSSL
+ /*
+ * If a two-way exchange is not possible,
+ * neither is Autokey.
+ */
+ if (skeyid > NTP_MAXKEY) {
+ msyslog(LOG_INFO,
+ "receive: autokey requires two-way communication");
+ return; /* no autokey */
+ }
+#endif /* OPENSSL */
+ if ((peer = newpeer(&rbufp->recv_srcadr,
+ rbufp->dstadr, MODE_BCLIENT, hisversion,
+ NTP_MINDPOLL, NTP_MAXDPOLL, 0, MDF_BCLNT, 0,
+ skeyid)) == NULL)
+ return; /* system error */
}
- if (has_mac && !is_authentic)
- peer->flash |= TEST5; /* bad auth */
break;
- default:
+ /*
+ * This is the first packet received from a symmetric active
+ * peer. If the packet is authentic and the first he sent,
+ * mobilize a passive association. If not, kiss the frog.
+ */
+ case AM_NEWPASS:
/*
- * Invalid mode combination. This happens when a passive
- * mode packet arrives and matches another passive
- * association or no association at all, or when a
- * server mode packet arrives and matches a broadcast
- * client association. This is usually the result of
- * reconfiguring a client on-fly. If authenticated
- * passive mode packet, send a crypto-NAK; otherwise,
- * ignore it.
+ * If the inbound packet is correctly authenticated and
+ * enabled, a symmetric passive association is
+ * mobilized. If not but correctly authenticated, a
+ * symmetric active response is sent. If authentication
+ * fails, send a crypto-NAK packet.
*/
- if (has_mac && hismode == MODE_PASSIVE)
- fast_xmit(rbufp, MODE_ACTIVE, 0, restrict_mask);
-#ifdef DEBUG
- if (debug)
- printf("receive: bad protocol %d\n", retcode);
-#endif
- return;
- }
+ if (!AUTH(restrict_mask & RES_DONTTRUST, is_authentic))
+ {
+ if (is_authentic == AUTH_ERROR)
+ fast_xmit(rbufp, MODE_ACTIVE, 0,
+ restrict_mask);
+ return; /* bad auth */
+ }
+ if (!AUTH(sys_authenticate | (restrict_mask &
+ RES_NOPEER), is_authentic)) {
+ fast_xmit(rbufp, MODE_ACTIVE, skeyid,
+ restrict_mask);
+ return; /* hooray */
+ }
+
+ /*
+ * Do not respond if stratum is below the floor.
+ */
+ if (hisstratum < sys_floor)
+ return; /* bad stratum */
+
+ if ((peer = newpeer(&rbufp->recv_srcadr,
+ rbufp->dstadr, MODE_PASSIVE, hisversion,
+ NTP_MINDPOLL, NTP_MAXDPOLL, 0, MDF_UCAST, 0,
+ skeyid)) == NULL)
+ return; /* system error */
+ break;
/*
- * We do a little homework. Note we can get here with an
- * authentication error. We Need to do this in order to validate
- * a crypto-NAK later. Note the order of processing; it is very
- * important to avoid livelocks, deadlocks and lockpicks.
+ * Process regular packet. Nothing special.
*/
- peer->timereceived = current_time;
- peer->received++;
- if (peer->flash & TEST5)
- peer->flags &= ~FLAG_AUTHENTIC;
- else
- peer->flags |= FLAG_AUTHENTIC;
- NTOHL_FP(&pkt->org, &p_org);
- NTOHL_FP(&pkt->xmt, &p_xmt);
+ case AM_PROCPKT:
+ break;
/*
- * If the packet is an old duplicate, we let it through so the
- * extension fields will be processed.
+ * A passive packet matches a passive association. This is
+ * usually the result of reconfiguring a client on the fly. As
+ * this association might be legitamate and this packet an
+ * attempt to deny service, just ignore it.
*/
- if (L_ISEQU(&peer->org, &p_xmt)) { /* test 1 */
- peer->flash |= TEST1; /* dupe */
- /* fall through */
+ case AM_ERR:
+ return;
/*
- * For broadcast server mode, loopback checking is disabled. An
- * authentication error probably means the server restarted or
- * rolled a new private value. If so, dump the association
- * and wait for the next message.
+ * For everything else there is the bit bucket.
*/
- } else if (hismode == MODE_BROADCAST) {
- if (peer->flash & TEST5) {
- unpeer(peer);
- return;
- }
- /* fall through */
-
- /*
- * For server and symmetric modes, if the association transmit
- * timestamp matches the packet originate timestamp, loopback is
- * confirmed. Note in symmetric modes this also happens when the
- * first packet from the active peer arrives at the newly
- * mobilized passive peer. An authentication error probably
- * means the server or peer restarted or rolled a new private
- * value, but could be an intruder trying to stir up trouble.
- * However, if this is a crypto-NAK, we know it is authentic, so
- * dump the association and wait for the next message.
- */
- } else if (L_ISEQU(&peer->xmt, &p_org)) {
- if (peer->flash & TEST5) {
- if (has_mac == 4 && pkt->exten[0] == 0) {
- if (peer->flags & FLAG_CONFIG)
- peer_clear(peer, "AUTH");
- else
- unpeer(peer);
- }
- return;
- }
- /* fall through */
+ default:
+ return;
+ }
+ peer->flash &= ~PKT_TEST_MASK;
/*
- * If the client or passive peer has never transmitted anything,
- * this is either the first message from a symmetric peer or
- * possibly a duplicate received before the transmit timeout.
- * Pass it on.
+ * Next comes a rigorous schedule of timestamp checking. If the
+ * transmit timestamp is zero, the server is horribly broken.
*/
- } else if (L_ISZERO(&peer->xmt)) {
- /* fall through */
+ if (L_ISZERO(&p_xmt)) {
+ return; /* read rfc1305 */
/*
- * Now it gets interesting. We have transmitted at least one
- * packet. If the packet originate timestamp is nonzero, it
- * does not match the association transmit timestamp, which is a
- * loopback error. This error might mean a manycast server has
- * answered a manycast honk from us and we already have an
- * association for him, in which case quietly drop the packet
- * here. It might mean an old duplicate, dropped packet or
- * intruder replay, in which case we drop it later after
- * extension field processing, but never let it touch the time
- * values.
+ * If the transmit timestamp duplicates a previous one, the
+ * packet is a replay. This prevents the bad guys from replaying
+ * the most recent packet, authenticated or not.
*/
- } else if (!L_ISZERO(&p_org)) {
- if (peer->cast_flags & MDF_ACLNT)
- return; /* not a client */
+ } else if (L_ISEQU(&peer->org, &p_xmt)) {
+ peer->flash |= TEST1;
+ peer->oldpkt++;
+ return; /* duplicate packet */
+
- peer->flash |= TEST2;
- /* fall through */
+ /*
+ * If this is a broadcast mode packet, skip further checking.
+ */
+ } else if (hismode != MODE_BROADCAST) {
+ if (L_ISZERO(&p_org))
+ peer->flash |= TEST3; /* protocol unsynch */
+ else if (!L_ISEQU(&p_org, &peer->xmt))
+ peer->flash |= TEST2; /* bogus packet */
+ }
/*
- * The packet originate timestamp is zero, meaning the other guy
- * either didn't receive the first packet or died and restarted.
- * If the association originate timestamp is zero, this is the
- * first packet received, so we pass it on.
+ * Update the origin and destination timestamps. If
+ * unsynchronized or bogus abandon ship. If the crypto machine
+ * breaks, light the crypto bit and plaint the log.
*/
- } else if (L_ISZERO(&peer->org)) {
- /* fall through */
+ peer->org = p_xmt;
+ peer->rec = rbufp->recv_time;
+ if (peer->flash & PKT_TEST_MASK) {
+#ifdef OPENSSL
+ if (crypto_flags && (peer->flags & FLAG_SKEY)) {
+ rval = crypto_recv(peer, rbufp);
+ if (rval != XEVNT_OK) {
+ peer_clear(peer, "CRYP");
+ peer->flash |= TEST9; /* crypto error */
+ }
+ }
+#endif /* OPENSSL */
+ return; /* unsynch */
+ }
/*
- * The other guy has restarted and we are still on the wire. We
- * should demobilize/clear and get out of Dodge. If this is
- * symmetric mode, we should also send a crypto-NAK.
+ * The timestamps are valid and the receive packet matches the
+ * last one sent. If the packet is a crypto-NAK, the server
+ * might have just changed keys. We reset the association
+ * and restart the protocol.
*/
- } else {
- if (hismode == MODE_ACTIVE)
- fast_xmit(rbufp, MODE_PASSIVE, 0,
- restrict_mask);
- else if (hismode == MODE_PASSIVE)
+ if (is_authentic == AUTH_CRYPTO) {
+ peer_clear(peer, "AUTH");
+ return; /* crypto-NAK */
+
+ /*
+ * If the association is authenticated, the key ID is nonzero
+ * and received packets must be authenticated. This 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(peer->keyid || (restrict_mask & RES_DONTTRUST),
+ is_authentic)) {
+ peer->flash |= TEST5;
+ if (hismode == MODE_ACTIVE || hismode == MODE_PASSIVE)
fast_xmit(rbufp, MODE_ACTIVE, 0, restrict_mask);
-#if DEBUG
- if (debug)
- printf("receive: dropped %03x\n", peer->flash);
-#endif
- if (peer->flags & FLAG_CONFIG)
- peer_clear(peer, "DROP");
- else
- unpeer(peer);
- return;
- }
- if (peer->flash & ~TEST2) {
- return;
+ return; /* bad auth */
}
+ /*
+ * That was hard and I am sweaty, but the packet is squeaky
+ * clean. Get on with real work.
+ */
+ peer->received++;
+ peer->timereceived = current_time;
+ if (is_authentic == AUTH_OK)
+ peer->flags |= FLAG_AUTHENTIC;
+ else
+ peer->flags &= ~FLAG_AUTHENTIC;
#ifdef OPENSSL
/*
* More autokey dance. The rules of the cha-cha are as follows:
@@ -981,17 +1015,27 @@ receive(
* matches the previous key ID or ultimate original key ID
* obtained from the broadcaster or symmetric peer. If no
* match, sit the dance and wait for timeout.
+ *
+ * In case of crypto error, fire the orchestra and stop dancing.
+ * This is considered a permanant error, so light the crypto bit
+ * to suppress further requests. If preemptable or ephemeral,
+ * scuttle the ship.
*/
if (crypto_flags && (peer->flags & FLAG_SKEY)) {
- peer->flash |= TEST10;
+ peer->flash |= TEST8;
rval = crypto_recv(peer, rbufp);
if (rval != XEVNT_OK) {
- /* fall through */
+ peer_clear(peer, "CRYP");
+ peer->flash |= TEST9; /* crypto error */
+ if (peer->flags & FLAG_PREEMPT ||
+ !(peer->flags & FLAG_CONFIG))
+ unpeer(peer);
+ return;
} else if (hismode == MODE_SERVER) {
if (skeyid == peer->keyid)
- peer->flash &= ~TEST10;
- } else if (!peer->flash & TEST10) {
+ peer->flash &= ~TEST8;
+ } else if (!(peer->flash & TEST8)) {
peer->pkeyid = skeyid;
} else if ((ap = (struct autokey *)peer->recval.ptr) !=
NULL) {
@@ -1000,7 +1044,7 @@ receive(
for (i = 0; ; i++) {
if (tkeyid == peer->pkeyid ||
tkeyid == ap->key) {
- peer->flash &= ~TEST10;
+ peer->flash &= ~TEST8;
peer->pkeyid = skeyid;
break;
}
@@ -1011,8 +1055,8 @@ receive(
tkeyid, pkeyid, 0);
}
}
- if (!(peer->crypto & CRYPTO_FLAG_PROV)) /* test 11 */
- peer->flash |= TEST11; /* not proventic */
+ if (!(peer->crypto & CRYPTO_FLAG_PROV)) /* test 9 */
+ peer->flash |= TEST8; /* not proventic */
/*
* If the transmit queue is nonempty, clamp the host
@@ -1020,65 +1064,28 @@ receive(
*/
if (peer->cmmd != 0) {
peer->ppoll = pkt->ppoll;
- poll_update(peer, 0);
- }
-
- /*
- * If the return code from extension field processing is
- * not okay, we scrub the association and start over.
- */
- if (rval != XEVNT_OK) {
-
- /*
- * If the return code is bad, the crypto machine
- * may be jammed or an intruder may lurk. First,
- * we demobilize the association, then see if
- * the error is recoverable.
- */
- if (peer->flags & FLAG_CONFIG)
- peer_clear(peer, "CRYP");
- else
- unpeer(peer);
-#ifdef DEBUG
- if (debug)
- printf("packet: bad exten %x\n", rval);
-#endif
- return;
- }
-
- /*
- * If TEST10 is lit, the autokey sequence has broken,
- * which probably means the server has refreshed its
- * private value. We reset the poll interval to the
- & minimum and scrub the association clean.
- */
- if (peer->flash & TEST10 && peer->crypto &
- CRYPTO_FLAG_AUTO) {
- poll_update(peer, peer->minpoll);
-#ifdef DEBUG
- if (debug)
- printf(
- "packet: bad auto %03x\n",
- peer->flash);
-#endif
- if (peer->flags & FLAG_CONFIG)
- peer_clear(peer, "AUTO");
- else
- unpeer(peer);
- return;
+ poll_update(peer, peer->hpoll);
}
}
#endif /* OPENSSL */
/*
- * We have survived the gaunt. Forward to the packet routine. If
- * a symmetric passive association has been mobilized and the
- * association doesn't deserve to live, it will die in the
- * transmit routine if not reachable after timeout. However, if
- * either symmetric mode and the crypto code has something
- * urgent to say, we expedite the response.
+ * The dance is complete and the flash bits have been lit. Toss
+ * the packet over the fence for processing, which may light up
+ * more flashers.
*/
- process_packet(peer, pkt, &rbufp->recv_time);
+ process_packet(peer, pkt);
+
+ /*
+ * Well, that was nice. If TEST4 is lit, either the crypto
+ * machine jammed or a kiss-o'-death packet flew in, either of
+ * which is fatal.
+ */
+ if (peer->flash & TEST4) {
+ msyslog(LOG_INFO, "receive: fatal error %04x for %s",
+ peer->flash, stoa(&peer->srcadr));
+ return;
+ }
}
@@ -1091,23 +1098,15 @@ receive(
void
process_packet(
register struct peer *peer,
- register struct pkt *pkt,
- l_fp *recv_ts
+ register struct pkt *pkt
)
{
- l_fp t34, t21;
+ double t34, t21;
double p_offset, p_del, p_disp;
- double dtemp;
l_fp p_rec, p_xmt, p_org, p_reftime;
l_fp ci;
u_char pmode, pleap, pstratum;
- /*
- * Swap header fields and keep the books. The books amount to
- * the receive timestamp and poll interval in the header. We
- * need these even if there are other problems in order to crank
- * up the state machine.
- */
sys_processed++;
peer->processed++;
p_del = FPTOD(NTOHS_FP(pkt->rootdelay));
@@ -1124,106 +1123,97 @@ process_packet(
pstratum = PKT_TO_STRATUM(pkt->stratum);
/*
- * Test for unsynchronized server.
+ * Test for kiss-o'death packet)
*/
- if (L_ISHIS(&peer->org, &p_xmt)) /* count old packets */
- peer->oldpkt++;
- if (pmode != MODE_BROADCAST && (L_ISZERO(&p_rec) ||
- L_ISZERO(&p_org))) /* test 3 */
- peer->flash |= TEST3; /* unsynch */
- if (L_ISZERO(&p_xmt)) /* test 3 */
- peer->flash |= TEST3; /* unsynch */
+ if (pleap == LEAP_NOTINSYNC && pstratum == STRATUM_UNSPEC) {
+ if (memcmp(&pkt->refid, "DENY", 4) == 0) {
+ peer_clear(peer, "DENY");
+ peer->flash |= TEST4; /* access denied */
+ }
+ }
/*
- * If any tests fail, the packet is discarded leaving only the
- * timestamps, which are enough to get the protocol started. The
- * originate timestamp is copied from the packet transmit
- * timestamp and the receive timestamp is copied from the
- * packet receive timestamp. If okay so far, we save the leap,
- * stratum and refid for billboards.
+ * Capture the header values.
*/
- peer->org = p_xmt;
- peer->rec = *recv_ts;
- if (peer->flash) {
-#ifdef DEBUG
- if (debug)
- printf("packet: bad data %03x from address: %s\n",
- peer->flash, stoa(&peer->srcadr));
-#endif
- return;
- }
+ record_raw_stats(&peer->srcadr, peer->dstadr ? &peer->dstadr->sin : NULL, &p_org,
+ &p_rec, &p_xmt, &peer->rec);
peer->leap = pleap;
- peer->stratum = pstratum;
- peer->refid = pkt->refid;
+ peer->stratum = min(pstratum, STRATUM_UNSPEC);
+ peer->pmode = pmode;
+ peer->ppoll = pkt->ppoll;
+ peer->precision = pkt->precision;
+ peer->rootdelay = p_del;
+ peer->rootdispersion = p_disp;
+ peer->refid = pkt->refid; /* network byte order */
+ peer->reftime = p_reftime;
/*
- * Test for valid peer data (tests 6-8)
+ * Verify the server is synchronized; that is, the leap bits and
+ * stratum are valid, the root delay and root dispersion are
+ * valid and the reference timestamp is not later than the
+ * transmit timestamp.
*/
- ci = p_xmt;
- L_SUB(&ci, &p_reftime);
- LFPTOD(&ci, dtemp);
if (pleap == LEAP_NOTINSYNC || /* test 6 */
- pstratum >= STRATUM_UNSPEC || dtemp < 0)
- peer->flash |= TEST6; /* bad synch */
- if (!(peer->flags & FLAG_CONFIG) && sys_peer != NULL) { /* test 7 */
- if (pstratum > sys_stratum && pmode != MODE_ACTIVE)
- peer->flash |= TEST7; /* bad stratum */
- }
- if (p_del < 0 || p_disp < 0 || p_del / /* test 8 */
- 2 + p_disp >= MAXDISPERSE)
- peer->flash |= TEST8; /* bad peer values */
+ pstratum < sys_floor || pstratum >= sys_ceiling)
+ peer->flash |= TEST6; /* peer not synch */
+ if (p_del < 0 || p_disp < 0 || p_del / /* test 7 */
+ 2 + p_disp >= MAXDISPERSE || !L_ISHIS(&p_xmt, &p_reftime))
+ peer->flash |= TEST7; /* bad header */
/*
* If any tests fail at this point, the packet is discarded.
+ * Note that some flashers may have already been set in the
+ * receive() routine.
*/
- if (peer->flash) {
+ if (peer->flash & PKT_TEST_MASK) {
#ifdef DEBUG
if (debug)
- printf("packet: bad header %03x\n",
+ printf("packet: flash header %04x\n",
peer->flash);
#endif
return;
}
-
- /*
- * The header is valid. Capture the remaining header values and
- * mark as reachable.
- */
- record_raw_stats(&peer->srcadr, &peer->dstadr->sin, &p_org,
- &p_rec, &p_xmt, &peer->rec);
- peer->pmode = pmode;
- peer->ppoll = pkt->ppoll;
- peer->precision = pkt->precision;
- peer->rootdelay = p_del;
- peer->rootdispersion = p_disp;
- peer->reftime = p_reftime;
if (!(peer->reach)) {
report_event(EVNT_REACH, peer);
peer->timereachable = current_time;
}
+ poll_update(peer, peer->hpoll);
peer->reach |= 1;
- peer->unreach = 0;
- poll_update(peer, 0);
/*
- * If running in a client/server association, calculate the
- * clock offset c, roundtrip delay d and dispersion e. We use
- * the equations (reordered from those in the spec). Note that,
- * in a broadcast association, org has been set to the time of
- * last reception. Note the computation of dispersion includes
- * the system precision plus that due to the frequency error
- * since the originate time.
+ * For a client/server association, calculate the clock offset,
+ * roundtrip delay and dispersion. The equations are reordered
+ * from the spec for more efficient use of temporaries. For a
+ * broadcast association, offset the last measurement by the
+ * computed delay during the client/server volley. Note that
+ * org has been set to the time of last reception. Note the
+ * computation of dispersion includes the system precision plus
+ * that due to the frequency error since the origin time.
+ *
+ * It is very important to respect the hazards of overflow. The
+ * only permitted operation on raw timestamps is subtraction,
+ * where the result is a signed quantity spanning from 68 years
+ * in the past to 68 years in the future. To avoid loss of
+ * precision, these calculations are done using 64-bit integer
+ * arithmetic. However, the offset and delay calculations are
+ * sums and differences of these first-order differences, which
+ * if done using 64-bit integer arithmetic, would be valid over
+ * only half that span. Since the typical first-order
+ * differences are usually very small, they are converted to 64-
+ * bit doubles and all remaining calculations done in floating-
+ * point arithmetic. This preserves the accuracy while retaining
+ * the 68-year span.
*
* Let t1 = p_org, t2 = p_rec, t3 = p_xmt, t4 = peer->rec:
*/
- t34 = p_xmt; /* t3 - t4 */
- L_SUB(&t34, &peer->rec);
- t21 = p_rec; /* t2 - t1 */
- L_SUB(&t21, &p_org);
+ ci = p_xmt; /* t3 - t4 */
+ L_SUB(&ci, &peer->rec);
+ LFPTOD(&ci, t34);
+ ci = p_rec; /* t2 - t1 */
+ L_SUB(&ci, &p_org);
+ LFPTOD(&ci, t21);
ci = peer->rec; /* t4 - t1 */
L_SUB(&ci, &p_org);
- LFPTOD(&ci, p_disp);
- p_disp = clock_phi * max(p_disp, LOGTOD(sys_precision));
/*
* If running in a broadcast association, the clock offset is
@@ -1234,48 +1224,29 @@ process_packet(
* MODE_BCLIENT mode. The next broadcast message after that
* computes the broadcast offset and clears FLAG_MCAST.
*/
- ci = t34;
if (pmode == MODE_BROADCAST) {
+ p_offset = t34;
if (peer->flags & FLAG_MCAST) {
- LFPTOD(&ci, p_offset);
peer->estbdelay = peer->offset - p_offset;
if (peer->hmode == MODE_CLIENT)
return;
- peer->flags &= ~FLAG_MCAST;
+ peer->flags &= ~(FLAG_MCAST | FLAG_BURST);
}
- DTOLFP(peer->estbdelay, &t34);
- L_ADD(&ci, &t34);
+ p_offset += peer->estbdelay;
p_del = peer->delay;
+ p_disp = 0;
} else {
- L_ADD(&ci, &t21); /* (t2 - t1) + (t3 - t4) */
- L_RSHIFT(&ci);
- L_SUB(&t21, &t34); /* (t2 - t1) - (t3 - t4) */
- LFPTOD(&t21, p_del);
+ p_offset = (t21 + t34) / 2.;
+ p_del = t21 - t34;
+ LFPTOD(&ci, p_disp);
+ p_disp = LOGTOD(sys_precision) +
+ LOGTOD(peer->precision) + clock_phi * p_disp;
}
p_del = max(p_del, LOGTOD(sys_precision));
- LFPTOD(&ci, p_offset);
- if ((peer->rootdelay + p_del) / 2. + peer->rootdispersion +
- p_disp >= MAXDISPERSE) /* test 9 */
- peer->flash |= TEST9; /* bad root distance */
-
- /*
- * If any flasher bits remain set at this point, abandon ship.
- * Otherwise, forward to the clock filter.
- */
- if (peer->flash) {
-#ifdef DEBUG
- if (debug)
- printf("packet: bad packet data %03x\n",
- peer->flash);
-#endif
- return;
- }
clock_filter(peer, p_offset, p_del, p_disp);
- clock_select();
record_peer_stats(&peer->srcadr, ctlpeerstatus(peer),
- peer->offset, peer->delay, peer->disp,
- SQRT(peer->jitter));
+ peer->offset, peer->delay, peer->disp, peer->jitter);
}
@@ -1285,18 +1256,23 @@ process_packet(
static void
clock_update(void)
{
- u_char oleap;
- u_char ostratum;
+ u_char oleap;
+ u_char ostratum;
+ double dtemp;
/*
- * Reset/adjust the system clock. Do this only if there is a
- * system peer and the peer epoch is not older than the last
- * update.
+ * There must be a system peer at this point. If we just changed
+ * the system peer, but have a newer sample from the old one,
+ * wait until newer data are available.
*/
- if (sys_peer == NULL)
- return;
- if (sys_peer->epoch <= last_time)
+ if (sys_poll < sys_peer->minpoll)
+ sys_poll = sys_peer->minpoll;
+ if (sys_poll > sys_peer->maxpoll)
+ sys_poll = sys_peer->maxpoll;
+ poll_update(sys_peer, sys_poll);
+ if (sys_peer->epoch <= sys_clocktime)
return;
+
#ifdef DEBUG
if (debug)
printf("clock_update: at %ld assoc %d \n", current_time,
@@ -1304,53 +1280,85 @@ clock_update(void)
#endif
oleap = sys_leap;
ostratum = sys_stratum;
- switch (local_clock(sys_peer, sys_offset, sys_syserr)) {
+ switch (local_clock(sys_peer, sys_offset)) {
/*
- * Clock is too screwed up. Just exit for now.
+ * Clock exceeds panic threshold. Life as we know it ends.
*/
case -1:
report_event(EVNT_SYSFAULT, NULL);
exit (-1);
- /*NOTREACHED*/
+ /* not reached */
/*
* Clock was stepped. Flush all time values of all peers.
*/
- case 1:
+ case 2:
clear_all();
- sys_peer = NULL;
+ sys_leap = LEAP_NOTINSYNC;
sys_stratum = STRATUM_UNSPEC;
- memcpy(&sys_refid, "STEP", 4);
- sys_poll = NTP_MINPOLL;
+ sys_peer = NULL;
+ sys_rootdelay = 0;
+ sys_rootdispersion = 0;
+ memcpy(&sys_refid, "STEP", 4);
report_event(EVNT_CLOCKRESET, NULL);
-#ifdef OPENSSL
- if (oleap != LEAP_NOTINSYNC)
- expire_all();
-#endif /* OPENSSL */
break;
/*
- * Update the system stratum, leap bits, root delay, root
- * dispersion, reference ID and reference time. We also update
- * select dispersion and max frequency error. If the leap
- * changes, we gotta reroll the keys.
+ * Clock was slewed. Update the system stratum, leap bits, root
+ * delay, root dispersion, reference ID and reference time. If
+ * the leap changes, we gotta reroll the keys. Except for
+ * reference clocks, the minimum dispersion increment is not
+ * less than sys_mindisp.
*/
- default:
- sys_stratum = (u_char) (sys_peer->stratum + 1);
- if (sys_stratum == 1 || sys_stratum == STRATUM_UNSPEC)
- sys_refid = sys_peer->refid;
- else
- sys_refid = sys_peer_refid;
+ case 1:
+ sys_leap = leap_next;
+ sys_stratum = min(sys_peer->stratum + 1,
+ STRATUM_UNSPEC);
sys_reftime = sys_peer->rec;
- sys_rootdelay = sys_peer->rootdelay + sys_peer->delay;
- sys_leap = leap_consensus;
+
+ /*
+ * In orphan mode the stratum defaults to the orphan
+ * stratum. The root delay is set to a random value
+ * generated at startup. The root dispersion is set from
+ * the peer dispersion; the peer root dispersion is
+ * ignored.
+ */
+ dtemp = sys_peer->disp + clock_phi * (current_time -
+ sys_peer->update) + sys_jitter +
+ fabs(sys_peer->offset);
+#ifdef REFCLOCK
+ if (!(sys_peer->flags & FLAG_REFCLOCK) && dtemp <
+ sys_mindisp)
+ dtemp = sys_mindisp;
+#else
+ if (dtemp < sys_mindisp)
+ dtemp = sys_mindisp;
+#endif /* REFCLOCK */
+ if (sys_stratum >= sys_orphan) {
+ sys_stratum = sys_orphan;
+ sys_rootdelay = sys_peer->delay;
+ sys_rootdispersion = dtemp;
+ } else {
+ sys_rootdelay = sys_peer->delay +
+ sys_peer->rootdelay;
+ sys_rootdispersion = dtemp +
+ sys_peer->rootdispersion;
+ }
if (oleap == LEAP_NOTINSYNC) {
report_event(EVNT_SYNCCHG, NULL);
#ifdef OPENSSL
expire_all();
+ crypto_update();
#endif /* OPENSSL */
}
+ break;
+ /*
+ * Popcorn spike or step threshold exceeded. Pretend it never
+ * happened.
+ */
+ default:
+ break;
}
if (ostratum != sys_stratum)
report_event(EVNT_PEERSTCHG, NULL);
@@ -1363,110 +1371,114 @@ clock_update(void)
void
poll_update(
struct peer *peer,
- int hpoll
+ int mpoll
)
{
-#ifdef OPENSSL
- int oldpoll;
-#endif /* OPENSSL */
+ int hpoll;
+
+ /*
+ * This routine figures out when the next poll should be sent.
+ * That turns out to be wickedly complicated. The big problem is
+ * that sometimes the time for the next poll is in the past.
+ * Watch out for races here between the receive process and the
+ * poll process. The key assertion is that, if nextdate equals
+ * current_time, the call is from the poll process; otherwise,
+ * it is from the receive process.
+ *
+ * First, bracket the poll interval according to the type of
+ * association and options. If a fixed interval is configured,
+ * use minpoll. This primarily is for reference clocks, but
+ * works for any association.
+ */
+ if (peer->flags & FLAG_FIXPOLL) {
+ hpoll = peer->minpoll;
/*
- * A little foxtrot to determine what controls the poll
- * interval. If the peer is reachable, but the last four polls
- * have not been answered, use the minimum. If declared
- * truechimer, use the system poll interval. This allows each
- * association to ramp up the poll interval for useless sources
- * and to clamp it to the minimum when first starting up.
+ * The ordinary case; clamp the poll interval between minpoll
+ * and maxpoll.
*/
+ } else {
+ hpoll = max(min(peer->maxpoll, mpoll), peer->minpoll);
+ }
#ifdef OPENSSL
- oldpoll = peer->kpoll;
+ /*
+ * Bit of crass arrogance at this point. If the poll interval
+ * has changed and we have a keylist, the lifetimes in the
+ * keylist are probably bogus. In this case purge the keylist
+ * and regenerate it later.
+ */
+ if (hpoll != peer->hpoll)
+ key_expire(peer);
#endif /* OPENSSL */
- if (hpoll > 0) {
- if (hpoll > peer->maxpoll)
- peer->hpoll = peer->maxpoll;
- else if (hpoll < peer->minpoll)
- peer->hpoll = peer->minpoll;
- else
- peer->hpoll = (u_char)hpoll;
- }
+ peer->hpoll = hpoll;
/*
- * Bit of adventure here. If during a burst and not a poll, just
- * slink away. If a poll, figure what the next poll should be.
- * If a burst is pending and a reference clock or a pending
- * crypto response, delay for one second. If the first sent in a
- * burst, delay ten seconds for the modem to come up. For others
- * in the burst, delay two seconds.
- *
- * In case of manycast server, make the poll interval, which is
- * axtually the manycast beacon interval, eight times the system
- * poll interval. Normally when the host poll interval settles
- * up to 1024 s, the beacon interval settles up to 2.3 hours.
+ * Now we figure out if there is an override. If during the
+ * crypto protocol and a message is pending, make it wait not
+ * more than two seconds.
*/
#ifdef OPENSSL
if (peer->cmmd != NULL && (sys_leap != LEAP_NOTINSYNC ||
peer->crypto)) {
peer->nextdate = current_time + RESP_DELAY;
+
+ /*
+ * If we get called from the receive routine while a burst is
+ * pending, just slink away. If from the poll routine and a
+ * reference clock or a pending crypto response, delay for one
+ * second. If this is the first sent in a burst, wait for the
+ * modem to come up. For others in the burst, delay two seconds.
+ */
} else if (peer->burst > 0) {
#else /* OPENSSL */
if (peer->burst > 0) {
#endif /* OPENSSL */
- if (hpoll == 0 && peer->nextdate != current_time)
+ if (peer->nextdate != current_time)
return;
#ifdef REFCLOCK
else if (peer->flags & FLAG_REFCLOCK)
peer->nextdate += RESP_DELAY;
-#endif
+#endif /* REFCLOCK */
else if (peer->flags & (FLAG_IBURST | FLAG_BURST) &&
peer->burst == NTP_BURST)
peer->nextdate += sys_calldelay;
else
peer->nextdate += BURST_DELAY;
- } else if (peer->cast_flags & MDF_ACAST) {
- if (sys_survivors >= sys_minclock || peer->ttl >=
- sys_ttlmax)
- peer->kpoll = (u_char) (peer->hpoll + 3);
- else
- peer->kpoll = peer->hpoll;
- peer->nextdate = peer->outdate + RANDPOLL(peer->kpoll);
+ /*
+ * The ordinary case; use the minimum of the host and peer
+ * intervals, but not less than minpoll. In other words,
+ * oversampling is okay but understampling is evil.
+ */
} else {
- peer->kpoll = (u_char) max(min(peer->ppoll,
- peer->hpoll), peer->minpoll);
- peer->nextdate = peer->outdate + RANDPOLL(peer->kpoll);
+ peer->nextdate = peer->outdate +
+ RANDPOLL(max(min(peer->ppoll, hpoll),
+ peer->minpoll));
}
- if (peer->nextdate < current_time)
- peer->nextdate = current_time;
-#ifdef OPENSSL
+
/*
- * Bit of crass arrogance at this point. If the poll interval
- * has changed and we have a keylist, the lifetimes in the
- * keylist are probably bogus. In this case purge the keylist
- * and regenerate it later.
+ * If the time for the next poll has already happened, bring it
+ * up to the next second after this one. This way the only way
+ * to get nexdate == current time is from the poll routine.
*/
- if (peer->kpoll != oldpoll)
- key_expire(peer);
-#endif /* OPENSSL */
+ if (peer->nextdate <= current_time)
+ peer->nextdate = current_time + 1;
#ifdef DEBUG
if (debug > 1)
printf("poll_update: at %lu %s flags %04x poll %d burst %d last %lu next %lu\n",
current_time, ntoa(&peer->srcadr), peer->flags,
- peer->kpoll, peer->burst, peer->outdate,
+ peer->hpoll, peer->burst, peer->outdate,
peer->nextdate);
#endif
}
-
/*
- * clear - clear peer filter registers. See Section 3.4.8 of the spec.
+ * peer_crypto_clear - discard crypto information
*/
void
-peer_clear(
- struct peer *peer, /* peer structure */
- char *ident /* tally lights */
- )
+peer_crypto_clear(
+ struct peer *peer
+ )
{
- u_char oreach, i;
-
/*
* If cryptographic credentials have been acquired, toss them to
* Valhalla. Note that autokeys are ephemeral, in that they are
@@ -1476,41 +1488,88 @@ peer_clear(
* purged, too. This makes it much harder to sneak in some
* unauthenticated data in the clock filter.
*/
- oreach = peer->reach;
+ DPRINTF(1, ("peer_crypto_clear: at %ld next %ld assoc ID %d\n",
+ current_time, peer->nextdate, peer->associd));
+
#ifdef OPENSSL
- key_expire(peer);
+ peer->assoc = 0;
+ peer->crypto = 0;
+
if (peer->pkey != NULL)
EVP_PKEY_free(peer->pkey);
- if (peer->ident_pkey != NULL)
- EVP_PKEY_free(peer->ident_pkey);
+ peer->pkey = NULL;
+
+ peer->digest = NULL; /* XXX MEMLEAK? check whether this needs to be freed in any way - never was freed */
+
if (peer->subject != NULL)
free(peer->subject);
+ peer->subject = NULL;
+
if (peer->issuer != NULL)
free(peer->issuer);
+ peer->issuer = NULL;
+
+ peer->pkeyid = 0;
+
+ peer->pcookie = 0;
+
+ if (peer->ident_pkey != NULL)
+ EVP_PKEY_free(peer->ident_pkey);
+ peer->ident_pkey = NULL;
+
+ memset(&peer->fstamp, 0, sizeof(peer->fstamp));
+
if (peer->iffval != NULL)
BN_free(peer->iffval);
+ peer->iffval = NULL;
+
if (peer->grpkey != NULL)
BN_free(peer->grpkey);
- if (peer->cmmd != NULL)
- free(peer->cmmd);
+ peer->grpkey = NULL;
+
value_free(&peer->cookval);
value_free(&peer->recval);
- value_free(&peer->tai_leap);
+
+ if (peer->cmmd != NULL) {
+ free(peer->cmmd);
+ peer->cmmd = NULL;
+ }
+
+ key_expire(peer);
+
value_free(&peer->encrypt);
- value_free(&peer->sndval);
#endif /* OPENSSL */
+}
+
+/*
+ * peer_clear - clear peer filter registers. See Section 3.4.8 of the spec.
+ */
+void
+peer_clear(
+ struct peer *peer, /* peer structure */
+ char *ident /* tally lights */
+ )
+{
+ int i;
+
+ peer_crypto_clear(peer);
+
+ if (peer == sys_peer)
+ sys_peer = NULL;
/*
* Wipe the association clean and initialize the nonzero values.
*/
memset(CLEAR_TO_ZERO(peer), 0, LEN_CLEAR_TO_ZERO);
- if (peer == sys_peer)
- sys_peer = NULL;
peer->estbdelay = sys_bdelay;
- peer->hpoll = peer->kpoll = peer->minpoll;
peer->ppoll = peer->maxpoll;
- peer->jitter = MAXDISPERSE;
- peer->epoch = current_time;
+ peer->hpoll = peer->minpoll;
+ peer->disp = MAXDISPERSE;
+ peer->jitter = LOGTOD(sys_precision);
+ for (i = 0; i < NTP_SHIFT; i++) {
+ peer->filter_order[i] = i;
+ peer->filter_disp[i] = MAXDISPERSE;
+ }
#ifdef REFCLOCK
if (!(peer->flags & FLAG_REFCLOCK)) {
peer->leap = LEAP_NOTINSYNC;
@@ -1521,43 +1580,25 @@ peer_clear(
peer->leap = LEAP_NOTINSYNC;
peer->stratum = STRATUM_UNSPEC;
memcpy(&peer->refid, ident, 4);
-#endif
- for (i = 0; i < NTP_SHIFT; i++) {
- peer->filter_order[i] = i;
- peer->filter_disp[i] = MAXDISPERSE;
- peer->filter_epoch[i] = current_time;
- }
+#endif /* REFCLOCK */
/*
- * If he dies as a broadcast client, he comes back to life as
- * a broadcast client in client mode in order to recover the
- * initial autokey values.
- */
- if (peer->cast_flags & MDF_BCLNT) {
- peer->flags |= FLAG_MCAST;
- peer->hmode = MODE_CLIENT;
- }
-
- /*
- * Randomize the first poll to avoid bunching, but only if the
- * rascal has never been heard. During initialization use the
- * association count to spread out the polls at one-second
- * intervals.
+ * During initialization use the association count to spread out
+ * the polls at one-second intervals. Othersie, randomize over
+ * the minimum poll interval in order to avoid broadcast
+ * implosion.
*/
peer->nextdate = peer->update = peer->outdate = current_time;
- peer->burst = 0;
- if (oreach)
- poll_update(peer, 0);
- else if (initializing)
- peer->nextdate = current_time + peer_associations;
+ if (initializing)
+ peer->nextdate += peer_associations;
+ else if (peer->hmode == MODE_PASSIVE)
+ peer->nextdate += RESP_DELAY;
else
- peer->nextdate = current_time + (u_int)RANDOM %
- peer_associations;
-#ifdef DEBUG
- if (debug)
- printf("peer_clear: at %ld assoc ID %d refid %s\n",
- current_time, peer->associd, ident);
-#endif
+ peer->nextdate += (ntp_random() & ((1 << NTP_MINDPOLL) -
+ 1));
+
+ DPRINTF(1, ("peer_clear: at %ld next %ld assoc ID %d refid %s\n",
+ current_time, peer->nextdate, peer->associd, ident));
}
@@ -1576,7 +1617,7 @@ clock_filter(
double dst[NTP_SHIFT]; /* distance vector */
int ord[NTP_SHIFT]; /* index vector */
int i, j, k, m;
- double dsp, jit, dtemp, etemp;
+ double dtemp, etemp;
/*
* Shift the new sample into the register and discard the oldest
@@ -1587,14 +1628,13 @@ clock_filter(
* precision. The delay can sometimes swing negative due to
* frequency skew, so it is clamped non-negative.
*/
- dsp = min(LOGTOD(peer->precision) + LOGTOD(sys_precision) +
- sample_disp, MAXDISPERSE);
j = peer->filter_nextpt;
peer->filter_offset[j] = sample_offset;
peer->filter_delay[j] = max(0, sample_delay);
- peer->filter_disp[j] = dsp;
- j++; j %= NTP_SHIFT;
- peer->filter_nextpt = (u_short) j;
+ peer->filter_disp[j] = sample_disp;
+ peer->filter_epoch[j] = current_time;
+ j = (j + 1) % NTP_SHIFT;
+ peer->filter_nextpt = j;
/*
* Update dispersions since the last update and at the same
@@ -1614,26 +1654,31 @@ clock_filter(
dst[i] = MAXDISPERSE;
else if (peer->update - peer->filter_epoch[j] >
allan_xpt)
- dst[i] = MAXDISTANCE + peer->filter_disp[j];
+ dst[i] = sys_maxdist + peer->filter_disp[j];
else
dst[i] = peer->filter_delay[j];
ord[i] = j;
j++; j %= NTP_SHIFT;
}
- peer->filter_epoch[j] = current_time;
/*
- * Sort the samples in both lists by distance.
- */
- for (i = 1; i < NTP_SHIFT; i++) {
- for (j = 0; j < i; j++) {
- if (dst[j] > dst[i]) {
- k = ord[j];
- ord[j] = ord[i];
- ord[i] = k;
- etemp = dst[j];
- dst[j] = dst[i];
- dst[i] = etemp;
+ * If the clock discipline has stabilized, sort the samples in
+ * both lists by distance. Note, we do not displace a higher
+ * distance sample by a lower distance one unless lower by at
+ * least the precision.
+ */
+ if (state == 4) {
+ for (i = 1; i < NTP_SHIFT; i++) {
+ for (j = 0; j < i; j++) {
+ if (dst[j] > dst[i] +
+ LOGTOD(sys_precision)) {
+ k = ord[j];
+ ord[j] = ord[i];
+ ord[i] = k;
+ etemp = dst[j];
+ dst[j] = dst[i];
+ dst[i] = etemp;
+ }
}
}
}
@@ -1641,61 +1686,59 @@ clock_filter(
/*
* Copy the index list to the association structure so ntpq
* can see it later. Prune the distance list to samples less
- * than MAXDISTANCE, but keep at least two valid samples for
+ * than max distance, but keep at least two valid samples for
* jitter calculation.
*/
m = 0;
for (i = 0; i < NTP_SHIFT; i++) {
peer->filter_order[i] = (u_char) ord[i];
if (dst[i] >= MAXDISPERSE || (m >= 2 && dst[i] >=
- MAXDISTANCE))
+ sys_maxdist))
continue;
m++;
}
/*
- * Compute the dispersion and jitter squares. The dispersion
- * is weighted exponentially by NTP_FWEIGHT (0.5) so it is
- * normalized close to 1.0. The jitter is the mean of the square
- * differences relative to the lowest delay sample. If no
- * acceptable samples remain in the shift register, quietly
- * tiptoe home leaving only the dispersion.
+ * Compute the dispersion and jitter. The dispersion is weighted
+ * exponentially by NTP_FWEIGHT (0.5) so it is normalized close
+ * to 1.0. The jitter is the RMS differences relative to the
+ * lowest delay sample. If no acceptable samples remain in the
+ * shift register, quietly tiptoe home leaving only the
+ * dispersion.
*/
- jit = 0;
- peer->disp = 0;
+ peer->disp = peer->jitter = 0;
k = ord[0];
for (i = NTP_SHIFT - 1; i >= 0; i--) {
-
j = ord[i];
peer->disp = NTP_FWEIGHT * (peer->disp +
peer->filter_disp[j]);
if (i < m)
- jit += DIFF(peer->filter_offset[j],
+ peer->jitter += DIFF(peer->filter_offset[j],
peer->filter_offset[k]);
}
/*
* If no acceptable samples remain in the shift register,
* quietly tiptoe home leaving only the dispersion. Otherwise,
- * save the offset, delay and jitter average. Note the jitter
- * must not be less than the system precision.
+ * save the offset, delay and jitter. Note the jitter must not
+ * be less than the precision.
*/
if (m == 0)
return;
+
etemp = fabs(peer->offset - peer->filter_offset[k]);
- dtemp = sqrt(peer->jitter);
peer->offset = peer->filter_offset[k];
peer->delay = peer->filter_delay[k];
if (m > 1)
- jit /= m - 1;
- peer->jitter = max(jit, SQUARE(LOGTOD(sys_precision)));
+ peer->jitter /= m - 1;
+ peer->jitter = max(SQRT(peer->jitter), LOGTOD(sys_precision));
/*
* A new sample is useful only if it is younger than the last
- * one used, but only if the sucker has been synchronized.
+ * one used. Note the order is FIFO if the clock discipline has
+ * not stabilized.
*/
- if (peer->filter_epoch[k] <= peer->epoch && sys_leap !=
- LEAP_NOTINSYNC) {
+ if (peer->filter_epoch[k] <= peer->epoch) {
#ifdef DEBUG
if (debug)
printf("clock_filter: discard %lu\n",
@@ -1710,9 +1753,9 @@ clock_filter(
* last update is less than twice the system poll interval,
* consider the update a popcorn spike and ignore it.
*/
- if (m > 1 && etemp > CLOCK_SGATE * dtemp &&
- (long)(peer->filter_epoch[k] - peer->epoch) < (1 << (sys_poll +
- 1))) {
+ if (etemp > CLOCK_SGATE * peer->jitter && m > 1 &&
+ peer->filter_epoch[k] - peer->epoch < 2. *
+ ULOGTOD(sys_poll)) {
#ifdef DEBUG
if (debug)
printf("clock_filter: popcorn %.6f %.6f\n",
@@ -1723,7 +1766,7 @@ clock_filter(
/*
* The mitigated sample statistics are saved for later
- * processing.
+ * processing. If not in a burst, tickle the select.
*/
peer->epoch = peer->filter_epoch[k];
#ifdef DEBUG
@@ -1731,8 +1774,10 @@ clock_filter(
printf(
"clock_filter: n %d off %.6f del %.6f dsp %.6f jit %.6f, age %lu\n",
m, peer->offset, peer->delay, peer->disp,
- SQRT(peer->jitter), peer->update - peer->epoch);
+ peer->jitter, current_time - peer->epoch);
#endif
+ if (peer->burst == 0 || sys_leap == LEAP_NOTINSYNC)
+ clock_select();
}
@@ -1751,14 +1796,13 @@ clock_select(void)
int i, j, k, n;
int nlist, nl3;
- double d, e, f;
- int allow, sw, osurv;
+ int allow, osurv;
+ double d, e, f, g;
double high, low;
- double synch[NTP_MAXCLOCK], error[NTP_MAXCLOCK];
+ double synch[NTP_MAXASSOC], error[NTP_MAXASSOC];
struct peer *osys_peer;
struct peer *typeacts = NULL;
struct peer *typelocal = NULL;
- struct peer *typepps = NULL;
struct peer *typesystem = NULL;
static int list_alloc = 0;
@@ -1775,16 +1819,17 @@ clock_select(void)
*/
osys_peer = sys_peer;
sys_peer = NULL;
+ sys_pps = NULL;
+ sys_prefer = NULL;
osurv = sys_survivors;
sys_survivors = 0;
- sys_prefer = NULL;
#ifdef LOCKCLOCK
sys_leap = LEAP_NOTINSYNC;
sys_stratum = STRATUM_UNSPEC;
memcpy(&sys_refid, "DOWN", 4);
#endif /* LOCKCLOCK */
nlist = 0;
- for (n = 0; n < HASH_SIZE; n++)
+ for (n = 0; n < NTP_HASH_SIZE; n++)
nlist += peer_hash_count[n];
if (nlist > list_alloc) {
if (list_alloc > 0) {
@@ -1798,9 +1843,9 @@ clock_select(void)
indx_size += 5 * 3 * sizeof(*indx);
peer_list_size += 5 * sizeof(*peer_list);
}
- endpoint = emalloc(endpoint_size);
- indx = emalloc(indx_size);
- peer_list = emalloc(peer_list_size);
+ endpoint = (struct endpoint *)emalloc(endpoint_size);
+ indx = (int *)emalloc(indx_size);
+ peer_list = (struct peer **)emalloc(peer_list_size);
}
/*
@@ -1814,7 +1859,7 @@ clock_select(void)
* bucks and collectively crank the chimes.
*/
nlist = nl3 = 0; /* none yet */
- for (n = 0; n < HASH_SIZE; n++) {
+ for (n = 0; n < NTP_HASH_SIZE; n++) {
for (peer = peer_hash[n]; peer != NULL; peer =
peer->next) {
peer->flags &= ~FLAG_SYSPEER;
@@ -1834,6 +1879,7 @@ clock_select(void)
* nobody else is around. These guys are all
* configured, so we never throw them away.
*/
+#ifdef REFCLOCK
if (peer->refclktype == REFCLK_LOCALCLOCK
#if defined(VMS) && defined(VMS_LOCALUNIT)
/* wjm: VMS_LOCALUNIT taken seriously */
@@ -1842,11 +1888,9 @@ clock_select(void)
#endif /* VMS && VMS_LOCALUNIT */
) {
typelocal = peer;
+#ifndef LOCKCLOCK
if (!(peer->flags & FLAG_PREFER))
continue; /* no local clock */
-#ifdef LOCKCLOCK
- else
- sys_prefer = peer;
#endif /* LOCKCLOCK */
}
if (peer->sstclktype == CTL_SST_TS_TELEPHONE) {
@@ -1854,6 +1898,7 @@ clock_select(void)
if (!(peer->flags & FLAG_PREFER))
continue; /* no acts */
}
+#endif /* REFCLOCK */
/*
* If we get this far, the peer can stay on the
@@ -1873,6 +1918,7 @@ clock_select(void)
for (i = nl3 - 1; i >= 0; i--) {
if (e >= endpoint[indx[i]].val)
break;
+
indx[i + 3] = indx[i];
}
indx[i + 3] = nl3;
@@ -1883,6 +1929,7 @@ clock_select(void)
for (; i >= 0; i--) {
if (e >= endpoint[indx[i]].val)
break;
+
indx[i + 2] = indx[i];
}
indx[i + 2] = nl3;
@@ -1893,6 +1940,7 @@ clock_select(void)
for (; i >= 0; i--) {
if (e >= endpoint[indx[i]].val)
break;
+
indx[i + 1] = indx[i];
}
indx[i + 1] = nl3;
@@ -1925,7 +1973,9 @@ clock_select(void)
* correct synchronization is not possible.
*
* Here, nlist is the number of candidates and allow is the
- * number of falsetickers.
+ * number of falsetickers. Upon exit, the truechimers are the
+ * susvivors with offsets not less than low and not greater than
+ * high. There may be none of them.
*/
low = 1e9;
high = -1e9;
@@ -1976,31 +2026,76 @@ clock_select(void)
}
/*
+ * Clustering algorithm. Construct candidate list in order first
+ * by stratum then by root distance, but keep only the best
+ * NTP_MAXASSOC of them. Scan the list to find falsetickers, who
+ * leave the island immediately. The TRUE peer is always a
+ * truechimer. We must leave at least one peer to collect the
+ * million bucks. If in orphan mode, rascals found with lower
+ * stratum are guaranteed a seat on the bus.
+ */
+ j = 0;
+ for (i = 0; i < nlist; i++) {
+ peer = peer_list[i];
+ if (nlist > 1 && (peer->offset <= low || peer->offset >=
+ high) && !(peer->flags & FLAG_TRUE) &&
+ !(sys_stratum >= sys_orphan && peer->stratum <
+ sys_orphan))
+ continue;
+
+ peer->status = CTL_PST_SEL_DISTSYSPEER;
+
+ /*
+ * The order metric is formed from the stratum times
+ * max distance (1.) plus the root distance. It strongly
+ * favors the lowest stratum, but a higher stratum peer
+ * can capture the clock if the low stratum dominant
+ * hasn't been heard for awhile.
+ */
+ d = root_distance(peer) + peer->stratum * sys_maxdist;
+ if (j >= NTP_MAXASSOC) {
+ if (d >= synch[j - 1])
+ continue;
+ else
+ j--;
+ }
+ for (k = j; k > 0; k--) {
+ if (d >= synch[k - 1])
+ break;
+
+ peer_list[k] = peer_list[k - 1];
+ error[k] = error[k - 1];
+ synch[k] = synch[k - 1];
+ }
+ peer_list[k] = peer;
+ error[k] = peer->jitter;
+ synch[k] = d;
+ j++;
+ }
+ nlist = j;
+
+ /*
* If no survivors remain at this point, check if the local
* clock or modem drivers have been found. If so, nominate one
* of them as the only survivor. Otherwise, give up and leave
* the island to the rats.
*/
- if (high <= low) {
+ if (nlist == 0) {
if (typeacts != 0) {
- typeacts->status = CTL_PST_SEL_SANE;
+ typeacts->status = CTL_PST_SEL_DISTSYSPEER;
peer_list[0] = typeacts;
nlist = 1;
} else if (typelocal != 0) {
- typelocal->status = CTL_PST_SEL_SANE;
+ typelocal->status = CTL_PST_SEL_DISTSYSPEER;
peer_list[0] = typelocal;
nlist = 1;
} else {
if (osys_peer != NULL) {
- sys_poll = NTP_MINPOLL;
NLOG(NLOG_SYNCSTATUS)
msyslog(LOG_INFO,
"no servers reachable");
report_event(EVNT_PEERSTCHG, NULL);
}
- if (osurv > 0)
- resetmanycast();
- return;
}
}
@@ -2010,91 +2105,27 @@ clock_select(void)
* cast out one falsticker. For the Byzantine agreement
* algorithm used here, that number is 4; however, the default
* sys_minsane is 1 to speed initial synchronization. Careful
- * operators will tinker the value to 4 and use at least that
+ * operators will tinker a higher value and use at least that
* number of synchronization sources.
*/
if (nlist < sys_minsane)
return;
- /*
- * Clustering algorithm. Construct candidate list in order first
- * by stratum then by root distance, but keep only the best
- * NTP_MAXCLOCK of them. Scan the list to find falsetickers, who
- * leave the island immediately. If a falseticker is not
- * configured, his association raft is drowned as well, but only
- * if at at least eight poll intervals have gone. We must leave
- * at least one peer to collect the million bucks.
- *
- * Note the hysteresis gimmick that increases the effective
- * distance for those rascals that have not made the final cut.
- * This is to discourage clockhopping. Note also the prejudice
- * against lower stratum peers if the floor is elevated.
- */
- j = 0;
- for (i = 0; i < nlist; i++) {
- peer = peer_list[i];
- if (nlist > 1 && (peer->offset <= low || peer->offset >=
- high)) {
- if (!(peer->flags & FLAG_CONFIG))
- unpeer(peer);
- continue;
- }
- peer->status = CTL_PST_SEL_DISTSYSPEER;
- d = peer->stratum;
- if (d < sys_floor)
- d += sys_floor;
- if (d > sys_ceiling)
- d = STRATUM_UNSPEC;
- d = root_distance(peer) + d * MAXDISTANCE;
- d *= 1. - peer->hyst;
- if (j >= NTP_MAXCLOCK) {
- if (d >= synch[j - 1])
- continue;
- else
- j--;
- }
- for (k = j; k > 0; k--) {
- if (d >= synch[k - 1])
- break;
- peer_list[k] = peer_list[k - 1];
- error[k] = error[k - 1];
- synch[k] = synch[k - 1];
- }
- peer_list[k] = peer;
- error[k] = peer->jitter;
- synch[k] = d;
- j++;
- }
- nlist = j;
- if (nlist == 0) {
-#ifdef DEBUG
- if (debug)
- printf("clock_select: empty intersection interval\n");
-#endif
- return;
- }
- for (i = 0; i < nlist; i++) {
+ for (i = 0; i < nlist; i++)
peer_list[i]->status = CTL_PST_SEL_SELCAND;
-#ifdef DEBUG
- if (debug > 2)
- printf("select: %s distance %.6f jitter %.6f\n",
- ntoa(&peer_list[i]->srcadr), synch[i],
- SQRT(error[i]));
-#endif
- }
-
/*
* Now, vote outlyers off the island by select jitter weighted
- * by root dispersion. Continue voting as long as there are more
- * than sys_minclock survivors and the minimum select jitter
- * squared is greater than the maximum peer jitter squared. Stop
- * if we are about to discard a prefer peer, who of course has
- * the immunity idol.
+ * by root distance. Continue voting as long as there are more
+ * than sys_minclock survivors and the minimum select jitter is
+ * greater than the maximum peer jitter. Stop if we are about to
+ * discard a TRUE or PREFER peer, who of course has the
+ * immunity idol.
*/
while (1) {
d = 1e9;
e = -1e9;
+ f = g = 0;
k = 0;
for (i = 0; i < nlist; i++) {
if (error[i] < d)
@@ -2104,28 +2135,24 @@ clock_select(void)
for (j = 0; j < nlist; j++)
f += DIFF(peer_list[j]->offset,
peer_list[i]->offset);
- f /= nlist - 1;
+ f = SQRT(f / (nlist - 1));
}
if (f * synch[i] > e) {
- sys_selerr = f;
+ g = f;
e = f * synch[i];
k = i;
}
}
- f = max(sys_selerr, SQUARE(LOGTOD(sys_precision)));
+ f = max(f, LOGTOD(sys_precision));
if (nlist <= sys_minclock || f <= d ||
- peer_list[k]->flags & FLAG_PREFER)
+ peer_list[k]->flags & (FLAG_TRUE | FLAG_PREFER))
break;
#ifdef DEBUG
if (debug > 2)
printf(
"select: drop %s select %.6f jitter %.6f\n",
- ntoa(&peer_list[k]->srcadr),
- SQRT(sys_selerr), SQRT(d));
+ ntoa(&peer_list[k]->srcadr), g, d);
#endif
- if (!(peer_list[k]->flags & FLAG_CONFIG) &&
- peer_list[k]->hmode == MODE_CLIENT)
- unpeer(peer_list[k]);
for (j = k + 1; j < nlist; j++) {
peer_list[j - 1] = peer_list[j];
error[j - 1] = error[j];
@@ -2137,158 +2164,178 @@ clock_select(void)
* What remains is a list usually not greater than sys_minclock
* peers. We want only a peer at the lowest stratum to become
* the system peer, although all survivors are eligible for the
- * combining algorithm. First record their order, diddle the
- * flags and clamp the poll intervals. Then, consider each peer
- * in turn and OR the leap bits on the assumption that, if some
- * of them honk nonzero bits, they must know what they are
- * doing. Check for prefer and pps peers at any stratum. Check
- * if the old system peer is among the peers at the lowest
- * stratum. Note that the head of the list is at the lowest
- * stratum and that unsynchronized peers cannot survive this
- * far.
- *
- * Fiddle for hysteresis. Pump it up for a peer only if the peer
- * stratum is at least the floor and there are enough survivors.
- * This minimizes the pain when tossing out rascals beneath the
- * floorboard. Don't count peers with stratum above the ceiling.
- * Manycast is sooo complicated.
- */
- leap_consensus = 0;
- for (i = nlist - 1; i >= 0; i--) {
+ * combining algorithm. Consider each peer in turn and OR the
+ * leap bits on the assumption that, if some of them honk
+ * nonzero bits, they must know what they are doing. Check for
+ * prefer and pps peers at any stratum. Note that the head of
+ * the list is at the lowest stratum and that unsynchronized
+ * peers cannot survive this far.
+ */
+ leap_next = 0;
+ for (i = 0; i < nlist; i++) {
peer = peer_list[i];
- leap_consensus |= peer->leap;
+ sys_survivors++;
+ leap_next |= peer->leap;
peer->status = CTL_PST_SEL_SYNCCAND;
- peer->rank++;
- peer->flags |= FLAG_SYSPEER;
- if (peer->stratum >= sys_floor && osurv >= sys_minclock)
- peer->hyst = HYST;
- else
- peer->hyst = 0;
- if (peer->stratum <= sys_ceiling)
- sys_survivors++;
if (peer->flags & FLAG_PREFER)
sys_prefer = peer;
- if (peer->refclktype == REFCLK_ATOM_PPS &&
- peer->stratum < STRATUM_UNSPEC)
- typepps = peer;
- if (peer->stratum == peer_list[0]->stratum && peer ==
- osys_peer)
+ if (peer == osys_peer)
typesystem = peer;
+#ifdef REFCLOCK
+ if (peer->refclktype == REFCLK_ATOM_PPS)
+ sys_pps = peer;
+#endif /* REFCLOCK */
+#if DEBUG
+ if (debug > 1)
+ printf("cluster: survivor %s metric %.6f\n",
+ ntoa(&peer_list[i]->srcadr), synch[i]);
+#endif
}
/*
- * In manycast client mode we may have spooked a sizeable number
- * of peers that we don't need. If there are at least
- * sys_minclock of them, the manycast message will be turned
- * off. By the time we get here we nay be ready to prune some of
- * them back, but we want to make sure all the candicates have
- * had a chance. If they didn't pass the sanity and intersection
- * tests, they have already been voted off the island.
+ * Anticlockhop provision. Keep the current system peer if it is
+ * a survivor but not first in the list. But do that only HOPPER
+ * times.
*/
- if (sys_survivors < sys_minclock && osurv >= sys_minclock)
- resetmanycast();
+ if (osys_peer == NULL || typesystem == NULL || typesystem ==
+ peer_list[0] || sys_hopper > sys_maxhop) {
+ typesystem = peer_list[0];
+ sys_hopper = 0;
+ } else {
+ peer->selbroken++;
+ }
/*
* Mitigation rules of the game. There are several types of
- * peers that make a difference here: (1) prefer local peers
- * (type REFCLK_LOCALCLOCK with FLAG_PREFER) or prefer modem
- * peers (type REFCLK_NIST_ATOM etc with FLAG_PREFER), (2) pps
- * peers (type REFCLK_ATOM_PPS), (3) remaining prefer peers
- * (flag FLAG_PREFER), (4) the existing system peer, if any, (5)
- * the head of the survivor list. Note that only one peer can be
- * declared prefer. The order of preference is in the order
- * stated. Note that all of these must be at the lowest stratum,
- * i.e., the stratum of the head of the survivor list.
- */
- if (sys_prefer)
- sw = sys_prefer->refclktype == REFCLK_LOCALCLOCK ||
- sys_prefer->sstclktype == CTL_SST_TS_TELEPHONE ||
- !typepps;
- else
- sw = 0;
- if (sw) {
- sys_peer = sys_prefer;
+ * peers that can be selected here: (1) orphan, (2) prefer peer
+ * (flag FLAG_PREFER) (3) pps peers (type REFCLK_ATOM_PPS), (4)
+ * the existing system peer, if any, and (5) the head of the
+ * survivor list.
+ */
+ if (typesystem->stratum >= sys_orphan) {
+
+ /*
+ * If in orphan mode, choose the system peer. If the
+ * lowest distance, we are the orphan parent and the
+ * offset is zero.
+ */
+ sys_peer = typesystem;
sys_peer->status = CTL_PST_SEL_SYSPEER;
- sys_offset = sys_peer->offset;
- sys_syserr = sys_peer->jitter;
+ if (sys_orphandelay < sys_peer->rootdelay) {
+ sys_offset = 0;
+ sys_refid = htonl(LOOPBACKADR);
+ } else {
+ sys_offset = sys_peer->offset;
+ sys_refid = addr2refid(&sys_peer->srcadr);
+ }
+ sys_jitter = LOGTOD(sys_precision);
#ifdef DEBUG
if (debug > 1)
- printf("select: prefer offset %.6f\n",
+ printf("select: orphan offset %.6f\n",
sys_offset);
#endif
- }
-#ifndef LOCKCLOCK
- else if (typepps) {
- sys_peer = typepps;
- sys_peer->status = CTL_PST_SEL_PPS;
- sys_offset = sys_peer->offset;
- sys_syserr = sys_peer->jitter;
- if (!pps_control)
- NLOG(NLOG_SYSEVENT)
- msyslog(LOG_INFO, "pps sync enabled");
- pps_control = current_time;
+ } else if (sys_prefer) {
+
+ /*
+ * If a pps peer is present, choose it; otherwise,
+ * choose the prefer peer.
+ */
+ if (sys_pps) {
+ sys_peer = sys_pps;
+ sys_peer->status = CTL_PST_SEL_PPS;
+ sys_offset = sys_peer->offset;
+ if (!pps_control)
+ NLOG(NLOG_SYSEVENT)
+ msyslog(LOG_INFO,
+ "pps sync enabled");
+ pps_control = current_time;
#ifdef DEBUG
- if (debug > 1)
- printf("select: pps offset %.6f\n",
- sys_offset);
+ if (debug > 1)
+ printf("select: pps offset %.6f\n",
+ sys_offset);
#endif
- } else {
- if (typesystem)
- sys_peer = osys_peer;
+ } else {
+ sys_peer = sys_prefer;
+ sys_peer->status = CTL_PST_SEL_SYSPEER;
+ sys_offset = sys_peer->offset;
+#ifdef DEBUG
+ if (debug > 1)
+ printf("select: prefer offset %.6f\n",
+ sys_offset);
+#endif
+ }
+ if (sys_peer->stratum == STRATUM_REFCLOCK ||
+ sys_peer->stratum == STRATUM_UNSPEC)
+ sys_refid = sys_peer->refid;
else
- sys_peer = peer_list[0];
+ sys_refid = addr2refid(&sys_peer->srcadr);
+ sys_jitter = sys_peer->jitter;
+ } else {
+
+ /*
+ * Otherwise, choose the anticlockhopper.
+ */
+ sys_peer = typesystem;
sys_peer->status = CTL_PST_SEL_SYSPEER;
- sys_peer->rank++;
- sys_offset = clock_combine(peer_list, nlist);
- sys_syserr = sys_peer->jitter + sys_selerr;
+ clock_combine(peer_list, nlist);
+ if (sys_peer->stratum == STRATUM_REFCLOCK ||
+ sys_peer->stratum == STRATUM_UNSPEC)
+ sys_refid = sys_peer->refid;
+ else
+ sys_refid = addr2refid(&sys_peer->srcadr);
+ sys_jitter = SQRT(SQUARE(sys_peer->jitter) +
+ SQUARE(sys_jitter));
#ifdef DEBUG
if (debug > 1)
printf("select: combine offset %.6f\n",
sys_offset);
#endif
}
-#endif /* LOCKCLOCK */
+
+ /*
+ * We have found the alpha male.
+ */
+ sys_peer->flags |= FLAG_SYSPEER;
if (osys_peer != sys_peer) {
char *src;
- if (sys_peer == NULL)
- sys_peer_refid = 0;
- else
- sys_peer_refid = addr2refid(&sys_peer->srcadr);
report_event(EVNT_PEERSTCHG, NULL);
#ifdef REFCLOCK
- if (ISREFCLOCKADR(&sys_peer->srcadr))
+ if (sys_peer->flags & FLAG_REFCLOCK)
src = refnumtoa(&sys_peer->srcadr);
else
-#endif
+#endif /* REFCLOCK */
src = ntoa(&sys_peer->srcadr);
NLOG(NLOG_SYNCSTATUS)
- msyslog(LOG_INFO, "synchronized to %s, stratum=%d", src,
- sys_peer->stratum);
+ msyslog(LOG_INFO, "synchronized to %s, stratum %d",
+ src, sys_peer->stratum);
}
clock_update();
}
+
/*
- * clock_combine - combine offsets from selected peers
+ * clock_combine - compute system offset and jitter from selected peers
*/
-static double
+static void
clock_combine(
- struct peer **peers,
- int npeers
+ struct peer **peers, /* survivor list */
+ int npeers /* number of survivors */
)
{
int i;
- double x, y, z;
+ double x, y, z, w;
- y = z = 0;
+ y = z = w = 0;
for (i = 0; i < npeers; i++) {
x = root_distance(peers[i]);
y += 1. / x;
z += peers[i]->offset / x;
+ w += SQUARE(peers[i]->offset - peers[0]->offset) / x;
}
- return (z / y);
+ sys_offset = z / y;
+ sys_jitter = SQRT(w / y);
}
/*
@@ -2299,14 +2346,22 @@ root_distance(
struct peer *peer
)
{
+ double dist;
+
/*
* Careful squeak here. The value returned must be greater than
- * zero blamed on the peer jitter, which must be at least the
- * square of sys_precision.
+ * the minimum root dispersion in order to avoid clockhop with
+ * highly precise reference clocks. In orphan mode lose the peer
+ * root delay, as that is used by the election algorithm.
*/
- return ((peer->rootdelay + peer->delay) / 2 +
+ if (peer->stratum >= sys_orphan)
+ dist = 0;
+ else
+ dist = peer->rootdelay;
+ dist += max(sys_mindisp, dist + peer->delay) / 2 +
peer->rootdispersion + peer->disp + clock_phi *
- (current_time - peer->update) + SQRT(peer->jitter));
+ (current_time - peer->update) + peer->jitter;
+ return (dist);
}
/*
@@ -2319,20 +2374,62 @@ peer_xmit(
{
struct pkt xpkt; /* transmit packet */
int sendlen, authlen;
- keyid_t xkeyid = 0; /* transmit key ID */
+ keyid_t xkeyid = 0; /* transmit key ID */
l_fp xmt_tx;
+ if (!peer->dstadr) /* don't bother with peers without interface */
+ return;
+
+ /*
+ * This is deliciously complicated. There are three cases.
+ *
+ * case leap stratum refid delay dispersion
+ *
+ * normal system system system system system
+ * orphan child 00 orphan system orphan system
+ * orphan parent 00 orphan loopbk 0 0
+ */
/*
- * Initialize transmit packet header fields.
+ * This is a normal packet. Use the system variables.
*/
- xpkt.li_vn_mode = PKT_LI_VN_MODE(sys_leap, peer->version,
- peer->hmode);
- xpkt.stratum = STRATUM_TO_PKT(sys_stratum);
+ if (sys_stratum < sys_orphan) {
+ xpkt.li_vn_mode = PKT_LI_VN_MODE(sys_leap,
+ peer->version, peer->hmode);
+ xpkt.stratum = STRATUM_TO_PKT(sys_stratum);
+ xpkt.refid = sys_refid;
+ xpkt.rootdelay = HTONS_FP(DTOFP(sys_rootdelay));
+ xpkt.rootdispersion =
+ HTONS_FP(DTOUFP(sys_rootdispersion));
+
+ /*
+ * This is a orphan child packet. The host is synchronized to an
+ * orphan parent. Show leap synchronized, orphan stratum, system
+ * reference ID, orphan root delay and system root dispersion.
+ */
+ } else if (sys_peer != NULL) {
+ xpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
+ peer->version, peer->hmode);
+ xpkt.stratum = STRATUM_TO_PKT(sys_orphan);
+ xpkt.refid = htonl(LOOPBACKADR);
+ xpkt.rootdelay = HTONS_FP(DTOFP(sys_orphandelay));
+ xpkt.rootdispersion =
+ HTONS_FP(DTOUFP(sys_rootdispersion));
+
+ /*
+ * This is an orphan parent. Show leap synchronized, orphan
+ * stratum, loopack reference ID and zero root delay and root
+ * dispersion.
+ */
+ } else {
+ xpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
+ peer->version, peer->hmode);
+ xpkt.stratum = STRATUM_TO_PKT(sys_orphan);
+ xpkt.refid = sys_refid;
+ xpkt.rootdelay = 0;
+ xpkt.rootdispersion = 0;
+ }
xpkt.ppoll = peer->hpoll;
xpkt.precision = sys_precision;
- xpkt.rootdelay = HTONS_FP(DTOFP(sys_rootdelay));
- xpkt.rootdispersion = HTONS_FP(DTOUFP(sys_rootdispersion));
- xpkt.refid = sys_refid;
HTONL_FP(&sys_reftime, &xpkt.reftime);
HTONL_FP(&peer->org, &xpkt.org);
HTONL_FP(&peer->rec, &xpkt.rec);
@@ -2342,23 +2439,25 @@ peer_xmit(
* is authenticated and contains a MAC. If not, the transmitted
* packet is not authenticated.
*
- * In the current I/O semantics the default interface is set
- * until after receiving a packet and setting the right
- * interface. So, the first packet goes out unauthenticated.
- * That's why the really icky test next is here.
+ * It is most important when autokey is in use that the local
+ * interface IP address be known before the first packet is
+ * sent. Otherwise, it is not possible to compute a correct MAC
+ * the recipient will accept. Thus, the I/O semantics have to do
+ * a little more work. In particular, the wildcard interface
+ * might not be usable.
*/
sendlen = LEN_PKT_NOMAC;
if (!(peer->flags & FLAG_AUTHENABLE)) {
get_systime(&peer->xmt);
HTONL_FP(&peer->xmt, &xpkt.xmt);
sendpkt(&peer->srcadr, peer->dstadr, sys_ttl[peer->ttl],
- &xpkt, sendlen);
+ &xpkt, sendlen);
peer->sent++;
#ifdef DEBUG
if (debug)
printf("transmit: at %ld %s->%s mode %d\n",
- current_time, stoa(&peer->dstadr->sin),
- stoa(&peer->srcadr), peer->hmode);
+ current_time, peer->dstadr ? stoa(&peer->dstadr->sin) : "-",
+ stoa(&peer->srcadr), peer->hmode);
#endif
return;
}
@@ -2366,12 +2465,11 @@ peer_xmit(
/*
* The received packet contains a MAC, so the transmitted packet
* must be authenticated. If autokey is enabled, fuss with the
- * various modes; otherwise, private key cryptography is used.
+ * various modes; otherwise, symmetric key cryptography is used.
*/
#ifdef OPENSSL
if (crypto_flags && (peer->flags & FLAG_SKEY)) {
struct exten *exten; /* extension field */
- u_int opcode;
/*
* The Public Key Dance (PKD): Cryptographic credentials
@@ -2428,25 +2526,23 @@ peer_xmit(
key_expire(peer);
}
peer->keyid = xkeyid;
+ exten = NULL;
switch (peer->hmode) {
- /*
- * In broadcast server mode the autokey values are
- * required by the broadcast clients. Push them when a
- * new keylist is generated; otherwise, push the
- * association message so the client can request them at
- * other times.
- */
+ /*
+ * In broadcast server mode the autokey values are
+ * required by the broadcast clients. Push them when a
+ * new keylist is generated; otherwise, push the
+ * association message so the client can request them at
+ * other times.
+ */
case MODE_BROADCAST:
if (peer->flags & FLAG_ASSOC)
exten = crypto_args(peer, CRYPTO_AUTO |
- CRYPTO_RESP, NULL);
+ CRYPTO_RESP, NULL);
else
exten = crypto_args(peer, CRYPTO_ASSOC |
- CRYPTO_RESP, NULL);
- sendlen += crypto_xmit(&xpkt, &peer->srcadr,
- sendlen, exten, 0);
- free(exten);
+ CRYPTO_RESP, NULL);
break;
/*
@@ -2457,25 +2553,22 @@ peer_xmit(
* synchronized, so the agreement must be postponed
* until then. In any case, if a new keylist is
* generated, the autokey values are pushed.
+ *
+ * If the crypto bit is lit, don't send requests.
*/
case MODE_ACTIVE:
case MODE_PASSIVE:
- if (peer->cmmd != NULL) {
- peer->cmmd->associd =
- htonl(peer->associd);
- sendlen += crypto_xmit(&xpkt,
- &peer->srcadr, sendlen, peer->cmmd,
- 0);
- free(peer->cmmd);
- peer->cmmd = NULL;
- }
- exten = NULL;
+ if (peer->flash & TEST9)
+ break;
+ /*
+ * Parameter and certificate.
+ */
if (!peer->crypto)
exten = crypto_args(peer, CRYPTO_ASSOC,
- sys_hostname);
+ sys_hostname);
else if (!(peer->crypto & CRYPTO_FLAG_VALID))
exten = crypto_args(peer, CRYPTO_CERT,
- peer->issuer);
+ peer->issuer);
/*
* Identity. Note we have to sign the
@@ -2483,12 +2576,13 @@ peer_xmit(
* deadlock when the passive peer is walking the
* certificate trail. Awesome.
*/
- else if ((opcode = crypto_ident(peer)) != 0)
- exten = crypto_args(peer, opcode, NULL);
+ else if (!(peer->crypto & CRYPTO_FLAG_VRFY))
+ exten = crypto_args(peer,
+ crypto_ident(peer), NULL);
else if (sys_leap != LEAP_NOTINSYNC &&
- !(peer->crypto & CRYPTO_FLAG_SIGN))
+ !(peer->crypto & CRYPTO_FLAG_SIGN))
exten = crypto_args(peer, CRYPTO_SIGN,
- sys_hostname);
+ sys_hostname);
/*
* Autokey. We request the cookie only when the
@@ -2501,32 +2595,27 @@ peer_xmit(
* the autokey values without being asked.
*/
else if (sys_leap != LEAP_NOTINSYNC &&
- peer->leap != LEAP_NOTINSYNC &&
- !(peer->crypto & CRYPTO_FLAG_AGREE))
+ peer->leap != LEAP_NOTINSYNC &&
+ !(peer->crypto & CRYPTO_FLAG_AGREE))
exten = crypto_args(peer, CRYPTO_COOK,
- NULL);
+ NULL);
else if (peer->flags & FLAG_ASSOC)
exten = crypto_args(peer, CRYPTO_AUTO |
- CRYPTO_RESP, NULL);
+ CRYPTO_RESP, NULL);
else if (!(peer->crypto & CRYPTO_FLAG_AUTO))
exten = crypto_args(peer, CRYPTO_AUTO,
- NULL);
+ NULL);
/*
* Postamble. We trade leapseconds only when the
* server and client are synchronized.
*/
else if (sys_leap != LEAP_NOTINSYNC &&
- peer->leap != LEAP_NOTINSYNC &&
- peer->crypto & CRYPTO_FLAG_TAI &&
- !(peer->crypto & CRYPTO_FLAG_LEAP))
+ peer->leap != LEAP_NOTINSYNC &&
+ peer->crypto & CRYPTO_FLAG_TAI &&
+ !(peer->crypto & CRYPTO_FLAG_LEAP))
exten = crypto_args(peer, CRYPTO_TAI,
- NULL);
- if (exten != NULL) {
- sendlen += crypto_xmit(&xpkt,
- &peer->srcadr, sendlen, exten, 0);
- free(exten);
- }
+ NULL);
break;
/*
@@ -2546,85 +2635,117 @@ peer_xmit(
* requests them and the protocol blinds it using the
* agreed key. It is a protocol error if the client has
* the parameters but the server does not.
+ *
+ * If the crypto bit is lit, don't send requests.
*/
case MODE_CLIENT:
- if (peer->cmmd != NULL) {
- peer->cmmd->associd =
- htonl(peer->associd);
- sendlen += crypto_xmit(&xpkt,
- &peer->srcadr, sendlen, peer->cmmd,
- 0);
- free(peer->cmmd);
- peer->cmmd = NULL;
- }
- exten = NULL;
+ if (peer->flash & TEST9)
+ break;
+ /*
+ * Parameter and certificate.
+ */
if (!peer->crypto)
exten = crypto_args(peer, CRYPTO_ASSOC,
- sys_hostname);
+ sys_hostname);
else if (!(peer->crypto & CRYPTO_FLAG_VALID))
exten = crypto_args(peer, CRYPTO_CERT,
- peer->issuer);
+ peer->issuer);
/*
- * Identity.
+ * Identity
*/
- else if ((opcode = crypto_ident(peer)) != 0)
- exten = crypto_args(peer, opcode, NULL);
+ else if (!(peer->crypto & CRYPTO_FLAG_VRFY))
+ exten = crypto_args(peer,
+ crypto_ident(peer), NULL);
/*
* Autokey
*/
else if (!(peer->crypto & CRYPTO_FLAG_AGREE))
exten = crypto_args(peer, CRYPTO_COOK,
- NULL);
+ NULL);
else if (!(peer->crypto & CRYPTO_FLAG_AUTO) &&
- (peer->cast_flags & MDF_BCLNT))
+ (peer->cast_flags & MDF_BCLNT))
exten = crypto_args(peer, CRYPTO_AUTO,
- NULL);
+ NULL);
/*
* Postamble. We can sign the certificate here,
* since there is no chance of deadlock.
*/
else if (sys_leap != LEAP_NOTINSYNC &&
- !(peer->crypto & CRYPTO_FLAG_SIGN))
+ !(peer->crypto & CRYPTO_FLAG_SIGN))
exten = crypto_args(peer, CRYPTO_SIGN,
- sys_hostname);
+ sys_hostname);
else if (sys_leap != LEAP_NOTINSYNC &&
- peer->crypto & CRYPTO_FLAG_TAI &&
- !(peer->crypto & CRYPTO_FLAG_LEAP))
+ peer->crypto & CRYPTO_FLAG_TAI &&
+ !(peer->crypto & CRYPTO_FLAG_LEAP))
exten = crypto_args(peer, CRYPTO_TAI,
- NULL);
- if (exten != NULL) {
- sendlen += crypto_xmit(&xpkt,
- &peer->srcadr, sendlen, exten, 0);
- free(exten);
- }
+ NULL);
break;
}
/*
+ * Build the extension fields as directed. A response to
+ * a request is always sent, even if an error. If an
+ * error occurs when sending a request, the crypto
+ * machinery broke or was misconfigured. In that case
+ * light the crypto bit to suppress further requests.
+ */
+ if (peer->cmmd != NULL) {
+ peer->cmmd->associd = htonl(peer->associd);
+ sendlen += crypto_xmit(&xpkt, &peer->srcadr,
+ sendlen, peer->cmmd, 0);
+ free(peer->cmmd);
+ peer->cmmd = NULL;
+ }
+ if (exten != NULL) {
+ int ltemp = 0;
+
+ if (exten->opcode != 0) {
+ ltemp = crypto_xmit(&xpkt,
+ &peer->srcadr, sendlen, exten, 0);
+ if (ltemp == 0) {
+ peer->flash |= TEST9; /* crypto error */
+ free(exten);
+ return;
+ }
+ }
+ sendlen += ltemp;
+ free(exten);
+ }
+
+ /*
* If extension fields are present, we must use a
- * private value of zero and force min poll interval.
- * Most intricate.
+ * private cookie value of zero. Don't send if the
+ * crypto bit is set and no extension field is present,
+ * but in that case give back the key. Most intricate.
*/
- if (sendlen > LEN_PKT_NOMAC)
+ if (sendlen > LEN_PKT_NOMAC) {
session_key(&peer->dstadr->sin, &peer->srcadr,
xkeyid, 0, 2);
+ } else if (peer->flash & TEST9) {
+ authtrust(xkeyid, 0);
+ return;
+ }
}
#endif /* OPENSSL */
+
+ /*
+ * Stash the transmit timestamp corrected for the encryption
+ * delay. If autokey, give back the key, as we use keys only
+ * once. Check for errors such as missing keys, buffer overflow,
+ * etc.
+ */
xkeyid = peer->keyid;
get_systime(&peer->xmt);
L_ADD(&peer->xmt, &sys_authdelay);
HTONL_FP(&peer->xmt, &xpkt.xmt);
authlen = authencrypt(xkeyid, (u_int32 *)&xpkt, sendlen);
if (authlen == 0) {
- msyslog(LOG_INFO,
- "transmit: encryption key %d not found", xkeyid);
- if (peer->flags & FLAG_CONFIG)
- peer_clear(peer, "NKEY");
- else
- unpeer(peer);
+ msyslog(LOG_INFO, "transmit: %s key %u not found",
+ stoa(&peer->srcadr), xkeyid);
+ peer->flash |= TEST9; /* no key found */
return;
}
sendlen += authlen;
@@ -2638,7 +2759,7 @@ peer_xmit(
exit (-1);
}
sendpkt(&peer->srcadr, peer->dstadr, sys_ttl[peer->ttl], &xpkt,
- sendlen);
+ sendlen);
/*
* Calculate the encryption delay. Keep the minimum over
@@ -2657,19 +2778,19 @@ peer_xmit(
#ifdef DEBUG
if (debug)
printf(
- "transmit: at %ld %s->%s mode %d keyid %08x len %d mac %d index %d\n",
- current_time, ntoa(&peer->dstadr->sin),
- ntoa(&peer->srcadr), peer->hmode, xkeyid, sendlen -
- authlen, authlen, peer->keynumber);
+ "transmit: at %ld %s->%s mode %d keyid %08x len %d mac %d index %d\n",
+ current_time, peer->dstadr ? ntoa(&peer->dstadr->sin) : "-",
+ ntoa(&peer->srcadr), peer->hmode, xkeyid, sendlen -
+ authlen, authlen, peer->keynumber);
#endif
#else
#ifdef DEBUG
if (debug)
printf(
- "transmit: at %ld %s->%s mode %d keyid %08x len %d mac %d\n",
- current_time, ntoa(&peer->dstadr->sin),
- ntoa(&peer->srcadr), peer->hmode, xkeyid, sendlen -
- authlen, authlen);
+ "transmit: at %ld %s->%s mode %d keyid %08x len %d mac %d\n",
+ current_time, peer->dstadr ? ntoa(&peer->dstadr->sin) : "-",
+ ntoa(&peer->srcadr), peer->hmode, xkeyid, sendlen -
+ authlen, authlen);
#endif
#endif /* OPENSSL */
}
@@ -2699,54 +2820,91 @@ fast_xmit(
/*
* Initialize transmit packet header fields from the receive
* buffer provided. We leave some fields intact as received. If
- * the gazinta was from a multicast address, the gazouta must go
- * out another way.
+ * the gazinta was from a multicast address, the gazoutta must
+ * go out another way.
+ *
+ * The root delay field is special. If the system stratum is
+ * less than the orphan stratum, send the real root delay.
+ * Otherwise, if there is no system peer, send the orphan delay.
+ * Otherwise, we must be an orphan parent, so send zero.
*/
rpkt = &rbufp->recv_pkt;
- if (rbufp->dstadr->flags & INT_MULTICAST)
+ if (rbufp->dstadr->flags & INT_MCASTOPEN)
rbufp->dstadr = findinterface(&rbufp->recv_srcadr);
/*
- * If the packet has picked up a restriction due to either
- * access denied or rate exceeded, decide what to do with it.
+ * This is deliciously complicated. There are four cases.
+ *
+ * case leap stratum refid delay dispersion
+ *
+ * KoD 11 16 KISS system system
+ * normal system system system system system
+ * orphan child 00 orphan system orphan system
+ * orphan parent 00 orphan loopbk 0 0
*/
- if (mask & (RES_DONTTRUST | RES_LIMITED)) {
- char *code = "????";
-
- if (mask & RES_LIMITED) {
- sys_limitrejected++;
- code = "RATE";
- } else if (mask & RES_DONTTRUST) {
- sys_restricted++;
- code = "DENY";
- }
-
- /*
- * Here we light up a kiss-of-death packet. Note the
- * rate limit on these packets. Once a second initialize
- * a bucket counter. Every packet sent decrements the
- * counter until reaching zero. If the counter is zero,
- * drop the kod.
- */
+ /*
+ * This is a kiss-of-death (KoD) packet. Show leap
+ * unsynchronized, stratum zero, reference ID the four-character
+ * kiss code and system root delay. Note the rate limit on these
+ * packets. Once a second initialize a bucket counter. Every
+ * packet sent decrements the counter until reaching zero. If
+ * the counter is zero, drop the kiss.
+ */
+ if (mask & RES_LIMITED) {
+ sys_limitrejected++;
if (sys_kod == 0 || !(mask & RES_DEMOBILIZE))
return;
sys_kod--;
- memcpy(&xpkt.refid, code, 4);
xpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOTINSYNC,
PKT_VERSION(rpkt->li_vn_mode), xmode);
xpkt.stratum = STRATUM_UNSPEC;
- } else {
+ memcpy(&xpkt.refid, "RATE", 4);
+ xpkt.rootdelay = HTONS_FP(DTOFP(sys_rootdelay));
+ xpkt.rootdispersion =
+ HTONS_FP(DTOUFP(sys_rootdispersion));
+
+ /*
+ * This is a normal packet. Use the system variables.
+ */
+ } else if (sys_stratum < sys_orphan) {
xpkt.li_vn_mode = PKT_LI_VN_MODE(sys_leap,
PKT_VERSION(rpkt->li_vn_mode), xmode);
xpkt.stratum = STRATUM_TO_PKT(sys_stratum);
xpkt.refid = sys_refid;
+ xpkt.rootdelay = HTONS_FP(DTOFP(sys_rootdelay));
+ xpkt.rootdispersion =
+ HTONS_FP(DTOUFP(sys_rootdispersion));
+
+ /*
+ * This is a orphan child packet. The host is synchronized to an
+ * orphan parent. Show leap synchronized, orphan stratum, system
+ * reference ID and orphan root delay.
+ */
+ } else if (sys_peer != NULL) {
+ xpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
+ PKT_VERSION(rpkt->li_vn_mode), xmode);
+ xpkt.stratum = STRATUM_TO_PKT(sys_orphan);
+ xpkt.refid = sys_refid;
+ xpkt.rootdelay = HTONS_FP(DTOFP(sys_orphandelay));
+ xpkt.rootdispersion =
+ HTONS_FP(DTOUFP(sys_rootdispersion));
+
+ /*
+ * This is an orphan parent. Show leap synchronized, orphan
+ * stratum, loopack reference ID and zero root delay.
+ */
+ } else {
+ xpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING,
+ PKT_VERSION(rpkt->li_vn_mode), xmode);
+ xpkt.stratum = STRATUM_TO_PKT(sys_orphan);
+ xpkt.refid = htonl(LOOPBACKADR);
+ xpkt.rootdelay = HTONS_FP(DTOFP(0));
+ xpkt.rootdispersion = HTONS_FP(DTOFP(0));
}
xpkt.ppoll = rpkt->ppoll;
xpkt.precision = sys_precision;
- xpkt.rootdelay = HTONS_FP(DTOFP(sys_rootdelay));
- xpkt.rootdispersion =
- HTONS_FP(DTOUFP(sys_rootdispersion));
+ xpkt.rootdispersion = HTONS_FP(DTOUFP(sys_rootdispersion));
HTONL_FP(&sys_reftime, &xpkt.reftime);
xpkt.org = rpkt->xmt;
HTONL_FP(&rbufp->recv_time, &xpkt.rec);
@@ -2773,11 +2931,11 @@ fast_xmit(
/*
* The received packet contains a MAC, so the transmitted packet
- * must be authenticated. For private-key cryptography, use the
- * predefined private keys to generate the cryptosum. For
- * autokey cryptography, use the server private value to
- * generate the cookie, which is unique for every source-
- * destination-key ID combination.
+ * must be authenticated. For symmetric key cryptography, use
+ * the predefined and trusted symmetric keys to generate the
+ * cryptosum. For autokey cryptography, use the server private
+ * value to generate the cookie, which is unique for every
+ * source-destination-key ID combination.
*/
#ifdef OPENSSL
if (xkeyid > NTP_MAXKEY) {
@@ -2794,8 +2952,8 @@ fast_xmit(
*/
cookie = session_key(&rbufp->recv_srcadr,
&rbufp->dstadr->sin, 0, sys_private, 0);
- if (rbufp->recv_length >= (int)(sendlen + MAX_MAC_LEN + 2 *
- sizeof(u_int32))) {
+ if (rbufp->recv_length >= (int)(sendlen + MAX_MAC_LEN +
+ 2 * sizeof(u_int32))) {
session_key(&rbufp->dstadr->sin,
&rbufp->recv_srcadr, xkeyid, 0, 2);
temp32 = CRYPTO_RESP;
@@ -2879,23 +3037,60 @@ key_expire(
* Determine if the peer is unfit for synchronization
*
* A peer is unfit for synchronization if
- * > not reachable
- * > a synchronization loop would form
- * > never been synchronized
- * > stratum undefined or too high
- * > too long without synchronization
- * > designated noselect
+ * > TEST10 bad leap or stratum below floor or at or above ceiling
+ * > TEST11 root distance exceeded
+ * > TEST12 a direct or indirect synchronization loop would form
+ * > TEST13 unreachable or noselect
*/
-static int /* 0 if no, 1 if yes */
+int /* FALSE if fit, TRUE if unfit */
peer_unfit(
struct peer *peer /* peer structure pointer */
)
{
- return (!peer->reach || (peer->stratum > 1 && peer->refid ==
- peer->dstadr->addr_refid) || peer->leap == LEAP_NOTINSYNC ||
- peer->stratum >= STRATUM_UNSPEC || root_distance(peer) >=
- MAXDISTANCE + 2. * clock_phi * ULOGTOD(sys_poll) ||
- peer->flags & FLAG_NOSELECT );
+ int rval = 0;
+
+ /*
+ * A stratum error occurs if (1) the server has never been
+ * synchronized, (2) the server stratum is below the floor or
+ * greater than or equal to the ceiling, (3) the system stratum
+ * is below the orphan stratum and the server stratum is greater
+ * than or equal to the orphan stratum.
+ */
+ if (peer->leap == LEAP_NOTINSYNC || peer->stratum < sys_floor ||
+ peer->stratum >= sys_ceiling || (sys_stratum < sys_orphan &&
+ peer->stratum >= sys_orphan))
+ rval |= TEST10; /* stratum out of bounds */
+
+ /*
+ * A distance error occurs if the root distance is greater than
+ * or equal to the distance threshold plus the increment due to
+ * one poll interval.
+ */
+ if (root_distance(peer) >= sys_maxdist + clock_phi *
+ ULOGTOD(sys_poll))
+ rval |= TEST11; /* distance exceeded */
+
+ /*
+ * A loop error occurs if the remote peer is synchronized to the
+ * local peer of if the remote peer is synchronized to the same
+ * server as the local peer, but only if the remote peer is not
+ * the orphan parent.
+ */
+ if (peer->stratum > 1 && peer->refid != htonl(LOOPBACKADR) &&
+ ((!peer->dstadr || peer->refid == peer->dstadr->addr_refid) ||
+ peer->refid == sys_refid))
+ rval |= TEST12; /* synch loop */
+
+ /*
+ * An unreachable error occurs if the server is unreachable or
+ * the noselect bit is set.
+ */
+ if (!peer->reach || peer->flags & FLAG_NOSELECT)
+ rval |= TEST13; /* unreachable */
+
+ peer->flash &= ~PEER_TEST_MASK;
+ peer->flash |= rval;
+ return (rval);
}
@@ -2908,7 +3103,7 @@ peer_unfit(
/*
* This routine calculates the system precision, defined as the minimum
- * of a sequency of differences between successive readings of the
+ * of a sequence of differences between successive readings of the
* system clock. However, if the system clock can be read more than once
* during a tick interval, the difference can be zero or one LSB unit,
* where the LSB corresponds to one nanosecond or one microsecond.
@@ -2992,6 +3187,8 @@ init_proto(void)
sys_precision = (s_char)default_get_precision();
sys_jitter = LOGTOD(sys_precision);
sys_rootdelay = 0;
+ sys_orphandelay = (double)(ntp_random() & 0xffff) / 65536. *
+ sys_maxdist;
sys_rootdispersion = 0;
L_CLR(&sys_reftime);
sys_peer = NULL;
@@ -3074,14 +3271,21 @@ proto_config(
break;
/*
- * Turn on/off facility to listen to broadcasts.
+ * Turn on/off enable broadcasts.
*/
case PROTO_BROADCLIENT:
sys_bclient = (int)value;
- if (value)
- io_setbclient();
- else
+ if (sys_bclient == 0)
io_unsetbclient();
+ else
+ io_setbclient();
+ break;
+
+ /*
+ * Turn on/off PPS discipline.
+ */
+ case PROTO_PPS:
+ pps_enable = (int)value;
break;
/*
@@ -3090,6 +3294,7 @@ proto_config(
case PROTO_MULTICAST_ADD:
if (svalue)
io_multicast_add(*svalue);
+ sys_bclient = 1;
break;
/*
@@ -3115,60 +3320,97 @@ proto_config(
break;
/*
- * Require authentication to mobilize ephemeral associations.
+ * Turn on/off authentication to mobilize ephemeral
+ * associations.
*/
case PROTO_AUTHENTICATE:
sys_authenticate = (int)value;
break;
/*
- * Turn on/off PPS discipline.
+ * Set minimum number of survivors.
*/
- case PROTO_PPS:
- pps_enable = (int)value;
+ case PROTO_MINCLOCK:
+ sys_minclock = (int)dvalue;
break;
/*
- * Set the minimum number of survivors.
+ * Set maximum number of preemptable associations.
*/
- case PROTO_MINCLOCK:
- sys_minclock = (int)dvalue;
+ case PROTO_MAXCLOCK:
+ sys_maxclock = (int)dvalue;
break;
/*
- * Set the minimum number of candidates.
+ * Set minimum number of survivors.
*/
case PROTO_MINSANE:
sys_minsane = (int)dvalue;
break;
/*
- * Set the stratum floor.
+ * Set stratum floor.
*/
case PROTO_FLOOR:
sys_floor = (int)dvalue;
break;
/*
- * Set the stratum ceiling.
+ * Set stratum ceiling.
*/
case PROTO_CEILING:
sys_ceiling = (int)dvalue;
break;
/*
- * Set the cohort switch.
+ * Set orphan stratum.
+ */
+ case PROTO_ORPHAN:
+ sys_orphan = (int)dvalue;
+ break;
+
+ /*
+ * Set cohort switch.
*/
case PROTO_COHORT:
- sys_cohort= (int)dvalue;
+ sys_cohort = (int)dvalue;
+ break;
+
+ /*
+ * Set minimum dispersion increment.
+ */
+ case PROTO_MINDISP:
+ sys_mindisp = dvalue;
break;
+
/*
- * Set the adjtime() resolution (s).
+ * Set maximum distance (select threshold).
+ */
+ case PROTO_MAXDIST:
+ sys_maxdist = dvalue;
+ break;
+
+ /*
+ * Set anticlockhop threshold.
+ */
+ case PROTO_MAXHOP:
+ sys_maxhop = (int)dvalue;
+ break;
+
+ /*
+ * Set adjtime() resolution (s).
*/
case PROTO_ADJ:
sys_tick = dvalue;
break;
+ /*
+ * Set manycast beacon interval.
+ */
+ case PROTO_BEACON:
+ sys_beacon = (int)dvalue;
+ break;
+
#ifdef REFCLOCK
/*
* Turn on/off refclock calibrate
@@ -3176,15 +3418,15 @@ proto_config(
case PROTO_CAL:
cal_enable = (int)value;
break;
-#endif
+#endif /* REFCLOCK */
default:
/*
* Log this error.
*/
msyslog(LOG_INFO,
- "proto_config: illegal item %d, value %ld",
- item, value);
+ "proto_config: illegal item %d, value %ld", item,
+ value);
}
}
diff --git a/contrib/ntp/ntpd/ntp_refclock.c b/contrib/ntp/ntpd/ntp_refclock.c
index 172fbda..a29ef08 100644
--- a/contrib/ntp/ntpd/ntp_refclock.c
+++ b/contrib/ntp/ntpd/ntp_refclock.c
@@ -30,10 +30,6 @@
# endif
#endif /* TTYCLK */
-#ifdef HAVE_PPSCLOCK_H
-#include <sys/ppsclock.h>
-#endif /* HAVE_PPSCLOCK_H */
-
#ifdef KERNEL_PLL
#include "ntp_syscall.h"
#endif /* KERNEL_PLL */
@@ -63,18 +59,21 @@
* which is used for all peer-specific processing and contains a pointer
* to the refclockproc structure, which in turn containes a pointer to
* the unit structure, if used. The peer structure is identified by an
- * interface address in the dotted quad form 127.127.t.u (for now only IPv4
- * addresses are used, so we need to be sure the address is it), where t is
- * the clock type and u the unit. Some legacy drivers derive the
- * refclockproc structure pointer from the table typeunit[type][unit].
- * This interface is strongly discouraged and may be abandoned in
- * future.
+ * interface address in the dotted quad form 127.127.t.u (for now only
+ * IPv4 addresses are used, so we need to be sure the address is it),
+ * where t is the clock type and u the unit. Some legacy drivers derive
+ * the refclockproc structure pointer from the table
+ * typeunit[type][unit]. This interface is strongly discouraged and may
+ * be abandoned in future.
*/
#define MAXUNIT 4 /* max units */
#define FUDGEFAC .1 /* fudge correction factor */
+#define LF 0x0a /* ASCII LF */
-int fdpps; /* pps file descriptor */
-int cal_enable; /* enable refclock calibrate */
+#ifdef PPS
+int fdpps; /* ppsclock legacy */
+#endif /* PPS */
+int cal_enable; /* enable refclock calibrate */
/*
* Type/unit peer index. Used to find the peer structure for control and
@@ -93,6 +92,7 @@ static int refclock_cmpl_fp P((const double *, const double *));
#endif /* QSORT_USES_VOID_P */
static int refclock_sample P((struct refclockproc *));
+
/*
* refclock_report - note the occurance of an event
*
@@ -111,37 +111,60 @@ refclock_report(
pp = peer->procptr;
if (pp == NULL)
return;
- if (code == CEVNT_BADREPLY)
- pp->badformat++;
- if (code == CEVNT_BADTIME)
- pp->baddata++;
- if (code == CEVNT_TIMEOUT)
- pp->noreply++;
+
+ switch (code) {
+ case CEVNT_NOMINAL:
+ break;
+
+ case CEVNT_TIMEOUT:
+ pp->noreply++;
+ break;
+
+ case CEVNT_BADREPLY:
+ pp->badformat++;
+ break;
+
+ case CEVNT_FAULT:
+ break;
+
+ case CEVNT_PROP:
+ break;
+
+ case CEVNT_BADDATE:
+ case CEVNT_BADTIME:
+ pp->baddata++;
+ break;
+
+ default:
+ /* shouldn't happen */
+ break;
+ }
+
if (pp->currentstatus != code) {
pp->currentstatus = (u_char)code;
- pp->lastevent = (u_char)code;
+
+ /* RFC1305: copy only iff not CEVNT_NOMINAL */
+ if (code != CEVNT_NOMINAL)
+ pp->lastevent = (u_char)code;
+
if (code == CEVNT_FAULT)
msyslog(LOG_ERR,
- "clock %s event '%s' (0x%02x)",
- refnumtoa(&peer->srcadr),
- ceventstr(code), code);
+ "clock %s event '%s' (0x%02x)",
+ refnumtoa(&peer->srcadr),
+ ceventstr(code), code);
else {
NLOG(NLOG_CLOCKEVENT)
- msyslog(LOG_INFO,
- "clock %s event '%s' (0x%02x)",
- refnumtoa(&peer->srcadr),
- ceventstr(code), code);
+ msyslog(LOG_INFO,
+ "clock %s event '%s' (0x%02x)",
+ refnumtoa(&peer->srcadr),
+ ceventstr(code), code);
}
+
+ /* RFC1305: post peer clock event */
+ report_event(EVNT_PEERCLOCK, peer);
}
-#ifdef DEBUG
- if (debug)
- printf("clock %s event '%s' (0x%02x)\n",
- refnumtoa(&peer->srcadr),
- ceventstr(code), code);
-#endif
}
-
/*
* init_refclock - initialize the reference clock drivers
*
@@ -216,6 +239,7 @@ refclock_newpeer(
pp = (struct refclockproc *)emalloc(sizeof(struct refclockproc));
if (pp == NULL)
return (0);
+
memset((char *)pp, 0, sizeof(struct refclockproc));
typeunit[clktype][unit] = peer;
peer->procptr = pp;
@@ -225,9 +249,10 @@ refclock_newpeer(
*/
peer->refclktype = clktype;
peer->refclkunit = (u_char)unit;
- peer->flags |= FLAG_REFCLOCK;
- peer->maxpoll = peer->minpoll;
+ peer->flags |= FLAG_REFCLOCK | FLAG_FIXPOLL;
+ peer->leap = LEAP_NOTINSYNC;
peer->stratum = STRATUM_REFCLOCK;
+ peer->ppoll = peer->maxpoll;
pp->type = clktype;
pp->timestarted = current_time;
@@ -252,8 +277,6 @@ refclock_newpeer(
refclock_unpeer(peer);
return (0);
}
- peer->hpoll = peer->minpoll;
- peer->ppoll = peer->maxpoll;
peer->refid = pp->refid;
return (1);
}
@@ -276,6 +299,7 @@ refclock_unpeer(
*/
if (!peer->procptr)
return;
+
clktype = peer->refclktype;
unit = peer->refclkunit;
if (refclock_conf[clktype]->clock_shutdown != noentry)
@@ -286,6 +310,24 @@ refclock_unpeer(
/*
+ * refclock_timer - called once per second for housekeeping.
+ */
+void
+refclock_timer(
+ struct peer *peer /* peer structure pointer */
+ )
+{
+ u_char clktype;
+ int unit;
+
+ clktype = peer->refclktype;
+ unit = peer->refclkunit;
+ if (refclock_conf[clktype]->clock_timer != noentry)
+ (refclock_conf[clktype]->clock_timer)(unit, peer);
+}
+
+
+/*
* refclock_transmit - simulate the transmit procedure
*
* This routine implements the NTP transmit procedure for a reference
@@ -300,18 +342,17 @@ refclock_transmit(
{
u_char clktype;
int unit;
- u_long next;
clktype = peer->refclktype;
unit = peer->refclkunit;
peer->sent++;
+ get_systime(&peer->xmt);
/*
* This is a ripoff of the peer transmit routine, but
* specialized for reference clocks. We do a little less
* protocol here and call the driver-specific transmit routine.
*/
- next = peer->outdate;
if (peer->burst == 0) {
u_char oreach;
#ifdef DEBUG
@@ -326,29 +367,26 @@ refclock_transmit(
*/
oreach = peer->reach;
peer->reach <<= 1;
+ peer->outdate = current_time;
if (!peer->reach) {
if (oreach) {
report_event(EVNT_UNREACH, peer);
peer->timereachable = current_time;
- peer_clear(peer, "NONE");
}
} else {
- if (!(oreach & 0x03)) {
+ if (!(oreach & 0x07)) {
clock_filter(peer, 0., 0., MAXDISPERSE);
clock_select();
}
if (peer->flags & FLAG_BURST)
peer->burst = NSTAGE;
}
- next = current_time;
+ } else {
+ peer->burst--;
}
- get_systime(&peer->xmt);
if (refclock_conf[clktype]->clock_poll != noentry)
(refclock_conf[clktype]->clock_poll)(unit, peer);
- peer->outdate = next;
- if (peer->burst > 0)
- peer->burst--;
- poll_update(peer, 0);
+ poll_update(peer, peer->hpoll);
}
@@ -367,10 +405,13 @@ refclock_cmpl_fp(
if (*dp1 < *dp2)
return (-1);
+
if (*dp1 > *dp2)
return (1);
+
return (0);
}
+
#else
static int
refclock_cmpl_fp(
@@ -380,8 +421,10 @@ refclock_cmpl_fp(
{
if (*dp1 < *dp2)
return (-1);
+
if (*dp1 > *dp2)
return (1);
+
return (0);
}
#endif /* QSORT_USES_VOID_P */
@@ -412,6 +455,7 @@ refclock_process_offset(
SAMPLE(doffset + fudge);
}
+
/*
* refclock_process - process a sample from the clock
*
@@ -420,7 +464,13 @@ refclock_process_offset(
* then constructs a new entry in the median filter circular buffer.
* Return success (1) if the data are correct and consistent with the
* converntional calendar.
-*/
+ *
+ * Important for PPS users: Normally, the pp->lastrec is set to the
+ * system time when the on-time character is received and the pp->year,
+ * ..., pp->second decoded and the seconds fraction pp->nsec in
+ * nanoseconds). When a PPS offset is available, pp->nsec is forced to
+ * zero and the fraction for pp->lastrec is set to the PPS offset.
+ */
int
refclock_process(
struct refclockproc *pp /* refclock structure pointer */
@@ -439,6 +489,7 @@ refclock_process(
if (!clocktime(pp->day, pp->hour, pp->minute, pp->second, GMT,
pp->lastrec.l_ui, &pp->yearstart, &offset.l_ui))
return (0);
+
offset.l_uf = 0;
DTOLFP(pp->nsec / 1e9, &ltemp);
L_ADD(&offset, &ltemp);
@@ -447,12 +498,13 @@ refclock_process(
return (1);
}
+
/*
* refclock_sample - process a pile of samples from the clock
*
* This routine implements a recursive median filter to suppress spikes
* in the data, as well as determine a performance statistic. It
- * calculates the mean offset and jitter (squares). A time adjustment
+ * calculates the mean offset and RMS jitter. A time adjustment
* fudgetime1 can be added to the final offset to compensate for various
* systematic errors. The routine returns the number of samples
* processed, which could be zero.
@@ -462,9 +514,9 @@ refclock_sample(
struct refclockproc *pp /* refclock structure pointer */
)
{
- int i, j, k, m, n;
- double offset;
- double off[MAXSTAGE];
+ int i, j, k, m, n;
+ double off[MAXSTAGE];
+ double offset;
/*
* Copy the raw offsets and sort into ascending order. Don't do
@@ -478,15 +530,22 @@ refclock_sample(
}
if (n == 0)
return (0);
+
if (n > 1)
- qsort((char *)off, (size_t)n, sizeof(double), refclock_cmpl_fp);
+ qsort(
+#ifdef QSORT_USES_VOID_P
+ (void *)
+#else
+ (char *)
+#endif
+ off, (size_t)n, sizeof(double), refclock_cmpl_fp);
/*
* Reject the furthest from the median of the samples until
* approximately 60 percent of the samples remain.
*/
i = 0; j = n;
- m = n - (n * 2) / NSTAGE;
+ m = n - (n * 4) / 10;
while ((j - i) > m) {
offset = off[(j + i) / 2];
if (off[j - 1] - offset < offset - off[i])
@@ -498,19 +557,20 @@ refclock_sample(
/*
* Determine the offset and jitter.
*/
- offset = 0;
- for (k = i; k < j; k++)
- offset += off[k];
- pp->offset = offset / m;
- if (m > 1)
- pp->jitter = SQUARE(off[i] - off[j - 1]);
- else
- pp->jitter = 0;
+ pp->offset = 0;
+ pp->jitter = 0;
+ for (k = i; k < j; k++) {
+ pp->offset += off[k];
+ if (k > i)
+ pp->jitter += SQUARE(off[k] - off[k - 1]);
+ }
+ pp->offset /= m;
+ pp->jitter = max(SQRT(pp->jitter / m), LOGTOD(sys_precision));
#ifdef DEBUG
if (debug)
printf(
"refclock_sample: n %d offset %.6f disp %.6f jitter %.6f\n",
- n, pp->offset, pp->disp, SQRT(pp->jitter));
+ n, pp->offset, pp->disp, pp->jitter);
#endif
return (n);
}
@@ -543,17 +603,17 @@ refclock_receive(
* the median filter samples and give the data to the clock
* filter.
*/
- peer->received++;
pp = peer->procptr;
- peer->processed++;
- peer->timereceived = current_time;
peer->leap = pp->leap;
- if (peer->leap == LEAP_NOTINSYNC) {
- refclock_report(peer, CEVNT_FAULT);
+ if (peer->leap == LEAP_NOTINSYNC)
return;
- }
- if (!peer->reach)
+
+ peer->received++;
+ peer->timereceived = current_time;
+ if (!peer->reach) {
report_event(EVNT_REACH, peer);
+ peer->timereachable = current_time;
+ }
peer->reach |= 1;
peer->reftime = pp->lastref;
peer->org = pp->lastrec;
@@ -561,11 +621,11 @@ refclock_receive(
get_systime(&peer->rec);
if (!refclock_sample(pp))
return;
+
clock_filter(peer, pp->offset, 0., pp->jitter);
- clock_select();
record_peer_stats(&peer->srcadr, ctlpeerstatus(peer),
peer->offset, peer->delay, clock_phi * (current_time -
- peer->epoch), SQRT(peer->jitter));
+ peer->epoch), peer->jitter);
if (cal_enable && last_offset < MINDISPERSE) {
#ifdef KERNEL_PLL
if (peer != sys_peer || pll_status & STA_PPSTIME)
@@ -578,28 +638,74 @@ refclock_receive(
}
}
+
/*
* refclock_gtlin - groom next input line and extract timestamp
*
* This routine processes the timecode received from the clock and
- * removes the parity bit and control characters. If a timestamp is
- * present in the timecode, as produced by the tty_clk STREAMS module,
- * it returns that as the timestamp; otherwise, it returns the buffer
- * timestamp. The routine return code is the number of characters in
- * the line.
+ * strips the parity bit and control characters. It returns the number
+ * of characters in the line followed by a NULL character ('\0'), which
+ * is not included in the count. In case of an empty line, the previous
+ * line is preserved.
*/
int
refclock_gtlin(
struct recvbuf *rbufp, /* receive buffer pointer */
- char *lineptr, /* current line pointer */
- int bmax, /* remaining characters in line */
- l_fp *tsptr /* pointer to timestamp returned */
+ char *lineptr, /* current line pointer */
+ int bmax, /* remaining characters in line */
+ l_fp *tsptr /* pointer to timestamp returned */
)
{
- char *dpt, *dpend, *dp;
- int i;
- l_fp trtmp, tstmp;
- char c;
+ char s[BMAX];
+ char *dpt, *dpend, *dp;
+
+ dpt = s;
+ dpend = s + refclock_gtraw(rbufp, s, BMAX - 1, tsptr);
+ if (dpend - dpt > bmax - 1)
+ dpend = dpt + bmax - 1;
+ for (dp = lineptr; dpt < dpend; dpt++) {
+ char c;
+
+ c = *dpt & 0x7f;
+ if (c >= 0x20 && c < 0x7f)
+ *dp++ = c;
+ }
+ if (dp == lineptr)
+ return (0);
+
+ *dp = '\0';
+ return (dp - lineptr);
+}
+
+
+/*
+ * refclock_gtraw - get next line/chunk of data
+ *
+ * This routine returns the raw data received from the clock in both
+ * canonical or raw modes. The terminal interface routines map CR to LF.
+ * In canonical mode this results in two lines, one containing data
+ * followed by LF and another containing only LF. In raw mode the
+ * interface routines can deliver arbitraty chunks of data from one
+ * character to a maximum specified by the calling routine. In either
+ * mode the routine returns the number of characters in the line
+ * followed by a NULL character ('\0'), which is not included in the
+ * count.
+ *
+ * If a timestamp is present in the timecode, as produced by the tty_clk
+ * STREAMS module, it returns that as the timestamp; otherwise, it
+ * returns the buffer timestamp.
+ */
+int
+refclock_gtraw(
+ struct recvbuf *rbufp, /* receive buffer pointer */
+ char *lineptr, /* current line pointer */
+ int bmax, /* remaining characters in line */
+ l_fp *tsptr /* pointer to timestamp returned */
+ )
+{
+ char *dpt, *dpend, *dp;
+ l_fp trtmp, tstmp;
+ int i;
/*
* Check for the presence of a timestamp left by the tty_clock
@@ -611,7 +717,6 @@ refclock_gtlin(
dpt = (char *)rbufp->recv_buffer;
dpend = dpt + rbufp->recv_length;
trtmp = rbufp->recv_time;
-
if (dpend >= dpt + 8) {
if (buftvtots(dpend - 8, &tstmp)) {
L_SUB(&trtmp, &tstmp);
@@ -620,10 +725,12 @@ refclock_gtlin(
if (debug > 1) {
printf(
"refclock_gtlin: fd %d ldisc %s",
- rbufp->fd, lfptoa(&trtmp, 6));
+ rbufp->fd, lfptoa(&trtmp,
+ 6));
get_systime(&trtmp);
L_SUB(&trtmp, &tstmp);
- printf(" sigio %s\n", lfptoa(&trtmp, 6));
+ printf(" sigio %s\n",
+ lfptoa(&trtmp, 6));
}
#endif
dpend -= 8;
@@ -634,34 +741,25 @@ refclock_gtlin(
}
/*
- * Edit timecode to remove control chars. Don't monkey with the
- * line buffer if the input buffer contains no ASCII printing
- * characters.
+ * Copy the raw buffer to the user string. The string is padded
+ * with a NULL, which is not included in the character count.
*/
if (dpend - dpt > bmax - 1)
dpend = dpt + bmax - 1;
- for (dp = lineptr; dpt < dpend; dpt++) {
- c = (char) (*dpt & 0x7f);
- if (c >= ' ')
- *dp++ = c;
- }
+ for (dp = lineptr; dpt < dpend; dpt++)
+ *dp++ = *dpt;
+ *dp = '\0';
i = dp - lineptr;
- if (i > 0)
- *dp = '\0';
#ifdef DEBUG
- if (debug > 1) {
- if (i > 0)
- printf("refclock_gtlin: fd %d time %s timecode %d %s\n",
- rbufp->fd, ulfptoa(&trtmp, 6), i, lineptr);
- else
- printf("refclock_gtlin: fd %d time %s\n",
- rbufp->fd, ulfptoa(&trtmp, 6));
- }
+ if (debug > 1)
+ printf("refclock_gtraw: fd %d time %s timecode %d %s\n",
+ rbufp->fd, ulfptoa(&trtmp, 6), i, lineptr);
#endif
*tsptr = trtmp;
return (i);
}
+
/*
* The following code does not apply to WINNT & VMS ...
*/
@@ -676,24 +774,17 @@ refclock_gtlin(
*/
int
refclock_open(
- char *dev, /* device name pointer */
- int speed, /* serial port speed (code) */
- int lflags /* line discipline flags */
+ char *dev, /* device name pointer */
+ u_int speed, /* serial port speed (code) */
+ u_int lflags /* line discipline flags */
)
{
- int fd, i;
- int flags;
- TTY ttyb, *ttyp;
-#ifdef TIOCMGET
- u_long ltemp;
-#endif /* TIOCMGET */
- int omode;
+ int fd;
+ int omode;
/*
* Open serial port and set default options
*/
- flags = lflags;
-
omode = O_RDWR;
#ifdef O_NONBLOCK
omode |= O_NONBLOCK;
@@ -703,38 +794,54 @@ refclock_open(
#endif
fd = open(dev, omode, 0777);
-
if (fd < 0) {
- msyslog(LOG_ERR, "refclock_open: %s: %m", dev);
+ msyslog(LOG_ERR, "refclock_open %s: %m", dev);
+ return (0);
+ }
+ if (!refclock_setup(fd, speed, lflags)) {
+ close(fd);
return (0);
}
+ if (!refclock_ioctl(fd, lflags)) {
+ close(fd);
+ return (0);
+ }
+ return (fd);
+}
- /*
- * This little jewel lights up the PPS file descriptor if the
- * device name matches the name in the pps line in the
- * configuration file. This is so the atom driver can glom onto
- * the right device. Very silly.
- */
- if (strcmp(dev, pps_device) == 0)
- fdpps = fd;
+/*
+ * refclock_setup - initialize terminal interface structure
+ */
+int
+refclock_setup(
+ int fd, /* file descriptor */
+ u_int speed, /* serial port speed (code) */
+ u_int lflags /* line discipline flags */
+ )
+{
+ int i;
+ TTY ttyb, *ttyp;
+#ifdef PPS
+ fdpps = fd; /* ppsclock legacy */
+#endif /* PPS */
/*
- * The following sections initialize the serial line port in
- * canonical (line-oriented) mode and set the specified line
- * speed, 8 bits and no parity. The modem control, break, erase
- * and kill functions are normally disabled. There is a
- * different section for each terminal interface, as selected at
- * compile time.
+ * By default, the serial line port is initialized in canonical
+ * (line-oriented) mode at specified line speed, 8 bits and no
+ * parity. LF ends the line and CR is mapped to LF. The break,
+ * erase and kill functions are disabled. There is a different
+ * section for each terminal interface, as selected at compile
+ * time. The flag bits can be used to set raw mode and echo.
*/
ttyp = &ttyb;
-
#ifdef HAVE_TERMIOS
+
/*
* POSIX serial line parameters (termios interface)
*/
if (tcgetattr(fd, ttyp) < 0) {
msyslog(LOG_ERR,
- "refclock_open: fd %d tcgetattr: %m", fd);
+ "refclock_setup fd %d tcgetattr: %m", fd);
return (0);
}
@@ -742,51 +849,55 @@ refclock_open(
* Set canonical mode and local connection; set specified speed,
* 8 bits and no parity; map CR to NL; ignore break.
*/
- ttyp->c_iflag = IGNBRK | IGNPAR | ICRNL;
- ttyp->c_oflag = 0;
- ttyp->c_cflag = CS8 | CLOCAL | CREAD;
- (void)cfsetispeed(&ttyb, (u_int)speed);
- (void)cfsetospeed(&ttyb, (u_int)speed);
- ttyp->c_lflag = ICANON;
- for (i = 0; i < NCCS; ++i)
- {
- ttyp->c_cc[i] = '\0';
+ if (speed) {
+ u_int ltemp = 0;
+
+ ttyp->c_iflag = IGNBRK | IGNPAR | ICRNL;
+ ttyp->c_oflag = 0;
+ ttyp->c_cflag = CS8 | CLOCAL | CREAD;
+ if (lflags & LDISC_7O1) {
+ /* HP Z3801A needs 7-bit, odd parity */
+ ttyp->c_cflag = CS7 | PARENB | PARODD | CLOCAL | CREAD;
+ }
+ cfsetispeed(&ttyb, speed);
+ cfsetospeed(&ttyb, speed);
+ for (i = 0; i < NCCS; ++i)
+ ttyp->c_cc[i] = '\0';
+
+#if defined(TIOCMGET) && !defined(SCO5_CLOCK)
+
+ /*
+ * If we have modem control, check to see if modem leads
+ * are active; if so, set remote connection. This is
+ * necessary for the kernel pps mods to work.
+ */
+ if (ioctl(fd, TIOCMGET, (char *)&ltemp) < 0)
+ msyslog(LOG_ERR,
+ "refclock_setup fd %d TIOCMGET: %m", fd);
+#ifdef DEBUG
+ if (debug)
+ printf("refclock_setup fd %d modem status: 0x%x\n",
+ fd, ltemp);
+#endif
+ if (ltemp & TIOCM_DSR && lflags & LDISC_REMOTE)
+ ttyp->c_cflag &= ~CLOCAL;
+#endif /* TIOCMGET */
}
/*
- * Some special cases
+ * Set raw and echo modes. These can be changed on-fly.
*/
- if (flags & LDISC_RAW) {
- ttyp->c_iflag = 0;
+ ttyp->c_lflag = ICANON;
+ if (lflags & LDISC_RAW) {
ttyp->c_lflag = 0;
+ ttyp->c_iflag = 0;
ttyp->c_cc[VMIN] = 1;
}
-#if defined(TIOCMGET) && !defined(SCO5_CLOCK)
- /*
- * If we have modem control, check to see if modem leads are
- * active; if so, set remote connection. This is necessary for
- * the kernel pps mods to work.
- */
- ltemp = 0;
- if (ioctl(fd, TIOCMGET, (char *)&ltemp) < 0)
- msyslog(LOG_ERR,
- "refclock_open: fd %d TIOCMGET failed: %m", fd);
-#ifdef DEBUG
- if (debug)
- printf("refclock_open: fd %d modem status 0x%lx\n",
- fd, ltemp);
-#endif
- if (ltemp & TIOCM_DSR)
- ttyp->c_cflag &= ~CLOCAL;
-#endif /* TIOCMGET */
+ if (lflags & LDISC_ECHO)
+ ttyp->c_lflag |= ECHO;
if (tcsetattr(fd, TCSANOW, ttyp) < 0) {
msyslog(LOG_ERR,
- "refclock_open: fd %d TCSANOW failed: %m", fd);
- return (0);
- }
- if (tcflush(fd, TCIOFLUSH) < 0) {
- msyslog(LOG_ERR,
- "refclock_open: fd %d TCIOFLUSH failed: %m", fd);
+ "refclock_setup fd %d TCSANOW: %m", fd);
return (0);
}
#endif /* HAVE_TERMIOS */
@@ -799,7 +910,7 @@ refclock_open(
*/
if (ioctl(fd, TCGETA, ttyp) < 0) {
msyslog(LOG_ERR,
- "refclock_open: fd %d TCGETA failed: %m", fd);
+ "refclock_setup fd %d TCGETA: %m", fd);
return (0);
}
@@ -807,40 +918,47 @@ refclock_open(
* Set canonical mode and local connection; set specified speed,
* 8 bits and no parity; map CR to NL; ignore break.
*/
- ttyp->c_iflag = IGNBRK | IGNPAR | ICRNL;
- ttyp->c_oflag = 0;
- ttyp->c_cflag = speed | CS8 | CLOCAL | CREAD;
- ttyp->c_lflag = ICANON;
- ttyp->c_cc[VERASE] = ttyp->c_cc[VKILL] = '\0';
+ if (speed) {
+ u_int ltemp = 0;
+
+ ttyp->c_iflag = IGNBRK | IGNPAR | ICRNL;
+ ttyp->c_oflag = 0;
+ ttyp->c_cflag = speed | CS8 | CLOCAL | CREAD;
+ for (i = 0; i < NCCS; ++i)
+ ttyp->c_cc[i] = '\0';
+
+#if defined(TIOCMGET) && !defined(SCO5_CLOCK)
+
+ /*
+ * If we have modem control, check to see if modem leads
+ * are active; if so, set remote connection. This is
+ * necessary for the kernel pps mods to work.
+ */
+ if (ioctl(fd, TIOCMGET, (char *)&ltemp) < 0)
+ msyslog(LOG_ERR,
+ "refclock_setup fd %d TIOCMGET: %m", fd);
+#ifdef DEBUG
+ if (debug)
+ printf("refclock_setup fd %d modem status: %x\n",
+ fd, ltemp);
+#endif
+ if (ltemp & TIOCM_DSR)
+ ttyp->c_cflag &= ~CLOCAL;
+#endif /* TIOCMGET */
+ }
/*
- * Some special cases
+ * Set raw and echo modes. These can be changed on-fly.
*/
- if (flags & LDISC_RAW) {
- ttyp->c_iflag = 0;
+ ttyp->c_lflag = ICANON;
+ if (lflags & LDISC_RAW) {
ttyp->c_lflag = 0;
+ ttyp->c_iflag = 0;
+ ttyp->c_cc[VMIN] = 1;
}
-#ifdef TIOCMGET
- /*
- * If we have modem control, check to see if modem leads are
- * active; if so, set remote connection. This is necessary for
- * the kernel pps mods to work.
- */
- ltemp = 0;
- if (ioctl(fd, TIOCMGET, (char *)&ltemp) < 0)
- msyslog(LOG_ERR,
- "refclock_open: fd %d TIOCMGET failed: %m", fd);
-#ifdef DEBUG
- if (debug)
- printf("refclock_open: fd %d modem status %lx\n",
- fd, ltemp);
-#endif
- if (ltemp & TIOCM_DSR)
- ttyp->c_cflag &= ~CLOCAL;
-#endif /* TIOCMGET */
if (ioctl(fd, TCSETA, ttyp) < 0) {
msyslog(LOG_ERR,
- "refclock_open: fd %d TCSETA failed: %m", fd);
+ "refclock_setup fd %d TCSETA: %m", fd);
return (0);
}
#endif /* HAVE_SYSV_TTYS */
@@ -852,28 +970,24 @@ refclock_open(
*/
if (ioctl(fd, TIOCGETP, (char *)ttyp) < 0) {
msyslog(LOG_ERR,
- "refclock_open: fd %d TIOCGETP %m", fd);
+ "refclock_setup fd %d TIOCGETP: %m", fd);
return (0);
}
- ttyp->sg_ispeed = ttyp->sg_ospeed = speed;
+ if (speed)
+ ttyp->sg_ispeed = ttyp->sg_ospeed = speed;
ttyp->sg_flags = EVENP | ODDP | CRMOD;
if (ioctl(fd, TIOCSETP, (char *)ttyp) < 0) {
msyslog(LOG_ERR,
- "refclock_open: TIOCSETP failed: %m");
+ "refclock_setup TIOCSETP: %m");
return (0);
}
#endif /* HAVE_BSD_TTYS */
- if (!refclock_ioctl(fd, flags)) {
- (void)close(fd);
- msyslog(LOG_ERR,
- "refclock_open: fd %d ioctl failed: %m", fd);
- return (0);
- }
- return (fd);
+ return(1);
}
#endif /* HAVE_TERMIOS || HAVE_SYSV_TTYS || HAVE_BSD_TTYS */
#endif /* SYS_VXWORKS SYS_WINNT */
+
/*
* refclock_ioctl - set serial port control functions
*
@@ -885,68 +999,51 @@ refclock_open(
*/
int
refclock_ioctl(
- int fd, /* file descriptor */
- int flags /* line discipline flags */
+ int fd, /* file descriptor */
+ u_int lflags /* line discipline flags */
)
{
- /* simply return 1 if no UNIX line discipline is supported */
+ /*
+ * simply return 1 if no UNIX line discipline is supported
+ */
#if !defined SYS_VXWORKS && !defined SYS_WINNT
#if defined(HAVE_TERMIOS) || defined(HAVE_SYSV_TTYS) || defined(HAVE_BSD_TTYS)
-#ifdef TTYCLK
- TTY ttyb, *ttyp;
-#endif /* TTYCLK */
-
#ifdef DEBUG
if (debug)
- printf("refclock_ioctl: fd %d flags 0x%x\n", fd, flags);
+ printf("refclock_ioctl: fd %d flags 0x%x\n", fd,
+ lflags);
#endif
- if (flags == 0)
- return (1);
-#if !(defined(HAVE_TERMIOS) || defined(HAVE_BSD_TTYS))
- if (flags & (LDISC_CLK | LDISC_PPS | LDISC_ACTS)) {
- msyslog(LOG_ERR,
- "refclock_ioctl: unsupported terminal interface");
- return (0);
- }
-#endif /* HAVE_TERMIOS HAVE_BSD_TTYS */
#ifdef TTYCLK
- ttyp = &ttyb;
-#endif /* TTYCLK */
/*
- * The following features may or may not require System V
- * STREAMS support, depending on the particular implementation.
- */
-#if defined(TTYCLK)
- /*
* The TTYCLK option provides timestamping at the driver level.
* It requires the tty_clk streams module and System V STREAMS
* support. If not available, don't complain.
*/
- if (flags & (LDISC_CLK | LDISC_CLKPPS | LDISC_ACTS)) {
+ if (lflags & (LDISC_CLK | LDISC_CLKPPS | LDISC_ACTS)) {
int rval = 0;
if (ioctl(fd, I_PUSH, "clk") < 0) {
msyslog(LOG_NOTICE,
- "refclock_ioctl: I_PUSH clk failed: %m");
+ "refclock_ioctl fd %d I_PUSH: %m", fd);
+ return (0);
+#ifdef CLK_SETSTR
} else {
char *str;
- if (flags & LDISC_CLKPPS)
+ if (lflags & LDISC_CLKPPS)
str = "\377";
- else if (flags & LDISC_ACTS)
+ else if (lflags & LDISC_ACTS)
str = "*";
else
str = "\n";
-#ifdef CLK_SETSTR
- if ((rval = ioctl(fd, CLK_SETSTR, str)) < 0)
+ if (ioctl(fd, CLK_SETSTR, str) < 0) {
msyslog(LOG_ERR,
- "refclock_ioctl: CLK_SETSTR failed: %m");
- if (debug)
- printf("refclock_ioctl: fd %d CLK_SETSTR %d str %s\n",
- fd, rval, str);
-#endif
+ "refclock_ioctl fd %d CLK_SETSTR: %m", fd);
+ return (0);
+ }
+#endif /*CLK_SETSTR */
}
}
#endif /* TTYCLK */
@@ -955,6 +1052,7 @@ refclock_ioctl(
return (1);
}
+
/*
* refclock_control - set and/or return clock values
*
@@ -981,17 +1079,22 @@ refclock_control(
*/
if (srcadr->ss_family != AF_INET)
return;
+
if (!ISREFCLOCKADR(srcadr))
return;
+
clktype = (u_char)REFCLOCKTYPE(srcadr);
unit = REFCLOCKUNIT(srcadr);
if (clktype >= num_refclock_conf || unit >= MAXUNIT)
return;
+
peer = typeunit[clktype][unit];
if (peer == NULL)
return;
+
if (peer->procptr == NULL)
return;
+
pp = peer->procptr;
/*
@@ -1003,16 +1106,9 @@ refclock_control(
if (in->haveflags & CLK_HAVETIME2)
pp->fudgetime2 = in->fudgetime2;
if (in->haveflags & CLK_HAVEVAL1)
- pp->stratum = (u_char) in->fudgeval1;
+ peer->stratum = pp->stratum = (u_char)in->fudgeval1;
if (in->haveflags & CLK_HAVEVAL2)
- pp->refid = in->fudgeval2;
- peer->stratum = pp->stratum;
- if (peer->stratum == STRATUM_REFCLOCK || peer->stratum ==
- STRATUM_UNSPEC)
- peer->refid = pp->refid;
- else
- peer->refid = ((struct
- sockaddr_in*)&peer->srcadr)->sin_addr.s_addr;
+ peer->refid = pp->refid = in->fudgeval2;
if (in->haveflags & CLK_HAVEFLAG1) {
pp->sloppyclockflag &= ~CLK_FLAG1;
pp->sloppyclockflag |= in->flags & CLK_FLAG1;
@@ -1089,15 +1185,19 @@ refclock_buginfo(
*/
if (srcadr->ss_family != AF_INET)
return;
+
if (!ISREFCLOCKADR(srcadr))
return;
+
clktype = (u_char) REFCLOCKTYPE(srcadr);
unit = REFCLOCKUNIT(srcadr);
if (clktype >= num_refclock_conf || unit >= MAXUNIT)
return;
+
peer = typeunit[clktype][unit];
if (peer == NULL)
return;
+
pp = peer->procptr;
/*
diff --git a/contrib/ntp/ntpd/ntp_request.c b/contrib/ntp/ntpd/ntp_request.c
index eacba28..b1bc99d 100644
--- a/contrib/ntp/ntpd/ntp_request.c
+++ b/contrib/ntp/ntpd/ntp_request.c
@@ -98,7 +98,9 @@ static void req_clr_trap P((struct sockaddr_storage *, struct interface *, struc
static void do_setclr_trap P((struct sockaddr_storage *, struct interface *, struct req_pkt *, int));
static void set_request_keyid P((struct sockaddr_storage *, struct interface *, struct req_pkt *));
static void set_control_keyid P((struct sockaddr_storage *, struct interface *, struct req_pkt *));
-static void get_ctl_stats P((struct sockaddr_storage *, struct interface *, struct req_pkt *));
+static void get_ctl_stats P((struct sockaddr_storage *, struct interface *, struct req_pkt *));
+static void get_if_stats P((struct sockaddr_storage *, struct interface *, struct req_pkt *));
+static void do_if_reload P((struct sockaddr_storage *, struct interface *, struct req_pkt *));
#ifdef KERNEL_PLL
static void get_kernel_info P((struct sockaddr_storage *, struct interface *, struct req_pkt *));
#endif /* KERNEL_PLL */
@@ -171,6 +173,9 @@ static struct req_proc ntp_codes[] = {
{ REQ_GET_CLKBUGINFO, NOAUTH, sizeof(u_int32), sizeof(u_int32),
get_clkbug_info },
#endif
+ { REQ_IF_STATS, AUTH, 0, 0, get_if_stats },
+ { REQ_IF_RELOAD, AUTH, 0, 0, do_if_reload },
+
{ NO_REQUEST, NOAUTH, 0, 0, 0 }
};
@@ -495,17 +500,21 @@ process_private(
!(inpkt->implementation == IMPL_XNTPD &&
inpkt->request == REQ_CONFIG &&
temp_size == sizeof(struct old_conf_peer))) {
+#ifdef DEBUG
if (debug > 2)
printf("process_private: wrong item size, received %d, should be %d or %d\n",
temp_size, proc->sizeofitem, proc->v6_sizeofitem);
+#endif
req_ack(srcadr, inter, inpkt, INFO_ERR_FMT);
return;
}
if ((proc->sizeofitem != 0) &&
((temp_size * INFO_NITEMS(inpkt->err_nitems)) >
(rbufp->recv_length - REQ_LEN_HDR))) {
+#ifdef DEBUG
if (debug > 2)
printf("process_private: not enough data\n");
+#endif
req_ack(srcadr, inter, inpkt, INFO_ERR_FMT);
return;
}
@@ -650,7 +659,7 @@ peer_list(
ip = (struct info_peer_list *)prepare_pkt(srcadr, inter, inpkt,
v6sizeof(struct info_peer_list));
- for (i = 0; i < HASH_SIZE && ip != 0; i++) {
+ for (i = 0; i < NTP_HASH_SIZE && ip != 0; i++) {
pp = peer_hash[i];
while (pp != 0 && ip != 0) {
if (pp->srcadr.ss_family == AF_INET6) {
@@ -712,7 +721,7 @@ peer_list_sum(
#endif
ips = (struct info_peer_summary *)prepare_pkt(srcadr, inter, inpkt,
v6sizeof(struct info_peer_summary));
- for (i = 0; i < HASH_SIZE && ips != 0; i++) {
+ for (i = 0; i < NTP_HASH_SIZE && ips != 0; i++) {
pp = peer_hash[i];
while (pp != 0 && ips != 0) {
#ifdef DEBUG
@@ -727,7 +736,10 @@ peer_list_sum(
if (client_v6_capable) {
ips->srcadr6 = GET_INADDR6(pp->srcadr);
ips->v6_flag = 1;
- ips->dstadr6 = GET_INADDR6(pp->dstadr->sin);
+ if (pp->dstadr)
+ ips->dstadr6 = GET_INADDR6(pp->dstadr->sin);
+ else
+ memset(&ips->dstadr6, 0, sizeof(ips->dstadr6));
skip = 0;
} else {
skip = 1;
@@ -738,17 +750,22 @@ peer_list_sum(
if (client_v6_capable)
ips->v6_flag = 0;
/* XXX PDM This code is buggy. Need to replace with a straightforward assignment */
- ips->dstadr = (pp->processed) ?
- pp->cast_flags == MDF_BCAST ?
- GET_INADDR(pp->dstadr->bcast):
- pp->cast_flags ?
- GET_INADDR(pp->dstadr->sin) ?
- GET_INADDR(pp->dstadr->sin):
- GET_INADDR(pp->dstadr->bcast):
- 1 : GET_INADDR(pp->dstadr->sin);
+
+ if (pp->dstadr)
+ ips->dstadr = (pp->processed) ?
+ pp->cast_flags == MDF_BCAST ?
+ GET_INADDR(pp->dstadr->bcast):
+ pp->cast_flags ?
+ GET_INADDR(pp->dstadr->sin) ?
+ GET_INADDR(pp->dstadr->sin):
+ GET_INADDR(pp->dstadr->bcast):
+ 1 : GET_INADDR(pp->dstadr->sin);
+ else
+ memset(&ips->dstadr, 0, sizeof(ips->dstadr));
skip = 0;
}
+
if (!skip){
ips->srcport = NSRCPORT(&pp->srcadr);
ips->stratum = pp->stratum;
@@ -776,7 +793,7 @@ peer_list_sum(
ips->delay = HTONS_FP(DTOFP(pp->delay));
DTOLFP(pp->offset, &ltmp);
HTONL_FP(&ltmp, &ips->offset);
- ips->dispersion = HTONS_FP(DTOUFP(pp->disp));
+ ips->dispersion = HTONS_FP(DTOUFP(SQRT(pp->disp)));
}
pp = pp->next;
ips = (struct info_peer_summary *)more_pkt();
@@ -828,21 +845,28 @@ peer_info (
if ((pp = findexistingpeer(&addr, (struct peer *)0, -1)) == 0)
continue;
if (pp->srcadr.ss_family == AF_INET6) {
- ip->dstadr6 = pp->cast_flags == MDF_BCAST ?
- GET_INADDR6(pp->dstadr->bcast) :
- GET_INADDR6(pp->dstadr->sin);
+ if (pp->dstadr)
+ ip->dstadr6 = pp->cast_flags == MDF_BCAST ?
+ GET_INADDR6(pp->dstadr->bcast) :
+ GET_INADDR6(pp->dstadr->sin);
+ else
+ memset(&ip->dstadr6, 0, sizeof(ip->dstadr6));
+
ip->srcadr6 = GET_INADDR6(pp->srcadr);
ip->v6_flag = 1;
} else {
/* XXX PDM This code is buggy. Need to replace with a straightforward assignment */
- ip->dstadr = (pp->processed) ?
- pp->cast_flags == MDF_BCAST ?
- GET_INADDR(pp->dstadr->bcast):
- pp->cast_flags ?
- GET_INADDR(pp->dstadr->sin) ?
- GET_INADDR(pp->dstadr->sin):
- GET_INADDR(pp->dstadr->bcast):
- 2 : GET_INADDR(pp->dstadr->sin);
+ if (pp->dstadr)
+ ip->dstadr = (pp->processed) ?
+ pp->cast_flags == MDF_BCAST ?
+ GET_INADDR(pp->dstadr->bcast):
+ pp->cast_flags ?
+ GET_INADDR(pp->dstadr->sin) ?
+ GET_INADDR(pp->dstadr->sin):
+ GET_INADDR(pp->dstadr->bcast):
+ 2 : GET_INADDR(pp->dstadr->sin);
+ else
+ memset(&ip->dstadr, 0, sizeof(ip->dstadr));
ip->srcadr = GET_INADDR(pp->srcadr);
if (client_v6_capable)
@@ -928,7 +952,10 @@ peer_stats (
struct sockaddr_storage addr;
extern struct peer *sys_peer;
- printf("peer_stats: called\n");
+#ifdef DEBUG
+ if (debug)
+ printf("peer_stats: called\n");
+#endif
items = INFO_NITEMS(inpkt->err_nitems);
ipl = (struct info_peer_list *) inpkt->data;
ip = (struct info_peer_stats *)prepare_pkt(srcadr, inter, inpkt,
@@ -946,30 +973,44 @@ peer_stats (
#ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
addr.ss_len = SOCKLEN(&addr);
#endif
- printf("peer_stats: looking for %s, %d, %d\n", stoa(&addr),
+#ifdef DEBUG
+ if (debug)
+ printf("peer_stats: looking for %s, %d, %d\n", stoa(&addr),
ipl->port, ((struct sockaddr_in6 *)&addr)->sin6_port);
+#endif
ipl = (struct info_peer_list *)((char *)ipl +
INFO_ITEMSIZE(inpkt->mbz_itemsize));
if ((pp = findexistingpeer(&addr, (struct peer *)0, -1)) == 0)
continue;
- printf("peer_stats: found %s\n", stoa(&addr));
+#ifdef DEBUG
+ if (debug)
+ printf("peer_stats: found %s\n", stoa(&addr));
+#endif
if (pp->srcadr.ss_family == AF_INET) {
- ip->dstadr = (pp->processed) ?
- pp->cast_flags == MDF_BCAST ?
- GET_INADDR(pp->dstadr->bcast):
- pp->cast_flags ?
- GET_INADDR(pp->dstadr->sin) ?
- GET_INADDR(pp->dstadr->sin):
- GET_INADDR(pp->dstadr->bcast):
- 3 : 7;
+ if (pp->dstadr)
+ ip->dstadr = (pp->processed) ?
+ pp->cast_flags == MDF_BCAST ?
+ GET_INADDR(pp->dstadr->bcast):
+ pp->cast_flags ?
+ GET_INADDR(pp->dstadr->sin) ?
+ GET_INADDR(pp->dstadr->sin):
+ GET_INADDR(pp->dstadr->bcast):
+ 3 : 7;
+ else
+ memset(&ip->dstadr, 0, sizeof(ip->dstadr));
+
ip->srcadr = GET_INADDR(pp->srcadr);
if (client_v6_capable)
ip->v6_flag = 0;
} else {
- ip->dstadr6 = pp->cast_flags == MDF_BCAST ?
- GET_INADDR6(pp->dstadr->bcast):
- GET_INADDR6(pp->dstadr->sin);
+ if (pp->dstadr)
+ ip->dstadr6 = pp->cast_flags == MDF_BCAST ?
+ GET_INADDR6(pp->dstadr->bcast):
+ GET_INADDR6(pp->dstadr->sin);
+ else
+ memset(&ip->dstadr6, 0, sizeof(ip->dstadr6));
+
ip->srcadr6 = GET_INADDR6(pp->srcadr);
ip->v6_flag = 1;
}
@@ -987,10 +1028,13 @@ peer_stats (
ip->flags |= INFO_FLAG_PREFER;
if (pp->flags & FLAG_BURST)
ip->flags |= INFO_FLAG_BURST;
+ if (pp->flags & FLAG_IBURST)
+ ip->flags |= INFO_FLAG_IBURST;
if (pp->status == CTL_PST_SEL_SYNCCAND)
ip->flags |= INFO_FLAG_SEL_CANDIDATE;
if (pp->status >= CTL_PST_SEL_SYSPEER)
ip->flags |= INFO_FLAG_SHORTLIST;
+ ip->flags = htons(ip->flags);
ip->timereceived = htonl((u_int32)(current_time - pp->timereceived));
ip->timetosend = htonl(pp->nextdate - current_time);
ip->timereachable = htonl((u_int32)(current_time - pp->timereachable));
@@ -1020,24 +1064,6 @@ sys_info(
{
register struct info_sys *is;
- /*
- * Importations from the protocol module
- */
- extern u_char sys_leap;
- extern u_char sys_stratum;
- extern s_char sys_precision;
- extern double sys_rootdelay;
- extern double sys_rootdispersion;
- extern u_int32 sys_refid;
- extern l_fp sys_reftime;
- extern u_char sys_poll;
- extern struct peer *sys_peer;
- extern int sys_bclient;
- extern double sys_bdelay;
- extern l_fp sys_authdelay;
- extern double clock_stability;
- extern double sys_jitter;
-
is = (struct info_sys *)prepare_pkt(srcadr, inter, inpkt,
v6sizeof(struct info_sys));
@@ -1065,7 +1091,7 @@ sys_info(
is->rootdelay = htonl(DTOFP(sys_rootdelay));
is->rootdispersion = htonl(DTOUFP(sys_rootdispersion));
is->frequency = htonl(DTOFP(sys_jitter));
- is->stability = htonl(DTOUFP(clock_stability * 1e6));
+ is->stability = htonl(DTOUFP(clock_stability));
is->refid = sys_refid;
HTONL_FP(&sys_reftime, &is->reftime);
@@ -1147,7 +1173,7 @@ mem_stats(
/*
* Importations from the peer module
*/
- extern int peer_hash_count[HASH_SIZE];
+ extern int peer_hash_count[NTP_HASH_SIZE];
extern int peer_free_count;
extern u_long peer_timereset;
extern u_long findpeer_calls;
@@ -1165,7 +1191,7 @@ mem_stats(
ms->allocations = htonl((u_int32)peer_allocations);
ms->demobilizations = htonl((u_int32)peer_demobilizations);
- for (i = 0; i < HASH_SIZE; i++) {
+ for (i = 0; i < NTP_HASH_SIZE; i++) {
if (peer_hash_count[i] > 255)
ms->hashcount[i] = 255;
else
@@ -1266,7 +1292,7 @@ loop_info(
extern double last_offset;
extern double drift_comp;
extern int tc_counter;
- extern u_long last_time;
+ extern u_long sys_clocktime;
li = (struct info_loop *)prepare_pkt(srcadr, inter, inpkt,
sizeof(struct info_loop));
@@ -1276,7 +1302,7 @@ loop_info(
DTOLFP(drift_comp * 1e6, &ltmp);
HTONL_FP(&ltmp, &li->drift_comp);
li->compliance = htonl((u_int32)(tc_counter));
- li->watchdog_timer = htonl((u_int32)(current_time - last_time));
+ li->watchdog_timer = htonl((u_int32)(current_time - sys_clocktime));
(void) more_pkt();
flush_pkt();
@@ -1319,7 +1345,7 @@ do_conf(
&& temp_cp.hmode != MODE_BROADCAST)
fl = 1;
if (temp_cp.flags & ~(CONF_FLAG_AUTHENABLE | CONF_FLAG_PREFER
- | CONF_FLAG_BURST | CONF_FLAG_SKEY))
+ | CONF_FLAG_BURST | CONF_FLAG_IBURST | CONF_FLAG_SKEY))
fl = 1;
cp = (struct conf_peer *)
((char *)cp + INFO_ITEMSIZE(inpkt->mbz_itemsize));
@@ -1343,13 +1369,16 @@ do_conf(
fl = 0;
if (temp_cp.flags & CONF_FLAG_AUTHENABLE)
- fl |= FLAG_AUTHENABLE;
+ fl |= FLAG_AUTHENABLE;
if (temp_cp.flags & CONF_FLAG_PREFER)
- fl |= FLAG_PREFER;
+ fl |= FLAG_PREFER;
if (temp_cp.flags & CONF_FLAG_BURST)
fl |= FLAG_BURST;
+ if (temp_cp.flags & CONF_FLAG_IBURST)
+ fl |= FLAG_IBURST;
if (temp_cp.flags & CONF_FLAG_SKEY)
fl |= FLAG_SKEY;
+
if (client_v6_capable && temp_cp.v6_flag != 0) {
peeraddr.ss_family = AF_INET6;
GET_INADDR6(peeraddr) = temp_cp.peeraddr6;
@@ -1531,7 +1560,10 @@ do_unconf(
#endif
found = 0;
peer = (struct peer *)0;
- printf("searching for %s\n", stoa(&peeraddr));
+#ifdef DEBUG
+ if (debug)
+ printf("searching for %s\n", stoa(&peeraddr));
+#endif
while (!found) {
peer = findexistingpeer(&peeraddr, peer, -1);
if (peer == (struct peer *)0)
@@ -1620,7 +1652,9 @@ setclr_flags(
)
{
register u_int flags;
+ int prev_kern_enable;
+ prev_kern_enable = kern_enable;
if (INFO_NITEMS(inpkt->err_nitems) > 1) {
msyslog(LOG_ERR, "setclr_flags: err_nitems > 1");
req_ack(srcadr, inter, inpkt, INFO_ERR_FMT);
@@ -1628,7 +1662,8 @@ setclr_flags(
}
flags = ((struct conf_sys_flags *)inpkt->data)->flags;
-
+ flags = ntohl(flags);
+
if (flags & ~(SYS_FLAG_BCLIENT | SYS_FLAG_PPS |
SYS_FLAG_NTP | SYS_FLAG_KERNEL | SYS_FLAG_MONITOR |
SYS_FLAG_FILEGEN | SYS_FLAG_AUTH | SYS_FLAG_CAL)) {
@@ -1658,6 +1693,12 @@ setclr_flags(
if (flags & SYS_FLAG_CAL)
proto_config(PROTO_CAL, set, 0., NULL);
req_ack(srcadr, inter, inpkt, INFO_OKAY);
+
+ /* Reset the kernel ntp parameters if the kernel flag changed. */
+ if (prev_kern_enable && !kern_enable)
+ loop_config(LOOP_KERN_CLEAR, 0.0);
+ if (!prev_kern_enable && kern_enable)
+ loop_config(LOOP_DRIFTCOMP, drift_comp);
}
@@ -1780,6 +1821,8 @@ do_restrict(
cr = (struct conf_restrict *)inpkt->data;
bad = 0;
+ cr->flags = ntohs(cr->flags);
+ cr->mflags = ntohs(cr->mflags);
while (items-- > 0 && !bad) {
if (cr->mflags & ~(RESM_NTPONLY))
bad |= 1;
@@ -1926,7 +1969,7 @@ mon_getlist_1(
: GET_INADDR(md->interface->bcast))
: 4);
}
- im->flags = md->cast_flags;
+ im->flags = htonl(md->cast_flags);
im->port = md->rmtport;
im->mode = md->mode;
im->version = md->version;
@@ -1974,7 +2017,8 @@ reset_stats(
}
flags = ((struct reset_flags *)inpkt->data)->flags;
-
+ flags = ntohl(flags);
+
if (flags & ~RESET_ALLFLAGS) {
msyslog(LOG_ERR, "reset_stats: reset leaves %#lx",
flags & ~RESET_ALLFLAGS);
@@ -2754,3 +2798,91 @@ get_clkbug_info(
flush_pkt();
}
#endif
+
+/*
+ * receiver of interface structures
+ */
+static void
+fill_info_if_stats(void *data, interface_info_t *interface_info)
+{
+ struct info_if_stats **ifsp = (struct info_if_stats **)data;
+ struct info_if_stats *ifs = *ifsp;
+ struct interface *interface = interface_info->interface;
+
+ memset((char*)ifs, 0, sizeof(*ifs));
+
+ if (interface->sin.ss_family == AF_INET6) {
+ if (!client_v6_capable) {
+ return;
+ }
+ ifs->v6_flag = 1;
+ memcpy((char *)&ifs->unaddr.addr6, (char *)&CAST_V6(interface->sin)->sin6_addr, sizeof(struct in6_addr));
+ memcpy((char *)&ifs->unbcast.addr6, (char *)&CAST_V6(interface->bcast)->sin6_addr, sizeof(struct in6_addr));
+ memcpy((char *)&ifs->unmask.addr6, (char *)&CAST_V6(interface->mask)->sin6_addr, sizeof(struct in6_addr));
+ } else {
+ ifs->v6_flag = 0;
+ memcpy((char *)&ifs->unaddr.addr, (char *)&CAST_V4(interface->sin)->sin_addr, sizeof(struct in_addr));
+ memcpy((char *)&ifs->unbcast.addr, (char *)&CAST_V4(interface->bcast)->sin_addr, sizeof(struct in_addr));
+ memcpy((char *)&ifs->unmask.addr, (char *)&CAST_V4(interface->mask)->sin_addr, sizeof(struct in_addr));
+ }
+ ifs->v6_flag = htonl(ifs->v6_flag);
+ strcpy(ifs->name, interface->name);
+ ifs->family = htons(interface->family);
+ ifs->flags = htonl(interface->flags);
+ ifs->last_ttl = htonl(interface->last_ttl);
+ ifs->num_mcast = htonl(interface->num_mcast);
+ ifs->received = htonl(interface->received);
+ ifs->sent = htonl(interface->sent);
+ ifs->notsent = htonl(interface->notsent);
+ ifs->scopeid = htonl(interface->scopeid);
+ ifs->ifindex = htonl(interface->ifindex);
+ ifs->ifnum = htonl(interface->ifnum);
+ ifs->uptime = htonl(current_time - interface->starttime);
+ ifs->ignore_packets = interface->ignore_packets;
+ ifs->peercnt = htonl(interface->peercnt);
+ ifs->action = interface_info->action;
+
+ *ifsp = (struct info_if_stats *)more_pkt();
+}
+
+/*
+ * get_if_stats - get interface statistics
+ */
+static void
+get_if_stats(
+ struct sockaddr_storage *srcadr,
+ struct interface *inter,
+ struct req_pkt *inpkt
+ )
+{
+ struct info_if_stats *ifs;
+
+ DPRINTF(3, ("wants interface statistics\n"));
+
+ ifs = (struct info_if_stats *)prepare_pkt(srcadr, inter, inpkt,
+ v6sizeof(struct info_if_stats));
+
+ interface_enumerate(fill_info_if_stats, &ifs);
+
+ flush_pkt();
+}
+
+static void
+do_if_reload(
+ struct sockaddr_storage *srcadr,
+ struct interface *inter,
+ struct req_pkt *inpkt
+ )
+{
+ struct info_if_stats *ifs;
+
+ DPRINTF(3, ("wants interface reload\n"));
+
+ ifs = (struct info_if_stats *)prepare_pkt(srcadr, inter, inpkt,
+ v6sizeof(struct info_if_stats));
+
+ interface_update(fill_info_if_stats, &ifs);
+
+ flush_pkt();
+}
+
diff --git a/contrib/ntp/ntpd/ntp_restrict.c b/contrib/ntp/ntpd/ntp_restrict.c
index ede4225..473e2ce 100644
--- a/contrib/ntp/ntpd/ntp_restrict.c
+++ b/contrib/ntp/ntpd/ntp_restrict.c
@@ -112,9 +112,9 @@ init_restrict(void)
/*
* Zero the list and put all but one on the free list
*/
- resfree = 0;
+ resfree = NULL;
memset((char *)resinit, 0, sizeof resinit);
- resfree6 = 0;
+ resfree6 = NULL;
memset((char *)resinit6, 0, sizeof resinit6);
for (i = 1; i < INITRESLIST; i++) {
resinit[i].next = resfree;
@@ -158,7 +158,8 @@ init_restrict(void)
*/
int
restrictions(
- struct sockaddr_storage *srcadr
+ struct sockaddr_storage *srcadr,
+ int at_listhead
)
{
struct restrictlist *rl;
@@ -193,7 +194,7 @@ restrictions(
* Work our way down from there.
*/
match = restrictlist;
- for (rl = match->next; rl != 0 && rl->addr <= hostaddr;
+ for (rl = match->next; rl != NULL && rl->addr <= hostaddr;
rl = rl->next)
if ((hostaddr & rl->mask) == rl->addr) {
if ((rl->mflags & RESM_NTPONLY) &&
@@ -233,7 +234,7 @@ restrictions(
* Work our way down from there.
*/
match6 = restrictlist6;
- for (rl6 = match6->next; rl6 != 0 &&
+ for (rl6 = match6->next; rl6 != NULL &&
(memcmp(&(rl6->addr6), &hostaddr6,
sizeof(hostaddr6)) <= 0); rl6 = rl6->next) {
SET_IPV6_ADDR_MASK(&hostservaddr6, &hostaddr6,
@@ -260,7 +261,7 @@ restrictions(
* packet is greater than res_min_interval and the average is
* greater thatn res_avg_interval.
*/
- if (mon_enabled == MON_OFF) {
+ if (!at_listhead || mon_enabled == MON_OFF) {
flags &= ~RES_LIMITED;
} else {
struct mon_data *md;
@@ -323,14 +324,14 @@ hack_restrict(
* list. Else go searching for it.
*/
if (addr == 0) {
- rlprev = 0;
+ rlprev = NULL;
rl = restrictlist;
} else {
rlprev = restrictlist;
rl = rlprev->next;
- while (rl != 0) {
+ while (rl != NULL) {
if (rl->addr > addr) {
- rl = 0;
+ rl = NULL;
break;
} else if (rl->addr == addr) {
if (rl->mask == mask) {
@@ -342,11 +343,11 @@ hack_restrict(
if (!(mflags &
RESM_NTPONLY)) {
- rl = 0;
+ rl = NULL;
break;
}
} else if (rl->mask > mask) {
- rl = 0;
+ rl = NULL;
break;
}
}
@@ -361,16 +362,16 @@ hack_restrict(
SET_IPV6_ADDR_MASK(&addr6,
&GET_INADDR6(*resaddr), &mask6);
if (IN6_IS_ADDR_UNSPECIFIED(&addr6)) {
- rlprev6 = 0;
+ rlprev6 = NULL;
rl6 = restrictlist6;
} else {
rlprev6 = restrictlist6;
rl6 = rlprev6->next;
- while (rl6 != 0) {
+ while (rl6 != NULL) {
addr_cmp = memcmp(&rl6->addr6, &addr6,
sizeof(addr6));
if (addr_cmp > 0) {
- rl6 = 0;
+ rl6 = NULL;
break;
} else if (addr_cmp == 0) {
mask_cmp = memcmp(&rl6->mask6,
@@ -384,11 +385,11 @@ hack_restrict(
if (!(mflags &
RESM_NTPONLY)) {
- rl6 = 0;
+ rl6 = NULL;
break;
}
} else if (mask_cmp > 0) {
- rl6 = 0;
+ rl6 = NULL;
break;
}
}
@@ -415,8 +416,8 @@ hack_restrict(
* Here we add bits to the flags. If this is a
* new restriction add it.
*/
- if (rl == 0) {
- if (numresfree == 0) {
+ if (rl == NULL) {
+ if (resfree == NULL) {
rl = (struct restrictlist *)
emalloc(INCRESLIST *
sizeof(struct
@@ -440,8 +441,13 @@ hack_restrict(
rl->mask = mask;
rl->mflags = (u_short)mflags;
- rl->next = rlprev->next;
- rlprev->next = rl;
+ if (rlprev == NULL) {
+ rl->next = restrictlist;
+ restrictlist = rl;
+ } else {
+ rl->next = rlprev->next;
+ rlprev->next = rl;
+ }
restrictcount++;
}
if ((rl->flags ^ (u_short)flags) &
@@ -457,7 +463,7 @@ hack_restrict(
* Remove some bits from the flags. If we didn't
* find this one, just return.
*/
- if (rl != 0) {
+ if (rl != NULL) {
if ((rl->flags ^ (u_short)flags) &
RES_LIMITED) {
res_limited_refcnt--;
@@ -469,15 +475,20 @@ hack_restrict(
break;
case RESTRICT_REMOVE:
+ case RESTRICT_REMOVEIF:
/*
* Remove an entry from the table entirely if we
* found one. Don't remove the default entry and
* don't remove an interface entry.
*/
- if (rl != 0
+ if (rl != NULL
&& rl->addr != htonl(INADDR_ANY)
- && !(rl->mflags & RESM_INTERFACE)) {
- rlprev->next = rl->next;
+ && !(rl->mflags & RESM_INTERFACE && op != RESTRICT_REMOVEIF)) {
+ if (rlprev != NULL) {
+ rlprev->next = rl->next;
+ } else {
+ restrictlist = rl->next;
+ }
restrictcount--;
if (rl->flags & RES_LIMITED) {
res_limited_refcnt--;
@@ -503,8 +514,8 @@ hack_restrict(
* Here we add bits to the flags. If this is a
* new restriction add it.
*/
- if (rl6 == 0) {
- if (numresfree6 == 0) {
+ if (rl6 == NULL) {
+ if (resfree6 == NULL) {
rl6 = (struct
restrictlist6 *)emalloc(
INCRESLIST * sizeof(struct
@@ -527,8 +538,13 @@ hack_restrict(
rl6->addr6 = addr6;
rl6->mask6 = mask6;
rl6->mflags = (u_short)mflags;
- rl6->next = rlprev6->next;
- rlprev6->next = rl6;
+ if (rlprev6 != NULL) {
+ rl6->next = rlprev6->next;
+ rlprev6->next = rl6;
+ } else {
+ rl6->next = restrictlist6;
+ restrictlist6 = rl6;
+ }
restrictcount6++;
}
if ((rl6->flags ^ (u_short)flags) &
@@ -544,7 +560,7 @@ hack_restrict(
* Remove some bits from the flags. If we didn't
* find this one, just return.
*/
- if (rl6 != 0) {
+ if (rl6 != NULL) {
if ((rl6->flags ^ (u_short)flags) &
RES_LIMITED) {
res_limited_refcnt6--;
@@ -556,15 +572,20 @@ hack_restrict(
break;
case RESTRICT_REMOVE:
+ case RESTRICT_REMOVEIF:
/*
* Remove an entry from the table entirely if we
* found one. Don't remove the default entry and
* don't remove an interface entry.
*/
- if (rl6 != 0 &&
+ if (rl6 != NULL &&
!IN6_IS_ADDR_UNSPECIFIED(&rl6->addr6)
- && !(rl6->mflags & RESM_INTERFACE)) {
- rlprev6->next = rl6->next;
+ && !(rl6->mflags & RESM_INTERFACE && op != RESTRICT_REMOVEIF)) {
+ if (rlprev6 != NULL) {
+ rlprev6->next = rl6->next;
+ } else {
+ restrictlist6 = rl6->next;
+ }
restrictcount6--;
if (rl6->flags & RES_LIMITED) {
res_limited_refcnt6--;
diff --git a/contrib/ntp/ntpd/ntp_timer.c b/contrib/ntp/ntpd/ntp_timer.c
index 6f0f18b..fb6de70 100644
--- a/contrib/ntp/ntpd/ntp_timer.c
+++ b/contrib/ntp/ntpd/ntp_timer.c
@@ -34,6 +34,8 @@
* procedure to do cleanup and print a message.
*/
+volatile int interface_interval = 300; /* update interface every 5 minutes as default */
+
/*
* Alarm flag. The mainline code imports this.
*/
@@ -44,8 +46,9 @@ volatile int alarm_flag;
*/
static u_long adjust_timer; /* second timer */
static u_long keys_timer; /* minute timer */
-static u_long hourly_timer; /* hour timer */
+static u_long stats_timer; /* stats timer */
static u_long huffpuff_timer; /* huff-n'-puff timer */
+static u_long interface_timer; /* interface update timer */
#ifdef OPENSSL
static u_long revoke_timer; /* keys revoke timer */
u_char sys_revoke = KEY_REVOKE; /* keys revoke timeout (log2 s) */
@@ -138,7 +141,7 @@ void
init_timer(void)
{
# if defined SYS_WINNT & !defined(SYS_CYGWIN32)
- HANDLE hToken;
+ HANDLE hToken = INVALID_HANDLE_VALUE;
TOKEN_PRIVILEGES tkp;
# endif /* SYS_WINNT */
@@ -148,8 +151,9 @@ init_timer(void)
alarm_flag = 0;
alarm_overflow = 0;
adjust_timer = 1;
- hourly_timer = HOUR;
+ stats_timer = 0;
huffpuff_timer = 0;
+ interface_timer = 0;
current_time = 0;
timer_overflows = 0;
timer_xmtcalls = 0;
@@ -269,6 +273,15 @@ timer(void)
adjust_timer += 1;
adj_host_clock();
kod_proto();
+#ifdef REFCLOCK
+ for (n = 0; n < NTP_HASH_SIZE; n++) {
+ for (peer = peer_hash[n]; peer != 0; peer = next_peer) {
+ next_peer = peer->next;
+ if (peer->flags & FLAG_REFCLOCK)
+ refclock_timer(peer);
+ }
+ }
+#endif /* REFCLOCK */
}
/*
@@ -276,7 +289,7 @@ timer(void)
* here, since the peer structure might go away as the result of
* the call.
*/
- for (n = 0; n < HASH_SIZE; n++) {
+ for (n = 0; n < NTP_HASH_SIZE; n++) {
for (peer = peer_hash[n]; peer != 0; peer = next_peer) {
next_peer = peer->next;
if (peer->action && peer->nextaction <= current_time)
@@ -327,11 +340,24 @@ timer(void)
#endif /* OPENSSL */
/*
- * Finally, call the hourly routine.
+ * interface update timer
+ */
+ if (interface_interval && interface_timer <= current_time) {
+ timer_interfacetimeout(current_time + interface_interval);
+#ifdef DEBUG
+ if (debug)
+ printf("timer: interface update\n");
+#endif
+ interface_update(NULL, NULL);
+ }
+
+ /*
+ * Finally, periodically write stats.
*/
- if (hourly_timer <= current_time) {
- hourly_timer += HOUR;
- hourly_stats();
+ if (stats_timer <= current_time) {
+ if (stats_timer != 0)
+ write_stats();
+ stats_timer += stats_write_period;
}
}
@@ -363,6 +389,12 @@ alarming(
}
#endif /* SYS_WINNT */
+void
+timer_interfacetimeout(u_long timeout)
+{
+ interface_timer = timeout;
+}
+
/*
* timer_clr_stats - clear timer module stat counters
diff --git a/contrib/ntp/ntpd/ntp_util.c b/contrib/ntp/ntpd/ntp_util.c
index 135f9b3..91ff8a6 100644
--- a/contrib/ntp/ntpd/ntp_util.c
+++ b/contrib/ntp/ntpd/ntp_util.c
@@ -28,13 +28,13 @@
#endif
#ifdef DOSYNCTODR
-#if !defined(VMS)
-#include <sys/resource.h>
-#endif /* VMS */
+# if !defined(VMS)
+# include <sys/resource.h>
+# endif /* VMS */
#endif
#if defined(VMS)
-#include <descrip.h>
+# include <descrip.h>
#endif /* VMS */
/*
@@ -53,20 +53,23 @@ static char *key_file_name;
*/
static char *stats_drift_file;
static char *stats_temp_file;
+int stats_write_period = 3600; /* # of seconds between writes. */
+double stats_write_tolerance = 0;
+static double prev_drift_comp = 99999.;
/*
* Statistics file stuff
*/
#ifndef NTP_VAR
-#ifndef SYS_WINNT
-#define NTP_VAR "/var/NTP/" /* NOTE the trailing '/' */
-#else
-#define NTP_VAR "c:\\var\\ntp\\" /* NOTE the trailing '\\' */
-#endif /* SYS_WINNT */
+# ifndef SYS_WINNT
+# define NTP_VAR "/var/NTP/" /* NOTE the trailing '/' */
+# else
+# define NTP_VAR "c:\\var\\ntp\\" /* NOTE the trailing '\\' */
+# endif /* SYS_WINNT */
#endif
#ifndef MAXPATHLEN
-#define MAXPATHLEN 256
+# define MAXPATHLEN 256
#endif
static char statsdir[MAXPATHLEN] = NTP_VAR;
@@ -76,6 +79,9 @@ static FILEGEN loopstats;
static FILEGEN clockstats;
static FILEGEN rawstats;
static FILEGEN sysstats;
+#ifdef DEBUG_TIMING
+static FILEGEN timingstats;
+#endif
#ifdef OPENSSL
static FILEGEN cryptostats;
#endif /* OPENSSL */
@@ -87,6 +93,11 @@ static FILEGEN cryptostats;
int stats_control;
/*
+ * Initial frequency offset later passed to the loopfilter.
+ */
+double old_drift;
+
+/*
* init_util - initialize the utilities
*/
void
@@ -96,79 +107,23 @@ init_util(void)
stats_temp_file = 0;
key_file_name = 0;
-#define PEERNAME "peerstats"
-#define LOOPNAME "loopstats"
-#define CLOCKNAME "clockstats"
-#define RAWNAME "rawstats"
-#define STANAME "systats"
-#ifdef OPENSSL
-#define CRYPTONAME "cryptostats"
-#endif /* OPENSSL */
+ filegen_register(&statsdir[0], "peerstats", &peerstats);
- peerstats.fp = NULL;
- peerstats.prefix = &statsdir[0];
- peerstats.basename = (char*)emalloc(strlen(PEERNAME)+1);
- strcpy(peerstats.basename, PEERNAME);
- peerstats.id = 0;
- peerstats.type = FILEGEN_DAY;
- peerstats.flag = FGEN_FLAG_LINK; /* not yet enabled !!*/
- filegen_register("peerstats", &peerstats);
-
- loopstats.fp = NULL;
- loopstats.prefix = &statsdir[0];
- loopstats.basename = (char*)emalloc(strlen(LOOPNAME)+1);
- strcpy(loopstats.basename, LOOPNAME);
- loopstats.id = 0;
- loopstats.type = FILEGEN_DAY;
- loopstats.flag = FGEN_FLAG_LINK; /* not yet enabled !!*/
- filegen_register("loopstats", &loopstats);
-
- clockstats.fp = NULL;
- clockstats.prefix = &statsdir[0];
- clockstats.basename = (char*)emalloc(strlen(CLOCKNAME)+1);
- strcpy(clockstats.basename, CLOCKNAME);
- clockstats.id = 0;
- clockstats.type = FILEGEN_DAY;
- clockstats.flag = FGEN_FLAG_LINK; /* not yet enabled !!*/
- filegen_register("clockstats", &clockstats);
-
- rawstats.fp = NULL;
- rawstats.prefix = &statsdir[0];
- rawstats.basename = (char*)emalloc(strlen(RAWNAME)+1);
- strcpy(rawstats.basename, RAWNAME);
- rawstats.id = 0;
- rawstats.type = FILEGEN_DAY;
- rawstats.flag = FGEN_FLAG_LINK; /* not yet enabled !!*/
- filegen_register("rawstats", &rawstats);
-
- sysstats.fp = NULL;
- sysstats.prefix = &statsdir[0];
- sysstats.basename = (char*)emalloc(strlen(STANAME)+1);
- strcpy(sysstats.basename, STANAME);
- sysstats.id = 0;
- sysstats.type = FILEGEN_DAY;
- sysstats.flag = FGEN_FLAG_LINK; /* not yet enabled !!*/
- filegen_register("sysstats", &sysstats);
+ filegen_register(&statsdir[0], "loopstats", &loopstats);
-#ifdef OPENSSL
- cryptostats.fp = NULL;
- cryptostats.prefix = &statsdir[0];
- cryptostats.basename = (char*)emalloc(strlen(CRYPTONAME)+1);
- strcpy(cryptostats.basename, CRYPTONAME);
- cryptostats.id = 0;
- cryptostats.type = FILEGEN_DAY;
- cryptostats.flag = FGEN_FLAG_LINK; /* not yet enabled !!*/
- filegen_register("cryptostats", &cryptostats);
-#endif /* OPENSSL */
+ filegen_register(&statsdir[0], "clockstats", &clockstats);
+
+ filegen_register(&statsdir[0], "rawstats", &rawstats);
+
+ filegen_register(&statsdir[0], "sysstats", &sysstats);
-#undef PEERNAME
-#undef LOOPNAME
-#undef CLOCKNAME
-#undef RAWNAME
-#undef STANAME
#ifdef OPENSSL
-#undef CRYPTONAME
+ filegen_register(&statsdir[0], "cryptostats", &cryptostats);
#endif /* OPENSSL */
+
+#ifdef DEBUG_TIMING
+ filegen_register(&statsdir[0], "timingstats", &timingstats);
+#endif
}
@@ -176,7 +131,7 @@ init_util(void)
* hourly_stats - print some interesting stats
*/
void
-hourly_stats(void)
+write_stats(void)
{
FILE *fp;
@@ -260,6 +215,11 @@ hourly_stats(void)
record_sys_stats();
+ if ((u_long)(fabs(prev_drift_comp - drift_comp) * 1e9) <=
+ (u_long)(fabs(stats_write_tolerance * drift_comp) * 1e9)) {
+ return;
+ }
+ prev_drift_comp = drift_comp;
if (stats_drift_file != 0) {
if ((fp = fopen(stats_temp_file, "w")) == NULL) {
msyslog(LOG_ERR, "can't open %s: %m",
@@ -276,7 +236,7 @@ hourly_stats(void)
#ifndef NO_RENAME
(void) rename(stats_temp_file, stats_drift_file);
#else
- /* we have no rename NFS of ftp in use*/
+ /* we have no rename NFS of ftp in use */
if ((fp = fopen(stats_drift_file, "w")) == NULL) {
msyslog(LOG_ERR, "can't open %s: %m",
stats_drift_file);
@@ -305,12 +265,11 @@ hourly_stats(void)
void
stats_config(
int item,
- char *invalue /* only one type so far */
+ const char *invalue /* only one type so far */
)
{
FILE *fp;
- char *value;
- double old_drift;
+ const char *value;
int len;
/*
@@ -381,21 +340,21 @@ stats_config(
* missing or contains errors, tell the loop to reset.
*/
if ((fp = fopen(stats_drift_file, "r")) == NULL) {
- loop_config(LOOP_DRIFTCOMP, 1e9);
+ old_drift = 1e9;
break;
}
if (fscanf(fp, "%lf", &old_drift) != 1) {
msyslog(LOG_ERR, "Frequency format error in %s",
stats_drift_file);
- loop_config(LOOP_DRIFTCOMP, 1e9);
+ old_drift = 1e9;
fclose(fp);
break;
}
fclose(fp);
+ prev_drift_comp = old_drift / 1e6;
msyslog(LOG_INFO,
"frequency initialized %.3f PPM from %s",
old_drift, stats_drift_file);
- loop_config(LOOP_DRIFTCOMP, old_drift / 1e6);
break;
case STATS_STATSDIR:
@@ -505,6 +464,7 @@ record_peer_stats(
fflush(peerstats.fp);
}
}
+
/*
* record_loop_stats - write loop filter statistics to file
*
@@ -535,7 +495,7 @@ record_loop_stats(
day = now.l_ui / 86400 + MJD_1900;
now.l_ui %= 86400;
if (loopstats.fp != NULL) {
- fprintf(loopstats.fp, "%lu %s %.9f %.6f %.9f %.6f %d\n",
+ fprintf(loopstats.fp, "%lu %s %.9f %.3f %.9f %.6f %d\n",
day, ulfptoa(&now, 3), offset, freq * 1e6, jitter,
stability * 1e6, spoll);
fflush(loopstats.fp);
@@ -606,9 +566,9 @@ record_raw_stats(
now.l_ui %= 86400;
if (rawstats.fp != NULL) {
fprintf(rawstats.fp, "%lu %s %s %s %s %s %s %s\n",
- day, ulfptoa(&now, 3), stoa(srcadr), stoa(dstadr),
- ulfptoa(t1, 9), ulfptoa(t2, 9), ulfptoa(t3, 9),
- ulfptoa(t4, 9));
+ day, ulfptoa(&now, 3), stoa(srcadr), dstadr ? stoa(dstadr) : "-",
+ ulfptoa(t1, 9), ulfptoa(t2, 9), ulfptoa(t3, 9),
+ ulfptoa(t4, 9));
fflush(rawstats.fp);
}
}
@@ -695,13 +655,45 @@ record_crypto_stats(
}
#endif /* OPENSSL */
+#ifdef DEBUG_TIMING
+/*
+ * record_crypto_stats - write crypto statistics to file
+ *
+ * file format:
+ * day (mjd)
+ * time (s past midnight)
+ * text message
+ */
+void
+record_timing_stats(
+ const char *text
+ )
+{
+ static unsigned int flshcnt;
+ l_fp now;
+ u_long day;
+
+ if (!stats_control)
+ return;
+ get_systime(&now);
+ filegen_setup(&timingstats, now.l_ui);
+ day = now.l_ui / 86400 + MJD_1900;
+ now.l_ui %= 86400;
+ if (timingstats.fp != NULL) {
+ fprintf(timingstats.fp, "%lu %s %s\n",
+ day, lfptoa(&now, 3), text);
+ if (++flshcnt % 100 == 0)
+ fflush(timingstats.fp);
+ }
+}
+#endif
/*
* getauthkeys - read the authentication keys from the specified file
*/
void
getauthkeys(
- char *keyfile
+ const char *keyfile
)
{
int len;
@@ -795,3 +787,15 @@ sock_hash(
return hashVal;
}
+
+#if notyet
+/*
+ * ntp_exit - document explicitly that ntpd has exited
+ */
+void
+ntp_exit(int retval)
+{
+ msyslog(LOG_ERR, "EXITING with return code %d", retval);
+ exit(retval);
+}
+#endif
diff --git a/contrib/ntp/ntpd/ntpd-opts.c b/contrib/ntp/ntpd/ntpd-opts.c
new file mode 100644
index 0000000..eae28cb
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpd-opts.c
@@ -0,0 +1,1021 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (ntpd-opts.c)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:20:10 AM EDT
+ * From the definitions ntpd-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This source file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * ntpd author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * ntpd copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+
+
+#include <limits.h>
+
+#define OPTION_CODE_COMPILE 1
+#include "ntpd-opts.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+tSCC zCopyright[] =
+ "ntpd copyright (c) 1970-2008 David L. Mills and/or others, all rights reserved";
+tSCC zCopyrightNotice[] =
+
+/* extracted from ../include/copyright.def near line 8 */
+"see html/copyright.html";
+extern tUsageProc optionUsage;
+
+/*
+ * global included definitions
+ */
+#ifdef __windows
+ extern int atoi(const char*);
+#else
+# include <stdlib.h>
+#endif
+
+#ifndef NULL
+# define NULL 0
+#endif
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+/*
+ * Ipv4 option description:
+ */
+tSCC zIpv4Text[] =
+ "Force IPv4 DNS name resolution";
+tSCC zIpv4_NAME[] = "IPV4";
+tSCC zIpv4_Name[] = "ipv4";
+#define IPV4_FLAGS (OPTST_DISABLED)
+
+/*
+ * Ipv6 option description:
+ */
+tSCC zIpv6Text[] =
+ "Force IPv6 DNS name resolution";
+tSCC zIpv6_NAME[] = "IPV6";
+tSCC zIpv6_Name[] = "ipv6";
+#define IPV6_FLAGS (OPTST_DISABLED)
+
+/*
+ * Authreq option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zAuthreqText[] =
+ "Require crypto authentication";
+tSCC zAuthreq_NAME[] = "AUTHREQ";
+tSCC zAuthreq_Name[] = "authreq";
+static const int
+ aAuthreqCantList[] = {
+ INDEX_OPT_AUTHNOREQ, NO_EQUIVALENT };
+#define AUTHREQ_FLAGS (OPTST_DISABLED)
+
+/*
+ * Authnoreq option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zAuthnoreqText[] =
+ "Do not require crypto authentication";
+tSCC zAuthnoreq_NAME[] = "AUTHNOREQ";
+tSCC zAuthnoreq_Name[] = "authnoreq";
+static const int
+ aAuthnoreqCantList[] = {
+ INDEX_OPT_AUTHREQ, NO_EQUIVALENT };
+#define AUTHNOREQ_FLAGS (OPTST_DISABLED)
+
+/*
+ * Bcastsync option description:
+ */
+tSCC zBcastsyncText[] =
+ "Allow us to sync to broadcast servers";
+tSCC zBcastsync_NAME[] = "BCASTSYNC";
+tSCC zBcastsync_Name[] = "bcastsync";
+#define BCASTSYNC_FLAGS (OPTST_DISABLED)
+
+/*
+ * Configfile option description:
+ */
+tSCC zConfigfileText[] =
+ "configuration file name";
+tSCC zConfigfile_NAME[] = "CONFIGFILE";
+tSCC zConfigfile_Name[] = "configfile";
+#define CONFIGFILE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Debug_Level option description:
+ */
+#ifdef DEBUG
+tSCC zDebug_LevelText[] =
+ "Increase output debug message level";
+tSCC zDebug_Level_NAME[] = "DEBUG_LEVEL";
+tSCC zDebug_Level_Name[] = "debug-level";
+#define DEBUG_LEVEL_FLAGS (OPTST_DISABLED)
+
+#else /* disable Debug_Level */
+#define VALUE_OPT_DEBUG_LEVEL NO_EQUIVALENT
+#define DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zDebug_LevelText NULL
+#define zDebug_Level_NAME NULL
+#define zDebug_Level_Name NULL
+#endif /* DEBUG */
+
+/*
+ * Set_Debug_Level option description:
+ */
+#ifdef DEBUG
+tSCC zSet_Debug_LevelText[] =
+ "Set the output debug message level";
+tSCC zSet_Debug_Level_NAME[] = "SET_DEBUG_LEVEL";
+tSCC zSet_Debug_Level_Name[] = "set-debug-level";
+#define SET_DEBUG_LEVEL_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+#else /* disable Set_Debug_Level */
+#define VALUE_OPT_SET_DEBUG_LEVEL NO_EQUIVALENT
+#define SET_DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zSet_Debug_LevelText NULL
+#define zSet_Debug_Level_NAME NULL
+#define zSet_Debug_Level_Name NULL
+#endif /* DEBUG */
+
+/*
+ * Driftfile option description:
+ */
+tSCC zDriftfileText[] =
+ "frequency drift file name";
+tSCC zDriftfile_NAME[] = "DRIFTFILE";
+tSCC zDriftfile_Name[] = "driftfile";
+#define DRIFTFILE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Panicgate option description:
+ */
+tSCC zPanicgateText[] =
+ "Allow the first adjustment to be Big";
+tSCC zPanicgate_NAME[] = "PANICGATE";
+tSCC zPanicgate_Name[] = "panicgate";
+#define PANICGATE_FLAGS (OPTST_DISABLED)
+
+/*
+ * Jaildir option description:
+ */
+tSCC zJaildirText[] =
+ "Jail directory";
+tSCC zJaildir_NAME[] = "JAILDIR";
+tSCC zJaildir_Name[] = "jaildir";
+#define JAILDIR_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Interface option description:
+ */
+tSCC zInterfaceText[] =
+ "Listen on interface";
+tSCC zInterface_NAME[] = "INTERFACE";
+tSCC zInterface_Name[] = "interface";
+#define INTERFACE_FLAGS (OPTST_DISABLED | OPTST_STACKED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Keyfile option description:
+ */
+tSCC zKeyfileText[] =
+ "path to symmetric keys";
+tSCC zKeyfile_NAME[] = "KEYFILE";
+tSCC zKeyfile_Name[] = "keyfile";
+#define KEYFILE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Logfile option description:
+ */
+tSCC zLogfileText[] =
+ "path to the log file";
+tSCC zLogfile_NAME[] = "LOGFILE";
+tSCC zLogfile_Name[] = "logfile";
+#define LOGFILE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Novirtualips option description:
+ */
+tSCC zNovirtualipsText[] =
+ "Do not listen to virtual IPs";
+tSCC zNovirtualips_NAME[] = "NOVIRTUALIPS";
+tSCC zNovirtualips_Name[] = "novirtualips";
+#define NOVIRTUALIPS_FLAGS (OPTST_DISABLED)
+
+/*
+ * Modifymmtimer option description:
+ */
+#ifdef SYS_WINNT
+tSCC zModifymmtimerText[] =
+ "Modify Multimedia Timer (Windows only)";
+tSCC zModifymmtimer_NAME[] = "MODIFYMMTIMER";
+tSCC zModifymmtimer_Name[] = "modifymmtimer";
+#define MODIFYMMTIMER_FLAGS (OPTST_DISABLED)
+
+#else /* disable Modifymmtimer */
+#define VALUE_OPT_MODIFYMMTIMER NO_EQUIVALENT
+#define MODIFYMMTIMER_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zModifymmtimerText NULL
+#define zModifymmtimer_NAME NULL
+#define zModifymmtimer_Name NULL
+#endif /* SYS_WINNT */
+
+/*
+ * Nofork option description:
+ */
+tSCC zNoforkText[] =
+ "Do not fork";
+tSCC zNofork_NAME[] = "NOFORK";
+tSCC zNofork_Name[] = "nofork";
+#define NOFORK_FLAGS (OPTST_DISABLED)
+
+/*
+ * Nice option description:
+ */
+tSCC zNiceText[] =
+ "Run at high priority";
+tSCC zNice_NAME[] = "NICE";
+tSCC zNice_Name[] = "nice";
+#define NICE_FLAGS (OPTST_DISABLED)
+
+/*
+ * Pidfile option description:
+ */
+tSCC zPidfileText[] =
+ "path to the PID file";
+tSCC zPidfile_NAME[] = "PIDFILE";
+tSCC zPidfile_Name[] = "pidfile";
+#define PIDFILE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Priority option description:
+ */
+tSCC zPriorityText[] =
+ "Process priority";
+tSCC zPriority_NAME[] = "PRIORITY";
+tSCC zPriority_Name[] = "priority";
+#define PRIORITY_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ * Quit option description:
+ */
+tSCC zQuitText[] =
+ "Set the time and quit";
+tSCC zQuit_NAME[] = "QUIT";
+tSCC zQuit_Name[] = "quit";
+#define QUIT_FLAGS (OPTST_DISABLED)
+
+/*
+ * Propagationdelay option description:
+ */
+tSCC zPropagationdelayText[] =
+ "Broadcast/propagation delay";
+tSCC zPropagationdelay_NAME[] = "PROPAGATIONDELAY";
+tSCC zPropagationdelay_Name[] = "propagationdelay";
+#define PROPAGATIONDELAY_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Updateinterval option description:
+ */
+tSCC zUpdateintervalText[] =
+ "interval in seconds between scans for new or dropped interfaces";
+tSCC zUpdateinterval_NAME[] = "UPDATEINTERVAL";
+tSCC zUpdateinterval_Name[] = "updateinterval";
+#define UPDATEINTERVAL_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ * Statsdir option description:
+ */
+tSCC zStatsdirText[] =
+ "Statistics file location";
+tSCC zStatsdir_NAME[] = "STATSDIR";
+tSCC zStatsdir_Name[] = "statsdir";
+#define STATSDIR_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Trustedkey option description:
+ */
+tSCC zTrustedkeyText[] =
+ "Trusted key number";
+tSCC zTrustedkey_NAME[] = "TRUSTEDKEY";
+tSCC zTrustedkey_Name[] = "trustedkey";
+#define TRUSTEDKEY_FLAGS (OPTST_DISABLED | OPTST_STACKED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * User option description:
+ */
+tSCC zUserText[] =
+ "Run as userid (or userid:groupid)";
+tSCC zUser_NAME[] = "USER";
+tSCC zUser_Name[] = "user";
+#define USER_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Var option description:
+ */
+tSCC zVarText[] =
+ "make ARG an ntp variable (RW)";
+tSCC zVar_NAME[] = "VAR";
+tSCC zVar_Name[] = "var";
+#define VAR_FLAGS (OPTST_DISABLED | OPTST_STACKED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Dvar option description:
+ */
+tSCC zDvarText[] =
+ "make ARG an ntp variable (RW|DEF)";
+tSCC zDvar_NAME[] = "DVAR";
+tSCC zDvar_Name[] = "dvar";
+#define DVAR_FLAGS (OPTST_DISABLED | OPTST_STACKED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Slew option description:
+ */
+tSCC zSlewText[] =
+ "Slew up to 600 seconds";
+tSCC zSlew_NAME[] = "SLEW";
+tSCC zSlew_Name[] = "slew";
+#define SLEW_FLAGS (OPTST_DISABLED)
+
+/*
+ * Help/More_Help/Version option descriptions:
+ */
+tSCC zHelpText[] = "Display usage information and exit";
+tSCC zHelp_Name[] = "help";
+
+tSCC zMore_HelpText[] = "Extended usage information passed thru pager";
+tSCC zMore_Help_Name[] = "more-help";
+
+tSCC zVersionText[] = "Output version information and exit";
+tSCC zVersion_Name[] = "version";
+/*
+ * Declare option callback procedures
+ */
+#ifdef DEBUG
+ static tOptProc doOptSet_Debug_Level;
+#else /* not DEBUG */
+# define doOptSet_Debug_Level NULL
+#endif /* def/not DEBUG */
+#if defined(TEST_NTPD_OPTS)
+/*
+ * Under test, omit argument processing, or call optionStackArg,
+ * if multiple copies are allowed.
+ */
+extern tOptProc
+ optionNumericVal, optionPagedUsage, optionStackArg,
+ optionVersionStderr;
+static tOptProc
+ doUsageOpt;
+
+/*
+ * #define map the "normal" callout procs to the test ones...
+ */
+#define SET_DEBUG_LEVEL_OPT_PROC optionStackArg
+
+
+#else /* NOT defined TEST_NTPD_OPTS */
+/*
+ * When not under test, there are different procs to use
+ */
+extern tOptProc
+ optionNumericVal, optionPagedUsage, optionPrintVersion, optionStackArg;
+static tOptProc
+ doUsageOpt;
+
+/*
+ * #define map the "normal" callout procs
+ */
+#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
+
+#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
+#endif /* defined(TEST_NTPD_OPTS) */
+#ifdef TEST_NTPD_OPTS
+# define DOVERPROC optionVersionStderr
+#else
+# define DOVERPROC optionPrintVersion
+#endif /* TEST_NTPD_OPTS */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Ntpd Option Descriptions.
+ */
+static tOptDesc optDesc[ OPTION_CT ] = {
+ { /* entry idx, value */ 0, VALUE_OPT_IPV4,
+ /* equiv idx, value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ IPV4_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIpv4Text, zIpv4_NAME, zIpv4_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 1, VALUE_OPT_IPV6,
+ /* equiv idx, value */ NOLIMIT, NOLIMIT,
+ /* equivalenced to */ INDEX_OPT_IPV4,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ IPV6_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIpv6Text, zIpv6_NAME, zIpv6_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 2, VALUE_OPT_AUTHREQ,
+ /* equiv idx, value */ 2, VALUE_OPT_AUTHREQ,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ AUTHREQ_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aAuthreqCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zAuthreqText, zAuthreq_NAME, zAuthreq_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 3, VALUE_OPT_AUTHNOREQ,
+ /* equiv idx, value */ 3, VALUE_OPT_AUTHNOREQ,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ AUTHNOREQ_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aAuthnoreqCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zAuthnoreqText, zAuthnoreq_NAME, zAuthnoreq_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 4, VALUE_OPT_BCASTSYNC,
+ /* equiv idx, value */ 4, VALUE_OPT_BCASTSYNC,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ BCASTSYNC_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zBcastsyncText, zBcastsync_NAME, zBcastsync_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 5, VALUE_OPT_CONFIGFILE,
+ /* equiv idx, value */ 5, VALUE_OPT_CONFIGFILE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ CONFIGFILE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zConfigfileText, zConfigfile_NAME, zConfigfile_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 6, VALUE_OPT_DEBUG_LEVEL,
+ /* equiv idx, value */ 6, VALUE_OPT_DEBUG_LEVEL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ DEBUG_LEVEL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zDebug_LevelText, zDebug_Level_NAME, zDebug_Level_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 7, VALUE_OPT_SET_DEBUG_LEVEL,
+ /* equiv idx, value */ 7, VALUE_OPT_SET_DEBUG_LEVEL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ SET_DEBUG_LEVEL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ SET_DEBUG_LEVEL_OPT_PROC,
+ /* desc, NAME, name */ zSet_Debug_LevelText, zSet_Debug_Level_NAME, zSet_Debug_Level_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 8, VALUE_OPT_DRIFTFILE,
+ /* equiv idx, value */ 8, VALUE_OPT_DRIFTFILE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ DRIFTFILE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zDriftfileText, zDriftfile_NAME, zDriftfile_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 9, VALUE_OPT_PANICGATE,
+ /* equiv idx, value */ 9, VALUE_OPT_PANICGATE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PANICGATE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPanicgateText, zPanicgate_NAME, zPanicgate_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 10, VALUE_OPT_JAILDIR,
+ /* equiv idx, value */ 10, VALUE_OPT_JAILDIR,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ JAILDIR_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zJaildirText, zJaildir_NAME, zJaildir_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 11, VALUE_OPT_INTERFACE,
+ /* equiv idx, value */ 11, VALUE_OPT_INTERFACE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ INTERFACE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionStackArg,
+ /* desc, NAME, name */ zInterfaceText, zInterface_NAME, zInterface_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 12, VALUE_OPT_KEYFILE,
+ /* equiv idx, value */ 12, VALUE_OPT_KEYFILE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ KEYFILE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zKeyfileText, zKeyfile_NAME, zKeyfile_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 13, VALUE_OPT_LOGFILE,
+ /* equiv idx, value */ 13, VALUE_OPT_LOGFILE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ LOGFILE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zLogfileText, zLogfile_NAME, zLogfile_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 14, VALUE_OPT_NOVIRTUALIPS,
+ /* equiv idx, value */ 14, VALUE_OPT_NOVIRTUALIPS,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ NOVIRTUALIPS_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zNovirtualipsText, zNovirtualips_NAME, zNovirtualips_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 15, VALUE_OPT_MODIFYMMTIMER,
+ /* equiv idx, value */ 15, VALUE_OPT_MODIFYMMTIMER,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ MODIFYMMTIMER_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zModifymmtimerText, zModifymmtimer_NAME, zModifymmtimer_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 16, VALUE_OPT_NOFORK,
+ /* equiv idx, value */ 16, VALUE_OPT_NOFORK,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ NOFORK_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zNoforkText, zNofork_NAME, zNofork_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 17, VALUE_OPT_NICE,
+ /* equiv idx, value */ 17, VALUE_OPT_NICE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ NICE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zNiceText, zNice_NAME, zNice_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 18, VALUE_OPT_PIDFILE,
+ /* equiv idx, value */ 18, VALUE_OPT_PIDFILE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PIDFILE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPidfileText, zPidfile_NAME, zPidfile_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 19, VALUE_OPT_PRIORITY,
+ /* equiv idx, value */ 19, VALUE_OPT_PRIORITY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PRIORITY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionNumericVal,
+ /* desc, NAME, name */ zPriorityText, zPriority_NAME, zPriority_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 20, VALUE_OPT_QUIT,
+ /* equiv idx, value */ 20, VALUE_OPT_QUIT,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ QUIT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zQuitText, zQuit_NAME, zQuit_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 21, VALUE_OPT_PROPAGATIONDELAY,
+ /* equiv idx, value */ 21, VALUE_OPT_PROPAGATIONDELAY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PROPAGATIONDELAY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPropagationdelayText, zPropagationdelay_NAME, zPropagationdelay_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 22, VALUE_OPT_UPDATEINTERVAL,
+ /* equiv idx, value */ 22, VALUE_OPT_UPDATEINTERVAL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ UPDATEINTERVAL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionNumericVal,
+ /* desc, NAME, name */ zUpdateintervalText, zUpdateinterval_NAME, zUpdateinterval_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 23, VALUE_OPT_STATSDIR,
+ /* equiv idx, value */ 23, VALUE_OPT_STATSDIR,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ STATSDIR_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zStatsdirText, zStatsdir_NAME, zStatsdir_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 24, VALUE_OPT_TRUSTEDKEY,
+ /* equiv idx, value */ 24, VALUE_OPT_TRUSTEDKEY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ TRUSTEDKEY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionStackArg,
+ /* desc, NAME, name */ zTrustedkeyText, zTrustedkey_NAME, zTrustedkey_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 25, VALUE_OPT_USER,
+ /* equiv idx, value */ 25, VALUE_OPT_USER,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ USER_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zUserText, zUser_NAME, zUser_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 26, VALUE_OPT_VAR,
+ /* equiv idx, value */ 26, VALUE_OPT_VAR,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ VAR_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionStackArg,
+ /* desc, NAME, name */ zVarText, zVar_NAME, zVar_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 27, VALUE_OPT_DVAR,
+ /* equiv idx, value */ 27, VALUE_OPT_DVAR,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ DVAR_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionStackArg,
+ /* desc, NAME, name */ zDvarText, zDvar_NAME, zDvar_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 28, VALUE_OPT_SLEW,
+ /* equiv idx, value */ 28, VALUE_OPT_SLEW,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SLEW_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSlewText, zSlew_NAME, zSlew_Name,
+ /* disablement strs */ NULL, NULL },
+
+#ifdef NO_OPTIONAL_OPT_ARGS
+# define VERSION_OPT_FLAGS OPTST_IMM | OPTST_NO_INIT
+#else
+# define VERSION_OPT_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+ OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
+#endif
+
+ { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ VERSION_OPT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ DOVERPROC,
+ /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
+ /* disablement strs */ NULL, NULL },
+
+#undef VERSION_OPT_FLAGS
+
+
+ { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ doUsageOpt,
+ /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionPagedUsage,
+ /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
+ /* disablement strs */ NULL, NULL }
+};
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Ntpd Option Environment
+ */
+tSCC zPROGNAME[] = "NTPD";
+tSCC zUsageTitle[] =
+"ntpd - NTP daemon program - Ver. 4.2.4p5\n\
+USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n";
+#define zRcName NULL
+#define apzHomeList NULL
+
+tSCC zBugsAddr[] = "http://bugs.ntp.isc.org, bugs@ntp.org";
+#define zExplain NULL
+tSCC zDetail[] = "\n\n";
+tSCC zFullVersion[] = NTPD_FULL_VERSION;
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 408 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE
+ static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+tOptions ntpdOptions = {
+ OPTIONS_STRUCT_VERSION,
+ 0, NULL, /* original argc + argv */
+ ( OPTPROC_BASE
+ + OPTPROC_ERRSTOP
+ + OPTPROC_SHORTOPT
+ + OPTPROC_LONGOPT
+ + OPTPROC_NO_REQ_OPT
+ + OPTPROC_ENVIRON
+ + OPTPROC_NO_ARGS ),
+ 0, NULL, /* current option index, current option */
+ NULL, NULL, zPROGNAME,
+ zRcName, zCopyright, zCopyrightNotice,
+ zFullVersion, apzHomeList, zUsageTitle,
+ zExplain, zDetail, optDesc,
+ zBugsAddr, /* address to send bugs to */
+ NULL, NULL, /* extensions/saved state */
+ optionUsage, /* usage procedure */
+ translate_option_strings, /* translation procedure */
+ /*
+ * Indexes to special options
+ */
+ { INDEX_OPT_MORE_HELP,
+ 0 /* no option state saving */,
+ NO_EQUIVALENT /* index of '-#' option */,
+ NO_EQUIVALENT /* index of default opt */
+ },
+ 32 /* full option count */, 29 /* user option count */
+};
+
+/*
+ * Create the static procedure(s) declared above.
+ */
+static void
+doUsageOpt(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ USAGE( EXIT_SUCCESS );
+}
+
+#if ! defined(TEST_NTPD_OPTS)
+
+/* * * * * * *
+ *
+ * For the set-debug-level option, when DEBUG is #define-d.
+ */
+#ifdef DEBUG
+static void
+doOptSet_Debug_Level(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ /* extracted from ../include/debug-opt.def, line 29 */
+DESC(DEBUG_LEVEL).optOccCt = atoi( pOptDesc->pzLastArg );
+}
+#endif /* defined DEBUG */
+
+#endif /* defined(TEST_NTPD_OPTS) */
+
+/* extracted from /usr/local/gnu/share/autogen/optmain.tpl near line 92 */
+
+#if defined(TEST_NTPD_OPTS) /* TEST MAIN PROCEDURE: */
+
+int
+main( int argc, char** argv )
+{
+ int res = EXIT_SUCCESS;
+ (void)optionProcess( &ntpdOptions, argc, argv );
+ {
+ void optionPutShell( tOptions* );
+ optionPutShell( &ntpdOptions );
+ }
+ return res;
+}
+#endif /* defined TEST_NTPD_OPTS */
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 514 */
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext( char const* pz );
+static void coerce_it(void** s);
+
+static char*
+AO_gettext( char const* pz )
+{
+ char* pzRes;
+ if (pz == NULL)
+ return NULL;
+ pzRes = _(pz);
+ if (pzRes == pz)
+ return pzRes;
+ pzRes = strdup( pzRes );
+ if (pzRes == NULL) {
+ fputs( _("No memory for duping translated strings\n"), stderr );
+ exit( EXIT_FAILURE );
+ }
+ return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s); }
+#define COERSION(_f) \
+ coerce_it((void*)&(ntpdOptions._f))
+
+/*
+ * This invokes the translation code (e.g. gettext(3)).
+ */
+static void
+translate_option_strings( void )
+{
+ /*
+ * Guard against re-translation. It won't work. The strings will have
+ * been changed by the first pass through this code. One shot only.
+ */
+ if (option_usage_text.field_ct == 0)
+ return;
+ /*
+ * Do the translations. The first pointer follows the field count field.
+ * The field count field is the size of a pointer.
+ */
+ {
+ char** ppz = (char**)(void*)&(option_usage_text);
+ int ix = option_usage_text.field_ct;
+
+ do {
+ ppz++;
+ *ppz = AO_gettext(*ppz);
+ } while (--ix > 0);
+ }
+ option_usage_text.field_ct = 0;
+
+ {
+ tOptDesc* pOD = ntpdOptions.pOptDesc;
+ int ix = ntpdOptions.optCt;
+
+ for (;;) {
+ pOD->pzText = AO_gettext(pOD->pzText);
+ pOD->pz_NAME = AO_gettext(pOD->pz_NAME);
+ pOD->pz_Name = AO_gettext(pOD->pz_Name);
+ pOD->pz_DisableName = AO_gettext(pOD->pz_DisableName);
+ pOD->pz_DisablePfx = AO_gettext(pOD->pz_DisablePfx);
+ if (--ix <= 0)
+ break;
+ pOD++;
+ }
+ }
+ COERSION(pzCopyright);
+ COERSION(pzCopyNotice);
+ COERSION(pzFullVersion);
+ COERSION(pzUsageTitle);
+ COERSION(pzExplain);
+ COERSION(pzDetail);
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef __cplusplus
+}
+#endif
+/* ntpd-opts.c ends here */
diff --git a/contrib/ntp/ntpd/ntpd-opts.def b/contrib/ntp/ntpd/ntpd-opts.def
new file mode 100644
index 0000000..7266e1b
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpd-opts.def
@@ -0,0 +1,13 @@
+/* -*- Mode: Text -*- */
+
+autogen definitions options;
+
+#include copyright.def
+
+prog-name = "ntpd";
+prog-title = "NTP daemon program";
+
+#include ntpdbase-opts.def
+
+detail = <<- _END_DETAIL
+ _END_DETAIL;
diff --git a/contrib/ntp/ntpd/ntpd-opts.h b/contrib/ntp/ntpd/ntpd-opts.h
new file mode 100644
index 0000000..45d0de5
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpd-opts.h
@@ -0,0 +1,351 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (ntpd-opts.h)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:20:09 AM EDT
+ * From the definitions ntpd-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This header file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * ntpd author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * ntpd copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+/*
+ * This file contains the programmatic interface to the Automated
+ * Options generated for the ntpd program.
+ * These macros are documented in the AutoGen info file in the
+ * "AutoOpts" chapter. Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_NTPD_OPTS_H_GUARD
+#define AUTOOPTS_NTPD_OPTS_H_GUARD
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ * Ensure that the library used for compiling this generated header is at
+ * least as new as the version current when the header template was released
+ * (not counting patch version increments). Also ensure that the oldest
+ * tolerable version is at least as old as what was current when the header
+ * template was released.
+ */
+#define AO_TEMPLATE_VERSION 118784
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+ Choke Me.
+#endif
+
+/*
+ * Enumeration of each option:
+ */
+typedef enum {
+ INDEX_OPT_IPV4 = 0,
+ INDEX_OPT_IPV6 = 1,
+ INDEX_OPT_AUTHREQ = 2,
+ INDEX_OPT_AUTHNOREQ = 3,
+ INDEX_OPT_BCASTSYNC = 4,
+ INDEX_OPT_CONFIGFILE = 5,
+ INDEX_OPT_DEBUG_LEVEL = 6,
+ 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_UPDATEINTERVAL = 22,
+ INDEX_OPT_STATSDIR = 23,
+ INDEX_OPT_TRUSTEDKEY = 24,
+ INDEX_OPT_USER = 25,
+ INDEX_OPT_VAR = 26,
+ INDEX_OPT_DVAR = 27,
+ INDEX_OPT_SLEW = 28,
+ INDEX_OPT_VERSION = 29,
+ INDEX_OPT_HELP = 30,
+ INDEX_OPT_MORE_HELP = 31
+} teOptIndex;
+
+#define OPTION_CT 32
+#define NTPD_VERSION "4.2.4p5"
+#define NTPD_FULL_VERSION "ntpd - NTP daemon program - Ver. 4.2.4p5"
+
+/*
+ * Interface defines for all options. Replace "n" with the UPPER_CASED
+ * option name (as in the teOptIndex enumeration above).
+ * e.g. HAVE_OPT( IPV4 )
+ */
+#define DESC(n) (ntpdOptions.pOptDesc[INDEX_OPT_## n])
+#define HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define OPT_ARG(n) (DESC(n).optArg.argString)
+#define STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define COUNT_OPT(n) (DESC(n).optOccCt)
+#define ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define CLEAR_OPT(n) STMTS( \
+ DESC(n).fOptState &= OPTST_PERSISTENT_MASK; \
+ if ( (DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+ DESC(n).fOptState |= OPTST_DISABLED; \
+ DESC(n).optCookie = NULL )
+
+/*
+ * Make sure there are no #define name conflicts with the option names
+ */
+#ifndef NO_OPTION_NAME_WARNINGS
+# ifdef IPV4
+# warning undefining IPV4 due to option name conflict
+# undef IPV4
+# endif
+# ifdef IPV6
+# warning undefining IPV6 due to option name conflict
+# undef IPV6
+# endif
+# ifdef AUTHREQ
+# warning undefining AUTHREQ due to option name conflict
+# undef AUTHREQ
+# endif
+# ifdef AUTHNOREQ
+# warning undefining AUTHNOREQ due to option name conflict
+# undef AUTHNOREQ
+# endif
+# ifdef BCASTSYNC
+# warning undefining BCASTSYNC due to option name conflict
+# undef BCASTSYNC
+# endif
+# ifdef CONFIGFILE
+# warning undefining CONFIGFILE due to option name conflict
+# undef CONFIGFILE
+# endif
+# ifdef DEBUG_LEVEL
+# warning undefining DEBUG_LEVEL due to option name conflict
+# undef DEBUG_LEVEL
+# endif
+# ifdef SET_DEBUG_LEVEL
+# warning undefining SET_DEBUG_LEVEL due to option name conflict
+# undef SET_DEBUG_LEVEL
+# endif
+# ifdef DRIFTFILE
+# warning undefining DRIFTFILE due to option name conflict
+# undef DRIFTFILE
+# endif
+# ifdef PANICGATE
+# warning undefining PANICGATE due to option name conflict
+# undef PANICGATE
+# endif
+# ifdef JAILDIR
+# warning undefining JAILDIR due to option name conflict
+# undef JAILDIR
+# endif
+# ifdef INTERFACE
+# warning undefining INTERFACE due to option name conflict
+# undef INTERFACE
+# endif
+# ifdef KEYFILE
+# warning undefining KEYFILE due to option name conflict
+# undef KEYFILE
+# endif
+# ifdef LOGFILE
+# warning undefining LOGFILE due to option name conflict
+# undef LOGFILE
+# endif
+# ifdef NOVIRTUALIPS
+# warning undefining NOVIRTUALIPS due to option name conflict
+# undef NOVIRTUALIPS
+# endif
+# ifdef MODIFYMMTIMER
+# warning undefining MODIFYMMTIMER due to option name conflict
+# undef MODIFYMMTIMER
+# endif
+# ifdef NOFORK
+# warning undefining NOFORK due to option name conflict
+# undef NOFORK
+# endif
+# ifdef NICE
+# warning undefining NICE due to option name conflict
+# undef NICE
+# endif
+# ifdef PIDFILE
+# warning undefining PIDFILE due to option name conflict
+# undef PIDFILE
+# endif
+# ifdef PRIORITY
+# warning undefining PRIORITY due to option name conflict
+# undef PRIORITY
+# endif
+# ifdef QUIT
+# warning undefining QUIT due to option name conflict
+# undef QUIT
+# endif
+# ifdef PROPAGATIONDELAY
+# warning undefining PROPAGATIONDELAY due to option name conflict
+# undef PROPAGATIONDELAY
+# endif
+# ifdef UPDATEINTERVAL
+# warning undefining UPDATEINTERVAL due to option name conflict
+# undef UPDATEINTERVAL
+# endif
+# ifdef STATSDIR
+# warning undefining STATSDIR due to option name conflict
+# undef STATSDIR
+# endif
+# ifdef TRUSTEDKEY
+# warning undefining TRUSTEDKEY due to option name conflict
+# undef TRUSTEDKEY
+# endif
+# ifdef USER
+# warning undefining USER due to option name conflict
+# undef USER
+# endif
+# ifdef VAR
+# warning undefining VAR due to option name conflict
+# undef VAR
+# endif
+# ifdef DVAR
+# warning undefining DVAR due to option name conflict
+# undef DVAR
+# endif
+# ifdef SLEW
+# warning undefining SLEW due to option name conflict
+# undef SLEW
+# endif
+#else /* NO_OPTION_NAME_WARNINGS */
+# undef IPV4
+# undef IPV6
+# undef AUTHREQ
+# undef AUTHNOREQ
+# undef BCASTSYNC
+# undef CONFIGFILE
+# undef DEBUG_LEVEL
+# undef SET_DEBUG_LEVEL
+# undef DRIFTFILE
+# undef PANICGATE
+# undef JAILDIR
+# undef INTERFACE
+# undef KEYFILE
+# undef LOGFILE
+# undef NOVIRTUALIPS
+# undef MODIFYMMTIMER
+# undef NOFORK
+# undef NICE
+# undef PIDFILE
+# undef PRIORITY
+# undef QUIT
+# undef PROPAGATIONDELAY
+# undef UPDATEINTERVAL
+# undef STATSDIR
+# undef TRUSTEDKEY
+# undef USER
+# undef VAR
+# undef DVAR
+# undef SLEW
+#endif /* NO_OPTION_NAME_WARNINGS */
+
+/*
+ * Interface defines for specific options.
+ */
+#define VALUE_OPT_IPV4 '4'
+#define WHICH_OPT_IPV4 (DESC(IPV4).optActualValue)
+#define WHICH_IDX_IPV4 (DESC(IPV4).optActualIndex)
+#define VALUE_OPT_IPV6 '6'
+#define VALUE_OPT_AUTHREQ 'a'
+#define VALUE_OPT_AUTHNOREQ 'A'
+#define VALUE_OPT_BCASTSYNC 'b'
+#define VALUE_OPT_CONFIGFILE 'c'
+#ifdef DEBUG
+#define VALUE_OPT_DEBUG_LEVEL 'd'
+#endif /* DEBUG */
+#ifdef DEBUG
+#define VALUE_OPT_SET_DEBUG_LEVEL 'D'
+#endif /* DEBUG */
+#define VALUE_OPT_DRIFTFILE 'f'
+#define VALUE_OPT_PANICGATE 'g'
+#define VALUE_OPT_JAILDIR 'i'
+#define VALUE_OPT_INTERFACE 'I'
+#define VALUE_OPT_KEYFILE 'k'
+#define VALUE_OPT_LOGFILE 'l'
+#define VALUE_OPT_NOVIRTUALIPS 'L'
+#ifdef SYS_WINNT
+#define VALUE_OPT_MODIFYMMTIMER 'M'
+#endif /* SYS_WINNT */
+#define VALUE_OPT_NOFORK 'n'
+#define VALUE_OPT_NICE 'N'
+#define VALUE_OPT_PIDFILE 'p'
+#define VALUE_OPT_PRIORITY 'P'
+#define OPT_VALUE_PRIORITY (DESC(PRIORITY).optArg.argInt)
+#define VALUE_OPT_QUIT 'q'
+#define VALUE_OPT_PROPAGATIONDELAY 'r'
+#define VALUE_OPT_UPDATEINTERVAL 'U'
+#define OPT_VALUE_UPDATEINTERVAL (DESC(UPDATEINTERVAL).optArg.argInt)
+#define VALUE_OPT_STATSDIR 's'
+#define VALUE_OPT_TRUSTEDKEY 't'
+#define VALUE_OPT_USER 'u'
+#define VALUE_OPT_VAR 'v'
+#define VALUE_OPT_DVAR 'V'
+#define VALUE_OPT_SLEW 'x'
+
+#define VALUE_OPT_VERSION 'v'
+#define VALUE_OPT_HELP '?'
+#define VALUE_OPT_MORE_HELP '!'
+/*
+ * Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR STMTS( ntpdOptions.fOptSet &= ~OPTPROC_ERRSTOP )
+#define ERRSTOP_OPTERR STMTS( ntpdOptions.fOptSet |= OPTPROC_ERRSTOP )
+#define RESTART_OPT(n) STMTS( \
+ ntpdOptions.curOptIdx = (n); \
+ ntpdOptions.pzCurOpt = NULL )
+#define START_OPT RESTART_OPT(1)
+#define USAGE(c) (*ntpdOptions.pUsageProc)( &ntpdOptions, c )
+/* extracted from /usr/local/gnu/share/autogen/opthead.tpl near line 360 */
+
+/* * * * * *
+ *
+ * Declare the ntpd option descriptor.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern tOptions ntpdOptions;
+
+#ifndef _
+# if ENABLE_NLS
+# include <stdio.h>
+ static inline char* aoGetsText( char const* pz ) {
+ if (pz == NULL) return NULL;
+ return (char*)gettext( pz );
+ }
+# define _(s) aoGetsText(s)
+# else /* ENABLE_NLS */
+# define _(s) s
+# endif /* ENABLE_NLS */
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_NTPD_OPTS_H_GUARD */
+/* ntpd-opts.h ends here */
diff --git a/contrib/ntp/ntpd/ntpd-opts.menu b/contrib/ntp/ntpd/ntpd-opts.menu
new file mode 100644
index 0000000..3425d82
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpd-opts.menu
@@ -0,0 +1 @@
+* ntpd Invocation:: Invoking ntpd
diff --git a/contrib/ntp/ntpd/ntpd-opts.texi b/contrib/ntp/ntpd/ntpd-opts.texi
new file mode 100644
index 0000000..5a99b58
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpd-opts.texi
@@ -0,0 +1,489 @@
+@node ntpd Invocation
+@section Invoking ntpd
+@pindex ntpd
+@cindex NTP daemon program
+@ignore
+#
+# EDIT THIS FILE WITH CAUTION (ntpd-opts.texi)
+#
+# It has been AutoGen-ed Sunday August 17, 2008 at 05:20:12 AM EDT
+# From the definitions ntpd-opts.def
+# and the template file aginfo.tpl
+@end ignore
+This program has no explanation.
+
+
+
+This section was generated by @strong{AutoGen},
+the aginfo template and the option descriptions for the @command{ntpd} program. It documents the ntpd usage text and option meanings.
+
+This software is released under a specialized copyright license.
+
+@menu
+* ntpd usage:: ntpd usage help (-?)
+* ntpd authnoreq:: authnoreq option (-A)
+* ntpd authreq:: authreq option (-a)
+* ntpd bcastsync:: bcastsync option (-b)
+* ntpd configfile:: configfile option (-c)
+* ntpd debug-level:: debug-level option (-d)
+* ntpd driftfile:: driftfile option (-f)
+* ntpd dvar:: dvar option (-V)
+* ntpd interface:: interface option (-I)
+* ntpd ipv4:: ipv4 option (-4)
+* ntpd ipv6:: ipv6 option (-6)
+* ntpd jaildir:: jaildir option (-i)
+* ntpd keyfile:: keyfile option (-k)
+* ntpd logfile:: logfile option (-l)
+* ntpd modifymmtimer:: modifymmtimer option (-M)
+* ntpd nice:: nice option (-N)
+* ntpd nofork:: nofork option (-n)
+* ntpd novirtualips:: novirtualips option (-L)
+* ntpd panicgate:: panicgate option (-g)
+* ntpd pidfile:: pidfile option (-p)
+* ntpd priority:: priority option (-P)
+* ntpd propagationdelay:: propagationdelay option (-r)
+* ntpd quit:: quit option (-q)
+* ntpd set-debug-level:: set-debug-level option (-D)
+* ntpd slew:: slew option (-x)
+* ntpd statsdir:: statsdir option (-s)
+* ntpd trustedkey:: trustedkey option (-t)
+* ntpd updateinterval:: updateinterval option (-U)
+* ntpd user:: user option (-u)
+* ntpd var:: var option (-v)
+@end menu
+
+@node ntpd usage
+@subsection ntpd usage help (-?)
+@cindex ntpd usage
+
+This is the automatically generated usage text for ntpd:
+
+@exampleindent 0
+@example
+ntpd - NTP daemon program - Ver. 4.2.5p113
+USAGE: ntpd [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]...
+ Flg Arg Option-Name Description
+ -4 no ipv4 Force IPv4 DNS name resolution
+ -6 no ipv6 Force IPv6 DNS name resolution
+ - an alternate for ipv4
+ -a no authreq Require crypto authentication
+ - prohibits these options:
+ authnoreq
+ -A no authnoreq Do not require crypto authentication
+ - prohibits these options:
+ authreq
+ -b no bcastsync Allow us to sync to broadcast servers
+ -c Str configfile configuration file name
+ -d no debug-level Increase output debug message level
+ - may appear multiple times
+ -D Str set-debug-level Set the output debug message level
+ - may appear multiple times
+ -f Str driftfile frequency drift file name
+ -g no panicgate Allow the first adjustment to be Big
+ -I Str interface Listen on the specified interface or IP
+ - may appear multiple times
+ -k Str keyfile path to symmetric keys
+ -l Str logfile path to the log file
+ -L no novirtualips Do not listen to virtual IPs
+ -n no nofork Do not fork
+ -N no nice Run at high priority
+ -p Str pidfile path to the PID file
+ -P Num priority Process priority
+ -q no quit Set the time and quit
+ -r Str propagationdelay Broadcast/propagation delay
+ -s Str statsdir Statistics file location
+ -t Str trustedkey Trusted key number
+ - may appear multiple times
+ -U Num updateinterval interval in seconds between scans for new or dropped interfaces
+ Str var make ARG an ntp variable (RW)
+ - may appear multiple times
+ Str dvar make ARG an ntp variable (RW|DEF)
+ - may appear multiple times
+ -x no slew Slew up to 600 seconds
+ opt version Output version information and exit
+ -? no help Display usage information and exit
+ -! no more-help Extended usage information passed thru pager
+
+Options are specified by doubled hyphens and their name
+or by a single hyphen and the flag character.
+
+The following option preset mechanisms are supported:
+ - examining environment variables named NTPD_*
+
+
+
+please send bug reports to: http://bugs.ntp.org, bugs@@ntp.org
+@end example
+@exampleindent 4
+
+@node ntpd ipv4
+@subsection ipv4 option (-4)
+@cindex ntpd-ipv4
+
+This is the ``force ipv4 dns name resolution'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+is a member of the ipv4 class of options.
+@end itemize
+
+Force DNS resolution of following host names on the command line
+to the IPv4 namespace.
+
+@node ntpd ipv6
+@subsection ipv6 option (-6)
+@cindex ntpd-ipv6
+
+This is the ``force ipv6 dns name resolution'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+is a member of the ipv4 class of options.
+@end itemize
+
+Force DNS resolution of following host names on the command line
+to the IPv6 namespace.
+
+@node ntpd authreq
+@subsection authreq option (-a)
+@cindex ntpd-authreq
+
+This is the ``require crypto authentication'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+authnoreq.
+@end itemize
+
+Require cryptographic authentication for broadcast client,
+multicast client and symmetric passive associations.
+This is the default.
+
+@node ntpd authnoreq
+@subsection authnoreq option (-A)
+@cindex ntpd-authnoreq
+
+This is the ``do not require crypto authentication'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+authreq.
+@end itemize
+
+Do not require cryptographic authentication for broadcast client,
+multicast client and symmetric passive associations.
+This is almost never a good idea.
+
+@node ntpd bcastsync
+@subsection bcastsync option (-b)
+@cindex ntpd-bcastsync
+
+This is the ``allow us to sync to broadcast servers'' option.
+
+
+@node ntpd configfile
+@subsection configfile option (-c)
+@cindex ntpd-configfile
+
+This is the ``configuration file name'' option.
+The name and path of the configuration file,
+/etc/ntp.conf
+by default.
+
+@node ntpd debug-level
+@subsection debug-level option (-d)
+@cindex ntpd-debug-level
+
+This is the ``increase output debug message level'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@item
+must be compiled in by defining @code{DEBUG} during the compilation.
+@end itemize
+
+Increase the debugging message output level.
+
+@node ntpd set-debug-level
+@subsection set-debug-level option (-D)
+@cindex ntpd-set-debug-level
+
+This is the ``set the output debug message level'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@item
+must be compiled in by defining @code{DEBUG} during the compilation.
+@end itemize
+
+Set the output debugging level. Can be supplied multiple times,
+but each overrides the previous value(s).
+
+@node ntpd driftfile
+@subsection driftfile option (-f)
+@cindex ntpd-driftfile
+
+This is the ``frequency drift file name'' option.
+The name and path of the frequency file,
+/etc/ntp.drift
+by default.
+This is the same operation as the
+driftfile driftfile
+configuration specification in the
+/etc/ntp.conf
+file.
+
+@node ntpd panicgate
+@subsection panicgate option (-g)
+@cindex ntpd-panicgate
+
+This is the ``allow the first adjustment to be big'' option.
+Normally,
+ntpd
+exits with a message to the system log if the offset exceeds the panic threshold, which is 1000 s by default. This option allows the time to be set to any value without restriction; however, this can happen only once. If the threshold is exceeded after that,
+ntpd
+will exit with a message to the system log. This option can be used with the
+-q
+and
+-x
+options.
+See the
+tinker
+configuration file directive for other options.
+
+@node ntpd jaildir
+@subsection jaildir option (-i)
+@cindex ntpd-jaildir
+
+This is the ``jail directory'' option.
+Chroot the server to the directory
+jaildir
+.
+This option also implies that the server attempts to drop root privileges at startup (otherwise, chroot gives very little additional security), and it is only available if the OS supports to run the server without full root privileges.
+You may need to also specify a
+-u
+option.
+
+@node ntpd interface
+@subsection interface option (-I)
+@cindex ntpd-interface
+
+This is the ``listen on interface'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@end itemize
+
+
+
+@node ntpd keyfile
+@subsection keyfile option (-k)
+@cindex ntpd-keyfile
+
+This is the ``path to symmetric keys'' option.
+Specify the name and path of the symmetric key file.
+/etc/ntp.keys
+is the default.
+This is the same operation as the
+keys keyfile
+configuration file directive.
+
+@node ntpd logfile
+@subsection logfile option (-l)
+@cindex ntpd-logfile
+
+This is the ``path to the log file'' option.
+Specify the name and path of the log file.
+The default is the system log file.
+This is the same operation as the
+logfile logfile
+configuration file directive.
+
+@node ntpd novirtualips
+@subsection novirtualips option (-L)
+@cindex ntpd-novirtualips
+
+This is the ``do not listen to virtual ips'' option.
+Do not listen to virtual IPs. The default is to listen.
+
+@node ntpd modifymmtimer
+@subsection modifymmtimer option (-M)
+@cindex ntpd-modifymmtimer
+
+This is the ``modify multimedia timer (windows only)'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{SYS_WINNT} during the compilation.
+@end itemize
+
+Set the Windows Multimedia Timer to highest resolution.
+
+@node ntpd nofork
+@subsection nofork option (-n)
+@cindex ntpd-nofork
+
+This is the ``do not fork'' option.
+
+
+@node ntpd nice
+@subsection nice option (-N)
+@cindex ntpd-nice
+
+This is the ``run at high priority'' option.
+To the extent permitted by the operating system, run
+ntpd
+at the highest priority.
+
+@node ntpd pidfile
+@subsection pidfile option (-p)
+@cindex ntpd-pidfile
+
+This is the ``path to the pid file'' option.
+Specify the name and path of the file used to record
+ntpd's
+process ID.
+This is the same operation as the
+pidfile pidfile
+configuration file directive.
+
+@node ntpd priority
+@subsection priority option (-P)
+@cindex ntpd-priority
+
+This is the ``process priority'' option.
+To the extent permitted by the operating system, run
+ntpd
+at the specified
+sched_setscheduler(SCHED_FIFO)
+priority.
+
+@node ntpd quit
+@subsection quit option (-q)
+@cindex ntpd-quit
+
+This is the ``set the time and quit'' option.
+ntpd
+will exit just after the first time the clock is set. This behavior mimics that of the
+ntpdate
+program, which is to be retired.
+The
+-g
+and
+-x
+options can be used with this option.
+Note: The kernel time discipline is disabled with this option.
+
+@node ntpd propagationdelay
+@subsection propagationdelay option (-r)
+@cindex ntpd-propagationdelay
+
+This is the ``broadcast/propagation delay'' option.
+Specify the default propagation delay from the broadcast/multicast server to this client. This is necessary only if the delay cannot be computed automatically by the protocol.
+
+@node ntpd updateinterval
+@subsection updateinterval option (-U)
+@cindex ntpd-updateinterval
+
+This is the ``interval in seconds between scans for new or dropped interfaces'' option.
+Give the time in seconds between two scans for new or dropped interfaces.
+For systems with routing socket support the scans will be performed shortly after the interface change
+has been detected by the system.
+Use 0 to disable scanning.
+
+@node ntpd statsdir
+@subsection statsdir option (-s)
+@cindex ntpd-statsdir
+
+This is the ``statistics file location'' option.
+Specify the directory path for files created by the statistics facility.
+This is the same operation as the
+statsdir statsdir
+configuration file directive.
+
+@node ntpd trustedkey
+@subsection trustedkey option (-t)
+@cindex ntpd-trustedkey
+
+This is the ``trusted key number'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@end itemize
+
+Add a key number to the trusted key list.
+
+@node ntpd user
+@subsection user option (-u)
+@cindex ntpd-user
+
+This is the ``run as userid (or userid:groupid)'' option.
+Specify a user, and optionally a group, to switch to.
+This option is only available if the OS supports to run the server without full root privileges.
+Currently, this option is supported under NetBSD (configure with
+--enable-clockctl
+) and Linux (configure with
+--enable-linuxcaps
+).
+
+@node ntpd var
+@subsection var option (-v)
+@cindex ntpd-var
+
+This is the ``make arg an ntp variable (rw)'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@end itemize
+
+
+
+@node ntpd dvar
+@subsection dvar option (-V)
+@cindex ntpd-dvar
+
+This is the ``make arg an ntp variable (rw|def)'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@end itemize
+
+
+
+@node ntpd slew
+@subsection slew option (-x)
+@cindex ntpd-slew
+
+This is the ``slew up to 600 seconds'' option.
+Normally, the time is slewed if the offset is less than the step threshold, which is 128 ms by default, and stepped if above the threshold.
+This option sets the threshold to 600 s, which is well within the accuracy window to set the clock manually.
+Note: Since the slew rate of typical Unix kernels is limited to 0.5 ms/s, each second of adjustment requires an amortization interval of 2000 s.
+Thus, an adjustment as much as 600 s will take almost 14 days to complete.
+This option can be used with the
+-g
+and
+-q
+options.
+See the
+tinker
+configuration file directive for other options.
+Note: The kernel time discipline is disabled with this option.
diff --git a/contrib/ntp/ntpd/ntpd.1 b/contrib/ntp/ntpd/ntpd.1
new file mode 100644
index 0000000..25aee41
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpd.1
@@ -0,0 +1,296 @@
+.TH NTPD 1 2008-08-17 "( 4.2.4p5)" "Programmer's Manual"
+.\" EDIT THIS FILE WITH CAUTION (ntpd.1)
+.\"
+.\" It has been AutoGen-ed Sunday August 17, 2008 at 05:20:11 AM EDT
+.\" From the definitions ntpd-opts.def
+.\" and the template file agman1.tpl
+.\"
+.SH NAME
+ntpd \- NTP daemon program
+.SH SYNOPSIS
+.B ntpd
+.\" Mixture of short (flag) options and long options
+.RB [ \-\fIflag\fP " [\fIvalue\fP]]... [" \--\fIopt-name\fP " [[=| ]\fIvalue\fP]]..."
+.PP
+All arguments must be options.
+.SH "DESCRIPTION"
+This manual page documents, briefly, the \fBntpd\fP command.
+
+.SH OPTIONS
+.TP
+.BR \-4 ", " \--ipv4
+Force IPv4 DNS name resolution.
+This option is a member of the ipv4 class of options.
+.sp
+Force DNS resolution of following host names on the command line
+to the IPv4 namespace.
+.TP
+.BR \-6 ", " \--ipv6
+Force IPv6 DNS name resolution.
+This option is a member of the ipv4 class of options.
+.sp
+Force DNS resolution of following host names on the command line
+to the IPv6 namespace.
+.TP
+.BR \-a ", " \--authreq
+Require crypto authentication.
+This option must not appear in combination with any of the following options:
+authnoreq.
+.sp
+Require cryptographic authentication for broadcast client,
+multicast client and symmetric passive associations.
+This is the default.
+.TP
+.BR \-A ", " \--authnoreq
+Do not require crypto authentication.
+This option must not appear in combination with any of the following options:
+authreq.
+.sp
+Do not require cryptographic authentication for broadcast client,
+multicast client and symmetric passive associations.
+This is almost never a good idea.
+.TP
+.BR \-b ", " \--bcastsync
+Allow us to sync to broadcast servers.
+.sp
+
+.TP
+.BR \-c " \fIstring\fP, " \--configfile "=" \fIstring\fP
+configuration file name.
+.sp
+The name and path of the configuration file,
+/etc/ntp.conf
+by default.
+.TP
+.BR \-d ", " \--debug-level
+Increase output debug message level.
+This option may appear an unlimited number of times.
+.sp
+Increase the debugging message output level.
+.TP
+.BR \-D " \fIstring\fP, " \--set-debug-level "=" \fIstring\fP
+Set the output debug message level.
+This option may appear an unlimited number of times.
+.sp
+Set the output debugging level. Can be supplied multiple times,
+but each overrides the previous value(s).
+.TP
+.BR \-f " \fIstring\fP, " \--driftfile "=" \fIstring\fP
+frequency drift file name.
+.sp
+The name and path of the frequency file,
+/etc/ntp.drift
+by default.
+This is the same operation as the
+driftfile driftfile
+configuration specification in the
+/etc/ntp.conf
+file.
+.TP
+.BR \-g ", " \--panicgate
+Allow the first adjustment to be Big.
+.sp
+Normally,
+ntpd
+exits with a message to the system log if the offset exceeds the panic threshold, which is 1000 s by default. This option allows the time to be set to any value without restriction; however, this can happen only once. If the threshold is exceeded after that,
+ntpd
+will exit with a message to the system log. This option can be used with the
+-q
+and
+-x
+options.
+See the
+tinker
+configuration file directive for other options.
+.TP
+.BR \-i " \fIstring\fP, " \--jaildir "=" \fIstring\fP
+Jail directory.
+.sp
+Chroot the server to the directory
+jaildir
+.
+This option also implies that the server attempts to drop root privileges at startup (otherwise, chroot gives very little additional security), and it is only available if the OS supports to run the server without full root privileges.
+You may need to also specify a
+-u
+option.
+.TP
+.BR \-I " \fIiface\fP, " \--interface "=" \fIiface\fP
+Listen on interface.
+This option may appear an unlimited number of times.
+.sp
+
+.TP
+.BR \-k " \fIstring\fP, " \--keyfile "=" \fIstring\fP
+path to symmetric keys.
+.sp
+Specify the name and path of the symmetric key file.
+/etc/ntp.keys
+is the default.
+This is the same operation as the
+keys keyfile
+configuration file directive.
+.TP
+.BR \-l " \fIstring\fP, " \--logfile "=" \fIstring\fP
+path to the log file.
+.sp
+Specify the name and path of the log file.
+The default is the system log file.
+This is the same operation as the
+logfile logfile
+configuration file directive.
+.TP
+.BR \-L ", " \--novirtualips
+Do not listen to virtual IPs.
+.sp
+Do not listen to virtual IPs. The default is to listen.
+.TP
+.BR \-M ", " \--modifymmtimer
+Modify Multimedia Timer (Windows only).
+.sp
+Set the Windows Multimedia Timer to highest resolution.
+.TP
+.BR \-n ", " \--nofork
+Do not fork.
+.sp
+
+.TP
+.BR \-N ", " \--nice
+Run at high priority.
+.sp
+To the extent permitted by the operating system, run
+ntpd
+at the highest priority.
+.TP
+.BR \-p " \fIstring\fP, " \--pidfile "=" \fIstring\fP
+path to the PID file.
+.sp
+Specify the name and path of the file used to record
+ntpd's
+process ID.
+This is the same operation as the
+pidfile pidfile
+configuration file directive.
+.TP
+.BR \-P " \fInumber\fP, " \--priority "=" \fInumber\fP
+Process priority.
+This option takes an integer number as its argument.
+.sp
+To the extent permitted by the operating system, run
+ntpd
+at the specified
+sched_setscheduler(SCHED_FIFO)
+priority.
+.TP
+.BR \-q ", " \--quit
+Set the time and quit.
+.sp
+ntpd
+will exit just after the first time the clock is set. This behavior mimics that of the
+ntpdate
+program, which is to be retired.
+The
+-g
+and
+-x
+options can be used with this option.
+Note: The kernel time discipline is disabled with this option.
+.TP
+.BR \-r " \fIstring\fP, " \--propagationdelay "=" \fIstring\fP
+Broadcast/propagation delay.
+.sp
+Specify the default propagation delay from the broadcast/multicast server to this client. This is necessary only if the delay cannot be computed automatically by the protocol.
+.TP
+.BR \-U " \fInumber\fP, " \--updateinterval "=" \fInumber\fP
+interval in seconds between scans for new or dropped interfaces.
+This option takes an integer number as its argument.
+.sp
+Give the time in seconds between two scans for new or dropped interfaces.
+For systems with routing socket support the scans will be performed shortly after the interface change
+has been detected by the system.
+Use 0 to disable scanning.
+.TP
+.BR \-s " \fIstring\fP, " \--statsdir "=" \fIstring\fP
+Statistics file location.
+.sp
+Specify the directory path for files created by the statistics facility.
+This is the same operation as the
+statsdir statsdir
+configuration file directive.
+.TP
+.BR \-t " \fItkey\fP, " \--trustedkey "=" \fItkey\fP
+Trusted key number.
+This option may appear an unlimited number of times.
+.sp
+Add a key number to the trusted key list.
+.TP
+.BR \-u " \fIstring\fP, " \--user "=" \fIstring\fP
+Run as userid (or userid:groupid).
+.sp
+Specify a user, and optionally a group, to switch to.
+This option is only available if the OS supports to run the server without full root privileges.
+Currently, this option is supported under NetBSD (configure with
+--enable-clockctl
+) and Linux (configure with
+--enable-linuxcaps
+).
+.TP
+.BR \-v " \fInvar\fP, " \--var "=" \fInvar\fP
+make ARG an ntp variable (RW).
+This option may appear an unlimited number of times.
+.sp
+
+.TP
+.BR \-V " \fIndvar\fP, " \--dvar "=" \fIndvar\fP
+make ARG an ntp variable (RW|DEF).
+This option may appear an unlimited number of times.
+.sp
+
+.TP
+.BR \-x ", " \--slew
+Slew up to 600 seconds.
+.sp
+Normally, the time is slewed if the offset is less than the step threshold, which is 128 ms by default, and stepped if above the threshold.
+This option sets the threshold to 600 s, which is well within the accuracy window to set the clock manually.
+Note: Since the slew rate of typical Unix kernels is limited to 0.5 ms/s, each second of adjustment requires an amortization interval of 2000 s.
+Thus, an adjustment as much as 600 s will take almost 14 days to complete.
+This option can be used with the
+-g
+and
+-q
+options.
+See the
+tinker
+configuration file directive for other options.
+Note: The kernel time discipline is disabled with this option.
+.TP
+.BR \-? , " \--help"
+Display usage information and exit.
+.TP
+.BR \-! , " \--more-help"
+Extended usage information passed thru pager.
+.TP
+.BR \-v " [{\fIv|c|n\fP}]," " \--version" "[=\fI{v|c|n}\fP]"
+Output version of program and exit. The default mode is `v', a simple
+version. The `c' mode will print copyright information and `n' will
+print the full copyright notice.
+.SH OPTION PRESETS
+Any option that is not marked as \fInot presettable\fP may be preset
+by loading values from environment variables named:
+.nf
+ \fBNTPD_<option-name>\fP or \fBNTPD\fP
+.fi
+.aj
+.SH AUTHOR
+David L. Mills and/or others
+.br
+Please send bug reports to: http://bugs.ntp.isc.org, bugs@ntp.org
+
+.PP
+.nf
+.na
+see html/copyright.html
+.fi
+.ad
+.PP
+This manual page was \fIAutoGen\fP-erated from the \fBntpd\fP
+option definitions.
diff --git a/contrib/ntp/ntpd/ntpd.c b/contrib/ntp/ntpd/ntpd.c
index 0b05253..04e0d07 100644
--- a/contrib/ntp/ntpd/ntpd.c
+++ b/contrib/ntp/ntpd/ntpd.c
@@ -10,9 +10,13 @@
#include "ntpd.h"
#include "ntp_io.h"
#include "ntp_stdlib.h"
+#include <ntp_random.h>
#ifdef SIM
-#include "ntpsim.h"
+# include "ntpsim.h"
+# include "ntpdsim-opts.h"
+#else
+# include "ntpd-opts.h"
#endif
#ifdef HAVE_UNISTD_H
@@ -43,9 +47,8 @@
# include <signal.h>
# include <process.h>
# include <io.h>
-# include "../libntp/log.h"
# include <clockstuff.h>
-# include <crtdbg.h>
+#include "ntp_iocompletionport.h"
#endif /* SYS_WINNT */
#if defined(HAVE_RTPRIO)
# ifdef HAVE_SYS_RESOURCE_H
@@ -104,10 +107,14 @@
# include <sys/ci/ciioctl.h>
#endif
-#ifdef HAVE_CLOCKCTL
+#ifdef HAVE_DROPROOT
# include <ctype.h>
# include <grp.h>
# include <pwd.h>
+#ifdef HAVE_LINUX_CAPABILITIES
+# include <sys/capability.h>
+# include <sys/prctl.h>
+#endif
#endif
/*
@@ -126,18 +133,10 @@
# define SIGDIE4 SIGTERM
#endif /* SYS_WINNT */
-#if defined SYS_WINNT
-/* handles for various threads, process, and objects */
-HANDLE ResolverThreadHandle = NULL;
-/* variables used to inform the Service Control Manager of our current state */
-BOOL NoWinService = FALSE;
-SERVICE_STATUS ssStatus;
-SERVICE_STATUS_HANDLE sshStatusHandle;
-HANDLE WaitHandles[3] = { NULL, NULL, NULL };
-char szMsgPath[255];
-static BOOL WINAPI OnConsoleEvent(DWORD dwCtrlType);
-BOOL init_randfile();
-#endif /* SYS_WINNT */
+#ifdef HAVE_DNSREGISTRATION
+#include <dns_sd.h>
+DNSServiceRef mdns;
+#endif
/*
* Scheduling priority we run at
@@ -149,22 +148,23 @@ int priority_done = 2; /* 0 - Set priority */
/* 2 - Don't set priority */
/* 1 and 2 are pretty much the same */
+#ifdef DEBUG
/*
* Debugging flag
*/
-volatile int debug;
+volatile int debug = 0; /* No debugging by default */
+#endif
-/*
- * Set the processing not to be in the forground
- */
-int forground_process = FALSE;
+int listen_to_virtual_ips = 1;
+const char *specific_interface = NULL; /* interface name or IP address to bind to */
/*
* No-fork flag. If set, we do not become a background daemon.
*/
-int nofork;
+int nofork = 0; /* Fork by default */
-#ifdef HAVE_CLOCKCTL
+#ifdef HAVE_DROPROOT
+int droproot = 0;
char *user = NULL; /* User to switch to */
char *group = NULL; /* group to switch to */
char *chrootdir = NULL; /* directory to chroot to */
@@ -173,7 +173,7 @@ int sw_gid;
char *endp;
struct group *gr;
struct passwd *pw;
-#endif /* HAVE_CLOCKCTL */
+#endif /* HAVE_DROPROOT */
/*
* Initializing flag. All async routines watch this and only do their
@@ -186,6 +186,8 @@ int initializing;
*/
extern const char *Version;
+char const *progname;
+
int was_alarmed;
#ifdef DECL_SYSCALL
@@ -211,6 +213,86 @@ static RETSIGTYPE no_debug P((int));
int ntpdmain P((int, char **));
static void set_process_priority P((void));
+static void init_logging P((char const *));
+static void setup_logfile P((void));
+
+/*
+ * Initialize the logging
+ */
+void
+init_logging(char const *name)
+{
+ const char *cp;
+
+ /*
+ * Logging. This may actually work on the gizmo board. Find a name
+ * to log with by using the basename
+ */
+ cp = strrchr(name, '/');
+ if (cp == 0)
+ cp = name;
+ else
+ cp++;
+
+#if !defined(VMS)
+
+# ifndef LOG_DAEMON
+ openlog(cp, LOG_PID);
+# else /* LOG_DAEMON */
+
+# ifndef LOG_NTP
+# define LOG_NTP LOG_DAEMON
+# endif
+ openlog(cp, LOG_PID | LOG_NDELAY, LOG_NTP);
+# ifdef DEBUG
+ if (debug)
+ setlogmask(LOG_UPTO(LOG_DEBUG));
+ else
+# endif /* DEBUG */
+ setlogmask(LOG_UPTO(LOG_DEBUG)); /* @@@ was INFO */
+# endif /* LOG_DAEMON */
+#endif /* !SYS_WINNT && !VMS */
+
+ NLOG(NLOG_SYSINFO) /* conditional if clause for conditional syslog */
+ msyslog(LOG_NOTICE, "%s", Version);
+}
+
+
+/*
+ * See if we should redirect the logfile
+ */
+
+void
+setup_logfile(
+ void
+ )
+{
+ if (HAVE_OPT( LOGFILE )) {
+ const char *my_optarg = OPT_ARG( LOGFILE );
+ FILE *new_file;
+
+ if(strcmp(my_optarg, "stderr") == 0)
+ new_file = stderr;
+ else if(strcmp(my_optarg, "stdout") == 0)
+ new_file = stdout;
+ else
+ new_file = fopen(my_optarg, "a");
+ if (new_file != NULL) {
+ NLOG(NLOG_SYSINFO)
+ msyslog(LOG_NOTICE, "logging to file %s", my_optarg);
+ if (syslog_file != NULL &&
+ fileno(syslog_file) != fileno(new_file))
+ (void)fclose(syslog_file);
+
+ syslog_file = new_file;
+ syslogit = 0;
+ }
+ else
+ msyslog(LOG_ERR,
+ "Cannot open log file %s",
+ my_optarg);
+ }
+}
#ifdef SIM
int
@@ -225,6 +307,7 @@ main(
#ifdef NO_MAIN_ALLOWED
CALL(ntpd,"ntpd",ntpdmain);
#else
+#ifndef SYS_WINNT
int
main(
int argc,
@@ -233,7 +316,8 @@ main(
{
return ntpdmain(argc, argv);
}
-#endif
+#endif /* SYS_WINNT */
+#endif /* NO_MAIN_ALLOWED */
#endif /* SIM */
#ifdef _AIX
@@ -371,16 +455,30 @@ ntpdmain(
)
{
l_fp now;
- char *cp;
- struct recvbuf *rbuflist;
struct recvbuf *rbuf;
#ifdef _AIX /* HMS: ifdef SIGDANGER? */
struct sigaction sa;
#endif
+ progname = argv[0];
+
initializing = 1; /* mark that we are initializing */
- debug = 0; /* no debugging by default */
- nofork = 0; /* will fork by default */
+
+ {
+ int optct = optionProcess(
+#ifdef SIM
+ &ntpdsimOptions
+#else
+ &ntpdOptions
+#endif
+ , argc, argv);
+ argc -= optct;
+ argv += optct;
+ }
+
+ /* HMS: is this lame? Should we process -l first? */
+
+ init_logging(progname); /* Open the log file */
#ifdef HAVE_UMASK
{
@@ -402,45 +500,102 @@ ntpdmain(
if (uid)
{
msyslog(LOG_ERR, "ntpd: must be run as root, not uid %ld", (long)uid);
+ printf("must be run as root, not uid %ld", (long)uid);
exit(1);
}
}
#endif
-#ifdef SYS_WINNT
- /* Set the Event-ID message-file name. */
- if (!GetModuleFileName(NULL, szMsgPath, sizeof(szMsgPath))) {
- msyslog(LOG_ERR, "GetModuleFileName(PGM_EXE_FILE) failed: %m\n");
+#ifdef OPENSSL
+ if ((SSLeay() ^ OPENSSL_VERSION_NUMBER) & ~0xff0L) {
+ msyslog(LOG_ERR,
+ "ntpd: OpenSSL version mismatch. Built against %lx, you have %lx\n",
+ OPENSSL_VERSION_NUMBER, SSLeay());
exit(1);
}
- addSourceToRegistry("NTP", szMsgPath);
#endif
- getstartup(argc, argv); /* startup configuration, may set debug */
+ /* getstartup(argc, argv); / * startup configuration, may set debug */
+
+#ifdef DEBUG
+ debug = DESC(DEBUG_LEVEL).optOccCt;
if (debug)
printf("%s\n", Version);
+#endif
+
+/*
+ * Enable the Multi-Media Timer for Windows?
+ */
+#ifdef SYS_WINNT
+ if (HAVE_OPT( MODIFYMMTIMER ))
+ set_mm_timer(MM_TIMER_HIRES);
+#endif
+
+ if (HAVE_OPT( NOFORK ) || HAVE_OPT( QUIT ))
+ nofork = 1;
+
+ if (HAVE_OPT( NOVIRTUALIPS ))
+ listen_to_virtual_ips = 0;
+ if (HAVE_OPT( INTERFACE )) {
+#if 0
+ int ifacect = STACKCT_OPT( INTERFACE );
+ char** ifaces = STACKLST_OPT( INTERFACE );
+
+ /* malloc space for the array of names */
+ while (ifacect-- > 0) {
+ next_iface = *ifaces++;
+ }
+#else
+ specific_interface = OPT_ARG( INTERFACE );
+#endif
+ }
+
+ if (HAVE_OPT( NICE ))
+ priority_done = 0;
+
+#if defined(HAVE_SCHED_SETSCHEDULER)
+ if (HAVE_OPT( PRIORITY )) {
+ config_priority = OPT_VALUE_PRIORITY;
+ config_priority_override = 1;
+ priority_done = 0;
+ }
+#endif
+
+#ifdef SYS_WINNT
/*
- * Initialize random generator and public key pair
+ * Initialize the time structures and variables
*/
-#ifdef SYS_WINNT
- /* Initialize random file before OpenSSL checks */
- if(!init_randfile())
- msyslog(LOG_ERR, "Unable to initialize .rnd file\n");
+ init_winnt_time();
#endif
+
+ setup_logfile();
+
+ /*
+ * Initialize random generator and public key pair
+ */
get_systime(&now);
- SRANDOM((int)(now.l_i * now.l_uf));
+
+ ntp_srandom((int)(now.l_i * now.l_uf));
+
+#ifdef HAVE_DNSREGISTRATION
+ /* HMS: does this have to happen this early? */
+ msyslog(LOG_INFO, "Attemping to register mDNS");
+ if ( DNSServiceRegister (&mdns, 0, 0, NULL, "_ntp._udp", NULL, NULL, htons(NTP_PORT), 0, NULL, NULL, NULL) != kDNSServiceErr_NoError ) {
+ msyslog(LOG_ERR, "Unable to register mDNS");
+ }
+#endif
#if !defined(VMS)
# ifndef NODETACH
/*
* Detach us from the terminal. May need an #ifndef GIZMO.
*/
+ if (
# ifdef DEBUG
- if (!debug && !nofork)
-# else /* DEBUG */
- if (!nofork)
+ !debug &&
# endif /* DEBUG */
+ !nofork)
{
# ifndef SYS_WINNT
# ifdef HAVE_DAEMON
@@ -522,131 +677,12 @@ ntpdmain(
#endif /* _AIX */
}
# endif /* not HAVE_DAEMON */
-# else /* SYS_WINNT */
-
- {
- if (NoWinService == FALSE) {
- SERVICE_TABLE_ENTRY dispatchTable[] = {
- { TEXT("NetworkTimeProtocol"), (LPSERVICE_MAIN_FUNCTION)service_main },
- { NULL, NULL }
- };
-
- /* daemonize */
- if (!StartServiceCtrlDispatcher(dispatchTable))
- {
- msyslog(LOG_ERR, "StartServiceCtrlDispatcher: %m");
- ExitProcess(2);
- }
- }
- else {
- service_main(argc, argv);
- return 0;
- }
- }
# endif /* SYS_WINNT */
}
# endif /* NODETACH */
-# if defined(SYS_WINNT) && !defined(NODETACH)
- else
- service_main(argc, argv);
- return 0; /* must return a value */
-} /* end main */
-
-/*
- * If this runs as a service under NT, the main thread will block at
- * StartServiceCtrlDispatcher() and another thread will be started by the
- * Service Control Dispatcher which will begin execution at the routine
- * specified in that call (viz. service_main)
- */
-void
-service_main(
- DWORD argc,
- LPTSTR *argv
- )
-{
- char *cp;
- struct recvbuf *rbuflist;
- struct recvbuf *rbuf;
-
- if(!debug && NoWinService == FALSE)
- {
- /* register our service control handler */
- sshStatusHandle = RegisterServiceCtrlHandler( TEXT("NetworkTimeProtocol"),
- (LPHANDLER_FUNCTION)service_ctrl);
- if(sshStatusHandle == 0)
- {
- msyslog(LOG_ERR, "RegisterServiceCtrlHandler failed: %m");
- return;
- }
-
- /* report pending status to Service Control Manager */
- ssStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
- ssStatus.dwCurrentState = SERVICE_START_PENDING;
- ssStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;
- ssStatus.dwWin32ExitCode = NO_ERROR;
- ssStatus.dwServiceSpecificExitCode = 0;
- ssStatus.dwCheckPoint = 1;
- ssStatus.dwWaitHint = 5000;
- if (!SetServiceStatus(sshStatusHandle, &ssStatus))
- {
- msyslog(LOG_ERR, "SetServiceStatus: %m");
- ssStatus.dwCurrentState = SERVICE_STOPPED;
- SetServiceStatus(sshStatusHandle, &ssStatus);
- return;
- }
-
- } /* debug */
-# endif /* defined(SYS_WINNT) && !defined(NODETACH) */
#endif /* VMS */
- /*
- * Logging. This may actually work on the gizmo board. Find a name
- * to log with by using the basename of argv[0]
- */
- cp = strrchr(argv[0], '/');
- if (cp == 0)
- cp = argv[0];
- else
- cp++;
-
- debug = 0; /* will be immediately re-initialized 8-( */
- getstartup(argc, argv); /* startup configuration, catch logfile this time */
-
-#if !defined(VMS)
-
-# ifndef LOG_DAEMON
- openlog(cp, LOG_PID);
-# else /* LOG_DAEMON */
-
-# ifndef LOG_NTP
-# define LOG_NTP LOG_DAEMON
-# endif
- openlog(cp, LOG_PID | LOG_NDELAY, LOG_NTP);
-# ifdef DEBUG
- if (debug)
- setlogmask(LOG_UPTO(LOG_DEBUG));
- else
-# endif /* DEBUG */
- setlogmask(LOG_UPTO(LOG_DEBUG)); /* @@@ was INFO */
-# endif /* LOG_DAEMON */
-#endif /* !SYS_WINNT && !VMS */
-
- NLOG(NLOG_SYSINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE, "%s", Version);
-
-#ifdef SYS_WINNT
- /* GMS 1/18/1997
- * TODO: lock the process in memory using SetProcessWorkingSetSize() and VirtualLock() functions
- *
- process_handle = GetCurrentProcess();
- if (SetProcessWorkingSetSize(process_handle, 2097152 , 4194304 ) == TRUE) {
- if (VirtualLock(0 , 4194304) == FALSE)
- msyslog(LOG_ERR, "VirtualLock() failed: %m");
- } else {
- msyslog(LOG_ERR, "SetProcessWorkingSetSize() failed: %m");
- }
- */
-#endif /* SYS_WINNT */
+ setup_logfile(); /* We lost any redirect when we daemonized */
#ifdef SCO5_CLOCK
/*
@@ -659,7 +695,7 @@ service_main(
if (fd >= 0) {
int zero = 0;
if (ioctl(fd, ACPU_LOCK, &zero) < 0)
- msyslog(LOG_ERR, "cannot lock to base CPU: %m\n");
+ msyslog(LOG_ERR, "cannot lock to base CPU: %m");
close( fd );
} /* else ...
* If we can't open the device, this probably just isn't
@@ -677,8 +713,9 @@ service_main(
{
struct rlimit rl;
+ /* HMS: must make the rlim_cur amount configurable */
if (getrlimit(RLIMIT_STACK, &rl) != -1
- && (rl.rlim_cur = 20 * 4096) < rl.rlim_max)
+ && (rl.rlim_cur = 50 * 4096) < rl.rlim_max)
{
if (setrlimit(RLIMIT_STACK, &rl) == -1)
{
@@ -686,6 +723,18 @@ service_main(
"Cannot adjust stack limit for mlockall: %m");
}
}
+# ifdef RLIMIT_MEMLOCK
+ /*
+ * The default RLIMIT_MEMLOCK is very low on Linux systems.
+ * Unless we increase this limit malloc calls are likely to
+ * fail if we drop root privlege. To be useful the value
+ * has to be larger than the largest ntpd resident set size.
+ */
+ rl.rlim_cur = rl.rlim_max = 32*1024*1024;
+ if (setrlimit(RLIMIT_MEMLOCK, &rl) == -1) {
+ msyslog(LOG_ERR, "Cannot set RLIMIT_MEMLOCK: %m");
+ }
+# endif /* RLIMIT_MEMLOCK */
}
# endif /* HAVE_SETRLIMIT */
/*
@@ -699,7 +748,7 @@ service_main(
# ifdef _AIX
/*
* set the stack limit for AIX for plock().
- * see get_aix_stack for more info.
+ * see get_aix_stack() for more info.
*/
if (ulimit(SET_STACKLIM, (get_aix_stack() - 8*4096)) < 0)
{
@@ -762,26 +811,20 @@ service_main(
(void) signal_no_reset(SIGPIPE, SIG_IGN);
#endif /* SIGPIPE */
-#if defined SYS_WINNT
- if (!SetConsoleCtrlHandler(OnConsoleEvent, TRUE)) {
- msyslog(LOG_ERR, "Can't set console control handler: %m");
- }
-#endif
-
/*
* Call the init_ routines to initialize the data structures.
+ *
+ * Exactly what command-line options are we expecting here?
*/
-#if defined (HAVE_IO_COMPLETION_PORT)
- init_io_completion_port();
- init_winnt_time();
-#endif
init_auth();
init_util();
init_restrict();
init_mon();
init_timer();
+#if defined (HAVE_IO_COMPLETION_PORT)
+ init_io_completion_port();
+#endif
init_lib();
- init_random();
init_request();
init_control();
init_peer();
@@ -796,102 +839,137 @@ service_main(
/* turn off in config if unwanted */
/*
- * Get configuration. This (including argument list parsing) is
- * done in a separate module since this will definitely be different
- * for the gizmo board. While at it, save the host name for later
- * along with the length. The crypto needs this.
+ * Get the configuration. This is done in a separate module
+ * since this will definitely be different for the gizmo board.
*/
-#ifdef DEBUG
- debug = 0;
-#endif
+
getconfig(argc, argv);
+
+ loop_config(LOOP_DRIFTCOMP, old_drift / 1e6);
#ifdef OPENSSL
crypto_setup();
#endif /* OPENSSL */
initializing = 0;
-#if defined(SYS_WINNT) && !defined(NODETACH)
-# if defined(DEBUG)
- if(!debug)
- {
-# endif
- if (NoWinService == FALSE) {
- /* report to the service control manager that the service is running */
- ssStatus.dwCurrentState = SERVICE_RUNNING;
- ssStatus.dwWin32ExitCode = NO_ERROR;
- if (!SetServiceStatus(sshStatusHandle, &ssStatus))
- {
- msyslog(LOG_ERR, "SetServiceStatus: %m");
- if (ResolverThreadHandle != NULL)
- CloseHandle(ResolverThreadHandle);
- ssStatus.dwCurrentState = SERVICE_STOPPED;
- SetServiceStatus(sshStatusHandle, &ssStatus);
- return;
- }
- }
-# if defined(DEBUG)
- }
-# endif
-#endif
+#ifdef HAVE_DROPROOT
+ if( droproot ) {
+ /* Drop super-user privileges and chroot now if the OS supports this */
-#ifdef HAVE_CLOCKCTL
- /*
- * Drop super-user privileges and chroot now if the OS supports
- * non root clock control (only NetBSD for now).
- */
- if (user != NULL) {
- if (isdigit((unsigned char)*user)) {
- sw_uid = (uid_t)strtoul(user, &endp, 0);
- if (*endp != '\0')
- goto getuser;
- } else {
+#ifdef HAVE_LINUX_CAPABILITIES
+ /* set flag: keep privileges accross setuid() call (we only really need cap_sys_time): */
+ if( prctl( PR_SET_KEEPCAPS, 1L, 0L, 0L, 0L ) == -1 ) {
+ msyslog( LOG_ERR, "prctl( PR_SET_KEEPCAPS, 1L ) failed: %m" );
+ exit(-1);
+ }
+#else
+ /* we need a user to switch to */
+ if( user == NULL ) {
+ msyslog(LOG_ERR, "Need user name to drop root privileges (see -u flag!)" );
+ exit(-1);
+ }
+#endif /* HAVE_LINUX_CAPABILITIES */
+
+ if (user != NULL) {
+ if (isdigit((unsigned char)*user)) {
+ sw_uid = (uid_t)strtoul(user, &endp, 0);
+ if (*endp != '\0')
+ goto getuser;
+ } else {
getuser:
- if ((pw = getpwnam(user)) != NULL) {
- sw_uid = pw->pw_uid;
- } else {
- errno = 0;
- msyslog(LOG_ERR, "Cannot find user `%s'", user);
- exit (-1);
- }
- }
- }
- if (group != NULL) {
- if (isdigit((unsigned char)*group)) {
- sw_gid = (gid_t)strtoul(group, &endp, 0);
- if (*endp != '\0')
- goto getgroup;
- } else {
+ if ((pw = getpwnam(user)) != NULL) {
+ sw_uid = pw->pw_uid;
+ } else {
+ errno = 0;
+ msyslog(LOG_ERR, "Cannot find user `%s'", user);
+ exit (-1);
+ }
+ }
+ }
+ if (group != NULL) {
+ if (isdigit((unsigned char)*group)) {
+ sw_gid = (gid_t)strtoul(group, &endp, 0);
+ if (*endp != '\0')
+ goto getgroup;
+ } else {
getgroup:
- if ((gr = getgrnam(group)) != NULL) {
- sw_gid = pw->pw_gid;
- } else {
- errno = 0;
- msyslog(LOG_ERR, "Cannot find group `%s'", group);
- exit (-1);
- }
- }
- }
- if (chrootdir && chroot(chrootdir)) {
- msyslog(LOG_ERR, "Cannot chroot to `%s': %m", chrootdir);
- exit (-1);
- }
- if (group && setgid(sw_gid)) {
- msyslog(LOG_ERR, "Cannot setgid() to group `%s': %m", group);
- exit (-1);
- }
- if (group && setegid(sw_gid)) {
- msyslog(LOG_ERR, "Cannot setegid() to group `%s': %m", group);
- exit (-1);
- }
- if (user && setuid(sw_uid)) {
- msyslog(LOG_ERR, "Cannot setuid() to user `%s': %m", user);
- exit (-1);
- }
- if (user && seteuid(sw_uid)) {
- msyslog(LOG_ERR, "Cannot seteuid() to user `%s': %m", user);
- exit (-1);
- }
+ if ((gr = getgrnam(group)) != NULL) {
+ sw_gid = gr->gr_gid;
+ } else {
+ errno = 0;
+ msyslog(LOG_ERR, "Cannot find group `%s'", group);
+ exit (-1);
+ }
+ }
+ }
+
+ if( chrootdir ) {
+ /* make sure cwd is inside the jail: */
+ if( chdir(chrootdir) ) {
+ msyslog(LOG_ERR, "Cannot chdir() to `%s': %m", chrootdir);
+ exit (-1);
+ }
+ if( chroot(chrootdir) ) {
+ msyslog(LOG_ERR, "Cannot chroot() to `%s': %m", chrootdir);
+ exit (-1);
+ }
+ }
+ if (group && setgid(sw_gid)) {
+ msyslog(LOG_ERR, "Cannot setgid() to group `%s': %m", group);
+ exit (-1);
+ }
+ if (group && setegid(sw_gid)) {
+ msyslog(LOG_ERR, "Cannot setegid() to group `%s': %m", group);
+ exit (-1);
+ }
+ if (user && setuid(sw_uid)) {
+ msyslog(LOG_ERR, "Cannot setuid() to user `%s': %m", user);
+ exit (-1);
+ }
+ if (user && seteuid(sw_uid)) {
+ msyslog(LOG_ERR, "Cannot seteuid() to user `%s': %m", user);
+ exit (-1);
+ }
+
+#ifndef HAVE_LINUX_CAPABILITIES
+ /*
+ * for now assume that the privilege to bind to privileged ports
+ * is associated with running with uid 0 - should be refined on
+ * ports that allow binding to NTP_PORT with uid != 0
+ */
+ disable_dynamic_updates |= (sw_uid != 0); /* also notifies routing message listener */
#endif
+
+ if (disable_dynamic_updates && interface_interval) {
+ interface_interval = 0;
+ msyslog(LOG_INFO, "running in unprivileged mode disables dynamic interface tracking");
+ }
+
+#ifdef HAVE_LINUX_CAPABILITIES
+ do {
+ /*
+ * We may be running under non-root uid now, but we still hold full root privileges!
+ * We drop all of them, except for the crucial one or two: cap_sys_time and
+ * cap_net_bind_service if doing dynamic interface tracking.
+ */
+ cap_t caps;
+ char *captext = interface_interval ?
+ "cap_sys_time,cap_net_bind_service=ipe" :
+ "cap_sys_time=ipe";
+ if( ! ( caps = cap_from_text( captext ) ) ) {
+ msyslog( LOG_ERR, "cap_from_text() failed: %m" );
+ exit(-1);
+ }
+ if( cap_set_proc( caps ) == -1 ) {
+ msyslog( LOG_ERR, "cap_set_proc() failed to drop root privileges: %m" );
+ exit(-1);
+ }
+ cap_free( caps );
+ } while(0);
+#endif /* HAVE_LINUX_CAPABILITIES */
+
+ } /* if( droproot ) */
+#endif /* HAVE_DROPROOT */
+
/*
* Report that we're up to any trappers
*/
@@ -913,48 +991,13 @@ getgroup:
* yet to learn about anything else that is.
*/
#if defined(HAVE_IO_COMPLETION_PORT)
- WaitHandles[0] = CreateEvent(NULL, FALSE, FALSE, NULL); /* exit reques */
- WaitHandles[1] = get_timer_handle();
- WaitHandles[2] = get_io_event();
-
- for (;;) {
- DWORD Index = WaitForMultipleObjectsEx(sizeof(WaitHandles)/sizeof(WaitHandles[0]), WaitHandles, FALSE, 1000, TRUE);
- switch (Index) {
- case WAIT_OBJECT_0 + 0 : /* exit request */
- exit(0);
- break;
-
- case WAIT_OBJECT_0 + 1 : /* timer */
- timer();
- break;
-
- case WAIT_OBJECT_0 + 2 : /* Io event */
-# ifdef DEBUG
- if ( debug > 3 )
- {
- printf( "IoEvent occurred\n" );
- }
-# endif
- break;
-
- case WAIT_IO_COMPLETION : /* loop */
- case WAIT_TIMEOUT :
- break;
- case WAIT_FAILED:
- msyslog(LOG_ERR, "ntpdc: WaitForMultipleObjectsEx Failed: Error: %m");
- break;
-
- /* For now do nothing if not expected */
- default:
- break;
-
- } /* switch */
- rbuflist = getrecvbufs(); /* get received buffers */
+ for (;;) {
+ int tot_full_recvbufs = GetReceivedBuffers();
#else /* normal I/O */
+ BLOCK_IO_AND_ALARM();
was_alarmed = 0;
- rbuflist = (struct recvbuf *)0;
for (;;)
{
# if !defined(HAVE_SIGNALED_IO)
@@ -963,18 +1006,15 @@ getgroup:
fd_set rdfdes;
int nfound;
-# elif defined(HAVE_SIGNALED_IO)
- block_io_and_alarm();
# endif
- rbuflist = getrecvbufs(); /* get received buffers */
if (alarm_flag) /* alarmed? */
{
was_alarmed = 1;
alarm_flag = 0;
}
- if (!was_alarmed && rbuflist == (struct recvbuf *)0)
+ if (!was_alarmed && has_full_recv_buffer() == ISC_FALSE)
{
/*
* Nothing to do. Wait for something.
@@ -1003,10 +1043,10 @@ getgroup:
(void)input_handler(&ts);
}
else if (nfound == -1 && errno != EINTR)
- msyslog(LOG_ERR, "select() error: %m");
+ netsyslog(LOG_ERR, "select() error: %m");
# ifdef DEBUG
- else if (debug > 2)
- msyslog(LOG_DEBUG, "select(): nfound=%d, error: %m", nfound);
+ else if (debug > 5)
+ netsyslog(LOG_DEBUG, "select(): nfound=%d, error: %m", nfound);
# endif /* DEBUG */
# else /* HAVE_SIGNALED_IO */
@@ -1017,50 +1057,87 @@ getgroup:
was_alarmed = 1;
alarm_flag = 0;
}
- rbuflist = getrecvbufs(); /* get received buffers */
}
-# ifdef HAVE_SIGNALED_IO
- unblock_io_and_alarm();
-# endif /* HAVE_SIGNALED_IO */
- /*
- * Out here, signals are unblocked. Call timer routine
- * to process expiry.
- */
if (was_alarmed)
{
+ UNBLOCK_IO_AND_ALARM();
+ /*
+ * Out here, signals are unblocked. Call timer routine
+ * to process expiry.
+ */
timer();
was_alarmed = 0;
+ BLOCK_IO_AND_ALARM();
}
#endif /* HAVE_IO_COMPLETION_PORT */
- /*
- * Call the data procedure to handle each received
- * packet.
- */
- while (rbuflist != (struct recvbuf *)0)
+
+#ifdef DEBUG_TIMING
{
- rbuf = rbuflist;
- rbuflist = rbuf->next;
- (rbuf->receiver)(rbuf);
- freerecvbuf(rbuf);
+ l_fp pts;
+ l_fp tsa, tsb;
+ int bufcount = 0;
+
+ get_systime(&pts);
+ tsa = pts;
+#endif
+ rbuf = get_full_recv_buffer();
+ while (rbuf != NULL)
+ {
+ if (alarm_flag)
+ {
+ was_alarmed = 1;
+ alarm_flag = 0;
+ }
+ UNBLOCK_IO_AND_ALARM();
+
+ if (was_alarmed)
+ { /* avoid timer starvation during lengthy I/O handling */
+ timer();
+ was_alarmed = 0;
+ }
+
+ /*
+ * Call the data procedure to handle each received
+ * packet.
+ */
+ if (rbuf->receiver != NULL) /* This should always be true */
+ {
+#ifdef DEBUG_TIMING
+ l_fp dts = pts;
+
+ L_SUB(&dts, &rbuf->recv_time);
+ DPRINTF(2, ("processing timestamp delta %s (with prec. fuzz)\n", lfptoa(&dts, 9)));
+ collect_timing(rbuf, "buffer processing delay", 1, &dts);
+ bufcount++;
+#endif
+ (rbuf->receiver)(rbuf);
+ } else {
+ msyslog(LOG_ERR, "receive buffer corruption - receiver found to be NULL - ABORTING");
+ abort();
+ }
+
+ BLOCK_IO_AND_ALARM();
+ freerecvbuf(rbuf);
+ rbuf = get_full_recv_buffer();
+ }
+#ifdef DEBUG_TIMING
+ get_systime(&tsb);
+ L_SUB(&tsb, &tsa);
+ if (bufcount) {
+ collect_timing(NULL, "processing", bufcount, &tsb);
+ DPRINTF(2, ("processing time for %d buffers %s\n", bufcount, lfptoa(&tsb, 9)));
+ }
}
-#if defined DEBUG && defined SYS_WINNT
- if (debug > 4)
- printf("getrecvbufs: %ld handler interrupts, %ld frames\n",
- handler_calls, handler_pkts);
#endif
/*
* Go around again
*/
}
-#ifndef SYS_WINNT
- exit(1); /* unreachable */
-#endif
-#ifndef SYS_WINNT
- return 1; /* DEC OSF cc braindamage */
-#endif
+ UNBLOCK_IO_AND_ALARM();
+ return 1;
}
@@ -1075,6 +1152,11 @@ finish(
{
msyslog(LOG_NOTICE, "ntpd exiting on signal %d", sig);
+ write_stats();
+#ifdef HAVE_DNSREGISTRATION
+ if (mdns != NULL)
+ DNSServiceRefDeallocate(mdns);
+#endif
switch (sig)
{
@@ -1131,7 +1213,8 @@ lessdebug(
}
#endif
#else /* not DEBUG */
-#ifndef SYS_WINNT/*
+#ifndef SYS_WINNT
+/*
* no_debug - We don't do the debug here.
*/
static RETSIGTYPE
@@ -1146,129 +1229,3 @@ no_debug(
}
#endif /* not SYS_WINNT */
#endif /* not DEBUG */
-
-#ifdef SYS_WINNT
-/* service_ctrl - control handler for NTP service
- * signals the service_main routine of start/stop requests
- * from the control panel or other applications making
- * win32API calls
- */
-void
-service_ctrl(
- DWORD dwCtrlCode
- )
-{
- DWORD dwState = SERVICE_RUNNING;
-
- /* Handle the requested control code */
- switch(dwCtrlCode)
- {
- case SERVICE_CONTROL_PAUSE:
- /* see no reason to support this */
- break;
-
- case SERVICE_CONTROL_CONTINUE:
- /* see no reason to support this */
- break;
-
- case SERVICE_CONTROL_STOP:
- dwState = SERVICE_STOP_PENDING;
- /*
- * Report the status, specifying the checkpoint and waithint,
- * before setting the termination event.
- */
- ssStatus.dwCurrentState = dwState;
- ssStatus.dwWin32ExitCode = NO_ERROR;
- ssStatus.dwWaitHint = 3000;
- if (!SetServiceStatus(sshStatusHandle, &ssStatus))
- {
- msyslog(LOG_ERR, "SetServiceStatus: %m");
- }
- if (WaitHandles[0] != NULL) {
- SetEvent(WaitHandles[0]);
- }
- return;
-
- case SERVICE_CONTROL_INTERROGATE:
- /* Update the service status */
- break;
-
- default:
- /* invalid control code */
- break;
-
- }
-
- ssStatus.dwCurrentState = dwState;
- ssStatus.dwWin32ExitCode = NO_ERROR;
- if (!SetServiceStatus(sshStatusHandle, &ssStatus))
- {
- msyslog(LOG_ERR, "SetServiceStatus: %m");
- }
-}
-
-static BOOL WINAPI
-OnConsoleEvent(
- DWORD dwCtrlType
- )
-{
- switch (dwCtrlType) {
- case CTRL_BREAK_EVENT :
- if (debug > 0) {
- debug <<= 1;
- }
- else {
- debug = 1;
- }
- if (debug > 8) {
- debug = 0;
- }
- printf("debug level %d\n", debug);
- break ;
-
- case CTRL_C_EVENT :
- case CTRL_CLOSE_EVENT :
- case CTRL_SHUTDOWN_EVENT :
- if (WaitHandles[0] != NULL) {
- SetEvent(WaitHandles[0]);
- }
- break;
-
- default :
- return FALSE;
-
-
- }
- return TRUE;;
-}
-
-
-/*
- * NT version of exit() - all calls to exit() should be routed to
- * this function.
- */
-void
-service_exit(
- int status
- )
-{
- if (!debug) { /* did not become a service, simply exit */
- /* service mode, need to have the service_main routine
- * register with the service control manager that the
- * service has stopped running, before exiting
- */
- ssStatus.dwCurrentState = SERVICE_STOPPED;
- SetServiceStatus(sshStatusHandle, &ssStatus);
-
- }
- uninit_io_completion_port();
- reset_winnt_time();
-
-# if defined _MSC_VER
- _CrtDumpMemoryLeaks();
-# endif
-#undef exit
- exit(status);
-}
-
-#endif /* SYS_WINNT */
diff --git a/contrib/ntp/ntpd/ntpdbase-opts.def b/contrib/ntp/ntpd/ntpdbase-opts.def
new file mode 100644
index 0000000..852af45
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpdbase-opts.def
@@ -0,0 +1,459 @@
+#include autogen-version.def
+
+test-main;
+
+flag = {
+ name = ipv4;
+ value = 4;
+ equivalence = ipv4;
+ descrip = "Force IPv4 DNS name resolution";
+ doc = <<- _EndOfDoc_
+ Force DNS resolution of following host names on the command line
+ to the IPv4 namespace.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = ipv6;
+ value = 6;
+ equivalence = ipv4;
+ descrip = "Force IPv6 DNS name resolution";
+ doc = <<- _EndOfDoc_
+ Force DNS resolution of following host names on the command line
+ to the IPv6 namespace.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = authreq;
+ value = a;
+ descrip = "Require crypto authentication";
+ flags-cant = authnoreq;
+ doc = <<- _EndOfDoc_
+ Require cryptographic authentication for broadcast client,
+ multicast client and symmetric passive associations.
+ This is the default.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = authnoreq;
+ value = A;
+ descrip = "Do not require crypto authentication";
+ flags-cant = authreq;
+ doc = <<- _EndOfDoc_
+ Do not require cryptographic authentication for broadcast client,
+ multicast client and symmetric passive associations.
+ This is almost never a good idea.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = bcastsync;
+ value = b;
+ descrip = "Allow us to sync to broadcast servers";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+
+#ifdef SIM
+flag = {
+ name = simbroadcastdelay;
+ value = B;
+ arg-type = string;
+ descrip = "Simulator broadcast delay";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+#endif
+
+flag = {
+ name = configfile;
+ value = c;
+ arg-type = string;
+ descrip = "configuration file name";
+ doc = <<- _EndOfDoc_
+ The name and path of the configuration file,
+ /etc/ntp.conf
+ by default.
+ _EndOfDoc_;
+};
+
+#ifdef SIM
+flag = {
+ name = phasenoise;
+ value = C;
+ arg-type = string;
+ descrip = "Phase noise level";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+#endif
+
+#include debug-opt.def
+
+flag = {
+ name = driftfile;
+ value = f;
+ arg-type = string;
+ descrip = "frequency drift file name";
+ doc = <<- _EndOfDoc_
+ The name and path of the frequency file,
+ /etc/ntp.drift
+ by default.
+ This is the same operation as the
+ driftfile driftfile
+ configuration specification in the
+ /etc/ntp.conf
+ file.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = panicgate;
+ value = g;
+ descrip = "Allow the first adjustment to be Big";
+ doc = <<- _EndOfDoc_
+ Normally,
+ ntpd
+ exits with a message to the system log if the offset exceeds the panic threshold, which is 1000 s by default. This option allows the time to be set to any value without restriction; however, this can happen only once. If the threshold is exceeded after that,
+ ntpd
+ will exit with a message to the system log. This option can be used with the
+ -q
+ and
+ -x
+ options.
+ See the
+ tinker
+ configuration file directive for other options.
+ _EndOfDoc_;
+};
+
+#ifdef SIM
+flag = {
+ name = simslew;
+ value = H;
+ arg-type = string;
+ descrip = "Simuator slew";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+#endif
+
+flag = {
+ name = jaildir;
+ value = i;
+ arg-type = string;
+ descrip = "Jail directory";
+ doc = <<- _EndOfDoc_
+ Chroot the server to the directory
+ jaildir
+ .
+ This option also implies that the server attempts to drop root privileges at startup (otherwise, chroot gives very little additional security), and it is only available if the OS supports to run the server without full root privileges.
+ You may need to also specify a
+ -u
+ option.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = interface;
+ value = I;
+ arg-type = string;
+ descrip = "Listen on interface";
+ max = NOLIMIT;
+ arg-name = iface;
+ stack-arg;
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+
+flag = {
+ name = keyfile;
+ value = k;
+ arg-type = string;
+ descrip = "path to symmetric keys";
+ doc = <<- _EndOfDoc_
+ Specify the name and path of the symmetric key file.
+ /etc/ntp.keys
+ is the default.
+ This is the same operation as the
+ keys keyfile
+ configuration file directive.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = logfile;
+ value = l;
+ arg-type = string;
+ descrip = "path to the log file";
+ doc = <<- _EndOfDoc_
+ Specify the name and path of the log file.
+ The default is the system log file.
+ This is the same operation as the
+ logfile logfile
+ configuration file directive.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = novirtualips;
+ value = L;
+ descrip = "Do not listen to virtual IPs";
+ doc = <<- _EndOfDoc_
+ Do not listen to virtual IPs. The default is to listen.
+ _EndOfDoc_;
+};
+
+flag = {
+ ifdef = SYS_WINNT;
+ name = modifymmtimer;
+ value = M;
+ descrip = "Modify Multimedia Timer (Windows only)";
+ doc = <<- _EndOfDoc_
+ Set the Windows Multimedia Timer to highest resolution.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = nofork;
+ value = n;
+ descrip = "Do not fork";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+
+flag = {
+ name = nice;
+ value = N;
+ descrip = "Run at high priority";
+ doc = <<- _EndOfDoc_
+ To the extent permitted by the operating system, run
+ ntpd
+ at the highest priority.
+ _EndOfDoc_;
+};
+
+#ifdef SIM
+flag = {
+ name = servertime;
+ value = O;
+ arg-type = string;
+ descrip = "Server time";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+#endif
+
+flag = {
+ name = pidfile;
+ value = p;
+ arg-type = string;
+ descrip = "path to the PID file";
+ doc = <<- _EndOfDoc_
+ Specify the name and path of the file used to record
+ ntpd's
+ process ID.
+ This is the same operation as the
+ pidfile pidfile
+ configuration file directive.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = priority;
+ value = P;
+ arg-type = number;
+ descrip = "Process priority";
+ doc = <<- _EndOfDoc_
+ To the extent permitted by the operating system, run
+ ntpd
+ at the specified
+ sched_setscheduler(SCHED_FIFO)
+ priority.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = quit;
+ value = q;
+ descrip = "Set the time and quit";
+ doc = <<- _EndOfDoc_
+ ntpd
+ will exit just after the first time the clock is set. This behavior mimics that of the
+ ntpdate
+ program, which is to be retired.
+ The
+ -g
+ and
+ -x
+ options can be used with this option.
+ Note: The kernel time discipline is disabled with this option.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = propagationdelay;
+ value = r;
+ arg-type = string;
+ descrip = "Broadcast/propagation delay";
+ doc = <<- _EndOfDoc_
+ Specify the default propagation delay from the broadcast/multicast server to this client. This is necessary only if the delay cannot be computed automatically by the protocol.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = updateinterval;
+ value = U;
+ arg-type = number;
+ descrip = "interval in seconds between scans for new or dropped interfaces";
+ doc = <<- _EndOfDoc_
+ Give the time in seconds between two scans for new or dropped interfaces.
+ For systems with routing socket support the scans will be performed shortly after the interface change
+ has been detected by the system.
+ Use 0 to disable scanning.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = statsdir;
+ value = s;
+ arg-type = string;
+ descrip = "Statistics file location";
+ doc = <<- _EndOfDoc_
+ Specify the directory path for files created by the statistics facility.
+ This is the same operation as the
+ statsdir statsdir
+ configuration file directive.
+ _EndOfDoc_;
+};
+
+#ifdef SIM
+flag = {
+ name = endsimtime;
+ value = S;
+ arg-type = string;
+ descrip = "Simulation end time";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+#endif
+
+flag = {
+ name = trustedkey;
+ value = t;
+ arg-type = string;
+ descrip = "Trusted key number";
+ max = NOLIMIT;
+ arg-name = tkey;
+ stack-arg;
+ doc = <<- _EndOfDoc_
+ Add a key number to the trusted key list.
+ _EndOfDoc_;
+};
+
+#ifdef SIM
+flag = {
+ name = freqerr;
+ value = T;
+ arg-type = string;
+ descrip = "Simulation frequency error";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+#endif
+
+#ifdef SIM
+flag = {
+ name = walknoise;
+ value = W;
+ arg-type = string;
+ descrip = "Simulation random walk noise";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+#endif
+
+flag = {
+ name = user;
+ value = u;
+ arg-type = string;
+ descrip = "Run as userid (or userid:groupid)";
+ doc = <<- _EndOfDoc_
+ Specify a user, and optionally a group, to switch to.
+ This option is only available if the OS supports to run the server without full root privileges.
+ Currently, this option is supported under NetBSD (configure with
+ --enable-clockctl
+ ) and Linux (configure with
+ --enable-linuxcaps
+ ).
+ _EndOfDoc_;
+};
+
+flag = {
+ name = var;
+ value = v;
+ arg-type = string;
+ descrip = "make ARG an ntp variable (RW)";
+ max = NOLIMIT;
+ arg-name = nvar;
+ stack-arg;
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+
+flag = {
+ name = dvar;
+ value = V;
+ arg-type = string;
+ descrip = "make ARG an ntp variable (RW|DEF)";
+ max = NOLIMIT;
+ arg-name = ndvar;
+ stack-arg;
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+
+flag = {
+ name = slew;
+ value = x;
+ descrip = "Slew up to 600 seconds";
+ doc = <<- _EndOfDoc_
+ Normally, the time is slewed if the offset is less than the step threshold, which is 128 ms by default, and stepped if above the threshold.
+ This option sets the threshold to 600 s, which is well within the accuracy window to set the clock manually.
+ Note: Since the slew rate of typical Unix kernels is limited to 0.5 ms/s, each second of adjustment requires an amortization interval of 2000 s.
+ Thus, an adjustment as much as 600 s will take almost 14 days to complete.
+ This option can be used with the
+ -g
+ and
+ -q
+ options.
+ See the
+ tinker
+ configuration file directive for other options.
+ Note: The kernel time discipline is disabled with this option.
+ _EndOfDoc_;
+};
+
+#ifdef SIM
+flag = {
+ name = ndelay;
+ value = Y;
+ arg-type = string;
+ descrip = "Simulation network delay";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+#endif
+
+#ifdef SIM
+flag = {
+ name = pdelay;
+ value = Z;
+ arg-type = string;
+ descrip = "Simulation processing delay";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+#endif
diff --git a/contrib/ntp/ntpd/ntpdsim-opts.c b/contrib/ntp/ntpd/ntpdsim-opts.c
new file mode 100644
index 0000000..4f09c0f
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpdsim-opts.c
@@ -0,0 +1,1262 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (ntpdsim-opts.c)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:20:14 AM EDT
+ * From the definitions ntpdsim-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This source file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * ntpdsim author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * ntpdsim copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+
+
+#include <limits.h>
+
+#define OPTION_CODE_COMPILE 1
+#include "ntpdsim-opts.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+tSCC zCopyright[] =
+ "ntpdsim copyright (c) 1970-2008 David L. Mills and/or others, all rights reserved";
+tSCC zCopyrightNotice[] =
+
+/* extracted from ../include/copyright.def near line 8 */
+"see html/copyright.html";
+extern tUsageProc optionUsage;
+
+/*
+ * global included definitions
+ */
+#ifdef __windows
+ extern int atoi(const char*);
+#else
+# include <stdlib.h>
+#endif
+
+#ifndef NULL
+# define NULL 0
+#endif
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+/*
+ * Ipv4 option description:
+ */
+tSCC zIpv4Text[] =
+ "Force IPv4 DNS name resolution";
+tSCC zIpv4_NAME[] = "IPV4";
+tSCC zIpv4_Name[] = "ipv4";
+#define IPV4_FLAGS (OPTST_DISABLED)
+
+/*
+ * Ipv6 option description:
+ */
+tSCC zIpv6Text[] =
+ "Force IPv6 DNS name resolution";
+tSCC zIpv6_NAME[] = "IPV6";
+tSCC zIpv6_Name[] = "ipv6";
+#define IPV6_FLAGS (OPTST_DISABLED)
+
+/*
+ * Authreq option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zAuthreqText[] =
+ "Require crypto authentication";
+tSCC zAuthreq_NAME[] = "AUTHREQ";
+tSCC zAuthreq_Name[] = "authreq";
+static const int
+ aAuthreqCantList[] = {
+ INDEX_OPT_AUTHNOREQ, NO_EQUIVALENT };
+#define AUTHREQ_FLAGS (OPTST_DISABLED)
+
+/*
+ * Authnoreq option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zAuthnoreqText[] =
+ "Do not require crypto authentication";
+tSCC zAuthnoreq_NAME[] = "AUTHNOREQ";
+tSCC zAuthnoreq_Name[] = "authnoreq";
+static const int
+ aAuthnoreqCantList[] = {
+ INDEX_OPT_AUTHREQ, NO_EQUIVALENT };
+#define AUTHNOREQ_FLAGS (OPTST_DISABLED)
+
+/*
+ * Bcastsync option description:
+ */
+tSCC zBcastsyncText[] =
+ "Allow us to sync to broadcast servers";
+tSCC zBcastsync_NAME[] = "BCASTSYNC";
+tSCC zBcastsync_Name[] = "bcastsync";
+#define BCASTSYNC_FLAGS (OPTST_DISABLED)
+
+/*
+ * Simbroadcastdelay option description:
+ */
+tSCC zSimbroadcastdelayText[] =
+ "Simulator broadcast delay";
+tSCC zSimbroadcastdelay_NAME[] = "SIMBROADCASTDELAY";
+tSCC zSimbroadcastdelay_Name[] = "simbroadcastdelay";
+#define SIMBROADCASTDELAY_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Configfile option description:
+ */
+tSCC zConfigfileText[] =
+ "configuration file name";
+tSCC zConfigfile_NAME[] = "CONFIGFILE";
+tSCC zConfigfile_Name[] = "configfile";
+#define CONFIGFILE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Phasenoise option description:
+ */
+tSCC zPhasenoiseText[] =
+ "Phase noise level";
+tSCC zPhasenoise_NAME[] = "PHASENOISE";
+tSCC zPhasenoise_Name[] = "phasenoise";
+#define PHASENOISE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Debug_Level option description:
+ */
+#ifdef DEBUG
+tSCC zDebug_LevelText[] =
+ "Increase output debug message level";
+tSCC zDebug_Level_NAME[] = "DEBUG_LEVEL";
+tSCC zDebug_Level_Name[] = "debug-level";
+#define DEBUG_LEVEL_FLAGS (OPTST_DISABLED)
+
+#else /* disable Debug_Level */
+#define VALUE_OPT_DEBUG_LEVEL NO_EQUIVALENT
+#define DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zDebug_LevelText NULL
+#define zDebug_Level_NAME NULL
+#define zDebug_Level_Name NULL
+#endif /* DEBUG */
+
+/*
+ * Set_Debug_Level option description:
+ */
+#ifdef DEBUG
+tSCC zSet_Debug_LevelText[] =
+ "Set the output debug message level";
+tSCC zSet_Debug_Level_NAME[] = "SET_DEBUG_LEVEL";
+tSCC zSet_Debug_Level_Name[] = "set-debug-level";
+#define SET_DEBUG_LEVEL_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+#else /* disable Set_Debug_Level */
+#define VALUE_OPT_SET_DEBUG_LEVEL NO_EQUIVALENT
+#define SET_DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zSet_Debug_LevelText NULL
+#define zSet_Debug_Level_NAME NULL
+#define zSet_Debug_Level_Name NULL
+#endif /* DEBUG */
+
+/*
+ * Driftfile option description:
+ */
+tSCC zDriftfileText[] =
+ "frequency drift file name";
+tSCC zDriftfile_NAME[] = "DRIFTFILE";
+tSCC zDriftfile_Name[] = "driftfile";
+#define DRIFTFILE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Panicgate option description:
+ */
+tSCC zPanicgateText[] =
+ "Allow the first adjustment to be Big";
+tSCC zPanicgate_NAME[] = "PANICGATE";
+tSCC zPanicgate_Name[] = "panicgate";
+#define PANICGATE_FLAGS (OPTST_DISABLED)
+
+/*
+ * Simslew option description:
+ */
+tSCC zSimslewText[] =
+ "Simuator slew";
+tSCC zSimslew_NAME[] = "SIMSLEW";
+tSCC zSimslew_Name[] = "simslew";
+#define SIMSLEW_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Jaildir option description:
+ */
+tSCC zJaildirText[] =
+ "Jail directory";
+tSCC zJaildir_NAME[] = "JAILDIR";
+tSCC zJaildir_Name[] = "jaildir";
+#define JAILDIR_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Interface option description:
+ */
+tSCC zInterfaceText[] =
+ "Listen on interface";
+tSCC zInterface_NAME[] = "INTERFACE";
+tSCC zInterface_Name[] = "interface";
+#define INTERFACE_FLAGS (OPTST_DISABLED | OPTST_STACKED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Keyfile option description:
+ */
+tSCC zKeyfileText[] =
+ "path to symmetric keys";
+tSCC zKeyfile_NAME[] = "KEYFILE";
+tSCC zKeyfile_Name[] = "keyfile";
+#define KEYFILE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Logfile option description:
+ */
+tSCC zLogfileText[] =
+ "path to the log file";
+tSCC zLogfile_NAME[] = "LOGFILE";
+tSCC zLogfile_Name[] = "logfile";
+#define LOGFILE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Novirtualips option description:
+ */
+tSCC zNovirtualipsText[] =
+ "Do not listen to virtual IPs";
+tSCC zNovirtualips_NAME[] = "NOVIRTUALIPS";
+tSCC zNovirtualips_Name[] = "novirtualips";
+#define NOVIRTUALIPS_FLAGS (OPTST_DISABLED)
+
+/*
+ * Modifymmtimer option description:
+ */
+#ifdef SYS_WINNT
+tSCC zModifymmtimerText[] =
+ "Modify Multimedia Timer (Windows only)";
+tSCC zModifymmtimer_NAME[] = "MODIFYMMTIMER";
+tSCC zModifymmtimer_Name[] = "modifymmtimer";
+#define MODIFYMMTIMER_FLAGS (OPTST_DISABLED)
+
+#else /* disable Modifymmtimer */
+#define VALUE_OPT_MODIFYMMTIMER NO_EQUIVALENT
+#define MODIFYMMTIMER_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zModifymmtimerText NULL
+#define zModifymmtimer_NAME NULL
+#define zModifymmtimer_Name NULL
+#endif /* SYS_WINNT */
+
+/*
+ * Nofork option description:
+ */
+tSCC zNoforkText[] =
+ "Do not fork";
+tSCC zNofork_NAME[] = "NOFORK";
+tSCC zNofork_Name[] = "nofork";
+#define NOFORK_FLAGS (OPTST_DISABLED)
+
+/*
+ * Nice option description:
+ */
+tSCC zNiceText[] =
+ "Run at high priority";
+tSCC zNice_NAME[] = "NICE";
+tSCC zNice_Name[] = "nice";
+#define NICE_FLAGS (OPTST_DISABLED)
+
+/*
+ * Servertime option description:
+ */
+tSCC zServertimeText[] =
+ "Server time";
+tSCC zServertime_NAME[] = "SERVERTIME";
+tSCC zServertime_Name[] = "servertime";
+#define SERVERTIME_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Pidfile option description:
+ */
+tSCC zPidfileText[] =
+ "path to the PID file";
+tSCC zPidfile_NAME[] = "PIDFILE";
+tSCC zPidfile_Name[] = "pidfile";
+#define PIDFILE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Priority option description:
+ */
+tSCC zPriorityText[] =
+ "Process priority";
+tSCC zPriority_NAME[] = "PRIORITY";
+tSCC zPriority_Name[] = "priority";
+#define PRIORITY_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ * Quit option description:
+ */
+tSCC zQuitText[] =
+ "Set the time and quit";
+tSCC zQuit_NAME[] = "QUIT";
+tSCC zQuit_Name[] = "quit";
+#define QUIT_FLAGS (OPTST_DISABLED)
+
+/*
+ * Propagationdelay option description:
+ */
+tSCC zPropagationdelayText[] =
+ "Broadcast/propagation delay";
+tSCC zPropagationdelay_NAME[] = "PROPAGATIONDELAY";
+tSCC zPropagationdelay_Name[] = "propagationdelay";
+#define PROPAGATIONDELAY_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Updateinterval option description:
+ */
+tSCC zUpdateintervalText[] =
+ "interval in seconds between scans for new or dropped interfaces";
+tSCC zUpdateinterval_NAME[] = "UPDATEINTERVAL";
+tSCC zUpdateinterval_Name[] = "updateinterval";
+#define UPDATEINTERVAL_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+/*
+ * Statsdir option description:
+ */
+tSCC zStatsdirText[] =
+ "Statistics file location";
+tSCC zStatsdir_NAME[] = "STATSDIR";
+tSCC zStatsdir_Name[] = "statsdir";
+#define STATSDIR_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Endsimtime option description:
+ */
+tSCC zEndsimtimeText[] =
+ "Simulation end time";
+tSCC zEndsimtime_NAME[] = "ENDSIMTIME";
+tSCC zEndsimtime_Name[] = "endsimtime";
+#define ENDSIMTIME_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Trustedkey option description:
+ */
+tSCC zTrustedkeyText[] =
+ "Trusted key number";
+tSCC zTrustedkey_NAME[] = "TRUSTEDKEY";
+tSCC zTrustedkey_Name[] = "trustedkey";
+#define TRUSTEDKEY_FLAGS (OPTST_DISABLED | OPTST_STACKED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Freqerr option description:
+ */
+tSCC zFreqerrText[] =
+ "Simulation frequency error";
+tSCC zFreqerr_NAME[] = "FREQERR";
+tSCC zFreqerr_Name[] = "freqerr";
+#define FREQERR_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Walknoise option description:
+ */
+tSCC zWalknoiseText[] =
+ "Simulation random walk noise";
+tSCC zWalknoise_NAME[] = "WALKNOISE";
+tSCC zWalknoise_Name[] = "walknoise";
+#define WALKNOISE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * User option description:
+ */
+tSCC zUserText[] =
+ "Run as userid (or userid:groupid)";
+tSCC zUser_NAME[] = "USER";
+tSCC zUser_Name[] = "user";
+#define USER_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Var option description:
+ */
+tSCC zVarText[] =
+ "make ARG an ntp variable (RW)";
+tSCC zVar_NAME[] = "VAR";
+tSCC zVar_Name[] = "var";
+#define VAR_FLAGS (OPTST_DISABLED | OPTST_STACKED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Dvar option description:
+ */
+tSCC zDvarText[] =
+ "make ARG an ntp variable (RW|DEF)";
+tSCC zDvar_NAME[] = "DVAR";
+tSCC zDvar_Name[] = "dvar";
+#define DVAR_FLAGS (OPTST_DISABLED | OPTST_STACKED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Slew option description:
+ */
+tSCC zSlewText[] =
+ "Slew up to 600 seconds";
+tSCC zSlew_NAME[] = "SLEW";
+tSCC zSlew_Name[] = "slew";
+#define SLEW_FLAGS (OPTST_DISABLED)
+
+/*
+ * Ndelay option description:
+ */
+tSCC zNdelayText[] =
+ "Simulation network delay";
+tSCC zNdelay_NAME[] = "NDELAY";
+tSCC zNdelay_Name[] = "ndelay";
+#define NDELAY_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Pdelay option description:
+ */
+tSCC zPdelayText[] =
+ "Simulation processing delay";
+tSCC zPdelay_NAME[] = "PDELAY";
+tSCC zPdelay_Name[] = "pdelay";
+#define PDELAY_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Help/More_Help/Version option descriptions:
+ */
+tSCC zHelpText[] = "Display usage information and exit";
+tSCC zHelp_Name[] = "help";
+
+tSCC zMore_HelpText[] = "Extended usage information passed thru pager";
+tSCC zMore_Help_Name[] = "more-help";
+
+tSCC zVersionText[] = "Output version information and exit";
+tSCC zVersion_Name[] = "version";
+
+/*
+ * Save/Load_Opts option description:
+ */
+tSCC zSave_OptsText[] = "Save the option state to a config file";
+tSCC zSave_Opts_Name[] = "save-opts";
+
+tSCC zLoad_OptsText[] = "Load options from a config file";
+tSCC zLoad_Opts_NAME[] = "LOAD_OPTS";
+
+tSCC zNotLoad_Opts_Name[] = "no-load-opts";
+tSCC zNotLoad_Opts_Pfx[] = "no";
+#define zLoad_Opts_Name (zNotLoad_Opts_Name + 3)
+/*
+ * Declare option callback procedures
+ */
+#ifdef DEBUG
+ static tOptProc doOptSet_Debug_Level;
+#else /* not DEBUG */
+# define doOptSet_Debug_Level NULL
+#endif /* def/not DEBUG */
+#if defined(TEST_NTPDSIM_OPTS)
+/*
+ * Under test, omit argument processing, or call optionStackArg,
+ * if multiple copies are allowed.
+ */
+extern tOptProc
+ optionNumericVal, optionPagedUsage, optionStackArg,
+ optionVersionStderr;
+static tOptProc
+ doUsageOpt;
+
+/*
+ * #define map the "normal" callout procs to the test ones...
+ */
+#define SET_DEBUG_LEVEL_OPT_PROC optionStackArg
+
+
+#else /* NOT defined TEST_NTPDSIM_OPTS */
+/*
+ * When not under test, there are different procs to use
+ */
+extern tOptProc
+ optionNumericVal, optionPagedUsage, optionPrintVersion, optionStackArg;
+static tOptProc
+ doUsageOpt;
+
+/*
+ * #define map the "normal" callout procs
+ */
+#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
+
+#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
+#endif /* defined(TEST_NTPDSIM_OPTS) */
+#ifdef TEST_NTPDSIM_OPTS
+# define DOVERPROC optionVersionStderr
+#else
+# define DOVERPROC optionPrintVersion
+#endif /* TEST_NTPDSIM_OPTS */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Ntpdsim Option Descriptions.
+ */
+static tOptDesc optDesc[ OPTION_CT ] = {
+ { /* entry idx, value */ 0, VALUE_OPT_IPV4,
+ /* equiv idx, value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ IPV4_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIpv4Text, zIpv4_NAME, zIpv4_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 1, VALUE_OPT_IPV6,
+ /* equiv idx, value */ NOLIMIT, NOLIMIT,
+ /* equivalenced to */ INDEX_OPT_IPV4,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ IPV6_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIpv6Text, zIpv6_NAME, zIpv6_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 2, VALUE_OPT_AUTHREQ,
+ /* equiv idx, value */ 2, VALUE_OPT_AUTHREQ,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ AUTHREQ_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aAuthreqCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zAuthreqText, zAuthreq_NAME, zAuthreq_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 3, VALUE_OPT_AUTHNOREQ,
+ /* equiv idx, value */ 3, VALUE_OPT_AUTHNOREQ,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ AUTHNOREQ_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aAuthnoreqCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zAuthnoreqText, zAuthnoreq_NAME, zAuthnoreq_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 4, VALUE_OPT_BCASTSYNC,
+ /* equiv idx, value */ 4, VALUE_OPT_BCASTSYNC,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ BCASTSYNC_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zBcastsyncText, zBcastsync_NAME, zBcastsync_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 5, VALUE_OPT_SIMBROADCASTDELAY,
+ /* equiv idx, value */ 5, VALUE_OPT_SIMBROADCASTDELAY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SIMBROADCASTDELAY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSimbroadcastdelayText, zSimbroadcastdelay_NAME, zSimbroadcastdelay_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 6, VALUE_OPT_CONFIGFILE,
+ /* equiv idx, value */ 6, VALUE_OPT_CONFIGFILE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ CONFIGFILE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zConfigfileText, zConfigfile_NAME, zConfigfile_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 7, VALUE_OPT_PHASENOISE,
+ /* equiv idx, value */ 7, VALUE_OPT_PHASENOISE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PHASENOISE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPhasenoiseText, zPhasenoise_NAME, zPhasenoise_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 8, VALUE_OPT_DEBUG_LEVEL,
+ /* equiv idx, value */ 8, VALUE_OPT_DEBUG_LEVEL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ DEBUG_LEVEL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zDebug_LevelText, zDebug_Level_NAME, zDebug_Level_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 9, VALUE_OPT_SET_DEBUG_LEVEL,
+ /* equiv idx, value */ 9, VALUE_OPT_SET_DEBUG_LEVEL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ SET_DEBUG_LEVEL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ SET_DEBUG_LEVEL_OPT_PROC,
+ /* desc, NAME, name */ zSet_Debug_LevelText, zSet_Debug_Level_NAME, zSet_Debug_Level_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 10, VALUE_OPT_DRIFTFILE,
+ /* equiv idx, value */ 10, VALUE_OPT_DRIFTFILE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ DRIFTFILE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zDriftfileText, zDriftfile_NAME, zDriftfile_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 11, VALUE_OPT_PANICGATE,
+ /* equiv idx, value */ 11, VALUE_OPT_PANICGATE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PANICGATE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPanicgateText, zPanicgate_NAME, zPanicgate_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 12, VALUE_OPT_SIMSLEW,
+ /* equiv idx, value */ 12, VALUE_OPT_SIMSLEW,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SIMSLEW_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSimslewText, zSimslew_NAME, zSimslew_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 13, VALUE_OPT_JAILDIR,
+ /* equiv idx, value */ 13, VALUE_OPT_JAILDIR,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ JAILDIR_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zJaildirText, zJaildir_NAME, zJaildir_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 14, VALUE_OPT_INTERFACE,
+ /* equiv idx, value */ 14, VALUE_OPT_INTERFACE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ INTERFACE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionStackArg,
+ /* desc, NAME, name */ zInterfaceText, zInterface_NAME, zInterface_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 15, VALUE_OPT_KEYFILE,
+ /* equiv idx, value */ 15, VALUE_OPT_KEYFILE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ KEYFILE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zKeyfileText, zKeyfile_NAME, zKeyfile_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 16, VALUE_OPT_LOGFILE,
+ /* equiv idx, value */ 16, VALUE_OPT_LOGFILE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ LOGFILE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zLogfileText, zLogfile_NAME, zLogfile_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 17, VALUE_OPT_NOVIRTUALIPS,
+ /* equiv idx, value */ 17, VALUE_OPT_NOVIRTUALIPS,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ NOVIRTUALIPS_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zNovirtualipsText, zNovirtualips_NAME, zNovirtualips_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 18, VALUE_OPT_MODIFYMMTIMER,
+ /* equiv idx, value */ 18, VALUE_OPT_MODIFYMMTIMER,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ MODIFYMMTIMER_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zModifymmtimerText, zModifymmtimer_NAME, zModifymmtimer_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 19, VALUE_OPT_NOFORK,
+ /* equiv idx, value */ 19, VALUE_OPT_NOFORK,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ NOFORK_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zNoforkText, zNofork_NAME, zNofork_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 20, VALUE_OPT_NICE,
+ /* equiv idx, value */ 20, VALUE_OPT_NICE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ NICE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zNiceText, zNice_NAME, zNice_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 21, VALUE_OPT_SERVERTIME,
+ /* equiv idx, value */ 21, VALUE_OPT_SERVERTIME,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SERVERTIME_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zServertimeText, zServertime_NAME, zServertime_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 22, VALUE_OPT_PIDFILE,
+ /* equiv idx, value */ 22, VALUE_OPT_PIDFILE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PIDFILE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPidfileText, zPidfile_NAME, zPidfile_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 23, VALUE_OPT_PRIORITY,
+ /* equiv idx, value */ 23, VALUE_OPT_PRIORITY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PRIORITY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionNumericVal,
+ /* desc, NAME, name */ zPriorityText, zPriority_NAME, zPriority_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 24, VALUE_OPT_QUIT,
+ /* equiv idx, value */ 24, VALUE_OPT_QUIT,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ QUIT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zQuitText, zQuit_NAME, zQuit_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 25, VALUE_OPT_PROPAGATIONDELAY,
+ /* equiv idx, value */ 25, VALUE_OPT_PROPAGATIONDELAY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PROPAGATIONDELAY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPropagationdelayText, zPropagationdelay_NAME, zPropagationdelay_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 26, VALUE_OPT_UPDATEINTERVAL,
+ /* equiv idx, value */ 26, VALUE_OPT_UPDATEINTERVAL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ UPDATEINTERVAL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionNumericVal,
+ /* desc, NAME, name */ zUpdateintervalText, zUpdateinterval_NAME, zUpdateinterval_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 27, VALUE_OPT_STATSDIR,
+ /* equiv idx, value */ 27, VALUE_OPT_STATSDIR,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ STATSDIR_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zStatsdirText, zStatsdir_NAME, zStatsdir_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 28, VALUE_OPT_ENDSIMTIME,
+ /* equiv idx, value */ 28, VALUE_OPT_ENDSIMTIME,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ ENDSIMTIME_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zEndsimtimeText, zEndsimtime_NAME, zEndsimtime_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 29, VALUE_OPT_TRUSTEDKEY,
+ /* equiv idx, value */ 29, VALUE_OPT_TRUSTEDKEY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ TRUSTEDKEY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionStackArg,
+ /* desc, NAME, name */ zTrustedkeyText, zTrustedkey_NAME, zTrustedkey_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 30, VALUE_OPT_FREQERR,
+ /* equiv idx, value */ 30, VALUE_OPT_FREQERR,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ FREQERR_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zFreqerrText, zFreqerr_NAME, zFreqerr_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 31, VALUE_OPT_WALKNOISE,
+ /* equiv idx, value */ 31, VALUE_OPT_WALKNOISE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ WALKNOISE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zWalknoiseText, zWalknoise_NAME, zWalknoise_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 32, VALUE_OPT_USER,
+ /* equiv idx, value */ 32, VALUE_OPT_USER,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ USER_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zUserText, zUser_NAME, zUser_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 33, VALUE_OPT_VAR,
+ /* equiv idx, value */ 33, VALUE_OPT_VAR,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ VAR_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionStackArg,
+ /* desc, NAME, name */ zVarText, zVar_NAME, zVar_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 34, VALUE_OPT_DVAR,
+ /* equiv idx, value */ 34, VALUE_OPT_DVAR,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ DVAR_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionStackArg,
+ /* desc, NAME, name */ zDvarText, zDvar_NAME, zDvar_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 35, VALUE_OPT_SLEW,
+ /* equiv idx, value */ 35, VALUE_OPT_SLEW,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SLEW_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSlewText, zSlew_NAME, zSlew_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 36, VALUE_OPT_NDELAY,
+ /* equiv idx, value */ 36, VALUE_OPT_NDELAY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ NDELAY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zNdelayText, zNdelay_NAME, zNdelay_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 37, VALUE_OPT_PDELAY,
+ /* equiv idx, value */ 37, VALUE_OPT_PDELAY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PDELAY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPdelayText, zPdelay_NAME, zPdelay_Name,
+ /* disablement strs */ NULL, NULL },
+
+#ifdef NO_OPTIONAL_OPT_ARGS
+# define VERSION_OPT_FLAGS OPTST_IMM | OPTST_NO_INIT
+#else
+# define VERSION_OPT_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+ OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
+#endif
+
+ { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ VERSION_OPT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ DOVERPROC,
+ /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
+ /* disablement strs */ NULL, NULL },
+
+#undef VERSION_OPT_FLAGS
+
+
+ { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ doUsageOpt,
+ /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionPagedUsage,
+ /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
+ | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSave_OptsText, NULL, zSave_Opts_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) \
+ | OPTST_DISABLE_IMM, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionLoadOpt,
+ /* desc, NAME, name */ zLoad_OptsText, zLoad_Opts_NAME, zLoad_Opts_Name,
+ /* disablement strs */ zNotLoad_Opts_Name, zNotLoad_Opts_Pfx }
+};
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Ntpdsim Option Environment
+ */
+tSCC zPROGNAME[] = "NTPDSIM";
+tSCC zUsageTitle[] =
+"ntpdsim - NTP daemon simulation program - Ver. 4.2.4p5\n\
+USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n";
+tSCC zRcName[] = ".ntprc";
+tSCC* apzHomeList[] = {
+ "$HOME",
+ ".",
+ NULL };
+
+tSCC zBugsAddr[] = "http://bugs.ntp.isc.org, bugs@ntp.org";
+#define zExplain NULL
+tSCC zDetail[] = "\n\n";
+tSCC zFullVersion[] = NTPDSIM_FULL_VERSION;
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 408 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE
+ static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+tOptions ntpdsimOptions = {
+ OPTIONS_STRUCT_VERSION,
+ 0, NULL, /* original argc + argv */
+ ( OPTPROC_BASE
+ + OPTPROC_ERRSTOP
+ + OPTPROC_SHORTOPT
+ + OPTPROC_LONGOPT
+ + OPTPROC_NO_REQ_OPT
+ + OPTPROC_ENVIRON
+ + OPTPROC_NO_ARGS
+ + OPTPROC_HAS_IMMED ),
+ 0, NULL, /* current option index, current option */
+ NULL, NULL, zPROGNAME,
+ zRcName, zCopyright, zCopyrightNotice,
+ zFullVersion, apzHomeList, zUsageTitle,
+ zExplain, zDetail, optDesc,
+ zBugsAddr, /* address to send bugs to */
+ NULL, NULL, /* extensions/saved state */
+ optionUsage, /* usage procedure */
+ translate_option_strings, /* translation procedure */
+ /*
+ * Indexes to special options
+ */
+ { INDEX_OPT_MORE_HELP,
+ INDEX_OPT_SAVE_OPTS,
+ NO_EQUIVALENT /* index of '-#' option */,
+ NO_EQUIVALENT /* index of default opt */
+ },
+ 43 /* full option count */, 38 /* user option count */
+};
+
+/*
+ * Create the static procedure(s) declared above.
+ */
+static void
+doUsageOpt(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ USAGE( EXIT_SUCCESS );
+}
+
+#if ! defined(TEST_NTPDSIM_OPTS)
+
+/* * * * * * *
+ *
+ * For the set-debug-level option, when DEBUG is #define-d.
+ */
+#ifdef DEBUG
+static void
+doOptSet_Debug_Level(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ /* extracted from ../include/debug-opt.def, line 29 */
+DESC(DEBUG_LEVEL).optOccCt = atoi( pOptDesc->pzLastArg );
+}
+#endif /* defined DEBUG */
+
+#endif /* defined(TEST_NTPDSIM_OPTS) */
+
+/* extracted from /usr/local/gnu/share/autogen/optmain.tpl near line 92 */
+
+#if defined(TEST_NTPDSIM_OPTS) /* TEST MAIN PROCEDURE: */
+
+int
+main( int argc, char** argv )
+{
+ int res = EXIT_SUCCESS;
+ (void)optionProcess( &ntpdsimOptions, argc, argv );
+ {
+ void optionPutShell( tOptions* );
+ optionPutShell( &ntpdsimOptions );
+ }
+ return res;
+}
+#endif /* defined TEST_NTPDSIM_OPTS */
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 514 */
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext( char const* pz );
+static void coerce_it(void** s);
+
+static char*
+AO_gettext( char const* pz )
+{
+ char* pzRes;
+ if (pz == NULL)
+ return NULL;
+ pzRes = _(pz);
+ if (pzRes == pz)
+ return pzRes;
+ pzRes = strdup( pzRes );
+ if (pzRes == NULL) {
+ fputs( _("No memory for duping translated strings\n"), stderr );
+ exit( EXIT_FAILURE );
+ }
+ return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s); }
+#define COERSION(_f) \
+ coerce_it((void*)&(ntpdsimOptions._f))
+
+/*
+ * This invokes the translation code (e.g. gettext(3)).
+ */
+static void
+translate_option_strings( void )
+{
+ /*
+ * Guard against re-translation. It won't work. The strings will have
+ * been changed by the first pass through this code. One shot only.
+ */
+ if (option_usage_text.field_ct == 0)
+ return;
+ /*
+ * Do the translations. The first pointer follows the field count field.
+ * The field count field is the size of a pointer.
+ */
+ {
+ char** ppz = (char**)(void*)&(option_usage_text);
+ int ix = option_usage_text.field_ct;
+
+ do {
+ ppz++;
+ *ppz = AO_gettext(*ppz);
+ } while (--ix > 0);
+ }
+ option_usage_text.field_ct = 0;
+
+ {
+ tOptDesc* pOD = ntpdsimOptions.pOptDesc;
+ int ix = ntpdsimOptions.optCt;
+
+ for (;;) {
+ pOD->pzText = AO_gettext(pOD->pzText);
+ pOD->pz_NAME = AO_gettext(pOD->pz_NAME);
+ pOD->pz_Name = AO_gettext(pOD->pz_Name);
+ pOD->pz_DisableName = AO_gettext(pOD->pz_DisableName);
+ pOD->pz_DisablePfx = AO_gettext(pOD->pz_DisablePfx);
+ if (--ix <= 0)
+ break;
+ pOD++;
+ }
+ }
+ COERSION(pzCopyright);
+ COERSION(pzCopyNotice);
+ COERSION(pzFullVersion);
+ COERSION(pzUsageTitle);
+ COERSION(pzExplain);
+ COERSION(pzDetail);
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef __cplusplus
+}
+#endif
+/* ntpdsim-opts.c ends here */
diff --git a/contrib/ntp/ntpd/ntpdsim-opts.def b/contrib/ntp/ntpd/ntpdsim-opts.def
new file mode 100644
index 0000000..093c325
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpdsim-opts.def
@@ -0,0 +1,15 @@
+/* -*- Mode: Text -*- */
+
+autogen definitions options;
+
+#include copyright.def
+#include homerc.def
+
+prog-name = "ntpdsim";
+prog-title = "NTP daemon simulation program";
+
+#define SIM
+#include ntpdbase-opts.def
+
+detail = <<- _END_DETAIL
+ _END_DETAIL;
diff --git a/contrib/ntp/ntpd/ntpdsim-opts.h b/contrib/ntp/ntpd/ntpdsim-opts.h
new file mode 100644
index 0000000..1c63654
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpdsim-opts.h
@@ -0,0 +1,422 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (ntpdsim-opts.h)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:20:13 AM EDT
+ * From the definitions ntpdsim-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This header file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * ntpdsim author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * ntpdsim copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+/*
+ * This file contains the programmatic interface to the Automated
+ * Options generated for the ntpdsim program.
+ * These macros are documented in the AutoGen info file in the
+ * "AutoOpts" chapter. Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_NTPDSIM_OPTS_H_GUARD
+#define AUTOOPTS_NTPDSIM_OPTS_H_GUARD
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ * Ensure that the library used for compiling this generated header is at
+ * least as new as the version current when the header template was released
+ * (not counting patch version increments). Also ensure that the oldest
+ * tolerable version is at least as old as what was current when the header
+ * template was released.
+ */
+#define AO_TEMPLATE_VERSION 118784
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+ Choke Me.
+#endif
+
+/*
+ * Enumeration of each option:
+ */
+typedef enum {
+ INDEX_OPT_IPV4 = 0,
+ INDEX_OPT_IPV6 = 1,
+ INDEX_OPT_AUTHREQ = 2,
+ INDEX_OPT_AUTHNOREQ = 3,
+ INDEX_OPT_BCASTSYNC = 4,
+ INDEX_OPT_SIMBROADCASTDELAY = 5,
+ INDEX_OPT_CONFIGFILE = 6,
+ INDEX_OPT_PHASENOISE = 7,
+ INDEX_OPT_DEBUG_LEVEL = 8,
+ INDEX_OPT_SET_DEBUG_LEVEL = 9,
+ INDEX_OPT_DRIFTFILE = 10,
+ INDEX_OPT_PANICGATE = 11,
+ INDEX_OPT_SIMSLEW = 12,
+ INDEX_OPT_JAILDIR = 13,
+ INDEX_OPT_INTERFACE = 14,
+ INDEX_OPT_KEYFILE = 15,
+ INDEX_OPT_LOGFILE = 16,
+ INDEX_OPT_NOVIRTUALIPS = 17,
+ INDEX_OPT_MODIFYMMTIMER = 18,
+ INDEX_OPT_NOFORK = 19,
+ INDEX_OPT_NICE = 20,
+ INDEX_OPT_SERVERTIME = 21,
+ INDEX_OPT_PIDFILE = 22,
+ INDEX_OPT_PRIORITY = 23,
+ INDEX_OPT_QUIT = 24,
+ INDEX_OPT_PROPAGATIONDELAY = 25,
+ INDEX_OPT_UPDATEINTERVAL = 26,
+ INDEX_OPT_STATSDIR = 27,
+ INDEX_OPT_ENDSIMTIME = 28,
+ INDEX_OPT_TRUSTEDKEY = 29,
+ INDEX_OPT_FREQERR = 30,
+ INDEX_OPT_WALKNOISE = 31,
+ INDEX_OPT_USER = 32,
+ INDEX_OPT_VAR = 33,
+ INDEX_OPT_DVAR = 34,
+ INDEX_OPT_SLEW = 35,
+ INDEX_OPT_NDELAY = 36,
+ INDEX_OPT_PDELAY = 37,
+ INDEX_OPT_VERSION = 38,
+ INDEX_OPT_HELP = 39,
+ INDEX_OPT_MORE_HELP = 40,
+ INDEX_OPT_SAVE_OPTS = 41,
+ INDEX_OPT_LOAD_OPTS = 42
+} teOptIndex;
+
+#define OPTION_CT 43
+#define NTPDSIM_VERSION "4.2.4p5"
+#define NTPDSIM_FULL_VERSION "ntpdsim - NTP daemon simulation program - Ver. 4.2.4p5"
+
+/*
+ * Interface defines for all options. Replace "n" with the UPPER_CASED
+ * option name (as in the teOptIndex enumeration above).
+ * e.g. HAVE_OPT( IPV4 )
+ */
+#define DESC(n) (ntpdsimOptions.pOptDesc[INDEX_OPT_## n])
+#define HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define OPT_ARG(n) (DESC(n).optArg.argString)
+#define STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define COUNT_OPT(n) (DESC(n).optOccCt)
+#define ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define CLEAR_OPT(n) STMTS( \
+ DESC(n).fOptState &= OPTST_PERSISTENT_MASK; \
+ if ( (DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+ DESC(n).fOptState |= OPTST_DISABLED; \
+ DESC(n).optCookie = NULL )
+
+/*
+ * Make sure there are no #define name conflicts with the option names
+ */
+#ifndef NO_OPTION_NAME_WARNINGS
+# ifdef IPV4
+# warning undefining IPV4 due to option name conflict
+# undef IPV4
+# endif
+# ifdef IPV6
+# warning undefining IPV6 due to option name conflict
+# undef IPV6
+# endif
+# ifdef AUTHREQ
+# warning undefining AUTHREQ due to option name conflict
+# undef AUTHREQ
+# endif
+# ifdef AUTHNOREQ
+# warning undefining AUTHNOREQ due to option name conflict
+# undef AUTHNOREQ
+# endif
+# ifdef BCASTSYNC
+# warning undefining BCASTSYNC due to option name conflict
+# undef BCASTSYNC
+# endif
+# ifdef SIMBROADCASTDELAY
+# warning undefining SIMBROADCASTDELAY due to option name conflict
+# undef SIMBROADCASTDELAY
+# endif
+# ifdef CONFIGFILE
+# warning undefining CONFIGFILE due to option name conflict
+# undef CONFIGFILE
+# endif
+# ifdef PHASENOISE
+# warning undefining PHASENOISE due to option name conflict
+# undef PHASENOISE
+# endif
+# ifdef DEBUG_LEVEL
+# warning undefining DEBUG_LEVEL due to option name conflict
+# undef DEBUG_LEVEL
+# endif
+# ifdef SET_DEBUG_LEVEL
+# warning undefining SET_DEBUG_LEVEL due to option name conflict
+# undef SET_DEBUG_LEVEL
+# endif
+# ifdef DRIFTFILE
+# warning undefining DRIFTFILE due to option name conflict
+# undef DRIFTFILE
+# endif
+# ifdef PANICGATE
+# warning undefining PANICGATE due to option name conflict
+# undef PANICGATE
+# endif
+# ifdef SIMSLEW
+# warning undefining SIMSLEW due to option name conflict
+# undef SIMSLEW
+# endif
+# ifdef JAILDIR
+# warning undefining JAILDIR due to option name conflict
+# undef JAILDIR
+# endif
+# ifdef INTERFACE
+# warning undefining INTERFACE due to option name conflict
+# undef INTERFACE
+# endif
+# ifdef KEYFILE
+# warning undefining KEYFILE due to option name conflict
+# undef KEYFILE
+# endif
+# ifdef LOGFILE
+# warning undefining LOGFILE due to option name conflict
+# undef LOGFILE
+# endif
+# ifdef NOVIRTUALIPS
+# warning undefining NOVIRTUALIPS due to option name conflict
+# undef NOVIRTUALIPS
+# endif
+# ifdef MODIFYMMTIMER
+# warning undefining MODIFYMMTIMER due to option name conflict
+# undef MODIFYMMTIMER
+# endif
+# ifdef NOFORK
+# warning undefining NOFORK due to option name conflict
+# undef NOFORK
+# endif
+# ifdef NICE
+# warning undefining NICE due to option name conflict
+# undef NICE
+# endif
+# ifdef SERVERTIME
+# warning undefining SERVERTIME due to option name conflict
+# undef SERVERTIME
+# endif
+# ifdef PIDFILE
+# warning undefining PIDFILE due to option name conflict
+# undef PIDFILE
+# endif
+# ifdef PRIORITY
+# warning undefining PRIORITY due to option name conflict
+# undef PRIORITY
+# endif
+# ifdef QUIT
+# warning undefining QUIT due to option name conflict
+# undef QUIT
+# endif
+# ifdef PROPAGATIONDELAY
+# warning undefining PROPAGATIONDELAY due to option name conflict
+# undef PROPAGATIONDELAY
+# endif
+# ifdef UPDATEINTERVAL
+# warning undefining UPDATEINTERVAL due to option name conflict
+# undef UPDATEINTERVAL
+# endif
+# ifdef STATSDIR
+# warning undefining STATSDIR due to option name conflict
+# undef STATSDIR
+# endif
+# ifdef ENDSIMTIME
+# warning undefining ENDSIMTIME due to option name conflict
+# undef ENDSIMTIME
+# endif
+# ifdef TRUSTEDKEY
+# warning undefining TRUSTEDKEY due to option name conflict
+# undef TRUSTEDKEY
+# endif
+# ifdef FREQERR
+# warning undefining FREQERR due to option name conflict
+# undef FREQERR
+# endif
+# ifdef WALKNOISE
+# warning undefining WALKNOISE due to option name conflict
+# undef WALKNOISE
+# endif
+# ifdef USER
+# warning undefining USER due to option name conflict
+# undef USER
+# endif
+# ifdef VAR
+# warning undefining VAR due to option name conflict
+# undef VAR
+# endif
+# ifdef DVAR
+# warning undefining DVAR due to option name conflict
+# undef DVAR
+# endif
+# ifdef SLEW
+# warning undefining SLEW due to option name conflict
+# undef SLEW
+# endif
+# ifdef NDELAY
+# warning undefining NDELAY due to option name conflict
+# undef NDELAY
+# endif
+# ifdef PDELAY
+# warning undefining PDELAY due to option name conflict
+# undef PDELAY
+# endif
+#else /* NO_OPTION_NAME_WARNINGS */
+# undef IPV4
+# undef IPV6
+# undef AUTHREQ
+# undef AUTHNOREQ
+# undef BCASTSYNC
+# undef SIMBROADCASTDELAY
+# undef CONFIGFILE
+# undef PHASENOISE
+# undef DEBUG_LEVEL
+# undef SET_DEBUG_LEVEL
+# undef DRIFTFILE
+# undef PANICGATE
+# undef SIMSLEW
+# undef JAILDIR
+# undef INTERFACE
+# undef KEYFILE
+# undef LOGFILE
+# undef NOVIRTUALIPS
+# undef MODIFYMMTIMER
+# undef NOFORK
+# undef NICE
+# undef SERVERTIME
+# undef PIDFILE
+# undef PRIORITY
+# undef QUIT
+# undef PROPAGATIONDELAY
+# undef UPDATEINTERVAL
+# undef STATSDIR
+# undef ENDSIMTIME
+# undef TRUSTEDKEY
+# undef FREQERR
+# undef WALKNOISE
+# undef USER
+# undef VAR
+# undef DVAR
+# undef SLEW
+# undef NDELAY
+# undef PDELAY
+#endif /* NO_OPTION_NAME_WARNINGS */
+
+/*
+ * Interface defines for specific options.
+ */
+#define VALUE_OPT_IPV4 '4'
+#define WHICH_OPT_IPV4 (DESC(IPV4).optActualValue)
+#define WHICH_IDX_IPV4 (DESC(IPV4).optActualIndex)
+#define VALUE_OPT_IPV6 '6'
+#define VALUE_OPT_AUTHREQ 'a'
+#define VALUE_OPT_AUTHNOREQ 'A'
+#define VALUE_OPT_BCASTSYNC 'b'
+#define VALUE_OPT_SIMBROADCASTDELAY 'B'
+#define VALUE_OPT_CONFIGFILE 'c'
+#define VALUE_OPT_PHASENOISE 'C'
+#ifdef DEBUG
+#define VALUE_OPT_DEBUG_LEVEL 'd'
+#endif /* DEBUG */
+#ifdef DEBUG
+#define VALUE_OPT_SET_DEBUG_LEVEL 'D'
+#endif /* DEBUG */
+#define VALUE_OPT_DRIFTFILE 'f'
+#define VALUE_OPT_PANICGATE 'g'
+#define VALUE_OPT_SIMSLEW 'H'
+#define VALUE_OPT_JAILDIR 'i'
+#define VALUE_OPT_INTERFACE 'I'
+#define VALUE_OPT_KEYFILE 'k'
+#define VALUE_OPT_LOGFILE 'l'
+#define VALUE_OPT_NOVIRTUALIPS 'L'
+#ifdef SYS_WINNT
+#define VALUE_OPT_MODIFYMMTIMER 'M'
+#endif /* SYS_WINNT */
+#define VALUE_OPT_NOFORK 'n'
+#define VALUE_OPT_NICE 'N'
+#define VALUE_OPT_SERVERTIME 'O'
+#define VALUE_OPT_PIDFILE 'p'
+#define VALUE_OPT_PRIORITY 'P'
+#define OPT_VALUE_PRIORITY (DESC(PRIORITY).optArg.argInt)
+#define VALUE_OPT_QUIT 'q'
+#define VALUE_OPT_PROPAGATIONDELAY 'r'
+#define VALUE_OPT_UPDATEINTERVAL 'U'
+#define OPT_VALUE_UPDATEINTERVAL (DESC(UPDATEINTERVAL).optArg.argInt)
+#define VALUE_OPT_STATSDIR 's'
+#define VALUE_OPT_ENDSIMTIME 'S'
+#define VALUE_OPT_TRUSTEDKEY 't'
+#define VALUE_OPT_FREQERR 'T'
+#define VALUE_OPT_WALKNOISE 'W'
+#define VALUE_OPT_USER 'u'
+#define VALUE_OPT_VAR 'v'
+#define VALUE_OPT_DVAR 'V'
+#define VALUE_OPT_SLEW 'x'
+#define VALUE_OPT_NDELAY 'Y'
+#define VALUE_OPT_PDELAY 'Z'
+
+#define VALUE_OPT_VERSION 'v'
+#define VALUE_OPT_HELP '?'
+#define VALUE_OPT_MORE_HELP '!'
+#define VALUE_OPT_SAVE_OPTS '>'
+#define VALUE_OPT_LOAD_OPTS '<'
+#define SET_OPT_SAVE_OPTS(a) STMTS( \
+ DESC(SAVE_OPTS).fOptState &= OPTST_PERSISTENT_MASK; \
+ DESC(SAVE_OPTS).fOptState |= OPTST_SET; \
+ DESC(SAVE_OPTS).optArg.argString = (char const*)(a) )
+/*
+ * Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR STMTS( ntpdsimOptions.fOptSet &= ~OPTPROC_ERRSTOP )
+#define ERRSTOP_OPTERR STMTS( ntpdsimOptions.fOptSet |= OPTPROC_ERRSTOP )
+#define RESTART_OPT(n) STMTS( \
+ ntpdsimOptions.curOptIdx = (n); \
+ ntpdsimOptions.pzCurOpt = NULL )
+#define START_OPT RESTART_OPT(1)
+#define USAGE(c) (*ntpdsimOptions.pUsageProc)( &ntpdsimOptions, c )
+/* extracted from /usr/local/gnu/share/autogen/opthead.tpl near line 360 */
+
+/* * * * * *
+ *
+ * Declare the ntpdsim option descriptor.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern tOptions ntpdsimOptions;
+
+#ifndef _
+# if ENABLE_NLS
+# include <stdio.h>
+ static inline char* aoGetsText( char const* pz ) {
+ if (pz == NULL) return NULL;
+ return (char*)gettext( pz );
+ }
+# define _(s) aoGetsText(s)
+# else /* ENABLE_NLS */
+# define _(s) s
+# endif /* ENABLE_NLS */
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_NTPDSIM_OPTS_H_GUARD */
+/* ntpdsim-opts.h ends here */
diff --git a/contrib/ntp/ntpd/ntpdsim-opts.menu b/contrib/ntp/ntpd/ntpdsim-opts.menu
new file mode 100644
index 0000000..c787458
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpdsim-opts.menu
@@ -0,0 +1 @@
+* ntpdsim Invocation:: Invoking ntpdsim
diff --git a/contrib/ntp/ntpd/ntpdsim-opts.texi b/contrib/ntp/ntpd/ntpdsim-opts.texi
new file mode 100644
index 0000000..49b5439
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpdsim-opts.texi
@@ -0,0 +1,509 @@
+@node ntpdsim Invocation
+@section Invoking ntpdsim
+@pindex ntpdsim
+@cindex NTP daemon simulation program
+@ignore
+#
+# EDIT THIS FILE WITH CAUTION (ntpdsim-opts.texi)
+#
+# It has been AutoGen-ed Sunday August 17, 2008 at 05:20:17 AM EDT
+# From the definitions ntpdsim-opts.def
+# and the template file aginfo.tpl
+@end ignore
+This program has no explanation.
+
+
+
+This section was generated by @strong{AutoGen},
+the aginfo template and the option descriptions for the @command{ntpdsim} program. It documents the ntpdsim usage text and option meanings.
+
+This software is released under a specialized copyright license.
+
+@menu
+* ntpdsim usage:: ntpdsim usage help (-?)
+* ntpdsim authnoreq:: authnoreq option (-A)
+* ntpdsim authreq:: authreq option (-a)
+* ntpdsim bcastsync:: bcastsync option (-b)
+* ntpdsim configfile:: configfile option (-c)
+* ntpdsim debug-level:: debug-level option (-d)
+* ntpdsim driftfile:: driftfile option (-f)
+* ntpdsim dvar:: dvar option (-V)
+* ntpdsim endsimtime:: endsimtime option (-S)
+* ntpdsim freqerr:: freqerr option (-T)
+* ntpdsim interface:: interface option (-I)
+* ntpdsim ipv4:: ipv4 option (-4)
+* ntpdsim ipv6:: ipv6 option (-6)
+* ntpdsim jaildir:: jaildir option (-i)
+* ntpdsim keyfile:: keyfile option (-k)
+* ntpdsim logfile:: logfile option (-l)
+* ntpdsim modifymmtimer:: modifymmtimer option (-M)
+* ntpdsim ndelay:: ndelay option (-Y)
+* ntpdsim nice:: nice option (-N)
+* ntpdsim nofork:: nofork option (-n)
+* ntpdsim novirtualips:: novirtualips option (-L)
+* ntpdsim panicgate:: panicgate option (-g)
+* ntpdsim pdelay:: pdelay option (-Z)
+* ntpdsim phasenoise:: phasenoise option (-C)
+* ntpdsim pidfile:: pidfile option (-p)
+* ntpdsim priority:: priority option (-P)
+* ntpdsim propagationdelay:: propagationdelay option (-r)
+* ntpdsim quit:: quit option (-q)
+* ntpdsim servertime:: servertime option (-O)
+* ntpdsim set-debug-level:: set-debug-level option (-D)
+* ntpdsim simbroadcastdelay:: simbroadcastdelay option (-B)
+* ntpdsim simslew:: simslew option (-H)
+* ntpdsim slew:: slew option (-x)
+* ntpdsim statsdir:: statsdir option (-s)
+* ntpdsim trustedkey:: trustedkey option (-t)
+* ntpdsim updateinterval:: updateinterval option (-U)
+* ntpdsim user:: user option (-u)
+* ntpdsim var:: var option (-v)
+* ntpdsim walknoise:: walknoise option (-W)
+@end menu
+
+@node ntpdsim usage
+@subsection ntpdsim usage help (-?)
+@cindex ntpdsim usage
+
+This is the automatically generated usage text for ntpdsim:
+
+@exampleindent 0
+@example
+ntpdsim is unavailable - no --help
+@end example
+@exampleindent 4
+
+@node ntpdsim ipv4
+@subsection ipv4 option (-4)
+@cindex ntpdsim-ipv4
+
+This is the ``force ipv4 dns name resolution'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+is a member of the ipv4 class of options.
+@end itemize
+
+Force DNS resolution of following host names on the command line
+to the IPv4 namespace.
+
+@node ntpdsim ipv6
+@subsection ipv6 option (-6)
+@cindex ntpdsim-ipv6
+
+This is the ``force ipv6 dns name resolution'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+is a member of the ipv4 class of options.
+@end itemize
+
+Force DNS resolution of following host names on the command line
+to the IPv6 namespace.
+
+@node ntpdsim authreq
+@subsection authreq option (-a)
+@cindex ntpdsim-authreq
+
+This is the ``require crypto authentication'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+authnoreq.
+@end itemize
+
+Require cryptographic authentication for broadcast client,
+multicast client and symmetric passive associations.
+This is the default.
+
+@node ntpdsim authnoreq
+@subsection authnoreq option (-A)
+@cindex ntpdsim-authnoreq
+
+This is the ``do not require crypto authentication'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+authreq.
+@end itemize
+
+Do not require cryptographic authentication for broadcast client,
+multicast client and symmetric passive associations.
+This is almost never a good idea.
+
+@node ntpdsim bcastsync
+@subsection bcastsync option (-b)
+@cindex ntpdsim-bcastsync
+
+This is the ``allow us to sync to broadcast servers'' option.
+
+
+@node ntpdsim simbroadcastdelay
+@subsection simbroadcastdelay option (-B)
+@cindex ntpdsim-simbroadcastdelay
+
+This is the ``simulator broadcast delay'' option.
+
+
+@node ntpdsim configfile
+@subsection configfile option (-c)
+@cindex ntpdsim-configfile
+
+This is the ``configuration file name'' option.
+The name and path of the configuration file,
+/etc/ntp.conf
+by default.
+
+@node ntpdsim phasenoise
+@subsection phasenoise option (-C)
+@cindex ntpdsim-phasenoise
+
+This is the ``phase noise level'' option.
+
+
+@node ntpdsim debug-level
+@subsection debug-level option (-d)
+@cindex ntpdsim-debug-level
+
+This is the ``increase output debug message level'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@item
+must be compiled in by defining @code{DEBUG} during the compilation.
+@end itemize
+
+Increase the debugging message output level.
+
+@node ntpdsim set-debug-level
+@subsection set-debug-level option (-D)
+@cindex ntpdsim-set-debug-level
+
+This is the ``set the output debug message level'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@item
+must be compiled in by defining @code{DEBUG} during the compilation.
+@end itemize
+
+Set the output debugging level. Can be supplied multiple times,
+but each overrides the previous value(s).
+
+@node ntpdsim driftfile
+@subsection driftfile option (-f)
+@cindex ntpdsim-driftfile
+
+This is the ``frequency drift file name'' option.
+The name and path of the frequency file,
+/etc/ntp.drift
+by default.
+This is the same operation as the
+driftfile driftfile
+configuration specification in the
+/etc/ntp.conf
+file.
+
+@node ntpdsim panicgate
+@subsection panicgate option (-g)
+@cindex ntpdsim-panicgate
+
+This is the ``allow the first adjustment to be big'' option.
+Normally,
+ntpd
+exits with a message to the system log if the offset exceeds the panic threshold, which is 1000 s by default. This option allows the time to be set to any value without restriction; however, this can happen only once. If the threshold is exceeded after that,
+ntpd
+will exit with a message to the system log. This option can be used with the
+-q
+and
+-x
+options.
+See the
+tinker
+configuration file directive for other options.
+
+@node ntpdsim simslew
+@subsection simslew option (-H)
+@cindex ntpdsim-simslew
+
+This is the ``simuator slew'' option.
+
+
+@node ntpdsim jaildir
+@subsection jaildir option (-i)
+@cindex ntpdsim-jaildir
+
+This is the ``jail directory'' option.
+Chroot the server to the directory
+jaildir
+.
+This option also implies that the server attempts to drop root privileges at startup (otherwise, chroot gives very little additional security), and it is only available if the OS supports to run the server without full root privileges.
+You may need to also specify a
+-u
+option.
+
+@node ntpdsim interface
+@subsection interface option (-I)
+@cindex ntpdsim-interface
+
+This is the ``listen on interface'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@end itemize
+
+
+
+@node ntpdsim keyfile
+@subsection keyfile option (-k)
+@cindex ntpdsim-keyfile
+
+This is the ``path to symmetric keys'' option.
+Specify the name and path of the symmetric key file.
+/etc/ntp.keys
+is the default.
+This is the same operation as the
+keys keyfile
+configuration file directive.
+
+@node ntpdsim logfile
+@subsection logfile option (-l)
+@cindex ntpdsim-logfile
+
+This is the ``path to the log file'' option.
+Specify the name and path of the log file.
+The default is the system log file.
+This is the same operation as the
+logfile logfile
+configuration file directive.
+
+@node ntpdsim novirtualips
+@subsection novirtualips option (-L)
+@cindex ntpdsim-novirtualips
+
+This is the ``do not listen to virtual ips'' option.
+Do not listen to virtual IPs. The default is to listen.
+
+@node ntpdsim modifymmtimer
+@subsection modifymmtimer option (-M)
+@cindex ntpdsim-modifymmtimer
+
+This is the ``modify multimedia timer (windows only)'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{SYS_WINNT} during the compilation.
+@end itemize
+
+Set the Windows Multimedia Timer to highest resolution.
+
+@node ntpdsim nofork
+@subsection nofork option (-n)
+@cindex ntpdsim-nofork
+
+This is the ``do not fork'' option.
+
+
+@node ntpdsim nice
+@subsection nice option (-N)
+@cindex ntpdsim-nice
+
+This is the ``run at high priority'' option.
+To the extent permitted by the operating system, run
+ntpd
+at the highest priority.
+
+@node ntpdsim servertime
+@subsection servertime option (-O)
+@cindex ntpdsim-servertime
+
+This is the ``server time'' option.
+
+
+@node ntpdsim pidfile
+@subsection pidfile option (-p)
+@cindex ntpdsim-pidfile
+
+This is the ``path to the pid file'' option.
+Specify the name and path of the file used to record
+ntpd's
+process ID.
+This is the same operation as the
+pidfile pidfile
+configuration file directive.
+
+@node ntpdsim priority
+@subsection priority option (-P)
+@cindex ntpdsim-priority
+
+This is the ``process priority'' option.
+To the extent permitted by the operating system, run
+ntpd
+at the specified
+sched_setscheduler(SCHED_FIFO)
+priority.
+
+@node ntpdsim quit
+@subsection quit option (-q)
+@cindex ntpdsim-quit
+
+This is the ``set the time and quit'' option.
+ntpd
+will exit just after the first time the clock is set. This behavior mimics that of the
+ntpdate
+program, which is to be retired.
+The
+-g
+and
+-x
+options can be used with this option.
+Note: The kernel time discipline is disabled with this option.
+
+@node ntpdsim propagationdelay
+@subsection propagationdelay option (-r)
+@cindex ntpdsim-propagationdelay
+
+This is the ``broadcast/propagation delay'' option.
+Specify the default propagation delay from the broadcast/multicast server to this client. This is necessary only if the delay cannot be computed automatically by the protocol.
+
+@node ntpdsim updateinterval
+@subsection updateinterval option (-U)
+@cindex ntpdsim-updateinterval
+
+This is the ``interval in seconds between scans for new or dropped interfaces'' option.
+Give the time in seconds between two scans for new or dropped interfaces.
+For systems with routing socket support the scans will be performed shortly after the interface change
+has been detected by the system.
+Use 0 to disable scanning.
+
+@node ntpdsim statsdir
+@subsection statsdir option (-s)
+@cindex ntpdsim-statsdir
+
+This is the ``statistics file location'' option.
+Specify the directory path for files created by the statistics facility.
+This is the same operation as the
+statsdir statsdir
+configuration file directive.
+
+@node ntpdsim endsimtime
+@subsection endsimtime option (-S)
+@cindex ntpdsim-endsimtime
+
+This is the ``simulation end time'' option.
+
+
+@node ntpdsim trustedkey
+@subsection trustedkey option (-t)
+@cindex ntpdsim-trustedkey
+
+This is the ``trusted key number'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@end itemize
+
+Add a key number to the trusted key list.
+
+@node ntpdsim freqerr
+@subsection freqerr option (-T)
+@cindex ntpdsim-freqerr
+
+This is the ``simulation frequency error'' option.
+
+
+@node ntpdsim walknoise
+@subsection walknoise option (-W)
+@cindex ntpdsim-walknoise
+
+This is the ``simulation random walk noise'' option.
+
+
+@node ntpdsim user
+@subsection user option (-u)
+@cindex ntpdsim-user
+
+This is the ``run as userid (or userid:groupid)'' option.
+Specify a user, and optionally a group, to switch to.
+This option is only available if the OS supports to run the server without full root privileges.
+Currently, this option is supported under NetBSD (configure with
+--enable-clockctl
+) and Linux (configure with
+--enable-linuxcaps
+).
+
+@node ntpdsim var
+@subsection var option (-v)
+@cindex ntpdsim-var
+
+This is the ``make arg an ntp variable (rw)'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@end itemize
+
+
+
+@node ntpdsim dvar
+@subsection dvar option (-V)
+@cindex ntpdsim-dvar
+
+This is the ``make arg an ntp variable (rw|def)'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@end itemize
+
+
+
+@node ntpdsim slew
+@subsection slew option (-x)
+@cindex ntpdsim-slew
+
+This is the ``slew up to 600 seconds'' option.
+Normally, the time is slewed if the offset is less than the step threshold, which is 128 ms by default, and stepped if above the threshold.
+This option sets the threshold to 600 s, which is well within the accuracy window to set the clock manually.
+Note: Since the slew rate of typical Unix kernels is limited to 0.5 ms/s, each second of adjustment requires an amortization interval of 2000 s.
+Thus, an adjustment as much as 600 s will take almost 14 days to complete.
+This option can be used with the
+-g
+and
+-q
+options.
+See the
+tinker
+configuration file directive for other options.
+Note: The kernel time discipline is disabled with this option.
+
+@node ntpdsim ndelay
+@subsection ndelay option (-Y)
+@cindex ntpdsim-ndelay
+
+This is the ``simulation network delay'' option.
+
+
+@node ntpdsim pdelay
+@subsection pdelay option (-Z)
+@cindex ntpdsim-pdelay
+
+This is the ``simulation processing delay'' option.
+
diff --git a/contrib/ntp/ntpd/ntpdsim.1 b/contrib/ntp/ntpd/ntpdsim.1
new file mode 100644
index 0000000..2a7ea46
--- /dev/null
+++ b/contrib/ntp/ntpd/ntpdsim.1
@@ -0,0 +1,357 @@
+.TH NTPDSIM 1 2008-08-17 "( 4.2.4p5)" "Programmer's Manual"
+.\" EDIT THIS FILE WITH CAUTION (ntpdsim.1)
+.\"
+.\" It has been AutoGen-ed Sunday August 17, 2008 at 05:20:16 AM EDT
+.\" From the definitions ntpdsim-opts.def
+.\" and the template file agman1.tpl
+.\"
+.SH NAME
+ntpdsim \- NTP daemon simulation program
+.SH SYNOPSIS
+.B ntpdsim
+.\" Mixture of short (flag) options and long options
+.RB [ \-\fIflag\fP " [\fIvalue\fP]]... [" \--\fIopt-name\fP " [[=| ]\fIvalue\fP]]..."
+.PP
+All arguments must be options.
+.SH "DESCRIPTION"
+This manual page documents, briefly, the \fBntpdsim\fP command.
+
+.SH OPTIONS
+.TP
+.BR \-4 ", " \--ipv4
+Force IPv4 DNS name resolution.
+This option is a member of the ipv4 class of options.
+.sp
+Force DNS resolution of following host names on the command line
+to the IPv4 namespace.
+.TP
+.BR \-6 ", " \--ipv6
+Force IPv6 DNS name resolution.
+This option is a member of the ipv4 class of options.
+.sp
+Force DNS resolution of following host names on the command line
+to the IPv6 namespace.
+.TP
+.BR \-a ", " \--authreq
+Require crypto authentication.
+This option must not appear in combination with any of the following options:
+authnoreq.
+.sp
+Require cryptographic authentication for broadcast client,
+multicast client and symmetric passive associations.
+This is the default.
+.TP
+.BR \-A ", " \--authnoreq
+Do not require crypto authentication.
+This option must not appear in combination with any of the following options:
+authreq.
+.sp
+Do not require cryptographic authentication for broadcast client,
+multicast client and symmetric passive associations.
+This is almost never a good idea.
+.TP
+.BR \-b ", " \--bcastsync
+Allow us to sync to broadcast servers.
+.sp
+
+.TP
+.BR \-B " \fIstring\fP, " \--simbroadcastdelay "=" \fIstring\fP
+Simulator broadcast delay.
+.sp
+
+.TP
+.BR \-c " \fIstring\fP, " \--configfile "=" \fIstring\fP
+configuration file name.
+.sp
+The name and path of the configuration file,
+/etc/ntp.conf
+by default.
+.TP
+.BR \-C " \fIstring\fP, " \--phasenoise "=" \fIstring\fP
+Phase noise level.
+.sp
+
+.TP
+.BR \-d ", " \--debug-level
+Increase output debug message level.
+This option may appear an unlimited number of times.
+.sp
+Increase the debugging message output level.
+.TP
+.BR \-D " \fIstring\fP, " \--set-debug-level "=" \fIstring\fP
+Set the output debug message level.
+This option may appear an unlimited number of times.
+.sp
+Set the output debugging level. Can be supplied multiple times,
+but each overrides the previous value(s).
+.TP
+.BR \-f " \fIstring\fP, " \--driftfile "=" \fIstring\fP
+frequency drift file name.
+.sp
+The name and path of the frequency file,
+/etc/ntp.drift
+by default.
+This is the same operation as the
+driftfile driftfile
+configuration specification in the
+/etc/ntp.conf
+file.
+.TP
+.BR \-g ", " \--panicgate
+Allow the first adjustment to be Big.
+.sp
+Normally,
+ntpd
+exits with a message to the system log if the offset exceeds the panic threshold, which is 1000 s by default. This option allows the time to be set to any value without restriction; however, this can happen only once. If the threshold is exceeded after that,
+ntpd
+will exit with a message to the system log. This option can be used with the
+-q
+and
+-x
+options.
+See the
+tinker
+configuration file directive for other options.
+.TP
+.BR \-H " \fIstring\fP, " \--simslew "=" \fIstring\fP
+Simuator slew.
+.sp
+
+.TP
+.BR \-i " \fIstring\fP, " \--jaildir "=" \fIstring\fP
+Jail directory.
+.sp
+Chroot the server to the directory
+jaildir
+.
+This option also implies that the server attempts to drop root privileges at startup (otherwise, chroot gives very little additional security), and it is only available if the OS supports to run the server without full root privileges.
+You may need to also specify a
+-u
+option.
+.TP
+.BR \-I " \fIiface\fP, " \--interface "=" \fIiface\fP
+Listen on interface.
+This option may appear an unlimited number of times.
+.sp
+
+.TP
+.BR \-k " \fIstring\fP, " \--keyfile "=" \fIstring\fP
+path to symmetric keys.
+.sp
+Specify the name and path of the symmetric key file.
+/etc/ntp.keys
+is the default.
+This is the same operation as the
+keys keyfile
+configuration file directive.
+.TP
+.BR \-l " \fIstring\fP, " \--logfile "=" \fIstring\fP
+path to the log file.
+.sp
+Specify the name and path of the log file.
+The default is the system log file.
+This is the same operation as the
+logfile logfile
+configuration file directive.
+.TP
+.BR \-L ", " \--novirtualips
+Do not listen to virtual IPs.
+.sp
+Do not listen to virtual IPs. The default is to listen.
+.TP
+.BR \-M ", " \--modifymmtimer
+Modify Multimedia Timer (Windows only).
+.sp
+Set the Windows Multimedia Timer to highest resolution.
+.TP
+.BR \-n ", " \--nofork
+Do not fork.
+.sp
+
+.TP
+.BR \-N ", " \--nice
+Run at high priority.
+.sp
+To the extent permitted by the operating system, run
+ntpd
+at the highest priority.
+.TP
+.BR \-O " \fIstring\fP, " \--servertime "=" \fIstring\fP
+Server time.
+.sp
+
+.TP
+.BR \-p " \fIstring\fP, " \--pidfile "=" \fIstring\fP
+path to the PID file.
+.sp
+Specify the name and path of the file used to record
+ntpd's
+process ID.
+This is the same operation as the
+pidfile pidfile
+configuration file directive.
+.TP
+.BR \-P " \fInumber\fP, " \--priority "=" \fInumber\fP
+Process priority.
+This option takes an integer number as its argument.
+.sp
+To the extent permitted by the operating system, run
+ntpd
+at the specified
+sched_setscheduler(SCHED_FIFO)
+priority.
+.TP
+.BR \-q ", " \--quit
+Set the time and quit.
+.sp
+ntpd
+will exit just after the first time the clock is set. This behavior mimics that of the
+ntpdate
+program, which is to be retired.
+The
+-g
+and
+-x
+options can be used with this option.
+Note: The kernel time discipline is disabled with this option.
+.TP
+.BR \-r " \fIstring\fP, " \--propagationdelay "=" \fIstring\fP
+Broadcast/propagation delay.
+.sp
+Specify the default propagation delay from the broadcast/multicast server to this client. This is necessary only if the delay cannot be computed automatically by the protocol.
+.TP
+.BR \-U " \fInumber\fP, " \--updateinterval "=" \fInumber\fP
+interval in seconds between scans for new or dropped interfaces.
+This option takes an integer number as its argument.
+.sp
+Give the time in seconds between two scans for new or dropped interfaces.
+For systems with routing socket support the scans will be performed shortly after the interface change
+has been detected by the system.
+Use 0 to disable scanning.
+.TP
+.BR \-s " \fIstring\fP, " \--statsdir "=" \fIstring\fP
+Statistics file location.
+.sp
+Specify the directory path for files created by the statistics facility.
+This is the same operation as the
+statsdir statsdir
+configuration file directive.
+.TP
+.BR \-S " \fIstring\fP, " \--endsimtime "=" \fIstring\fP
+Simulation end time.
+.sp
+
+.TP
+.BR \-t " \fItkey\fP, " \--trustedkey "=" \fItkey\fP
+Trusted key number.
+This option may appear an unlimited number of times.
+.sp
+Add a key number to the trusted key list.
+.TP
+.BR \-T " \fIstring\fP, " \--freqerr "=" \fIstring\fP
+Simulation frequency error.
+.sp
+
+.TP
+.BR \-W " \fIstring\fP, " \--walknoise "=" \fIstring\fP
+Simulation random walk noise.
+.sp
+
+.TP
+.BR \-u " \fIstring\fP, " \--user "=" \fIstring\fP
+Run as userid (or userid:groupid).
+.sp
+Specify a user, and optionally a group, to switch to.
+This option is only available if the OS supports to run the server without full root privileges.
+Currently, this option is supported under NetBSD (configure with
+--enable-clockctl
+) and Linux (configure with
+--enable-linuxcaps
+).
+.TP
+.BR \-v " \fInvar\fP, " \--var "=" \fInvar\fP
+make ARG an ntp variable (RW).
+This option may appear an unlimited number of times.
+.sp
+
+.TP
+.BR \-V " \fIndvar\fP, " \--dvar "=" \fIndvar\fP
+make ARG an ntp variable (RW|DEF).
+This option may appear an unlimited number of times.
+.sp
+
+.TP
+.BR \-x ", " \--slew
+Slew up to 600 seconds.
+.sp
+Normally, the time is slewed if the offset is less than the step threshold, which is 128 ms by default, and stepped if above the threshold.
+This option sets the threshold to 600 s, which is well within the accuracy window to set the clock manually.
+Note: Since the slew rate of typical Unix kernels is limited to 0.5 ms/s, each second of adjustment requires an amortization interval of 2000 s.
+Thus, an adjustment as much as 600 s will take almost 14 days to complete.
+This option can be used with the
+-g
+and
+-q
+options.
+See the
+tinker
+configuration file directive for other options.
+Note: The kernel time discipline is disabled with this option.
+.TP
+.BR \-Y " \fIstring\fP, " \--ndelay "=" \fIstring\fP
+Simulation network delay.
+.sp
+
+.TP
+.BR \-Z " \fIstring\fP, " \--pdelay "=" \fIstring\fP
+Simulation processing delay.
+.sp
+
+.TP
+.BR \-? , " \--help"
+Display usage information and exit.
+.TP
+.BR \-! , " \--more-help"
+Extended usage information passed thru pager.
+.TP
+.BR \-> " [\fIrcfile\fP]," " \--save-opts" "[=\fIrcfile\fP]"
+Save the option state to \fIrcfile\fP. The default is the \fIlast\fP
+configuration file listed in the \fBOPTION PRESETS\fP section, below.
+.TP
+.BR \-< " \fIrcfile\fP," " \--load-opts" "=\fIrcfile\fP," " \--no-load-opts"
+Load options from \fIrcfile\fP.
+The \fIno-load-opts\fP form will disable the loading
+of earlier RC/INI files. \fI--no-load-opts\fP is handled early,
+out of order.
+.TP
+.BR \-v " [{\fIv|c|n\fP}]," " \--version" "[=\fI{v|c|n}\fP]"
+Output version of program and exit. The default mode is `v', a simple
+version. The `c' mode will print copyright information and `n' will
+print the full copyright notice.
+.SH OPTION PRESETS
+Any option that is not marked as \fInot presettable\fP may be preset
+by loading values from configuration ("RC" or ".INI") file(s) and values from
+environment variables named:
+.nf
+ \fBNTPDSIM_<option-name>\fP or \fBNTPDSIM\fP
+.fi
+.aj
+The environmental presets take precedence (are processed later than)
+the configuration files.
+The \fIhomerc\fP files are "\fI$HOME\fP", and "\fI.\fP".
+If any of these are directories, then the file \fI.ntprc\fP
+is searched for within those directories.
+.SH AUTHOR
+David L. Mills and/or others
+.br
+Please send bug reports to: http://bugs.ntp.isc.org, bugs@ntp.org
+
+.PP
+.nf
+.na
+see html/copyright.html
+.fi
+.ad
+.PP
+This manual page was \fIAutoGen\fP-erated from the \fBntpdsim\fP
+option definitions.
diff --git a/contrib/ntp/ntpd/ntpsim.c b/contrib/ntp/ntpd/ntpsim.c
index 3fbae17..d5ed587 100644
--- a/contrib/ntp/ntpd/ntpsim.c
+++ b/contrib/ntp/ntpd/ntpsim.c
@@ -4,6 +4,7 @@
*/
#include "ntpd.h"
#include "ntpsim.h"
+#include "ntpdsim-opts.h"
/*
* Defines...
@@ -65,7 +66,6 @@ ntpsim(
init_mon();
init_timer();
init_lib();
- init_random();
init_request();
init_control();
init_peer();
@@ -73,14 +73,23 @@ ntpsim(
init_io();
init_loopfilter();
mon_start(MON_OFF);
+
+ {
+ int optct = optionProcess(&ntpdsimOptions, argc, argv);
+ argc -= optct;
+ argv += optct;
+ }
+
getconfig(argc, argv);
+
initializing = 0;
+ loop_config(LOOP_DRIFTCOMP, old_drift / 1e6);
/*
* Watch out here, we want the real time, not the silly stuff.
*/
gettimeofday(&seed, NULL);
- srand48(seed.tv_usec);
+ ntp_srandom(seed.tv_usec);
/*
* Push a beep and timer interrupt on the queue
@@ -202,11 +211,12 @@ ntptmr(
/*
* Process buffers received. They had better be in order by
- * receive timestamp.
+ * receive timestamp. Note that there are no additional buffers
+ * in the current implementation of ntpsim.
*/
while (n->rbuflist != NULL) {
rbuf = n->rbuflist;
- n->rbuflist = rbuf->next;
+ n->rbuflist = NULL;
(rbuf->receiver)(rbuf);
free(rbuf);
}
@@ -270,7 +280,6 @@ int srvr_rply(
if ((rbuf.dstadr = malloc(sizeof(struct interface))) == NULL)
abortsim("server-malloc");
memcpy(rbuf.dstadr, inter, sizeof(struct interface));
- rbuf.next = NULL;
/*
* Very carefully predict the time of arrival for the received
@@ -306,20 +315,14 @@ netpkt(
memcpy(rbuf, &e.rcv_buf, sizeof(struct recvbuf));
rbuf->receiver = receive;
DTOLFP(n->ntp_time, &rbuf->recv_time);
- rbuf->next = NULL;
obuf = n->rbuflist;
/*
* In the present incarnation, no more than one buffer can be on
- * the queue; however, we sniff the queue anyway as a hint for
- * further development.
+ * the queue;
*/
if (obuf == NULL) {
n->rbuflist = rbuf;
- } else {
- while (obuf->next != NULL)
- obuf = obuf->next;
- obuf->next = rbuf;
}
}
diff --git a/contrib/ntp/ntpd/ppsapi_timepps.h b/contrib/ntp/ntpd/ppsapi_timepps.h
new file mode 100644
index 0000000..8adaf62
--- /dev/null
+++ b/contrib/ntp/ntpd/ppsapi_timepps.h
@@ -0,0 +1,26 @@
+/* ppsapi_timepps.h */
+
+/*
+ * This logic first tries to get the timepps.h file from a standard
+ * location, and then from our include/ subdirectory.
+ */
+
+#ifdef HAVE_TIMEPPS_H
+# include <timepps.h>
+#else
+# ifdef HAVE_SYS_TIMEPPS_H
+# include <sys/timepps.h>
+# else
+# ifdef HAVE_CIOGETEV
+# include "timepps-SunOS.h"
+# else
+# ifdef HAVE_TIOCGPPSEV
+# include "timepps-Solaris.h"
+# else
+# ifdef TIOCDCDTIMESTAMP
+# include "timepps-SCO.h"
+# endif
+# endif
+# endif
+# endif
+#endif
diff --git a/contrib/ntp/ntpd/refclock_acts.c b/contrib/ntp/ntpd/refclock_acts.c
index d26ceed..57f2ca7 100644
--- a/contrib/ntp/ntpd/refclock_acts.c
+++ b/contrib/ntp/ntpd/refclock_acts.c
@@ -1,8 +1,7 @@
/*
- * refclock_acts - clock driver for the NIST/PTB Automated Computer Time
- * Service aka Amalgamated Containerized Trash Service (ACTS)
+ * refclock_acts - clock driver for the NIST/USNO/PTB/NPL Computer Time
+ * Services
*/
-
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@@ -22,342 +21,190 @@
# include <sys/ioctl.h>
#endif /* HAVE_SYS_IOCTL_H */
-/* MUST BE AFTER LAST #include <config.h> !!! */
-
-#if defined(CLOCK_ACTS) && defined(CLOCK_PTBACTS)
-# if defined(KEEPPTBACTS)
-# undef CLOCK_ACTS
-# else /* not KEEPPTBACTS */
-# undef CLOCK_PTBACTS
-# endif /* not KEEPPTBACTS */
-#endif /* CLOCK_ACTS && CLOCK_PTBACTS */
-
/*
- * This driver supports the NIST Automated Computer Time Service (ACTS).
- * It periodically dials a prespecified telephone number, receives the
- * NIST timecode data and calculates the local clock correction. It is
- * designed primarily for use as a backup when neither a radio clock nor
- * connectivity to Internet time servers is available. For the best
- * accuracy, the individual telephone line/modem delay needs to be
- * calibrated using outside sources.
- *
- * The ACTS is located at NIST Boulder, CO, telephone 303 494 4774. A
- * toll call from a residence telephone in Newark, DE, costs between 14
- * and 27 cents, depending on time of day, and from a campus telephone
- * between 3 and 4 cents, although it is not clear what carrier and time
- * of day discounts apply in this case. The modem dial string will
- * differ depending on local telephone configuration, etc., and is
- * specified by the phone command in the configuration file. The
- * argument to this command is an AT command for a Hayes compatible
- * modem.
- *
- * The accuracy produced by this driver should be in the range of a
- * millisecond or two, but may need correction due to the delay
- * characteristics of the individual modem involved. For undetermined
- * reasons, some modems work with the ACTS echo-delay measurement scheme
- * and some don't. This driver tries to do the best it can with what it
- * gets. Initial experiments with a Practical Peripherals 9600SA modem
- * here in Delaware suggest an accuracy of a millisecond or two can be
- * achieved without the scheme by using a fudge time1 value of 65.0 ms.
- * In either case, the dispersion for a single call involving ten
- * samples is about 1.3 ms.
- *
- * The driver can operate in either of three modes, as determined by
- * the mode parameter in the server configuration command. In mode 0
- * (automatic) the driver operates continuously at intervals depending
- * on the prediction error, as measured by the driver, usually in the
- * order of several hours. In mode 1 (backup) the driver is enabled in
- * automatic mode only when no other source of synchronization is
- * available and when more than MAXOUTAGE (3600 s) have elapsed since
- * last synchronized by other sources. In mode 2 (manual) the driver
- * operates only when enabled using a fudge flags switch, as described
- * below.
- *
- * For reliable call management, this driver requires a 1200-bps modem
- * with a Hayes-compatible command set and control over the modem data
- * terminal ready (DTR) control line. Present restrictions require the
- * use of a POSIX-compatible programming interface, although other
- * interfaces may work as well. The modem setup string is hard-coded in
- * the driver and may require changes for nonstandard modems or special
- * circumstances.
- *
- * Further information can be found in the README.refclock file in the
- * ntp - Version 3 distribution.
- *
- * Fudge Factors
- *
- * Ordinarily, the propagation time correction is computed automatically
- * by ACTS and the driver. When this is not possible or erratic due to
- * individual modem characteristics, the fudge flag2 switch should be
- * set to disable the ACTS echo-delay scheme. In any case, the fudge
- * time1 parameter can be used to adjust the propagation delay as
- * required.
- *
- * The ACTS call interval is determined in one of three ways. In manual
- * mode a call is initiated by setting fudge flag1 using ntpdc, either
- * manually or via a cron job. In AUTO mode this flag is set by the peer
- * timer, which is controlled by the sys_poll variable in response to
- * measured errors. In backup mode the driver is ordinarily asleep, but
- * awakes (in auto mode) if all other synchronization sources are lost.
- * In either auto or backup modes, the call interval increases as long
- * as the measured errors do not exceed the value of the fudge time2
- * parameter.
- *
- * When the fudge flag1 is set, the ACTS calling program is activated.
- * This program dials each number listed in the phones command of the
- * configuration file in turn. If a call attempt fails, the next number
- * in the list is dialed. The fudge flag1 and counter are reset and the
- * calling program terminated if (a) a valid clock update has been
- * determined, (b) no more numbers remain in the list, (c) a device
- * fault or timeout occurs or (d) fudge flag1 is reset manually using
- * ntpdc.
- *
- * In automatic and backup modes, the driver determines the call
- * interval using a procedure depending on the measured prediction
- * error and the fudge time2 parameter. If the error exceeds time2 for a
- * number of times depending on the current interval, the interval is
- * decreased, but not less than about 1000 s. If the error is less than
- * time2 for some number of times, the interval is increased, but not
- * more than about 18 h. With the default value of zero for fudge time2,
- * the interval will increase from 1000 s to the 4000-8000-s range, in
- * which the expected accuracy should be in the 1-2-ms range. Setting
- * fudge time2 to a large value, like 0.1 s, may result in errors of
- * that order, but increase the call interval to the maximum. The exact
- * value for each configuration will depend on the modem and operating
- * system involved, so some experimentation may be necessary.
+ * This driver supports the US (NIST, USNO) and European (PTB, NPL,
+ * etc.) modem time services, as well as Spectracom GPS and WWVB
+ * receivers connected via a modem. The driver periodically dials a
+ * number from a telephone list, receives the timecode data and
+ * calculates the local clock correction. It is designed primarily for
+ * use as backup when neither a radio clock nor connectivity to Internet
+ * time servers is available.
+ *
+ * This driver requires a modem with a Hayes-compatible command set and
+ * control over the modem data terminal ready (DTR) control line. The
+ * modem setup string is hard-coded in the driver and may require
+ * changes for nonstandard modems or special circumstances. For reasons
+ * unrelated to this driver, the data set ready (DSR) control line
+ * should not be set when this driver is first started.
+ *
+ * The calling program is initiated by setting fudge flag1, either
+ * manually or automatically. When flag1 is set, the calling program
+ * dials the first number in the phone command of the configuration
+ * file. If that call fails, the calling program dials the second number
+ * and so on. The number is specified by the Hayes ATDT prefix followed
+ * by the number itself, including the prefix and long-distance digits
+ * and delay code, if necessary. The flag1 is reset and the calling
+ * program terminated if (a) a valid clock update has been determined,
+ * (b) no more numbers remain in the list, (c) a device fault or timeout
+ * occurs or (d) fudge flag1 is reset manually.
+ *
+ * The driver is transparent to each of the modem time services and
+ * Spectracom radios. It selects the parsing algorithm depending on the
+ * message length. There is some hazard should the message be corrupted.
+ * However, the data format is checked carefully and only if all checks
+ * succeed is the message accepted. Corrupted lines are discarded
+ * without complaint.
+ *
+ * Fudge controls
+ *
+ * flag1 force a call in manual mode
+ * flag2 enable port locking (not verified)
+ * flag3 no modem; port is directly connected to device
+ * flag4 not used
+ *
+ * time1 offset adjustment (s)
+ *
+ * Ordinarily, the serial port is connected to a modem; however, it can
+ * be connected directly to a device or another computer for testing and
+ * calibration. In this case set fudge flag3 and the driver will send a
+ * single character 'T' at each poll event. In principle, fudge flag2
+ * enables port locking, allowing the modem to be shared when not in use
+ * by this driver. At least on Solaris with the current NTP I/O
+ * routines, this results only in lots of ugly error messages.
*/
-
/*
- * DESCRIPTION OF THE AUTOMATED COMPUTER TELEPHONE SERVICE (ACTS)
- * (reformatted from ACTS on-line computer help information)
+ * National Institute of Science and Technology (NIST)
*
- * The following is transmitted (at 1200 baud) following completion of
- * the telephone connection.
+ * Phone: (303) 494-4774 (Boulder, CO); (808) 335-4721 (Hawaii)
+ *
+ * Data Format
*
* National Institute of Standards and Technology
* Telephone Time Service, Generator 3B
* Enter question mark "?" for HELP
* D L D
* MJD YR MO DA H M S ST S UT1 msADV <OTM>
- * 47999 90-04-18 21:39:15 50 0 +.1 045.0 UTC(NIST) *
- * 47999 90-04-18 21:39:16 50 0 +.1 045.0 UTC(NIST) *
- * 47999 90-04-18 21:39:17 50 0 +.1 045.0 UTC(NIST) *
- * 47999 90-04-18 21:39:18 50 0 +.1 045.0 UTC(NIST) *
- * 47999 90-04-18 21:39:19 50 0 +.1 037.6 UTC(NIST) #
- * 47999 90-04-18 21:39:20 50 0 +.1 037.6 UTC(NIST) #
- * etc..etc...etc.......
- *
- * UTC = Universal Time Coordinated, the official world time referred to
- * the zero meridian.
+ * 47999 90-04-18 21:39:15 50 0 +.1 045.0 UTC(NIST) *<CR><LF>
+ * ...
*
- * DST Daylight savings time characters, valid for the continental
- * U.S., are set as follows:
+ * MJD, DST, DUT1 and UTC are not used by this driver. The "*" or "#" is
+ * the on-time markers echoed by the driver and used by NIST to measure
+ * and correct for the propagation delay.
*
- * 00 We are on standard time (ST).
- * 01-49 Now on DST, go to ST when your local time is 2:00 am and
- * the count is 01. The count is decremented daily at 00
- * (UTC).
- * 50 We are on DST.
- * 51-99 Now on ST, go to DST when your local time is 2:00 am and
- * the count is 51. The count is decremented daily at 00
- * (UTC).
+ * US Naval Observatory (USNO)
*
- * The two DST characters provide up to 48 days advance notice of a
- * change in time. The count remains at 00 or 50 at other times.
+ * Phone: (202) 762-1594 (Washington, DC); (719) 567-6742 (Boulder, CO)
*
- * LS Leap second flag is set to "1" to indicate that a leap second is
- * to be added as 23:59:60 (UTC) on the last day of the current UTC
- * month. The LS flag will be reset to "0" starting with 23:59:60
- * (UTC). The flag will remain on for the entire month before the
- * second is added. Leap seconds are added as needed at the end of
- * any month. Usually June and/or December are chosen.
+ * Data Format (two lines, repeating at one-second intervals)
*
- * The leap second flag will be set to a "2" to indicate that a
- * leap second is to be deleted at 23:59:58--00:00:00 on the last
- * day of the current month. (This latter provision is included per
- * international recommendation, however it is not likely to be
- * required in the near future.)
+ * jjjjj nnn hhmmss UTC<CR><LF>
+ * *<CR><LF>
*
- * DUT1 Approximate difference between earth rotation time (UT1) and
- * UTC, in steps of 0.1 second: DUT1 = UT1 - UTC.
+ * jjjjj modified Julian day number (not used)
+ * nnn day of year
+ * hhmmss second of day
+ * * on-time marker for previous timecode
+ * ...
*
- * MJD Modified Julian Date, often used to tag certain scientific data.
+ * USNO does not correct for the propagation delay. A fudge time1 of
+ * about .06 s is advisable.
*
- * The full time format is sent at 1200 baud, 8 bit, 1 stop, no parity.
- * The format at 300 Baud is also 8 bit, 1 stop, no parity. At 300 Baud
- * the MJD and DUT1 values are deleted and the time is transmitted only
- * on even seconds.
+ * European Services (PTB, NPL, etc.)
*
- * Maximum on line time will be 56 seconds. If all lines are busy at any
- * time, the oldest call will be terminated if it has been on line more
- * than 28 seconds, otherwise, the call that first reaches 28 seconds
- * will be terminated.
+ * PTB: +49 531 512038 (Germany)
+ * NPL: 0906 851 6333 (UK only)
*
- * Current time is valid at the "on-time" marker (OTM), either "*" or
- * "#". The nominal on-time marker (*) will be transmitted 45 ms early
- * to account for the 8 ms required to send 1 character at 1200 Baud,
- * plus an additional 7 ms for delay from NIST to the user, and
- * approximately 30 ms "scrambler" delay inherent in 1200 Baud modems.
- * If the caller echoes all characters, NIST will measure the round trip
- * delay and advance the on-time marker so that the midpoint of the stop
- * bit arrives at the user on time. The amount of msADV will reflect the
- * actual required advance in milliseconds and the OTM will be a "#".
+ * Data format (see the documentation for phone numbers and formats.)
*
- * (The NIST system requires 4 or 5 consecutive delay measurements which
- * are consistent before switching from "*" to "#". If the user has a
- * 1200 Baud modem with the same internal delay as that used by NIST,
- * then the "#" OTM should arrive at the user within +-2 ms of the
- * correct time.
+ * 1995-01-23 20:58:51 MEZ 10402303260219950123195849740+40000500<CR><LF>
*
- * However, NIST has studied different brands of 1200 Baud modems and
- * found internal delays from 24 ms to 40 ms and offsets of the "#" OTM
- * of +-10 ms. For many computer users, +-10 ms accuracy should be more
- * than adequate since many computer internal clocks can only be set
- * with granularity of 20 to 50 ms. In any case, the repeatability of
- * the offset for the "#" OTM should be within +-2 ms, if the dial-up
- * path is reciprocal and the user doesn't change the brand or model of
- * modem used.
+ * Spectracom GPS and WWVB Receivers
*
- * This should be true even if the dial-up path on one day is a land-
- * line of less than 40 ms (one way) and on the next day is a satellite
- * link of 260 to 300 ms. In the rare event that the path is one way by
- * satellite and the other way by land line with a round trip
- * measurement in the range of 90 to 260 ms, the OTM will remain a "*"
- * indicating 45 ms advance.
- *
- * For user comments write:
- * NIST-ACTS
- * Time and Frequency Division
- * Mail Stop 847
- * 325 Broadway
- * Boulder, CO 80303
- *
- * Software for setting (PC)DOS compatable machines is available on a
- * 360-kbyte diskette for $35.00 from: NIST Office of Standard Reference
- * Materials B311-Chemistry Bldg, NIST, Gaithersburg, MD, 20899, (301)
- * 975-6776
- *
- * PTB timecode service (+49 531 512038)
- * The Physikalisch-Technische Bundesanstalt (Germany)
- * also supports a modem time service
- * as the data formats are very similar this driver can also be compiled for
- * utilizing the PTB time code service.
- *
- * Data format
- * 0000000000111111111122222222223333333333444444444455555555556666666666777777777 7
- * 0123456789012345678901234567890123456789012345678901234567890123456789012345678 9
- * 1995-01-23 20:58:51 MEZ 10402303260219950123195849740+40000500 *
- * A B C D EF G H IJ K L M N O P Q R S T U V W XY Z<CR><LF>
- *
- * A year
- * B month
- * C day
- * D hour
- * E : normally
- * A for DST to ST switch first hour
- * B for DST to ST switch second hour if not marked in H
- * F minute
- * G second
- * H timezone
- * I day of week
- * J week of year
- * K day of year
- * L month for next ST/DST changes
- * M day
- * N hour
- * O UTC year
- * P UTC month
- * Q UTC day
- * R UTC hour
- * S UTC minute
- * T modified julian day (MJD)
- * U DUT1
- * V direction and month if leap second
- * W signal delay (assumed/measured)
- * X sequence number for additional text line in Y
- * Y additional text
- * Z on time marker (* - assumed delay / # measured delay)
- * <CR>!<LF> ! is second change !
- *
- * This format is also used by the National Physical Laboratory (NPL)'s
- * TRUETIME service in the UK. In this case the timezone field is
- * UTC+0 or UTC+1 for standard and daylight saving time. The phone
- * number for this service (a premium rate number) is 0891 516 333.
- * It is not clear whether the echo check is implemented.
- *
- * For more detail, see http://www.npl.co.uk/npl/cetm/taf/truetime.html.
+ * If a modem is connected to a Spectracom receiver, this driver will
+ * call it up and retrieve the time in one of two formats. As this
+ * driver does not send anything, the radio will have to either be
+ * configured in continuous mode or be polled by another local driver.
*/
-
/*
* Interface definitions
*/
-#define SPEED232 B1200 /* uart speed (1200 cowardly baud) */
+#define DEVICE "/dev/acts%d" /* device name and unit */
+#define SPEED232 B9600 /* uart speed (9600 baud) */
#define PRECISION (-10) /* precision assumed (about 1 ms) */
-#ifdef CLOCK_ACTS
-# define REFID "ACTS" /* reference ID */
-# define DESCRIPTION "NIST Automated Computer Time Service" /* WRU */
-# define LENCODE 50 /* length of valid timecode string */
-# define DEVICE "/dev/acts%d" /* device name and unit */
-# define REF_ENTRY refclock_acts
-#else /* not CLOCK_ACTS */
-# define REFID "TPTB" /* reference ID */
-# define DESCRIPTION "PTB Automated Computer Time Service"
-# define LENCODE 78 /* length of valid timecode string */
-# define DEVICE "/dev/ptb%d" /* device name and unit */
-# define REF_ENTRY refclock_ptb
-#endif /* not CLOCK_ACTS */
+#define LOCKFILE "/var/spool/locks/LCK..cua%d"
+#define DESCRIPTION "Automated Computer Time Service" /* WRU */
+#define REFID "NONE" /* default reference ID */
+#define MSGCNT 20 /* max message count */
+#define SMAX 256 /* max clockstats line length */
+
+/*
+ * Calling program modes
+ */
#define MODE_AUTO 0 /* automatic mode */
#define MODE_BACKUP 1 /* backup mode */
#define MODE_MANUAL 2 /* manual mode */
-#define MSGCNT 10 /* we need this many ACTS messages */
-#define SMAX 80 /* max token string length */
-#define ACTS_MINPOLL 10 /* log2 min poll interval (1024 s) */
-#define ACTS_MAXPOLL 18 /* log2 max poll interval (16384 s) */
-#define MAXOUTAGE 3600 /* max before ACTS kicks in (s) */
+/*
+ * Service identifiers.
+ */
+#define REFACTS "NIST" /* NIST reference ID */
+#define LENACTS 50 /* NIST format */
+#define REFUSNO "USNO" /* USNO reference ID */
+#define LENUSNO 20 /* USNO */
+#define REFPTB "PTB\0" /* PTB/NPL reference ID */
+#define LENPTB 78 /* PTB/NPL format */
+#define REFWWVB "WWVB" /* WWVB reference ID */
+#define LENWWVB0 22 /* WWVB format 0 */
+#define LENWWVB2 24 /* WWVB format 2 */
+#define LF 0x0a /* ASCII LF */
/*
- * Modem control strings. These may have to be changed for some modems.
+ * Modem setup strings. These may have to be changed for some modems.
*
* AT command prefix
- * B1 initiate call negotiation using Bell 212A
- * &C1 enable carrier detect
+ * B1 US answer tone
+ * &C0 disable carrier detect
* &D2 hang up and return to command mode on DTR transition
* E0 modem command echo disabled
* l1 set modem speaker volume to low level
- * M1 speaker enabled untill carrier detect
+ * M1 speaker enabled until carrier detect
* Q0 return result codes
* V1 return result codes as English words
*/
-#define MODEM_SETUP "ATB1&C1&D2E0L1M1Q0V1" /* modem setup */
-#define MODEM_HANGUP "ATH" /* modem disconnect */
+#define MODEM_SETUP "ATB1&C0&D2E0L1M1Q0V1\r" /* modem setup */
+#define MODEM_HANGUP "ATH\r" /* modem disconnect */
/*
- * Timeouts
+ * Timeouts (all in seconds)
*/
-#define IDLE 60 /* idle timeout (s) */
-#define WAIT 2 /* wait timeout (s) */
-#define ANSWER 30 /* answer timeout (s) */
-#define CONNECT 10 /* connect timeout (s) */
-#define TIMECODE 15 /* timecode timeout (s) */
+#define SETUP 3 /* setup timeout */
+#define DTR 1 /* DTR timeout */
+#define ANSWER 60 /* answer timeout */
+#define CONNECT 20 /* first valid message timeout */
+#define TIMECODE 30 /* all valid messages timeout */
/*
- * Tables to compute the ddd of year form icky dd/mm timecode. Viva la
- * leap.
+ * State machine codes
*/
-static int day1tab[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
-static int day2tab[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
+#define S_IDLE 0 /* wait for poll */
+#define S_OK 1 /* wait for modem setup */
+#define S_DTR 2 /* wait for modem DTR */
+#define S_CONNECT 3 /* wait for answer*/
+#define S_FIRST 4 /* wait for first valid message */
+#define S_MSG 5 /* wait for all messages */
+#define S_CLOSE 6 /* wait after sending disconnect */
/*
* Unit control structure
*/
struct actsunit {
- int pollcnt; /* poll message counter */
+ int unit; /* unit number */
int state; /* the first one was Delaware */
- int run; /* call program run switch */
- int msgcnt; /* count of ACTS messages received */
- long redial; /* interval to next automatic call */
- double msADV; /* millisecond advance of last message */
+ int timer; /* timeout counter */
+ int retry; /* retry index */
+ int msgcnt; /* count of messages received */
+ l_fp tstamp; /* on-time timestamp */
+ char *bufptr; /* buffer pointer */
};
/*
@@ -366,77 +213,54 @@ struct actsunit {
static int acts_start P((int, struct peer *));
static void acts_shutdown P((int, struct peer *));
static void acts_receive P((struct recvbuf *));
+static void acts_message P((struct peer *));
+static void acts_timecode P((struct peer *, char *));
static void acts_poll P((int, struct peer *));
static void acts_timeout P((struct peer *));
static void acts_disc P((struct peer *));
-static int acts_write P((struct peer *, const char *));
+static void acts_timer P((int, struct peer *));
/*
* Transfer vector (conditional structure name)
*/
-struct refclock REF_ENTRY = {
+struct refclock refclock_acts = {
acts_start, /* start up driver */
acts_shutdown, /* shut down driver */
acts_poll, /* transmit poll message */
- noentry, /* not used (old acts_control) */
- noentry, /* not used (old acts_init) */
- noentry, /* not used (old acts_buginfo) */
- NOFLAGS /* not used */
+ noentry, /* not used */
+ noentry, /* not used */
+ noentry, /* not used */
+ acts_timer /* housekeeping timer */
};
+struct refclock refclock_ptb;
/*
- * acts_start - open the devices and initialize data for processing
+ * Initialize data for processing
*/
-
static int
acts_start (
- int unit,
+ int unit,
struct peer *peer
)
{
- register struct actsunit *up;
+ struct actsunit *up;
struct refclockproc *pp;
- int fd;
- char device[20];
- int dtr = TIOCM_DTR;
-
- /*
- * Open serial port. Use ACTS line discipline, if available. It
- * pumps a timestamp into the data stream at every on-time
- * character '*' found. Note: the port must have modem control
- * or deep pockets for the phone bill. HP-UX 9.03 users should
- * have very deep pockets.
- */
- (void)sprintf(device, DEVICE, unit);
- if (!(fd = refclock_open(device, SPEED232, LDISC_ACTS)))
- return (0);
- if (ioctl(fd, TIOCMBIS, (char *)&dtr) < 0) {
- msyslog(LOG_ERR, "clock %s ACTS no modem control",
- ntoa(&peer->srcadr));
- return (0);
- }
/*
* Allocate and initialize unit structure
*/
- if (!(up = (struct actsunit *)
- emalloc(sizeof(struct actsunit)))) {
- (void) close(fd);
+ up = emalloc(sizeof(struct actsunit));
+ if (up == NULL)
return (0);
- }
- memset((char *)up, 0, sizeof(struct actsunit));
+
+ memset(up, 0, sizeof(struct actsunit));
+ up->unit = unit;
pp = peer->procptr;
+ pp->unitptr = (caddr_t)up;
pp->io.clock_recv = acts_receive;
pp->io.srcclock = (caddr_t)peer;
pp->io.datalen = 0;
- pp->io.fd = fd;
- if (!io_addclock(&pp->io)) {
- (void) close(fd);
- free(up);
- return (0);
- }
- pp->unitptr = (caddr_t)up;
/*
* Initialize miscellaneous variables
@@ -444,24 +268,9 @@ acts_start (
peer->precision = PRECISION;
pp->clockdesc = DESCRIPTION;
memcpy((char *)&pp->refid, REFID, 4);
- peer->minpoll = ACTS_MINPOLL;
- peer->maxpoll = ACTS_MAXPOLL;
peer->sstclktype = CTL_SST_TS_TELEPHONE;
-
- /*
- * Initialize modem and kill DTR. We skedaddle if this comes
- * bum.
- */
- if (!acts_write(peer, MODEM_SETUP)) {
- (void) close(fd);
- free(up);
- return (0);
- }
-
- /*
- * Set up the driver timeout
- */
- peer->nextdate = current_time + WAIT;
+ peer->flags &= ~FLAG_FIXPOLL;
+ up->bufptr = pp->a_lastcode;
return (1);
}
@@ -471,16 +280,18 @@ acts_start (
*/
static void
acts_shutdown (
- int unit,
+ int unit,
struct peer *peer
)
{
- register struct actsunit *up;
+ struct actsunit *up;
struct refclockproc *pp;
+ /*
+ * Warning: do this only when a call is not in progress.
+ */
pp = peer->procptr;
up = (struct actsunit *)pp->unitptr;
- io_closeclock(&pp->io);
free(up);
}
@@ -493,254 +304,326 @@ acts_receive (
struct recvbuf *rbufp
)
{
- register struct actsunit *up;
+ struct actsunit *up;
struct refclockproc *pp;
struct peer *peer;
- char str[SMAX];
- int i;
- char hangup = '%'; /* ACTS hangup */
- int day; /* day of the month */
- int month; /* month of the year */
- u_long mjd; /* Modified Julian Day */
- double dut1; /* DUT adjustment */
- double msADV; /* ACTS transmit advance (ms) */
- char flag; /* calibration flag */
-#ifndef CLOCK_PTBACTS
- char utc[10]; /* this is NIST and you're not */
- u_int dst; /* daylight/standard time indicator */
- u_int leap; /* leap-second indicator */
-#else
- char leapdir; /* leap direction */
- u_int leapmonth; /* month of leap */
-#endif
+ char tbuf[BMAX];
+ char *tptr;
+
/*
- * Initialize pointers and read the timecode and timestamp. If
- * the OK modem status code, leave it where folks can find it.
+ * Initialize pointers and read the timecode and timestamp. Note
+ * we are in raw mode and victim of whatever the terminal
+ * interface kicks up; so, we have to reassemble messages from
+ * arbitrary fragments. Capture the timecode at the beginning of
+ * the message and at the '*' and '#' on-time characters.
*/
peer = (struct peer *)rbufp->recv_srcclock;
pp = peer->procptr;
up = (struct actsunit *)pp->unitptr;
- pp->lencode = refclock_gtlin(rbufp, pp->a_lastcode, BMAX,
- &pp->lastrec);
- if (pp->lencode == 0) {
- if (strcmp(pp->a_lastcode, "OK") == 0)
- pp->lencode = 2;
- return;
+ pp->lencode = refclock_gtraw(rbufp, tbuf, BMAX - (up->bufptr -
+ pp->a_lastcode), &pp->lastrec);
+ for (tptr = tbuf; *tptr != '\0'; tptr++) {
+ if (*tptr == LF) {
+ if (up->bufptr == pp->a_lastcode) {
+ up->tstamp = pp->lastrec;
+ continue;
+
+ } else {
+ *up->bufptr = '\0';
+ acts_message(peer);
+ up->bufptr = pp->a_lastcode;
+ }
+ } else if (!iscntrl(*tptr)) {
+ *up->bufptr++ = *tptr;
+ if (*tptr == '*' || *tptr == '#') {
+ up->tstamp = pp->lastrec;
+ write(pp->io.fd, tptr, 1);
+ }
+ }
}
+}
+
+
+/*
+ * acts_message - process message
+ */
+void
+acts_message(
+ struct peer *peer
+ )
+{
+ struct actsunit *up;
+ struct refclockproc *pp;
+ int dtr = TIOCM_DTR;
+ char tbuf[SMAX];
#ifdef DEBUG
- if (debug)
- printf("acts: state %d timecode %d %*s\n", up->state,
- pp->lencode, pp->lencode, pp->a_lastcode);
+ u_int modem;
#endif
- switch (up->state) {
-
- case 0:
+ /*
+ * What to do depends on the state and the first token in the
+ * message. A NO token sends the message to the clockstats.
+ */
+ pp = peer->procptr;
+ up = (struct actsunit *)pp->unitptr;
+#ifdef DEBUG
+ ioctl(pp->io.fd, TIOCMGET, (char *)&modem);
+ sprintf(tbuf, "acts: %04x (%d %d) %lu %s", modem, up->state,
+ up->timer, strlen(pp->a_lastcode), pp->a_lastcode);
+ if (debug)
+ printf("%s\n", tbuf);
+#endif
+ strncpy(tbuf, pp->a_lastcode, SMAX);
+ strtok(tbuf, " ");
+ if (strcmp(tbuf, "NO") == 0)
+ record_clock_stats(&peer->srcadr, pp->a_lastcode);
+ switch(up->state) {
- /*
- * State 0. We are not expecting anything. Probably
- * modem disconnect noise. Go back to sleep.
- */
+ /*
+ * We are waiting for the OK response to the modem setup
+ * command. When this happens, raise DTR and dial the number
+ * followed by \r.
+ */
+ case S_OK:
+ if (strcmp(tbuf, "OK") != 0) {
+ msyslog(LOG_ERR, "acts: setup error %s",
+ pp->a_lastcode);
+ acts_disc(peer);
+ return;
+ }
+ ioctl(pp->io.fd, TIOCMBIS, (char *)&dtr);
+ up->state = S_DTR;
+ up->timer = DTR;
return;
- case 1:
-
- /*
- * State 1. We are waiting for the call to be answered.
- * All we care about here is CONNECT as the first token
- * in the string. If the modem signals BUSY, ERROR, NO
- * ANSWER, NO CARRIER or NO DIALTONE, we immediately
- * hang up the phone. If CONNECT doesn't happen after
- * ANSWER seconds, hang up the phone. If everything is
- * okay, start the connect timeout and slide into state
- * 2.
- */
- if( strcmp(pp->a_lastcode, " ") == 0) {
+ /*
+ * We are waiting for the call to be answered. All we care about
+ * here is token CONNECT. Send the message to the clockstats.
+ */
+ case S_CONNECT:
+ record_clock_stats(&peer->srcadr, pp->a_lastcode);
+ if (strcmp(tbuf, "CONNECT") != 0) {
acts_disc(peer);
return;
}
- if( strcmp(sys_phone[0],"DIRECT") != 0 ) {
- (void)strncpy(str, strtok(pp->a_lastcode, " "), SMAX);
- if (strcmp(str, "BUSY") == 0 || strcmp(str, "ERROR") ==
- 0 || strcmp(str, "NO") == 0) {
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE,
- "clock %s ACTS modem status %s",
- ntoa(&peer->srcadr), pp->a_lastcode);
- acts_disc(peer);
- } else if (strcmp(str, "CONNECT") == 0) {
- peer->nextdate = current_time + CONNECT;
- up->msgcnt = 0;
- up->state++;
- }
- } else {
- (void) strncpy(str,"CONNECT",7);
- peer->nextdate = current_time + CONNECT;
- up->msgcnt = 0;
- up->state++;
- }
+ up->state = S_FIRST;
+ up->timer = CONNECT;
return;
- case 2:
-
- /*
- * State 2. The call has been answered and we are
- * waiting for the first ACTS message. If this doesn't
- * happen within the timecode timeout, hang up the
- * phone. We probably got a wrong number or ACTS is
- * down.
- */
- peer->nextdate = current_time + TIMECODE;
- up->state++;
- }
-
/*
- * Real yucky things here. Ignore everything except timecode
- * messages, as determined by the message length. We told the
- * terminal routines to end the line with '*' and the line
- * discipline to strike a timestamp on that character. However,
- * when the ACTS echo-delay scheme works, the '*' eventually
- * becomes a '#'. In this case the message is ended by the <CR>
- * that comes about 200 ms after the '#' and the '#' cannot be
- * echoed at the proper time. But, this may not be a lose, since
- * we already have good data from prior messages and only need
- * the millisecond advance calculated by ACTS. So, if the
- * message is long enough and has an on-time character at the
- * right place, we consider the message (but not neccesarily the
- * timestmap) to be valid.
+ * We are waiting for a timecode. Pass it to the parser.
*/
- if (pp->lencode != LENCODE)
- return;
+ case S_FIRST:
+ case S_MSG:
+ acts_timecode(peer, pp->a_lastcode);
+ break;
+ }
+}
+
+/*
+ * acts_timecode - identify the service and parse the timecode message
+ */
+void
+acts_timecode(
+ struct peer *peer, /* peer structure pointer */
+ char *str /* timecode string */
+ )
+{
+ struct actsunit *up;
+ struct refclockproc *pp;
+ int day; /* day of the month */
+ int month; /* month of the year */
+ u_long mjd; /* Modified Julian Day */
+ double dut1; /* DUT adjustment */
+
+ u_int dst; /* ACTS daylight/standard time */
+ u_int leap; /* ACTS leap indicator */
+ double msADV; /* ACTS transmit advance (ms) */
+ char utc[10]; /* ACTS timescale */
+ char flag; /* ACTS on-time character (* or #) */
+
+ char synchar; /* WWVB synchronized indicator */
+ char qualchar; /* WWVB quality indicator */
+ char leapchar; /* WWVB leap indicator */
+ char dstchar; /* WWVB daylight/savings indicator */
+ int tz; /* WWVB timezone */
+
+ u_int leapmonth; /* PTB/NPL month of leap */
+ char leapdir; /* PTB/NPL leap direction */
-#ifndef CLOCK_PTBACTS
/*
- * We apparently have a valid timecode message, so dismember it
- * with sscan(). This routine does a good job in spotting syntax
- * errors without becoming overly pedantic.
- *
- * D L D
- * MJD YR MO DA H M S ST S UT1 msADV OTM
- * 47222 88-03-02 21:39:15 83 0 +.3 045.0 UTC(NBS) *
+ * The parser selects the modem format based on the message
+ * length. Since the data are checked carefully, occasional
+ * errors due noise are forgivable.
*/
- if (sscanf(pp->a_lastcode,
- "%5ld %2d-%2d-%2d %2d:%2d:%2d %2d %1d %3lf %5lf %s %c",
- &mjd, &pp->year, &month, &day, &pp->hour, &pp->minute,
- &pp->second, &dst, &leap, &dut1, &msADV, utc, &flag) != 13) {
- refclock_report(peer, CEVNT_BADREPLY);
- return;
- }
-#else
+ pp = peer->procptr;
+ up = (struct actsunit *)pp->unitptr;
+ pp->nsec = 0;
+ switch(strlen(str)) {
+
/*
- * Data format
- * 0000000000111111111122222222223333333333444444444455555555556666666666777777777 7
- * 0123456789012345678901234567890123456789012345678901234567890123456789012345678 9
- * 1995-01-23 20:58:51 MEZ 10402303260219950123195849740+40000500 *
+ * For USNO format on-time character '*', which is on a line by
+ * itself. Be sure a timecode has been received.
*/
- if (sscanf(pp->a_lastcode,
- "%*4d-%*2d-%*2d %*2d:%*2d:%2d %*5c%*12c%4d%2d%2d%2d%2d%5ld%2lf%c%2d%3lf%*15c%c",
- &pp->second, &pp->year, &month, &day, &pp->hour, &pp->minute, &mjd, &dut1, &leapdir, &leapmonth, &msADV, &flag) != 12) {
- refclock_report(peer, CEVNT_BADREPLY);
+ case 1:
+ if (*str == '*' && up->msgcnt > 0)
+ break;
+
return;
- }
-#endif
+
/*
- * Some modems can't be trusted (the Practical Peripherals
- * 9600SA comes to mind) and, even if they manage to unstick
- * ACTS, the millisecond advance is wrong, so we use CLK_FLAG2
- * to disable echoes, if neccessary.
+ * ACTS format: "jjjjj yy-mm-dd hh:mm:ss ds l uuu aaaaa
+ * UTC(NIST) *"
*/
- if ((flag == '*' || flag == '#') && !(pp->sloppyclockflag &
- CLK_FLAG2))
- (void)write(pp->io.fd, &flag, 1);
+ case LENACTS:
+ if (sscanf(str,
+ "%5ld %2d-%2d-%2d %2d:%2d:%2d %2d %1d %3lf %5lf %9s %c",
+ &mjd, &pp->year, &month, &day, &pp->hour,
+ &pp->minute, &pp->second, &dst, &leap, &dut1,
+ &msADV, utc, &flag) != 13) {
+ refclock_report(peer, CEVNT_BADREPLY);
+ return;
+ }
+
+ /*
+ * Wait until ACTS has calculated the roundtrip delay.
+ * We don't need to do anything, as ACTS adjusts the
+ * on-time epoch.
+ */
+ if (flag != '#')
+ return;
+
+ pp->day = ymd2yd(pp->year, month, day);
+ pp->leap = LEAP_NOWARNING;
+ if (leap == 1)
+ pp->leap = LEAP_ADDSECOND;
+ else if (pp->leap == 2)
+ pp->leap = LEAP_DELSECOND;
+ memcpy(&pp->refid, REFACTS, 4);
+ if (up->msgcnt == 0)
+ record_clock_stats(&peer->srcadr, str);
+ up->msgcnt++;
+ break;
/*
- * The ACTS timecode format croaks in 2000. Life is short.
- * Would only the timecode mavens resist the urge to express months
- * of the year and days of the month in favor of days of the year.
+ * USNO format: "jjjjj nnn hhmmss UTC"
*/
- if (month < 1 || month > 12 || day < 1) {
- refclock_report(peer, CEVNT_BADTIME);
+ case LENUSNO:
+ if (sscanf(str, "%5ld %3d %2d%2d%2d %3s",
+ &mjd, &pp->day, &pp->hour, &pp->minute,
+ &pp->second, utc) != 6) {
+ refclock_report(peer, CEVNT_BADREPLY);
+ return;
+ }
+
+ /*
+ * Wait for the on-time character, which follows in a
+ * separate message. There is no provision for leap
+ * warning.
+ */
+ pp->leap = LEAP_NOWARNING;
+ memcpy(&pp->refid, REFUSNO, 4);
+ if (up->msgcnt == 0)
+ record_clock_stats(&peer->srcadr, str);
+ up->msgcnt++;
return;
- }
/*
- * Depending on the driver, at this point we have a two-digit year
- * or a four-digit year. Make sure we have a four-digit year.
+ * PTB/NPL format: "yyyy-mm-dd hh:mm:ss MEZ"
*/
- if ( pp->year < YEAR_PIVOT ) pp->year += 100; /* Y2KFixes */
- if ( pp->year < YEAR_BREAK ) pp->year += 1900; /* Y2KFixes */
- if ( !isleap_4(pp->year) ) { /* Y2KFixes */
- if (day > day1tab[month - 1]) {
- refclock_report(peer, CEVNT_BADTIME);
+ case LENPTB:
+ if (sscanf(str,
+ "%*4d-%*2d-%*2d %*2d:%*2d:%2d %*5c%*12c%4d%2d%2d%2d%2d%5ld%2lf%c%2d%3lf%*15c%c",
+ &pp->second, &pp->year, &month, &day, &pp->hour,
+ &pp->minute, &mjd, &dut1, &leapdir, &leapmonth,
+ &msADV, &flag) != 12) {
+ refclock_report(peer, CEVNT_BADREPLY);
return;
}
- for (i = 0; i < month - 1; i++)
- day += day1tab[i];
- } else {
- if (day > day2tab[month - 1]) {
- refclock_report(peer, CEVNT_BADTIME);
- return;
+ pp->leap = LEAP_NOWARNING;
+ if (leapmonth == month) {
+ if (leapdir == '+')
+ pp->leap = LEAP_ADDSECOND;
+ else if (leapdir == '-')
+ pp->leap = LEAP_DELSECOND;
}
- for (i = 0; i < month - 1; i++)
- day += day2tab[i];
- }
- pp->day = day;
+ pp->day = ymd2yd(pp->year, month, day);
+ memcpy(&pp->refid, REFPTB, 4);
+ if (up->msgcnt == 0)
+ record_clock_stats(&peer->srcadr, str);
+ up->msgcnt++;
+ break;
-#ifndef CLOCK_PTBACTS
- if (leap == 1)
- pp->leap = LEAP_ADDSECOND;
- else if (pp->leap == 2)
- pp->leap = LEAP_DELSECOND;
-#else
- if (leapmonth == month) {
- if (leapdir == '+')
- pp->leap = LEAP_ADDSECOND;
- else if (leapdir == '-')
- pp->leap = LEAP_DELSECOND;
- }
-#endif
/*
- * Colossal hack here. We process each sample in a trimmed-mean
- * filter and determine the reference clock offset and
- * dispersion. The fudge time1 value is added to each sample as
- * received. If we collect MSGCNT samples before the '#' on-time
- * character, we use the results of the filter as is. If the '#'
- * is found before that, the adjusted msADV is used to correct
- * the propagation delay.
+ * WWVB format 0: "I ddd hh:mm:ss DTZ=nn"
+ */
+ case LENWWVB0:
+ if (sscanf(str, "%c %3d %2d:%2d:%2d %cTZ=%2d",
+ &synchar, &pp->day, &pp->hour, &pp->minute,
+ &pp->second, &dstchar, &tz) != 7) {
+ refclock_report(peer, CEVNT_BADREPLY);
+ return;
+ }
+ pp->leap = LEAP_NOWARNING;
+ if (synchar != ' ')
+ pp->leap = LEAP_NOTINSYNC;
+ memcpy(&pp->refid, REFWWVB, 4);
+ if (up->msgcnt == 0)
+ record_clock_stats(&peer->srcadr, str);
+ up->msgcnt++;
+ break;
+
+ /*
+ * WWVB format 2: "IQyy ddd hh:mm:ss.mmm LD"
*/
- up->msgcnt++;
- if (flag == '#') {
- pp->offset += (msADV - up->msADV) * 1000 * 1e-6;
- } else {
- up->msADV = msADV;
- if (!refclock_process(pp)) {
- refclock_report(peer, CEVNT_BADTIME);
+ case LENWWVB2:
+ if (sscanf(str, "%c%c%2d %3d %2d:%2d:%2d.%3ld%c%c%c",
+ &synchar, &qualchar, &pp->year, &pp->day,
+ &pp->hour, &pp->minute, &pp->second, &pp->nsec,
+ &dstchar, &leapchar, &dstchar) != 11) {
+ refclock_report(peer, CEVNT_BADREPLY);
return;
- } else if (up->msgcnt < MSGCNT)
- return;
+ }
+ pp->nsec *= 1000000;
+ pp->leap = LEAP_NOWARNING;
+ if (synchar != ' ')
+ pp->leap = LEAP_NOTINSYNC;
+ else if (leapchar == 'L')
+ pp->leap = LEAP_ADDSECOND;
+ memcpy(&pp->refid, REFWWVB, 4);
+ if (up->msgcnt == 0)
+ record_clock_stats(&peer->srcadr, str);
+ up->msgcnt++;
+ break;
+
+ /*
+ * None of the above. Just forget about it and wait for the next
+ * message or timeout.
+ */
+ default:
+ return;
}
/*
- * We have a filtered sample offset ready for peer processing.
- * We use lastrec as both the reference time and receive time in
- * order to avoid being cute, like setting the reference time
- * later than the receive time, which may cause a paranoid
- * protocol module to chuck out the data. Finaly, we unhook the
- * timeout, arm for the next call, fold the tent and go home.
- * The little dance with the '%' character is an undocumented
- * ACTS feature that hangs up the phone real quick without
- * waiting for carrier loss or long-space disconnect, but we do
- * these clumsy things anyway.
+ * We have a valid timecode. The fudge time1 value is added to
+ * each sample by the main line routines. Note that in current
+ * telephone networks the propatation time can be different for
+ * each call and can reach 200 ms for some calls.
*/
+ peer->refid = pp->refid;
+ pp->lastrec = up->tstamp;
+ if (!refclock_process(pp)) {
+ refclock_report(peer, CEVNT_BADTIME);
+ return;
+ }
pp->lastref = pp->lastrec;
- refclock_receive(peer);
- record_clock_stats(&peer->srcadr, pp->a_lastcode);
- pp->sloppyclockflag &= ~CLK_FLAG1;
- up->pollcnt = 0;
- (void)write(pp->io.fd, &hangup, 1);
- up->state = 0;
- acts_disc(peer);
+ if (peer->disp > MAXDISTANCE)
+ refclock_receive(peer);
+ if (up->state != S_MSG) {
+ up->state = S_MSG;
+ up->timer = TIMECODE;
+ }
}
@@ -749,234 +632,298 @@ acts_receive (
*/
static void
acts_poll (
- int unit,
+ int unit,
struct peer *peer
)
{
- register struct actsunit *up;
+ struct actsunit *up;
struct refclockproc *pp;
/*
- * If the driver is running, we set the enable flag (fudge
- * flag1), which causes the driver timeout routine to initiate a
- * call to ACTS. If not, the enable flag can be set using
- * ntpdc. If this is the sustem peer, then follow the system
- * poll interval.
+ * This routine is called at every system poll. All it does is
+ * set flag1 under certain conditions. The real work is done by
+ * the timeout routine and state machine.
*/
pp = peer->procptr;
up = (struct actsunit *)pp->unitptr;
+ switch (peer->ttl) {
- if (up->run) {
+ /*
+ * In manual mode the calling program is activated by the ntpdc
+ * program using the enable flag (fudge flag1), either manually
+ * or by a cron job.
+ */
+ case MODE_MANUAL:
+ /* fall through */
+ break;
+
+ /*
+ * In automatic mode the calling program runs continuously at
+ * intervals determined by the poll event or specified timeout.
+ */
+ case MODE_AUTO:
pp->sloppyclockflag |= CLK_FLAG1;
- if (peer == sys_peer)
- peer->hpoll = sys_poll;
- else
- peer->hpoll = peer->minpoll;
+ break;
+
+ /*
+ * In backup mode the calling program runs continuously as long
+ * as either no peers are available or this peer is selected.
+ */
+ case MODE_BACKUP:
+ if (sys_peer == NULL || sys_peer == peer)
+ pp->sloppyclockflag |= CLK_FLAG1;
+ break;
}
- acts_timeout (peer);
- return;
}
/*
- * acts_timeout - called by the timer interrupt
+ * acts_timer - called at one-second intervals
*/
static void
-acts_timeout (
+acts_timer(
+ int unit,
struct peer *peer
)
{
- register struct actsunit *up;
+ struct actsunit *up;
struct refclockproc *pp;
- int dtr = TIOCM_DTR;
/*
- * If a timeout occurs in other than state 0, the call has
- * failed. If in state 0, we just see if there is other work to
- * do.
+ * This routine implments a timeout which runs for a programmed
+ * interval. The counter is initialized by the state machine and
+ * counts down to zero. Upon reaching zero, the state machine is
+ * called. If flag1 is set while in S_IDLE state, force a
+ * timeout.
*/
pp = peer->procptr;
up = (struct actsunit *)pp->unitptr;
- if (up->state) {
- acts_disc(peer);
+ if (pp->sloppyclockflag & CLK_FLAG1 && up->state == S_IDLE) {
+ acts_timeout(peer);
return;
}
- switch (peer->ttl) {
+ if (up->timer == 0)
+ return;
+
+ up->timer--;
+ if (up->timer == 0)
+ acts_timeout(peer);
+}
+
+
+/*
+ * acts_timeout - called on timeout
+ */
+static void
+acts_timeout(
+ struct peer *peer
+ )
+{
+ struct actsunit *up;
+ struct refclockproc *pp;
+ int fd;
+ char device[20];
+ char lockfile[128], pidbuf[8];
+ char tbuf[BMAX];
+
+ /*
+ * The state machine is driven by messages from the modem, when
+ * first stated and at timeout.
+ */
+ pp = peer->procptr;
+ up = (struct actsunit *)pp->unitptr;
+ pp->sloppyclockflag &= ~CLK_FLAG1;
+ if (sys_phone[up->retry] == NULL && !(pp->sloppyclockflag &
+ CLK_FLAG3)) {
+ msyslog(LOG_ERR, "acts: no phones");
+ return;
+ }
+ switch(up->state) {
+
+ /*
+ * System poll event. Lock the modem port and open the device.
+ */
+ case S_IDLE:
/*
- * In manual mode the ACTS calling program is activated
- * by the ntpdc program using the enable flag (fudge
- * flag1), either manually or by a cron job.
+ * Lock the modem port. If busy, retry later. Note: if
+ * something fails between here and the close, the lock
+ * file may not be removed.
*/
- case MODE_MANUAL:
- up->run = 0;
- break;
+ if (pp->sloppyclockflag & CLK_FLAG2) {
+ sprintf(lockfile, LOCKFILE, up->unit);
+ fd = open(lockfile, O_WRONLY | O_CREAT | O_EXCL,
+ 0644);
+ if (fd < 0) {
+ msyslog(LOG_ERR, "acts: port busy");
+ return;
+ }
+ sprintf(pidbuf, "%d\n", (u_int)getpid());
+ write(fd, pidbuf, strlen(pidbuf));
+ close(fd);
+ }
/*
- * In automatic mode the ACTS calling program runs
- * continuously at intervals determined by the sys_poll
- * variable.
+ * Open the device in raw mode and link the I/O.
*/
- case MODE_AUTO:
- if (!up->run)
- pp->sloppyclockflag |= CLK_FLAG1;
- up->run = 1;
- break;
+ if (!pp->io.fd) {
+ sprintf(device, DEVICE, up->unit);
+ fd = refclock_open(device, SPEED232,
+ LDISC_ACTS | LDISC_RAW | LDISC_REMOTE);
+ if (fd == 0) {
+ return;
+ }
+ pp->io.fd = fd;
+ if (!io_addclock(&pp->io)) {
+ msyslog(LOG_ERR,
+ "acts: addclock fails");
+ close(fd);
+ pp->io.fd = 0;
+ return;
+ }
+ }
/*
- * In backup mode the ACTS calling program is disabled,
- * unless no system peer has been selected for MAXOUTAGE
- * (3600 s). Once enabled, it runs until some other NTP
- * peer shows up.
+ * If the port is directly connected to the device, skip
+ * the modem business and send 'T' for Spectrabum.
*/
- case MODE_BACKUP:
- if (!up->run && sys_peer == 0) {
- if (current_time - last_time > MAXOUTAGE) {
- up->run = 1;
- peer->hpoll = peer->minpoll;
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE,
- "clock %s ACTS backup started ",
- ntoa(&peer->srcadr));
+ if (pp->sloppyclockflag & CLK_FLAG3) {
+ if (write(pp->io.fd, "T", 1) < 0) {
+ msyslog(LOG_ERR, "acts: write %m");
+ return;
}
- } else if (up->run && sys_peer->sstclktype != CTL_SST_TS_TELEPHONE) {
- peer->hpoll = peer->minpoll;
- up->run = 0;
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE,
- "clock %s ACTS backup stopped",
- ntoa(&peer->srcadr));
+ up->state = S_FIRST;
+ up->timer = CONNECT;
+ return;
}
- break;
- default:
- msyslog(LOG_ERR,
- "clock %s ACTS invalid mode", ntoa(&peer->srcadr));
- }
+ /*
+ * Initialize the modem. This works with Hayes commands.
+ */
+#ifdef DEBUG
+ if (debug)
+ printf("acts: setup %s\n", MODEM_SETUP);
+#endif
+ if (write(pp->io.fd, MODEM_SETUP, strlen(MODEM_SETUP)) <
+ 0) {
+ msyslog(LOG_ERR, "acts: write %m");
+ return;
+ }
+ up->state = S_OK;
+ up->timer = SETUP;
+ return;
/*
- * The fudge flag1 is used as an enable/disable; if set either
- * by the code or via ntpdc, the ACTS calling program is
- * started; if reset, the phones stop ringing.
+ * In OK state the modem did not respond to setup.
*/
- if (!(pp->sloppyclockflag & CLK_FLAG1)) {
- up->pollcnt = 0;
- peer->nextdate = current_time + IDLE;
- return;
- }
+ case S_OK:
+ msyslog(LOG_ERR, "acts: no modem");
+ break;
/*
- * Initiate a call to the ACTS service. If we wind up here in
- * other than state 0, a successful call could not be completed
- * within minpoll seconds. We advance to the next modem dial
- * string. If none are left, we log a notice and clear the
- * enable flag. For future enhancement: call the site RP and
- * leave an obscene message in his voicemail.
+ * In DTR state we are waiting for the modem to settle down
+ * before hammering it with a dial command.
*/
- if (sys_phone[up->pollcnt][0] == '\0') {
- refclock_report(peer, CEVNT_TIMEOUT);
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE,
- "clock %s ACTS calling program terminated",
- ntoa(&peer->srcadr));
- pp->sloppyclockflag &= ~CLK_FLAG1;
+ case S_DTR:
+ sprintf(tbuf, "DIAL #%d %s", up->retry,
+ sys_phone[up->retry]);
+ record_clock_stats(&peer->srcadr, tbuf);
#ifdef DEBUG
if (debug)
- printf("acts: calling program terminated\n");
+ printf("%s\n", tbuf);
#endif
- up->pollcnt = 0;
- peer->nextdate = current_time + IDLE;
+ write(pp->io.fd, sys_phone[up->retry],
+ strlen(sys_phone[up->retry]));
+ write(pp->io.fd, "\r", 1);
+ up->state = S_CONNECT;
+ up->timer = ANSWER;
return;
- }
/*
- * Raise DTR, call ACTS and start the answer timeout. We think
- * it strange if the OK status has not been received from the
- * modem, but plow ahead anyway.
+ * In CONNECT state the call did not complete.
*/
- if (strcmp(pp->a_lastcode, "OK") != 0)
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE, "clock %s ACTS no modem status",
- ntoa(&peer->srcadr));
- (void)ioctl(pp->io.fd, TIOCMBIS, (char *)&dtr);
- (void)acts_write(peer, sys_phone[up->pollcnt]);
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE, "clock %s ACTS calling %s\n",
- ntoa(&peer->srcadr), sys_phone[up->pollcnt]);
- up->state = 1;
- up->pollcnt++;
- pp->polls++;
- peer->nextdate = current_time + ANSWER;
- return;
-}
-
+ case S_CONNECT:
+ msyslog(LOG_ERR, "acts: no answer");
+ break;
-/*
- * acts_disc - disconnect the call and wait for the ruckus to cool
- */
-static void
-acts_disc (
- struct peer *peer
- )
-{
- register struct actsunit *up;
- struct refclockproc *pp;
- int dtr = TIOCM_DTR;
+ /*
+ * In FIRST state no messages were received.
+ */
+ case S_FIRST:
+ msyslog(LOG_ERR, "acts: no messages");
+ break;
/*
- * We should never get here other than in state 0, unless a call
- * has timed out. We drop DTR, which will reliably get the modem
- * off the air, even while ACTS is hammering away full tilt.
+ * In CLOSE state hangup is complete. Close the doors and
+ * windows and get some air.
*/
- pp = peer->procptr;
- up = (struct actsunit *)pp->unitptr;
- (void)ioctl(pp->io.fd, TIOCMBIC, (char *)&dtr);
- if (up->state > 0) {
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE, "clock %s ACTS call failed %d",
- ntoa(&peer->srcadr), up->state);
-#ifdef DEBUG
- if (debug)
- printf("acts: call failed %d\n", up->state);
-#endif
- up->state = 0;
+ case S_CLOSE:
+
+ /*
+ * Close the device and unlock a shared modem.
+ */
+ if (pp->io.fd) {
+ io_closeclock(&pp->io);
+ close(pp->io.fd);
+ if (pp->sloppyclockflag & CLK_FLAG2) {
+ sprintf(lockfile, LOCKFILE, up->unit);
+ unlink(lockfile);
+ }
+ pp->io.fd = 0;
+ }
+
+ /*
+ * If messages were received, fold the tent and wait for
+ * the next poll. If no messages and there are more
+ * numbers to dial, retry after a short wait.
+ */
+ up->bufptr = pp->a_lastcode;
+ up->timer = 0;
+ up->state = S_IDLE;
+ if ( up->msgcnt == 0) {
+ up->retry++;
+ if (sys_phone[up->retry] == NULL)
+ up->retry = 0;
+ else
+ up->timer = SETUP;
+ } else {
+ up->retry = 0;
+ }
+ up->msgcnt = 0;
+ return;
}
- peer->nextdate = current_time + WAIT;
+ acts_disc(peer);
}
/*
- * acts_write - write a message to the serial port
+ * acts_disc - disconnect the call and clean the place up.
*/
-static int
-acts_write (
- struct peer *peer,
- const char *str
+static void
+acts_disc (
+ struct peer *peer
)
{
- register struct actsunit *up;
+ struct actsunit *up;
struct refclockproc *pp;
- int len;
- int code;
- char cr = '\r';
+ int dtr = TIOCM_DTR;
/*
- * Not much to do here, other than send the message, handle
- * debug and report faults.
+ * We get here if the call terminated successfully or if an
+ * error occured. If the median filter has something in it,feed
+ * the data to the clock filter. If a modem port, drop DTR to
+ * force command mode and send modem hangup.
*/
pp = peer->procptr;
up = (struct actsunit *)pp->unitptr;
- len = strlen(str);
-#ifdef DEBUG
- if (debug)
- printf("acts: state %d send %d %s\n", up->state, len,
- str);
-#endif
- code = write(pp->io.fd, str, (unsigned)len) == len;
- code &= write(pp->io.fd, &cr, 1) == 1;
- if (!code)
- refclock_report(peer, CEVNT_FAULT);
- return (code);
+ if (up->msgcnt > 0)
+ refclock_receive(peer);
+ if (!(pp->sloppyclockflag & CLK_FLAG3)) {
+ ioctl(pp->io.fd, TIOCMBIC, (char *)&dtr);
+ write(pp->io.fd, MODEM_HANGUP, strlen(MODEM_HANGUP));
+ }
+ up->timer = SETUP;
+ up->state = S_CLOSE;
}
#else
diff --git a/contrib/ntp/ntpd/refclock_arbiter.c b/contrib/ntp/ntpd/refclock_arbiter.c
index cf5f92f..88a3225 100644
--- a/contrib/ntp/ntpd/refclock_arbiter.c
+++ b/contrib/ntp/ntpd/refclock_arbiter.c
@@ -76,10 +76,13 @@
* ee = hardware errors
*
* If flag4 is set, an additional line consisting of the receiver
- * latitude (LA), longitude (LO) and elevation (LH) (meters) is written
- * to this file. If channel B is enabled for deviation mode and connected
- * to a 1-PPS signal, the last two numbers on the line are the deviation
- * and standard deviation averaged over the last 15 seconds.
+ * latitude (LA), longitude (LO), elevation (LH) (meters), and data
+ * buffer (DB) is written to this file. If channel B is enabled for
+ * deviation mode and connected to a 1-PPS signal, the last two numbers
+ * on the line are the deviation and standard deviation averaged over
+ * the last 15 seconds.
+ *
+ * PPS calibration fudge time1 .001240
*/
/*
@@ -88,12 +91,11 @@
#define DEVICE "/dev/gps%d" /* device name and unit */
#define SPEED232 B9600 /* uart speed (9600 baud) */
#define PRECISION (-20) /* precision assumed (about 1 us) */
-#define REFID "GPS " /* reference ID */
+#define REFID "GPS " /* reference ID */
#define DESCRIPTION "Arbiter 1088A/B GPS Receiver" /* WRU */
-
#define LENARB 24 /* format B5 timecode length */
-#define MAXSTA 30 /* max length of status string */
-#define MAXPOS 70 /* max length of position string */
+#define MAXSTA 40 /* max length of status string */
+#define MAXPOS 80 /* max length of position string */
/*
* ARB unit control structure
@@ -212,7 +214,8 @@ arb_receive(
struct peer *peer;
l_fp trtmp;
int temp;
- u_char syncchar; /* synchronization indicator */
+ u_char syncchar; /* synch indicator */
+ char tbuf[BMAX]; /* temp buffer */
/*
* Initialize pointers and read the timecode and timestamp
@@ -220,7 +223,7 @@ arb_receive(
peer = (struct peer *)rbufp->recv_srcclock;
pp = peer->procptr;
up = (struct arbunit *)pp->unitptr;
- temp = refclock_gtlin(rbufp, pp->a_lastcode, BMAX, &trtmp);
+ temp = refclock_gtlin(rbufp, tbuf, BMAX, &trtmp);
/*
* Note we get a buffer and timestamp for both a <cr> and <lf>,
@@ -238,49 +241,64 @@ arb_receive(
*/
if (temp == 0)
return;
+
pp->lastrec = up->laststamp;
up->laststamp = trtmp;
if (temp < 3)
return;
+
if (up->tcswitch == 0) {
/*
* Collect statistics. If nothing is recogized, just
* ignore; sometimes the clock doesn't stop spewing
- * timecodes for awhile after the B0 commant.
+ * timecodes for awhile after the B0 command.
+ *
+ * If flag4 is not set, send TQ, SR, B5. If flag4 is
+ * sset, send TQ, SR, LA, LO, LH, DB, B5. When the
+ * median filter is full, send B0.
*/
- if (!strncmp(pp->a_lastcode, "TQ", 2)) {
- up->qualchar = pp->a_lastcode[2];
+ if (!strncmp(tbuf, "TQ", 2)) {
+ up->qualchar = tbuf[2];
write(pp->io.fd, "SR", 2);
- } else if (!strncmp(pp->a_lastcode, "SR", 2)) {
- strcpy(up->status, pp->a_lastcode + 2);
+ return;
+
+ } else if (!strncmp(tbuf, "SR", 2)) {
+ strcpy(up->status, tbuf + 2);
if (pp->sloppyclockflag & CLK_FLAG4)
write(pp->io.fd, "LA", 2);
- else {
+ else
write(pp->io.fd, "B5", 2);
- up->tcswitch++;
- }
- } else if (!strncmp(pp->a_lastcode, "LA", 2)) {
- strcpy(up->latlon, pp->a_lastcode + 2);
+ return;
+
+ } else if (!strncmp(tbuf, "LA", 2)) {
+ strcpy(up->latlon, tbuf + 2);
write(pp->io.fd, "LO", 2);
- } else if (!strncmp(pp->a_lastcode, "LO", 2)) {
+ return;
+
+ } else if (!strncmp(tbuf, "LO", 2)) {
strcat(up->latlon, " ");
- strcat(up->latlon, pp->a_lastcode + 2);
+ strcat(up->latlon, tbuf + 2);
write(pp->io.fd, "LH", 2);
- } else if (!strncmp(pp->a_lastcode, "LH", 2)) {
+ return;
+
+ } else if (!strncmp(tbuf, "LH", 2)) {
strcat(up->latlon, " ");
- strcat(up->latlon, pp->a_lastcode + 2);
+ strcat(up->latlon, tbuf + 2);
write(pp->io.fd, "DB", 2);
- } else if (!strncmp(pp->a_lastcode, "DB", 2)) {
+ return;
+
+ } else if (!strncmp(tbuf, "DB", 2)) {
strcat(up->latlon, " ");
- strcat(up->latlon, pp->a_lastcode + 2);
+ strcat(up->latlon, tbuf + 2);
record_clock_stats(&peer->srcadr, up->latlon);
+#ifdef DEBUG
+ if (debug)
+ printf("arbiter: %s\n", up->latlon);
+#endif
write(pp->io.fd, "B5", 2);
- up->tcswitch++;
}
- return;
}
- pp->lencode = temp;
/*
* We get down to business, check the timecode format and decode
@@ -291,25 +309,25 @@ arb_receive(
* that the time quality character and receiver status string is
* tacked on the end for clockstats display.
*/
- if (pp->lencode == LENARB) {
- /*
- * Timecode format B5: "i yy ddd hh:mm:ss.000 "
- */
- pp->a_lastcode[LENARB - 2] = up->qualchar;
- strcat(pp->a_lastcode, up->status);
- syncchar = ' ';
- if (sscanf(pp->a_lastcode, "%c%2d %3d %2d:%2d:%2d",
- &syncchar, &pp->year, &pp->day, &pp->hour,
- &pp->minute, &pp->second) != 6) {
- refclock_report(peer, CEVNT_BADREPLY);
- write(pp->io.fd, "B0", 2);
- return;
- }
- } else {
+ up->tcswitch++;
+ if (up->tcswitch <= 1 || temp < LENARB)
+ return;
+
+ /*
+ * Timecode format B5: "i yy ddd hh:mm:ss.000 "
+ */
+ strncpy(pp->a_lastcode, tbuf, BMAX);
+ pp->a_lastcode[LENARB - 2] = up->qualchar;
+ strcat(pp->a_lastcode, up->status);
+ pp->lencode = strlen(pp->a_lastcode);
+ syncchar = ' ';
+ if (sscanf(pp->a_lastcode, "%c%2d %3d %2d:%2d:%2d",
+ &syncchar, &pp->year, &pp->day, &pp->hour,
+ &pp->minute, &pp->second) != 6) {
+ refclock_report(peer, CEVNT_BADREPLY);
write(pp->io.fd, "B0", 2);
return;
}
- up->tcswitch++;
/*
* We decode the clock dispersion from the time quality
@@ -319,6 +337,7 @@ arb_receive(
case '0': /* locked, max accuracy */
pp->disp = 1e-7;
+ pp->lastref = pp->lastrec;
break;
case '4': /* unlock accuracy < 1 us */
@@ -369,13 +388,6 @@ arb_receive(
pp->leap = LEAP_NOTINSYNC;
else
pp->leap = LEAP_NOWARNING;
-#ifdef DEBUG
- if (debug)
- printf("arbiter: timecode %d %s\n", pp->lencode,
- pp->a_lastcode);
-#endif
- if (up->tcswitch >= NSTAGE)
- write(pp->io.fd, "B0", 2);
/*
* Process the new sample in the median filter and determine the
@@ -383,6 +395,12 @@ arb_receive(
*/
if (!refclock_process(pp))
refclock_report(peer, CEVNT_BADTIME);
+ else if (peer->disp > MAXDISTANCE)
+ refclock_receive(peer);
+
+ if (up->tcswitch >= MAXSTAGE) {
+ write(pp->io.fd, "B0", 2);
+ }
}
@@ -404,24 +422,30 @@ arb_poll(
* Transmission occurs once per second, unless turned off by a
* "B0". Note there is no checking on state, since this may not
* be the only customer reading the clock. Only one customer
- * need poll the clock; all others just listen in. If nothing is
- * heard from the clock for two polls, declare a timeout and
- * keep going.
+ * need poll the clock; all others just listen in.
*/
pp = peer->procptr;
up = (struct arbunit *)pp->unitptr;
+ pp->polls++;
up->tcswitch = 0;
- if (write(pp->io.fd, "TQ", 2) != 2) {
+ if (write(pp->io.fd, "TQ", 2) != 2)
refclock_report(peer, CEVNT_FAULT);
- } else
- pp->polls++;
+
+ /*
+ * Process median filter samples. If none received, declare a
+ * timeout and keep going.
+ */
if (pp->coderecv == pp->codeproc) {
refclock_report(peer, CEVNT_TIMEOUT);
return;
}
- pp->lastref = pp->lastrec;
refclock_receive(peer);
record_clock_stats(&peer->srcadr, pp->a_lastcode);
+#ifdef DEBUG
+ if (debug)
+ printf("arbiter: timecode %d %s\n",
+ pp->lencode, pp->a_lastcode);
+#endif
}
#else
diff --git a/contrib/ntp/ntpd/refclock_arc.c b/contrib/ntp/ntpd/refclock_arc.c
index f556da6..af80621 100644
--- a/contrib/ntp/ntpd/refclock_arc.c
+++ b/contrib/ntp/ntpd/refclock_arc.c
@@ -7,6 +7,7 @@
#endif
#if defined(REFCLOCK) && defined(CLOCK_ARCRON_MSF)
+
static const char arc_version[] = { "V1.3 2003/02/21" };
/* define PRE_NTP420 for compatibility to previous versions of NTP (at least
@@ -32,6 +33,7 @@ Code by Derek Mulcahy, <derek@toybox.demon.co.uk>, 1997.
Modifications by Damon Hart-Davis, <d@hd.org>, 1997.
Modifications by Paul Alfille, <palfille@partners.org>, 2003.
Modifications by Christopher Price, <cprice@cs-home.com>, 2003.
+Modifications by Nigel Roles <nigel@9fs.org>, 2003.
THIS CODE IS SUPPLIED AS IS, WITH NO WARRANTY OF ANY KIND. USE AT
@@ -47,6 +49,16 @@ reproduced.
-------------------------------------------------------------------------------
+Nigel's notes:
+
+1) Called tcgetattr() before modifying, so that fields correctly initialised
+ for all operating systems
+
+2) Altered parsing of timestamp line so that it copes with fields which are
+ not always ASCII digits (e.g. status field when battery low)
+
+-------------------------------------------------------------------------------
+
Christopher's notes:
MAJOR CHANGES SINCE V1.2
@@ -656,6 +668,8 @@ arc_start(
#ifdef HAVE_TERMIOS
+ tcgetattr(fd, &arg);
+
arg.c_iflag = IGNBRK | ISTRIP;
arg.c_oflag = 0;
arg.c_cflag = B300 | CS8 | CREAD | CLOCAL | CSTOPB;
@@ -804,12 +818,28 @@ send_slow(
}
/* Copy in the command to be sent. */
- while(*s) { up->cmdqueue[CMDQUEUELEN - spaceleft--] = *s++; }
+ while(*s && spaceleft > 0) { up->cmdqueue[CMDQUEUELEN - spaceleft--] = *s++; }
return(1);
}
+static int
+get2(char *p, int *val)
+{
+ if (!isdigit((int)p[0]) || !isdigit((int)p[1])) return 0;
+ *val = (p[0] - '0') * 10 + p[1] - '0';
+ return 1;
+}
+
+static int
+get1(char *p, int *val)
+{
+ if (!isdigit((int)p[0])) return 0;
+ *val = p[0] - '0';
+ return 1;
+}
+
/* Macro indicating action we will take for different quality values. */
#define quality_action(q) \
(((q) == QUALITY_UNKNOWN) ? "UNKNOWN, will use clock anyway" : \
@@ -1115,12 +1145,15 @@ arc_receive(
/* We don't use the nano-second part... */
pp->nsec = 0;
#endif
- n = sscanf(pp->a_lastcode, "o%2d%2d%2d%1d%2d%2d%2d%1d%1d",
- &pp->hour, &pp->minute, &pp->second,
- &wday, &pp->day, &month, &pp->year, &flags, &status);
-
/* Validate format and numbers. */
- if(n != 9) {
+ if (pp->a_lastcode[0] != 'o'
+ || !get2(pp->a_lastcode + 1, &pp->hour)
+ || !get2(pp->a_lastcode + 3, &pp->minute)
+ || !get2(pp->a_lastcode + 5, &pp->second)
+ || !get1(pp->a_lastcode + 7, &wday)
+ || !get2(pp->a_lastcode + 8, &pp->day)
+ || !get2(pp->a_lastcode + 10, &month)
+ || !get2(pp->a_lastcode + 12, &pp->year)) {
#ifdef DEBUG
/* Would expect to have caught major problems already... */
if(debug) { printf("arc: badly formatted data.\n"); }
@@ -1129,6 +1162,13 @@ arc_receive(
refclock_report(peer, CEVNT_BADREPLY);
return;
}
+ flags = pp->a_lastcode[14];
+ status = pp->a_lastcode[15];
+#ifdef DEBUG
+ if(debug) { printf("arc: status 0x%.2x flags 0x%.2x\n", flags, status); }
+#endif
+ n = 9;
+
/*
Validate received values at least enough to prevent internal
array-bounds problems, etc.
diff --git a/contrib/ntp/ntpd/refclock_atom.c b/contrib/ntp/ntpd/refclock_atom.c
index 51153ae..2e469ec 100644
--- a/contrib/ntp/ntpd/refclock_atom.c
+++ b/contrib/ntp/ntpd/refclock_atom.c
@@ -1,4 +1,3 @@
-
/*
* refclock_atom - clock driver for 1-pps signals
*/
@@ -18,13 +17,7 @@
#if defined(REFCLOCK) && defined(CLOCK_ATOM)
#ifdef HAVE_PPSAPI
-# ifdef HAVE_TIMEPPS_H
-# include <timepps.h>
-# else
-# ifdef HAVE_SYS_TIMEPPS_H
-# include <sys/timepps.h>
-# endif
-# endif
+# include "ppsapi_timepps.h"
#endif /* HAVE_PPSAPI */
/*
@@ -48,7 +41,12 @@
* Systems, Version 1.0, RFC-2783 (PPSAPI). Implementations are
* available for FreeBSD, Linux, SunOS, Solaris and Alpha. However, at
* present only the Alpha implementation provides the full generality of
- * the API with multiple PPS drivers and multiple handles per driver.
+ * the API with multiple PPS drivers and multiple handles per driver. If
+ * the PPSAPI is normally implemented in the /usr/include/sys/timepps.h
+ * header file and kernel support specific to each operating system.
+ * However, this driver can operate without this interface if means are
+ * proviced to call the pps_sample() routine from another driver. Please
+ * note; if the PPSAPI interface is present, it must be used.
*
* In many configurations a single port is used for the radio timecode
* and PPS signal. In order to provide for this configuration and others
@@ -61,16 +59,20 @@
* configuration file.
*
* This driver normally uses the PLL/FLL clock discipline implemented in
- * the ntpd code. If kernel support is available, the kernel PLL/FLL
- * clock discipline is used instead. The default configuration is not to
- * use the kernel PPS discipline, if present. The kernel PPS discipline
- * can be enabled using the pps command.
+ * the ntpd code. Ordinarily, this is the most accurate means, as the
+ * median filter in the driver interface is much larger than in the
+ * kernel. However, if the systemic clock frequency error is large (tens
+ * to hundreds of PPM), it's better to used the kernel support, if
+ * available.
*
* Fudge Factors
*
- * There are no special fudge factors other than the generic. The fudge
- * time1 parameter can be used to compensate for miscellaneous device
- * driver and OS delays.
+ * If flag2 is dim (default), the on-time epoch is the assert edge of
+ * the PPS signal; if lit, the on-time epoch is the clear edge. If flag2
+ * is lit, the assert edge is used; if flag3 is dim (default), the
+ * kernel PPS support is disabled; if lit it is enabled. The time1
+ * parameter can be used to compensate for miscellaneous device driver
+ * and OS delays.
*/
/*
* Interface definitions
@@ -84,7 +86,6 @@
#define DESCRIPTION "PPS Clock Discipline" /* WRU */
#define NANOSECOND 1000000000 /* one second (ns) */
#define RANGEGATE 500000 /* range gate (ns) */
-#define ASTAGE 8 /* filter stages */
static struct peer *pps_peer; /* atom driver for PPS sources */
@@ -106,34 +107,38 @@ struct ppsunit {
*/
static int atom_start P((int, struct peer *));
static void atom_poll P((int, struct peer *));
-#ifdef HAVE_PPSAPI
static void atom_shutdown P((int, struct peer *));
+#ifdef HAVE_PPSAPI
static void atom_control P((int, struct refclockstat *, struct
refclockstat *, struct peer *));
-static int atom_pps P((struct peer *));
-static int atom_ppsapi P((struct peer *, int, int));
+static void atom_timer P((int, struct peer *));
+static int atom_ppsapi P((struct peer *, int));
#endif /* HAVE_PPSAPI */
/*
* Transfer vector
*/
+#ifdef HAVE_PPSAPI
struct refclock refclock_atom = {
atom_start, /* start up driver */
-#ifdef HAVE_PPSAPI
atom_shutdown, /* shut down driver */
-#else
- noentry, /* shut down driver */
-#endif /* HAVE_PPSAPI */
atom_poll, /* transmit poll message */
-#ifdef HAVE_PPSAPI
atom_control, /* fudge control */
-#else
- noentry, /* fudge control */
-#endif /* HAVE_PPSAPI */
- noentry, /* initialize driver */
- noentry, /* not used (old atom_buginfo) */
+ noentry, /* initialize driver (not used) */
+ noentry, /* buginfo (not used) */
+ atom_timer, /* called once per second */
+};
+#else /* HAVE_PPSAPI */
+struct refclock refclock_atom = {
+ atom_start, /* start up driver */
+ atom_shutdown, /* shut down driver */
+ atom_poll, /* transmit poll message */
+ noentry, /* fudge control (not used) */
+ noentry, /* initialize driver (not used) */
+ noentry, /* buginfo (not used) */
NOFLAGS /* not used */
};
+#endif /* HAVE_PPPSAPI */
/*
@@ -148,7 +153,8 @@ atom_start(
struct refclockproc *pp;
#ifdef HAVE_PPSAPI
register struct ppsunit *up;
- char device[80];
+ char device[80];
+ int mode;
#endif /* HAVE_PPSAPI */
/*
@@ -160,23 +166,17 @@ atom_start(
pp->clockdesc = DESCRIPTION;
pp->stratum = STRATUM_UNSPEC;
memcpy((char *)&pp->refid, REFID, 4);
- peer->burst = ASTAGE;
#ifdef HAVE_PPSAPI
up = emalloc(sizeof(struct ppsunit));
memset(up, 0, sizeof(struct ppsunit));
pp->unitptr = (caddr_t)up;
/*
- * Open PPS device. If this fails and some driver has already
- * opened the associated radio device, fdpps has the file
- * descriptor for it.
+ * Open PPS device. This can be any serial or parallel port and
+ * not necessarily the port used for the associated radio.
*/
sprintf(device, DEVICE, unit);
up->fddev = open(device, O_RDWR, 0777);
- if (up->fddev <= 0 && fdpps > 0) {
- strcpy(device, pps_device);
- up->fddev = fdpps;
- }
if (up->fddev <= 0) {
msyslog(LOG_ERR,
"refclock_atom: %s: %m", device);
@@ -184,22 +184,55 @@ atom_start(
}
/*
- * Light off the PPSAPI interface. If this PPS device is shared
- * with the radio device, take the default options from the pps
- * command. This is for legacy purposes.
+ * Light off the PPSAPI interface.
*/
if (time_pps_create(up->fddev, &up->handle) < 0) {
msyslog(LOG_ERR,
"refclock_atom: time_pps_create failed: %m");
return (0);
}
- return (atom_ppsapi(peer, 0, 0));
+
+ /*
+ * If the mode is nonzero, use that for the time_pps_setparams()
+ * mode; otherwise, PPS_CAPTUREASSERT. Enable kernel PPS if
+ * flag3 is lit.
+ */
+ mode = peer->ttl;
+ if (mode == 0)
+ mode = PPS_CAPTUREASSERT;
+ return (atom_ppsapi(peer, mode));
#else /* HAVE_PPSAPI */
return (1);
#endif /* HAVE_PPSAPI */
}
+/*
+ * atom_shutdown - shut down the clock
+ */
+static void
+atom_shutdown(
+ int unit, /* unit number (not used) */
+ struct peer *peer /* peer structure pointer */
+ )
+{
+ struct refclockproc *pp;
+ register struct ppsunit *up;
+
+ pp = peer->procptr;
+ up = (struct ppsunit *)pp->unitptr;
+#ifdef HAVE_PPSAPI
+ if (up->fddev > 0)
+ close(up->fddev);
+ if (up->handle != 0)
+ time_pps_destroy(up->handle);
+#endif /* HAVE_PPSAPI */
+ if (pps_peer == peer)
+ pps_peer = NULL;
+ free(up);
+}
+
+
#ifdef HAVE_PPSAPI
/*
* atom_control - fudge control
@@ -213,10 +246,17 @@ atom_control(
)
{
struct refclockproc *pp;
+ int mode;
pp = peer->procptr;
- atom_ppsapi(peer, pp->sloppyclockflag & CLK_FLAG2,
- pp->sloppyclockflag & CLK_FLAG3);
+ if (peer->ttl != 0) /* all legal modes must be nonzero */
+ return;
+
+ if (pp->sloppyclockflag & CLK_FLAG2)
+ mode = PPS_CAPTURECLEAR;
+ else
+ mode = PPS_CAPTUREASSERT;
+ atom_ppsapi(peer, mode);
}
@@ -226,8 +266,7 @@ atom_control(
int
atom_ppsapi(
struct peer *peer, /* peer structure pointer */
- int enb_clear, /* clear enable */
- int enb_hardpps /* hardpps enable */
+ int mode /* mode */
)
{
struct refclockproc *pp;
@@ -236,29 +275,23 @@ atom_ppsapi(
pp = peer->procptr;
up = (struct ppsunit *)pp->unitptr;
+ if (up->handle == 0)
+ return (0);
+
if (time_pps_getcap(up->handle, &capability) < 0) {
msyslog(LOG_ERR,
"refclock_atom: time_pps_getcap failed: %m");
return (0);
}
memset(&up->pps_params, 0, sizeof(pps_params_t));
- if (enb_clear)
- up->pps_params.mode = capability & PPS_CAPTURECLEAR;
- else
- up->pps_params.mode = capability & PPS_CAPTUREASSERT;
- if (!up->pps_params.mode) {
- msyslog(LOG_ERR,
- "refclock_atom: invalid capture edge %d",
- enb_clear);
- return (0);
- }
- up->pps_params.mode |= PPS_TSFMT_TSPEC;
+ up->pps_params.api_version = PPS_API_VERS_1;
+ up->pps_params.mode = mode | PPS_TSFMT_TSPEC;
if (time_pps_setparams(up->handle, &up->pps_params) < 0) {
msyslog(LOG_ERR,
"refclock_atom: time_pps_setparams failed: %m");
return (0);
}
- if (enb_hardpps) {
+ if (pp->sloppyclockflag & CLK_FLAG3) {
if (time_pps_kcbind(up->handle, PPS_KC_HARDPPS,
up->pps_params.mode & ~PPS_TSFMT_TSPEC,
PPS_TSFMT_TSPEC) < 0) {
@@ -272,9 +305,9 @@ atom_ppsapi(
if (debug) {
time_pps_getparams(up->handle, &up->pps_params);
printf(
- "refclock_ppsapi: fd %d capability 0x%x version %d mode 0x%x kern %d\n",
+ "refclock_ppsapi: fd %d capability 0x%x version %d mode 0x%x\n",
up->fddev, capability, up->pps_params.api_version,
- up->pps_params.mode, enb_hardpps);
+ up->pps_params.mode);
}
#endif
return (1);
@@ -282,39 +315,16 @@ atom_ppsapi(
/*
- * atom_shutdown - shut down the clock
- */
-static void
-atom_shutdown(
- int unit, /* unit number (not used) */
- struct peer *peer /* peer structure pointer */
- )
-{
- struct refclockproc *pp;
- register struct ppsunit *up;
-
- pp = peer->procptr;
- up = (struct ppsunit *)pp->unitptr;
- if (up->fddev > 0)
- close(up->fddev);
- if (up->handle != 0)
- time_pps_destroy(up->handle);
- if (pps_peer == peer)
- pps_peer = 0;
- free(up);
-}
-
-
-/*
- * atom_pps - receive data from the PPSAPI interface
+ * atom_timer - called once per second
*
* This routine is called once per second when the PPSAPI interface is
* present. It snatches the PPS timestamp from the kernel and saves the
* sign-extended fraction in a circular buffer for processing at the
* next poll event.
*/
-static int
-atom_pps(
+static void
+atom_timer(
+ int unit, /* unit number (not used) */
struct peer *peer /* peer structure pointer */
)
{
@@ -322,7 +332,9 @@ atom_pps(
struct refclockproc *pp;
pps_info_t pps_info;
struct timespec timeout, ts;
- double dtemp;
+ long sec, nsec;
+ double dtemp;
+ char tbuf[80]; /* monitor buffer */
/*
* Convert the timespec nanoseconds field to signed double and
@@ -334,34 +346,58 @@ atom_pps(
pp = peer->procptr;
up = (struct ppsunit *)pp->unitptr;
if (up->handle == 0)
- return (-1);
+ return;
+
timeout.tv_sec = 0;
timeout.tv_nsec = 0;
memcpy(&pps_info, &up->pps_info, sizeof(pps_info_t));
if (time_pps_fetch(up->handle, PPS_TSFMT_TSPEC, &up->pps_info,
- &timeout) < 0)
- return (-1);
+ &timeout) < 0) {
+ refclock_report(peer, CEVNT_FAULT);
+ return;
+ }
if (up->pps_params.mode & PPS_CAPTUREASSERT) {
- if (pps_info.assert_sequence ==
- up->pps_info.assert_sequence)
- return (1);
ts = up->pps_info.assert_timestamp;
} else if (up->pps_params.mode & PPS_CAPTURECLEAR) {
- if (pps_info.clear_sequence ==
- up->pps_info.clear_sequence)
- return (1);
ts = up->pps_info.clear_timestamp;
} else {
- return (-1);
- }
- if (!((ts.tv_sec == up->ts.tv_sec && ts.tv_nsec -
- up->ts.tv_nsec > NANOSECOND - RANGEGATE) ||
- (ts.tv_sec - up->ts.tv_sec == 1 && ts.tv_nsec -
- up->ts.tv_nsec < RANGEGATE))) {
- up->ts = ts;
- return (1);
+ refclock_report(peer, CEVNT_FAULT);
+ return;
}
+
+ /*
+ * There can be zero, one or two PPS seconds between polls. If
+ * zero, either the poll clock is slightly faster than the PPS
+ * clock or the PPS clock has died. If the PPS clock advanced
+ * once between polls, we make sure the fraction time difference
+ * since the last sample is within the range gate of 5 ms (500
+ * PPM). If the PPS clock advanced twice since the last poll,
+ * the poll bracketed more than one second and the first second
+ * was lost to a slip. Since the interval since the last sample
+ * found is now two seconds, just widen the range gate. If the
+ * PPS clock advanced three or more times, either the signal has
+ * failed for a number of seconds or we have runts, in which
+ * case just ignore them.
+ *
+ * If flag4 is lit, record each second offset to clockstats.
+ * That's so we can make awesome Allan deviation plots.
+ */
+ sec = ts.tv_sec - up->ts.tv_sec;
+ nsec = ts.tv_nsec - up->ts.tv_nsec;
up->ts = ts;
+ if (nsec < 0) {
+ sec --;
+ nsec += NANOSECOND;
+ } else if (nsec >= NANOSECOND) {
+ sec++;
+ nsec -= NANOSECOND;
+ }
+ if (sec * NANOSECOND + nsec > NANOSECOND + RANGEGATE)
+ return;
+
+ else if (sec * NANOSECOND + nsec < NANOSECOND - RANGEGATE)
+ return;
+
pp->lastrec.l_ui = ts.tv_sec + JAN_1970;
dtemp = ts.tv_nsec * FRAC / 1e9;
if (dtemp >= FRAC)
@@ -371,11 +407,16 @@ atom_pps(
ts.tv_nsec -= NANOSECOND;
dtemp = -(double)ts.tv_nsec / NANOSECOND;
SAMPLE(dtemp + pp->fudgetime1);
+ if (pp->sloppyclockflag & CLK_FLAG4){
+ sprintf(tbuf, "%.9f", dtemp);
+ record_clock_stats(&peer->srcadr, tbuf);
+ }
#ifdef DEBUG
if (debug > 1)
- printf("atom_pps %f %f\n", dtemp, pp->fudgetime1);
+ printf("atom_timer: %lu %f %f\n", current_time,
+ dtemp, pp->fudgetime1);
#endif
- return (0);
+ return;
}
#endif /* HAVE_PPSAPI */
@@ -387,6 +428,9 @@ atom_pps(
* processes PPS information. It processes the PPS timestamp and saves
* the sign-extended fraction in a circular buffer for processing at the
* next poll event. This works only for a single PPS device.
+ *
+ * The routine should be used by another configured driver ONLY when
+ * this driver is configured as well and the PPSAPI is NOT in use.
*/
int
pps_sample(
@@ -399,8 +443,9 @@ pps_sample(
double doffset;
peer = pps_peer;
- if (peer == 0) /* nobody home */
+ if (peer == NULL)
return (1);
+
pp = peer->procptr;
/*
@@ -417,12 +462,9 @@ pps_sample(
return (0);
}
+
/*
* atom_poll - called by the transmit procedure
- *
- * This routine is called once per second when in burst mode to save PPS
- * sample offsets in the median filter. At the end of the burst period
- * the samples are processed as a heap and the clock filter updated.
*/
static void
atom_poll(
@@ -431,66 +473,37 @@ atom_poll(
)
{
struct refclockproc *pp;
-#ifdef HAVE_PPSAPI
- int err;
-#endif /* HAVE_PPSAPI */
-
- /*
- * Accumulate samples in the median filter. If a noise sample,
- * return with no prejudice; if a protocol error, get mean;
- * otherwise, cool. At the end of each poll interval, do a
- * little bookeeping and process the surviving samples.
- */
pp = peer->procptr;
pp->polls++;
-#ifdef HAVE_PPSAPI
- err = atom_pps(peer);
- if (err < 0) {
- refclock_report(peer, CEVNT_FAULT);
- return;
- }
-#endif /* HAVE_PPSAPI */
/*
* Valid time is returned only if the prefer peer has survived
- * the intersection algorithm and within clock_max of local time
+ * the intersection algorithm and within 0.4 s of local time
* and not too long ago. This ensures the PPS time is within
- * +-0.5 s of the local time and the seconds numbering is
- * unambiguous. Note that the leap bits are set no-warning on
- * the first valid update and the stratum is set at the prefer
- * peer, unless overriden by a fudge command.
+ * 0.5 s of the local time and the seconds numbering is
+ * unambiguous. Note that the leap bits, stratum and refid are
+ * set from the prefer peer, unless overriden by a fudge
+ * command.
*/
- if (peer->burst > 0)
- return;
- peer->leap = LEAP_NOTINSYNC;
if (pp->codeproc == pp->coderecv) {
refclock_report(peer, CEVNT_TIMEOUT);
- peer->burst = ASTAGE;
return;
} else if (sys_prefer == NULL) {
pp->codeproc = pp->coderecv;
- peer->burst = ASTAGE;
return;
- } else if (fabs(sys_prefer->offset) > clock_max) {
+ } else if (fabs(sys_prefer->offset) >= 0.4) {
pp->codeproc = pp->coderecv;
- peer->burst = ASTAGE;
return;
}
- pp->leap = LEAP_NOWARNING;
+ pp->leap = sys_prefer->leap;
if (pp->stratum >= STRATUM_UNSPEC)
peer->stratum = sys_prefer->stratum;
else
peer->stratum = pp->stratum;
- if (peer->stratum == STRATUM_REFCLOCK || peer->stratum ==
- STRATUM_UNSPEC)
- peer->refid = pp->refid;
- else
- peer->refid = addr2refid(&sys_prefer->srcadr);
pp->lastref = pp->lastrec;
refclock_receive(peer);
- peer->burst = ASTAGE;
}
#else
int refclock_atom_bs;
@@ -499,6 +512,6 @@ pps_sample(
l_fp *offset /* PPS offset */
)
{
- return 1;
+ return (1);
}
#endif /* REFCLOCK */
diff --git a/contrib/ntp/ntpd/refclock_bancomm.c b/contrib/ntp/ntpd/refclock_bancomm.c
index a63be44..9fc8c82 100644
--- a/contrib/ntp/ntpd/refclock_bancomm.c
+++ b/contrib/ntp/ntpd/refclock_bancomm.c
@@ -25,6 +25,21 @@
*
* Installation of the Datum/Bancomm driver creates the
* device file /dev/btfp0
+ *
+ * 04/28/2005 Rob Neal
+ * Modified to add support for Symmetricom bc637PCI-U Time &
+ * Frequency Processor.
+ * Card bus type (VME/VXI or PCI) and environment are specified via the
+ * "mode" keyword on the server command in ntp.conf.
+ * server 127.127.16.u prefer mode m (...)
+ * Modes currently supported are
+ * 1 : FreeBSD PCI 635/637.
+ * 2 : Linux or Windows PCI 635/637.
+ * not specified, or other number:
+ * : Assumed to be VME/VXI legacy Bancomm card on Solaris.
+ * Linux and Windows platforms require Symmetricoms' proprietary driver
+ * for the TFP card.
+ * Tested on FreeBSD 5.3 with a 637 card.
*/
#ifdef HAVE_CONFIG_H
@@ -49,7 +64,6 @@ struct btfp_time /* Structure for reading 5 time words */
{
unsigned short btfp_time[5]; /* Time words 0,1,2,3, and 4. (16bit)*/
};
-
/* SunOS5 ioctl commands definitions.*/
#define BTFPIOC ( 'b'<< 8 )
#define IOCIO( l, n ) ( BTFPIOC | n )
@@ -61,11 +75,16 @@ struct btfp_time /* Structure for reading 5 time words */
#define RUNLOCK IOCIOR(b, 19, int ) /* Release Capture Lockout */
#define RCR0 IOCIOR(b, 22, int ) /* Read control register zero.*/
#define WCR0 IOCIOWN(b, 23, int) /* Write control register zero*/
-
/***** Compound ioctl commands *****/
/* Read all 5 time words in one call. */
#define READTIME IOCIORN(b, 32, sizeof( struct btfp_time ))
+
+#if defined(__FreeBSD__)
+#undef READTIME
+#define READTIME _IOR('u', 5, struct btfp_time )
+#endif
+
#define VMEFD "/dev/btfp0"
struct vmedate { /* structure returned by get_vmetime.c */
@@ -74,11 +93,12 @@ struct vmedate { /* structure returned by get_vmetime.c */
unsigned short hr;
unsigned short mn;
unsigned short sec;
- unsigned long frac;
+ long frac;
unsigned short status;
};
/* END OF STUFF FROM RES */
+typedef void *SYMMT_PCI_HANDLE;
/*
* VME interface parameters.
@@ -99,7 +119,7 @@ extern u_long current_time; /* current time(s) */
/*
* Imported from ntpd module
*/
-extern int debug; /* global debug flag */
+extern volatile int debug; /* global debug flag */
/*
* VME unit control structure.
@@ -114,12 +134,20 @@ struct vmeunit {
/*
* Function prototypes
*/
-static void vme_init (void);
static int vme_start (int, struct peer *);
static void vme_shutdown (int, struct peer *);
static void vme_receive (struct recvbuf *);
static void vme_poll (int unit, struct peer *);
-struct vmedate *get_datumtime(struct vmedate *);
+struct vmedate *get_datumtime(struct vmedate *);
+void tvme_fill(struct vmedate *, uint32_t btm[2]);
+/*
+ * Define the bc*() functions as weak so we can compile/link without them.
+ * Only clients with the card will have the proprietary vendor device driver
+ * and interface library needed for use on Linux/Windows platforms.
+ */
+extern uint32_t __attribute__ ((weak)) bcReadBinTime(SYMMT_PCI_HANDLE, uint32_t *, uint32_t*, uint8_t*);
+extern SYMMT_PCI_HANDLE __attribute__ ((weak)) bcStartPci(void);
+extern void __attribute__ ((weak)) bcStopPci(SYMMT_PCI_HANDLE);
/*
* Transfer vector
@@ -136,6 +164,8 @@ struct refclock refclock_bancomm = {
int fd_vme; /* file descriptor for ioctls */
int regvalue;
+int tfp_type; /* mode selector, indicate platform and driver interface */
+SYMMT_PCI_HANDLE stfp_handle;
/*
@@ -151,7 +181,17 @@ vme_start(
struct refclockproc *pp;
int dummy;
char vmedev[20];
-
+
+ tfp_type = (int)(peer->ttl);
+ switch (tfp_type) {
+ case 1:
+ break;
+ case 2:
+ stfp_handle = bcStartPci(); /* init the card in lin/win */
+ break;
+ default:
+ break;
+ }
/*
* Open VME device
*/
@@ -163,13 +203,20 @@ vme_start(
msyslog(LOG_ERR, "vme_start: failed open of %s: %m", vmedev);
return (0);
}
- else { /* Release capture lockout in case it was set from before. */
- if( ioctl( fd_vme, RUNLOCK, &dummy ) )
- msyslog(LOG_ERR, "vme_start: RUNLOCK failed %m");
-
- regvalue = 0; /* More esoteric stuff to do... */
- if( ioctl( fd_vme, WCR0, &regvalue ) )
- msyslog(LOG_ERR, "vme_start: WCR0 failed %m");
+ else {
+ switch (tfp_type) {
+ case 1: break;
+ case 2: break;
+ default:
+ /* Release capture lockout in case it was set before. */
+ if( ioctl( fd_vme, RUNLOCK, &dummy ) )
+ msyslog(LOG_ERR, "vme_start: RUNLOCK failed %m");
+
+ regvalue = 0; /* More esoteric stuff to do... */
+ if( ioctl( fd_vme, WCR0, &regvalue ) )
+ msyslog(LOG_ERR, "vme_start: WCR0 failed %m");
+ break;
+ }
}
/*
@@ -222,6 +269,7 @@ vme_shutdown(
io_closeclock(&pp->io);
pp->unitptr = NULL;
free(vme);
+ if (tfp_type == 2) bcStopPci(stfp_handle);
}
@@ -275,7 +323,6 @@ vme_poll(
time(&tloc);
tadr = gmtime(&tloc);
tptr->year = (unsigned short)(tadr->tm_year + 1900);
-
sprintf(pp->a_lastcode,
"%3.3d %2.2d:%2.2d:%2.2d.%.6ld %1d",
@@ -292,13 +339,13 @@ vme_poll(
pp->hour = tptr->hr;
pp->minute = tptr->mn;
pp->second = tptr->sec;
- pp->usec = tptr->frac;
+ pp->nsec = tptr->frac;
#ifdef DEBUG
if (debug)
printf("pp: %3d %02d:%02d:%02d.%06ld %1x\n",
pp->day, pp->hour, pp->minute, pp->second,
- pp->usec, tptr->status);
+ pp->nsec, tptr->status);
#endif
if (tptr->status ) { /* Status 0 is locked to ref., 1 is not */
refclock_report(peer, CEVNT_BADREPLY);
@@ -325,108 +372,95 @@ vme_poll(
struct vmedate *
get_datumtime(struct vmedate *time_vme)
{
- unsigned short status;
char cbuf[7];
struct btfp_time vts;
+ uint32_t btm[2];
+ uint8_t dmy;
if ( time_vme == (struct vmedate *)NULL) {
time_vme = (struct vmedate *)malloc(sizeof(struct vmedate ));
}
- if( ioctl(fd_vme, READTIME, &vts))
- msyslog(LOG_ERR, "get_datumtime error: %m");
-
- /* if you want to actually check the validity of these registers, do a
- define of CHECK above this. I didn't find it necessary. - RES
- */
-
-#ifdef CHECK
-
- /* Get day */
- sprintf(cbuf,"%3.3x", ((vts.btfp_time[ 0 ] & 0x000f) <<8) +
- ((vts.btfp_time[ 1 ] & 0xff00) >> 8));
-
- if (isdigit(cbuf[0]) && isdigit(cbuf[1]) && isdigit(cbuf[2]) )
- time_vme->day = (unsigned short)atoi(cbuf);
- else
- time_vme->day = (unsigned short) 0;
-
- /* Get hour */
- sprintf(cbuf,"%2.2x", vts.btfp_time[ 1 ] & 0x00ff);
-
- if (isdigit(cbuf[0]) && isdigit(cbuf[1]))
- time_vme->hr = (unsigned short)atoi(cbuf);
- else
- time_vme->hr = (unsigned short) 0;
-
- /* Get minutes */
- sprintf(cbuf,"%2.2x", (vts.btfp_time[ 2 ] & 0xff00) >>8);
- if (isdigit(cbuf[0]) && isdigit(cbuf[1]))
- time_vme->mn = (unsigned short)atoi(cbuf);
- else
- time_vme->mn = (unsigned short) 0;
-
- /* Get seconds */
- sprintf(cbuf,"%2.2x", vts.btfp_time[ 2 ] & 0x00ff);
-
- if (isdigit(cbuf[0]) && isdigit(cbuf[1]))
- time_vme->sec = (unsigned short)atoi(cbuf);
- else
- time_vme->sec = (unsigned short) 0;
-
- /* Get microseconds. Yes, we ignore the 0.1 microsecond digit so we can
- use the TVTOTSF function later on...*/
+ switch (tfp_type) {
+ case 1: /* BSD, PCI, 2 32bit time words */
+ if (ioctl(fd_vme, READTIME, &btm)) {
+ msyslog(LOG_ERR, "get_bc63x error: %m");
+ return(NULL);
+ }
+ tvme_fill(time_vme, btm);
+ break;
- sprintf(cbuf,"%4.4x%2.2x", vts.btfp_time[ 3 ],
- vts.btfp_time[ 4 ]>>8);
+ case 2: /* Linux/Windows, PCI, 2 32bit time words */
+ if (bcReadBinTime(stfp_handle, &btm[1], &btm[0], &dmy) == 0) {
+ msyslog(LOG_ERR, "get_datumtime error: %m");
+ return(NULL);
+ }
+ tvme_fill(time_vme, btm);
+ break;
- if (isdigit(cbuf[0]) && isdigit(cbuf[1]) && isdigit(cbuf[2])
- && isdigit(cbuf[3]) && isdigit(cbuf[4]) && isdigit(cbuf[5]))
- time_vme->frac = (u_long) atoi(cbuf);
- else
- time_vme->frac = (u_long) 0;
-#else
+ default: /* legacy bancomm card */
- /* DONT CHECK just trust the card */
+ if (ioctl(fd_vme, READTIME, &vts)) {
+ msyslog(LOG_ERR, "get_datumtime error: %m");
+ return(NULL);
+ }
+ /* Get day */
+ sprintf(cbuf,"%3.3x", ((vts.btfp_time[ 0 ] & 0x000f) <<8) +
+ ((vts.btfp_time[ 1 ] & 0xff00) >> 8));
+ time_vme->day = (unsigned short)atoi(cbuf);
- /* Get day */
- sprintf(cbuf,"%3.3x", ((vts.btfp_time[ 0 ] & 0x000f) <<8) +
- ((vts.btfp_time[ 1 ] & 0xff00) >> 8));
- time_vme->day = (unsigned short)atoi(cbuf);
+ /* Get hour */
+ sprintf(cbuf,"%2.2x", vts.btfp_time[ 1 ] & 0x00ff);
- /* Get hour */
- sprintf(cbuf,"%2.2x", vts.btfp_time[ 1 ] & 0x00ff);
+ time_vme->hr = (unsigned short)atoi(cbuf);
- time_vme->hr = (unsigned short)atoi(cbuf);
+ /* Get minutes */
+ sprintf(cbuf,"%2.2x", (vts.btfp_time[ 2 ] & 0xff00) >>8);
+ time_vme->mn = (unsigned short)atoi(cbuf);
- /* Get minutes */
- sprintf(cbuf,"%2.2x", (vts.btfp_time[ 2 ] & 0xff00) >>8);
- time_vme->mn = (unsigned short)atoi(cbuf);
+ /* Get seconds */
+ sprintf(cbuf,"%2.2x", vts.btfp_time[ 2 ] & 0x00ff);
+ time_vme->sec = (unsigned short)atoi(cbuf);
- /* Get seconds */
- sprintf(cbuf,"%2.2x", vts.btfp_time[ 2 ] & 0x00ff);
- time_vme->sec = (unsigned short)atoi(cbuf);
+ /* Get microseconds. Yes, we ignore the 0.1 microsecond digit so
+ we can use the TVTOTSF function later on...*/
- /* Get microseconds. Yes, we ignore the 0.1 microsecond digit so we can
- use the TVTOTSF function later on...*/
+ sprintf(cbuf,"%4.4x%2.2x", vts.btfp_time[ 3 ],
+ vts.btfp_time[ 4 ]>>8);
- sprintf(cbuf,"%4.4x%2.2x", vts.btfp_time[ 3 ],
- vts.btfp_time[ 4 ]>>8);
+ time_vme->frac = (u_long) atoi(cbuf);
- time_vme->frac = (u_long) atoi(cbuf);
+ /* Get status bit */
+ time_vme->status = (vts.btfp_time[0] & 0x0010) >>4;
-#endif /* CHECK */
+ break;
+ }
- /* Get status bit */
- status = (vts.btfp_time[0] & 0x0010) >>4;
- time_vme->status = status; /* Status=0 if locked to ref. */
- /* Status=1 if flywheeling */
- if (status) { /* lost lock ? */
+ if (time_vme->status)
return ((void *)NULL);
- }
else
return (time_vme);
}
+/* Assign values to time_vme struct. Mostly for readability */
+void
+tvme_fill(struct vmedate *time_vme, uint32_t btm[2])
+{
+ struct tm maj;
+ uint32_t dmaj, dmin;
+
+ dmaj = btm[1]; /* syntax sugar */
+ dmin = btm[0];
+
+ gmtime_r(&dmaj, &maj);
+ time_vme->day = maj.tm_yday+1;
+ time_vme->hr = maj.tm_hour;
+ time_vme->mn = maj.tm_min;
+ time_vme->sec = maj.tm_sec;
+ time_vme->frac = (dmin & 0x000fffff) * 1000;
+ time_vme->frac += ((dmin & 0x00f00000) >> 20) * 100;
+ time_vme->status = (dmin & 0x01000000) >> 24;
+ return;
+}
#else
int refclock_bancomm_bs;
diff --git a/contrib/ntp/ntpd/refclock_chu.c b/contrib/ntp/ntpd/refclock_chu.c
index e0c79e2..843e9aaa 100644
--- a/contrib/ntp/ntpd/refclock_chu.c
+++ b/contrib/ntp/ntpd/refclock_chu.c
@@ -208,12 +208,12 @@
#define BAUD 300 /* modulation rate (bps) */
#define OFFSET 128 /* companded sample offset */
#define SIZE 256 /* decompanding table size */
-#define MAXSIG 6000. /* maximum signal level */
+#define MAXAMP 6000. /* maximum signal level */
#define MAXCLP 100 /* max clips above reference per s */
#define LIMIT 1000. /* soft limiter threshold */
#define AGAIN 6. /* baseband gain */
#define LAG 10 /* discriminator lag */
-#define DEVICE_AUDIO "/dev/chu_audio" /* device name */
+#define DEVICE_AUDIO "/dev/audio" /* device name */
#define DESCRIPTION "CHU Audio/Modem Receiver" /* WRU */
#define AUDIO_BUFSIZ 240 /* audio buffer size (30 ms) */
#else
@@ -655,15 +655,15 @@ chu_audio_receive(
sample = up->comp[~*dpt++ & 0xff];
/*
- * Clip noise spikes greater than MAXSIG. If no clips,
+ * Clip noise spikes greater than MAXAMP. If no clips,
* increase the gain a tad; if the clips are too high,
* decrease a tad.
*/
- if (sample > MAXSIG) {
- sample = MAXSIG;
+ if (sample > MAXAMP) {
+ sample = MAXAMP;
up->clipcnt++;
- } else if (sample < -MAXSIG) {
- sample = -MAXSIG;
+ } else if (sample < -MAXAMP) {
+ sample = -MAXAMP;
up->clipcnt++;
}
chu_rf(peer, sample);
@@ -1112,7 +1112,7 @@ chu_b(
up->tstamp[up->ntstamp] = up->cstamp[i];
L_SUB(&up->tstamp[up->ntstamp], &offset);
L_ADD(&offset, &up->charstamp);
- if (up->ntstamp < MAXSTAGE)
+ if (up->ntstamp < MAXSTAGE - 1)
up->ntstamp++;
}
}
@@ -1216,7 +1216,7 @@ chu_a(
up->tstamp[up->ntstamp] = up->cstamp[i];
L_SUB(&up->tstamp[up->ntstamp], &offset);
L_ADD(&offset, &up->charstamp);
- if (up->ntstamp < MAXSTAGE)
+ if (up->ntstamp < MAXSTAGE - 1)
up->ntstamp++;
}
while (temp > up->prevsec) {
@@ -1231,7 +1231,7 @@ chu_a(
}
i = -(2 * k);
for (j = 0; j < nchar; j++) {
- if (i < 0 || i > 19) {
+ if (i < 0 || i > 18) {
i += 2;
continue;
}
diff --git a/contrib/ntp/ntpd/refclock_conf.c b/contrib/ntp/ntpd/refclock_conf.c
index 8a424f0..dc29d1e 100644
--- a/contrib/ntp/ntpd/refclock_conf.c
+++ b/contrib/ntp/ntpd/refclock_conf.c
@@ -24,7 +24,7 @@ extern struct refclock refclock_local;
#define refclock_local refclock_none
#endif
-#if defined(CLOCK_TRAK) && defined(PPS)
+#if 0 && defined(CLOCK_TRAK) && defined(PPS)
extern struct refclock refclock_trak;
#else
#define refclock_trak refclock_none
@@ -96,7 +96,7 @@ extern struct refclock refclock_irig;
#define refclock_irig refclock_none
#endif
-#if defined(CLOCK_MSFEES) && defined(PPS)
+#if 0 && defined(CLOCK_MSFEES) && defined(PPS)
extern struct refclock refclock_msfees;
#else
#define refclock_msfees refclock_none
@@ -144,18 +144,6 @@ extern struct refclock refclock_atom;
#define refclock_atom refclock_none
#endif
-#ifdef CLOCK_PTBACTS
-extern struct refclock refclock_ptb;
-#else
-#define refclock_ptb refclock_none
-#endif
-
-#ifdef CLOCK_USNO
-extern struct refclock refclock_usno;
-#else
-#define refclock_usno refclock_none
-#endif
-
#ifdef CLOCK_HPGPS
extern struct refclock refclock_hpgps;
#else
@@ -186,7 +174,7 @@ extern struct refclock refclock_palisade;
#define refclock_palisade refclock_none
#endif
-#if defined(CLOCK_ONCORE) && defined(HAVE_PPSAPI)
+#if defined(CLOCK_ONCORE)
extern struct refclock refclock_oncore;
#else
#define refclock_oncore refclock_none
@@ -279,7 +267,7 @@ extern struct refclock refclock_neoclock4x;
struct refclock *refclock_conf[] = {
&refclock_none, /* 0 REFCLK_NONE */
&refclock_local, /* 1 REFCLK_LOCAL */
- &refclock_trak, /* 2 REFCLK_GPS_TRAK */
+ &refclock_none, /* 2 deprecated: REFCLK_GPS_TRAK */
&refclock_pst, /* 3 REFCLK_WWV_PST */
&refclock_wwvb, /* 4 REFCLK_SPECTRACOM */
&refclock_true, /* 5 REFCLK_TRUETIME */
@@ -291,18 +279,18 @@ struct refclock *refclock_conf[] = {
&refclock_arbiter, /* 11 REFCLK_GPS_ARBITER */
&refclock_tpro, /* 12 REFCLK_IRIG_TPRO */
&refclock_leitch, /* 13 REFCLK_ATOM_LEITCH */
- &refclock_msfees, /* 14 REFCLK_MSF_EES */
- &refclock_true, /* 15 alias for REFCLK_TRUETIME */
+ &refclock_none, /* 14 deprecated: REFCLK_MSF_EES */
+ &refclock_none, /* 15 not used */
&refclock_bancomm, /* 16 REFCLK_IRIG_BANCOMM */
&refclock_datum, /* 17 REFCLK_GPS_DATUM */
- &refclock_acts, /* 18 REFCLK_NIST_ACTS */
+ &refclock_acts, /* 18 REFCLK_ACTS */
&refclock_heath, /* 19 REFCLK_WWV_HEATH */
&refclock_nmea, /* 20 REFCLK_GPS_NMEA */
&refclock_gpsvme, /* 21 REFCLK_GPS_VME */
&refclock_atom, /* 22 REFCLK_ATOM_PPS */
- &refclock_ptb, /* 23 REFCLK_PTB_ACTS */
- &refclock_usno, /* 24 REFCLK_USNO */
- &refclock_true, /* 25 alias for REFCLK_TRUETIME */
+ &refclock_none, /* 23 not used */
+ &refclock_none, /* 24 not used */
+ &refclock_none, /* 25 not used */
&refclock_hpgps, /* 26 REFCLK_GPS_HP */
&refclock_arc, /* 27 REFCLK_ARCRON_MSF */
&refclock_shm, /* 28 REFCLK_SHM */
diff --git a/contrib/ntp/ntpd/refclock_datum.c b/contrib/ntp/ntpd/refclock_datum.c
index 82b7369..b26fe73 100644
--- a/contrib/ntp/ntpd/refclock_datum.c
+++ b/contrib/ntp/ntpd/refclock_datum.c
@@ -119,6 +119,7 @@
#define REFID "DATM" /* reference id */
#define DATUM_DISPERSION 0 /* fixed dispersion = 0 ms */
#define DATUM_MAX_ERROR 0.100 /* limits on sigma squared */
+#define DATUM_DEV "/dev/datum" /* device name */
#define DATUM_MAX_ERROR2 (DATUM_MAX_ERROR*DATUM_MAX_ERROR)
@@ -233,6 +234,7 @@ datum_pts_start(
{
struct datum_pts_unit **temp_datum_pts_unit;
struct datum_pts_unit *datum_pts;
+ int fd;
#ifdef HAVE_TERMIOS
struct termios arg;
#endif
@@ -243,6 +245,16 @@ datum_pts_start(
#endif
/*
+ ** Open the Datum PTS device
+ */
+ fd = open(DATUM_DEV, O_RDWR);
+
+ if (fd < 0) {
+ msyslog(LOG_ERR, "Datum_PTS: open(\"%s\", O_RDWR) failed: %m", DATUM_DEV);
+ return 0;
+ }
+
+ /*
** Create the memory for the new unit
*/
@@ -260,11 +272,7 @@ datum_pts_start(
datum_pts->yearstart = 0; /* initialize the yearstart to 0 */
datum_pts->sigma2 = 0.0; /* initialize the sigma2 to 0 */
- /*
- ** Open the Datum PTS device
- */
-
- datum_pts->PTS_fd = open("/dev/datum",O_RDWR);
+ datum_pts->PTS_fd = fd;
fcntl(datum_pts->PTS_fd, F_SETFL, 0); /* clear the descriptor flags */
diff --git a/contrib/ntp/ntpd/refclock_fg.c b/contrib/ntp/ntpd/refclock_fg.c
index ebcf1b5..ce5085a 100644
--- a/contrib/ntp/ntpd/refclock_fg.c
+++ b/contrib/ntp/ntpd/refclock_fg.c
@@ -323,9 +323,6 @@ fg_receive(
printf ("fg: time is %04d/%03d %02d:%02d:%02d UTC\n",
pp->year, pp->day, pp->hour, pp->minute, pp->second);
#endif
-
- if (peer->stratum <= 1)
- peer->refid = pp->refid;
pp->disp = (10e-6);
pp->lastrec = rbufp->recv_time; /* Is it better than get_systime()? */
/* pp->leap = LEAP_NOWARNING; */
diff --git a/contrib/ntp/ntpd/refclock_gpsvme.c b/contrib/ntp/ntpd/refclock_gpsvme.c
index a7fcf5f..9f9e85c 100644
--- a/contrib/ntp/ntpd/refclock_gpsvme.c
+++ b/contrib/ntp/ntpd/refclock_gpsvme.c
@@ -1,622 +1,254 @@
-/*
- * refclock_gpsvme.c NTP clock driver for the TrueTime GPS-VME
- * R. Schmidt, Time Service, US Naval Obs. res@tuttle.usno.navy.mil
- *
- * The refclock type has been defined as 16 (until new id assigned).
- * These DEFS are included in the Makefile:
- * DEFS= -DHAVE_TERMIOS -DSYS_HPUX=9
- * DEFS_LOCAL= -DREFCLOCK
- * CLOCKDEFS= -DGPSVME
- * The file map_vme.c does the VME memory mapping, and includes vme_init().
- * map_vme.c is HP-UX specific, because HPUX cannot mmap() device files! Boo!
- * The file gps.h provides TrueTime register info.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#if defined(REFCLOCK) && defined(CLOCK_GPSVME)
-
-#include "ntpd.h"
-#include "ntp_io.h"
-#include "ntp_refclock.h"
-#include "ntp_unixtime.h"
-#include "ntp_stdlib.h"
-
-#include <stdio.h>
-#include <syslog.h>
-#include <ctype.h>
-
-#include "gps.h"
-#include "/etc/conf/h/io.h"
-
-/* GLOBAL STUFF BY RES */
-
-#include <time.h>
-
-#define PRIO 120 /* set the realtime priority */
-#define NREGS 7 /* number of registers we will use */
-
-extern int init_vme(); /* This is just a call to map_vme() */
- /* It doesn't have to be extern */
- /* the map_vme() call */
-extern unsigned short *greg[NREGS]; /* made extern to avoid being in both map_vme.c and this file */
-extern void *gps_base; /* mjb lmco 12/20/99 */
-
-extern caddr_t map_vme ();
-extern void unmap_vme(); /* Unmaps the VME space */
-
-struct vmedate { /* structure needed by ntp */
- unsigned short year; /* *tptr is a pointer to this */
- unsigned short doy;
- unsigned short hr;
- unsigned short mn;
- unsigned short sec;
- unsigned long frac;
- unsigned short status;
+/* refclock_psc.c: clock driver for Brandywine PCI-SyncClock32/HP-UX 11.X */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif /* HAVE_CONFIG_H */
+
+#if defined(REFCLOCK) && defined(CLOCK_GPSVME)
+
+#include "ntpd.h"
+#include "ntp_io.h"
+#include "ntp_refclock.h"
+#include "ntp_unixtime.h"
+#include "ntp_stdlib.h"
+
+#ifdef __hpux
+#include <sys/rtprio.h> /* may already be included above */
+#include <sys/lock.h> /* NEEDED for PROCLOCK */
+#endif /* __hpux */
+
+#ifdef __linux__
+#include <sys/ioctl.h> /* for _IOR, ioctl */
+#endif /* __linux__ */
+
+enum { /* constants */
+ BUFSIZE = 32,
+ PSC_SYNC_OK = 0x40, /* Sync status bit */
+ DP_LEAPSEC_DAY10DAY1 = 0x82, /* DP RAM address */
+ DP_LEAPSEC_DAY1000DAY100 = 0x83,
+ DELAY = 1,
+ NUNIT = 2 /* max UNITS */
};
-struct vmedate *get_gpsvme_time();
-struct vmedate * time_vme; /* added to emulate LM refclock_gpsvme
- (Made global per RES suggestion to fix mem leak DW lmco) mjb lmco 12/15/99 */
-
-/* END OF STUFF FROM RES */
-
-/*
- * Definitions
- */
-#define MAXUNITS 2 /* max number of VME units */
-#define BMAX 50 /* timecode buffer length */
-
-/*
- * VME interface parameters.
- */
-#define VMEPRECISION (-21) /* precision assumed (1 us) */
-#define USNOREFID "USNO\0" /* Or whatever? */
-#define VMEREFID "GPS" /* reference id */
-#define VMEDESCRIPTION "GPS" /* who we are */
-#define VMEHSREFID 0x7f7f1001 /* 127.127.16.01 refid hi strata */
-
-/* I'm using clock type 16 until one is assigned */
-/* This is set also in vme_control, below */
-
-
-#define GMT 0 /* hour offset from Greenwich */
-
-/*
- * VME unit control structure.
- */
-struct vmeunit {
- struct peer *peer; /* associated peer structure */
- struct refclockio io; /* given to the I/O handler */
- struct vmedate vmedata; /* data returned from vme read */
- l_fp lastrec; /* last local time */
- l_fp lastref; /* last timecode time */
- char lastcode[BMAX]; /* last timecode received */
- u_short lencode; /* length of last timecode */
- u_long lasttime; /* last time clock heard from */
- u_short unit; /* unit number for this guy */
- u_short status; /* clock status */
- u_short lastevent; /* last clock event */
- u_short year; /* year of eternity */
- u_short day; /* day of year */
- u_short hour; /* hour of day */
- u_short minute; /* minute of hour */
- u_short second; /* seconds of minute */
- u_long usec; /* microsecond of second */
- u_long yearstart; /* start of current year */
- u_short leap; /* leap indicators */
- /*
- * Status tallies
- */
- u_long polls; /* polls sent */
- u_long noreply; /* no replies to polls */
- u_long coderecv; /* timecodes received */
- u_long badformat; /* bad format */
- u_long baddata; /* bad data */
- u_long timestarted; /* time we started this */
+/* clock card registers */
+struct psc_regs {
+ uint32_t low_time; /* card base + 0x00 */
+ uint32_t high_time; /* card base + 0x04 */
+ uint32_t ext_low_time; /* card base + 0x08 */
+ uint32_t ext_high_time; /* card base + 0x0C */
+ uint8_t device_status; /* card base + 0x10 */
+ uint8_t device_control; /* card base + 0x11 */
+ uint8_t reserved0; /* card base + 0x12 */
+ uint8_t ext_100ns; /* card base + 0x13 */
+ uint8_t match_usec; /* card base + 0x14 */
+ uint8_t match_msec; /* card base + 0x15 */
+ uint8_t reserved1; /* card base + 0x16 */
+ uint8_t reserved2; /* card base + 0x17 */
+ uint8_t reserved3; /* card base + 0x18 */
+ uint8_t reserved4; /* card base + 0x19 */
+ uint8_t dp_ram_addr; /* card base + 0x1A */
+ uint8_t reserved5; /* card base + 0x1B */
+ uint8_t reserved6; /* card base + 0x1C */
+ uint8_t reserved7; /* card base + 0x1D */
+ uint8_t dp_ram_data; /* card base + 0x1E */
+ uint8_t reserved8; /* card base + 0x1F */
+} *volatile regp[NUNIT];
+
+#define PSC_REGS _IOR('K', 0, long) /* ioctl argument */
+
+/* Macros to swap byte order and convert BCD to binary */
+#define SWAP(val) ( ((val) >> 24) | (((val) & 0x00ff0000) >> 8) | \
+(((val) & 0x0000ff00) << 8) | (((val) & 0x000000ff) << 24) )
+#define BCD2INT2(val) ( ((val) >> 4 & 0x0f)*10 + ((val) & 0x0f) )
+#define BCD2INT3(val) ( ((val) >> 8 & 0x0f)*100 + ((val) >> 4 & 0x0f)*10 + \
+((val) & 0x0f) )
+
+/* PSC interface definitions */
+#define PRECISION (-20) /* precision assumed (1 us) */
+#define REFID "USNO" /* reference ID */
+#define DESCRIPTION "Brandywine PCI-SyncClock32"
+#define DEVICE "/dev/refclock%1d" /* device file */
+
+/* clock unit control structure */
+struct psc_unit {
+ short unit; /* NTP refclock unit number */
+ short last_hour; /* last hour (monitor leap sec) */
+ int msg_flag[2]; /* count error messages */
};
+int fd[NUNIT]; /* file descriptor */
-/*
- * Data space for the unit structures. Note that we allocate these on
- * the fly, but never give them back.
- */
-static struct vmeunit *vmeunits[MAXUNITS];
-static u_char unitinuse[MAXUNITS];
+/* Local function prototypes */
+static int psc_start(int, struct peer *);
+static void psc_shutdown(int, struct peer *);
+static void psc_poll(int, struct peer *);
+static void check_leap_sec(struct refclockproc *, int);
-/*
- * Keep the fudge factors separately so they can be set even
- * when no clock is configured.
- */
-static l_fp fudgefactor[MAXUNITS];
-static u_char stratumtouse[MAXUNITS];
-static u_char sloppyclockflag[MAXUNITS];
-
-/*
- * Function prototypes
- */
-static void vme_init (void);
-static int vme_start (int, struct peer *);
-static void vme_shutdown (int, struct peer *);
-static void vme_report_event (struct vmeunit *, int);
-static void vme_receive (struct recvbuf *);
-static void vme_poll (int unit, struct peer *);
-static void vme_control (int, struct refclockstat *, struct refclockstat *, struct peer *);
-static void vme_buginfo (int, struct refclockbug *, struct peer *);
-
-/*
- * Transfer vector
- */
-struct refclock refclock_gpsvme = {
- vme_start, vme_shutdown, vme_poll,
- vme_control, vme_init, vme_buginfo, NOFLAGS
+/* Transfer vector */
+struct refclock refclock_gpsvme = {
+ psc_start, psc_shutdown, psc_poll, noentry, noentry, noentry, NOFLAGS
};
-int fd_vme; /* file descriptor for ioctls */
-int regvalue;
-
-/*
- * vme_init - initialize internal vme driver data
- */
-static void
-vme_init(void)
-{
- register int i;
- /*
- * Just zero the data arrays
- */
- /*
- bzero((char *)vmeunits, sizeof vmeunits);
- bzero((char *)unitinuse, sizeof unitinuse);
- */
-
- /*
- * Initialize fudge factors to default.
- */
- for (i = 0; i < MAXUNITS; i++) {
- fudgefactor[i].l_ui = 0;
- fudgefactor[i].l_uf = 0;
- stratumtouse[i] = 0;
- sloppyclockflag[i] = 0;
- }
-}
-
-/*
- * vme_start - open the VME device and initialize data for processing
- */
+/* psc_start: open device and initialize data for processing */
static int
-vme_start(
- u_int unit,
- struct peer *peer
- )
+psc_start(
+ int unit,
+ struct peer *peer
+ )
{
- register struct vmeunit *vme;
- register int i;
- int dummy;
- char vmedev[20];
-
- /*
- * Check configuration info.
- */
- if (unit >= MAXUNITS) {
- msyslog(LOG_ERR, "vme_start: unit %d invalid", unit);
- return (0);
- }
- if (unitinuse[unit]) {
- msyslog(LOG_ERR, "vme_start: unit %d in use", unit);
- return (0);
- }
-
- /*
- * Open VME device
- */
-#ifdef DEBUG
-
- printf("Opening VME DEVICE \n");
-#endif
- init_vme(); /* This is in the map_vme.c external file */
-
- /*
- * Allocate unit structure
- */
- if (vmeunits[unit] != 0) {
- vme = vmeunits[unit]; /* The one we want is okay */
- } else {
- for (i = 0; i < MAXUNITS; i++) {
- if (!unitinuse[i] && vmeunits[i] != 0)
- break;
- }
- if (i < MAXUNITS) {
- /*
- * Reclaim this one
- */
- vme = vmeunits[i];
- vmeunits[i] = 0;
- } else {
- vme = (struct vmeunit *)
- emalloc(sizeof(struct vmeunit));
- time_vme = (struct vmedate *)malloc(sizeof(struct vmedate)); /* Added to emulate LM's refclock_gpsvme
- (added to fix mem lead DW lmco) mjb lmco 12/22/99 */
- }
- }
- bzero((char *)vme, sizeof(struct vmeunit));
- vmeunits[unit] = vme;
-
- /*
- * Set up the structures
- */
- vme->peer = peer;
- vme->unit = (u_short)unit;
- vme->timestarted = current_time;
-
- vme->io.clock_recv = vme_receive;
- vme->io.srcclock = (caddr_t)vme;
- vme->io.datalen = 0;
- vme->io.fd = fd_vme;
-
- /*
- * All done. Initialize a few random peer variables, then
- * return success.
- */
- peer->precision = VMEPRECISION;
- peer->stratum = stratumtouse[unit];
- memcpy( (char *)&peer->refid, USNOREFID,4);
-
- /* peer->refid = htonl(VMEHSREFID); */
-
- unitinuse[unit] = 1;
- return (1);
-}
-
-
-/*
- * vme_shutdown - shut down a VME clock
- */
-static void
-vme_shutdown(
- int unit
- )
-{
- register struct vmeunit *vme;
-
- if (unit >= MAXUNITS) {
- msyslog(LOG_ERR, "vme_shutdown: unit %d invalid", unit);
- return;
- }
- if (!unitinuse[unit]) {
- msyslog(LOG_ERR, "vme_shutdown: unit %d not in use", unit);
- return;
- }
-
- /*
- * Tell the I/O module to turn us off. We're history.
- */
- unmap_vme();
- vme = vmeunits[unit];
- io_closeclock(&vme->io);
- unitinuse[unit] = 0;
+ char buf[BUFSIZE];
+ struct refclockproc *pp;
+ struct psc_unit *up = emalloc(sizeof *up);
+
+ if (unit < 0 || unit > 1) { /* support units 0 and 1 */
+ msyslog(LOG_ERR, "psc_start: bad unit: %d", unit);
+ return 0;
+ }
+
+ if (!up) {
+ msyslog(LOG_ERR, "psc_start: unit: %d, emalloc: %m", unit);
+ return 0;
+ }
+ memset(up, '\0', sizeof *up);
+
+ sprintf(buf, DEVICE, unit); /* dev file name */
+ fd[unit] = open(buf, O_RDONLY); /* open device file */
+ if (fd[unit] < 0) {
+ msyslog(LOG_ERR, "psc_start: unit: %d, open failed. %m", unit);
+ return 0;
+ }
+
+ /* get the address of the mapped regs */
+ if (ioctl(fd[unit], PSC_REGS, &regp[unit]) < 0) {
+ msyslog(LOG_ERR, "psc_start: unit: %d, ioctl failed. %m", unit);
+ return 0;
+ }
+
+ /* initialize peer variables */
+ pp = peer->procptr;
+ pp->io.clock_recv = noentry;
+ pp->io.srcclock = (caddr_t) peer;
+ pp->io.datalen = 0;
+ pp->io.fd = -1;
+ pp->unitptr = (caddr_t) up;
+ get_systime(&pp->lastrec);
+ memcpy((char *)&pp->refid, REFID, 4);
+ peer->precision = PRECISION;
+ pp->clockdesc = DESCRIPTION;
+ up->unit = unit;
+#ifdef __hpux
+ rtprio(0,120); /* set real time priority */
+ plock(PROCLOCK); /* lock process in memory */
+#endif /* __hpux */
+ return 1;
}
-/*
- * vme_report_event - note the occurance of an event
- *
- * This routine presently just remembers the report and logs it, but
- * does nothing heroic for the trap handler.
- */
+/* psc_shutdown: shut down the clock */
static void
-vme_report_event(
- struct vmeunit *vme,
- int code
- )
+psc_shutdown(
+ int unit,
+ struct peer *peer
+ )
{
- struct peer *peer;
-
- peer = vme->peer;
- if (vme->status != (u_short)code) {
- vme->status = (u_short)code;
- if (code != CEVNT_NOMINAL)
- vme->lastevent = (u_short)code;
- msyslog(LOG_INFO,
- "clock %s event %x", ntoa(&peer->srcadr), code);
- }
+ free(peer->procptr->unitptr);
+ close(fd[unit]);
}
-
-/*
- * vme_receive - receive data from the VME device.
- *
- * Note: This interface would be interrupt-driven. We don't use that
- * now, but include a dummy routine for possible future adventures.
- */
+/* psc_poll: read, decode, and record device time */
static void
-vme_receive(
- struct recvbuf *rbufp
- )
+psc_poll(
+ int unit,
+ struct peer *peer
+ )
{
+ struct refclockproc *pp = peer->procptr;
+ struct psc_unit *up;
+ unsigned tlo, thi;
+ unsigned char status;
+
+ up = (struct psc_unit *) pp->unitptr;
+ tlo = regp[unit]->low_time; /* latch and read first 4 bytes */
+ thi = regp[unit]->high_time; /* read 4 higher order bytes */
+ status = regp[unit]->device_status; /* read device status byte */
+
+ if (!(status & PSC_SYNC_OK)) {
+ refclock_report(peer, CEVNT_BADTIME);
+ if (!up->msg_flag[unit]) { /* write once to system log */
+ msyslog(LOG_WARNING,
+ "SYNCHRONIZATION LOST on unit %1d, status %02x\n",
+ status, unit);
+ up->msg_flag[unit] = 1;
+ }
+ return;
+ }
+
+ get_systime(&pp->lastrec);
+ pp->polls++;
+
+ tlo = SWAP(tlo); /* little to big endian swap on */
+ thi = SWAP(thi); /* copy of data */
+ /* convert the BCD time to broken down time used by refclockproc */
+ pp->day = BCD2INT3((thi & 0x0FFF0000) >> 16);
+ pp->hour = BCD2INT2((thi & 0x0000FF00) >> 8);
+ pp->minute = BCD2INT2(thi & 0x000000FF);
+ pp->second = BCD2INT2(tlo >> 24);
+ /* ntp_process() in ntp_refclock.c appears to use usec as fraction of
+ second in microseconds if usec is nonzero. */
+ pp->nsec = 1000000*BCD2INT3((tlo & 0x00FFF000) >> 12) +
+ BCD2INT3(tlo & 0x00000FFF);
+
+ sprintf(pp->a_lastcode, "%3.3d %2.2d:%2.2d:%2.2d.%09ld %02x %08x %08x",
+ pp->day, pp->hour, pp->minute, pp->second, pp->nsec, status, thi,
+ tlo);
+ pp->lencode = strlen(pp->a_lastcode);
+
+ /* compute the timecode timestamp */
+ if (!refclock_process(pp)) {
+ refclock_report(peer, CEVNT_BADTIME);
+ return;
+ }
+ /* simulate the NTP receive and packet procedures */
+ refclock_receive(peer);
+ /* write clock statistics to file */
+ record_clock_stats(&peer->srcadr, pp->a_lastcode);
+
+ /* With the first timecode beginning the day, check for a GPS
+ leap second notification. */
+ if (pp->hour < up->last_hour) {
+ check_leap_sec(pp, unit);
+ up->msg_flag[0] = up->msg_flag[1] = 0; /* reset flags */
+ }
+ up->last_hour = pp->hour;
}
-/*
- * vme_poll - called by the transmit procedure
- */
+/* check_leap_sec: read the Dual Port RAM leap second day registers. The
+ onboard GPS receiver should write the hundreds digit of day of year in
+ DP_LeapSec_Day1000Day100 and the tens and ones digits in
+ DP_LeapSec_Day10Day1. If these values are nonzero and today, we have
+ a leap second pending, so we set the pp->leap flag to LEAP_ADDSECOND.
+ If the BCD data are zero or a date other than today, set pp->leap to
+ LEAP_NOWARNING. */
static void
-vme_poll(
- int unit,
- struct peer *peer
- )
+check_leap_sec(struct refclockproc *pp, int unit)
{
- struct vmedate *tptr;
- struct vmeunit *vme;
- l_fp tstmp;
- time_t tloc;
- struct tm *tadr;
- long ltemp;
-
-
-
- if (unit >= MAXUNITS) {
- msyslog(LOG_ERR, "vme_poll: unit %d invalid", unit);
- return;
- }
- if (!unitinuse[unit]) {
- msyslog(LOG_ERR, "vme_poll: unit %d not in use", unit);
- return;
- }
- vme = vmeunits[unit]; /* Here is the structure */
- vme->polls++;
-
- tptr = &vme->vmedata;
-
- if ((tptr = get_gpsvme_time()) == NULL ) {
- vme_report_event(vme, CEVNT_BADREPLY);
- return;
- }
-
- get_systime(&vme->lastrec);
- vme->lasttime = current_time;
-
- /*
- * Get VME time and convert to timestamp format.
- * The year must come from the system clock.
- */
- /*
- time(&tloc);
- tadr = gmtime(&tloc);
- tptr->year = (unsigned short)(tadr->tm_year + 1900);
- */
-
- sprintf(vme->lastcode,
- "%3.3d %2.2d:%2.2d:%2.2d.%.6d %1d\0",
- tptr->doy, tptr->hr, tptr->mn,
- tptr->sec, tptr->frac, tptr->status);
-
- record_clock_stats(&(vme->peer->srcadr), vme->lastcode);
- vme->lencode = (u_short) strlen(vme->lastcode);
-
- vme->day = tptr->doy;
- vme->hour = tptr->hr;
- vme->minute = tptr->mn;
- vme->second = tptr->sec;
- vme->nsec = tptr->frac * 1000;
-
-#ifdef DEBUG
- if (debug)
- printf("vme: %3d %02d:%02d:%02d.%06ld %1x\n",
- vme->day, vme->hour, vme->minute, vme->second,
- vme->nsec, tptr->status);
-#endif
- if (tptr->status ) { /* Status 0 is locked to ref., 1 is not */
- vme_report_event(vme, CEVNT_BADREPLY);
- return;
- }
-
- /*
- * Now, compute the reference time value. Use the heavy
- * machinery for the seconds and the millisecond field for the
- * fraction when present. If an error in conversion to internal
- * format is found, the program declares bad data and exits.
- * Note that this code does not yet know how to do the years and
- * relies on the clock-calendar chip for sanity.
- */
- if (!clocktime(vme->day, vme->hour, vme->minute,
- vme->second, GMT, vme->lastrec.l_ui,
- &vme->yearstart, &vme->lastref.l_ui)) {
- vme->baddata++;
- vme_report_event(vme, CEVNT_BADTIME);
- msyslog(LOG_ERR, "refclock_gpsvme: bad data!!");
- return;
- }
- vme->lastref.l_uf = 0;
- DTOLFP(vme->nsec / 1e9, &ltemp);
- L_ADD(&vme->lastrec, &ltemp);
- tstmp = vme->lastref;
-
- L_SUB(&tstmp, &vme->lastrec);
- vme->coderecv++;
-
- L_ADD(&tstmp, &(fudgefactor[vme->unit]));
- vme->lastref = vme->lastrec;
- refclock_receive(vme->peer);
-}
-
-/*
- * vme_control - set fudge factors, return statistics2
- */
-static void
-vme_control(
- u_int unit,
- struct refclockstat *in,
- struct refclockstat *out,
- struct peer * peer
- )
-{
- register struct vmeunit *vme;
-
- if (unit >= MAXUNITS) {
- msyslog(LOG_ERR, "vme_control: unit %d invalid)", unit);
- return;
- }
-
- if (in != 0) {
- if (in->haveflags & CLK_HAVETIME1)
- DTOLFP(in->fudgetime1, &fudgefactor[unit]); /* added mjb lmco 12/20/99 */
-
- if (in->haveflags & CLK_HAVEVAL1) {
- stratumtouse[unit] = (u_char)(in->fudgeval1 & 0xf);
- if (unitinuse[unit]) {
- struct peer *peer;
-
- /*
- * Should actually reselect clock, but
- * will wait for the next timecode
- */
- vme = vmeunits[unit];
- peer = vme->peer;
- peer->stratum = stratumtouse[unit];
- if (stratumtouse[unit] <= 1)
- memcpy( (char *)&peer->refid, USNOREFID,4);
- else
- peer->refid = htonl(VMEHSREFID);
- }
- }
- if (in->haveflags & CLK_HAVEFLAG1) {
- sloppyclockflag[unit] = in->flags & CLK_FLAG1;
- }
- }
-
- if (out != 0) {
- out->type = 16; /*set by RES SHOULD BE CHANGED */
- out->haveflags
- = CLK_HAVETIME1|CLK_HAVEVAL1|CLK_HAVEVAL2|CLK_HAVEFLAG1;
- out->clockdesc = VMEDESCRIPTION;
- LFPTOD(&fudgefactor[unit], out->fudgetime1); /* added mjb lmco 12/20/99 */
-
- out ->fudgetime2 = 0; /* should do what above was supposed to do mjb lmco 12/20/99 */
-
- out->fudgeval1 = (long)stratumtouse[unit]; /*changed from above LONG was not
- defined mjb lmco 12/15/99 */
-
- out->fudgeval2 = 0;
- out->flags = sloppyclockflag[unit];
- if (unitinuse[unit]) {
- vme = vmeunits[unit];
- out->lencode = vme->lencode;
- out->p_lastcode = vme->lastcode;
- out->timereset = current_time - vme->timestarted;
- out->polls = vme->polls;
- out->noresponse = vme->noreply;
- out->badformat = vme->badformat;
- out->baddata = vme->baddata;
- out->lastevent = vme->lastevent;
- out->currentstatus = vme->status;
- } else {
- out->lencode = 0;
- out->p_lastcode = "";
- out->polls = out->noresponse = 0;
- out->badformat = out->baddata = 0;
- out->timereset = 0;
- out->currentstatus = out->lastevent = CEVNT_NOMINAL;
- }
- }
-}
-
-/*
- * vme_buginfo - return clock dependent debugging info
- */
-static void
-vme_buginfo(
- int unit,
- register struct refclockbug *bug,
- struct peer * peer
- )
-{
- register struct vmeunit *vme;
-
- if (unit >= MAXUNITS) {
- msyslog(LOG_ERR, "vme_buginfo: unit %d invalid)", unit);
- return;
- }
-
- if (!unitinuse[unit])
- return;
- vme = vmeunits[unit];
-
- bug->nvalues = 11;
- bug->ntimes = 5;
- if (vme->lasttime != 0)
- bug->values[0] = current_time - vme->lasttime;
- else
- bug->values[0] = 0;
- bug->values[2] = (u_long)vme->year;
- bug->values[3] = (u_long)vme->day;
- bug->values[4] = (u_long)vme->hour;
- bug->values[5] = (u_long)vme->minute;
- bug->values[6] = (u_long)vme->second;
- bug->values[7] = (u_long)vme->nsec;
- bug->values[9] = vme->yearstart;
- bug->stimes = 0x1c;
- bug->times[0] = vme->lastref;
- bug->times[1] = vme->lastrec;
-}
-/* -------------------------------------------------------*/
-/* get_gpsvme_time() */
-/* R. Schmidt, USNO, 1995 */
-/* It's ugly, but hey, it works and its free */
-
-#include "gps.h" /* defines for TrueTime GPS-VME */
-
-#define PBIAS 193 /* 193 microsecs to read the GPS experimentally found */
-
-struct vmedate *
-get_gpsvme_time(void)
-{
- extern struct vmedate *time_vme;
- unsigned short set, hr, min, sec, ums, hms, status;
- int ret;
- char ti[3];
-
- long tloc ;
- time_t mktime(),time();
- struct tm *gmtime(), *gmt;
- char *gpsmicro;
- gpsmicro = (char *) malloc(7);
-
- *greg = (unsigned short *)malloc(sizeof(short) * NREGS);
-
-
- /* reference the freeze command address general register 1 */
- set = *greg[0];
- /* read the registers : */
- /* get year */
- time_vme->year = (unsigned short) *greg[6];
- /* Get doy */
- time_vme->doy = (unsigned short) (*greg[5] & MASKDAY);
- /* Get hour */
- time_vme->hr = (unsigned short) ((*greg[4] & MASKHI) >>8);
- /* Get minutes */
- time_vme->mn = (unsigned short) (*greg[4] & MASKLO);
- /* Get seconds */
- time_vme->sec = (unsigned short) (*greg[3] & MASKHI) >>8;
- /* get microseconds in 2 parts and put together */
- ums = *greg[2];
- hms = *greg[3] & MASKLO;
-
- time_vme->status = (unsigned short) *greg[5] >>13;
-
- /* reference the unfreeze command address general register 1 */
- set = *greg[1];
-
- sprintf(gpsmicro,"%2.2x%4.4x\0", hms, ums);
- time_vme->frac = (u_long) gpsmicro;
-
- /* unmap_vme(); */
-
- if (!status) {
- return (NULL); /* fixed mjb lmco 12/20/99 */
- }
- else
- return (time_vme);
+ unsigned char dhi, dlo;
+ int leap_day;
+
+ regp[unit]->dp_ram_addr = DP_LEAPSEC_DAY10DAY1;
+ usleep(DELAY);
+ dlo = regp[unit]->dp_ram_data;
+ regp[unit]->dp_ram_addr = DP_LEAPSEC_DAY1000DAY100;
+ usleep(DELAY);
+ dhi = regp[unit]->dp_ram_data;
+ leap_day = BCD2INT2(dlo) + 100*(dhi & 0x0F);
+
+ pp->leap = LEAP_NOWARNING; /* default */
+ if (leap_day && leap_day == pp->day) {
+ pp->leap = LEAP_ADDSECOND; /* leap second today */
+ msyslog(LOG_ERR, "LEAP_ADDSECOND flag set, day %d (%x %x).",
+ leap_day, dhi, dlo);
+ }
}
#else
-int refclock_gpsvme_bs;
-#endif /* REFCLOCK */
+int refclock_gpsvme_bs;
+#endif /* REFCLOCK */
diff --git a/contrib/ntp/ntpd/refclock_heath.c b/contrib/ntp/ntpd/refclock_heath.c
index c16cef3..a56b491 100644
--- a/contrib/ntp/ntpd/refclock_heath.c
+++ b/contrib/ntp/ntpd/refclock_heath.c
@@ -1,8 +1,10 @@
/*
- * refclock_heath - clock driver for Heath GC-1000 and and GC-1000 II
+ * refclock_heath - clock driver for Heath GC-1000
+ * (but no longer the GC-1001 Model II, which apparently never worked)
*/
+
#ifdef HAVE_CONFIG_H
-#include <config.h>
+# include <config.h>
#endif
#if defined(REFCLOCK) && defined(CLOCK_HEATH)
@@ -32,17 +34,20 @@
* occasionally being rudely stepped when the offset exceeds the default
* clock_max of 128 ms.
*
- * There are two GC-1000 versions supported by this driver. The original
+ * There were two GC-1000 versions supported by this driver. The original
* GC-1000 with RS-232 output first appeared in 1983, but dissapeared
- * from the market a few years later. The GC-1000 II with RS-232 output
+ * from the market a few years later. The GC-1001 II with RS-232 output
* first appeared circa 1990, but apparently is no longer manufactured.
* The two models differ considerably, both in interface and commands.
* The GC-1000 has a pseudo-bipolar timecode output triggered by a RTS
* transition. The timecode includes both the day of year and time of
- * day. The GC-1000 II has a true bipolar output and a complement of
+ * day. The GC-1001 II has a true bipolar output and a complement of
* single character commands. The timecode includes only the time of
* day.
*
+ * The GC-1001 II was apparently never tested and, based on a Coverity
+ * scan, apparently never worked [Bug 689]. Related code has been disabled.
+ *
* GC-1000
*
* The internal DIPswitches should be set to operate in MANUAL mode. The
@@ -78,7 +83,7 @@
* established and hh:mm:ss.? once synchronization is established and
* then lost again for about a day.
*
- * GC-1000 II
+ * GC-1001 II
*
* Commands consist of a single letter and are case sensitive. When
* enterred in lower case, a description of the action performed is
@@ -161,7 +166,9 @@
#define DESCRIPTION "Heath GC-1000 Most Accurate Clock" /* WRU */
#define LENHEATH1 23 /* min timecode length */
+#if 0 /* BUG 689 */
#define LENHEATH2 13 /* min timecode length */
+#endif
/*
* Tables to compute the ddd of year form icky dd/mm timecode. Viva la
@@ -172,7 +179,7 @@ static int day2tab[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
/*
* Baud rate table. The GC-1000 supports 1200, 2400 and 4800; the
- * GC-1000 II supports only 9600.
+ * GC-1001 II supports only 9600.
*/
static int speed[] = {B1200, B2400, B4800, B9600};
@@ -214,9 +221,10 @@ heath_start(
/*
* Open serial port
*/
- (void)sprintf(device, DEVICE, unit);
- if (!(fd = refclock_open(device, speed[peer->ttl & 0x3], 0)))
- return (0);
+ sprintf(device, DEVICE, unit);
+ if (!(fd = refclock_open(device, speed[peer->ttl & 0x3],
+ LDISC_REMOTE)))
+ return (0);
pp = peer->procptr;
pp->io.clock_recv = heath_receive;
pp->io.srcclock = (caddr_t)peer;
@@ -286,7 +294,7 @@ heath_receive(
/*
* GC-1000 timecode format: "hh:mm:ss.f AM mm/dd/yy"
- * GC-1000 II timecode format: "hh:mm:ss.f "
+ * GC-1001 II timecode format: "hh:mm:ss.f "
*/
case LENHEATH1:
if (sscanf(pp->a_lastcode,
@@ -298,16 +306,35 @@ heath_receive(
}
break;
+#if 0 /* BUG 689 */
/*
- * GC-1000 II timecode format: "hh:mm:ss.f "
+ * GC-1001 II timecode format: "hh:mm:ss.f "
*/
case LENHEATH2:
if (sscanf(pp->a_lastcode, "%2d:%2d:%2d.%c", &pp->hour,
&pp->minute, &pp->second, &dsec) != 4) {
refclock_report(peer, CEVNT_BADREPLY);
return;
+ } else {
+ struct tm *tm_time_p;
+ time_t now;
+
+ time(&now); /* we should grab 'now' earlier */
+ tm_time_p = gmtime(&now);
+ /*
+ * There is a window of time around midnight
+ * where this will Do The Wrong Thing.
+ */
+ if (tm_time_p) {
+ month = tm_time_p->tm_mon + 1;
+ day = tm_time_p->tm_mday;
+ } else {
+ refclock_report(peer, CEVNT_FAULT);
+ return;
+ }
}
break;
+#endif
default:
refclock_report(peer, CEVNT_BADREPLY);
@@ -385,12 +412,15 @@ heath_poll(
/*
* We toggle the RTS modem control lead (GC-1000) and sent a T
- * (GC-1000 II) to kick a timecode loose from the radio. This
+ * (GC-1001 II) to kick a timecode loose from the radio. This
* code works only for POSIX and SYSV interfaces. With bsd you
* are on your own. We take a timestamp between the up and down
* edges to lengthen the pulse, which should be about 50 usec on
* a Sun IPC. With hotshot CPUs, the pulse might get too short.
* Later.
+ *
+ * Bug 689: Even though we no longer support the GC-1001 II,
+ * I'm leaving the 'T' write in for timing purposes.
*/
if (ioctl(pp->io.fd, TIOCMBIC, (char *)&bits) < 0)
refclock_report(peer, CEVNT_FAULT);
diff --git a/contrib/ntp/ntpd/refclock_hopfpci.c b/contrib/ntp/ntpd/refclock_hopfpci.c
index 1b02319..81c186d 100644
--- a/contrib/ntp/ntpd/refclock_hopfpci.c
+++ b/contrib/ntp/ntpd/refclock_hopfpci.c
@@ -181,17 +181,11 @@ hopfpci_shutdown(
struct peer *peer
)
{
- struct refclockproc *pp;
- register struct hopfpciTime *up;
-
- pp = peer->procptr;
- up = (struct hopfpciTime *)pp->unitptr;
#ifndef SYS_WINNT
close(fd);
#else
CloseHopfDevice();
-/* UnmapViewOfFile (up); */
#endif
}
@@ -206,11 +200,9 @@ hopfpci_poll(
)
{
struct refclockproc *pp;
- register struct hopfpciTime *up;
HOPFTIME m_time;
pp = peer->procptr;
- up = (struct hopfpciTime *)pp->unitptr;
#ifndef SYS_WINNT
ioctl(fd,HOPF_CLOCK_GET_UTC,&m_time);
diff --git a/contrib/ntp/ntpd/refclock_hopfser.c b/contrib/ntp/ntpd/refclock_hopfser.c
index 1d27333..94b660b 100644
--- a/contrib/ntp/ntpd/refclock_hopfser.c
+++ b/contrib/ntp/ntpd/refclock_hopfser.c
@@ -30,9 +30,11 @@
#if defined HAVE_SYS_MODEM_H
# include <sys/modem.h>
-# define TIOCMSET MCSETA
-# define TIOCMGET MCGETA
-# define TIOCM_RTS MRTS
+# ifndef __QNXNTO__
+# define TIOCMSET MCSETA
+# define TIOCMGET MCGETA
+# define TIOCM_RTS MRTS
+# endif
#endif
#ifdef HAVE_TERMIOS_H
diff --git a/contrib/ntp/ntpd/refclock_hpgps.c b/contrib/ntp/ntpd/refclock_hpgps.c
index 7c801bb..5efd19e 100644
--- a/contrib/ntp/ntpd/refclock_hpgps.c
+++ b/contrib/ntp/ntpd/refclock_hpgps.c
@@ -41,6 +41,13 @@
* than 1 usec. The accuracy when operating in holdover is typically better
* than 10 usec. per day.
*
+ * The same driver also handles the HP Z3801A which is available surplus
+ * from the cell phone industry. It's popular with hams.
+ * It needs a different line setup: 19200 baud, 7 data bits, odd parity
+ * That is selected by adding "mode 1" to the server line in ntp.conf
+ * HP Z3801A code from Jeff Mock added by Hal Murray, Sep 2005
+ *
+ *
* The receiver should be operated with factory default settings.
* Initial driver operation: expects the receiver to be already locked
* to GPS, configured and able to output timecode format 2 messages.
@@ -85,6 +92,7 @@
*/
#define DEVICE "/dev/hpgps%d" /* device name and unit */
#define SPEED232 B9600 /* uart speed (9600 baud) */
+#define SPEED232Z B19200 /* uart speed (19200 baud) */
#define PRECISION (-10) /* precision assumed (about 1 ms) */
#define REFID "GPS\0" /* reference ID */
#define DESCRIPTION "HP 58503A GPS Time and Frequency Reference Receiver"
@@ -152,11 +160,18 @@ hpgps_start(
/*
* Open serial port. Use CLK line discipline, if available.
+ * Default is HP 58503A, mode arg selects HP Z3801A
*/
(void)sprintf(device, DEVICE, unit);
- if (!(fd = refclock_open(device, SPEED232, LDISC_CLK)))
- return (0);
-
+ /* mode parameter to server config line shares ttl slot */
+ if ((peer->ttl == 1)) {
+ if (!(fd = refclock_open(device, SPEED232Z,
+ LDISC_CLK | LDISC_7O1)))
+ return (0);
+ } else {
+ if (!(fd = refclock_open(device, SPEED232, LDISC_CLK)))
+ return (0);
+ }
/*
* Allocate and initialize unit structure
*/
diff --git a/contrib/ntp/ntpd/refclock_irig.c b/contrib/ntp/ntpd/refclock_irig.c
index 0b35368..6be09d9 100644
--- a/contrib/ntp/ntpd/refclock_irig.c
+++ b/contrib/ntp/ntpd/refclock_irig.c
@@ -116,13 +116,14 @@
* timestamp in NTP format.
*
* The fraction part of the on-time timestamp is a good indicator of how
- * well the driver is doing. With an UltrSPARC 30 and Solaris 2.7, this
- * thing can keep the clock within a few tens of microseconds relative
- * to the IRIG-B signal. Accuracy with IRIG-E is about ten times worse.
- * Unfortunately, Sun broke the 2.7 audio driver in 2.8, which has a
- * 10-ms sawtooth modulation. The driver attempts to remove the
- * modulation by some clever estimation techniques which mostly work.
- * Your experience may vary.
+ * well the driver is doing. Once upon a time, an UltrSPARC 30 and
+ * Solaris 2.7 kept the clock within a few tens of microseconds relative
+ * to the IRIG-B signal. Accuracy with IRIG-E was about ten times worse.
+ * Unfortunately, Sun broke the 2.7 audio driver in 2.8, which has a 10-
+ * ms sawtooth modulation. The driver attempts to remove the modulation
+ * by some clever estimation techniques which mostly work. With the
+ * "mixerctl -o" command before starting the daemon, the jitter is down
+ * to about 100 microseconds. Your experience may vary.
*
* Unlike other drivers, which can have multiple instantiations, this
* one supports only one. It does not seem likely that more than one
@@ -132,13 +133,12 @@
* Fudge factors
*
* Fudge flag4 causes the dubugging output described above to be
- * recorded in the clockstats file. When the audio driver is compiled,
- * fudge flag2 selects the audio input port, where 0 is the mike port
- * (default) and 1 is the line-in port. It does not seem useful to
- * select the compact disc player port. Fudge flag3 enables audio
- * monitoring of the input signal. For this purpose, the monitor gain is
- * set to a default value. Fudgetime2 is used as a frequency vernier for
- * broken codec sample frequency.
+ * recorded in the clockstats file. Fudge flag2 selects the audio input
+ * port, where 0 is the mike port (default) and 1 is the line-in port.
+ * It does not seem useful to select the compact disc player port. Fudge
+ * flag3 enables audio monitoring of the input signal. For this purpose,
+ * the monitor gain is set to a default value. Fudgetime2 is used as a
+ * frequency vernier for broken codec sample frequency.
*/
/*
* Interface definitions
@@ -157,7 +157,7 @@
#define FIELD 10 /* subfields per field */
#define MINTC 2 /* min PLL time constant */
#define MAXTC 20 /* max PLL time constant max */
-#define MAXSIG 6000. /* maximum signal level */
+#define MAXAMP 6000. /* maximum signal level */
#define MAXCLP 100 /* max clips above reference per s */
#define DRPOUT 100. /* dropout signal level */
#define MODMIN 0.5 /* minimum modulation index */
@@ -442,15 +442,15 @@ irig_receive(
sample = up->comp[~*dpt++ & 0xff];
/*
- * Clip noise spikes greater than MAXSIG. If no clips,
+ * Clip noise spikes greater than MAXAMP. If no clips,
* increase the gain a tad; if the clips are too high,
* decrease a tad.
*/
- if (sample > MAXSIG) {
- sample = MAXSIG;
+ if (sample > MAXAMP) {
+ sample = MAXAMP;
up->clipcnt++;
- } else if (sample < -MAXSIG) {
- sample = -MAXSIG;
+ } else if (sample < -MAXAMP) {
+ sample = -MAXAMP;
up->clipcnt++;
}
@@ -690,6 +690,7 @@ irig_base(
*/
if (up->carphase != 7)
return;
+
env = (up->lastenv[2] - up->lastenv[6]) / 2.;
lope = (up->lastint[2] - up->lastint[6]) / 2.;
if (lope > up->intmax)
@@ -939,11 +940,8 @@ irig_decode(
else
pp->leap = LEAP_NOWARNING;
up->second = (up->second + up->decim) % 60;
- if (pp->year > 0) {
+ if (pp->year > 0)
pp->year += 2000;
- if (syncchar == '0')
- up->errflg |= IRIG_ERR_CHECK;
- }
if (pp->second != up->second)
up->errflg |= IRIG_ERR_CHECK;
up->second = pp->second;
@@ -993,6 +991,7 @@ irig_poll(
if (pp->coderecv == pp->codeproc) {
refclock_report(peer, CEVNT_TIMEOUT);
return;
+
} else {
refclock_receive(peer);
record_clock_stats(&peer->srcadr, pp->a_lastcode);
diff --git a/contrib/ntp/ntpd/refclock_jjy.c b/contrib/ntp/ntpd/refclock_jjy.c
index 2aa9d6a..9d1419a 100644
--- a/contrib/ntp/ntpd/refclock_jjy.c
+++ b/contrib/ntp/ntpd/refclock_jjy.c
@@ -4,7 +4,7 @@
/**********************************************************************/
/* */
-/* Copyright (C) 2001, Takao Abe. All rights reserved. */
+/* Copyright (C) 2001-2004, Takao Abe. All rights reserved. */
/* */
/* Permission to use, copy, modify, and distribute this software */
/* and its documentation for any purpose is hereby granted */
@@ -55,9 +55,25 @@
/* [Change] Log to clockstats even if bad reply */
/* [Fix] PRECISION = (-3) (about 100 ms) */
/* [Add] Support the C-DEX Co.Ltd. JJY receiver */
+/* */
/* 2001/12/04 */
/* [Fix] C-DEX JST2000 ( fukusima@goto.info.waseda.ac.jp ) */
/* */
+/* 2002/07/12 */
+/* [Fix] Portability for FreeBSD ( patched by the user ) */
+/* */
+/* 2004/10/31 */
+/* [Change] Command send timing for the Tristate Ltd. JJY receiver */
+/* JJY-01 ( Firmware version 2.01 ) */
+/* Thanks to Andy Taki for testing under FreeBSD */
+/* */
+/* 2004/11/28 */
+/* [Add] Support the Echo Keisokuki LT-2000 receiver */
+/* */
+/* 2006/11/04 */
+/* [Fix] C-DEX JST2000 */
+/* Thanks to Hideo Kuramatsu for the patch */
+/* */
/**********************************************************************/
#ifdef HAVE_CONFIG_H
@@ -103,6 +119,18 @@
/* <ENQ>1J<ETX> <STX>JYYMMDD HHMMSSS<ETX> */
/* */
/**********************************************************************/
+/* */
+/* The Echo Keisokuki Co. Ltd. JJY receiver LT2000 */
+/* */
+/* Command Response Remarks */
+/* ------------ ---------------------- --------------------- */
+/* # Mode 1 (Request&Send) */
+/* T YYMMDDWHHMMSS<BCC1><BCC2><CR> */
+/* C Mode 2 (Continuous) */
+/* YYMMDDWHHMMSS<ST1><ST2><ST3><ST4><CR> */
+/* <SUB> Second signal */
+/* */
+/**********************************************************************/
/*
* Interface definitions
@@ -117,7 +145,8 @@
* JJY unit control structure
*/
struct jjyunit {
- char unittype ; /* UNITTYPE_XXXXXXXXXX */
+ char unittype ; /* UNITTYPE_XXXXXXXXXX */
+ short operationmode ; /* Echo Keisokuki LT-2000 : 1 or 2 */
short version ;
short linediscipline ; /* LDISC_CLK or LDISC_RAW */
int linecount ;
@@ -134,6 +163,7 @@ struct jjyunit {
#define UNITTYPE_TRISTATE_JJY01 1
#define UNITTYPE_CDEX_JST2000 2
+#define UNITTYPE_ECHOKEISOKUKI_LT2000 3
/*
* Function prototypes
@@ -143,9 +173,11 @@ static void jjy_shutdown P((int, struct peer *));
static void jjy_poll P((int, struct peer *));
static void jjy_poll_tristate_jjy01 P((int, struct peer *));
static void jjy_poll_cdex_jst2000 P((int, struct peer *));
+static void jjy_poll_echokeisokuki_lt2000 P((int, struct peer *));
static void jjy_receive P((struct recvbuf *));
static int jjy_receive_tristate_jjy01 P((struct recvbuf *));
static int jjy_receive_cdex_jst2000 P((struct recvbuf *));
+static int jjy_receive_echokeisokuki_lt2000 P((struct recvbuf *));
/*
* Transfer vector
@@ -208,6 +240,7 @@ jjy_start ( int unit, struct peer *peer )
case 0 :
case 1 : iDiscipline = LDISC_CLK ; break ;
case 2 : iDiscipline = LDISC_RAW ; break ;
+ case 3 : iDiscipline = LDISC_CLK ; break ;
default :
msyslog ( LOG_ERR, "JJY receiver [ %s mode %d ] : Unsupported mode",
ntoa(&peer->srcadr), peer->ttl ) ;
@@ -253,6 +286,19 @@ jjy_start ( int unit, struct peer *peer )
up->lineexpect = 1 ;
up->charexpect[0] = 15 ; /* <STX>JYYMMDD HHMMSSS<ETX> */
break ;
+ case 3 :
+ up->unittype = UNITTYPE_ECHOKEISOKUKI_LT2000 ;
+ up->operationmode = 2 ; /* Mode 2 : Continuous mode */
+ up->lineexpect = 1 ;
+ switch ( up->operationmode ) {
+ case 1 :
+ up->charexpect[0] = 15 ; /* YYMMDDWHHMMSS<BCC1><BCC2><CR> */
+ break ;
+ case 2 :
+ up->charexpect[0] = 17 ; /* YYMMDDWHHMMSS<ST1><ST2><ST3><ST4><CR> */
+ break ;
+ }
+ break ;
default :
msyslog ( LOG_ERR, "JJY receiver [ %s mode %d ] : Unsupported mode",
ntoa(&peer->srcadr), peer->ttl ) ;
@@ -384,6 +430,10 @@ jjy_receive ( struct recvbuf *rbufp )
rc = jjy_receive_cdex_jst2000 ( rbufp ) ;
break ;
+ case UNITTYPE_ECHOKEISOKUKI_LT2000 :
+ rc = jjy_receive_echokeisokuki_lt2000 ( rbufp ) ;
+ break ;
+
default :
rc = 0 ;
break ;
@@ -438,10 +488,10 @@ jjy_receive ( struct recvbuf *rbufp )
}
#ifdef DEBUG
if ( debug ) {
- printf ( "jjy_receive (refclock_jjy.c) : %04d/%02d/%02d %02d:%02d:%02d JST ",
- up->year, up->month, up->day, up->hour, up->minute, up->second ) ;
- printf ( "( %04d/%03d %02d:%02d:%02d UTC )\n",
- pp->year, pp->day, pp->hour, pp->minute, pp->second ) ;
+ printf ( "jjy_receive (refclock_jjy.c) : %04d/%02d/%02d %02d:%02d:%02d.%1d JST ",
+ up->year, up->month, up->day, up->hour, up->minute, up->second, up->msecond/100 ) ;
+ printf ( "( %04d/%03d %02d:%02d:%02d.%1d UTC )\n",
+ pp->year, pp->day, pp->hour, pp->minute, pp->second, (int)(pp->nsec/100000000) ) ;
}
#endif
@@ -449,19 +499,19 @@ jjy_receive ( struct recvbuf *rbufp )
* Process the new sample in the median filter and determine the
* timecode timestamp.
*/
+
+ sprintf ( sLogText, "%04d/%02d/%02d %02d:%02d:%02d.%1d JST",
+ up->year, up->month, up->day, up->hour, up->minute, up->second, up->msecond/100 ) ;
+ record_clock_stats ( &peer->srcadr, sLogText ) ;
+
if ( ! refclock_process ( pp ) ) {
refclock_report(peer, CEVNT_BADTIME);
- sprintf ( sLogText, "BAD TIME %04d/%02d/%02d %02d:%02d:%02d JST",
- up->year, up->month, up->day, up->hour, up->minute, up->second ) ;
- record_clock_stats ( &peer->srcadr, sLogText ) ;
return ;
}
- sprintf ( sLogText, "%04d/%02d/%02d %02d:%02d:%02d JST",
- up->year, up->month, up->day, up->hour, up->minute, up->second ) ;
pp->lastref = pp->lastrec;
refclock_receive(peer);
- record_clock_stats ( &peer->srcadr, sLogText ) ;
+
}
/**************************************************************************************************/
@@ -470,6 +520,8 @@ static int
jjy_receive_tristate_jjy01 ( struct recvbuf *rbufp )
{
+ static char *sFunctionName = "jjy_receive_tristate_jjy01" ;
+
struct jjyunit *up ;
struct refclockproc *pp ;
struct peer *peer;
@@ -495,27 +547,82 @@ jjy_receive_tristate_jjy01 ( struct recvbuf *rbufp )
switch ( up->linecount ) {
- case 1 : /* YYYY/MM/DD */
+ case 1 : /* YYYY/MM/DD WWW */
- if ( iLen < 10 ) {
+ if ( iLen != 14 ) {
+#ifdef DEBUG
+ if ( debug >= 2 ) {
+ printf ( "%s (refclock_jjy.c) : Reply length error ( up->linecount=%d iLen=%d )\n", sFunctionName, up->linecount, iLen ) ;
+ }
+#endif
up->lineerror = 1 ;
break ;
}
rc = sscanf ( pBuf, "%4d/%2d/%2d", &up->year, &up->month, &up->day ) ;
if ( rc != 3 || up->year < 2000 || up->month < 1 || up->month > 12 || up->day < 1 || up->day > 31 ) {
+#ifdef DEBUG
+ if ( debug >= 2 ) {
+ printf ( "%s (refclock_jjy.c) : Date error ( up->linecount=%d )\n", sFunctionName, up->linecount ) ;
+ }
+#endif
up->lineerror = 1 ;
break ;
}
+
+ /*** Start of modification on 2004/10/31 */
+ /*
+ * Following codes are moved from the function jjy_poll_tristate_jjy01 in this source.
+ * The Tristate JJY-01 ( Firmware version 1.01 ) accepts "time" and "stim" commands without any delay.
+ * But the JJY-01 ( Firmware version 2.01 ) does not accept these commands continuously,
+ * so this driver issues the second command "stim" after the reply of the first command "date".
+ */
+
+ /*
+ * Send "stim<CR><LF>" or "time<CR><LF>" command
+ */
+
+
+ if ( up->version >= 100 ) {
+#ifdef DEBUG
+ if ( debug ) {
+ printf ( "%s (refclock_jjy.c) : send 'stim<CR><LF>'\n", sFunctionName ) ;
+ }
+#endif
+ if ( write ( pp->io.fd, "stim\r\n",6 ) != 6 ) {
+ refclock_report ( peer, CEVNT_FAULT ) ;
+ }
+ } else {
+#ifdef DEBUG
+ if ( debug ) {
+ printf ( "%s (refclock_jjy.c) : send 'time<CR><LF>'\n", sFunctionName ) ;
+ }
+#endif
+ if ( write ( pp->io.fd, "time\r\n",6 ) != 6 ) {
+ refclock_report ( peer, CEVNT_FAULT ) ;
+ }
+ }
+ /*** End of modification ***/
+
return 0 ;
case 2 : /* HH:MM:SS */
- if ( iLen < 8 ) {
+ if ( iLen != 8 ) {
+#ifdef DEBUG
+ if ( debug >= 2 ) {
+ printf ( "%s (refclock_jjy.c) : Reply length error ( up->linecount=%d iLen=%d )\n", sFunctionName, up->linecount, iLen ) ;
+ }
+#endif
up->lineerror = 1 ;
break ;
}
rc = sscanf ( pBuf, "%2d:%2d:%2d", &up->hour, &up->minute, &up->second ) ;
if ( rc != 3 || up->hour > 23 || up->minute > 59 || up->second > 60 ) {
+#ifdef DEBUG
+ if ( debug >= 2 ) {
+ printf ( "%s (refclock_jjy.c) : Time error ( up->linecount=%d )\n", sFunctionName, up->linecount ) ;
+ }
+#endif
up->lineerror = 1 ;
break ;
}
@@ -524,7 +631,7 @@ jjy_receive_tristate_jjy01 ( struct recvbuf *rbufp )
/*
* The command "date" and "time" ( or "stim" ) were sent to the JJY receiver continuously.
* But the JJY receiver replies a date and time separately.
- * Just after midnight transtions, we ignore this time.
+ * Just after midnight transitions, we ignore this time.
*/
return 0 ;
}
@@ -547,6 +654,8 @@ static int
jjy_receive_cdex_jst2000 ( struct recvbuf *rbufp )
{
+ static char *sFunctionName = "jjy_receive_cdex_jst2000" ;
+
struct jjyunit *up ;
struct refclockproc *pp ;
struct peer *peer;
@@ -574,7 +683,12 @@ jjy_receive_cdex_jst2000 ( struct recvbuf *rbufp )
case 1 : /* JYYMMDD HHMMSSS */
- if ( iLen < 15 ) {
+ if ( iLen != 15 ) {
+#ifdef DEBUG
+ if ( debug >= 2 ) {
+ printf ( "%s (refclock_jjy.c) : Reply length error ( iLen=%d )\n", sFunctionName, iLen ) ;
+ }
+#endif
up->lineerror = 1 ;
break ;
}
@@ -582,6 +696,12 @@ jjy_receive_cdex_jst2000 ( struct recvbuf *rbufp )
&up->year, &up->month, &up->day, &up->hour, &up->minute, &up->second, &up->msecond ) ;
if ( rc != 7 || up->month < 1 || up->month > 12 || up->day < 1 || up->day > 31
|| up->hour > 23 || up->minute > 59 || up->second > 60 ) {
+#ifdef DEBUG
+ if ( debug >= 2 ) {
+ printf ( "%s (refclock_jjy.c) : Time error (rc=%d) [ %02d %02d %02d * %02d %02d %02d.%1d ]\n", sFunctionName,
+ rc, up->year, up->month, up->day, up->hour, up->minute, up->second, up->msecond ) ;
+ }
+#endif
up->lineerror = 1 ;
break ;
}
@@ -601,6 +721,151 @@ jjy_receive_cdex_jst2000 ( struct recvbuf *rbufp )
}
/**************************************************************************************************/
+
+static int
+jjy_receive_echokeisokuki_lt2000 ( struct recvbuf *rbufp )
+{
+
+ static char *sFunctionName = "jjy_receive_echokeisokuki_lt2000" ;
+
+ struct jjyunit *up ;
+ struct refclockproc *pp ;
+ struct peer *peer;
+
+ char *pBuf ;
+ int iLen ;
+ int rc ;
+ int i, ibcc, ibcc1, ibcc2 ;
+
+ /*
+ * Initialize pointers and read the timecode and timestamp
+ */
+ peer = (struct peer *) rbufp->recv_srcclock ;
+ pp = peer->procptr ;
+ up = (struct jjyunit *) pp->unitptr ;
+
+ if ( up->linediscipline == LDISC_RAW ) {
+ pBuf = up->rawbuf ;
+ iLen = up->charcount ;
+ } else {
+ pBuf = pp->a_lastcode ;
+ iLen = pp->lencode ;
+ }
+
+ switch ( up->linecount ) {
+
+ case 1 : /* YYMMDDWHHMMSS<BCC1><BCC2> or YYMMDDWHHMMSS<ST1><ST2><ST3><ST4> */
+
+ if ( ( up->operationmode == 1 && iLen != 15 ) || ( up->operationmode == 2 && iLen != 17 ) ) {
+#ifdef DEBUG
+ if ( debug >= 2 ) {
+ printf ( "%s (refclock_jjy.c) : Reply length error ( iLen=%d )\n", sFunctionName, iLen ) ;
+ }
+#endif
+ if ( up->operationmode == 1 ) {
+#ifdef DEBUG
+ if ( debug ) {
+ printf ( "%s (refclock_jjy.c) : send '#'\n", sFunctionName ) ;
+ }
+#endif
+ if ( write ( pp->io.fd, "#",1 ) != 1 ) {
+ refclock_report ( peer, CEVNT_FAULT ) ;
+ }
+ }
+ up->lineerror = 1 ;
+ break ;
+ }
+
+ if ( up->operationmode == 1 ) {
+
+ for ( i = ibcc = 0 ; i < 13 ; i ++ ) ibcc ^= pBuf[i] ;
+ ibcc1 = 0x30 | ( ( ibcc >> 4 ) & 0xF ) ;
+ ibcc2 = 0x30 | ( ( ibcc ) & 0xF ) ;
+ if ( pBuf[13] != ibcc1 || pBuf[14] != ibcc2 ) {
+#ifdef DEBUG
+ if ( debug >= 2 ) {
+ printf ( "%s (refclock_jjy.c) : BCC error ( Recv=%02X,%02X / Calc=%02X,%02X)\n", sFunctionName, pBuf[13]&0xFF, pBuf[14]&0xFF, ibcc1, ibcc2 ) ;
+ }
+#endif
+ up->lineerror = 1 ;
+ break ;
+ }
+
+ }
+
+ rc = sscanf ( pBuf, "%2d%2d%2d%*1d%2d%2d%2d",
+ &up->year, &up->month, &up->day, &up->hour, &up->minute, &up->second ) ;
+ if ( rc != 6 || up->month < 1 || up->month > 12 || up->day < 1 || up->day > 31
+ || up->hour > 23 || up->minute > 59 || up->second > 60 ) {
+#ifdef DEBUG
+ if ( debug >= 2 ) {
+ printf ( "%s (refclock_jjy.c) : Time error (rc=%d) [ %02d %02d %02d * %02d %02d %02d ]\n", sFunctionName,
+ rc, up->year, up->month, up->day, up->hour, up->minute, up->second ) ;
+ }
+#endif
+ up->lineerror = 1 ;
+ break ;
+ }
+
+ up->year += 2000 ;
+
+ if ( up->operationmode == 2 ) {
+
+ /* A time stamp comes on every 0.5 seccond in the mode 2 of the LT-2000. */
+ up->msecond = 500 ;
+ pp->second -- ;
+ if ( pp->second < 0 ) {
+ pp->second = 59 ;
+ pp->minute -- ;
+ if ( pp->minute < 0 ) {
+ pp->minute = 59 ;
+ pp->hour -- ;
+ if ( pp->hour < 0 ) {
+ pp->hour = 23 ;
+ pp->day -- ;
+ if ( pp->day < 1 ) {
+ pp->year -- ;
+ pp->day = ymd2yd ( pp->year, 12, 31 ) ;
+ }
+ }
+ }
+ }
+
+ /* Switch from mode 2 to mode 1 in order to restraint of useless time stamp. */
+#ifdef DEBUG
+ if ( debug ) {
+ printf ( "%s (refclock_jjy.c) : send '#'\n", sFunctionName ) ;
+ }
+#endif
+ if ( write ( pp->io.fd, "#",1 ) != 1 ) {
+ refclock_report ( peer, CEVNT_FAULT ) ;
+ }
+
+ }
+
+ break ;
+
+ default : /* Unexpected reply */
+
+#ifdef DEBUG
+ if ( debug ) {
+ printf ( "%s (refclock_jjy.c) : send '#'\n", sFunctionName ) ;
+ }
+#endif
+ if ( write ( pp->io.fd, "#",1 ) != 1 ) {
+ refclock_report ( peer, CEVNT_FAULT ) ;
+ }
+
+ up->lineerror = 1 ;
+ break ;
+
+ }
+
+ return 1 ;
+
+}
+
+/**************************************************************************************************/
/* jjy_poll - called by the transmit procedure */
/**************************************************************************************************/
static void
@@ -642,6 +907,10 @@ jjy_poll ( int unit, struct peer *peer )
jjy_poll_cdex_jst2000 ( unit, peer ) ;
break ;
+ case UNITTYPE_ECHOKEISOKUKI_LT2000 :
+ jjy_poll_echokeisokuki_lt2000 ( unit, peer ) ;
+ break ;
+
default :
break ;
@@ -655,32 +924,48 @@ static void
jjy_poll_tristate_jjy01 ( int unit, struct peer *peer )
{
- struct jjyunit *up;
struct refclockproc *pp;
pp = peer->procptr;
- up = (struct jjyunit *) pp->unitptr ;
/*
* Send "date<CR><LF>" command
*/
+#ifdef DEBUG
+ if ( debug ) {
+ printf ( "jjy_poll_tristate_jjy01 (refclock_jjy.c) : send 'date<CR><LF>'\n" ) ;
+ }
+#endif
+
if ( write ( pp->io.fd, "date\r\n",6 ) != 6 ) {
refclock_report ( peer, CEVNT_FAULT ) ;
}
+}
+
+/**************************************************************************************************/
+
+static void
+jjy_poll_cdex_jst2000 ( int unit, struct peer *peer )
+{
+
+ struct refclockproc *pp;
+
+ pp = peer->procptr;
+
/*
- * Send "stim<CR><LF>" or "time<CR><LF>" command
+ * Send "<ENQ>1J<ETX>" command
*/
- if ( up->version >= 100 ) {
- if ( write ( pp->io.fd, "stim\r\n",6 ) != 6 ) {
- refclock_report ( peer, CEVNT_FAULT ) ;
- }
- } else {
- if ( write ( pp->io.fd, "time\r\n",6 ) != 6 ) {
- refclock_report ( peer, CEVNT_FAULT ) ;
- }
+#ifdef DEBUG
+ if ( debug ) {
+ printf ( "jjy_poll_cdex_jst2000 (refclock_jjy.c) : send '<ENQ>1J<ETX>'\n" ) ;
+ }
+#endif
+
+ if ( write ( pp->io.fd, "\0051J\003", 4 ) != 4 ) {
+ refclock_report ( peer, CEVNT_FAULT ) ;
}
}
@@ -688,18 +973,34 @@ jjy_poll_tristate_jjy01 ( int unit, struct peer *peer )
/**************************************************************************************************/
static void
-jjy_poll_cdex_jst2000 ( int unit, struct peer *peer )
+jjy_poll_echokeisokuki_lt2000 ( int unit, struct peer *peer )
{
+ struct jjyunit *up;
struct refclockproc *pp;
+ char sCmd[2] ;
+
pp = peer->procptr;
+ up = (struct jjyunit *) pp->unitptr ;
/*
- * Send "<ENQ>1J<ETX>" command
+ * Send "T" or "C" command
*/
- if ( write ( pp->io.fd, "\0051J\003", 4 ) != 4 ) {
+ switch ( up->operationmode ) {
+ case 1 : sCmd[0] = 'T' ; break ;
+ case 2 : sCmd[0] = 'C' ; break ;
+ }
+ sCmd[1] = 0 ;
+
+#ifdef DEBUG
+ if ( debug ) {
+ printf ( "jjy_poll_echokeisokuki_lt2000 (refclock_jjy.c) : send '%s'\n", sCmd ) ;
+ }
+#endif
+
+ if ( write ( pp->io.fd, sCmd, 1 ) != 1 ) {
refclock_report ( peer, CEVNT_FAULT ) ;
}
diff --git a/contrib/ntp/ntpd/refclock_jupiter.c b/contrib/ntp/ntpd/refclock_jupiter.c
index eff088b..c10d9fa 100644
--- a/contrib/ntp/ntpd/refclock_jupiter.c
+++ b/contrib/ntp/ntpd/refclock_jupiter.c
@@ -49,13 +49,7 @@
#include "jupiter.h"
#ifdef HAVE_PPSAPI
-# ifdef HAVE_TIMEPPS_H
-# include <timepps.h>
-# else
-# ifdef HAVE_SYS_TIMEPPS_H
-# include <sys/timepps.h>
-# endif
-# endif
+# include "ppsapi_timepps.h"
#endif
#ifdef XNTP_BIG_ENDIAN
@@ -121,6 +115,7 @@ struct instance {
pps_info_t pps_info; /* last pps data */
pps_handle_t pps_handle; /* pps handle */
u_int assert; /* pps edge to use */
+ u_int hardpps; /* enable kernel mode */
struct timespec ts; /* last timestamp */
#endif
l_fp limit;
@@ -152,7 +147,7 @@ static void jupiter_poll P((int, struct peer *));
static void jupiter_control P((int, struct refclockstat *, struct
refclockstat *, struct peer *));
#ifdef HAVE_PPSAPI
-static int jupiter_ppsapi P((struct instance *, int, int));
+static int jupiter_ppsapi P((struct instance *));
static int jupiter_pps P((struct instance *));
#endif /* HAVE_PPSAPI */
static int jupiter_recv P((struct instance *));
@@ -229,6 +224,8 @@ jupiter_start(
memcpy((char *)&pp->refid, REFID, 4);
#ifdef HAVE_PPSAPI
+ instance->assert = 1;
+ instance->hardpps = 0;
/*
* Start the PPSAPI interface if it is there. Default to use
* the assert edge and do not enable the kernel hardpps.
@@ -238,7 +235,7 @@ jupiter_start(
msyslog(LOG_ERR,
"refclock_jupiter: time_pps_create failed: %m");
}
- else if (!jupiter_ppsapi(instance, 0, 0))
+ else if (!jupiter_ppsapi(instance))
goto clean_up;
#endif /* HAVE_PPSAPI */
@@ -265,7 +262,7 @@ jupiter_shutdown(int unit, struct peer *peer)
pp = peer->procptr;
instance = (struct instance *)pp->unitptr;
- if(!instance)
+ if (!instance)
return;
#ifdef HAVE_PPSAPI
@@ -336,9 +333,7 @@ jupiter_config(struct instance *instance)
*/
int
jupiter_ppsapi(
- struct instance *instance, /* unit structure pointer */
- int enb_clear, /* clear enable */
- int enb_hardpps /* hardpps enable */
+ struct instance *instance /* unit structure pointer */
)
{
int capability;
@@ -349,14 +344,14 @@ jupiter_ppsapi(
return (0);
}
memset(&instance->pps_params, 0, sizeof(pps_params_t));
- if (enb_clear)
+ if (!instance->assert)
instance->pps_params.mode = capability & PPS_CAPTURECLEAR;
else
instance->pps_params.mode = capability & PPS_CAPTUREASSERT;
if (!(instance->pps_params.mode & (PPS_CAPTUREASSERT | PPS_CAPTURECLEAR))) {
msyslog(LOG_ERR,
"refclock_jupiter: invalid capture edge %d",
- !enb_clear);
+ instance->assert);
return (0);
}
instance->pps_params.mode |= PPS_TSFMT_TSPEC;
@@ -365,9 +360,9 @@ jupiter_ppsapi(
"refclock_jupiter: time_pps_setparams failed: %m");
return (0);
}
- if (enb_hardpps) {
+ if (instance->hardpps) {
if (time_pps_kcbind(instance->pps_handle, PPS_KC_HARDPPS,
- instance->pps_params.mode & (PPS_CAPTUREASSERT | PPS_CAPTURECLEAR),
+ instance->pps_params.mode & ~PPS_TSFMT_TSPEC,
PPS_TSFMT_TSPEC) < 0) {
msyslog(LOG_ERR,
"refclock_jupiter: time_pps_kcbind failed: %m");
@@ -383,7 +378,7 @@ jupiter_ppsapi(
jupiter_debug(instance->peer, "refclock_jupiter",
"pps capability 0x%x version %d mode 0x%x kern %d",
capability, instance->pps_params.api_version,
- instance->pps_params.mode, enb_hardpps);
+ instance->pps_params.mode, instance->hardpps);
}
#endif
@@ -503,7 +498,7 @@ jupiter_control(
#ifdef HAVE_PPSAPI
instance->assert = !(pp->sloppyclockflag & CLK_FLAG3);
- jupiter_ppsapi(instance, !instance->assert, 0);
+ jupiter_ppsapi(instance);
#endif /* HAVE_PPSAPI */
sloppyclockflag = instance->sloppyclockflag;
@@ -688,7 +683,7 @@ jupiter_receive(struct recvbuf *rbufp)
"jupiter_receive", "%s chan ver %s, %s (%s)",
ip->chans, ip->vers, ip->date, ip->opts);
msyslog(LOG_DEBUG,
- "jupiter_receive: %s chan ver %s, %s (%s)\n",
+ "jupiter_receive: %s chan ver %s, %s (%s)",
ip->chans, ip->vers, ip->date, ip->opts);
if (instance->wantid)
instance->wantid = 0;
@@ -907,12 +902,14 @@ jupiter_debug(peer, function, fmt, va_alist)
*/
vsnprintf(buffer, sizeof(buffer), fmt, ap);
record_clock_stats(&(peer->srcadr), buffer);
+#ifdef DEBUG
if (debug) {
fprintf(stdout, "%s: ", function);
fprintf(stdout, buffer);
fprintf(stdout, "\n");
fflush(stdout);
}
+#endif
va_end(ap);
}
@@ -953,8 +950,8 @@ static struct {
} reqmsg = {
{ putshort(JUPITER_SYNC), 0,
putshort((sizeof(struct jrequest) / sizeof(u_short)) - 1),
- 0, (u_char)putshort(JUPITER_FLAG_REQUEST | JUPITER_FLAG_NAK |
- JUPITER_FLAG_CONN | JUPITER_FLAG_LOG), 0 },
+ 0, JUPITER_FLAG_REQUEST | JUPITER_FLAG_NAK |
+ JUPITER_FLAG_CONN | JUPITER_FLAG_LOG, 0 },
{ 0, 0, 0, 0 }
};
@@ -979,7 +976,7 @@ jupiter_reqmsg(struct instance *instance, u_int id,
/* Cancel periodic message output */
static struct jheader canmsg = {
putshort(JUPITER_SYNC), 0, 0, 0,
- (u_char)putshort(JUPITER_FLAG_REQUEST | JUPITER_FLAG_NAK | JUPITER_FLAG_DISC),
+ JUPITER_FLAG_REQUEST | JUPITER_FLAG_NAK | JUPITER_FLAG_DISC,
0
};
@@ -998,7 +995,7 @@ jupiter_canmsg(struct instance *instance, u_int id)
/* Request a single message output */
static struct jheader reqonemsg = {
putshort(JUPITER_SYNC), 0, 0, 0,
- (u_char)putshort(JUPITER_FLAG_REQUEST | JUPITER_FLAG_NAK | JUPITER_FLAG_QUERY),
+ JUPITER_FLAG_REQUEST | JUPITER_FLAG_NAK | JUPITER_FLAG_QUERY,
0
};
@@ -1021,7 +1018,7 @@ static struct {
} platmsg = {
{ putshort(JUPITER_SYNC), putshort(JUPITER_I_PLAT),
putshort((sizeof(struct jplat) / sizeof(u_short)) - 1), 0,
- (u_char)putshort(JUPITER_FLAG_REQUEST | JUPITER_FLAG_NAK), 0 },
+ JUPITER_FLAG_REQUEST | JUPITER_FLAG_NAK, 0 },
{ 0, 0, 0 }
};
diff --git a/contrib/ntp/ntpd/refclock_leitch.c b/contrib/ntp/ntpd/refclock_leitch.c
index d7cd9bb..e1ba0c4 100644
--- a/contrib/ntp/ntpd/refclock_leitch.c
+++ b/contrib/ntp/ntpd/refclock_leitch.c
@@ -48,14 +48,20 @@
#define LEITCH_DESCRIPTION "Leitch: CSD 5300 Master Clock System Driver"
#define LEITCH232 "/dev/leitch%d" /* name of radio device */
#define SPEED232 B300 /* uart speed (300 baud) */
+#ifdef DEBUG
#define leitch_send(A,M) \
if (debug) fprintf(stderr,"write leitch %s\n",M); \
if ((write(A->leitchio.fd,M,sizeof(M)) < 0)) {\
- if (debug) \
- fprintf(stderr, "leitch_send: unit %d send failed\n", A->unit); \
- else \
- msyslog(LOG_ERR, "leitch_send: unit %d send failed %m",A->unit);}
-
+ if (debug) \
+ fprintf(stderr, "leitch_send: unit %d send failed\n", A->unit); \
+ else \
+ msyslog(LOG_ERR, "leitch_send: unit %d send failed %m",A->unit);}
+#else
+#define leitch_send(A,M) \
+if ((write(A->leitchio.fd,M,sizeof(M)) < 0)) {\
+ msyslog(LOG_ERR, "leitch_send: unit %d send failed %m",A->unit);}
+#endif
+
#define STATE_IDLE 0
#define STATE_DATE 1
#define STATE_TIME1 2
@@ -166,7 +172,7 @@ leitch_poll(
if (debug)
fprintf(stderr, "leitch_poll()\n");
#endif
- if (unit > MAXUNITS) {
+ if (unit >= MAXUNITS) {
/* XXXX syslog it */
return;
}
diff --git a/contrib/ntp/ntpd/refclock_local.c b/contrib/ntp/ntpd/refclock_local.c
index 3478f43..dc6f1ae 100644
--- a/contrib/ntp/ntpd/refclock_local.c
+++ b/contrib/ntp/ntpd/refclock_local.c
@@ -72,7 +72,7 @@
*
* The stratum for this driver set at 5 by default, but it can be
* changed by the fudge command and/or the ntpdc utility. The reference
- * ID is "LCL" by default, but can be changed using the same mechanism.
+ * ID is 127.0.0.1 by default, but can be changed using the same mechanism.
* *NEVER* configure this driver to operate at a stratum which might
* possibly disrupt a client with access to a bona fide primary server,
* unless the local clock oscillator is reliably disciplined by another
@@ -93,13 +93,7 @@
* Local interface definitions
*/
#define PRECISION (-7) /* about 10 ms precision */
-#if defined(VMS) && defined(VMS_LOCALUNIT)
-#define REFID "LCLv" /* reference ID */
-#else /* VMS VMS_LOCALUNIT */
-#define REFID "LCL\0" /* reference ID */
-#endif /* VMS VMS_LOCALUNIT */
#define DESCRIPTION "Undisciplined local clock" /* WRU */
-
#define STRATUM 5 /* default stratum */
#define DISPERSION .01 /* default dispersion (10 ms) */
@@ -168,7 +162,7 @@ local_start(
peer->stratum = STRATUM;
pp->stratum = STRATUM;
pp->clockdesc = DESCRIPTION;
- memcpy(&pp->refid, "INIT", 4);
+ memcpy(&pp->refid, "LOCL", 4);
poll_time = current_time;
return (1);
}
diff --git a/contrib/ntp/ntpd/refclock_msfees.c b/contrib/ntp/ntpd/refclock_msfees.c
index ebfb983..98034b5 100644
--- a/contrib/ntp/ntpd/refclock_msfees.c
+++ b/contrib/ntp/ntpd/refclock_msfees.c
@@ -40,12 +40,13 @@
#include "ntp_stdlib.h"
+int dbg = 0;
/*
fudgefactor = fudgetime1;
os_delay = fudgetime2;
offset_fudge = os_delay + fudgefactor + inherent_delay;
stratumtouse = fudgeval1 & 0xf
- debug = fudgeval2;
+ dbg = fudgeval2;
sloppyclockflag = flags & CLK_FLAG1;
1 log smoothing summary when processing sample
4 dump the buffer from the clock
@@ -675,7 +676,7 @@ ees_receive(
ees = (struct eesunit *)rbufp->recv_srcclock;
dpt = (u_char *)&rbufp->recv_space;
dpend = dpt + rbufp->recv_length;
- if ((debug & DB_LOG_AWAITMORE) && (rbufp->recv_length != LENEESCODE))
+ if ((dbg & DB_LOG_AWAITMORE) && (rbufp->recv_length != LENEESCODE))
printf("[%d] ", rbufp->recv_length);
/* Check out our state and process appropriately */
@@ -718,7 +719,7 @@ ees_receive(
/* Gave up because it was end of the buffer, rather than ff */
if (dpt == dpend) {
/* Incomplete. Wait for more. */
- if (debug & DB_LOG_AWAITMORE)
+ if (dbg & DB_LOG_AWAITMORE)
msyslog(LOG_INFO,
"I: ees clock %d: %p == %p: await more",
ees->unit, dpt, dpend);
@@ -897,7 +898,7 @@ ees_receive(
memset((char *) &ppsclockev, 0, sizeof ppsclockev);
rc = ioctl(ees->io.fd, request, (char *) &ppsclockev);
- if (debug & DB_PRINT_EV) fprintf(stderr,
+ if (dbg & DB_PRINT_EV) fprintf(stderr,
"[%x] CIOGETEV u%d %d (%x %d) gave %d (%d): %08lx %08lx %ld\n",
DB_PRINT_EV, ees->unit, ees->io.fd, request, is_pps(ees),
rc, errno, ptr[0], ptr[1], ptr[2]);
@@ -925,7 +926,7 @@ ees_receive(
diff = pps_arrvstamp;
conv = 0;
L_SUB(&diff, &ees->arrvtime);
- if (debug & DB_PRINT_CDT)
+ if (dbg & DB_PRINT_CDT)
printf("[%x] Have %lx.%08lx and %lx.%08lx -> %lx.%08lx @ %s",
DB_PRINT_CDT, (long)ees->arrvtime.l_ui, (long)ees->arrvtime.l_uf,
(long)pps_arrvstamp.l_ui, (long)pps_arrvstamp.l_uf,
@@ -962,7 +963,7 @@ ees_receive(
}
}
ees->last_pps_no = ppsclockev.serial;
- if (debug & DB_PRINT_CDTC)
+ if (dbg & DB_PRINT_CDTC)
printf(
"[%x] %08lx %08lx %d u%d (%d %d)\n",
DB_PRINT_CDTC, (long)pps_arrvstamp.l_ui,
@@ -985,7 +986,7 @@ ees_receive(
if (delta_f_abs < 0) delta_f_abs = -delta_f_abs;
/* Dump the deltas each minute */
- if (debug & DB_DUMP_DELTAS)
+ if (dbg & DB_DUMP_DELTAS)
{ if (/*0 <= ees->second && */
ees->second < ((sizeof deltas) / (sizeof deltas[0]))) deltas[ees->second] = delta_sfsec;
/* Dump on second 1, as second 0 sometimes missed */
@@ -1147,12 +1148,12 @@ ees_receive(
/* sec_of_ramp * ees->jump_fsecs may overflow 2**32 */
fsecs = sec_of_ramp * (ees->jump_fsecs / ees->last_step_secs);
- if (debug & DB_LOG_DELTAS) msyslog(LOG_ERR,
+ if (dbg & DB_LOG_DELTAS) msyslog(LOG_ERR,
"[%x] MSF%d: %3ld/%03d -> d=%11ld (%d|%ld)",
DB_LOG_DELTAS,
ees->unit, sec_of_ramp, ees->last_step_secs, fsecs,
pps_arrvstamp.l_f, pps_arrvstamp.l_f + fsecs);
- if (debug & DB_PRINT_DELTAS) printf(
+ if (dbg & DB_PRINT_DELTAS) printf(
"MSF%d: %3ld/%03d -> d=%11ld (%ld|%ld)\n",
ees->unit, sec_of_ramp, ees->last_step_secs, fsecs,
(long)pps_arrvstamp.l_f, pps_arrvstamp.l_f + fsecs);
@@ -1160,7 +1161,7 @@ ees_receive(
/* Must sign extend the result */
inc.l_i = (fsecs < 0) ? -1 : 0;
inc.l_f = fsecs;
- if (debug & DB_INC_PPS)
+ if (dbg & DB_INC_PPS)
{ L_SUB(&pps_arrvstamp, &inc);
L_SUB(&ees->arrvtime, &inc);
}
@@ -1170,14 +1171,14 @@ ees_receive(
}
}
else {
- if (debug & DB_LOG_DELTAS) msyslog(LOG_ERR,
+ if (dbg & DB_LOG_DELTAS) msyslog(LOG_ERR,
"[%x] MSF%d: ees->using_ramp=%d, sincelast=%x / %x, ees->last_step_secs=%x",
DB_LOG_DELTAS,
ees->unit, ees->using_ramp,
sincelast,
(ees->last_step_secs)*2,
ees->last_step_secs);
- if (debug & DB_PRINT_DELTAS) printf(
+ if (dbg & DB_PRINT_DELTAS) printf(
"[%x] MSF%d: ees->using_ramp=%d, sincelast=%x / %x, ees->last_step_secs=%x\n",
DB_LOG_DELTAS,
ees->unit, ees->using_ramp,
@@ -1189,7 +1190,7 @@ ees_receive(
L_SUB(&ees->arrvtime, &offset_fudge[ees->unit]);
L_SUB(&pps_arrvstamp, &offset_fudge[ees->unit]);
- if (call_pps_sample && !(debug & DB_NO_PPS)) {
+ if (call_pps_sample && !(dbg & DB_NO_PPS)) {
/* Sigh -- it expects its args negated */
L_NEG(&pps_arrvstamp);
/*
@@ -1202,14 +1203,14 @@ ees_receive(
/* Subtract off the local clock time stamp */
L_SUB(&ees->codeoffsets[n_sample], &ees->arrvtime);
- if (debug & DB_LOG_SAMPLES) msyslog(LOG_ERR,
+ if (dbg & DB_LOG_SAMPLES) msyslog(LOG_ERR,
"MSF%d: [%x] %d (ees: %d %d) (pps: %d %d)%s",
ees->unit, DB_LOG_DELTAS, n_sample,
ees->codeoffsets[n_sample].l_f,
ees->codeoffsets[n_sample].l_f / 4295,
pps_arrvstamp.l_f,
pps_arrvstamp.l_f /4295,
- (debug & DB_NO_PPS) ? " [no PPS]" : "");
+ (dbg & DB_NO_PPS) ? " [no PPS]" : "");
if (ees->nsamples++ == NCODES-1) ees_process(ees);
@@ -1284,7 +1285,13 @@ ees_process(
if (ees->dump_vals) dump_buf(coffs, 0, samples, "Raw data is:");
/* Sort the offsets, trim off the extremes, then choose one. */
- qsort((char *) coffs, (size_t)samples, sizeof(l_fp), offcompare);
+ qsort(
+#ifdef QSORT_USES_VOID_P
+ (void *)
+#else
+ (char *)
+#endif
+ coffs, (size_t)samples, sizeof(l_fp), offcompare);
noff = samples;
i = 0;
@@ -1328,10 +1335,10 @@ ees_process(
L_SUB(&tmp, &coffs[i]);
#define FRACT_SEC(n) ((1 << 30) / (n/2))
dispersion = LFPTOFP(&tmp) / 2; /* ++++ */
- if (debug & (DB_SYSLOG_SMPLI | DB_SYSLOG_SMPLE)) msyslog(
- (debug & DB_SYSLOG_SMPLE) ? LOG_ERR : LOG_INFO,
+ if (dbg & (DB_SYSLOG_SMPLI | DB_SYSLOG_SMPLE)) msyslog(
+ (dbg & DB_SYSLOG_SMPLE) ? LOG_ERR : LOG_INFO,
"I: [%x] Offset=%06d (%d), disp=%f%s [%d], %d %d=%d %d:%d %d=%d %d",
- debug & (DB_SYSLOG_SMPLI | DB_SYSLOG_SMPLE),
+ dbg & (DB_SYSLOG_SMPLI | DB_SYSLOG_SMPLE),
offset.l_f / 4295, offset.l_f,
(dispersion * 1526) / 100,
(sloppyclockflag[ees->unit]) ? " by averaging" : "",
@@ -1371,24 +1378,24 @@ ees_process(
offset.l_ui += (new < 0) ? -1 : 1;
}
dispersion /= 4;
- if (debug & (DB_SYSLOG_SMTHI | DB_SYSLOG_SMTHE)) msyslog(
- (debug & DB_SYSLOG_SMTHE) ? LOG_ERR : LOG_INFO,
+ if (dbg & (DB_SYSLOG_SMTHI | DB_SYSLOG_SMTHE)) msyslog(
+ (dbg & DB_SYSLOG_SMTHE) ? LOG_ERR : LOG_INFO,
"I: [%x] Smooth data: %ld -> %ld, dispersion now %f",
- debug & (DB_SYSLOG_SMTHI | DB_SYSLOG_SMTHE),
+ dbg & (DB_SYSLOG_SMTHI | DB_SYSLOG_SMTHE),
((long) offset.l_uf) / 4295, new / 4295,
(dispersion * 1526) / 100);
offset.l_uf = (unsigned long) new;
}
- else if (debug & (DB_SYSLOG_NSMTHI | DB_SYSLOG_NSMTHE)) msyslog(
- (debug & DB_SYSLOG_NSMTHE) ? LOG_ERR : LOG_INFO,
+ else if (dbg & (DB_SYSLOG_NSMTHI | DB_SYSLOG_NSMTHE)) msyslog(
+ (dbg & DB_SYSLOG_NSMTHE) ? LOG_ERR : LOG_INFO,
"[%x] No smooth as delta not %d < %ld < %d",
- debug & (DB_SYSLOG_NSMTHI | DB_SYSLOG_NSMTHE),
+ dbg & (DB_SYSLOG_NSMTHI | DB_SYSLOG_NSMTHE),
- FRACT_SEC(100), diff, FRACT_SEC(100));
}
- else if (debug & (DB_SYSLOG_NSMTHI | DB_SYSLOG_NSMTHE)) msyslog(
- (debug & DB_SYSLOG_NSMTHE) ? LOG_ERR : LOG_INFO,
+ else if (dbg & (DB_SYSLOG_NSMTHI | DB_SYSLOG_NSMTHE)) msyslog(
+ (dbg & DB_SYSLOG_NSMTHE) ? LOG_ERR : LOG_INFO,
"I: [%x] No smooth as flag=%x and old=%x=%d (%d:%d)",
- debug & (DB_SYSLOG_NSMTHI | DB_SYSLOG_NSMTHE),
+ dbg & (DB_SYSLOG_NSMTHI | DB_SYSLOG_NSMTHE),
ees->usealldata, ees->offset.l_f, ees->offset.l_uf,
offset.l_f, ees->offset.l_f - offset.l_f);
diff --git a/contrib/ntp/ntpd/refclock_mx4200.c b/contrib/ntp/ntpd/refclock_mx4200.c
index bc694ad..68150b7 100644
--- a/contrib/ntp/ntpd/refclock_mx4200.c
+++ b/contrib/ntp/ntpd/refclock_mx4200.c
@@ -80,13 +80,9 @@ struct ppsclockev {
};
#endif /* ! HAVE_STRUCT_PPSCLOCKEV */
-#ifdef HAVE_TIMEPPS_H
-# include <timepps.h>
-#else
-# ifdef HAVE_SYS_TIMEPPS_H
-# include <sys/timepps.h>
-# endif
-#endif
+#ifdef HAVE_PPSAPI
+# include "ppsapi_timepps.h"
+#endif /* HAVE_PPSAPI */
/*
* This driver supports the Magnavox Model MX 4200 GPS Receiver
@@ -1524,15 +1520,15 @@ mx4200_pps(
if (time_pps_fetch(up->pps_h, PPS_TSFMT_TSPEC, &(up->pps_i),
&timeout) < 0) {
mx4200_debug(peer,
- "mx4200_pps: time_pps_fetch: serial=%d, %s\n",
- up->pps_i.assert_sequence, strerror(errno));
+ "mx4200_pps: time_pps_fetch: serial=%ul, %s\n",
+ (unsigned long)up->pps_i.assert_sequence, strerror(errno));
refclock_report(peer, CEVNT_FAULT);
return(1);
}
if (temp_serial == up->pps_i.assert_sequence) {
mx4200_debug(peer,
- "mx4200_pps: assert_sequence serial not incrementing: %d\n",
- up->pps_i.assert_sequence);
+ "mx4200_pps: assert_sequence serial not incrementing: %ul\n",
+ (unsigned long)up->pps_i.assert_sequence);
refclock_report(peer, CEVNT_FAULT);
return(1);
}
@@ -1544,8 +1540,8 @@ mx4200_pps(
if (up->pps_i.assert_sequence == up->lastserial) {
mx4200_debug(peer, "mx4200_pps: no new pps event\n");
} else {
- mx4200_debug(peer, "mx4200_pps: missed %d pps events\n",
- up->pps_i.assert_sequence - up->lastserial - 1);
+ mx4200_debug(peer, "mx4200_pps: missed %ul pps events\n",
+ up->pps_i.assert_sequence - up->lastserial - 1UL);
}
refclock_report(peer, CEVNT_FAULT);
}
@@ -1576,6 +1572,7 @@ mx4200_debug(peer, fmt, va_alist)
char *fmt;
#endif /* __STDC__ */
{
+#ifdef DEBUG
va_list ap;
struct refclockproc *pp;
struct mx4200unit *up;
@@ -1600,6 +1597,7 @@ mx4200_debug(peer, fmt, va_alist)
va_end(ap);
}
+#endif
}
/*
diff --git a/contrib/ntp/ntpd/refclock_neoclock4x.c b/contrib/ntp/ntpd/refclock_neoclock4x.c
index 082b1cf..374c81a 100644
--- a/contrib/ntp/ntpd/refclock_neoclock4x.c
+++ b/contrib/ntp/ntpd/refclock_neoclock4x.c
@@ -3,12 +3,12 @@
* Refclock_neoclock4x.c
* - NeoClock4X driver for DCF77 or FIA Timecode
*
- * Date: 2003-07-07 v1.13
+ * Date: 2006-01-11 v1.15
*
* see http://www.linum.com/redir/jump/id=neoclock4x&action=redir
* for details about the NeoClock4X device
*
- * Copyright (C) 2002-2003 by Linum Software GmbH <neoclock4x@linum.com>
+ * Copyright (C) 2002-2004 by Linum Software GmbH <neoclock4x@linum.com>
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -39,9 +39,11 @@
#if defined HAVE_SYS_MODEM_H
# include <sys/modem.h>
-# define TIOCMSET MCSETA
-# define TIOCMGET MCGETA
-# define TIOCM_RTS MRTS
+# ifndef __QNXNTO__
+# define TIOCMSET MCSETA
+# define TIOCMGET MCGETA
+# define TIOCM_RTS MRTS
+# endif
#endif
#ifdef HAVE_TERMIOS_H
@@ -59,6 +61,17 @@
#endif
/*
+ * NTP version 4.20 change the pp->msec field to pp->nsec.
+ * To allow to support older ntp versions with this sourcefile
+ * you can define NTP_PRE_420 to allow this driver to compile
+ * with ntp version back to 4.1.2.
+ *
+ */
+#if 0
+#define NTP_PRE_420
+#endif
+
+/*
* If you want the driver for whatever reason to not use
* the TX line to send anything to your NeoClock4X
* device you must tell the NTP refclock driver which
@@ -74,6 +87,7 @@
#define NEOCLOCK4X_FIRMWARE NEOCLOCK4X_FIRMWARE_VERSION_A
#endif
+/* at this time only firmware version A is known */
#define NEOCLOCK4X_FIRMWARE_VERSION_A 'A'
#define NEOCLOCK4X_TIMECODELEN 37
@@ -95,7 +109,9 @@
#define NEOCLOCK4X_OFFSET_ANTENNA2 33
#define NEOCLOCK4X_OFFSET_CRC 35
-#define NEOCLOCK4X_DRIVER_VERSION "1.12 (2003-01-10)"
+#define NEOCLOCK4X_DRIVER_VERSION "1.15 (2006-01-11)"
+
+#define NSEC_TO_MILLI 1000000
struct neoclock4x_unit {
l_fp laststamp; /* last receive timestamp */
@@ -133,9 +149,6 @@ static int neol_hexatoi_len P((const char str[], int *, int));
static void neol_jdn_to_ymd P((unsigned long, int *, int *, int *));
static void neol_localtime P((unsigned long, int* , int*, int*, int*, int*, int*));
static unsigned long neol_mktime P((int, int, int, int, int, int));
-#if 0
-static void neol_mdelay P((int));
-#endif
#if !defined(NEOCLOCK4X_FIRMWARE)
static int neol_query_firmware P((int, int, char *, int));
static int neol_check_firmware P((int, const char*, char *));
@@ -172,13 +185,37 @@ neoclock4x_start(int unit,
/* LDISC_STD, LDISC_RAW
* Open serial port. Use CLK line discipline, if available.
*/
- fd = refclock_open(dev, B2400, LDISC_CLK);
+ fd = refclock_open(dev, B2400, LDISC_STD);
if(fd <= 0)
{
return (0);
}
#if defined(HAVE_TERMIOS)
+
+#if 1
+ if(tcgetattr(fd, &termsettings) < 0)
+ {
+ msyslog(LOG_CRIT, "NeoClock4X(%d): (tcgetattr) can't query serial port settings: %m", unit);
+ (void) close(fd);
+ return (0);
+ }
+
+ /* 2400 Baud 8N2 */
+ termsettings.c_iflag = IGNBRK | IGNPAR | ICRNL;
+ termsettings.c_oflag = 0;
+ termsettings.c_cflag = CS8 | CSTOPB | CLOCAL | CREAD;
+ (void)cfsetispeed(&termsettings, (u_int)B2400);
+ (void)cfsetospeed(&termsettings, (u_int)B2400);
+
+ if(tcsetattr(fd, TCSANOW, &termsettings) < 0)
+ {
+ msyslog(LOG_CRIT, "NeoClock4X(%d): (tcsetattr) can't set serial port 2400 8N2: %m", unit);
+ (void) close(fd);
+ return (0);
+ }
+
+#else
if(tcgetattr(fd, &termsettings) < 0)
{
msyslog(LOG_CRIT, "NeoClock4X(%d): (tcgetattr) can't query serial port settings: %m", unit);
@@ -198,6 +235,8 @@ neoclock4x_start(int unit,
(void) close(fd);
return (0);
}
+#endif
+
#elif defined(HAVE_SYSV_TTYS)
if(ioctl(fd, TCGETA, &termsettings) < 0)
{
@@ -307,7 +346,7 @@ neoclock4x_start(int unit,
strcpy(up->firmware, "(c) 2002 NEOL S.A. FRANCE / L0.01 NDF:A:* (compile time)");
up->firmwaretag = 'A';
#else
- msyslog(LOG_EMERG, "NeoClock4X(%d): Unkown firmware defined at compile time for NeoClock4X",
+ msyslog(LOG_EMERG, "NeoClock4X(%d): unknown firmware defined at compile time for NeoClock4X",
unit);
(void) close(fd);
pp->io.fd = -1;
@@ -524,7 +563,11 @@ neoclock4x_receive(struct recvbuf *rbufp)
neol_atoi_len(&pp->a_lastcode[NEOCLOCK4X_OFFSET_MINUTE], &pp->minute, 2);
neol_atoi_len(&pp->a_lastcode[NEOCLOCK4X_OFFSET_SECOND], &pp->second, 2);
neol_atoi_len(&pp->a_lastcode[NEOCLOCK4X_OFFSET_HSEC], &dsec, 2);
- pp->nsec = dsec * 10000; /* convert 1/100s from neoclock to nanoseconds */
+#if defined(NTP_PRE_420)
+ pp->msec = dsec * 10; /* convert 1/100s from neoclock to real miliseconds */
+#else
+ pp->nsec = dsec * 10 * NSEC_TO_MILLI; /* convert 1/100s from neoclock to nanoseconds */
+#endif
memcpy(up->radiosignal, &pp->a_lastcode[NEOCLOCK4X_OFFSET_RADIOSIGNAL], 3);
up->radiosignal[3] = 0;
@@ -583,7 +626,13 @@ neoclock4x_receive(struct recvbuf *rbufp)
msyslog(LOG_DEBUG, "NeoClock4X(%d): calculated UTC date/time: %04d-%02d-%02d %02d:%02d:%02d.%03ld",
up->unit,
pp->year, month, day,
- pp->hour, pp->minute, pp->second, pp->nsec/1000);
+ pp->hour, pp->minute, pp->second,
+#if defined(NTP_PRE_420)
+ pp->msec
+#else
+ pp->nsec/NSEC_TO_MILLI
+#endif
+ );
}
up->utc_year = pp->year;
@@ -592,7 +641,11 @@ neoclock4x_receive(struct recvbuf *rbufp)
up->utc_hour = pp->hour;
up->utc_minute = pp->minute;
up->utc_second = pp->second;
- up->utc_msec = pp->nsec/1000;
+#if defined(NTP_PRE_420)
+ up->utc_msec = pp->msec;
+#else
+ up->utc_msec = pp->nsec/NSEC_TO_MILLI;
+#endif
if(!refclock_process(pp))
{
@@ -678,11 +731,9 @@ neoclock4x_control(int unit,
if(NULL != out)
{
- static char outstatus[800]; /* status output buffer */
char *tt;
char tmpbuf[80];
- outstatus[0] = '\0';
out->kv_list = (struct ctl_var *)0;
out->type = REFCLK_NEOCLOCK4X;
@@ -741,9 +792,9 @@ neol_hexatoi_len(const char str[],
int i;
int n = 0;
- for(i=0; isxdigit(str[i]) && i < maxlen; i++)
+ for(i=0; isxdigit((int)str[i]) && i < maxlen; i++)
{
- hexdigit = isdigit(str[i]) ? toupper(str[i]) - '0' : toupper(str[i]) - 'A' + 10;
+ hexdigit = isdigit((int)str[i]) ? toupper(str[i]) - '0' : toupper(str[i]) - 'A' + 10;
n = 16 * n + hexdigit;
}
*result = n;
@@ -759,7 +810,7 @@ neol_atoi_len(const char str[],
int i;
int n = 0;
- for(i=0; isdigit(str[i]) && i < maxlen; i++)
+ for(i=0; isdigit((int)str[i]) && i < maxlen; i++)
{
digit = str[i] - '0';
n = 10 * n + digit;
@@ -849,24 +900,6 @@ neol_jdn_to_ymd(unsigned long jdn,
*dd = (int)d;
}
-#if 0
-/*
- * delay in milliseconds
- */
-static void
-neol_mdelay(int milliseconds)
-{
- struct timeval tv;
-
- if(milliseconds)
- {
- tv.tv_sec = 0;
- tv.tv_usec = milliseconds * 1000;
- select(1, NULL, NULL, NULL, &tv);
- }
-}
-#endif
-
#if !defined(NEOCLOCK4X_FIRMWARE)
static int
neol_query_firmware(int fd,
@@ -1065,4 +1098,16 @@ int refclock_neoclock4x_bs;
* - fix reporting of clock status
* changes. previously a bad clock
* status was never reset.
+ *
+ * 2004/04/07 cjh
+ * Revision 1.14
+ * - open serial port in a way
+ * AIX and some other OS can
+ * handle much better
+ *
+ * 2006/01/11 cjh
+ * Revision 1.15
+ * - remove some unsued #ifdefs
+ * - fix nsec calculation, closes #499
+ *
*/
diff --git a/contrib/ntp/ntpd/refclock_nmea.c b/contrib/ntp/ntpd/refclock_nmea.c
index 28d6263..5b124cb 100644
--- a/contrib/ntp/ntpd/refclock_nmea.c
+++ b/contrib/ntp/ntpd/refclock_nmea.c
@@ -14,23 +14,17 @@
#if defined(REFCLOCK) && defined(CLOCK_NMEA)
+#include <stdio.h>
+#include <ctype.h>
+
#include "ntpd.h"
#include "ntp_io.h"
#include "ntp_unixtime.h"
#include "ntp_refclock.h"
#include "ntp_stdlib.h"
-#include <stdio.h>
-#include <ctype.h>
-
#ifdef HAVE_PPSAPI
-# ifdef HAVE_TIMEPPS_H
-# include <timepps.h>
-# else
-# ifdef HAVE_SYS_TIMEPPS_H
-# include <sys/timepps.h>
-# endif
-# endif
+# include "ppsapi_timepps.h"
#endif /* HAVE_PPSAPI */
/*
@@ -153,8 +147,53 @@ nmea_start(
(void)sprintf(device, DEVICE, unit);
fd = refclock_open(device, SPEED232, LDISC_CLK);
- if (fd < 0)
- return (0);
+ if (fd <= 0) {
+#ifdef HAVE_READLINK
+ /* nmead support added by Jon Miner (cp_n18@yahoo.com)
+ *
+ * See http://home.hiwaay.net/~taylorc/gps/nmea-server/
+ * for information about nmead
+ *
+ * To use this, you need to create a link from /dev/gpsX to
+ * the server:port where nmead is running. Something like this:
+ *
+ * ln -s server:port /dev/gps1
+ */
+ char buffer[80];
+ char *nmea_host;
+ int nmea_port;
+ int len;
+ struct hostent *he;
+ struct protoent *p;
+ struct sockaddr_in so_addr;
+
+ if ((len = readlink(device,buffer,sizeof(buffer))) == -1)
+ return(0);
+ buffer[len] = 0;
+
+ if ((nmea_host = strtok(buffer,":")) == NULL)
+ return(0);
+
+ nmea_port = atoi(strtok(NULL,":"));
+
+ if ((he = gethostbyname(nmea_host)) == NULL)
+ return(0);
+ if ((p = getprotobyname("ip")) == NULL)
+ return(0);
+ so_addr.sin_family = AF_INET;
+ so_addr.sin_port = htons(nmea_port);
+ so_addr.sin_addr = *((struct in_addr *) he->h_addr);
+
+ if ((fd = socket(PF_INET,SOCK_STREAM,p->p_proto)) == -1)
+ return(0);
+ if (connect(fd,(struct sockaddr *)&so_addr,SOCKLEN(&so_addr)) == -1) {
+ close(fd);
+ return (0);
+ }
+#else
+ return (0);
+#endif
+ }
/*
* Allocate and initialize unit structure
diff --git a/contrib/ntp/ntpd/refclock_oncore.c b/contrib/ntp/ntpd/refclock_oncore.c
index 14db92f..e1d23a9 100644
--- a/contrib/ntp/ntpd/refclock_oncore.c
+++ b/contrib/ntp/ntpd/refclock_oncore.c
@@ -40,6 +40,35 @@
* MANUFACTUR DATE 417AMA199 MANUFACTUR DATE 0C27
* OPTIONS LIST AB
*
+ * (M12+T) (M12+T later version)
+ * COPYRIGHT 1991-2002 MOTOROLA INC. COPYRIGHT 1991-2003 MOTOROLA INC.
+ * SFTW P/N # 61-G10268A SFTW P/N # 61-G10268A
+ * SOFTWARE VER # 2 SOFTWARE VER # 2
+ * SOFTWARE REV # 0 SOFTWARE REV # 1
+ * SOFTWARE DATE AUG 14 2002 SOFTWARE DATE APR 16 2003
+ * MODEL # P283T12T11 MODEL # P273T12T12
+ * HWDR P/N # 2 HWDR P/N # 2
+ * SERIAL # P04DC2 SERIAL # P05Z7Z
+ * MANUFACTUR DATE 2J17 MANUFACTUR DATE 3G15
+ *
+ * --------------------------------------------------------------------------
+ * Reg Clemens (Feb 2006)
+ * Fix some gcc4 compiler complaints
+ * Fix possible segfault in oncore_init_shmem
+ * change all (possible) fprintf(stderr, to record_clock_stats
+ * Apply patch from Russell J. Yount <rjy@cmu.edu> Fixed (new) MT12+T UTC not correct
+ * immediately after new Almanac Read.
+ * Apply patch for new PPS implementation by Rodolfo Giometti <giometti@linux.it>
+ * now code can use old Ulrich Windl <Ulrich.Windl@rz.uni-regensburg.de> or
+ * the new one. Compiles depending on timepps.h seen.
+ * --------------------------------------------------------------------------
+ * Luis Batanero Guerrero <luisba@rao.es> (Dec 2005) Patch for leap seconds
+ * (the oncore driver was setting the wrong ntpd variable)
+ * --------------------------------------------------------------------------
+ * Reg.Clemens (Mar 2004)
+ * Support for interfaces other than PPSAPI removed, for Solaris, SunOS,
+ * SCO, you now need to use one of the timepps.h files in the root dir.
+ * this driver will 'grab' it for you if you dont have one in /usr/include
* --------------------------------------------------------------------------
* This code uses the two devices
* /dev/oncore.serial.n
@@ -84,7 +113,7 @@
#include <config.h>
#endif
-#if defined(REFCLOCK) && defined(CLOCK_ONCORE) && defined(HAVE_PPSAPI)
+#if defined(REFCLOCK) && defined(CLOCK_ONCORE)
#include "ntpd.h"
#include "ntp_io.h"
@@ -100,43 +129,18 @@
# include <sys/mman.h>
# ifndef MAP_FAILED
# define MAP_FAILED ((u_char *) -1)
-# endif /* not MAP_FAILED */
+# endif /* MAP_FAILED */
# endif /* HAVE_SYS_MMAN_H */
#endif /* ONCORE_SHMEM_STATUS */
#ifdef HAVE_PPSAPI
-# ifdef HAVE_TIMEPPS_H
-# include <timepps.h>
-# else
-# ifdef HAVE_SYS_TIMEPPS_H
-# include <sys/timepps.h>
-# endif
-# endif
+# include "ppsapi_timepps.h"
#endif
#ifdef HAVE_SYS_SIO_H
# include <sys/sio.h>
#endif
-#ifdef HAVE_SYS_TERMIOS_H
-# include <sys/termios.h>
-#endif
-
-#ifdef HAVE_SYS_PPSCLOCK_H
-# include <sys/ppsclock.h>
-#endif
-
-#ifndef HAVE_STRUCT_PPSCLOCKEV
-struct ppsclockev {
-# ifdef HAVE_STRUCT_TIMESPEC
- struct timespec tv;
-# else
- struct timeval tv;
-# endif
- u_int serial;
-};
-#endif /* not HAVE_STRUCT_PPSCLOCKEV */
-
enum receive_state {
ONCORE_NO_IDEA,
ONCORE_CHECK_ID,
@@ -216,10 +220,8 @@ struct instance {
int ttyfd; /* TTY file descriptor */
int ppsfd; /* PPS file descriptor */
int shmemfd; /* Status shm descriptor */
-#ifdef HAVE_PPSAPI
pps_handle_t pps_h;
pps_params_t pps_p;
-#endif
enum receive_state o_state; /* Receive state */
enum posn_mode mode; /* 0D, 2D, 3D */
enum site_survey_state site_survey; /* Site Survey state */
@@ -253,8 +255,7 @@ struct instance {
u_int revision;
u_char chan; /* 6 for PVT6 or BASIC, 8 for UT/VP, 12 for m12, 0 if unknown */
- s_char traim; /* do we have traim? yes UT/VP, no BASIC, GT, M12+T, -1 unknown, 0 no, +1 yes */
-
+ s_char traim; /* do we have traim? yes UT/VP, M12+T, no BASIC, GT, M12, -1 unknown, 0 no, +1 yes */
/* the following 7 are all timing counters */
u_char traim_delay; /* seconds counter, waiting for reply */
u_char count; /* cycles thru Ea before starting */
@@ -262,6 +263,8 @@ struct instance {
u_char count2; /* cycles thru Ea after count, to check for @@Ea */
u_char count3; /* cycles thru Ea checking for # channels */
u_char count4; /* cycles thru leap after Gj to issue Bj */
+ u_char count5; /* cycles thru get_timestamp waiting for valid UTC correction */
+ u_char count5_set; /* only set count5 once */
u_char pollcnt;
u_char timeout; /* count to retry Cj after Fa self-test */
@@ -285,7 +288,7 @@ struct instance {
s_char chan_in; /* chan number from INPUT, will always use it */
u_char chan_id; /* chan number determined from part number */
u_char chan_ck; /* chan number determined by sending commands to hardware */
- s_char traim_in; /* TRAIM from INPUT, will always use it */
+ s_char traim_in; /* TRAIM from INPUT, will always use ON/OFF specified */
s_char traim_id; /* TRAIM determined from part number */
u_char traim_ck; /* TRAIM determined by sending commands to hardware */
u_char once; /* one pass code at top of BaEaHa */
@@ -297,7 +300,6 @@ struct instance {
#define rcvptr instance->Rcvptr
static int oncore_start P((int, struct peer *));
-static void oncore_control P((int, struct refclockstat *, struct refclockstat *, struct peer *));
static void oncore_poll P((int, struct peer *));
static void oncore_shutdown P((int, struct peer *));
static void oncore_consume P((struct instance *));
@@ -344,7 +346,6 @@ static void oncore_msg_Cj_id P((struct instance *, u_char *, size_t));
static void oncore_msg_Cj_init P((struct instance *, u_char *, size_t));
static void oncore_msg_Ga P((struct instance *, u_char *, size_t));
static void oncore_msg_Gb P((struct instance *, u_char *, size_t));
-static void oncore_msg_Gd P((struct instance *, u_char *, size_t));
static void oncore_msg_Gj P((struct instance *, u_char *, size_t));
static void oncore_msg_Sz P((struct instance *, u_char *, size_t));
@@ -352,7 +353,7 @@ struct refclock refclock_oncore = {
oncore_start, /* start up driver */
oncore_shutdown, /* shut down driver */
oncore_poll, /* transmit poll message */
- oncore_control, /* fudge (flag) control messages */
+ noentry, /* not used */
noentry, /* not used */
noentry, /* not used */
NOFLAGS /* not used */
@@ -405,7 +406,7 @@ static struct msg_desc {
{ "Ga", 20, oncore_msg_Ga, "" },
{ "Gb", 17, oncore_msg_Gb, "" },
{ "Gc", 8, 0, "" },
- { "Gd", 8, oncore_msg_Gd, "" },
+ { "Gd", 8, 0, "" },
{ "Ge", 8, 0, "" },
{ "Gj", 21, oncore_msg_Gj, "" },
{ "Ia", 10, oncore_msg_CaFaIa, "" },
@@ -446,8 +447,8 @@ static u_char oncore_cmd_Bd[] = { 'B', 'd', 1 }; /* 6/8/12? Almanac Stat
static u_char oncore_cmd_Be[] = { 'B', 'e', 1 }; /* 6/8/12 Request Almanac Data */
static u_char oncore_cmd_Bj[] = { 'B', 'j', 0 }; /* 6/8 Leap Second Pending */
static u_char oncore_cmd_Bn0[] = { 'B', 'n', 0, 1, 0,10, 2, 0,0,0, 0,0,0,0,0,0,0 }; /* 6 TRAIM setup/status: msg off, traim on */
-static u_char oncore_cmd_Bn[] = { 'B', 'n', 1, 1, 0,10, 2, 0,0,0, 0,0,0,0,0,0,0 }; /* 6 TRAIM setup/status: msg on traim on */
-static u_char oncore_cmd_Bnx[] = { 'B', 'n', 1, 0, 0,10, 2, 0,0,0, 0,0,0,0,0,0,0 }; /* 6 TRAIM setup/status: msg on traim off */
+static u_char oncore_cmd_Bn[] = { 'B', 'n', 1, 1, 0,10, 2, 0,0,0, 0,0,0,0,0,0,0 }; /* 6 TRAIM setup/status: msg on, traim on */
+static u_char oncore_cmd_Bnx[] = { 'B', 'n', 0, 0, 0,10, 2, 0,0,0, 0,0,0,0,0,0,0 }; /* 6 TRAIM setup/status: msg off, traim off */
static u_char oncore_cmd_Ca[] = { 'C', 'a' }; /* 6 Self Test */
static u_char oncore_cmd_Cf[] = { 'C', 'f' }; /* 6/8/12 Set to Defaults */
static u_char oncore_cmd_Cg[] = { 'C', 'g', 1 }; /* VP Posn Fix/Idle Mode */
@@ -456,8 +457,8 @@ static u_char oncore_cmd_Ea0[] = { 'E', 'a', 0 }; /* 8 Position/Data/Stat
static u_char oncore_cmd_Ea[] = { 'E', 'a', 1 }; /* 8 Position/Data/Status: on */
static u_char oncore_cmd_Ek[] = { 'E', 'k', 0 }; /* just turn off */ /* 8 Posn/Status/Data - extension */
static u_char oncore_cmd_En0[] = { 'E', 'n', 0, 1, 0,10, 2, 0,0,0, 0,0,0,0,0,0,0 }; /* 8/GT TRAIM setup/status: msg off, traim on */
-static u_char oncore_cmd_En[] = { 'E', 'n', 1, 1, 0,10, 2, 0,0,0, 0,0,0,0,0,0,0 }; /* 8/GT TRAIM setup/status: msg on traim on */
-static u_char oncore_cmd_Enx[] = { 'E', 'n', 1, 0, 0,10, 2, 0,0,0, 0,0,0,0,0,0,0 }; /* 8/GT TRAIM setup/status: msg on traim off */
+static u_char oncore_cmd_En[] = { 'E', 'n', 1, 1, 0,10, 2, 0,0,0, 0,0,0,0,0,0,0 }; /* 8/GT TRAIM setup/status: msg on, traim on */
+static u_char oncore_cmd_Enx[] = { 'E', 'n', 0, 0, 0,10, 2, 0,0,0, 0,0,0,0,0,0,0 }; /* 8/GT TRAIM setup/status: msg off, traim off */
static u_char oncore_cmd_Fa[] = { 'F', 'a' }; /* 8 Self Test */
static u_char oncore_cmd_Ga[] = { 'G', 'a', 0,0,0,0, 0,0,0,0, 0,0,0,0, 0 }; /* 12 Position Set */
static u_char oncore_cmd_Gax[] = { 'G', 'a', 0xff, 0xff, 0xff, 0xff, /* 12 Position Set: Read */
@@ -489,9 +490,8 @@ static u_char oncore_cmd_Ia[] = { 'I', 'a' }; /* 12 Self Test */
static char *Month[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jly",
"Aug", "Sep", "Oct", "Nov", "Dec" };
-#define DEVICE1 "/dev/oncore.serial.%d" /* name of serial device */
-#define DEVICE2 "/dev/oncore.pps.%d" /* name of pps device */
-#define INIT_FILE "/etc/ntp.oncore" /* optional init file */
+#define DEVICE1 "/dev/oncore.serial.%d" /* name of serial device */
+#define DEVICE2 "/dev/oncore.pps.%d" /* name of pps device */
#define SPEED B9600 /* Oncore Binary speed (9600 bps) */
@@ -528,37 +528,14 @@ oncore_start(
struct peer *peer
)
{
+#define STRING_LEN 32
register struct instance *instance;
struct refclockproc *pp;
- int fd1, fd2;
- char device1[30], device2[30];
+ int fd1, fd2, num;
+ char device1[STRING_LEN], device2[STRING_LEN], Msg[160];
const char *cp;
struct stat stat1, stat2;
- /* OPEN DEVICES */
- /* opening different devices for fd1 and fd2 presents no problems */
- /* opening the SAME device twice, seems to be OS dependent.
- (a) on Linux (no streams) no problem
- (b) on SunOS (and possibly Solaris, untested), (streams)
- never see the line discipline.
- Since things ALWAYS work if we only open the device once, we check
- to see if the two devices are in fact the same, then proceed to
- do one open or two.
- */
-
- (void)sprintf(device1, DEVICE1, unit);
- (void)sprintf(device2, DEVICE2, unit);
-
- if (stat(device1, &stat1)) {
- perror("ONCORE: stat fd1");
- exit(1);
- }
-
- if (stat(device2, &stat2)) {
- perror("ONCORE: stat fd2");
- exit(1);
- }
-
/* create instance structure for this unit */
if (!(instance = (struct instance *) malloc(sizeof *instance))) {
@@ -567,28 +544,6 @@ oncore_start(
}
memset((char *) instance, 0, sizeof *instance);
- if ((stat1.st_dev == stat2.st_dev) && (stat1.st_ino == stat2.st_ino)) {
- /* same device here */
- if (!(fd1 = refclock_open(device1, SPEED, LDISC_RAW
-#if !defined(HAVE_PPSAPI) && !defined(TIOCDCDTIMESTAMP)
- | LDISC_PPS
-#endif
- ))) {
- perror("ONCORE: fd1");
- exit(1);
- }
- fd2 = fd1;
- } else { /* different devices here */
- if (!(fd1=refclock_open(device1, SPEED, LDISC_RAW))) {
- perror("ONCORE: fd1");
- exit(1);
- }
- if ((fd2=open(device2, O_RDWR)) < 0) {
- perror("ONCORE: fd2");
- exit(1);
- }
- }
-
/* initialize miscellaneous variables */
pp = peer->procptr;
@@ -599,16 +554,6 @@ oncore_start(
instance->assert = 1;
instance->once = 1;
- cp = "ONCORE DRIVER -- CONFIGURING";
- record_clock_stats(&(instance->peer->srcadr), cp);
-
- instance->o_state = ONCORE_NO_IDEA;
- cp = "state = ONCORE_NO_IDEA";
- record_clock_stats(&(instance->peer->srcadr), cp);
-
- instance->ttyfd = fd1;
- instance->ppsfd = fd2;
-
instance->Bj_day = -1;
instance->traim = -1;
instance->traim_in = -1;
@@ -625,37 +570,86 @@ oncore_start(
pp->clockdesc = "Motorola Oncore GPS Receiver";
memcpy((char *)&pp->refid, "GPS\0", (size_t) 4);
- /* go read any input data in /etc/ntp.oncoreX or /etc/ntp/oncore.X */
+ cp = "ONCORE DRIVER -- CONFIGURING";
+ record_clock_stats(&(instance->peer->srcadr), cp);
- oncore_read_config(instance);
+ instance->o_state = ONCORE_NO_IDEA;
+ cp = "state = ONCORE_NO_IDEA";
+ record_clock_stats(&(instance->peer->srcadr), cp);
-#ifdef HAVE_PPSAPI
- if (time_pps_create(fd2, &instance->pps_h) < 0) {
- perror("time_pps_create");
- return(0);
+ /* Now open files.
+ * This is a bit complicated, a we dont want to open the same file twice
+ * (its a problem on some OS), and device2 may not exist for the new PPS
+ */
+
+ (void)sprintf(device1, DEVICE1, unit);
+ (void)sprintf(device2, DEVICE2, unit);
+
+ /* OPEN DEVICES */
+ /* opening different devices for fd1 and fd2 presents no problems */
+ /* opening the SAME device twice, seems to be OS dependent.
+ (a) on Linux (no streams) no problem
+ (b) on SunOS (and possibly Solaris, untested), (streams)
+ never see the line discipline.
+ Since things ALWAYS work if we only open the device once, we check
+ to see if the two devices are in fact the same, then proceed to
+ do one open or two.
+ */
+
+ if (stat(device1, &stat1)) {
+ sprintf(Msg, "Can't stat fd1 (%s)\n", device1);
+ record_clock_stats(&(instance->peer->srcadr), Msg);
+ exit(1);
}
- if (instance->assert)
- cp = "Initializing timing to Assert.";
- else
- cp = "Initializing timing to Clear.";
- record_clock_stats(&(instance->peer->srcadr), cp);
+ if (stat(device2, &stat2)) {
+ sprintf(Msg, "Can't stat fd2 (%s)\n", device2);
+ record_clock_stats(&(instance->peer->srcadr), Msg);
+ exit(1);
+ }
- if (instance->hardpps) {
- cp = "HARDPPS Set.";
- record_clock_stats(&(instance->peer->srcadr), cp);
+ if (!(fd1 = refclock_open(device1, SPEED, LDISC_RAW))) {
+ sprintf(Msg, "Can't open fd1 (%s)\n", device1);
+ record_clock_stats(&(instance->peer->srcadr), Msg);
+ exit(1);
+ }
+
+ if ((stat1.st_dev == stat2.st_dev) && (stat1.st_ino == stat2.st_ino)) /* same device here */
+ fd2 = fd1;
+ else { /* different devices here */
+ if ((fd2=open(device2, O_RDWR)) < 0) {
+ sprintf(Msg, "Can't open fd2 (%s)\n", device2);
+ record_clock_stats(&(instance->peer->srcadr), Msg);
+ exit(1);
+ }
+ }
+ num = fd2;
+
+ /* open ppsapi soure */
+
+ if (time_pps_create(num, &instance->pps_h) < 0) {
+ record_clock_stats(&(instance->peer->srcadr), "PPSAPI not found in kernel");
+ return(0);
}
+ /* continue initialization */
+
+ instance->ttyfd = fd1;
+ instance->ppsfd = fd2;
+
+ /* go read any input data in /etc/ntp.oncoreX or /etc/ntp/oncore.X */
+
+ oncore_read_config(instance);
+
if (!oncore_ppsapi(instance))
return(0);
-#endif
pp->io.clock_recv = oncore_receive;
pp->io.srcclock = (caddr_t)peer;
pp->io.datalen = 0;
pp->io.fd = fd1;
if (!io_addclock(&pp->io)) {
- perror("io_addclock");
+ record_clock_stats(&(instance->peer->srcadr), "ONCORE: io_addclock");
(void) close(fd1);
free(instance);
return (0);
@@ -690,44 +684,6 @@ oncore_start(
/*
- * Fudge control (get Flag2 and Flag3, not available at oncore_start time.
- */
-
-static void
-oncore_control(
- int unit, /* unit (not used) */
- struct refclockstat *in, /* input parameters (not used) */
- struct refclockstat *out, /* output parameters (not used) */
- struct peer *peer /* peer structure pointer */
- )
-{
- char *cp;
- struct refclockproc *pp;
- struct instance *instance;
-
- pp = peer->procptr;
- instance = (struct instance *) pp->unitptr;
-
- instance->assert = !(pp->sloppyclockflag & CLK_FLAG2);
- instance->hardpps = pp->sloppyclockflag & CLK_FLAG3;
-
- if (instance->assert)
- cp = "Resetting timing to Assert.";
- else
- cp = "Resetting timing to Clear.";
- record_clock_stats(&(instance->peer->srcadr), cp);
-
- if (instance->hardpps) {
- cp = "HARDPPS Set.";
- record_clock_stats(&(instance->peer->srcadr), cp);
- }
-
- (void) oncore_ppsapi(instance);
-}
-
-
-
-/*
* oncore_shutdown - shut down the clock
*/
@@ -745,10 +701,16 @@ oncore_shutdown(
io_closeclock(&pp->io);
+ time_pps_destroy (instance->pps_h);
+
close(instance->ttyfd);
- close(instance->ppsfd);
+
+ if ((instance->ppsfd != -1) && (instance->ppsfd != instance->ttyfd))
+ close(instance->ppsfd);
+
if (instance->shmemfd)
close(instance->shmemfd);
+
free(instance);
}
@@ -797,21 +759,21 @@ oncore_poll(
* Initialize PPSAPI
*/
-#ifdef HAVE_PPSAPI
static int
oncore_ppsapi(
struct instance *instance
)
{
- int mode;
+ int cap, mode, mode1;
+ char *cp, Msg[160];
- if (time_pps_getcap(instance->pps_h, &mode) < 0) {
- msyslog(LOG_ERR, "refclock_ioctl: time_pps_getcap failed: %m");
+ if (time_pps_getcap(instance->pps_h, &cap) < 0) {
+ msyslog(LOG_ERR, "time_pps_getcap failed: %m");
return (0);
}
if (time_pps_getparams(instance->pps_h, &instance->pps_p) < 0) {
- msyslog(LOG_ERR, "refclock_ioctl: time_pps_getparams failed: %m");
+ msyslog(LOG_ERR, "time_pps_getparams failed: %m");
return (0);
}
@@ -819,20 +781,36 @@ oncore_ppsapi(
* on before we get here, leave it alone!
*/
- if (instance->assert) { /* nb, default or ON */
- instance->pps_p.mode = PPS_CAPTUREASSERT | PPS_OFFSETASSERT;
- instance->pps_p.assert_offset.tv_sec = 0;
- instance->pps_p.assert_offset.tv_nsec = 0;
+ if (instance->assert) {
+ cp = "Assert.";
+ mode = PPS_CAPTUREASSERT;
+ mode1 = PPS_OFFSETASSERT;
} else {
- instance->pps_p.mode = PPS_CAPTURECLEAR | PPS_OFFSETCLEAR;
- instance->pps_p.clear_offset.tv_sec = 0;
- instance->pps_p.clear_offset.tv_nsec = 0;
+ cp = "Clear.";
+ mode = PPS_CAPTURECLEAR;
+ mode1 = PPS_OFFSETCLEAR;
+ }
+ sprintf(Msg, "Initializing timeing to %s.", cp);
+ record_clock_stats(&(instance->peer->srcadr), Msg);
+
+ if (!(mode & cap)) {
+ sprintf(Msg, "Can't set timeing to %s, exiting...", cp);
+ record_clock_stats(&(instance->peer->srcadr), Msg);
+ return(0);
}
- instance->pps_p.mode |= PPS_TSFMT_TSPEC;
- instance->pps_p.mode &= mode; /* only set what is legal */
+
+ if (!(mode1 & cap)) {
+ sprintf(Msg, "Can't set PPS_%sCLEAR, this will increase jitter.", cp);
+ record_clock_stats(&(instance->peer->srcadr), Msg);
+ mode1 = 0;
+ }
+
+ /* only set what is legal */
+
+ instance->pps_p.mode = (mode | mode1 | PPS_TSFMT_TSPEC) & cap;
if (time_pps_setparams(instance->pps_h, &instance->pps_p) < 0) {
- perror("time_pps_setparams");
+ record_clock_stats(&(instance->peer->srcadr), "ONCORE: time_pps_setparams fails");
exit(1);
}
@@ -841,23 +819,25 @@ oncore_ppsapi(
if (instance->hardpps) {
int i;
+ record_clock_stats(&(instance->peer->srcadr), "HARDPPS Set.");
+
if (instance->assert)
i = PPS_CAPTUREASSERT;
else
i = PPS_CAPTURECLEAR;
- if (i&mode) {
- if (time_pps_kcbind(instance->pps_h, PPS_KC_HARDPPS, i,
- PPS_TSFMT_TSPEC) < 0) {
- msyslog(LOG_ERR, "refclock_ioctl: time_pps_kcbind failed: %m");
- return (0);
- }
- pps_enable = 1;
+ /* we know that 'i' is legal from above */
+
+ if (time_pps_kcbind(instance->pps_h, PPS_KC_HARDPPS, i,
+ PPS_TSFMT_TSPEC) < 0) {
+ msyslog(LOG_ERR, "time_pps_kcbind failed: %m");
+ record_clock_stats(&(instance->peer->srcadr), "HARDPPS failed, abort...");
+ return (0);
}
+ pps_enable = 1;
}
return(1);
}
-#endif
@@ -868,8 +848,8 @@ oncore_init_shmem(
)
{
int i, l, n, fd, shmem_old_size, n1;
- char *buf, Msg[160];
- u_char *cp, *cp1, *shmem_old;
+ char Msg[160];
+ u_char *cp, *cp1, *buf, *shmem_old;
struct msg_desc *mp;
struct stat sbuf;
size_t shmem_length;
@@ -881,26 +861,29 @@ oncore_init_shmem(
*/
shmem_old = 0;
+ shmem_old_size = 0;
if ((fd = open(instance->shmem_fname, O_RDONLY)) < 0)
- perror("LOAD:SHMEM");
+ record_clock_stats(&(instance->peer->srcadr), "ONCORE: Can't open SHMEM file");
else {
fstat(fd, &sbuf);
shmem_old_size = sbuf.st_size;
- shmem_old = (u_char *) malloc((unsigned) sbuf.st_size);
- if (shmem_old == NULL) {
- perror("malloc");
- close(fd);
- return;
+ if (shmem_old_size != 0) {
+ shmem_old = (u_char *) malloc((unsigned) sbuf.st_size);
+ if (shmem_old == NULL)
+ record_clock_stats(&(instance->peer->srcadr), "ONCORE: Can't malloc buffer for shmem_old");
+ else
+ read(fd, shmem_old, shmem_old_size);
}
-
- read(fd, shmem_old, shmem_old_size);
close(fd);
}
/* OK, we now create the NEW SHMEM. */
if ((instance->shmemfd = open(instance->shmem_fname, O_RDWR|O_CREAT|O_TRUNC, 0644)) < 0) {
- perror(instance->shmem_fname);
+ record_clock_stats(&(instance->peer->srcadr), "ONCORE: Can't open shmem");
+ if (shmem_old)
+ free(shmem_old);
+
return;
}
@@ -929,12 +912,14 @@ oncore_init_shmem(
n += (mp->len + 3);
}
shmem_length = n + 2;
- fprintf(stderr, "ONCORE: SHMEM length: %d bytes\n", (int) shmem_length);
buf = malloc(shmem_length);
if (buf == NULL) {
- perror("malloc");
+ record_clock_stats(&(instance->peer->srcadr), "ONCORE: Can't malloc buffer for shmem");
close(instance->shmemfd);
+ if (shmem_old)
+ free(shmem_old);
+
return;
}
@@ -969,20 +954,21 @@ oncore_init_shmem(
}
/* we now walk thru the two buffers (shmem_old and buf, soon to become shmem)
- * copying the data in shmem_old to buf. When we are done we write it out
- * and free both buffers.
- * If the structures change (an addition or deletion) I will stop copying.
- * The two will be the same unless we add/subtract from the oncore_messages list
- * so this should work most of the time, and takes a lot less code than doing it right.
+ * copying the data in shmem_old to buf.
+ * When we are done we write it out and free both buffers.
+ * If the structure sizes dont agree, I will not copy.
+ * This could be due to an addition/deletion or a problem with the disk file.
*/
if (shmem_old) {
- for (cp=buf+4, cp1=shmem_old+4; (n = 256*(*(cp-3)) + *(cp-2)); cp+=(n+3), cp1+=(n+3)) {
- n1 = 256*(*(cp1-3)) + *(cp1-2);
- if (n1 != n || strncmp(cp, cp1, 4))
- break;
+ if (shmem_old_size == shmem_length) {
+ for (cp=buf+4, cp1=shmem_old+4; (n = 256*(*(cp-3)) + *(cp-2)); cp+=(n+3), cp1+=(n+3)) {
+ n1 = 256*(*(cp1-3)) + *(cp1-2);
+ if (n == 0 || n1 != n || strncmp((char *) cp, (char *) cp1, 4))
+ break;
- memcpy(cp, cp1, (size_t) n);
+ memcpy(cp, cp1, (size_t) n);
+ }
}
free(shmem_old);
}
@@ -991,7 +977,7 @@ oncore_init_shmem(
free(buf);
if (i != shmem_length) {
- perror(instance->shmem_fname);
+ record_clock_stats(&(instance->peer->srcadr), "ONCORE: error writing shmem");
close(instance->shmemfd);
return;
}
@@ -1009,7 +995,8 @@ oncore_init_shmem(
return;
}
- sprintf(Msg, "SHMEM (size = %d) is CONFIGURED and available as %s", shmem_length, instance->shmem_fname);
+ sprintf(Msg, "SHMEM (size = %ld) is CONFIGURED and available as %s",
+ (u_long) shmem_length, instance->shmem_fname);
record_clock_stats(&(instance->peer->srcadr), Msg);
}
#endif /* ONCORE_SHMEM_STATUS */
@@ -1140,19 +1127,28 @@ oncore_read_config(
*/
FILE *fd;
- char *cp, *cc, *ca, line[100], units[2], device[20], Msg[160];
+ char *cp, *cc, *ca, line[100], units[2], device[20], Msg[160], **cpp;
+ char *dirs[] = { "/etc/ntp", "/etc", 0 };
int i, sign, lat_flg, long_flg, ht_flg, mode, mask;
double f1, f2, f3;
- sprintf(device, "%s%d", INIT_FILE, instance->unit); /* try "ntp.oncore0" first */
- if ((fd=fopen(device, "r")) == NULL) { /* it was in the original documentation */
- sprintf(device, "%s.%d", INIT_FILE, instance->unit); /* then try "ntp.oncore.0 */
- if ((fd=fopen(device, "r")) == NULL) {
- if ((fd=fopen(INIT_FILE, "r")) == NULL) { /* and finally "ntp.oncore" */
- instance->init_type = 4;
- return;
- }
- }
+ fd = NULL; /* just to shutup gcc complaint */
+ for (cpp=dirs; *cpp; cpp++) {
+ cp = *cpp;
+ sprintf(device, "%s/ntp.oncore.%d", cp, instance->unit); /* try "ntp.oncore.0 */
+ if ((fd=fopen(device, "r")))
+ break;
+ sprintf(device, "%s/ntp.oncore%d", cp, instance->unit); /* try "ntp.oncore0" */
+ if ((fd=fopen(device, "r")))
+ break;
+ sprintf(device, "%s/ntp.oncore", cp); /* and finally "ntp.oncore" */
+ if ((fd=fopen(device, "r")))
+ break;
+ }
+
+ if (!fd) { /* no inputfile, default to the works ... */
+ instance->init_type = 4;
+ return;
}
mode = mask = 0;
@@ -1306,7 +1302,7 @@ oncore_read_config(
instance->posn_set = 1;
if (!( lat_flg && long_flg && ht_flg )) {
- printf("ONCORE: incomplete data on %s\n", INIT_FILE);
+ printf("ONCORE: incomplete data on %s\n", device);
instance->posn_set = 0;
if (mode == 1 || mode == 3) {
sprintf(Msg, "Input Mode = %d, but no/incomplete position, mode set to %d", mode, mode+1);
@@ -1382,8 +1378,10 @@ oncore_consume(
for (i=1; i < rcvptr-1; i++)
if (rcvbuf[i] == '@' && rcvbuf[i+1] == '@')
break;
+#ifdef DEBUG
if (debug > 4)
printf("ONCORE[%d]: >>> skipping %d chars\n", instance->unit, i);
+#endif
if (i != rcvptr)
memcpy(rcvbuf, rcvbuf+i, (size_t)(rcvptr-i));
rcvptr -= i;
@@ -1396,8 +1394,10 @@ oncore_consume(
if (!strncmp(oncore_messages[m].flag, (char *)(rcvbuf+2), (size_t) 2))
break;
if (m == l) {
+#ifdef DEBUG
if (debug > 4)
printf("ONCORE[%d]: >>> Unknown MSG, skipping 4 (%c%c)\n", instance->unit, rcvbuf[2], rcvbuf[3]);
+#endif
memcpy(rcvbuf, rcvbuf+4, (size_t) 4);
rcvptr -= 4;
continue;
@@ -1416,8 +1416,10 @@ oncore_consume(
/* are we at the end of message? should be <Cksum><CR><LF> */
if (rcvbuf[l-2] != '\r' || rcvbuf[l-1] != '\n') {
+#ifdef DEBUG
if (debug)
printf("ONCORE[%d]: NO <CR><LF> at end of message\n", instance->unit);
+#endif
} else { /* check the CheckSum */
if (oncore_checksum_ok(rcvbuf, l)) {
if (instance->shmem != NULL) {
@@ -1428,13 +1430,16 @@ oncore_consume(
oncore_msg_any(instance, rcvbuf, (size_t) (l-3), m);
if (oncore_messages[m].handler)
oncore_messages[m].handler(instance, rcvbuf, (size_t) (l-3));
- } else if (debug) {
+ }
+#ifdef DEBUG
+ else if (debug) {
printf("ONCORE[%d]: Checksum mismatch!\n", instance->unit);
printf("ONCORE[%d]: @@%c%c ", instance->unit, rcvbuf[2], rcvbuf[3]);
for (i=4; i<l; i++)
printf("%03o ", rcvbuf[i]);
printf("\n");
}
+#endif
}
if (l != rcvptr)
@@ -1453,7 +1458,7 @@ oncore_get_timestamp(
)
{
int Rsm;
- u_long i, j;
+ u_long j;
l_fp ts, ts_tmp;
double dmy;
#ifdef HAVE_STRUCT_TIMESPEC
@@ -1461,24 +1466,11 @@ oncore_get_timestamp(
#else
struct timeval *tsp = 0;
#endif
-#ifdef HAVE_PPSAPI
int current_mode;
+ u_long i;
pps_params_t current_params;
struct timespec timeout;
pps_info_t pps_i;
-#else /* ! HAVE_PPSAPI */
-#ifdef HAVE_CIOGETEV
- struct ppsclockev ev;
- int r = CIOGETEV;
-#endif
-#ifdef HAVE_TIOCGPPSEV
- struct ppsclockev ev;
- int r = TIOCGPPSEV;
-#endif
-#if TIOCDCDTIMESTAMP
- struct timeval tv;
-#endif
-#endif /* ! HAVE_PPS_API */
#if 1
/* If we are in SiteSurvey mode, then we are in 3D mode, and we fall thru.
@@ -1500,7 +1492,17 @@ oncore_get_timestamp(
if (instance->rsm.bad_almanac)
return;
-#ifdef HAVE_PPSAPI
+ /* Once the Almanac is valid, the M12+T does not produce valid UTC
+ * immediately.
+ * Wait for UTC offset decode valid, then wait one message more
+ * so we are not off by 13 seconds after reset.
+ */
+
+ if (instance->count5) {
+ instance->count5--;
+ return;
+ }
+
j = instance->ev_serial;
timeout.tv_sec = 0;
timeout.tv_nsec = 0;
@@ -1513,18 +1515,20 @@ oncore_get_timestamp(
if (instance->assert) {
tsp = &pps_i.assert_timestamp;
+#ifdef DEBUG
if (debug > 2) {
i = (u_long) pps_i.assert_sequence;
-#ifdef HAVE_STRUCT_TIMESPEC
+# ifdef HAVE_STRUCT_TIMESPEC
printf("ONCORE[%d]: serial/j (%lu, %lu) %ld.%09ld\n",
instance->unit, i, j,
(long)tsp->tv_sec, (long)tsp->tv_nsec);
-#else
+# else
printf("ONCORE[%d]: serial/j (%lu, %lu) %ld.%06ld\n",
instance->unit, i, j,
(long)tsp->tv_sec, (long)tsp->tv_usec);
-#endif
+# endif
}
+#endif
if (pps_i.assert_sequence == j) {
printf("ONCORE: oncore_get_timestamp, error serial pps\n");
@@ -1534,16 +1538,18 @@ oncore_get_timestamp(
} else {
tsp = &pps_i.clear_timestamp;
+#ifdef DEBUG
if (debug > 2) {
i = (u_long) pps_i.clear_sequence;
-#ifdef HAVE_STRUCT_TIMESPEC
+# ifdef HAVE_STRUCT_TIMESPEC
printf("ONCORE[%d]: serial/j (%lu, %lu) %ld.%09ld\n",
instance->unit, i, j, (long)tsp->tv_sec, (long)tsp->tv_nsec);
-#else
+# else
printf("ONCORE[%d]: serial/j (%lu, %lu) %ld.%06ld\n",
instance->unit, i, j, (long)tsp->tv_sec, (long)tsp->tv_usec);
-#endif
+# endif
}
+#endif
if (pps_i.clear_sequence == j) {
printf("ONCORE: oncore_get_timestamp, error serial pps\n");
@@ -1556,8 +1562,9 @@ oncore_get_timestamp(
dmy = tsp->tv_nsec;
dmy /= 1e9;
- ts.l_uf = dmy * 4294967296.0;
+ ts.l_uf = dmy * 4294967296.0;
ts.l_ui = tsp->tv_sec;
+
#if 0
alternate code for previous 4 lines is
dmy = 1.0e-9*tsp->tv_nsec; /* fractional part */
@@ -1570,49 +1577,11 @@ oncore_get_timestamp(
DTOLFP(dmy, &ts);
ts.l_ui = tsp->tv_sec;
#endif /* 0 */
-#else
-# if defined(HAVE_TIOCGPPSEV) || defined(HAVE_CIOGETEV)
- j = instance->ev_serial;
- if (ioctl(instance->ppsfd, r, (caddr_t) &ev) < 0) {
- perror("ONCORE: IOCTL:");
- return;
- }
-
- tsp = &ev.tv;
-
- if (debug > 2)
-#ifdef HAVE_STRUCT_TIMESPEC
- printf("ONCORE: serial/j (%d, %d) %ld.%09ld\n",
- ev.serial, j, tsp->tv_sec, tsp->tv_nsec);
-#else
- printf("ONCORE: serial/j (%d, %d) %ld.%06ld\n",
- ev.serial, j, tsp->tv_sec, tsp->tv_usec);
-#endif
- if (ev.serial == j) {
- printf("ONCORE: oncore_get_timestamp, error serial pps\n");
- return;
- }
- instance->ev_serial = ev.serial;
-
- /* convert timeval -> ntp l_fp */
-
- TVTOTS(tsp, &ts);
-# else
-# if defined(TIOCDCDTIMESTAMP)
- if(ioctl(instance->ppsfd, TIOCDCDTIMESTAMP, &tv) < 0) {
- perror("ONCORE: ioctl(TIOCDCDTIMESTAMP)");
- return;
- }
- tsp = &tv;
- TVTOTS(tsp, &ts);
-# else
-#error "Cannot compile -- no PPS mechanism configured!"
-# endif
-# endif
-#endif
/* now have timestamp in ts */
/* add in saw_tooth and offset, these will be ZERO if no TRAIM */
+ /* they will be IGNORED if the PPSAPI cant do PPS_OFFSET/ASSERT/CLEAR */
+ /* we just try to add them in and dont test for that here */
/* saw_tooth not really necessary if using TIMEVAL */
/* since its only precise to us, but do it anyway. */
@@ -1620,7 +1589,6 @@ oncore_get_timestamp(
/* offset in ns, and is positive (late), we subtract */
/* to put the PPS time transition back where it belongs */
-#ifdef HAVE_PPSAPI
/* must hand the offset for the NEXT sec off to the Kernel to do */
/* the addition, so that the Kernel PLL sees the offset too */
@@ -1643,12 +1611,12 @@ oncore_get_timestamp(
*/
if (time_pps_getcap(instance->pps_h, &current_mode) < 0) {
- msyslog(LOG_ERR, "refclock_ioctl: time_pps_getcap failed: %m");
+ msyslog(LOG_ERR, "time_pps_getcap failed: %m");
return;
}
if (time_pps_getparams(instance->pps_h, &current_params) < 0) {
- msyslog(LOG_ERR, "refclock_ioctl: time_pps_getparams failed: %m");
+ msyslog(LOG_ERR, "time_pps_getparams failed: %m");
return;
}
@@ -1663,15 +1631,8 @@ oncore_get_timestamp(
current_params.clear_offset.tv_nsec = -dt2;
if (time_pps_setparams(instance->pps_h, &current_params))
- perror("time_pps_setparams");
-#else
- /* if not PPSAPI, no way to inform kernel of OFFSET, just add the */
- /* offset for THIS second */
+ record_clock_stats(&(instance->peer->srcadr), "ONCORE: Error doing time_pps_setparams");
- dmy = -1.0e-9*dt1;
- DTOLFP(dmy, &ts_tmp);
- L_ADD(&ts, &ts_tmp);
-#endif
/* have time from UNIX origin, convert to NTP origin. */
ts.l_ui += JAN_1970;
@@ -1693,47 +1654,74 @@ oncore_get_timestamp(
Rsm = ((instance->BEHa[129]<<8) | instance->BEHa[130]);
if (instance->chan == 6 || instance->chan == 8) {
- sprintf(instance->pp->a_lastcode, /* MAX length 128, currently at 117 */
- "%u.%09lu %d %d %2d %2d %2d %2ld rstat %02x dop %4.1f nsat %2d,%d traim %d sigma %2d neg-sawtooth %3d sat %d%d%d%d%d%d%d%d",
+ char f1[5], f2[5], f3[5], f4[5];
+ if (instance->traim) {
+ sprintf(f1, "%d", instance->BEHn[21]);
+ sprintf(f2, "%d", instance->BEHn[22]);
+ sprintf(f3, "%2d", instance->BEHn[23]*256+instance->BEHn[24]);
+ sprintf(f4, "%3d", (s_char) instance->BEHn[25]);
+ } else {
+ strcpy(f1, "x");
+ strcpy(f2, "x");
+ strcpy(f3, "xx");
+ strcpy(f4, "xxx");
+ }
+ sprintf(instance->pp->a_lastcode, /* MAX length 128, currently at 121 */
+ "%u.%09lu %d %d %2d %2d %2d %2ld rstat %02x dop %4.1f nsat %2d,%d traim %d,%s,%s sigma %s neg-sawtooth %s sat %d%d%d%d%d%d%d%d",
ts.l_ui, j,
instance->pp->year, instance->pp->day,
instance->pp->hour, instance->pp->minute, instance->pp->second,
(long) tsp->tv_sec % 60,
Rsm, 0.1*(256*instance->BEHa[35]+instance->BEHa[36]),
/*rsat dop */
- instance->BEHa[38], instance->BEHa[39], instance->BEHn[21],
- /* nsat visible, nsat tracked, traim */
- instance->BEHn[23]*256+instance->BEHn[24], (s_char) instance->BEHn[25],
- /* sigma neg-sawtooth */
+ instance->BEHa[38], instance->BEHa[39], instance->traim, f1, f2,
+ /* nsat visible, nsat tracked, traim,traim,traim */
+ f3, f4,
+ /* sigma neg-sawtooth */
/*sat*/ instance->BEHa[41], instance->BEHa[45], instance->BEHa[49], instance->BEHa[53],
instance->BEHa[57], instance->BEHa[61], instance->BEHa[65], instance->BEHa[69]
); /* will be 0 for 6 chan */
} else if (instance->chan == 12) {
+ char f1[5], f2[5], f3[5], f4[5];
+ if (instance->traim) {
+ sprintf(f1, "%d", instance->BEHn[6]);
+ sprintf(f2, "%d", instance->BEHn[7]);
+ sprintf(f3, "%d", instance->BEHn[12]*256+instance->BEHn[13]);
+ sprintf(f4, "%3d", (s_char) instance->BEHn[14]);
+ } else {
+ strcpy(f1, "x");
+ strcpy(f2, "x");
+ strcpy(f3, "x");
+ strcpy(f4, "xxx");
+ }
sprintf(instance->pp->a_lastcode,
- "%u.%09lu %d %d %2d %2d %2d %2ld rstat %02x dop %4.1f nsat %2d,%d traim %d sigma %d neg-sawtooth %3d sat %d%d%d%d%d%d%d%d%d%d%d%d",
+ "%u.%09lu %d %d %2d %2d %2d %2ld rstat %02x dop %4.1f nsat %2d,%d traim %d,%s,%s sigma %s neg-sawtooth %s sat %d%d%d%d%d%d%d%d%d%d%d%d",
ts.l_ui, j,
instance->pp->year, instance->pp->day,
instance->pp->hour, instance->pp->minute, instance->pp->second,
(long) tsp->tv_sec % 60,
Rsm, 0.1*(256*instance->BEHa[53]+instance->BEHa[54]),
/*rsat dop */
- instance->BEHa[55], instance->BEHa[56], instance->BEHn[6],
- /* nsat visible, nsat tracked traim */
- instance->BEHn[12]*256+instance->BEHn[13], (s_char) instance->BEHn[14],
- /* sigma neg-sawtooth */
+ instance->BEHa[55], instance->BEHa[56], instance->traim, f1, f2,
+ /* nsat visible, nsat tracked traim,traim,traim */
+ f3, f4,
+ /* sigma neg-sawtooth */
/*sat*/ instance->BEHa[58], instance->BEHa[64], instance->BEHa[70], instance->BEHa[76],
instance->BEHa[82], instance->BEHa[88], instance->BEHa[94], instance->BEHa[100],
instance->BEHa[106], instance->BEHa[112], instance->BEHa[118], instance->BEHa[124]
);
}
+#ifdef DEBUG
if (debug > 2) {
int n;
+
n = strlen(instance->pp->a_lastcode);
printf("ONCORE[%d]: len = %d %s\n", instance->unit, n, instance->pp->a_lastcode);
}
+#endif
- /* and some things I dont understnd (magic ntp things) */
+ /* and some things I dont understand (magic ntp things) */
if (!refclock_process(instance->pp)) {
refclock_report(instance->peer, CEVNT_BADTIME);
@@ -1745,9 +1733,7 @@ oncore_get_timestamp(
if (instance->polled) {
instance->polled = 0;
-/*
- instance->pp->dispersion = instance->pp->skew = 0;
-*/
+ /* instance->pp->dispersion = instance->pp->skew = 0; */
instance->pp->lastref = instance->pp->lastrec;
refclock_receive(instance->peer);
}
@@ -1777,14 +1763,15 @@ oncore_msg_any(
#endif
struct timeval tv;
+#ifdef DEBUG
if (debug > 3) {
-#ifdef HAVE_GETCLOCK
+# ifdef HAVE_GETCLOCK
(void) getclock(TIMEOFDAY, &ts);
tv.tv_sec = ts.tv_sec;
tv.tv_usec = ts.tv_nsec / 1000;
-#else
+# else
GETTIMEOFDAY(&tv, 0);
-#endif
+# endif
printf("ONCORE[%d]: %ld.%06ld\n", instance->unit, (long) tv.tv_sec, (long) tv.tv_usec);
if (!*fmt) {
@@ -1807,6 +1794,7 @@ oncore_msg_any(
printf("\n");
}
}
+#endif
}
@@ -2010,22 +1998,22 @@ oncore_msg_BaEaHa(
if (instance->o_state != ONCORE_ALMANAC && instance->o_state != ONCORE_RUN)
return;
- /* PAUSE 5sec */
+ /* PAUSE 5sec - make sure results are stable, before using position */
if (instance->count) {
- if (instance->count++ < 5) /* make sure results are stable, using position */
+ if (instance->count++ < 5)
return;
instance->count = 0;
}
memcpy(instance->BEHa, buf, (size_t) (len+3)); /* Ba, Ea or Ha */
- /* check the antenna and almanac for changes (did it get unplugged, is it ready?) */
+ /* check the antenna (did it get unplugged) and almanac (is it ready) for changes. */
oncore_check_almanac(instance);
oncore_check_antenna(instance);
- /* Almanac mode, waiting for Almanac, we can't do anything till we have it */
+ /* If we are in Almanac mode, waiting for Almanac, we can't do anything till we have it */
/* When we have an almanac, we will start the Bn/En/@@Hn messages */
if (instance->o_state == ONCORE_ALMANAC)
@@ -2089,41 +2077,67 @@ oncore_msg_BaEaHa(
oncore_sendmsg(instance->ttyfd, oncore_cmd_Agx, sizeof(oncore_cmd_Agx));
}
- if (instance->count1) {
- if (instance->count1++ > 5 || instance->site_survey == ONCORE_SS_HW) {
- instance->count1 = 0;
- if (instance->site_survey == ONCORE_SS_TESTING) {
- /*
- * For instance->site_survey to still be ONCORE_SS_TESTING, then after a 5sec
- * wait after the @@At2/@@Gd3 command we have not changed the state to
- * ONCORE_SS_HW. If the Hardware is capable of doing a Site Survey, then
- * the variable would have been changed by now.
- * There are three possibilities:
- * 6/8chan
- * (a) We did not get a response to the @@At0 or @@At2 commands,
- * and it must be a GT/GT+/SL with no position hold mode.
- * We will have to do it ourselves.
- * (b) We saw the @@At0, @@At2 commands, but @@At2 failed,
- * must be a VP or older UT which doesn't have Site Survey mode.
- * We will have to do it ourselves.
- * 12chan
- * (c) We saw the @@Gd command, but @@Gd3 failed,
- * We will have to do it ourselves.
- */
-
- sprintf(Msg, "Initiating software 3D site survey (%d samples)",
- POS_HOLD_AVERAGE);
- record_clock_stats(&(instance->peer->srcadr), Msg);
- record_clock_stats(&(instance->peer->srcadr), "SSstate = ONCORE_SS_SW");
- instance->site_survey = ONCORE_SS_SW;
+ /* Unfortunately, the Gd3 command returns '3' for the M12 v1.3 firmware where it is
+ * out-of-range and it should return 0-2. (v1.3 can't do a HW Site Survey)
+ * We must do the Gd3, and then wait a cycle or two for things to settle,
+ * then check Ha[130]&0x10 to see if a SS is in progress.
+ * We will set SW if HW has not been set after an appropriate delay.
+ */
- instance->ss_lat = instance->ss_long = instance->ss_ht = 0;
- if (instance->chan == 12)
- oncore_sendmsg(instance->ttyfd, oncore_cmd_Gd0, sizeof(oncore_cmd_Gd0)); /* disable */
- else {
- oncore_sendmsg(instance->ttyfd, oncore_cmd_At0, sizeof(oncore_cmd_At0)); /* disable */
- oncore_sendmsg(instance->ttyfd, oncore_cmd_Av0, sizeof(oncore_cmd_Av0)); /* disable */
+ if (instance->site_survey == ONCORE_SS_TESTING) {
+ if (instance->chan == 12) {
+ if (instance->count1) {
+ if (instance->count1++ > 5 || instance->BEHa[130]&0x10) {
+ instance->count1 = 0;
+ if (instance->BEHa[130]&0x10) {
+ record_clock_stats(&(instance->peer->srcadr),
+ "Initiating hardware 3D site survey");
+
+ record_clock_stats(&(instance->peer->srcadr), "SSstate = ONCORE_SS_HW");
+ instance->site_survey = ONCORE_SS_HW;
+ } else {
+ record_clock_stats(&(instance->peer->srcadr), "SSstate = ONCORE_SS_SW");
+ instance->site_survey = ONCORE_SS_SW;
+ }
+ }
+ }
+ } else {
+ if (instance->count1) {
+ if (instance->count1++ > 5) {
+ instance->count1 = 0;
+ /*
+ * For instance->site_survey to still be ONCORE_SS_TESTING, then after a 5sec
+ * wait after the @@At2/@@Gd3 command we have not changed the state to
+ * ONCORE_SS_HW. If the Hardware is capable of doing a Site Survey, then
+ * the variable would have been changed by now.
+ * There are three possibilities:
+ * 6/8chan
+ * (a) We did not get a response to the @@At0 or @@At2 commands,
+ * and it must be a GT/GT+/SL with no position hold mode.
+ * We will have to do it ourselves.
+ * (b) We saw the @@At0, @@At2 commands, but @@At2 failed,
+ * must be a VP or older UT which doesn't have Site Survey mode.
+ * We will have to do it ourselves.
+ * 12chan
+ * (c) We saw the @@Gd command, and saw H[13]*0x10
+ * We will have to do it ourselves (done above)
+ */
+
+ sprintf(Msg, "Initiating software 3D site survey (%d samples)",
+ POS_HOLD_AVERAGE);
+ record_clock_stats(&(instance->peer->srcadr), Msg);
+
+ record_clock_stats(&(instance->peer->srcadr), "SSstate = ONCORE_SS_SW");
+ instance->site_survey = ONCORE_SS_SW;
+
+ instance->ss_lat = instance->ss_long = instance->ss_ht = 0;
+ if (instance->chan == 12)
+ oncore_sendmsg(instance->ttyfd, oncore_cmd_Gd0, sizeof(oncore_cmd_Gd0)); /* disable */
+ else {
+ oncore_sendmsg(instance->ttyfd, oncore_cmd_At0, sizeof(oncore_cmd_At0)); /* disable */
+ oncore_sendmsg(instance->ttyfd, oncore_cmd_Av0, sizeof(oncore_cmd_Av0)); /* disable */
+ }
}
}
}
@@ -2167,7 +2181,7 @@ oncore_msg_BaEaHa(
case 6: smp = &instance->shmem[instance->shmem_Ba]; break;
case 8: smp = &instance->shmem[instance->shmem_Ea]; break;
case 12: smp = &instance->shmem[instance->shmem_Ha]; break;
- default: smp = (u_char) 0; break;
+ default: smp = (u_char *) NULL; break;
}
switch (instance->mode) {
@@ -2177,7 +2191,7 @@ oncore_msg_BaEaHa(
default: i = 0; break;
}
- if (i) {
+ if (i && smp != NULL) {
i *= (len+6);
smp[i + 2]++;
memcpy(&smp[i+3], buf, (size_t) (len+3));
@@ -2185,7 +2199,7 @@ oncore_msg_BaEaHa(
}
/*
- * check if timer active
+ * check if traim timer active
* if it hasn't been cleared, then @@Bn/@@En/@@Hn did not respond
*/
@@ -2301,17 +2315,17 @@ oncore_msg_Bj(
switch(buf[4]) {
case 1:
- instance->peer->leap = LEAP_ADDSECOND;
- cp = "Set peer.leap to LEAP_ADDSECOND";
+ instance->pp->leap = LEAP_ADDSECOND;
+ cp = "Set pp.leap to LEAP_ADDSECOND";
break;
case 2:
- instance->peer->leap = LEAP_DELSECOND;
- cp = "Set peer.leap to LEAP_DELSECOND";
+ instance->pp->leap = LEAP_DELSECOND;
+ cp = "Set pp.leap to LEAP_DELSECOND";
break;
case 0:
default:
- instance->peer->leap = LEAP_NOWARNING;
- cp = "Set peer.leap to LEAP_NOWARNING";
+ instance->pp->leap = LEAP_NOWARNING;
+ cp = "Set pp.leap to LEAP_NOWARNING";
break;
}
record_clock_stats(&(instance->peer->srcadr), cp);
@@ -2343,6 +2357,9 @@ oncore_msg_BnEnHn(
memcpy(instance->BEHn, buf, (size_t) len); /* Bn or En or Hn */
+ if (!instance->traim) /* BnEnHn will be turned off in any case */
+ return;
+
/* If Time RAIM doesn't like it, don't trust it */
if (buf[2] == 'H') {
@@ -2350,14 +2367,14 @@ oncore_msg_BnEnHn(
return;
dt1 = instance->saw_tooth + instance->offset; /* dt this time step */
- instance->saw_tooth = (s_char) instance->BEHn[10]; /* update for next time Hn[10] */
+ instance->saw_tooth = (s_char) instance->BEHn[14]; /* update for next time Hn[14] */
dt2 = instance->saw_tooth + instance->offset; /* dt next time step */
} else {
if (instance->BEHn[21]) /* bad TRAIM */
return;
dt1 = instance->saw_tooth + instance->offset; /* dt this time step */
- instance->saw_tooth = (s_char) instance->BEHn[25]; /* update for next time */
+ instance->saw_tooth = (s_char) instance->BEHn[25]; /* update for next time Bn[25], En[25] */
dt2 = instance->saw_tooth + instance->offset; /* dt next time step */
}
@@ -2397,12 +2414,14 @@ oncore_msg_CaFaIa(
instance->timeout = 0;
+#ifdef DEBUG
if (debug > 2) {
if (buf[2] == 'I')
printf("ONCORE[%d]: >>@@%ca %x %x %x\n", instance->unit, buf[2], buf[4], buf[5], buf[6]);
else
printf("ONCORE[%d]: >>@@%ca %x %x\n", instance->unit, buf[2], buf[4], buf[5]);
}
+#endif
antenna = (buf[4] & 0xc0) >> 6;
buf[4] &= ~0xc0;
@@ -2608,13 +2627,13 @@ oncore_msg_Cj_id(
/* next, the Firmware Version and Revision numbers */
- instance->version = atoi(&instance->Cj[83]);
- instance->revision = atoi(&instance->Cj[111]);
+ instance->version = atoi((char *) &instance->Cj[83]);
+ instance->revision = atoi((char *) &instance->Cj[111]);
/* from model number decide which Oncore this is,
and then the number of channels */
- for (cp=&instance->Cj[160]; *cp == ' '; cp++) /* start right after 'Model #' */
+ for (cp= (char *) &instance->Cj[160]; *cp == ' '; cp++) /* start right after 'Model #' */
;
cp1 = cp;
cp2 = Model;
@@ -2701,7 +2720,8 @@ oncore_msg_Cj_init(
size_t len
)
{
- char *cp, Cmd[20], Msg[160];
+ char *cp, Msg[160];
+ u_char Cmd[20];
int mode;
@@ -2860,40 +2880,12 @@ oncore_msg_Gb(
gmtm = buf[13];
sprintf(Msg, "Date/Time set to: %d%s%d %2d:%02d:%02d GMT (GMT offset is %s%02d:%02d)",
- d, Month[mo+1], y, h, m, s, gmts, gmth, gmtm);
+ d, Month[mo-1], y, h, m, s, gmts, gmth, gmtm);
record_clock_stats(&(instance->peer->srcadr), Msg);
}
-/*
- * Try to use Oncore M12+Timing Auto Survey Feature
- * If its not there (M12), set flag to do it ourselves.
- */
-
-static void
-oncore_msg_Gd(
- struct instance *instance,
- u_char *buf,
- size_t len
- )
-{
- char *cp;
-
- if (instance->site_survey == ONCORE_SS_TESTING) {
- if (buf[4] == 3) {
- record_clock_stats(&(instance->peer->srcadr),
- "Initiating hardware 3D site survey");
-
- cp = "SSstate = ONCORE_SS_HW";
- record_clock_stats(&(instance->peer->srcadr), cp);
- instance->site_survey = ONCORE_SS_HW;
- }
- }
-}
-
-
-
/* Leap Second for M12, gives all info from satellite message */
/* also in UT v3.0 */
@@ -2924,25 +2916,25 @@ oncore_msg_Gj(
if (dt) {
sprintf(Msg, "ONCORE[%d]: Leap second (%d) scheduled for %d%s%d at %d:%d:%d",
instance->unit,
- dt, buf[9], Month[buf[8]], 256*buf[6]+buf[7],
+ dt, buf[9], Month[buf[8]-1], 256*buf[6]+buf[7],
buf[15], buf[16], buf[17]);
record_clock_stats(&(instance->peer->srcadr), Msg);
}
/* Only raise warning within a month of the leap second */
- instance->peer->leap = LEAP_NOWARNING;
- cp = "Set peer.leap to LEAP_NOWARNING";
+ instance->pp->leap = LEAP_NOWARNING;
+ cp = "Set pp.leap to LEAP_NOWARNING";
if (buf[6] == instance->BEHa[6] && buf[7] == instance->BEHa[7] && /* year */
buf[8] == instance->BEHa[4]) { /* month */
if (dt) {
if (dt < 0) {
- instance->peer->leap = LEAP_DELSECOND;
- cp = "Set peer.leap to LEAP_DELSECOND";
+ instance->pp->leap = LEAP_DELSECOND;
+ cp = "Set pp.leap to LEAP_DELSECOND";
} else {
- instance->peer->leap = LEAP_ADDSECOND;
- cp = "Set peer.leap to LEAP_ADDSECOND";
+ instance->pp->leap = LEAP_ADDSECOND;
+ cp = "Set pp.leap to LEAP_ADDSECOND";
}
}
}
@@ -3038,19 +3030,30 @@ oncore_check_almanac(
instance->rsm.bad_almanac = instance->BEHa[72]&0x1;
instance->rsm.bad_fix = instance->BEHa[72]&0x52;
} else if (instance->chan == 12) {
- int bits1, bits2;
+ int bits1, bits2, bits3;
bits1 = (instance->BEHa[129]>>5) & 0x7; /* actually Ha */
bits2 = instance->BEHa[130];
instance->rsm.bad_almanac = (bits2 & 0x80);
instance->rsm.bad_fix = (bits2 & 0x8) || (bits1 == 0x2);
/* too few sat Bad Geom */
+
+ bits3 = instance->BEHa[141]; /* UTC parameters */
+ if (!instance->count5_set && (bits3 & 0xC0)) {
+ instance->count5 = 2;
+ instance->count5_set = 1;
+ }
#if 0
- fprintf(stderr, "ONCORE[%d]: DEBUG BITS: (%x %x), (%x %x), %x %x %x %x %x\n",
+{
+ char Msg[160];
+
+ sprintf(Msg, "ONCORE[%d]: DEBUG BITS: (%x %x), (%x %x %x), %x %x %x %x %x\n",
instance->unit,
- instance->BEHa[129], instance->BEHa[130], bits1, bits2, instance->mode == MODE_0D,
+ instance->BEHa[129], instance->BEHa[130], bits1, bits2, bits3, instance->mode == MODE_0D,
instance->mode == MODE_2D, instance->mode == MODE_3D,
instance->rsm.bad_almanac, instance->rsm.bad_fix);
+ record_clock_stats(&(instance->peer->srcadr), Msg);
+}
#endif
}
}
@@ -3212,7 +3215,7 @@ oncore_load_almanac(
#if 1
for (cp=instance->shmem+4; (n = 256*(*(cp-3)) + *(cp-2)); cp+=(n+3)) {
- if (!strncmp(cp, "@@Cb", 4) &&
+ if (!strncmp((char *) cp, "@@Cb", 4) &&
oncore_checksum_ok(cp, 33) &&
(*(cp+4) == 4 || *(cp+4) == 5)) {
write(instance->ttyfd, cp, n);
@@ -3249,20 +3252,22 @@ oncore_load_almanac(
if (!instance->posn_set) { /* if we input a posn use it, else from SHMEM */
record_clock_stats(&(instance->peer->srcadr), "Loading Posn from SHMEM");
for (cp=instance->shmem+4; (n = 256*(*(cp-3)) + *(cp-2)); cp+=(n+3)) {
- if ((instance->chan == 6 && (!strncmp(cp, "@@Ba", 4) && oncore_checksum_ok(cp, 68))) ||
- (instance->chan == 8 && (!strncmp(cp, "@@Ea", 4) && oncore_checksum_ok(cp, 76))) ||
- (instance->chan == 12 && (!strncmp(cp, "@@Ha", 4) && oncore_checksum_ok(cp, 154)))) {
+ if ((instance->chan == 6 && (!strncmp((char *) cp, "@@Ba", 4) && oncore_checksum_ok(cp, 68))) ||
+ (instance->chan == 8 && (!strncmp((char *) cp, "@@Ea", 4) && oncore_checksum_ok(cp, 76))) ||
+ (instance->chan == 12 && (!strncmp((char *) cp, "@@Ha", 4) && oncore_checksum_ok(cp, 154)))) {
int ii, jj, kk;
instance->posn_set = 1;
ii = buf_w32(cp + 15);
jj = buf_w32(cp + 19);
kk = buf_w32(cp + 23);
+#if 0
{
char Msg[160];
-sprintf(Msg, "SHMEM posn = %d (%d, %d, %d)", cp-instance->shmem, ii, jj, kk);
+sprintf(Msg, "SHMEM posn = %ld (%d, %d, %d)", (long) (cp-instance->shmem), ii, jj, kk);
record_clock_stats(&(instance->peer->srcadr), Msg);
}
+#endif
if (ii != 0 || jj != 0 || kk != 0) { /* phk asked for this test */
instance->ss_lat = ii;
instance->ss_long = jj;
@@ -3287,7 +3292,7 @@ record_clock_stats(&(instance->peer->srcadr), Msg);
#endif
if (instance->chan == 12) {
memcpy(Cmd, oncore_cmd_Gb, (size_t) sizeof(oncore_cmd_Gb));
- Cmd[-2+4] = tm->tm_mon;
+ Cmd[-2+4] = tm->tm_mon + 1;
Cmd[-2+5] = tm->tm_mday;
Cmd[-2+6] = (1900+tm->tm_year)/256;
Cmd[-2+7] = (1900+tm->tm_year)%256;
@@ -3304,7 +3309,7 @@ record_clock_stats(&(instance->peer->srcadr), Msg);
oncore_sendmsg(instance->ttyfd, oncore_cmd_Ab, sizeof(oncore_cmd_Ab));
memcpy(Cmd, oncore_cmd_Ac, (size_t) sizeof(oncore_cmd_Ac));
- Cmd[-2+4] = tm->tm_mon;
+ Cmd[-2+4] = tm->tm_mon + 1;
Cmd[-2+5] = tm->tm_mday;
Cmd[-2+6] = (1900+tm->tm_year)/256;
Cmd[-2+7] = (1900+tm->tm_year)%256;
@@ -3438,8 +3443,10 @@ oncore_sendmsg(
{
u_char cs = 0;
+#ifdef DEBUG
if (debug > 4)
printf("ONCORE: Send @@%c%c %d\n", ptr[0], ptr[1], (int) len);
+#endif
write(fd, "@@", (size_t) 2);
write(fd, ptr, len);
while (len--)
@@ -3456,7 +3463,7 @@ oncore_set_posn(
)
{
int mode;
- char Cmd[20];
+ u_char Cmd[20];
/* Turn OFF position hold, it needs to be off to set position (for some units),
will get set ON in @@Ea later */
@@ -3548,6 +3555,7 @@ oncore_set_traim(
oncore_sendmsg(instance->ttyfd, oncore_cmd_Enx, sizeof(oncore_cmd_Enx));
else /* chan == 12 */
oncore_sendmsg(instance->ttyfd, oncore_cmd_Ge0, sizeof(oncore_cmd_Ge0));
+ oncore_sendmsg(instance->ttyfd, oncore_cmd_Hn0, sizeof(oncore_cmd_Hn0));
}
}
@@ -3611,7 +3619,6 @@ oncore_ss(
if (instance->site_survey == ONCORE_SS_HW) {
-
/*
* Check to see if Hardware SiteSurvey has Finished.
*/
@@ -3680,8 +3687,10 @@ oncore_wait_almanac(
)
{
if (instance->rsm.bad_almanac) {
+#ifdef DEBUG
if (debug)
printf("ONCORE[%d]: waiting for almanac\n", instance->unit);
+#endif
/*
* If we get here (first time) then we don't have an almanac in memory.
diff --git a/contrib/ntp/ntpd/refclock_palisade.c b/contrib/ntp/ntpd/refclock_palisade.c
index 897221b..217ec10 100644
--- a/contrib/ntp/ntpd/refclock_palisade.c
+++ b/contrib/ntp/ntpd/refclock_palisade.c
@@ -494,7 +494,7 @@ if (debug > 1) {
return 0;
}
- pp->nsec = (long) (getdbl((u_char *) &mb(3)) * 1000000);
+ pp->nsec = (long) (getdbl((u_char *) &mb(3)) * 1000000000);
if ((pp->day = day_of_year(&mb(14))) < 0)
break;
diff --git a/contrib/ntp/ntpd/refclock_palisade.h b/contrib/ntp/ntpd/refclock_palisade.h
index 7e1ed49..e63f3da 100644
--- a/contrib/ntp/ntpd/refclock_palisade.h
+++ b/contrib/ntp/ntpd/refclock_palisade.h
@@ -59,10 +59,12 @@
#if defined HAVE_SYS_MODEM_H
#include <sys/modem.h>
+#ifndef __QNXNTO__
#define TIOCMSET MCSETA
#define TIOCMGET MCGETA
#define TIOCM_RTS MRTS
#endif
+#endif
#ifdef HAVE_TERMIOS_H
# ifdef TERMIOS_NEEDS__SVID3
diff --git a/contrib/ntp/ntpd/refclock_parse.c b/contrib/ntp/ntpd/refclock_parse.c
index 52fadaa..0b0109c 100644
--- a/contrib/ntp/ntpd/refclock_parse.c
+++ b/contrib/ntp/ntpd/refclock_parse.c
@@ -1,32 +1,51 @@
/*
- * /src/NTP/ntp-4/ntpd/refclock_parse.c,v 4.36 1999/11/28 17:18:20 kardel RELEASE_19991128_A
+ * /src/NTP/REPOSITORY/ntp4-dev/ntpd/refclock_parse.c,v 4.80 2007/08/11 12:06:29 kardel Exp
*
- * refclock_parse.c,v 4.36 1999/11/28 17:18:20 kardel RELEASE_19991128_A
+ * refclock_parse.c,v 4.80 2007/08/11 12:06:29 kardel Exp
*
- * generic reference clock driver for receivers
+ * generic reference clock driver for several DCF/GPS/MSF/... receivers
*
- * optionally make use of a STREAMS module for input processing where
- * available and configured. Currently the STREAMS module
- * is only available for Suns running SunOS 4.x and SunOS5.x
+ * PPS notes:
+ * On systems that support PPSAPI (RFC2783) PPSAPI is the
+ * preferred interface.
*
- * the STREAMS module is not required for operation and may be omitted
- * at the cost of reduced accuracy. As new kernel interfaces emerger this
- * restriction may be lifted in future.
+ * Optionally make use of a STREAMS module for input processing where
+ * available and configured. This STREAMS module reduces the time
+ * stamp latency for serial and PPS events.
+ * Currently the STREAMS module is only available for Suns running
+ * SunOS 4.x and SunOS5.x.
*
- * Copyright (c) 1995-1999 by Frank Kardel <kardel@acm.org>
+ * Copyright (c) 1995-2007 by Frank Kardel <kardel <AT> ntp.org>
* Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
*
- * This software may not be sold for profit without a written consent
- * from the author.
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
*
- * 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.
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
*/
#ifdef HAVE_CONFIG_H
-# include <config.h>
+# include "config.h"
#endif
#if defined(REFCLOCK) && defined(CLOCK_PARSE)
@@ -42,12 +61,12 @@
* - Schmid clock (DCF)
* - Conrad DCF77 receiver module (DCF)
* - FAU DCF77 NTP receiver (TimeBrick) (DCF)
+ * - WHARTON 400A Series clock (DCF)
*
* - Meinberg GPS166/GPS167 (GPS)
* - Trimble (TSIP and TAIP protocol) (GPS)
*
* - RCC8000 MSF Receiver (MSF)
- * - WHARTON 400A Series clock (DCF)
* - VARITEXT clock (MSF)
*/
@@ -79,6 +98,7 @@
#include "ntp_refclock.h"
#include "ntp_unixtime.h" /* includes <sys/time.h> */
#include "ntp_control.h"
+#include "ntp_string.h"
#include <stdio.h>
#include <ctype.h>
@@ -86,6 +106,10 @@
# include <time.h>
#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
#if !defined(STREAM) && !defined(HAVE_SYSV_TTYS) && !defined(HAVE_BSD_TTYS) && !defined(HAVE_TERMIOS)
# include "Bletch: Define one of {STREAM,HAVE_SYSV_TTYS,HAVE_TERMIOS}"
#endif
@@ -115,14 +139,43 @@
# include <sys/ioctl.h>
#endif
+#ifdef HAVE_PPSAPI
+# include "ppsapi_timepps.h"
+#endif
+
#ifdef PPS
-#ifdef HAVE_SYS_PPSCLOCK_H
-#include <sys/ppsclock.h>
+# ifdef HAVE_SYS_PPSCLOCK_H
+# include <sys/ppsclock.h>
+# endif
+# ifdef HAVE_TIO_SERIAL_STUFF
+# include <linux/serial.h>
+# endif
+#endif
+
+#define BUFFER_SIZE(_BUF, _PTR) ((_BUF) + sizeof(_BUF) - (_PTR))
+#define BUFFER_SIZES(_BUF, _PTR, _SZ) ((_BUF) + (_SZ) - (_PTR))
+
+/*
+ * document type of PPS interfacing - copy of ifdef mechanism in local_input()
+ */
+#undef PPS_METHOD
+
+#ifdef HAVE_PPSAPI
+#define PPS_METHOD "PPS API"
+#else
+#ifdef TIOCDCDTIMESTAMP
+#define PPS_METHOD "TIOCDCDTIMESTAMP"
+#else /* TIOCDCDTIMESTAMP */
+#if defined(HAVE_STRUCT_PPSCLOCKEV) && (defined(HAVE_CIOGETEV) || defined(HAVE_TIOCGPPSEV))
+#ifdef HAVE_CIOGETEV
+#define PPS_METHOD "CIOGETEV"
#endif
-#ifdef HAVE_TIO_SERIAL_STUFF
-#include <linux/serial.h>
+#ifdef HAVE_TIOCGPPSEV
+#define PPS_METHOD "TIOCGPPSEV"
#endif
#endif
+#endif /* TIOCDCDTIMESTAMP */
+#endif /* HAVE_PPSAPI */
#include "ntp_io.h"
#include "ntp_stdlib.h"
@@ -133,28 +186,26 @@
#include "binio.h"
#include "ascii.h"
#include "ieee754io.h"
+#include "recvbuff.h"
-static char rcsid[]="refclock_parse.c,v 4.36 1999/11/28 17:18:20 kardel RELEASE_19991128_A";
+static char rcsid[] = "refclock_parse.c,v 4.80 2007/08/11 12:06:29 kardel Exp";
/**===========================================================================
** external interface to ntp mechanism
**/
-static void parse_init P((void));
static int parse_start P((int, struct peer *));
static void parse_shutdown P((int, struct peer *));
static void parse_poll P((int, struct peer *));
static void parse_control P((int, struct refclockstat *, struct refclockstat *, struct peer *));
-#define parse_buginfo noentry
-
struct refclock refclock_parse = {
parse_start,
parse_shutdown,
parse_poll,
parse_control,
- parse_init,
- parse_buginfo,
+ noentry,
+ noentry,
NOFLAGS
};
@@ -163,10 +214,14 @@ struct refclock refclock_parse = {
*/
#define MAXUNITS 4 /* maximum number of "PARSE" units permitted */
#define PARSEDEVICE "/dev/refclock-%d" /* device to open %d is unit number */
+#define PARSEPPSDEVICE "/dev/refclockpps-%d" /* optional pps device to open %d is unit number */
#undef ABS
#define ABS(_X_) (((_X_) < 0) ? -(_X_) : (_X_))
+#define PARSE_HARDPPS_DISABLE 0
+#define PARSE_HARDPPS_ENABLE 1
+
/**===========================================================================
** function vector for dynamically binding io handling mechanism
**/
@@ -344,9 +399,17 @@ struct parseunit
u_long pollneeddata; /* current_time(!=0) for receive sample expected in PPS mode */
u_short lastformat; /* last format used */
u_long lastsync; /* time (ntp) when clock was last seen fully synchronized */
- u_long lastmissed; /* time (ntp) when poll didn't get data (powerup heuristic) */
+ u_long maxunsync; /* max time in seconds a receiver is trusted after loosing synchronisation */
+ double ppsphaseadjust; /* phase adjustment of PPS time stamp */
+ u_long lastmissed; /* time (ntp) when poll didn't get data (powerup heuristic) */
u_long ppsserial; /* magic cookie for ppsclock serials (avoids stale ppsclock data) */
- parsetime_t time; /* last (parse module) data */
+ int ppsfd; /* fd to ise for PPS io */
+#ifdef HAVE_PPSAPI
+ pps_handle_t ppshandle; /* store PPSAPI handle */
+ pps_params_t ppsparams; /* current PPS parameters */
+ int hardppsstate; /* current hard pps state */
+#endif
+ parsetime_t timedata; /* last (parse module) data */
void *localdata; /* optional local, receiver-specific data */
unsigned long localstate; /* private local state */
struct errorinfo errors[ERR_CNT]; /* error state table for suppressing excessive error messages */
@@ -376,7 +439,7 @@ typedef struct poll_info
#define NO_INIT 0
#define NO_END 0
#define NO_EVENT 0
-#define NO_DATA 0
+#define NO_LCLDATA 0
#define NO_MESSAGE 0
#define NO_PPSDELAY 0
@@ -397,7 +460,7 @@ typedef struct poll_info
#define NOCLOCK_POLL NO_POLL
#define NOCLOCK_INIT NO_INIT
#define NOCLOCK_END NO_END
-#define NOCLOCK_DATA NO_DATA
+#define NOCLOCK_DATA NO_LCLDATA
#define NOCLOCK_FORMAT ""
#define NOCLOCK_TYPE CTL_SST_TS_UNSPEC
#define NOCLOCK_SAMPLES 0
@@ -410,7 +473,7 @@ typedef struct poll_info
* receiver specific constants
*/
#define MBG_SPEED (B9600)
-#define MBG_CFLAG (CS7|PARENB|CREAD|CLOCAL|HUPCL)
+#define MBG_CFLAG (CS7|PARENB|CREAD|CLOCAL|HUPCL|CSTOPB)
#define MBG_IFLAG (IGNBRK|IGNPAR|ISTRIP)
#define MBG_OFLAG 0
#define MBG_LFLAG 0
@@ -591,6 +654,11 @@ static poll_info_t wsdcf_pollinfo = { WS_POLLRATE, WS_POLLCMD, WS_CMDSIZE };
#define CONRAD_BASEDELAY 0.292 /* Conrad receiver @ 50 Baud on a Sun */
#define CONRAD_DESCRIPTION "RAW DCF77 CODE (Conrad DCF77 receiver module)"
+/* Gude Analog- und Digitalsystem GmbH 'Expert mouseCLOCK USB v2.0' */
+#define GUDE_EMC_USB_V20_SPEED (B4800)
+#define GUDE_EMC_USB_V20_BASEDELAY 0.425 /* USB serial<->USB converter FTDI232R */
+#define GUDE_EMC_USB_V20_DESCRIPTION "RAW DCF77 CODE (Expert mouseCLOCK USB v2.0)"
+
/*
* TimeBrick receiver
*/
@@ -645,6 +713,7 @@ static void trimbletsip_message P((struct parseunit *, parsetime_t *));
static void trimbletsip_event P((struct parseunit *, int));
#define TRIMBLETSIP_IDLE_TIME (300) /* 5 minutes silence at most */
+#define TRIMBLE_RESET_HOLDOFF TRIMBLETSIP_IDLE_TIME
#define TRIMBLETAIP_SPEED (B4800)
#define TRIMBLETAIP_CFLAG (CS8|CREAD|CLOCAL)
@@ -819,7 +888,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
DCFPZF535_ROOTDELAY,
DCFPZF535_BASEDELAY,
DCF_P_ID,
@@ -842,7 +911,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
DCFPZF535OCXO_ROOTDELAY,
DCFPZF535OCXO_BASEDELAY,
DCF_P_ID,
@@ -865,7 +934,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
DCFUA31_ROOTDELAY,
DCFUA31_BASEDELAY,
DCF_A_ID,
@@ -888,7 +957,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
DCF7000_ROOTDELAY,
DCF7000_BASEDELAY,
DCF_A_ID,
@@ -934,7 +1003,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
RAWDCF_ROOTDELAY,
CONRAD_BASEDELAY,
DCF_A_ID,
@@ -957,7 +1026,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
RAWDCF_ROOTDELAY,
TIMEBRICK_BASEDELAY,
DCF_A_ID,
@@ -1003,7 +1072,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
RAWDCF_ROOTDELAY,
IGELCLOCK_BASEDELAY,
DCF_A_ID,
@@ -1103,7 +1172,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
HOPF6021_ROOTDELAY,
HOPF6021_BASEDELAY,
DCF_ID,
@@ -1126,7 +1195,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
COMPUTIME_ROOTDELAY,
COMPUTIME_BASEDELAY,
COMPUTIME_ID,
@@ -1149,7 +1218,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
RAWDCF_ROOTDELAY,
RAWDCF_BASEDELAY,
DCF_A_ID,
@@ -1172,7 +1241,7 @@ static struct parse_clockinfo
NO_EVENT, /* special event handling (e.g. reset clock) */
NO_END, /* active poll end routine */
NO_MESSAGE, /* process a lower layer message */
- NO_DATA, /* local data area for "poll" mechanism */
+ NO_LCLDATA, /* local data area for "poll" mechanism */
0, /* rootdelay */
11.0 /* bits */ / 9600, /* current offset by which the RS232
time code is delayed from the actual time */
@@ -1197,7 +1266,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
RAWDCF_ROOTDELAY,
RAWDCF_BASEDELAY,
DCF_A_ID,
@@ -1220,7 +1289,7 @@ static struct parse_clockinfo
NO_EVENT,
NO_END,
NO_MESSAGE,
- NO_DATA,
+ NO_LCLDATA,
VARITEXT_ROOTDELAY,
VARITEXT_BASEDELAY,
VARITEXT_ID,
@@ -1235,7 +1304,53 @@ static struct parse_clockinfo
VARITEXT_LFLAG,
VARITEXT_SAMPLES,
VARITEXT_KEEP
- }
+ },
+ { /* mode 18 */
+ MBG_FLAGS,
+ NO_POLL,
+ NO_INIT,
+ NO_EVENT,
+ GPS16X_END,
+ GPS16X_MESSAGE,
+ GPS16X_DATA,
+ GPS16X_ROOTDELAY,
+ GPS16X_BASEDELAY,
+ GPS16X_ID,
+ GPS16X_DESCRIPTION,
+ GPS16X_FORMAT,
+ GPS_TYPE,
+ GPS16X_MAXUNSYNC,
+ GPS16X_SPEED,
+ GPS16X_CFLAG,
+ GPS16X_IFLAG,
+ GPS16X_OFLAG,
+ GPS16X_LFLAG,
+ GPS16X_SAMPLES,
+ GPS16X_KEEP
+ },
+ { /* mode 19 */
+ RAWDCF_FLAGS,
+ NO_POLL,
+ RAWDCF_INIT,
+ NO_EVENT,
+ NO_END,
+ NO_MESSAGE,
+ NO_LCLDATA,
+ RAWDCF_ROOTDELAY,
+ GUDE_EMC_USB_V20_BASEDELAY,
+ DCF_A_ID,
+ GUDE_EMC_USB_V20_DESCRIPTION,
+ RAWDCF_FORMAT,
+ DCF_TYPE,
+ RAWDCF_MAXUNSYNC,
+ GUDE_EMC_USB_V20_SPEED,
+ RAWDCF_CFLAG,
+ RAWDCF_IFLAG,
+ RAWDCF_OFLAG,
+ RAWDCF_LFLAG,
+ RAWDCF_SAMPLES,
+ RAWDCF_KEEP
+ },
};
static int ncltypes = sizeof(parse_clockinfo) / sizeof(struct parse_clockinfo);
@@ -1252,8 +1367,6 @@ static int ncltypes = sizeof(parse_clockinfo) / sizeof(struct parse_clockinfo);
#define PARSESTATISTICS (60*60) /* output state statistics every hour */
-static struct parseunit *parseunits[MAXUNITS];
-
static int notice = 0;
#define PARSE_STATETIME(parse, i) ((parse->generic->currentstatus == i) ? parse->statetime[i] + current_time - parse->lastchange : parse->statetime[i])
@@ -1551,8 +1664,8 @@ ppsclock_init(
* now push the parse streams module
* it will ensure exclusive access to the device
*/
- if (ioctl(parse->generic->io.fd, I_PUSH, (caddr_t)m1) == -1 &&
- ioctl(parse->generic->io.fd, I_PUSH, (caddr_t)m2) == -1)
+ if (ioctl(parse->ppsfd, I_PUSH, (caddr_t)m1) == -1 &&
+ ioctl(parse->ppsfd, I_PUSH, (caddr_t)m2) == -1)
{
if (errno != EINVAL)
{
@@ -1563,7 +1676,7 @@ ppsclock_init(
}
if (!local_init(parse))
{
- (void)ioctl(parse->generic->io.fd, I_POP, (caddr_t)0);
+ (void)ioctl(parse->ppsfd, I_POP, (caddr_t)0);
return 0;
}
@@ -1790,7 +1903,6 @@ stream_receive(
ERR(ERR_BADIO)
msyslog(LOG_ERR,"PARSE receiver #%d: stream_receive: bad size (got %d expected %d)",
CLK_UNIT(parse->peer), rbufp->recv_length, (int)sizeof(parsetime_t));
- parse->generic->baddata++;
parse_event(parse, CEVNT_BADREPLY);
return;
}
@@ -1807,12 +1919,12 @@ stream_receive(
CLK_UNIT(parse->peer),
(unsigned int)parsetime.parse_status,
(unsigned int)parsetime.parse_state,
- (long)parsetime.parse_time.tv.tv_sec,
- (long)parsetime.parse_time.tv.tv_usec,
- (long)parsetime.parse_stime.tv.tv_sec,
- (long)parsetime.parse_stime.tv.tv_usec,
- (long)parsetime.parse_ptime.tv.tv_sec,
- (long)parsetime.parse_ptime.tv.tv_usec);
+ (unsigned long)parsetime.parse_time.tv.tv_sec,
+ (unsigned long)parsetime.parse_time.tv.tv_usec,
+ (unsigned long)parsetime.parse_stime.tv.tv_sec,
+ (unsigned long)parsetime.parse_stime.tv.tv_usec,
+ (unsigned long)parsetime.parse_ptime.tv.tv_sec,
+ (unsigned long)parsetime.parse_ptime.tv.tv_usec);
}
#endif
@@ -1945,17 +2057,96 @@ local_input(
{
if (parse_ioread(&parse->parseio, (unsigned int)(*s++), &ts))
{
- struct recvbuf buf;
+ struct recvbuf *buf;
/*
* got something good to eat
*/
if (!PARSE_PPS(parse->parseio.parse_dtime.parse_state))
{
+#ifdef HAVE_PPSAPI
+ if (parse->flags & PARSE_PPSCLOCK)
+ {
+ struct timespec pps_timeout;
+ pps_info_t pps_info;
+
+ pps_timeout.tv_sec = 0;
+ pps_timeout.tv_nsec = 0;
+
+ if (time_pps_fetch(parse->ppshandle, PPS_TSFMT_TSPEC, &pps_info,
+ &pps_timeout) == 0)
+ {
+ if (pps_info.assert_sequence + pps_info.clear_sequence != parse->ppsserial)
+ {
+ double dtemp;
+
+ struct timespec pts;
+ /*
+ * add PPS time stamp if available via ppsclock module
+ * and not supplied already.
+ */
+ if (parse->flags & PARSE_CLEAR)
+ pts = pps_info.clear_timestamp;
+ else
+ pts = pps_info.assert_timestamp;
+
+ parse->parseio.parse_dtime.parse_ptime.fp.l_ui = pts.tv_sec + JAN_1970;
+
+ dtemp = pts.tv_nsec / 1e9;
+ if (dtemp < 0.) {
+ dtemp += 1;
+ parse->parseio.parse_dtime.parse_ptime.fp.l_ui--;
+ }
+ if (dtemp > 1.) {
+ dtemp -= 1;
+ parse->parseio.parse_dtime.parse_ptime.fp.l_ui++;
+ }
+ parse->parseio.parse_dtime.parse_ptime.fp.l_uf = dtemp * FRAC;
+
+ parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
+#ifdef DEBUG
+ if (debug > 3)
+ {
+ printf(
+ "parse: local_receive: fd %d PPSAPI seq %ld - PPS %s\n",
+ rbufp->fd,
+ (long)pps_info.assert_sequence + (long)pps_info.clear_sequence,
+ lfptoa(&parse->parseio.parse_dtime.parse_ptime.fp, 6));
+ }
+#endif
+ }
+#ifdef DEBUG
+ else
+ {
+ if (debug > 3)
+ {
+ printf(
+ "parse: local_receive: fd %d PPSAPI seq assert %ld, seq clear %ld - NO PPS event\n",
+ rbufp->fd,
+ (long)pps_info.assert_sequence, (long)pps_info.clear_sequence);
+ }
+ }
+#endif
+ parse->ppsserial = pps_info.assert_sequence + pps_info.clear_sequence;
+ }
+#ifdef DEBUG
+ else
+ {
+ if (debug > 3)
+ {
+ printf(
+ "parse: local_receive: fd %d PPSAPI time_pps_fetch errno = %d\n",
+ rbufp->fd,
+ errno);
+ }
+ }
+#endif
+ }
+#else
#ifdef TIOCDCDTIMESTAMP
struct timeval dcd_time;
- if (ioctl(rbufp->fd, TIOCDCDTIMESTAMP, &dcd_time) != -1)
+ if (ioctl(parse->ppsfd, TIOCDCDTIMESTAMP, &dcd_time) != -1)
{
l_fp tstmp;
@@ -1969,7 +2160,7 @@ local_input(
{
printf(
"parse: local_receive: fd %d DCDTIMESTAMP %s\n",
- rbufp->fd,
+ parse->ppsfd,
lfptoa(&tstmp, 6));
printf(" sigio %s\n",
lfptoa(&ts.fp, 6));
@@ -1982,54 +2173,58 @@ local_input(
#else /* TIOCDCDTIMESTAMP */
#if defined(HAVE_STRUCT_PPSCLOCKEV) && (defined(HAVE_CIOGETEV) || defined(HAVE_TIOCGPPSEV))
if (parse->flags & PARSE_PPSCLOCK)
- {
- l_fp tts;
- struct ppsclockev ev;
+ {
+ l_fp tts;
+ struct ppsclockev ev;
#ifdef HAVE_CIOGETEV
- if (ioctl(parse->generic->io.fd, CIOGETEV, (caddr_t)&ev) == 0)
+ if (ioctl(parse->ppsfd, CIOGETEV, (caddr_t)&ev) == 0)
#endif
#ifdef HAVE_TIOCGPPSEV
- if (ioctl(parse->generic->io.fd, TIOCGPPSEV, (caddr_t)&ev) == 0)
+ if (ioctl(parse->ppsfd, TIOCGPPSEV, (caddr_t)&ev) == 0)
#endif
{
- if (ev.serial != parse->ppsserial)
+ if (ev.serial != parse->ppsserial)
+ {
+ /*
+ * add PPS time stamp if available via ppsclock module
+ * and not supplied already.
+ */
+ if (!buftvtots((const char *)&ev.tv, &tts))
{
- /*
- * add PPS time stamp if available via ppsclock module
- * and not supplied already.
- */
- if (!buftvtots((const char *)&ev.tv, &tts))
- {
- ERR(ERR_BADDATA)
- msyslog(LOG_ERR,"parse: local_receive: timestamp conversion error (buftvtots) (ppsclockev.tv)");
- }
- else
- {
- parse->parseio.parse_dtime.parse_ptime.fp = tts;
- parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
- }
+ ERR(ERR_BADDATA)
+ msyslog(LOG_ERR,"parse: local_receive: timestamp conversion error (buftvtots) (ppsclockev.tv)");
+ }
+ else
+ {
+ parse->parseio.parse_dtime.parse_ptime.fp = tts;
+ parse->parseio.parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
}
- parse->ppsserial = ev.serial;
+ }
+ parse->ppsserial = ev.serial;
}
- }
+ }
#endif
#endif /* TIOCDCDTIMESTAMP */
+#endif /* !HAVE_PPSAPI */
}
if (count)
{ /* simulate receive */
- memmove((caddr_t)buf.recv_buffer,
- (caddr_t)&parse->parseio.parse_dtime,
- sizeof(parsetime_t));
+ buf = get_free_recv_buffer();
+ if (buf != NULL) {
+ memmove((caddr_t)buf->recv_buffer,
+ (caddr_t)&parse->parseio.parse_dtime,
+ sizeof(parsetime_t));
+ buf->recv_length = sizeof(parsetime_t);
+ buf->recv_time = rbufp->recv_time;
+ buf->srcadr = rbufp->srcadr;
+ buf->dstadr = rbufp->dstadr;
+ buf->receiver = rbufp->receiver;
+ buf->fd = rbufp->fd;
+ buf->X_from_where = rbufp->X_from_where;
+ add_full_recv_buffer(buf);
+ }
parse_iodone(&parse->parseio);
- buf.recv_length = sizeof(parsetime_t);
- buf.recv_time = rbufp->recv_time;
- buf.srcadr = rbufp->srcadr;
- buf.dstadr = rbufp->dstadr;
- buf.fd = rbufp->fd;
- buf.next = 0;
- buf.X_from_where = rbufp->X_from_where;
- rbufp->receiver(&buf);
}
else
{
@@ -2064,7 +2259,6 @@ local_receive(
ERR(ERR_BADIO)
msyslog(LOG_ERR,"PARSE receiver #%d: local_receive: bad size (got %d expected %d)",
CLK_UNIT(parse->peer), rbufp->recv_length, (int)sizeof(parsetime_t));
- parse->generic->baddata++;
parse_event(parse, CEVNT_BADREPLY);
return;
}
@@ -2077,16 +2271,16 @@ local_receive(
#ifdef DEBUG
if (debug > 3)
{
- printf("PARSE receiver #%d: status %06x, state %08x, time %lx.%08lx, stime %lx.%08lx, ptime %lx.%08lx\n",
+ printf("PARSE receiver #%d: status %06x, state %08x, time(fp) %lx.%08lx, stime(fp) %lx.%08lx, ptime(fp) %lx.%08lx\n",
CLK_UNIT(parse->peer),
(unsigned int)parsetime.parse_status,
(unsigned int)parsetime.parse_state,
- (long)parsetime.parse_time.tv.tv_sec,
- (long)parsetime.parse_time.tv.tv_usec,
- (long)parsetime.parse_stime.tv.tv_sec,
- (long)parsetime.parse_stime.tv.tv_usec,
- (long)parsetime.parse_ptime.tv.tv_sec,
- (long)parsetime.parse_ptime.tv.tv_usec);
+ (unsigned long)parsetime.parse_time.fp.l_ui,
+ (unsigned long)parsetime.parse_time.fp.l_uf,
+ (unsigned long)parsetime.parse_stime.fp.l_ui,
+ (unsigned long)parsetime.parse_stime.fp.l_uf,
+ (unsigned long)parsetime.parse_ptime.fp.l_ui,
+ (unsigned long)parsetime.parse_ptime.fp.l_uf);
}
#endif
@@ -2124,7 +2318,8 @@ init_iobinding(
static char *
parsestate(
u_long lstate,
- char *buffer
+ char *buffer,
+ int size
)
{
static struct bits
@@ -2161,31 +2356,35 @@ parsestate(
{ 0 }
};
int i;
+ char *s, *t;
+
*buffer = '\0';
+ s = t = buffer;
i = 0;
while (flagstrings[i].bit)
{
if (flagstrings[i].bit & lstate)
{
- if (buffer[0])
- strcat(buffer, "; ");
- strcat(buffer, flagstrings[i].name);
+ if (s != t)
+ strncpy(t, "; ", BUFFER_SIZES(buffer, t, size));
+ strncat(t, flagstrings[i].name, BUFFER_SIZES(buffer, t, size));
+ t += strlen(t);
}
i++;
}
if (lstate & (PARSEB_S_LEAP|PARSEB_S_ANTENNA|PARSEB_S_PPS|PARSEB_S_POSITION))
{
- char *s, *t;
+ if (s != t)
+ strncpy(t, "; ", BUFFER_SIZES(buffer, t, size));
- if (buffer[0])
- strcat(buffer, "; ");
+ t += strlen(t);
- strcat(buffer, "(");
+ strncpy(t, "(", BUFFER_SIZES(buffer, t, size));
- t = s = buffer + strlen(buffer);
+ s = t = t + strlen(t);
i = 0;
while (sflagstrings[i].bit)
@@ -2194,16 +2393,16 @@ parsestate(
{
if (t != s)
{
- strcpy(t, "; ");
+ strncpy(t, "; ", BUFFER_SIZES(buffer, t, size));
t += 2;
}
- strcpy(t, sflagstrings[i].name);
+ strncpy(t, sflagstrings[i].name, BUFFER_SIZES(buffer, t, size));
t += strlen(t);
}
i++;
}
- strcpy(t, ")");
+ strncpy(t, ")", BUFFER_SIZES(buffer, t, size));
}
return buffer;
}
@@ -2214,7 +2413,8 @@ parsestate(
static char *
parsestatus(
u_long lstate,
- char *buffer
+ char *buffer,
+ int size
)
{
static struct bits
@@ -2242,8 +2442,8 @@ parsestatus(
if (flagstrings[i].bit & lstate)
{
if (buffer[0])
- strcat(buffer, "; ");
- strcat(buffer, flagstrings[i].name);
+ strncat(buffer, "; ", size);
+ strncat(buffer, flagstrings[i].name, size);
}
i++;
}
@@ -2287,7 +2487,7 @@ clockstatus(
i++;
}
- sprintf(buffer, "unknown #%ld", (u_long)lstate);
+ snprintf(buffer, sizeof(buffer), "unknown #%ld", (u_long)lstate);
return buffer;
}
@@ -2303,12 +2503,13 @@ l_mktime(
{
u_long tmp, m, s;
static char buffer[40];
+ char *t;
buffer[0] = '\0';
if ((tmp = delta / (60*60*24)) != 0)
{
- sprintf(buffer, "%ldd+", (u_long)tmp);
+ snprintf(buffer, BUFFER_SIZE(buffer, buffer), "%ldd+", (u_long)tmp);
delta -= tmp * 60*60*24;
}
@@ -2317,8 +2518,10 @@ l_mktime(
m = delta % 60;
delta /= 60;
- sprintf(buffer+strlen(buffer), "%02d:%02d:%02d",
- (int)delta, (int)m, (int)s);
+ t = buffer + strlen(buffer);
+
+ snprintf(t, BUFFER_SIZE(buffer, t), "%02d:%02d:%02d",
+ (int)delta, (int)m, (int)s);
return buffer;
}
@@ -2377,7 +2580,7 @@ parse_statistics(
*/
static void
cparse_statistics(
- register struct parseunit *parse
+ struct parseunit *parse
)
{
if (parse->laststatistic + PARSESTATISTICS < current_time)
@@ -2390,16 +2593,6 @@ cparse_statistics(
**/
/*--------------------------------------------------
- * parse_init - initialize internal parse driver data
- */
-static void
-parse_init(void)
-{
- memset((caddr_t)parseunits, 0, sizeof parseunits);
-}
-
-
-/*--------------------------------------------------
* parse_shutdown - shut down a PARSE clock
*/
static void
@@ -2408,15 +2601,32 @@ parse_shutdown(
struct peer *peer
)
{
- struct parseunit *parse = (struct parseunit *)peer->procptr->unitptr;
+ struct parseunit *parse = (struct parseunit *)0;
+
+ if (peer && peer->procptr)
+ parse = (struct parseunit *)peer->procptr->unitptr;
- if (parse && !parse->peer)
+ if (!parse)
{
- msyslog(LOG_ERR,
- "PARSE receiver #%d: parse_shutdown: INTERNAL ERROR, unit not in use", unit);
+ /* nothing to clean up */
return;
}
+ if (!parse->peer)
+ {
+ msyslog(LOG_INFO, "PARSE receiver #%d: INTERNAL ERROR - unit already inactive - shutdown ignored", unit);
+ return;
+ }
+
+#ifdef HAVE_PPSAPI
+ if (parse->flags & PARSE_PPSCLOCK)
+ {
+ (void)time_pps_destroy(parse->ppshandle);
+ }
+#endif
+ if (parse->generic->io.fd != parse->ppsfd && parse->ppsfd != -1)
+ (void)close(parse->ppsfd); /* close separate PPS source */
+
/*
* print statistics a last time and
* stop statistics machine
@@ -2428,6 +2638,9 @@ parse_shutdown(
parse->parse_type->cl_end(parse);
}
+ /*
+ * cleanup before leaving this world
+ */
if (parse->binding)
PARSE_END(parse);
@@ -2443,9 +2656,138 @@ parse_shutdown(
CLK_UNIT(parse->peer), parse->parse_type->cl_description);
parse->peer = (struct peer *)0; /* unused now */
+ peer->procptr->unitptr = (caddr_t)0;
free(parse);
}
+#ifdef HAVE_PPSAPI
+/*----------------------------------------
+ * set up HARDPPS via PPSAPI
+ */
+static void
+parse_hardpps(
+ struct parseunit *parse,
+ int mode
+ )
+{
+ if (parse->hardppsstate == mode)
+ return;
+
+ if (CLK_PPS(parse->peer) && (parse->flags & PARSE_PPSKERNEL)) {
+ int i = 0;
+
+ if (mode == PARSE_HARDPPS_ENABLE)
+ {
+ if (parse->flags & PARSE_CLEAR)
+ i = PPS_CAPTURECLEAR;
+ else
+ i = PPS_CAPTUREASSERT;
+ }
+
+ if (time_pps_kcbind(parse->ppshandle, PPS_KC_HARDPPS, i,
+ PPS_TSFMT_TSPEC) < 0) {
+ msyslog(LOG_ERR, "PARSE receiver #%d: time_pps_kcbind failed: %m",
+ CLK_UNIT(parse->peer));
+ } else {
+ NLOG(NLOG_CLOCKINFO)
+ msyslog(LOG_INFO, "PARSE receiver #%d: kernel PPS synchronisation %sabled",
+ CLK_UNIT(parse->peer), (mode == PARSE_HARDPPS_ENABLE) ? "en" : "dis");
+ /*
+ * tell the rest, that we have a kernel PPS source, iff we ever enable HARDPPS
+ */
+ if (mode == PARSE_HARDPPS_ENABLE)
+ pps_enable = 1;
+ }
+ }
+
+ parse->hardppsstate = mode;
+}
+
+/*----------------------------------------
+ * set up PPS via PPSAPI
+ */
+static int
+parse_ppsapi(
+ struct parseunit *parse
+ )
+{
+ int cap, mode, mode1;
+ char *cp;
+
+ parse->flags &= ~PARSE_PPSCLOCK;
+
+ if (time_pps_getcap(parse->ppshandle, &cap) < 0) {
+ msyslog(LOG_ERR, "PARSE receiver #%d: parse_ppsapi: time_pps_getcap failed: %m",
+ CLK_UNIT(parse->peer));
+
+ return 0;
+ }
+
+ if (time_pps_getparams(parse->ppshandle, &parse->ppsparams) < 0) {
+ msyslog(LOG_ERR, "PARSE receiver #%d: parse_ppsapi: time_pps_getparams failed: %m",
+ CLK_UNIT(parse->peer));
+ return 0;
+ }
+
+ /* nb. only turn things on, if someone else has turned something
+ * on before we get here, leave it alone!
+ */
+
+ if (parse->flags & PARSE_CLEAR) {
+ cp = "CLEAR";
+ mode = PPS_CAPTURECLEAR;
+ mode1 = PPS_OFFSETCLEAR;
+ } else {
+ cp = "ASSERT";
+ mode = PPS_CAPTUREASSERT;
+ mode1 = PPS_OFFSETASSERT;
+ }
+
+ msyslog(LOG_INFO, "PARSE receiver #%d: initializing PPS to %s",
+ CLK_UNIT(parse->peer), cp);
+
+ if (!(mode & cap)) {
+ msyslog(LOG_ERR, "PARSE receiver #%d: FAILED to initialize PPS to %s (PPS API capabilities=0x%x)",
+ CLK_UNIT(parse->peer), cp, cap);
+
+ return 0;
+ }
+
+ if (!(mode1 & cap)) {
+ msyslog(LOG_WARNING, "PARSE receiver #%d: Cannot set PPS_%sCLEAR, this will increase jitter (PPS API capabilities=0x%x)",
+ CLK_UNIT(parse->peer), cp, cap);
+ mode1 = 0;
+ } else {
+ if (mode1 == PPS_OFFSETCLEAR)
+ {
+ parse->ppsparams.clear_offset.tv_sec = -parse->ppsphaseadjust;
+ parse->ppsparams.clear_offset.tv_nsec = -1e9*(parse->ppsphaseadjust - (long)parse->ppsphaseadjust);
+ }
+
+ if (mode1 == PPS_OFFSETASSERT)
+ {
+ parse->ppsparams.assert_offset.tv_sec = -parse->ppsphaseadjust;
+ parse->ppsparams.assert_offset.tv_nsec = -1e9*(parse->ppsphaseadjust - (long)parse->ppsphaseadjust);
+ }
+ }
+
+ /* only set what is legal */
+
+ parse->ppsparams.mode = (mode | mode1 | PPS_TSFMT_TSPEC) & cap;
+
+ if (time_pps_setparams(parse->ppshandle, &parse->ppsparams) < 0) {
+ msyslog(LOG_ERR, "PARSE receiver #%d: FAILED set PPS parameters: %m",
+ CLK_UNIT(parse->peer));
+ return 0;
+ }
+
+ parse->flags |= PARSE_PPSCLOCK;
+ return 1;
+}
+#else
+#define parse_hardpps(_PARSE_, _MODE_) /* empty */
+#endif
+
/*--------------------------------------------------
* parse_start - open the PARSE devices and initialize data for processing
*/
@@ -2465,9 +2807,20 @@ parse_start(
#endif
struct parseunit * parse;
char parsedev[sizeof(PARSEDEVICE)+20];
+ char parseppsdev[sizeof(PARSEPPSDEVICE)+20];
parsectl_t tmp_ctl;
u_int type;
+ /*
+ * get out Copyright information once
+ */
+ if (!notice)
+ {
+ NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
+ msyslog(LOG_INFO, "NTP PARSE support: Copyright (c) 1989-2006, Frank Kardel");
+ notice = 1;
+ }
+
type = CLK_TYPE(peer);
unit = CLK_UNIT(peer);
@@ -2481,7 +2834,8 @@ parse_start(
/*
* Unit okay, attempt to open the device.
*/
- (void) sprintf(parsedev, PARSEDEVICE, unit);
+ (void) snprintf(parsedev, sizeof(parsedev), PARSEDEVICE, unit);
+ (void) snprintf(parseppsdev, sizeof(parsedev), PARSEPPSDEVICE, unit);
#ifndef O_NOCTTY
#define O_NOCTTY 0
@@ -2512,15 +2866,14 @@ parse_start(
parse->generic->timestarted = current_time;
parse->lastchange = current_time;
- parse->generic->currentstatus = CEVNT_TIMEOUT; /* expect the worst */
-
parse->flags = 0;
parse->pollneeddata = 0;
parse->laststatistic = current_time;
parse->lastformat = (unsigned short)~0; /* assume no format known */
- parse->time.parse_status = (unsigned short)~0; /* be sure to mark initial status change */
+ parse->timedata.parse_status = (unsigned short)~0; /* be sure to mark initial status change */
parse->lastmissed = 0; /* assume got everything */
parse->ppsserial = 0;
+ parse->ppsfd = -1;
parse->localdata = (void *)0;
parse->localstate = 0;
parse->kv = (struct ctl_var *)0;
@@ -2529,17 +2882,21 @@ parse_start(
parse->parse_type = &parse_clockinfo[type];
+ parse->maxunsync = parse->parse_type->cl_maxunsync;
+
parse->generic->fudgetime1 = parse->parse_type->cl_basedelay;
parse->generic->fudgetime2 = 0.0;
+ parse->ppsphaseadjust = parse->generic->fudgetime2;
- parse->generic->clockdesc = parse->parse_type->cl_description;
+ parse->generic->clockdesc = parse->parse_type->cl_description;
peer->rootdelay = parse->parse_type->cl_rootdelay;
peer->sstclktype = parse->parse_type->cl_type;
peer->precision = sys_precision;
peer->stratum = STRATUM_REFCLOCK;
+
if (peer->stratum <= 1)
memmove((char *)&parse->generic->refid, parse->parse_type->cl_id, 4);
else
@@ -2607,38 +2964,84 @@ parse_start(
tio.c_cflag |= parse_clockinfo[type].cl_speed;
#endif
+ /*
+ * set up pps device
+ * if the PARSEPPSDEVICE can be opened that will be used
+ * for PPS else PARSEDEVICE will be used
+ */
+ parse->ppsfd = open(parseppsdev, O_RDWR | O_NOCTTY
+#ifdef O_NONBLOCK
+ | O_NONBLOCK
+#endif
+ , 0777);
+
+ if (parse->ppsfd == -1)
+ {
+ parse->ppsfd = fd232;
+ }
+
+/*
+ * Linux PPS - the old way
+ */
#if defined(HAVE_TIO_SERIAL_STUFF) /* Linux hack: define PPS interface */
{
- struct serial_struct ss;
- if (ioctl(fd232, TIOCGSERIAL, &ss) < 0 ||
- (
+ struct serial_struct ss;
+ if (ioctl(parse->ppsfd, TIOCGSERIAL, &ss) < 0 ||
+ (
#ifdef ASYNC_LOW_LATENCY
- ss.flags |= ASYNC_LOW_LATENCY,
+ ss.flags |= ASYNC_LOW_LATENCY,
+#endif
+#ifndef HAVE_PPSAPI
+#ifdef ASYNC_PPS_CD_NEG
+ ss.flags |= ASYNC_PPS_CD_NEG,
#endif
+#endif
+ ioctl(parse->ppsfd, TIOCSSERIAL, &ss)) < 0) {
+ msyslog(LOG_NOTICE, "refclock_parse: TIOCSSERIAL fd %d, %m", parse->ppsfd);
+ msyslog(LOG_NOTICE,
+ "refclock_parse: optional PPS processing not available");
+ } else {
+ parse->flags |= PARSE_PPSCLOCK;
#ifdef ASYNC_PPS_CD_NEG
- ss.flags |= ASYNC_PPS_CD_NEG,
+ NLOG(NLOG_CLOCKINFO)
+ msyslog(LOG_INFO,
+ "refclock_parse: PPS detection on");
#endif
- ioctl(fd232, TIOCSSERIAL, &ss)) < 0) {
- msyslog(LOG_NOTICE, "refclock_parse: TIOCSSERIAL fd %d, %m", fd232);
- msyslog(LOG_NOTICE,
- "refclock_parse: optional PPS processing not available");
- } else {
- parse->flags |= PARSE_PPSCLOCK;
- msyslog(LOG_INFO,
- "refclock_parse: PPS detection on");
- }
+ }
}
#endif
+
+/*
+ * SUN the Solaris way
+ */
#ifdef HAVE_TIOCSPPS /* SUN PPS support */
if (CLK_PPS(parse->peer))
- {
- int i = 1;
+ {
+ int i = 1;
- if (ioctl(fd232, TIOCSPPS, (caddr_t)&i) == 0)
- {
- parse->flags |= PARSE_PPSCLOCK;
- }
- }
+ if (ioctl(parse->ppsfd, TIOCSPPS, (caddr_t)&i) == 0)
+ {
+ parse->flags |= PARSE_PPSCLOCK;
+ }
+ }
+#endif
+
+/*
+ * PPS via PPSAPI
+ */
+#if defined(HAVE_PPSAPI)
+ parse->hardppsstate = PARSE_HARDPPS_DISABLE;
+ if (CLK_PPS(parse->peer))
+ {
+ if (time_pps_create(parse->ppsfd, &parse->ppshandle) < 0)
+ {
+ msyslog(LOG_NOTICE, "PARSE receiver #%d: parse_start: could not set up PPS: %m", CLK_UNIT(parse->peer));
+ }
+ else
+ {
+ parse_ppsapi(parse);
+ }
+ }
#endif
if (TTY_SETATTR(fd232, &tio) == -1)
@@ -2650,22 +3053,12 @@ parse_start(
}
/*
- * Insert in async io device list.
+ * pick correct input machine
*/
parse->generic->io.srcclock = (caddr_t)parse;
parse->generic->io.datalen = 0;
- if (!io_addclock(&parse->generic->io))
- {
- msyslog(LOG_ERR,
- "PARSE receiver #%d: parse_start: addclock %s fails (ABORT - clock type requires async io)", CLK_UNIT(parse->peer), parsedev);
- parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
- return 0;
- }
-
parse->binding = init_iobinding(parse);
- parse->generic->io.clock_recv = parse->binding->bd_receive; /* pick correct receive routine */
- parse->generic->io.io_input = parse->binding->bd_io_input; /* pick correct input routine */
if (parse->binding == (bind_t *)0)
{
@@ -2674,6 +3067,9 @@ parse_start(
return 0; /* well, ok - special initialisation broke */
}
+ parse->generic->io.clock_recv = parse->binding->bd_receive; /* pick correct receive routine */
+ parse->generic->io.io_input = parse->binding->bd_io_input; /* pick correct input routine */
+
/*
* as we always(?) get 8 bit chars we want to be
* sure, that the upper bits are zero for less
@@ -2708,7 +3104,7 @@ parse_start(
return 0; /* well, ok - special initialisation broke */
}
- strcpy(tmp_ctl.parseformat.parse_buffer, parse->parse_type->cl_format);
+ strncpy(tmp_ctl.parseformat.parse_buffer, parse->parse_type->cl_format, sizeof(tmp_ctl.parseformat.parse_buffer));
tmp_ctl.parseformat.parse_count = strlen(tmp_ctl.parseformat.parse_buffer);
if (!PARSE_SETFMT(parse, &tmp_ctl))
@@ -2724,11 +3120,8 @@ parse_start(
#ifdef HAVE_TERMIOS
(void) tcflush(parse->generic->io.fd, TCIOFLUSH);
#else
-#ifdef TCFLSH
+#if defined(TCFLSH) && defined(TCIOFLUSH)
{
-#ifndef TCIOFLUSH
-#define TCIOFLUSH 2
-#endif
int flshcmd = TCIOFLUSH;
(void) ioctl(parse->generic->io.fd, TCFLSH, (caddr_t)&flshcmd);
@@ -2749,13 +3142,14 @@ parse_start(
}
/*
- * get out Copyright information once
+ * Insert in async io device list.
*/
- if (!notice)
+ if (!io_addclock(&parse->generic->io))
{
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_INFO, "NTP PARSE support: Copyright (c) 1989-1999, Frank Kardel");
- notice = 1;
+ msyslog(LOG_ERR,
+ "PARSE receiver #%d: parse_start: addclock %s fails (ABORT - clock type requires async io)", CLK_UNIT(parse->peer), parsedev);
+ parse_shutdown(CLK_UNIT(parse->peer), peer); /* let our cleaning staff do the work */
+ return 0;
}
/*
@@ -2764,33 +3158,99 @@ parse_start(
NLOG(NLOG_CLOCKINFO)
{
/* conditional if clause for conditional syslog */
- msyslog(LOG_INFO, "PARSE receiver #%d: reference clock \"%s\" (device %s) added",
+ msyslog(LOG_INFO, "PARSE receiver #%d: reference clock \"%s\" (I/O device %s, PPS device %s) added",
CLK_UNIT(parse->peer),
- parse->parse_type->cl_description, parsedev);
+ parse->parse_type->cl_description, parsedev,
+ (parse->ppsfd != parse->generic->io.fd) ? parseppsdev : parsedev);
- msyslog(LOG_INFO, "PARSE receiver #%d: Stratum %d, %sPPS support, trust time %s, precision %d",
+ msyslog(LOG_INFO, "PARSE receiver #%d: Stratum %d, trust time %s, precision %d",
CLK_UNIT(parse->peer),
- parse->peer->stratum, CLK_PPS(parse->peer) ? "" : "no ",
- l_mktime(parse->parse_type->cl_maxunsync), parse->peer->precision);
+ parse->peer->stratum,
+ l_mktime(parse->maxunsync), parse->peer->precision);
- msyslog(LOG_INFO, "PARSE receiver #%d: rootdelay %.6f s, phaseadjust %.6f s, %s IO handling",
+ msyslog(LOG_INFO, "PARSE receiver #%d: rootdelay %.6f s, phase adjustment %.6f s, PPS phase adjustment %.6f s, %s IO handling",
CLK_UNIT(parse->peer),
parse->parse_type->cl_rootdelay,
parse->generic->fudgetime1,
- parse->binding->bd_description);
+ parse->ppsphaseadjust,
+ parse->binding->bd_description);
- msyslog(LOG_INFO, "PARSE receiver #%d: Format recognition: %s", CLK_UNIT(parse->peer),
+ msyslog(LOG_INFO, "PARSE receiver #%d: Format recognition: %s", CLK_UNIT(parse->peer),
parse->parse_type->cl_format);
-#ifdef PPS
- msyslog(LOG_INFO, "PARSE receiver #%d: %sPPS ioctl support", CLK_UNIT(parse->peer),
- (parse->flags & PARSE_PPSCLOCK) ? "" : "NO ");
+ msyslog(LOG_INFO, "PARSE receiver #%d: %sPPS support%s", CLK_UNIT(parse->peer),
+ CLK_PPS(parse->peer) ? "" : "NO ",
+ CLK_PPS(parse->peer) ?
+#ifdef PPS_METHOD
+ " (implementation " PPS_METHOD ")"
+#else
+ ""
#endif
+ : ""
+ );
}
return 1;
}
/*--------------------------------------------------
+ * parse_ctl - process changes on flags/time values
+ */
+static void
+parse_ctl(
+ struct parseunit *parse,
+ struct refclockstat *in
+ )
+{
+ if (in)
+ {
+ if (in->haveflags & (CLK_HAVEFLAG1|CLK_HAVEFLAG2|CLK_HAVEFLAG3|CLK_HAVEFLAG4))
+ {
+ parse->flags = (parse->flags & ~(CLK_FLAG1|CLK_FLAG2|CLK_FLAG3|CLK_FLAG4)) |
+ (in->flags & (CLK_FLAG1|CLK_FLAG2|CLK_FLAG3|CLK_FLAG4));
+#if defined(HAVE_PPSAPI)
+ if (CLK_PPS(parse->peer))
+ {
+ parse_ppsapi(parse);
+ }
+#endif
+ }
+
+ if (in->haveflags & CLK_HAVETIME1)
+ {
+ parse->generic->fudgetime1 = in->fudgetime1;
+ msyslog(LOG_INFO, "PARSE receiver #%d: new phase adjustment %.6f s",
+ CLK_UNIT(parse->peer),
+ parse->generic->fudgetime1);
+ }
+
+ if (in->haveflags & CLK_HAVETIME2)
+ {
+ parse->generic->fudgetime2 = in->fudgetime2;
+ if (parse->flags & PARSE_TRUSTTIME)
+ {
+ parse->maxunsync = (u_long)ABS(in->fudgetime2);
+ msyslog(LOG_INFO, "PARSE receiver #%d: new trust time %s",
+ CLK_UNIT(parse->peer),
+ l_mktime(parse->maxunsync));
+ }
+ else
+ {
+ parse->ppsphaseadjust = in->fudgetime2;
+ msyslog(LOG_INFO, "PARSE receiver #%d: new PPS phase adjustment %.6f s",
+ CLK_UNIT(parse->peer),
+ parse->ppsphaseadjust);
+#if defined(HAVE_PPSAPI)
+ if (CLK_PPS(parse->peer))
+ {
+ parse_ppsapi(parse);
+ }
+#endif
+ }
+ }
+ }
+}
+
+/*--------------------------------------------------
* parse_poll - called by the transmit procedure
*/
static void
@@ -2821,12 +3281,11 @@ parse_poll(
* start worrying when exceeding a poll inteval
* bad news - didn't get a response last time
*/
- parse->generic->noreply++;
parse->lastmissed = current_time;
parse_event(parse, CEVNT_TIMEOUT);
ERR(ERR_NODATA)
- msyslog(LOG_WARNING, "PARSE receiver #%d: no data from device within poll interval (check receiver / cableling)", CLK_UNIT(parse->peer));
+ msyslog(LOG_WARNING, "PARSE receiver #%d: no data from device within poll interval (check receiver / wiring)", CLK_UNIT(parse->peer));
}
/*
@@ -2857,7 +3316,7 @@ parse_control(
struct peer *peer
)
{
- register struct parseunit *parse = (struct parseunit *)peer->procptr->unitptr;
+ struct parseunit *parse = (struct parseunit *)peer->procptr->unitptr;
parsectl_t tmpctl;
static char outstatus[400]; /* status output buffer */
@@ -2878,32 +3337,36 @@ parse_control(
unit = CLK_UNIT(parse->peer);
- if (in)
- {
- if (in->haveflags & (CLK_HAVEFLAG1|CLK_HAVEFLAG2|CLK_HAVEFLAG3|CLK_HAVEFLAG4))
- {
- parse->flags = in->flags & (CLK_FLAG1|CLK_FLAG2|CLK_FLAG3|CLK_FLAG4);
- }
- }
-
+ /*
+ * handle changes
+ */
+ parse_ctl(parse, in);
+
+ /*
+ * supply data
+ */
if (out)
{
u_long sum = 0;
- char *t, *tt, *start;
+ char *tt, *start;
int i;
outstatus[0] = '\0';
out->type = REFCLK_PARSE;
- out->haveflags |= CLK_HAVETIME2;
+
+ /*
+ * keep fudgetime2 in sync with TRUSTTIME/MAXUNSYNC flag1
+ */
+ parse->generic->fudgetime2 = (parse->flags & PARSE_TRUSTTIME) ? (double)parse->maxunsync : parse->ppsphaseadjust;
/*
* figure out skew between PPS and RS232 - just for informational
- * purposes - returned in time2 value
+ * purposes
*/
- if (PARSE_SYNC(parse->time.parse_state))
+ if (PARSE_SYNC(parse->timedata.parse_state))
{
- if (PARSE_PPS(parse->time.parse_state) && PARSE_TIMECODE(parse->time.parse_state))
+ if (PARSE_PPS(parse->timedata.parse_state) && PARSE_TIMECODE(parse->timedata.parse_state))
{
l_fp off;
@@ -2911,31 +3374,30 @@ parse_control(
* we have a PPS and RS232 signal - calculate the skew
* WARNING: assumes on TIMECODE == PULSE (timecode after pulse)
*/
- off = parse->time.parse_stime.fp;
- L_SUB(&off, &parse->time.parse_ptime.fp); /* true offset */
+ off = parse->timedata.parse_stime.fp;
+ L_SUB(&off, &parse->timedata.parse_ptime.fp); /* true offset */
tt = add_var(&out->kv_list, 80, RO);
- sprintf(tt, "refclock_ppsskew=%s", lfptoms(&off, 6));
+ snprintf(tt, 80, "refclock_ppsskew=%s", lfptoms(&off, 6));
}
}
- if (PARSE_PPS(parse->time.parse_state))
+ if (PARSE_PPS(parse->timedata.parse_state))
{
tt = add_var(&out->kv_list, 80, RO|DEF);
- sprintf(tt, "refclock_ppstime=\"%s\"", gmprettydate(&parse->time.parse_ptime.fp));
+ snprintf(tt, 80, "refclock_ppstime=\"%s\"", gmprettydate(&parse->timedata.parse_ptime.fp));
}
- tt = add_var(&out->kv_list, 128, RO|DEF);
- sprintf(tt, "refclock_time=\"");
+ start = tt = add_var(&out->kv_list, 128, RO|DEF);
+ snprintf(tt, 128, "refclock_time=\"");
tt += strlen(tt);
- if (parse->time.parse_time.fp.l_ui == 0)
+ if (parse->timedata.parse_time.fp.l_ui == 0)
{
- strcpy(tt, "<UNDEFINED>\"");
+ strncpy(tt, "<UNDEFINED>\"", BUFFER_SIZES(start, tt, 128));
}
else
{
- sprintf(tt, "%s\"", gmprettydate(&parse->time.parse_time.fp));
- t = tt + strlen(tt);
+ snprintf(tt, 128, "%s\"", gmprettydate(&parse->timedata.parse_time.fp));
}
if (!PARSE_GETTIMECODE(parse, &tmpctl))
@@ -2945,25 +3407,24 @@ parse_control(
}
else
{
- tt = add_var(&out->kv_list, 512, RO|DEF);
- sprintf(tt, "refclock_status=\"");
+ start = tt = add_var(&out->kv_list, 512, RO|DEF);
+ snprintf(tt, 512, "refclock_status=\"");
tt += strlen(tt);
/*
* copy PPS flags from last read transaction (informational only)
*/
- tmpctl.parsegettc.parse_state |= parse->time.parse_state &
+ tmpctl.parsegettc.parse_state |= parse->timedata.parse_state &
(PARSEB_PPS|PARSEB_S_PPS);
- (void) parsestate(tmpctl.parsegettc.parse_state, tt);
+ (void) parsestate(tmpctl.parsegettc.parse_state, tt, BUFFER_SIZES(start, tt, 512));
- strcat(tt, "\"");
+ strncat(tt, "\"", BUFFER_SIZES(start, tt, 512));
if (tmpctl.parsegettc.parse_count)
mkascii(outstatus+strlen(outstatus), (int)(sizeof(outstatus)- strlen(outstatus) - 1),
- tmpctl.parsegettc.parse_buffer, (unsigned)(tmpctl.parsegettc.parse_count - 1));
+ tmpctl.parsegettc.parse_buffer, (unsigned)(tmpctl.parsegettc.parse_count));
- parse->generic->badformat += tmpctl.parsegettc.parse_badformat;
}
tmpctl.parseformat.parse_format = tmpctl.parsegettc.parse_format;
@@ -2976,10 +3437,10 @@ parse_control(
else
{
tt = add_var(&out->kv_list, 80, RO|DEF);
- sprintf(tt, "refclock_format=\"");
+ snprintf(tt, 80, "refclock_format=\"");
strncat(tt, tmpctl.parseformat.parse_buffer, tmpctl.parseformat.parse_count);
- strcat(tt,"\"");
+ strncat(tt,"\"", 80);
}
/*
@@ -2987,7 +3448,7 @@ parse_control(
*/
start = tt = add_var(&out->kv_list, LEN_STATES, RO|DEF);
- strcpy(tt, "refclock_states=\"");
+ strncpy(tt, "refclock_states=\"", LEN_STATES);
tt += strlen(tt);
for (i = 0; i <= CEVNT_MAX; i++)
@@ -3014,7 +3475,7 @@ parse_control(
char item[80];
int count;
- sprintf(item, "%s%s%s: %s (%d.%02d%%)",
+ snprintf(item, 80, "%s%s%s: %s (%d.%02d%%)",
sum ? "; " : "",
(parse->generic->currentstatus == i) ? "*" : "",
clockstatus((unsigned int)i),
@@ -3022,23 +3483,23 @@ parse_control(
(int)(percent / 100), (int)(percent % 100));
if ((count = strlen(item)) < (LEN_STATES - 40 - (tt - start)))
{
- strcpy(tt, item);
+ strncpy(tt, item, BUFFER_SIZES(start, tt, LEN_STATES));
tt += count;
}
sum += s_time;
}
}
- sprintf(tt, "; running time: %s\"", l_mktime(sum));
+ snprintf(tt, BUFFER_SIZES(start, tt, LEN_STATES), "; running time: %s\"", l_mktime(sum));
tt = add_var(&out->kv_list, 32, RO);
- sprintf(tt, "refclock_id=\"%s\"", parse->parse_type->cl_id);
+ snprintf(tt, 32, "refclock_id=\"%s\"", parse->parse_type->cl_id);
tt = add_var(&out->kv_list, 80, RO);
- sprintf(tt, "refclock_iomode=\"%s\"", parse->binding->bd_description);
+ snprintf(tt, 80, "refclock_iomode=\"%s\"", parse->binding->bd_description);
tt = add_var(&out->kv_list, 128, RO);
- sprintf(tt, "refclock_driver_version=\"%s\"", rcsid);
+ snprintf(tt, 128, "refclock_driver_version=\"%s\"", rcsid);
{
struct ctl_var *k;
@@ -3062,6 +3523,7 @@ parse_control(
/*--------------------------------------------------
* event handling - note that nominal events will also be posted
+ * keep track of state dwelling times
*/
static void
parse_event(
@@ -3074,41 +3536,17 @@ parse_event(
parse->statetime[parse->generic->currentstatus] += current_time - parse->lastchange;
parse->lastchange = current_time;
- parse->generic->currentstatus = (u_char)event;
-
if (parse->parse_type->cl_event)
parse->parse_type->cl_event(parse, event);
- if (event != CEVNT_NOMINAL)
- {
- parse->generic->lastevent = parse->generic->currentstatus;
- }
- else
+ if (event == CEVNT_NOMINAL)
{
NLOG(NLOG_CLOCKSTATUS)
msyslog(LOG_INFO, "PARSE receiver #%d: SYNCHRONIZED",
CLK_UNIT(parse->peer));
}
- if (event == CEVNT_FAULT)
- {
- NLOG(NLOG_CLOCKEVENT) /* conditional if clause for conditional syslog */
- ERR(ERR_BADEVENT)
- msyslog(LOG_ERR,
- "clock %s fault '%s' (0x%02x)", refnumtoa(&parse->peer->srcadr), ceventstr(event),
- (u_int)event);
- }
- else
- {
- NLOG(NLOG_CLOCKEVENT) /* conditional if clause for conditional syslog */
- if (event == CEVNT_NOMINAL || list_err(parse, ERR_BADEVENT))
- msyslog(LOG_INFO,
- "clock %s event '%s' (0x%02x)", refnumtoa(&parse->peer->srcadr), ceventstr(event),
- (u_int)event);
- }
-
- report_event(EVNT_PEERCLOCK, parse->peer);
- report_event(EVNT_CLOCKEXCPT, parse->peer);
+ refclock_report(parse->peer, event);
}
}
@@ -3130,13 +3568,13 @@ parse_process(
*/
if (((parsetime->parse_status & CVT_MASK) != CVT_OK) &&
((parsetime->parse_status & CVT_MASK) != CVT_NONE) &&
- (parse->time.parse_status != parsetime->parse_status))
+ (parse->timedata.parse_status != parsetime->parse_status))
{
char buffer[400];
NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
msyslog(LOG_WARNING, "PARSE receiver #%d: conversion status \"%s\"",
- CLK_UNIT(parse->peer), parsestatus(parsetime->parse_status, buffer));
+ CLK_UNIT(parse->peer), parsestatus(parsetime->parse_status, buffer, sizeof(buffer)));
if ((parsetime->parse_status & CVT_MASK) == CVT_FAIL)
{
@@ -3155,9 +3593,8 @@ parse_process(
else
{
ERR(ERR_BADDATA)
- msyslog(LOG_WARNING, "PARSE receiver #%d: FAILED TIMECODE: \"%s\" (check receiver configuration / cableling)",
+ msyslog(LOG_WARNING, "PARSE receiver #%d: FAILED TIMECODE: \"%s\" (check receiver configuration / wiring)",
CLK_UNIT(parse->peer), mkascii(buffer, sizeof buffer, tmpctl.parsegettc.parse_buffer, (unsigned)(tmpctl.parsegettc.parse_count - 1)));
- parse->generic->badformat += tmpctl.parsegettc.parse_badformat;
}
}
}
@@ -3176,10 +3613,17 @@ parse_process(
if ((parsetime->parse_status & CVT_ADDITIONAL) &&
parse->parse_type->cl_message)
parse->parse_type->cl_message(parse, parsetime);
+ /*
+ * save PPS information that comes piggyback
+ */
+ if (PARSE_PPS(parsetime->parse_state))
+ {
+ parse->timedata.parse_state |= PARSEB_PPS|PARSEB_S_PPS;
+ parse->timedata.parse_ptime = parsetime->parse_ptime;
+ }
break; /* well, still waiting - timeout is handled at higher levels */
case CVT_FAIL:
- parse->generic->badformat++;
if (parsetime->parse_status & CVT_BADFMT)
{
parse_event(parse, CEVNT_BADREPLY);
@@ -3229,16 +3673,17 @@ parse_process(
/*
* now, any changes ?
*/
- if (parse->time.parse_state != parsetime->parse_state)
+ if ((parse->timedata.parse_state ^ parsetime->parse_state) &
+ ~(unsigned)(PARSEB_PPS|PARSEB_S_PPS))
{
char tmp1[200];
char tmp2[200];
/*
- * something happend
+ * something happend - except for PPS events
*/
- (void) parsestate(parsetime->parse_state, tmp1);
- (void) parsestate(parse->time.parse_state, tmp2);
+ (void) parsestate(parsetime->parse_state, tmp1, sizeof(tmp1));
+ (void) parsestate(parse->timedata.parse_state, tmp2, sizeof(tmp2));
NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
msyslog(LOG_INFO,"PARSE receiver #%d: STATE CHANGE: %s -> %s",
@@ -3246,9 +3691,18 @@ parse_process(
}
/*
+ * carry on PPS information if still usable
+ */
+ if (PARSE_PPS(parse->timedata.parse_state) && !PARSE_PPS(parsetime->parse_state))
+ {
+ parsetime->parse_state |= PARSEB_PPS|PARSEB_S_PPS;
+ parsetime->parse_ptime = parse->timedata.parse_ptime;
+ }
+
+ /*
* remember for future
*/
- parse->time = *parsetime;
+ parse->timedata = *parsetime;
/*
* check to see, whether the clock did a complete powerup or lost PZF signal
@@ -3351,6 +3805,17 @@ parse_process(
if (PARSE_PPS(parsetime->parse_state) && CLK_PPS(parse->peer))
{
l_fp offset;
+ double ppsphaseadjust = parse->ppsphaseadjust;
+
+#ifdef HAVE_PPSAPI
+ /*
+ * set fudge = 0.0 if already included in PPS time stamps
+ */
+ if (parse->ppsparams.mode & (PPS_OFFSETCLEAR|PPS_OFFSETASSERT))
+ {
+ ppsphaseadjust = 0.0;
+ }
+#endif
/*
* we have a PPS signal - much better than the RS232 stuff (we hope)
@@ -3368,7 +3833,7 @@ parse_process(
if (M_ISGEQ(off.l_i, off.l_f, -1, 0x80000000) &&
M_ISGEQ(0, 0x7fffffff, off.l_i, off.l_f))
{
- fudge = parse->generic->fudgetime2; /* pick PPS fudge factor */
+ fudge = ppsphaseadjust; /* pick PPS fudge factor */
/*
* RS232 offsets within [-0.5..0.5[ - take PPS offsets
@@ -3404,7 +3869,7 @@ parse_process(
}
else
{
- fudge = parse->generic->fudgetime2; /* pick PPS fudge factor */
+ fudge = ppsphaseadjust; /* pick PPS fudge factor */
/*
* Well, no time code to guide us - assume on second pulse
* and pray, that we are within [-0.5..0.5[
@@ -3473,35 +3938,22 @@ parse_process(
clear_err(parse, ERR_NODATA);
clear_err(parse, ERR_INTERNAL);
-#ifdef DEBUG
- if (debug > 2)
- {
- printf("PARSE receiver #%d: refclock_process_offset(reftime=%s, rectime=%s, Fudge=%f)\n",
- CLK_UNIT(parse->peer),
- prettydate(&reftime),
- prettydate(&rectime),
- fudge);
- }
-#endif
-
- refclock_process_offset(parse->generic, reftime, rectime, fudge);
- if (PARSE_PPS(parsetime->parse_state) && CLK_PPS(parse->peer))
- {
- (void) pps_sample(&parse->time.parse_ptime.fp);
- }
-
-
/*
* and now stick it into the clock machine
* samples are only valid iff lastsync is not too old and
* we have seen the clock in sync at least once
* after the last time we didn't see an expected data telegram
+ * at startup being not in sync is also bad just like
+ * POWERUP state
* see the clock states section above for more reasoning
*/
- if (((current_time - parse->lastsync) > parse->parse_type->cl_maxunsync) ||
- (parse->lastsync <= parse->lastmissed))
+ if (((current_time - parse->lastsync) > parse->maxunsync) ||
+ (parse->lastsync < parse->lastmissed) ||
+ ((parse->lastsync == 0) && !PARSE_SYNC(parsetime->parse_state)) ||
+ PARSE_POWERUP(parsetime->parse_state))
{
parse->generic->leap = LEAP_NOTINSYNC;
+ parse->lastsync = 0; /* wait for full sync again */
}
else
{
@@ -3524,15 +3976,49 @@ parse_process(
parse->generic->leap = LEAP_NOWARNING;
}
}
-
+
+ if (parse->generic->leap != LEAP_NOTINSYNC)
+ {
+ /*
+ * only good/trusted samples are interesting
+ */
+#ifdef DEBUG
+ if (debug > 2)
+ {
+ printf("PARSE receiver #%d: refclock_process_offset(reftime=%s, rectime=%s, Fudge=%f)\n",
+ CLK_UNIT(parse->peer),
+ prettydate(&reftime),
+ prettydate(&rectime),
+ fudge);
+ }
+#endif
+ parse->generic->lastref = reftime;
+
+ refclock_process_offset(parse->generic, reftime, rectime, fudge);
+
+ /*
+ * pass PPS information on to PPS clock
+ */
+ if (PARSE_PPS(parsetime->parse_state) && CLK_PPS(parse->peer))
+ {
+ (void) pps_sample(&parse->timedata.parse_ptime.fp);
+ parse_hardpps(parse, PARSE_HARDPPS_ENABLE);
+ }
+ } else {
+ parse_hardpps(parse, PARSE_HARDPPS_DISABLE);
+ }
+
/*
- * ready, unless the machine wants a sample
+ * ready, unless the machine wants a sample or
+ * we are in fast startup mode (peer->dist > MAXDISTANCE)
*/
- if (!parse->pollneeddata)
+ if (!parse->pollneeddata && parse->peer->disp <= MAXDISTANCE)
return;
parse->pollneeddata = 0;
+ parse->timedata.parse_state &= ~(unsigned)(PARSEB_PPS|PARSEB_S_PPS);
+
refclock_receive(parse->peer);
}
@@ -3547,12 +4033,14 @@ mk_utcinfo(
int wnlsf,
int dn,
int dtls,
- int dtlsf
+ int dtlsf,
+ int size
)
{
l_fp leapdate;
+ char *start = t;
- sprintf(t, "current correction %d sec", dtls);
+ snprintf(t, size, "current correction %d sec", dtls);
t += strlen(t);
if (wnlsf < 990)
@@ -3566,12 +4054,12 @@ mk_utcinfo(
if ((dtlsf != dtls) &&
((wnlsf - wnt) < 52))
{
- sprintf(t, ", next correction %d sec on %s, new GPS-UTC offset %d",
+ snprintf(t, BUFFER_SIZES(start, t, size), ", next correction %d sec on %s, new GPS-UTC offset %d",
dtlsf - dtls, gmprettydate(&leapdate), dtlsf);
}
else
{
- sprintf(t, ", last correction on %s",
+ snprintf(t, BUFFER_SIZES(start, t, size), ", last correction on %s",
gmprettydate(&leapdate));
}
}
@@ -3590,7 +4078,7 @@ gps16x_message(
parsetime_t *parsetime
)
{
- if (parse->time.parse_msglen && parsetime->parse_msg[0] == SOH)
+ if (parse->timedata.parse_msglen && parsetime->parse_msg[0] == SOH)
{
GPS_MSG_HDR header;
unsigned char *bufp = (unsigned char *)parsetime->parse_msg + 1;
@@ -3624,12 +4112,12 @@ gps16x_message(
SW_REV gps_sw_rev;
get_mbg_sw_rev(&bufp, &gps_sw_rev);
- sprintf(buffer, "meinberg_gps_version=\"%x.%02x%s%s\"",
+ snprintf(buffer, sizeof(buffer), "meinberg_gps_version=\"%x.%02x%s%s\"",
(gps_sw_rev.code >> 8) & 0xFF,
gps_sw_rev.code & 0xFF,
gps_sw_rev.name[0] ? " " : "",
gps_sw_rev.name);
- set_var(&parse->kv, buffer, 64, RO|DEF);
+ set_var(&parse->kv, buffer, strlen(buffer)+1, RO|DEF);
}
break;
@@ -3653,7 +4141,7 @@ gps16x_message(
char *p, *b;
status = get_lsb_short(&bufp);
- sprintf(buffer, "meinberg_gps_status=\"[0x%04x] ", status);
+ snprintf(buffer, sizeof(buffer), "meinberg_gps_status=\"[0x%04x] ", status);
if (status)
{
@@ -3668,7 +4156,7 @@ gps16x_message(
*p++ = ' ';
}
- strcat(p, (const char *)s->string);
+ strncat(p, (const char *)s->string, sizeof(buffer));
}
s++;
}
@@ -3678,10 +4166,10 @@ gps16x_message(
}
else
{
- strcat(buffer, "<OK>\"");
+ strncat(buffer, "<OK>\"", sizeof(buffer));
}
- set_var(&parse->kv, buffer, 64, RO|DEF);
+ set_var(&parse->kv, buffer, strlen(buffer)+1, RO|DEF);
}
break;
@@ -3691,7 +4179,7 @@ gps16x_message(
char buffer[256];
get_mbg_xyz(&bufp, xyz);
- sprintf(buffer, "gps_position(XYZ)=\"%s m, %s m, %s m\"",
+ snprintf(buffer, sizeof(buffer), "gps_position(XYZ)=\"%s m, %s m, %s m\"",
mfptoa(xyz[XP].l_ui, xyz[XP].l_uf, 1),
mfptoa(xyz[YP].l_ui, xyz[YP].l_uf, 1),
mfptoa(xyz[ZP].l_ui, xyz[ZP].l_uf, 1));
@@ -3707,7 +4195,7 @@ gps16x_message(
get_mbg_lla(&bufp, lla);
- sprintf(buffer, "gps_position(LLA)=\"%s deg, %s deg, %s m\"",
+ snprintf(buffer, sizeof(buffer), "gps_position(LLA)=\"%s deg, %s deg, %s m\"",
mfptoa(lla[LAT].l_ui, lla[LAT].l_uf, 4),
mfptoa(lla[LON].l_ui, lla[LON].l_uf, 4),
mfptoa(lla[ALT].l_ui, lla[ALT].l_uf, 1));
@@ -3728,55 +4216,54 @@ gps16x_message(
case GPS_ANT_INFO:
{
ANT_INFO antinfo;
- u_char buffer[512];
- u_char *p;
+ char buffer[512];
+ char *p;
get_mbg_antinfo(&bufp, &antinfo);
- sprintf(buffer, "meinberg_antenna_status=\"");
+ snprintf(buffer, sizeof(buffer), "meinberg_antenna_status=\"");
p = buffer + strlen(buffer);
switch (antinfo.status)
{
case ANT_INVALID:
- strcat(p, "<OK>");
+ strncat(p, "<OK>", BUFFER_SIZE(buffer, p));
p += strlen(p);
break;
case ANT_DISCONN:
- strcat(p, "DISCONNECTED since ");
+ strncat(p, "DISCONNECTED since ", BUFFER_SIZE(buffer, p));
NLOG(NLOG_CLOCKSTATUS)
ERR(ERR_BADSTATUS)
msyslog(LOG_ERR,"PARSE receiver #%d: ANTENNA FAILURE: %s",
CLK_UNIT(parse->peer), p);
p += strlen(p);
- mbg_tm_str(&p, &antinfo.tm_disconn);
+ mbg_tm_str(&p, &antinfo.tm_disconn, BUFFER_SIZE(buffer, p));
*p = '\0';
break;
case ANT_RECONN:
- strcat(p, "RECONNECTED on ");
+ strncat(p, "RECONNECTED on ", BUFFER_SIZE(buffer, p));
p += strlen(p);
- mbg_tm_str(&p, &antinfo.tm_reconn);
- sprintf(p, ", reconnect clockoffset %c%ld.%07ld s, disconnect time ",
+ mbg_tm_str(&p, &antinfo.tm_reconn, BUFFER_SIZE(buffer, p));
+ snprintf(p, BUFFER_SIZE(buffer, p), ", reconnect clockoffset %c%ld.%07ld s, disconnect time ",
(antinfo.delta_t < 0) ? '-' : '+',
ABS(antinfo.delta_t) / 10000,
ABS(antinfo.delta_t) % 10000);
p += strlen(p);
- mbg_tm_str(&p, &antinfo.tm_disconn);
+ mbg_tm_str(&p, &antinfo.tm_disconn, BUFFER_SIZE(buffer, p));
*p = '\0';
break;
default:
- sprintf(p, "bad status 0x%04x", antinfo.status);
+ snprintf(p, BUFFER_SIZE(buffer, p), "bad status 0x%04x", antinfo.status);
p += strlen(p);
break;
}
- *p++ = '"';
- *p = '\0';
+ strncat(p, "\"", BUFFER_SIZE(buffer, p));
- set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
+ set_var(&parse->kv, buffer, strlen(buffer)+1, RO|DEF);
}
break;
@@ -3786,8 +4273,8 @@ gps16x_message(
case GPS_CFGH:
{
CFGH cfgh;
- u_char buffer[512];
- u_char *p;
+ char buffer[512];
+ char *p;
get_mbg_cfgh(&bufp, &cfgh);
if (cfgh.valid)
@@ -3795,77 +4282,74 @@ gps16x_message(
int i;
p = buffer;
- strcpy(buffer, "gps_tot_51=\"");
+ strncpy(buffer, "gps_tot_51=\"", BUFFER_SIZE(buffer, p));
p += strlen(p);
- mbg_tgps_str(&p, &cfgh.tot_51);
- *p++ = '"';
- *p = '\0';
- set_var(&parse->kv, buffer, sizeof(buffer), RO);
+ mbg_tgps_str(&p, &cfgh.tot_51, BUFFER_SIZE(buffer, p));
+ strncpy(p, "\"", BUFFER_SIZE(buffer, p));
+ set_var(&parse->kv, buffer, strlen(buffer)+1, RO);
p = buffer;
- strcpy(buffer, "gps_tot_63=\"");
+ strncpy(buffer, "gps_tot_63=\"", BUFFER_SIZE(buffer, p));
p += strlen(p);
- mbg_tgps_str(&p, &cfgh.tot_63);
- *p++ = '"';
- *p = '\0';
- set_var(&parse->kv, buffer, sizeof(buffer), RO);
+ mbg_tgps_str(&p, &cfgh.tot_63, BUFFER_SIZE(buffer, p));
+ strncpy(p, "\"", BUFFER_SIZE(buffer, p));
+ set_var(&parse->kv, buffer, strlen(buffer)+1, RO);
p = buffer;
- strcpy(buffer, "gps_t0a=\"");
+ strncpy(buffer, "gps_t0a=\"", BUFFER_SIZE(buffer, p));
p += strlen(p);
- mbg_tgps_str(&p, &cfgh.t0a);
- *p++ = '"';
- *p = '\0';
- set_var(&parse->kv, buffer, sizeof(buffer), RO);
+ mbg_tgps_str(&p, &cfgh.t0a, BUFFER_SIZE(buffer, p));
+ strncpy(p, "\"", BUFFER_SIZE(buffer, p));
+ set_var(&parse->kv, buffer, strlen(buffer)+1, RO);
- for (i = MIN_SVNO; i <= MAX_SVNO; i++)
+ for (i = MIN_SVNO; i < MAX_SVNO; i++)
{
p = buffer;
- sprintf(p, "gps_cfg[%d]=\"[0x%x] ", i, cfgh.cfg[i]);
+ snprintf(p, BUFFER_SIZE(buffer, p), "gps_cfg[%d]=\"[0x%x] ", i, cfgh.cfg[i]);
p += strlen(p);
switch (cfgh.cfg[i] & 0x7)
{
case 0:
- strcpy(p, "BLOCK I");
+ strncpy(p, "BLOCK I", BUFFER_SIZE(buffer, p));
break;
case 1:
- strcpy(p, "BLOCK II");
+ strncpy(p, "BLOCK II", BUFFER_SIZE(buffer, p));
break;
default:
- sprintf(p, "bad CFG");
+ strncpy(p, "bad CFG", BUFFER_SIZE(buffer, p));
break;
}
- strcat(p, "\"");
- set_var(&parse->kv, buffer, sizeof(buffer), RO);
+ strncat(p, "\"", BUFFER_SIZE(buffer, p));
+ set_var(&parse->kv, buffer, strlen(buffer)+1, RO);
p = buffer;
- sprintf(p, "gps_health[%d]=\"[0x%x] ", i, cfgh.health[i]);
+ snprintf(p, BUFFER_SIZE(buffer, p), "gps_health[%d]=\"[0x%x] ", i, cfgh.health[i]);
p += strlen(p);
switch ((cfgh.health[i] >> 5) & 0x7 )
{
case 0:
- strcpy(p, "OK;");
+ strncpy(p, "OK;", BUFFER_SIZE(buffer, p));
break;
case 1:
- strcpy(p, "PARITY;");
+ strncpy(p, "PARITY;", BUFFER_SIZE(buffer, p));
break;
case 2:
- strcpy(p, "TLM/HOW;");
+ strncpy(p, "TLM/HOW;", BUFFER_SIZE(buffer, p));
break;
case 3:
- strcpy(p, "Z-COUNT;");
+ strncpy(p, "Z-COUNT;", BUFFER_SIZE(buffer, p));
break;
case 4:
- strcpy(p, "SUBFRAME 1,2,3;");
+ strncpy(p, "SUBFRAME 1,2,3;", BUFFER_SIZE(buffer, p));
break;
case 5:
- strcpy(p, "SUBFRAME 4,5;");
+ strncpy(p, "SUBFRAME 4,5;", BUFFER_SIZE(buffer, p));
break;
case 6:
- strcpy(p, "UPLOAD BAD;");
+ strncpy(p, "UPLOAD BAD;", BUFFER_SIZE(buffer, p));
break;
case 7:
- strcpy(p, "DATA BAD;");
+ strncpy(p, "DATA BAD;", BUFFER_SIZE(buffer, p));
break;
}
@@ -3874,26 +4358,26 @@ gps16x_message(
switch (cfgh.health[i] & 0x1F)
{
case 0:
- strcpy(p, "SIGNAL OK");
+ strncpy(p, "SIGNAL OK", BUFFER_SIZE(buffer, p));
break;
case 0x1C:
- strcpy(p, "SV TEMP OUT");
+ strncpy(p, "SV TEMP OUT", BUFFER_SIZE(buffer, p));
break;
case 0x1D:
- strcpy(p, "SV WILL BE TEMP OUT");
+ strncpy(p, "SV WILL BE TEMP OUT", BUFFER_SIZE(buffer, p));
break;
case 0x1E:
break;
case 0x1F:
- strcpy(p, "MULTIPLE ERRS");
+ strncpy(p, "MULTIPLE ERRS", BUFFER_SIZE(buffer, p));
break;
default:
- strcpy(p, "TRANSMISSION PROBLEMS");
+ strncpy(p, "TRANSMISSION PROBLEMS", BUFFER_SIZE(buffer, p));
break;
}
- strcat(p, "\"");
- set_var(&parse->kv, buffer, sizeof(buffer), RO);
+ strncat(p, "\"", sizeof(buffer));
+ set_var(&parse->kv, buffer, strlen(buffer)+1, RO);
}
}
}
@@ -3917,16 +4401,16 @@ gps16x_message(
if (utc.valid)
{
- strcpy(p, "gps_utc_correction=\"");
+ strncpy(p, "gps_utc_correction=\"", sizeof(buffer));
p += strlen(p);
- mk_utcinfo(p, utc.t0t.wn, utc.WNlsf, utc.DNt, utc.delta_tls, utc.delta_tlsf);
- strcat(p, "\"");
+ mk_utcinfo(p, utc.t0t.wn, utc.WNlsf, utc.DNt, utc.delta_tls, utc.delta_tlsf, BUFFER_SIZE(buffer, p));
+ strncat(p, "\"", BUFFER_SIZE(buffer, p));
}
else
{
- strcpy(p, "gps_utc_correction=\"<NO UTC DATA>\"");
+ strncpy(p, "gps_utc_correction=\"<NO UTC DATA>\"", BUFFER_SIZE(buffer, p));
}
- set_var(&parse->kv, buffer, sizeof(buffer), RO|DEF);
+ set_var(&parse->kv, buffer, strlen(buffer)+1, RO|DEF);
}
break;
@@ -3945,12 +4429,12 @@ gps16x_message(
char buffer1[128];
mkreadable(buffer1, sizeof(buffer1), gps_ascii_msg.s, strlen(gps_ascii_msg.s), (int)0);
- sprintf(buffer, "gps_message=\"%s\"", buffer1);
+ snprintf(buffer, sizeof(buffer), "gps_message=\"%s\"", buffer1);
}
else
- strcpy(buffer, "gps_message=<NONE>");
+ strncpy(buffer, "gps_message=<NONE>", sizeof(buffer));
- set_var(&parse->kv, buffer, 128, RO|DEF);
+ set_var(&parse->kv, buffer, strlen(buffer)+1, RO|DEF);
}
break;
@@ -4331,6 +4815,7 @@ trimbletaip_event(
typedef struct trimble
{
u_long last_msg; /* last message received */
+ u_long last_reset; /* last time a reset was issued */
u_char qtracking; /* query tracking status */
u_long ctrack; /* current tracking set */
u_long ltrack; /* last tracking set */
@@ -4366,6 +4851,12 @@ sendcmd(
buf->idx = 2;
}
+void sendcmd P((struct txbuf *buf, int c));
+void sendbyte P((struct txbuf *buf, int b));
+void sendetx P((struct txbuf *buf, struct parseunit *parse));
+void sendint P((struct txbuf *buf, int a));
+void sendflt P((struct txbuf *buf, double a));
+
void
sendbyte(
struct txbuf *buf,
@@ -4451,7 +4942,16 @@ trimbletsip_setup(
{
u_char buffer[256];
struct txbuf buf;
+ trimble_t *t = parse->localdata;
+ if (t && t->last_reset &&
+ ((t->last_reset + TRIMBLE_RESET_HOLDOFF) > current_time)) {
+ return 1; /* not yet */
+ }
+
+ if (t)
+ t->last_reset = current_time;
+
buf.txt = buffer;
sendcmd(&buf, CMD_CVERSION); /* request software versions */
@@ -4466,7 +4966,7 @@ trimbletsip_setup(
sendetx(&buf, parse);
sendcmd(&buf, CMD_CMODESEL); /* fix mode select */
- sendbyte(&buf, 0); /* automatic */
+ sendbyte(&buf, 1); /* time transfer mode */
sendetx(&buf, parse);
sendcmd(&buf, CMD_CMESSAGE); /* request system message */
@@ -4512,9 +5012,10 @@ trimble_check(
if (current_time > t->last_msg + TRIMBLETSIP_IDLE_TIME)
(void)trimbletsip_setup(parse, "message timeout");
}
+
poll_poll(parse->peer); /* emit query string and re-arm timer */
- if (t->qtracking)
+ if (t && t->qtracking)
{
u_long oldsats = t->ltrack & ~t->ctrack;
@@ -4525,14 +5026,15 @@ trimble_check(
{
int i;
- for (i = 0; oldsats; i++)
+ for (i = 0; oldsats; i++) {
if (oldsats & (1 << i))
{
sendcmd(&buf, CMD_CSTATTRACK);
sendbyte(&buf, i+1); /* old sat */
sendetx(&buf, parse);
}
- oldsats &= ~(1 << i);
+ oldsats &= ~(1 << i);
+ }
}
sendcmd(&buf, CMD_CSTATTRACK);
@@ -4777,11 +5279,11 @@ trimbletsip_message(
if (s)
{
- sprintf(t, "%s=\"", s->varname);
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "%s=\"", s->varname);
}
else
{
- printf("TRIMBLE unknown command 0x%02x\n", cmd);
+ DPRINTF(1, ("TRIMBLE UNKNOWN COMMAND 0x%02x\n", cmd));
return;
}
@@ -4792,40 +5294,40 @@ trimbletsip_message(
switch(cmd)
{
case CMD_RCURTIME:
- sprintf(t, "%f, %d, %f",
- getflt((unsigned char *)&mb(0)), getshort((unsigned char *)&mb(4)),
- getflt((unsigned char *)&mb(6)));
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "%f, %d, %f",
+ getflt((unsigned char *)&mb(0)), getshort((unsigned char *)&mb(4)),
+ getflt((unsigned char *)&mb(6)));
break;
case CMD_RBEST4:
- strcpy(t, "mode: ");
+ strncpy(t, "mode: ", BUFFER_SIZE(pbuffer, t));
t += strlen(t);
switch (mb(0) & 0xF)
{
default:
- sprintf(t, "0x%x", mb(0) & 0x7);
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "0x%x", mb(0) & 0x7);
break;
case 1:
- strcat(t, "0D");
+ strncpy(t, "0D", BUFFER_SIZE(pbuffer, t));
break;
case 3:
- strcat(t, "2D");
+ strncpy(t, "2D", BUFFER_SIZE(pbuffer, t));
break;
case 4:
- strcat(t, "3D");
+ strncpy(t, "3D", BUFFER_SIZE(pbuffer, t));
break;
}
t += strlen(t);
if (mb(0) & 0x10)
- strcpy(t, "-MANUAL, ");
+ strncpy(t, "-MANUAL, ", BUFFER_SIZE(pbuffer, t));
else
- strcpy(t, "-AUTO, ");
+ strncpy(t, "-AUTO, ", BUFFER_SIZE(pbuffer, t));
t += strlen(t);
- sprintf(t, "satellites %02d %02d %02d %02d, PDOP %.2f, HDOP %.2f, VDOP %.2f, TDOP %.2f",
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "satellites %02d %02d %02d %02d, PDOP %.2f, HDOP %.2f, VDOP %.2f, TDOP %.2f",
mb(1), mb(2), mb(3), mb(4),
getflt((unsigned char *)&mb(5)),
getflt((unsigned char *)&mb(9)),
@@ -4835,7 +5337,7 @@ trimbletsip_message(
break;
case CMD_RVERSION:
- sprintf(t, "%d.%d (%d/%d/%d)",
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "%d.%d (%d/%d/%d)",
mb(0)&0xff, mb(1)&0xff, 1900+(mb(4)&0xff), mb(2)&0xff, mb(3)&0xff);
break;
@@ -4858,31 +5360,31 @@ trimbletsip_message(
switch (mb(0) & 0xFF)
{
default:
- sprintf(t, "illegal value 0x%02x", mb(0) & 0xFF);
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "illegal value 0x%02x", mb(0) & 0xFF);
break;
case 0x00:
- strcpy(t, "doing position fixes");
+ strncpy(t, "doing position fixes", BUFFER_SIZE(pbuffer, t));
break;
case 0x01:
- strcpy(t, "no GPS time yet");
+ strncpy(t, "no GPS time yet", BUFFER_SIZE(pbuffer, t));
break;
case 0x03:
- strcpy(t, "PDOP too high");
+ strncpy(t, "PDOP too high", BUFFER_SIZE(pbuffer, t));
break;
case 0x08:
- strcpy(t, "no usable satellites");
+ strncpy(t, "no usable satellites", BUFFER_SIZE(pbuffer, t));
break;
case 0x09:
- strcpy(t, "only ONE usable satellite");
+ strncpy(t, "only ONE usable satellite", BUFFER_SIZE(pbuffer, t));
break;
case 0x0A:
- strcpy(t, "only TWO usable satellites");
+ strncpy(t, "only TWO usable satellites", BUFFER_SIZE(pbuffer, t));
break;
case 0x0B:
- strcpy(t, "only THREE usable satellites");
+ strncpy(t, "only THREE usable satellites", BUFFER_SIZE(pbuffer, t));
break;
case 0x0C:
- strcpy(t, "the chosen satellite is unusable");
+ strncpy(t, "the chosen satellite is unusable", BUFFER_SIZE(pbuffer, t));
break;
}
@@ -4893,14 +5395,14 @@ trimbletsip_message(
for (i = 0; i < 8; i++)
if (bits & (0x1<<i))
{
- sprintf(t, ", %s", msgs[i]);
+ snprintf(t, BUFFER_SIZE(pbuffer, t), ", %s", msgs[i]);
t += strlen(t);
}
}
break;
case CMD_RMESSAGE:
- mkreadable(t, (int)(sizeof(pbuffer) - (t - pbuffer)), (char *)&mb(0), (unsigned)(size - 2 - (&mb(0) - buffer)), 0);
+ mkreadable(t, (int)BUFFER_SIZE(pbuffer, t), (char *)&mb(0), (unsigned)(size - 2 - (&mb(0) - buffer)), 0);
break;
case CMD_RMACHSTAT:
@@ -4919,7 +5421,7 @@ trimbletsip_message(
int i, bits;
- sprintf(t, "machine id 0x%02x", mb(0) & 0xFF);
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "machine id 0x%02x", mb(0) & 0xFF);
t += strlen(t);
bits = mb(1) & 0xFF;
@@ -4927,16 +5429,16 @@ trimbletsip_message(
for (i = 0; i < 8; i++)
if (bits & (0x1<<i))
{
- sprintf(t, ", %s", msgs[i]);
+ snprintf(t, BUFFER_SIZE(pbuffer, t), ", %s", msgs[i]);
t += strlen(t);
}
- sprintf(t, ", Superpackets %ssupported", (mb(2) & 0xFF) ? "" :"un" );
+ snprintf(t, BUFFER_SIZE(pbuffer, t), ", Superpackets %ssupported", (mb(2) & 0xFF) ? "" :"un" );
}
break;
case CMD_ROPERPARAM:
- sprintf(t, "%2x %.1f %.1f %.1f %.1f",
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "%2x %.1f %.1f %.1f %.1f",
mb(0), getflt((unsigned char *)&mb(1)), getflt((unsigned char *)&mb(5)),
getflt((unsigned char *)&mb(9)), getflt((unsigned char *)&mb(13)));
break;
@@ -4952,23 +5454,23 @@ trimbletsip_message(
if ((int)t0t != 0)
{
- mk_utcinfo(t, wnt, wnlsf, dn, dtls, dtlsf);
+ mk_utcinfo(t, wnt, wnlsf, dn, dtls, dtlsf, BUFFER_SIZE(pbuffer, t));
}
else
{
- strcpy(t, "<NO UTC DATA>");
+ strncpy(t, "<NO UTC DATA>", BUFFER_SIZE(pbuffer, t));
}
}
break;
case CMD_RSAT1BIAS:
- sprintf(t, "%.1fm %.2fm/s at %.1fs",
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "%.1fm %.2fm/s at %.1fs",
getflt(&mb(0)), getflt(&mb(4)), getflt(&mb(8)));
break;
case CMD_RIOOPTIONS:
{
- sprintf(t, "%02x %02x %02x %02x",
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "%02x %02x %02x %02x",
mb(0), mb(1), mb(2), mb(3));
if (mb(0) != TRIM_POS_OPT ||
mb(2) != TRIM_TIME_OPT)
@@ -4986,7 +5488,7 @@ trimbletsip_message(
double f = getflt((unsigned char *)&mb(12));
if (f > 0.0)
- sprintf(t, "x= %.1fm, y= %.1fm, z= %.1fm, time_of_fix= %f sec",
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "x= %.1fm, y= %.1fm, z= %.1fm, time_of_fix= %f sec",
x, y, z,
f);
else
@@ -5001,7 +5503,7 @@ trimbletsip_message(
double f = getflt((unsigned char *)&mb(12));
if (f > 0.0)
- sprintf(t, "lat %f %c, long %f %c, alt %.2fm",
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "lat %f %c, long %f %c, alt %.2fm",
((lat < 0.0) ? (-lat) : (lat))*RTOD, (lat < 0.0 ? 'S' : 'N'),
((lng < 0.0) ? (-lng) : (lng))*RTOD, (lng < 0.0 ? 'W' : 'E'),
getflt((unsigned char *)&mb(8)));
@@ -5015,7 +5517,7 @@ trimbletsip_message(
double x = getdbl((unsigned char *)&mb(0));
double y = getdbl((unsigned char *)&mb(8));
double z = getdbl((unsigned char *)&mb(16));
- sprintf(t, "x= %.1fm, y= %.1fm, z= %.1fm",
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "x= %.1fm, y= %.1fm, z= %.1fm",
x, y, z);
}
break;
@@ -5024,7 +5526,7 @@ trimbletsip_message(
{
double lat = getdbl((unsigned char *)&mb(0));
double lng = getdbl((unsigned char *)&mb(8));
- sprintf(t, "lat %f %c, lon %f %c, alt %.2fm",
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "lat %f %c, lon %f %c, alt %.2fm",
((lat < 0.0) ? (-lat) : (lat))*RTOD, (lat < 0.0 ? 'S' : 'N'),
((lng < 0.0) ? (-lng) : (lng))*RTOD, (lng < 0.0 ? 'W' : 'E'),
getdbl((unsigned char *)&mb(16)));
@@ -5035,32 +5537,32 @@ trimbletsip_message(
{
int i, sats;
- strcpy(t, "mode: ");
+ strncpy(t, "mode: ", BUFFER_SIZE(pbuffer, t));
t += strlen(t);
switch (mb(0) & 0x7)
{
default:
- sprintf(t, "0x%x", mb(0) & 0x7);
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "0x%x", mb(0) & 0x7);
break;
case 3:
- strcat(t, "2D");
+ strncpy(t, "2D", BUFFER_SIZE(pbuffer, t));
break;
case 4:
- strcat(t, "3D");
+ strncpy(t, "3D", BUFFER_SIZE(pbuffer, t));
break;
}
t += strlen(t);
if (mb(0) & 0x8)
- strcpy(t, "-MANUAL, ");
+ strncpy(t, "-MANUAL, ", BUFFER_SIZE(pbuffer, t));
else
- strcpy(t, "-AUTO, ");
+ strncpy(t, "-AUTO, ", BUFFER_SIZE(pbuffer, t));
t += strlen(t);
sats = (mb(0)>>4) & 0xF;
- sprintf(t, "PDOP %.2f, HDOP %.2f, VDOP %.2f, TDOP %.2f, %d satellite%s in view: ",
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "PDOP %.2f, HDOP %.2f, VDOP %.2f, TDOP %.2f, %d satellite%s in view: ",
getflt((unsigned char *)&mb(1)),
getflt((unsigned char *)&mb(5)),
getflt((unsigned char *)&mb(9)),
@@ -5070,7 +5572,7 @@ trimbletsip_message(
for (i=0; i < sats; i++)
{
- sprintf(t, "%s%02d", i ? ", " : "", mb(17+i));
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "%s%02d", i ? ", " : "", mb(17+i));
t += strlen(t);
if (tr)
tr->ctrack |= (1 << (mb(17+i)-1));
@@ -5085,17 +5587,17 @@ trimbletsip_message(
case CMD_RSTATTRACK:
{
- sprintf(t-2, "[%02d]=\"", mb(0)); /* add index to var name */
+ snprintf(t-2, BUFFER_SIZE(pbuffer, t-2), "[%02d]=\"", mb(0)); /* add index to var name */
t += strlen(t);
if (getflt((unsigned char *)&mb(4)) < 0.0)
{
- strcpy(t, "<NO MEASUREMENTS>");
+ strncpy(t, "<NO MEASUREMENTS>", BUFFER_SIZE(pbuffer, t));
var_flag &= ~DEF;
}
else
{
- sprintf(t, "ch=%d, acq=%s, eph=%d, signal_level= %5.2f, elevation= %5.2f, azimuth= %6.2f",
+ snprintf(t, BUFFER_SIZE(pbuffer, t), "ch=%d, acq=%s, eph=%d, signal_level= %5.2f, elevation= %5.2f, azimuth= %6.2f",
(mb(1) & 0xFF)>>3,
mb(2) ? ((mb(2) == 1) ? "ACQ" : "SRCH") : "NEVER",
mb(3),
@@ -5106,29 +5608,31 @@ trimbletsip_message(
if (mb(20))
{
var_flag &= ~DEF;
- strcpy(t, ", OLD");
+ strncpy(t, ", OLD", BUFFER_SIZE(pbuffer, t));
}
t += strlen(t);
if (mb(22))
{
if (mb(22) == 1)
- strcpy(t, ", BAD PARITY");
+ strncpy(t, ", BAD PARITY", BUFFER_SIZE(pbuffer, t));
else
if (mb(22) == 2)
- strcpy(t, ", BAD EPH HEALTH");
+ strncpy(t, ", BAD EPH HEALTH", BUFFER_SIZE(pbuffer, t));
}
t += strlen(t);
if (mb(23))
- strcpy(t, ", collecting data");
+ strncpy(t, ", collecting data", BUFFER_SIZE(pbuffer, t));
}
}
break;
default:
- strcpy(t, "<UNDECODED>");
+ strncpy(t, "<UNDECODED>", BUFFER_SIZE(pbuffer, t));
break;
}
- strcat(t,"\"");
+ t += strlen(t);
+
+ strncpy(t,"\"", BUFFER_SIZE(pbuffer, t));
set_var(&parse->kv, pbuffer, sizeof(pbuffer), var_flag);
}
}
@@ -5240,6 +5744,161 @@ int refclock_parse_bs;
* History:
*
* refclock_parse.c,v
+ * Revision 4.80 2007/08/11 12:06:29 kardel
+ * update comments wrt/ to PPS
+ *
+ * Revision 4.79 2007/08/11 11:52:23 kardel
+ * - terminate io bindings before io_closeclock() will close our file descriptor
+ *
+ * Revision 4.78 2006/12/22 20:08:27 kardel
+ * Bug 746 (RFE): add configuration for Expert mouseCLOCK USB v2.0 as mode 19
+ *
+ * Revision 4.77 2006/08/05 07:44:49 kardel
+ * support optionally separate PPS devices via /dev/refclockpps-{0..3}
+ *
+ * Revision 4.76 2006/06/22 18:40:47 kardel
+ * clean up signedness (gcc 4)
+ *
+ * Revision 4.75 2006/06/22 16:58:10 kardel
+ * Bug #632: call parse_ppsapi() in parse_ctl() when updating
+ * the PPS offset. Fix sign of offset passed to kernel.
+ *
+ * Revision 4.74 2006/06/18 21:18:37 kardel
+ * NetBSD Coverity CID 3796: possible NULL deref
+ *
+ * Revision 4.73 2006/05/26 14:23:46 kardel
+ * cleanup of copyright info
+ *
+ * Revision 4.72 2006/05/26 14:19:43 kardel
+ * cleanup of ioctl cruft
+ *
+ * Revision 4.71 2006/05/26 14:15:57 kardel
+ * delay adding refclock to async refclock io after all initializations
+ *
+ * Revision 4.70 2006/05/25 18:20:50 kardel
+ * bug #619
+ * terminate parse io engine after de-registering
+ * from refclock io engine
+ *
+ * Revision 4.69 2006/05/25 17:28:02 kardel
+ * complete refclock io structure initialization *before* inserting it into the
+ * refclock input machine (avoids null pointer deref) (bug #619)
+ *
+ * Revision 4.68 2006/05/01 17:02:51 kardel
+ * copy receiver method also for newlwy created receive buffers
+ *
+ * Revision 4.67 2006/05/01 14:37:29 kardel
+ * If an input buffer parses into more than one message do insert the
+ * parsed message in a new input buffer instead of processing it
+ * directly. This avoids deed complicated processing in signal
+ * handling.
+ *
+ * Revision 4.66 2006/03/18 00:45:30 kardel
+ * coverity fixes found in NetBSD coverity scan
+ *
+ * Revision 4.65 2006/01/26 06:08:33 kardel
+ * output errno on PPS setup failure
+ *
+ * Revision 4.64 2005/11/09 20:44:47 kardel
+ * utilize full PPS timestamp resolution from PPS API
+ *
+ * Revision 4.63 2005/10/07 22:10:25 kardel
+ * bounded buffer implementation
+ *
+ * Revision 4.62.2.2 2005/09/25 10:20:16 kardel
+ * avoid unexpected buffer overflows due to sprintf("%f") on strange floats:
+ * replace almost all str* and *printf functions be their buffer bounded
+ * counterparts
+ *
+ * Revision 4.62.2.1 2005/08/27 16:19:27 kardel
+ * limit re-set rate of trimble clocks
+ *
+ * Revision 4.62 2005/08/06 17:40:00 kardel
+ * cleanup size handling wrt/ to buffer boundaries
+ *
+ * Revision 4.61 2005/07/27 21:16:19 kardel
+ * fix a long (> 11 years) misconfiguration wrt/ Meinberg cflag factory
+ * default setup. CSTOPB was missing for the 7E2 default data format of
+ * the DCF77 clocks.
+ *
+ * Revision 4.60 2005/07/17 21:14:44 kardel
+ * change contents of version string to include the RCS/CVS Id
+ *
+ * Revision 4.59 2005/07/06 06:56:38 kardel
+ * syntax error
+ *
+ * Revision 4.58 2005/07/04 13:10:40 kardel
+ * fix bug 455: tripping over NULL pointer on cleanup
+ * fix shadow storage logic for ppsphaseadjust and trustime wrt/ time2
+ * fix compiler warnings for some platforms wrt/ printf formatstrings and
+ * varying structure element sizes
+ * reorder assignment in binding to avoid tripping over NULL pointers
+ *
+ * Revision 4.57 2005/06/25 09:25:19 kardel
+ * sort out log output sequence
+ *
+ * Revision 4.56 2005/06/14 21:47:27 kardel
+ * collect samples only if samples are ok (sync or trusted flywheel)
+ * propagate pps phase adjustment value to kernel via PPSAPI to help HARDPPS
+ * en- and dis-able HARDPPS in correlation to receiver sync state
+ *
+ * Revision 4.55 2005/06/02 21:28:31 kardel
+ * clarify trust logic
+ *
+ * Revision 4.54 2005/06/02 17:06:49 kardel
+ * change status reporting to use fixed refclock_report()
+ *
+ * Revision 4.53 2005/06/02 16:33:31 kardel
+ * fix acceptance of clocks unsync clocks right at start
+ *
+ * Revision 4.52 2005/05/26 21:55:06 kardel
+ * cleanup status reporting
+ *
+ * Revision 4.51 2005/05/26 19:19:14 kardel
+ * implement fast refclock startup
+ *
+ * Revision 4.50 2005/04/16 20:51:35 kardel
+ * set pps_enable = 1 when binding a kernel PPS source
+ *
+ * Revision 4.49 2005/04/16 17:29:26 kardel
+ * add non polling clock type 18 for just listenning to Meinberg clocks
+ *
+ * Revision 4.48 2005/04/16 16:22:27 kardel
+ * bk sync 20050415 ntp-dev
+ *
+ * Revision 4.47 2004/11/29 10:42:48 kardel
+ * bk sync ntp-dev 20041129
+ *
+ * Revision 4.46 2004/11/29 10:26:29 kardel
+ * keep fudgetime2 in sync with trusttime/ppsphaseadjust depending in flag1
+ *
+ * Revision 4.45 2004/11/14 20:53:20 kardel
+ * clear PPS flags after using them
+ *
+ * Revision 4.44 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
+ * Revision 4.43 2001/05/26 22:53:16 kardel
+ * 20010526 reconcilation
+ *
+ * Revision 4.42 2000/05/14 15:31:51 kardel
+ * PPSAPI && RAWDCF modemline support
+ *
+ * Revision 4.41 2000/04/09 19:50:45 kardel
+ * fixed rawdcfdtr_init() -> rawdcf_init_1
+ *
+ * Revision 4.40 2000/04/09 15:27:55 kardel
+ * modem line fiddle in rawdcf_init_2
+ *
+ * Revision 4.39 2000/03/18 09:16:55 kardel
+ * PPSAPI integration
+ *
+ * Revision 4.38 2000/03/05 20:25:06 kardel
+ * support PPSAPI
+ *
+ * Revision 4.37 2000/03/05 20:11:14 kardel
+ * 4.0.99g reconcilation
+ *
* Revision 4.36 1999/11/28 17:18:20 kardel
* disabled burst mode
*
diff --git a/contrib/ntp/ntpd/refclock_pst.c b/contrib/ntp/ntpd/refclock_pst.c
index 2443b2c..776e28e 100644
--- a/contrib/ntp/ntpd/refclock_pst.c
+++ b/contrib/ntp/ntpd/refclock_pst.c
@@ -269,7 +269,8 @@ pst_receive(
*/
if (!refclock_process(pp))
refclock_report(peer, CEVNT_BADTIME);
-
+ else if (peer->disp > MAXDISTANCE)
+ refclock_receive(peer);
}
diff --git a/contrib/ntp/ntpd/refclock_ptbacts.c b/contrib/ntp/ntpd/refclock_ptbacts.c
deleted file mode 100644
index 09d7bf4..0000000
--- a/contrib/ntp/ntpd/refclock_ptbacts.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * crude hack to avoid hard links in distribution
- * and keep only one ACTS type source for different
- * ACTS refclocks
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#if defined(REFCLOCK) && defined(CLOCK_PTBACTS)
-# define KEEPPTBACTS
-# include "refclock_acts.c"
-#else /* not (REFCLOCK && CLOCK_PTBACTS) */
-int refclock_ptbacts_bs;
-#endif /* not (REFCLOCK && CLOCK_PTBACTS) */
diff --git a/contrib/ntp/ntpd/refclock_ripencc.c b/contrib/ntp/ntpd/refclock_ripencc.c
index 6337f63..d9fa204 100644
--- a/contrib/ntp/ntpd/refclock_ripencc.c
+++ b/contrib/ntp/ntpd/refclock_ripencc.c
@@ -44,13 +44,9 @@
#include "ntp_unixtime.h"
#include "ntp_io.h"
-#ifdef HAVE_TIMEPPS_H
-# include <timepps.h>
-#else /* HAVE_TIMEPPS_H */
-# ifdef HAVE_SYS_TIMEPPS_H
-# include <sys/timepps.h>
-# endif /* HAVE_SYS_TIMEPPS_H */
-#endif /* HAVE_TIMEPPS_H */
+#ifdef HAVE_PPSAPI
+# include "ppsapi_timepps.h"
+#endif
/*
* Definitions
diff --git a/contrib/ntp/ntpd/refclock_shm.c b/contrib/ntp/ntpd/refclock_shm.c
index 4ab0ede..7be263d 100644
--- a/contrib/ntp/ntpd/refclock_shm.c
+++ b/contrib/ntp/ntpd/refclock_shm.c
@@ -244,6 +244,10 @@ shm_poll(
struct timeval tvt;
struct tm *t;
int ok=1;
+ tvr.tv_sec = 0;
+ tvr.tv_usec = 0;
+ tvt.tv_sec = 0;
+ tvt.tv_usec = 0;
switch (up->mode) {
case 0: {
tvr.tv_sec=up->receiveTimeStampSec;
@@ -266,11 +270,14 @@ shm_poll(
}
up->valid=0;
if (ok) {
+ time_t help; /* XXX NetBSD has incompatible tv_sec */
+
TVTOTS(&tvr,&pp->lastrec);
pp->lastrec.l_ui += JAN_1970;
/* pp->lasttime = current_time; */
pp->polls++;
- t=gmtime (&tvt.tv_sec);
+ help = tvt.tv_sec;
+ t = gmtime (&help);
pp->day=t->tm_yday+1;
pp->hour=t->tm_hour;
pp->minute=t->tm_min;
diff --git a/contrib/ntp/ntpd/refclock_ulink.c b/contrib/ntp/ntpd/refclock_ulink.c
index 1f5e78a..d7a62fe 100644
--- a/contrib/ntp/ntpd/refclock_ulink.c
+++ b/contrib/ntp/ntpd/refclock_ulink.c
@@ -1,6 +1,5 @@
/*
* refclock_ulink - clock driver for Ultralink WWVB receiver
- *
*/
/***********************************************************************
@@ -32,11 +31,9 @@
#include "ntpd.h"
#include "ntp_io.h"
#include "ntp_refclock.h"
-#include "ntp_calendar.h"
#include "ntp_stdlib.h"
-/*
- * This driver supports ultralink Model 320,330,331,332 WWVB radios
+/* This driver supports ultralink Model 320,325,330,331,332 WWVB radios
*
* this driver was based on the refclock_wwvb.c driver
* in the ntp distribution.
@@ -62,6 +59,8 @@
* 01/02/21 s.l.smith fixed 33x quality flag
* added more debugging stuff
* updated 33x time code explanation
+ * 04/01/23 frank migge added support for 325 decoder
+ * (tested with ULM325.F)
*
* Questions, bugs, ideas send to:
* Joseph C. Lang
@@ -70,10 +69,13 @@
* Dave Strout
* dstrout@linuxfoundry.com
*
+ * Frank Migge
+ * frank.migge@oracle.com
+ *
*
* on the Ultralink model 33X decoder Dip switch 2 controls
* polled or continous timecode
- * set fudge flag1 if using polled (needed for model 320)
+ * set fudge flag1 if using polled (needed for model 320 and 325)
* dont set fudge flag1 if dip switch 2 is set on model 33x decoder
*/
@@ -87,9 +89,12 @@
#define REFID "WWVB" /* reference ID */
#define DESCRIPTION "Ultralink WWVB Receiver" /* WRU */
-#define LEN33X 32 /* timecode length Model 325 & 33X */
+#define LEN33X 32 /* timecode length Model 33X and 325 */
#define LEN320 24 /* timecode length Model 320 */
+#define SIGLCHAR33x 'S' /* signal strength identifier char 325 */
+#define SIGLCHAR325 'R' /* signal strength identifier char 33x */
+
/*
* unit control structure
*/
@@ -210,6 +215,7 @@ ulink_receive(
char syncchar; /* synchronization indicator */
char leapchar; /* leap indicator */
char modechar; /* model 320 mode flag */
+ char siglchar; /* model difference between 33x/325 */
char char_quality[2]; /* temp quality flag */
/*
@@ -247,77 +253,163 @@ ulink_receive(
* its contents. If the timecode has invalid length or is not in
* proper format, we declare bad format and exit.
*/
- syncchar = leapchar = modechar = ' ';
+ syncchar = leapchar = modechar = siglchar = ' ';
switch (pp->lencode ) {
case LEN33X:
+
/*
- * Model 33X decoder:
- * Timecode format from January 29, 2001 datasheet is:
- * <CR><LF>S9+D 00 YYYY+DDDUTCS HH:MM:SSL+5
- * S WWVB decoder sync indicator. S for in-sync(?)
- * or N for noisy signal.
- * 9+ RF signal level in S-units, 0-9 followed by
- * a space (0x20). The space turns to '+' if the
- * level is over 9.
- * D Data bit 0, 1, 2 (position mark), or
- * 3 (unknown).
- * space Space character (0x20)
- * 00 Hours since last good WWVB frame sync. Will
- * be 00-23 hrs, or '1d' to '7d'. Will be 'Lk'
- * if currently in sync.
- * space Space character (0x20)
- * YYYY Current year, 1990-2089
- * + Leap year indicator. '+' if a leap year,
- * a space (0x20) if not.
- * DDD Day of year, 001 - 366.
- * UTC Timezone (always 'UTC').
- * S Daylight savings indicator
- * S - standard time (STD) in effect
- * O - during STD to DST day 0000-2400
- * D - daylight savings time (DST) in effect
- * I - during DST to STD day 0000-2400
- * space Space character (0x20)
- * HH Hours 00-23
- * : This is the REAL in sync indicator (: = insync)
- * MM Minutes 00-59
- * : : = in sync ? = NOT in sync
- * SS Seconds 00-59
- * L Leap second flag. Changes from space (0x20)
- * to '+' or '-' during month preceding leap
- * second adjustment.
- * +5 UT1 correction (sign + digit ))
- */
-
- if (sscanf(pp->a_lastcode,
- "%*4c %2c %4d%*c%3d%*4c %2d%c%2d:%2d%c%*2c",
- char_quality, &pp->year, &pp->day,
- &pp->hour, &syncchar, &pp->minute, &pp->second,
- &leapchar) == 8) {
+ * First we check if the format is 33x or 325:
+ * <CR><LF>S9+D 00 YYYY+DDDUTCS HH:MM:SSL+5 (33x)
+ * <CR><LF>R5_1C00LYYYY+DDDUTCS HH:MM:SSL+5 (325)
+ * simply by comparing if the signal level is 'S' or 'R'
+ */
+
+ if (sscanf(pp->a_lastcode, "%c%*31c",
+ &siglchar) == 1) {
+
+ if(siglchar == SIGLCHAR325) {
+
+ /*
+ * decode for a Model 325 decoder.
+ * Timecode format from January 23, 2004 datasheet is:
+ *
+ * <CR><LF>R5_1C00LYYYY+DDDUTCS HH:MM:SSL+5
+ *
+ * R WWVB decodersignal readability R1 - R5
+ * 5 R1 is unreadable, R5 is best
+ * space a space (0x20)
+ * 1 Data bit 0, 1, M (pos mark), or ? (unknown).
+ * C Reception from either (C)olorado or (H)awaii
+ * 00 Hours since last good WWVB frame sync. Will
+ * be 00-99
+ * space Space char (0x20) or (0xa5) if locked to wwvb
+ * YYYY Current year, 2000-2099
+ * + Leap year indicator. '+' if a leap year,
+ * a space (0x20) if not.
+ * DDD Day of year, 000 - 365.
+ * UTC Timezone (always 'UTC').
+ * S Daylight savings indicator
+ * S - standard time (STD) in effect
+ * O - during STD to DST day 0000-2400
+ * D - daylight savings time (DST) in effect
+ * I - during DST to STD day 0000-2400
+ * space Space character (0x20)
+ * HH Hours 00-23
+ * : This is the REAL in sync indicator (: = insync)
+ * MM Minutes 00-59
+ * : : = in sync ? = NOT in sync
+ * SS Seconds 00-59
+ * L Leap second flag. Changes from space (0x20)
+ * to 'I' or 'D' during month preceding leap
+ * second adjustment. (I)nsert or (D)elete
+ * +5 UT1 correction (sign + digit ))
+ */
+
+ if (sscanf(pp->a_lastcode,
+ "%*2c %*2c%2c%*c%4d%*c%3d%*4c %2d%c%2d:%2d%c%*2c",
+ char_quality, &pp->year, &pp->day,
+ &pp->hour, &syncchar, &pp->minute, &pp->second,
+ &leapchar) == 8) {
+
+ if (char_quality[0] == '0') {
+ quality = 0;
+ } else if (char_quality[0] == '0') {
+ quality = (char_quality[1] & 0x0f);
+ } else {
+ quality = 99;
+ }
+
+ if (leapchar == 'I' ) leapchar = '+';
+ if (leapchar == 'D' ) leapchar = '-';
+
+ /*
+ #ifdef DEBUG
+ if (debug) {
+ printf("ulink: char_quality %c %c\n",
+ char_quality[0], char_quality[1]);
+ printf("ulink: quality %d\n", quality);
+ printf("ulink: syncchar %x\n", syncchar);
+ printf("ulink: leapchar %x\n", leapchar);
+ }
+ #endif
+ */
+
+ }
+
+ }
+ if(siglchar == SIGLCHAR33x) {
+
+ /*
+ * We got a Model 33X decoder.
+ * Timecode format from January 29, 2001 datasheet is:
+ * <CR><LF>S9+D 00 YYYY+DDDUTCS HH:MM:SSL+5
+ * S WWVB decoder sync indicator. S for in-sync(?)
+ * or N for noisy signal.
+ * 9+ RF signal level in S-units, 0-9 followed by
+ * a space (0x20). The space turns to '+' if the
+ * level is over 9.
+ * D Data bit 0, 1, 2 (position mark), or
+ * 3 (unknown).
+ * space Space character (0x20)
+ * 00 Hours since last good WWVB frame sync. Will
+ * be 00-23 hrs, or '1d' to '7d'. Will be 'Lk'
+ * if currently in sync.
+ * space Space character (0x20)
+ * YYYY Current year, 1990-2089
+ * + Leap year indicator. '+' if a leap year,
+ * a space (0x20) if not.
+ * DDD Day of year, 001 - 366.
+ * UTC Timezone (always 'UTC').
+ * S Daylight savings indicator
+ * S - standard time (STD) in effect
+ * O - during STD to DST day 0000-2400
+ * D - daylight savings time (DST) in effect
+ * I - during DST to STD day 0000-2400
+ * space Space character (0x20)
+ * HH Hours 00-23
+ * : This is the REAL in sync indicator (: = insync)
+ * MM Minutes 00-59
+ * : : = in sync ? = NOT in sync
+ * SS Seconds 00-59
+ * L Leap second flag. Changes from space (0x20)
+ * to '+' or '-' during month preceding leap
+ * second adjustment.
+ * +5 UT1 correction (sign + digit ))
+ */
+
+ if (sscanf(pp->a_lastcode,
+ "%*4c %2c %4d%*c%3d%*4c %2d%c%2d:%2d%c%*2c",
+ char_quality, &pp->year, &pp->day,
+ &pp->hour, &syncchar, &pp->minute, &pp->second,
+ &leapchar) == 8) {
- if (char_quality[0] == 'L') {
+ if (char_quality[0] == 'L') {
quality = 0;
- } else if (char_quality[0] == '0') {
+ } else if (char_quality[0] == '0') {
quality = (char_quality[1] & 0x0f);
- } else {
+ } else {
quality = 99;
- }
+ }
-/*
-#ifdef DEBUG
- if (debug) {
- printf("ulink: char_quality %c %c\n",
- char_quality[0], char_quality[1]);
- printf("ulink: quality %d\n", quality);
- printf("ulink: syncchar %x\n", syncchar);
- printf("ulink: leapchar %x\n", leapchar);
- }
-#endif
-*/
-
- break;
+ /*
+ #ifdef DEBUG
+ if (debug) {
+ printf("ulink: char_quality %c %c\n",
+ char_quality[0], char_quality[1]);
+ printf("ulink: quality %d\n", quality);
+ printf("ulink: syncchar %x\n", syncchar);
+ printf("ulink: leapchar %x\n", leapchar);
+ }
+ #endif
+ */
+
+ }
+ }
+ break;
}
-
+
case LEN320:
+
/*
* Model 320 Decoder
* The timecode format is:
@@ -345,6 +437,7 @@ ulink_receive(
* T = DST <-> STD transition indicators
*
*/
+
if (sscanf(pp->a_lastcode, "%c%1d%c%4d%3d%*c%2d:%2d:%2d.%2ld%c",
&syncchar, &quality, &modechar, &pp->year, &pp->day,
&pp->hour, &pp->minute, &pp->second,
@@ -362,7 +455,6 @@ ulink_receive(
return;
}
-
/*
* Decode quality indicator
* For the 325 & 33x series, the lower the number the "better"
@@ -455,10 +547,10 @@ ulink_receive(
}
-
/*
* ulink_poll - called by the transmit procedure
*/
+
static void
ulink_poll(
int unit,
diff --git a/contrib/ntp/ntpd/refclock_usno.c b/contrib/ntp/ntpd/refclock_usno.c
deleted file mode 100644
index 057eef9..0000000
--- a/contrib/ntp/ntpd/refclock_usno.c
+++ /dev/null
@@ -1,674 +0,0 @@
-/*
- * refclock_usno - clock driver for the Naval Observatory dialup
- * Michael Shields <shields@tembel.org> 1995/02/25
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#if defined(REFCLOCK) && defined(CLOCK_USNO)
-
-#include "ntpd.h"
-#include "ntp_io.h"
-#include "ntp_unixtime.h"
-#include "ntp_refclock.h"
-#include "ntp_stdlib.h"
-#include "ntp_control.h"
-
-#include <stdio.h>
-#include <ctype.h>
-#ifdef HAVE_SYS_IOCTL_H
-# include <sys/ioctl.h>
-#endif /* HAVE_SYS_IOCTL_H */
-
-/*
- * This driver supports the Naval Observatory dialup at +1 202 653 0351.
- * It is a hacked-up version of the ACTS driver.
- *
- * This driver does not support the `phone' configuration because that
- * is needlessly global; it would clash with the ACTS driver.
- *
- * The Naval Observatory does not support the echo-delay measurement scheme.
- *
- * However, this driver *does* support UUCP port locking, allowing the
- * line to be shared with other processes when not actually dialing
- * for time.
- */
-
-/*
- * Interface definitions
- */
-
-#define DEVICE "/dev/cua%d" /* device name and unit */
-#define LOCKFILE "/var/lock/LCK..cua%d"
-/* #define LOCKFILE "/usr/spool/uucp/LCK..cua%d" */
-
-#define PHONE "atdt 202 653 0351"
-/* #define PHONE "atdt 1 202 653 0351" */
-
-#define SPEED232 B1200 /* uart speed (1200 cowardly baud) */
-#define PRECISION (-10) /* precision assumed (about 1 ms) */
-#define REFID "USNO" /* reference ID */
-#define DESCRIPTION "Naval Observatory dialup"
-
-#define MODE_AUTO 0 /* automatic mode */
-#define MODE_BACKUP 1 /* backup mode */
-#define MODE_MANUAL 2 /* manual mode */
-
-#define MSGCNT 10 /* we need this many time messages */
-#define SMAX 80 /* max token string length */
-#define LENCODE 20 /* length of valid timecode string */
-#define USNO_MINPOLL 10 /* log2 min poll interval (1024 s) */
-#define USNO_MAXPOLL 14 /* log2 max poll interval (16384 s) */
-#define MAXOUTAGE 3600 /* max before USNO kicks in (s) */
-
-/*
- * Modem control strings. These may have to be changed for some modems.
- *
- * AT command prefix
- * B1 initiate call negotiation using Bell 212A
- * &C1 enable carrier detect
- * &D2 hang up and return to command mode on DTR transition
- * E0 modem command echo disabled
- * l1 set modem speaker volume to low level
- * M1 speaker enabled untill carrier detect
- * Q0 return result codes
- * V1 return result codes as English words
- */
-#define MODEM_SETUP "ATB1&C1&D2E0L1M1Q0V1" /* modem setup */
-#define MODEM_HANGUP "ATH" /* modem disconnect */
-
-/*
- * Timeouts
- */
-#define IDLE 60 /* idle timeout (s) */
-#define WAIT 2 /* wait timeout (s) */
-#define ANSWER 30 /* answer timeout (s) */
-#define CONNECT 10 /* connect timeout (s) */
-#define TIMECODE (MSGCNT+16) /* timecode timeout (s) */
-
-/*
- * Unit control structure
- */
-struct usnounit {
- int pollcnt; /* poll message counter */
-
- int state; /* the first one was Delaware */
- int run; /* call program run switch */
- int msgcnt; /* count of time messages received */
- long redial; /* interval to next automatic call */
- int unit; /* unit number (= port) */
-};
-
-/*
- * Function prototypes
- */
-static int usno_start P((int, struct peer *));
-static void usno_shutdown P((int, struct peer *));
-static void usno_poll P((int, struct peer *));
-static void usno_disc P((struct peer *));
-#if 0
-static void usno_timeout P((struct peer *));
-static void usno_receive P((struct recvbuf *));
-static int usno_write P((struct peer *, const char *));
-#endif /* 0 */
-
-/*
- * Transfer vector
- */
-struct refclock refclock_usno = {
- usno_start, /* start up driver */
- usno_shutdown, /* shut down driver */
- usno_poll, /* transmit poll message */
- noentry, /* not used (usno_control) */
- noentry, /* not used (usno_init) */
- noentry, /* not used (usno_buginfo) */
- NOFLAGS /* not used */
-};
-
-
-/*
- * usno_start - open the devices and initialize data for processing
- */
-static int
-usno_start(
- int unit,
- struct peer *peer
- )
-{
- register struct usnounit *up;
- struct refclockproc *pp;
-
- /*
- * Initialize miscellaneous variables
- */
- pp = peer->procptr;
- peer->precision = PRECISION;
- pp->clockdesc = DESCRIPTION;
- memcpy((char *)&pp->refid, REFID, 4);
- peer->minpoll = USNO_MINPOLL;
- peer->maxpoll = USNO_MAXPOLL;
- peer->sstclktype = CTL_SST_TS_TELEPHONE;
-
- /*
- * Allocate and initialize unit structure
- */
- if (!(up = (struct usnounit *)
- emalloc(sizeof(struct usnounit))))
- return (0);
- memset((char *)up, 0, sizeof(struct usnounit));
- up->unit = unit;
- pp->unitptr = (caddr_t)up;
-
- /*
- * Set up the driver timeout
- */
- peer->nextdate = current_time + WAIT;
- return (1);
-}
-
-
-/*
- * usno_shutdown - shut down the clock
- */
-static void
-usno_shutdown(
- int unit,
- struct peer *peer
- )
-{
- register struct usnounit *up;
- struct refclockproc *pp;
-
-#ifdef DEBUG
- if (debug)
- printf("usno: clock %s shutting down\n", ntoa(&peer->srcadr));
-#endif
- pp = peer->procptr;
- up = (struct usnounit *)pp->unitptr;
- usno_disc(peer);
- free(up);
-}
-
-
-#if 0
-/*
- * usno_receive - receive data from the serial interface
- */
-static void
-usno_receive(
- struct recvbuf *rbufp
- )
-{
- register struct usnounit *up;
- struct refclockproc *pp;
- struct peer *peer;
- char str[SMAX];
- u_long mjd; /* Modified Julian Day */
- static int day, hour, minute, second;
-
- /*
- * Initialize pointers and read the timecode and timestamp. If
- * the OK modem status code, leave it where folks can find it.
- */
- peer = (struct peer *)rbufp->recv_srcclock;
- pp = peer->procptr;
- up = (struct usnounit *)pp->unitptr;
- pp->lencode = refclock_gtlin(rbufp, pp->a_lastcode, BMAX,
- &pp->lastrec);
- if (pp->lencode == 0) {
- if (strcmp(pp->a_lastcode, "OK") == 0)
- pp->lencode = 2;
- return;
- }
-#ifdef DEBUG
- if (debug)
- printf("usno: timecode %d %s\n", pp->lencode,
- pp->a_lastcode);
-#endif
-
- switch (up->state) {
-
- case 0:
-
- /*
- * State 0. We are not expecting anything. Probably
- * modem disconnect noise. Go back to sleep.
- */
- return;
-
- case 1:
-
- /*
- * State 1. We are about to dial. Just drop it.
- */
- return;
-
- case 2:
-
- /*
- * State 2. We are waiting for the call to be answered.
- * All we care about here is CONNECT as the first token
- * in the string. If the modem signals BUSY, ERROR, NO
- * ANSWER, NO CARRIER or NO DIALTONE, we immediately
- * hang up the phone. If CONNECT doesn't happen after
- * ANSWER seconds, hang up the phone. If everything is
- * okay, start the connect timeout and slide into state
- * 3.
- */
- (void)strncpy(str, strtok(pp->a_lastcode, " "), SMAX);
- if (strcmp(str, "BUSY") == 0 || strcmp(str, "ERROR") ==
- 0 || strcmp(str, "NO") == 0) {
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE,
- "clock %s USNO modem status %s",
- ntoa(&peer->srcadr), pp->a_lastcode);
- usno_disc(peer);
- } else if (strcmp(str, "CONNECT") == 0) {
- peer->nextdate = current_time + CONNECT;
- up->msgcnt = 0;
- up->state++;
- } else {
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_WARNING,
- "clock %s USNO unknown modem status %s",
- ntoa(&peer->srcadr), pp->a_lastcode);
- }
- return;
-
- case 3:
-
- /*
- * State 3. The call has been answered and we are
- * waiting for the first message. If this doesn't
- * happen within the timecode timeout, hang up the
- * phone. We probably got a wrong number or they are
- * down.
- */
- peer->nextdate = current_time + TIMECODE;
- up->state++;
- return;
-
- case 4:
-
- /*
- * State 4. We are reading a timecode. It's an actual
- * timecode, or it's the `*' OTM.
- *
- * jjjjj nnn hhmmss UTC
- */
- if (pp->lencode == LENCODE) {
- if (sscanf(pp->a_lastcode, "%5ld %3d %2d%2d%2d UTC",
- &mjd, &day, &hour, &minute, &second) != 5) {
-#ifdef DEBUG
- if (debug)
- printf("usno: bad timecode format\n");
-#endif
- refclock_report(peer, CEVNT_BADREPLY);
- } else
- up->msgcnt++;
- return;
- } else if (pp->lencode != 1 || !up->msgcnt)
- return;
- /* else, OTM; drop out of switch */
- }
-
- pp->leap = LEAP_NOWARNING;
- pp->day = day;
- pp->hour = hour;
- pp->minute = minute;
- pp->second = second;
-
- /*
- * Colossal hack here. We process each sample in a trimmed-mean
- * filter and determine the reference clock offset and
- * dispersion. The fudge time1 value is added to each sample as
- * received.
- */
- if (!refclock_process(pp)) {
-#ifdef DEBUG
- if (debug)
- printf("usno: time rejected\n");
-#endif
- refclock_report(peer, CEVNT_BADTIME);
- return;
- } else if (up->msgcnt < MSGCNT)
- return;
-
- /*
- * We have a filtered sample offset ready for peer processing.
- * We use lastrec as both the reference time and receive time in
- * order to avoid being cute, like setting the reference time
- * later than the receive time, which may cause a paranoid
- * protocol module to chuck out the data. Finaly, we unhook the
- * timeout, arm for the next call, fold the tent and go home.
- */
- pp->lastref = pp->lastrec;
- refclock_receive(peer);
- record_clock_stats(&peer->srcadr, pp->a_lastcode);
- pp->sloppyclockflag &= ~CLK_FLAG1;
- up->pollcnt = 0;
- up->state = 0;
- usno_disc(peer);
-}
-#endif /* 0 */
-
-
-/*
- * usno_poll - called by the transmit routine
- */
-static void
-usno_poll(
- int unit,
- struct peer *peer
- )
-{
- register struct usnounit *up;
- struct refclockproc *pp;
-
- /*
- * If the driver is running, we set the enable flag (fudge
- * flag1), which causes the driver timeout routine to initiate a
- * call. If not, the enable flag can be set using
- * ntpdc. If this is the sustem peer, then follow the system
- * poll interval.
- */
- pp = peer->procptr;
- up = (struct usnounit *)pp->unitptr;
- if (up->run) {
- pp->sloppyclockflag |= CLK_FLAG1;
- if (peer == sys_peer)
- peer->hpoll = sys_poll;
- else
- peer->hpoll = peer->minpoll;
- }
-}
-
-
-#if 0
-/*
- * usno_timeout - called by the timer interrupt
- */
-static void
-usno_timeout(
- struct peer *peer
- )
-{
- register struct usnounit *up;
- struct refclockproc *pp;
- int fd;
- char device[20];
- char lockfile[128], pidbuf[8];
- int dtr = TIOCM_DTR;
-
- /*
- * If a timeout occurs in other than state 0, the call has
- * failed. If in state 0, we just see if there is other work to
- * do.
- */
- pp = peer->procptr;
- up = (struct usnounit *)pp->unitptr;
- if (up->state) {
- if (up->state != 1) {
- usno_disc(peer);
- return;
- }
- /*
- * Call, and start the answer timeout. We think it
- * strange if the OK status has not been received from
- * the modem, but plow ahead anyway.
- *
- * This code is *here* because we had to stick in a brief
- * delay to let the modem settle down after raising DTR,
- * and for the OK to be received. State machines are
- * contorted.
- */
- if (strcmp(pp->a_lastcode, "OK") != 0)
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE, "clock %s USNO no modem status",
- ntoa(&peer->srcadr));
- (void)usno_write(peer, PHONE);
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE, "clock %s USNO calling %s\n",
- ntoa(&peer->srcadr), PHONE);
- up->state = 2;
- up->pollcnt++;
- pp->polls++;
- peer->nextdate = current_time + ANSWER;
- return;
- }
- switch (peer->ttl) {
-
- /*
- * In manual mode the calling program is activated
- * by the ntpdc program using the enable flag (fudge
- * flag1), either manually or by a cron job.
- */
- case MODE_MANUAL:
- up->run = 0;
- break;
-
- /*
- * In automatic mode the calling program runs
- * continuously at intervals determined by the sys_poll
- * variable.
- */
- case MODE_AUTO:
- if (!up->run)
- pp->sloppyclockflag |= CLK_FLAG1;
- up->run = 1;
- break;
-
- /*
- * In backup mode the calling program is disabled,
- * unless no system peer has been selected for MAXOUTAGE
- * (3600 s). Once enabled, it runs until some other NTP
- * peer shows up.
- */
- case MODE_BACKUP:
- if (!up->run && sys_peer == 0) {
- if (current_time - last_time > MAXOUTAGE) {
- up->run = 1;
- peer->hpoll = peer->minpoll;
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE,
- "clock %s USNO backup started ",
- ntoa(&peer->srcadr));
- }
- } else if (up->run && sys_peer->sstclktype != CTL_SST_TS_TELEPHONE) {
- peer->hpoll = peer->minpoll;
- up->run = 0;
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE,
- "clock %s USNO backup stopped",
- ntoa(&peer->srcadr));
- }
- break;
-
- default:
- msyslog(LOG_ERR,
- "clock %s USNO invalid mode", ntoa(&peer->srcadr));
-
- }
-
- /*
- * The fudge flag1 is used as an enable/disable; if set either
- * by the code or via ntpdc, the calling program is
- * started; if reset, the phones stop ringing.
- */
- if (!(pp->sloppyclockflag & CLK_FLAG1)) {
- up->pollcnt = 0;
- peer->nextdate = current_time + IDLE;
- return;
- }
-
- /*
- * Lock the port.
- */
- (void)sprintf(lockfile, LOCKFILE, up->unit);
- fd = open(lockfile, O_WRONLY|O_CREAT|O_EXCL, 0644);
- if (fd < 0) {
- msyslog(LOG_ERR, "clock %s USNO port busy",
- ntoa(&peer->srcadr));
- return;
- }
- sprintf(pidbuf, "%d\n", (int) getpid());
- write(fd, pidbuf, strlen(pidbuf));
- close(fd);
-
- /*
- * Open serial port. Use ACTS line discipline, if available. It
- * pumps a timestamp into the data stream at every on-time
- * character '*' found. Note: the port must have modem control
- * or deep pockets for the phone bill. HP-UX 9.03 users should
- * have very deep pockets.
- */
- (void)sprintf(device, DEVICE, up->unit);
- if (!(fd = refclock_open(device, SPEED232, LDISC_ACTS))) {
- unlink(lockfile);
- return;
- }
- if (ioctl(fd, TIOCMBIC, (char *)&dtr) < 0)
- msyslog(LOG_WARNING, "usno_timeout: clock %s: couldn't clear DTR: %m",
- ntoa(&peer->srcadr));
-
- pp->io.clock_recv = usno_receive;
- pp->io.srcclock = (caddr_t)peer;
- pp->io.datalen = 0;
- pp->io.fd = fd;
- if (!io_addclock(&pp->io)) {
- (void) close(fd);
- unlink(lockfile);
- free(up);
- return;
- }
-
- /*
- * Initialize modem and kill DTR. We skedaddle if this comes
- * bum.
- */
- if (!usno_write(peer, MODEM_SETUP)) {
- msyslog(LOG_ERR, "clock %s USNO couldn't write",
- ntoa(&peer->srcadr));
- io_closeclock(&pp->io);
- unlink(lockfile);
- free(up);
- return;
- }
-
- /*
- * Initiate a call to the Observatory. If we wind up here in
- * other than state 0, a successful call could not be completed
- * within minpoll seconds.
- */
- if (up->pollcnt) {
- refclock_report(peer, CEVNT_TIMEOUT);
- NLOG(NLOG_CLOCKINFO) /* conditional if clause for conditional syslog */
- msyslog(LOG_NOTICE,
- "clock %s USNO calling program terminated",
- ntoa(&peer->srcadr));
- pp->sloppyclockflag &= ~CLK_FLAG1;
- up->pollcnt = 0;
-#ifdef DEBUG
- if (debug)
- printf("usno: calling program terminated\n");
-#endif
- usno_disc(peer);
- return;
- }
-
- /*
- * Raise DTR, and let the modem settle. Then we'll dial.
- */
- if (ioctl(pp->io.fd, TIOCMBIS, (char *)&dtr) < -1)
- msyslog(LOG_INFO, "usno_timeout: clock %s: couldn't set DTR: %m",
- ntoa(&peer->srcadr));
- up->state = 1;
- peer->nextdate = current_time + WAIT;
-}
-#endif /* 0 */
-
-
-/*
- * usno_disc - disconnect the call and wait for the ruckus to cool
- */
-static void
-usno_disc(
- struct peer *peer
- )
-{
- register struct usnounit *up;
- struct refclockproc *pp;
- int dtr = TIOCM_DTR;
- char lockfile[128];
-
- /*
- * We should never get here other than in state 0, unless a call
- * has timed out. We drop DTR, which will reliably get the modem
- * off the air, even while the modem is hammering away full tilt.
- */
- pp = peer->procptr;
- up = (struct usnounit *)pp->unitptr;
-
- if (ioctl(pp->io.fd, TIOCMBIC, (char *)&dtr) < 0)
- msyslog(LOG_INFO, "usno_disc: clock %s: couldn't clear DTR: %m",
- ntoa(&peer->srcadr));
-
- if (up->state > 0) {
- up->state = 0;
- msyslog(LOG_NOTICE, "clock %s USNO call failed %d",
- ntoa(&peer->srcadr), up->state);
-#ifdef DEBUG
- if (debug)
- printf("usno: call failed %d\n", up->state);
-#endif
- }
-
- io_closeclock(&pp->io);
- sprintf(lockfile, LOCKFILE, up->unit);
- unlink(lockfile);
-
- peer->nextdate = current_time + WAIT;
-}
-
-
-#if 0
-/*
- * usno_write - write a message to the serial port
- */
-static int
-usno_write(
- struct peer *peer,
- const char *str
- )
-{
- register struct usnounit *up;
- struct refclockproc *pp;
- int len;
- int code;
- char cr = '\r';
-
- /*
- * Not much to do here, other than send the message, handle
- * debug and report faults.
- */
- pp = peer->procptr;
- up = (struct usnounit *)pp->unitptr;
- len = strlen(str);
-#ifdef DEBUG
- if (debug)
- printf("usno: state %d send %d %s\n", up->state, len,
- str);
-#endif
- code = write(pp->io.fd, str, (unsigned)len) == len;
- code |= write(pp->io.fd, &cr, 1) == 1;
- if (!code)
- refclock_report(peer, CEVNT_FAULT);
- return (code);
-}
-#endif /* 0 */
-
-#else
-int refclock_usno_bs;
-#endif /* REFCLOCK */
diff --git a/contrib/ntp/ntpd/refclock_wwv.c b/contrib/ntp/ntpd/refclock_wwv.c
index 11aae7f..b7e0d9a 100644
--- a/contrib/ntp/ntpd/refclock_wwv.c
+++ b/contrib/ntp/ntpd/refclock_wwv.c
@@ -33,11 +33,11 @@
* This driver synchronizes the computer time using data encoded in
* radio transmissions from NIST time/frequency stations WWV in Boulder,
* CO, and WWVH in Kauai, HI. Transmissions are made continuously on
- * 2.5, 5, 10, 15 and 20 MHz in AM mode. An ordinary shortwave receiver
- * can be tuned manually to one of these frequencies or, in the case of
- * ICOM receivers, the receiver can be tuned automatically using this
- * program as propagation conditions change throughout the day and
- * night.
+ * 2.5, 5, 10 and 15 MHz from WWV and WWVH, and 20 MHz from WWV. An
+ * ordinary AM shortwave receiver can be tuned manually to one of these
+ * frequencies or, in the case of ICOM receivers, the receiver can be
+ * tuned automatically using this program as propagation conditions
+ * change throughout the weasons, both day and night.
*
* The driver receives, demodulates and decodes the radio signals when
* connected to the audio codec of a workstation running Solaris, SunOS
@@ -50,7 +50,7 @@
* TI 320C25 digital signal processor described in: Mills, D.L. A
* precision radio clock for WWV transmissions. Electrical Engineering
* Report 97-8-1, University of Delaware, August 1997, 25 pp., available
- * from www.eecis.udel.edu/~mills/reports.htm. The algorithms described
+ * from www.eecis.udel.edu/~mills/reports.html. The algorithms described
* in this report have been modified somewhat to improve performance
* under weak signal conditions and to provide an automatic station
* identification feature.
@@ -59,9 +59,18 @@
* unless the mode keyword on the server configuration command specifies
* a nonzero ICOM ID select code. The C-IV trace is turned on if the
* debug level is greater than one.
+ *
+ * Fudge factors
+ *
+ * Fudge flag4 causes the dubugging output described above to be
+ * recorded in the clockstats file. Fudge flag2 selects the audio input
+ * port, where 0 is the mike port (default) and 1 is the line-in port.
+ * It does not seem useful to select the compact disc player port. Fudge
+ * flag3 enables audio monitoring of the input signal. For this purpose,
+ * the monitor gain is set to a default value.
*/
/*
- * Interface definitions
+ * General definitions. These ordinarily do not need to be changed.
*/
#define DEVICE_AUDIO "/dev/audio" /* audio device name */
#define AUDIO_BUFSIZ 320 /* audio buffer size (50 ms) */
@@ -71,52 +80,60 @@
#define MINUTE (SECOND * 60) /* minute epoch */
#define OFFSET 128 /* companded sample offset */
#define SIZE 256 /* decompanding table size */
-#define MAXSIG 6000. /* max signal level reference */
+#define MAXAMP 6000. /* max signal level reference */
#define MAXCLP 100 /* max clips above reference per s */
-#define MAXSNR 30. /* max SNR reference */
-#define DGAIN 20. /* data channel gain reference */
-#define SGAIN 10. /* sync channel gain reference */
-#define MAXFREQ 1. /* max frequency tolerance (125 PPM) */
-#define PI 3.1415926535 /* the real thing */
-#define DATSIZ (170 * MS) /* data matched filter size */
-#define SYNSIZ (800 * MS) /* minute sync matched filter size */
-#define MAXERR 30 /* max data bit errors in minute */
+#define MAXSNR 40. /* max SNR reference */
+#define MAXFREQ 1.5 /* max frequency tolerance (187 PPM) */
+#define DATCYC 170 /* data filter cycles */
+#define DATSIZ (DATCYC * MS) /* data filter size */
+#define SYNCYC 800 /* minute filter cycles */
+#define SYNSIZ (SYNCYC * MS) /* minute filter size */
+#define TCKCYC 5 /* tick filter cycles */
+#define TCKSIZ (TCKCYC * MS) /* tick filter size */
#define NCHAN 5 /* number of radio channels */
#define AUDIO_PHI 5e-6 /* dispersion growth factor */
-#ifdef IRIG_SUCKS
-#define WIGGLE 11 /* wiggle filter length */
-#endif /* IRIG_SUCKS */
+
+/*
+ * Tunable parameters. The DGAIN parameter can be changed to fit the
+ * audio response of the radio at 100 Hz. The WWV/WWVH data subcarrier
+ * is transmitted at about 20 percent percent modulation; the matched
+ * filter boosts it by a factor of 17 and the receiver response does
+ * what it does. The compromise value works for ICOM radios. If the
+ * radio is not tunable, the DCHAN parameter can be changed to fit the
+ * expected best propagation frequency: higher if further from the
+ * transmitter, lower if nearer. The compromise value works for the US
+ * right coast. The FREQ_OFFSET parameter can be used as a frequency
+ * vernier to correct codec requency if greater than MAXFREQ.
+ */
+#define DCHAN 3 /* default radio channel (15 Mhz) */
+#define DGAIN 5. /* subcarrier gain */
+#define FREQ_OFFSET 0. /* codec frequency correction (PPM) */
/*
* General purpose status bits (status)
*
- * SELV and/or SELH are set when WWV or WWVH has been heard and cleared
+ * SELV and/or SELH are set when WWV or WWVH have been heard and cleared
* on signal loss. SSYNC is set when the second sync pulse has been
* acquired and cleared by signal loss. MSYNC is set when the minute
- * sync pulse has been acquired. DSYNC is set when a digit reaches the
- * threshold and INSYNC is set when all nine digits have reached the
- * threshold. The MSYNC, DSYNC and INSYNC bits are cleared only by
- * timeout, upon which the driver starts over from scratch.
+ * sync pulse has been acquired. DSYNC is set when the units digit has
+ * has reached the threshold and INSYNC is set when all nine digits have
+ * reached the threshold. The MSYNC, DSYNC and INSYNC bits are cleared
+ * only by timeout, upon which the driver starts over from scratch.
*
- * DGATE is set if a data bit is invalid and BGATE is set if a BCD digit
- * bit is invalid. SFLAG is set when during seconds 59, 0 and 1 while
- * probing alternate frequencies. LEPDAY is set when SECWAR of the
- * timecode is set on 30 June or 31 December. LEPSEC is set during the
- * last minute of the day when LEPDAY is set. At the end of this minute
- * the driver inserts second 60 in the seconds state machine and the
- * minute sync slips a second. The SLOSS and SJITR bits are for monitor
- * only.
+ * DGATE is lit if the data bit amplitude or SNR is below thresholds and
+ * BGATE is lit if the pulse width amplitude or SNR is below thresolds.
+ * LEPSEC is set during the last minute of the leap day. At the end of
+ * this minute the driver inserts second 60 in the seconds state machine
+ * and the minute sync slips a second.
*/
#define MSYNC 0x0001 /* minute epoch sync */
#define SSYNC 0x0002 /* second epoch sync */
#define DSYNC 0x0004 /* minute units sync */
#define INSYNC 0x0008 /* clock synchronized */
#define FGATE 0x0010 /* frequency gate */
-#define DGATE 0x0020 /* data bit error */
-#define BGATE 0x0040 /* BCD digit bit error */
-#define SFLAG 0x1000 /* probe flag */
-#define LEPDAY 0x2000 /* leap second day */
-#define LEPSEC 0x4000 /* leap second minute */
+#define DGATE 0x0020 /* data pulse amplitude error */
+#define BGATE 0x0040 /* data pulse width error */
+#define LEPSEC 0x1000 /* leap minute */
/*
* Station scoreboard bits
@@ -124,9 +141,6 @@
* These are used to establish the signal quality for each of the five
* frequencies and two stations.
*/
-#define SYNCNG 0x0001 /* sync or SNR below threshold */
-#define DATANG 0x0002 /* data or SNR below threshold */
-#define ERRRNG 0x0004 /* data error */
#define SELV 0x0100 /* WWV station select */
#define SELH 0x0200 /* WWVH station select */
@@ -134,18 +148,12 @@
* Alarm status bits (alarm)
*
* These bits indicate various alarm conditions, which are decoded to
- * form the quality character included in the timecode. If not tracking
- * second sync, the SYNERR alarm is raised. The data error counter is
- * incremented for each invalid data bit. If too many data bit errors
- * are encountered in one minute, the MODERR alarm is raised. The DECERR
- * alarm is raised if a maximum likelihood digit fails to compare with
- * the current clock digit. If the probability of any miscellaneous bit
- * or any digit falls below the threshold, the SYMERR alarm is raised.
+ * form the quality character included in the timecode.
*/
-#define DECERR 1 /* BCD digit compare error */
-#define SYMERR 2 /* low bit or digit probability */
-#define MODERR 4 /* too many data bit errors */
-#define SYNERR 8 /* not synchronized to station */
+#define CMPERR 1 /* digit or misc bit compare error */
+#define LOWERR 2 /* low bit or digit amplitude or SNR */
+#define NINERR 4 /* less than nine digits in minute */
+#define SYNERR 8 /* not tracking second sync */
/*
* Watchcat timeouts (watch)
@@ -154,9 +162,9 @@
* driver starts from scratch. Suitably more refined procedures may be
* developed in future. All these are in minutes.
*/
-#define ACQSN 5 /* station acquisition timeout */
-#define DIGIT 30 /* minute unit digit timeout */
-#define HOLD 30 /* reachable timeout */
+#define ACQSN 6 /* station acquisition timeout */
+#define DATA 15 /* unit minutes timeout */
+#define SYNCH 40 /* station sync timeout */
#define PANIC (2 * 1440) /* panic timeout */
/*
@@ -165,25 +173,24 @@
* rates of the driver. The values defined here may be on the
* adventurous side in the interest of the highest sensitivity.
*/
-#define MTHR 13. /* acquisition signal gate (percent) */
-#define TTHR 50. /* tracking signal gate (percent) */
-#define ATHR 2000. /* acquisition amplitude threshold */
-#define ASNR 6. /* acquisition SNR threshold (dB) */
-#define AWND 20. /* acquisition jitter threshold (ms) */
-#define AMIN 3 /* min bit count */
-#define AMAX 6 /* max bit count */
-#define QTHR 2000 /* QSY sync threshold */
-#define QSNR 20. /* QSY sync SNR threshold (dB) */
-#define XTHR 1000. /* QSY data threshold */
-#define XSNR 10. /* QSY data SNR threshold (dB) */
-#define STHR 500 /* second sync amplitude threshold */
-#define SSNR 10. /* second sync SNR threshold */
+#define MTHR 13. /* minute sync gate (percent) */
+#define TTHR 50. /* minute sync threshold (percent) */
+#define AWND 20 /* minute sync jitter threshold (ms) */
+#define ATHR 2500. /* QRZ minute sync threshold */
+#define ASNR 20. /* QRZ minute sync SNR threshold (dB) */
+#define QTHR 2500. /* QSY minute sync threshold */
+#define QSNR 20. /* QSY minute sync SNR threshold (dB) */
+#define STHR 2500. /* second sync threshold */
+#define SSNR 15. /* second sync SNR threshold (dB) */
#define SCMP 10 /* second sync compare threshold */
-#define DTHR 1000 /* bit amplitude threshold */
+#define DTHR 1000. /* bit threshold */
#define DSNR 10. /* bit SNR threshold (dB) */
-#define BTHR 1000 /* digit amplitude threshold */
+#define AMIN 3 /* min bit count */
+#define AMAX 6 /* max bit count */
+#define BTHR 1000. /* digit threshold */
#define BSNR 3. /* digit likelihood threshold (dB) */
-#define BCMP 5 /* digit compare threshold */
+#define BCMP 3 /* digit compare threshold */
+#define MAXERR 40 /* maximum error alarm */
/*
* Tone frequency definitions. The increments are for 4.5-deg sine
@@ -195,10 +202,11 @@
#define IN1200 ((1200 * 80) / SECOND) /* 1200 Hz increment */
/*
- * Acquisition and tracking time constants. Usually powers of 2.
+ * Acquisition and tracking time constants
*/
-#define MINAVG 8 /* min time constant */
-#define MAXAVG 1024 /* max time constant */
+#define MINAVG 8 /* min averaging time */
+#define MAXAVG 1024 /* max averaging time */
+#define FCONST 3 /* frequency time constant */
#define TCONST 16 /* data bit/digit time constant */
/*
@@ -229,30 +237,29 @@
/*
* Table of sine values at 4.5-degree increments. This is used by the
- * synchronous matched filter demodulators. The integral of sine-squared
- * over one complete cycle is PI, so the table is normallized by 1 / PI.
+ * synchronous matched filter demodulators.
*/
double sintab[] = {
- 0.000000e+00, 2.497431e-02, 4.979464e-02, 7.430797e-02, /* 0-3 */
- 9.836316e-02, 1.218119e-01, 1.445097e-01, 1.663165e-01, /* 4-7 */
- 1.870979e-01, 2.067257e-01, 2.250791e-01, 2.420447e-01, /* 8-11 */
- 2.575181e-01, 2.714038e-01, 2.836162e-01, 2.940800e-01, /* 12-15 */
- 3.027307e-01, 3.095150e-01, 3.143910e-01, 3.173286e-01, /* 16-19 */
- 3.183099e-01, 3.173286e-01, 3.143910e-01, 3.095150e-01, /* 20-23 */
- 3.027307e-01, 2.940800e-01, 2.836162e-01, 2.714038e-01, /* 24-27 */
- 2.575181e-01, 2.420447e-01, 2.250791e-01, 2.067257e-01, /* 28-31 */
- 1.870979e-01, 1.663165e-01, 1.445097e-01, 1.218119e-01, /* 32-35 */
- 9.836316e-02, 7.430797e-02, 4.979464e-02, 2.497431e-02, /* 36-39 */
--0.000000e+00, -2.497431e-02, -4.979464e-02, -7.430797e-02, /* 40-43 */
--9.836316e-02, -1.218119e-01, -1.445097e-01, -1.663165e-01, /* 44-47 */
--1.870979e-01, -2.067257e-01, -2.250791e-01, -2.420447e-01, /* 48-51 */
--2.575181e-01, -2.714038e-01, -2.836162e-01, -2.940800e-01, /* 52-55 */
--3.027307e-01, -3.095150e-01, -3.143910e-01, -3.173286e-01, /* 56-59 */
--3.183099e-01, -3.173286e-01, -3.143910e-01, -3.095150e-01, /* 60-63 */
--3.027307e-01, -2.940800e-01, -2.836162e-01, -2.714038e-01, /* 64-67 */
--2.575181e-01, -2.420447e-01, -2.250791e-01, -2.067257e-01, /* 68-71 */
--1.870979e-01, -1.663165e-01, -1.445097e-01, -1.218119e-01, /* 72-75 */
--9.836316e-02, -7.430797e-02, -4.979464e-02, -2.497431e-02, /* 76-79 */
+ 0.000000e+00, 7.845910e-02, 1.564345e-01, 2.334454e-01, /* 0-3 */
+ 3.090170e-01, 3.826834e-01, 4.539905e-01, 5.224986e-01, /* 4-7 */
+ 5.877853e-01, 6.494480e-01, 7.071068e-01, 7.604060e-01, /* 8-11 */
+ 8.090170e-01, 8.526402e-01, 8.910065e-01, 9.238795e-01, /* 12-15 */
+ 9.510565e-01, 9.723699e-01, 9.876883e-01, 9.969173e-01, /* 16-19 */
+ 1.000000e+00, 9.969173e-01, 9.876883e-01, 9.723699e-01, /* 20-23 */
+ 9.510565e-01, 9.238795e-01, 8.910065e-01, 8.526402e-01, /* 24-27 */
+ 8.090170e-01, 7.604060e-01, 7.071068e-01, 6.494480e-01, /* 28-31 */
+ 5.877853e-01, 5.224986e-01, 4.539905e-01, 3.826834e-01, /* 32-35 */
+ 3.090170e-01, 2.334454e-01, 1.564345e-01, 7.845910e-02, /* 36-39 */
+-0.000000e+00, -7.845910e-02, -1.564345e-01, -2.334454e-01, /* 40-43 */
+-3.090170e-01, -3.826834e-01, -4.539905e-01, -5.224986e-01, /* 44-47 */
+-5.877853e-01, -6.494480e-01, -7.071068e-01, -7.604060e-01, /* 48-51 */
+-8.090170e-01, -8.526402e-01, -8.910065e-01, -9.238795e-01, /* 52-55 */
+-9.510565e-01, -9.723699e-01, -9.876883e-01, -9.969173e-01, /* 56-59 */
+-1.000000e+00, -9.969173e-01, -9.876883e-01, -9.723699e-01, /* 60-63 */
+-9.510565e-01, -9.238795e-01, -8.910065e-01, -8.526402e-01, /* 64-67 */
+-8.090170e-01, -7.604060e-01, -7.071068e-01, -6.494480e-01, /* 68-71 */
+-5.877853e-01, -5.224986e-01, -4.539905e-01, -3.826834e-01, /* 72-75 */
+-3.090170e-01, -2.334454e-01, -1.564345e-01, -7.845910e-02, /* 76-79 */
0.000000e+00}; /* 80 */
/*
@@ -271,18 +278,19 @@ struct progx {
*/
#define IDLE 0 /* no operation */
#define COEF 1 /* BCD bit */
-#define COEF2 2 /* BCD bit ignored */
-#define DECIM9 3 /* BCD digit 0-9 */
-#define DECIM6 4 /* BCD digit 0-6 */
-#define DECIM3 5 /* BCD digit 0-3 */
-#define DECIM2 6 /* BCD digit 0-2 */
-#define MSCBIT 7 /* miscellaneous bit */
-#define MSC20 8 /* miscellaneous bit */
-#define MSC21 9 /* QSY probe channel */
-#define MIN1 10 /* minute */
-#define MIN2 11 /* leap second */
-#define SYNC2 12 /* QSY data channel */
-#define SYNC3 13 /* QSY data channel */
+#define COEF1 2 /* BCD bit for minute unit */
+#define COEF2 3 /* BCD bit not used */
+#define DECIM9 4 /* BCD digit 0-9 */
+#define DECIM6 5 /* BCD digit 0-6 */
+#define DECIM3 6 /* BCD digit 0-3 */
+#define DECIM2 7 /* BCD digit 0-2 */
+#define MSCBIT 8 /* miscellaneous bit */
+#define MSC20 9 /* miscellaneous bit */
+#define MSC21 10 /* QSY probe channel */
+#define MIN1 11 /* latch time */
+#define MIN2 12 /* leap second */
+#define SYNC2 13 /* latch minute sync pulse */
+#define SYNC3 14 /* latch data pulse */
/*
* Offsets in decoding matrix
@@ -293,8 +301,8 @@ struct progx {
#define YR 7 /* year digits (2) */
struct progx progx[] = {
- {SYNC2, 0}, /* 0 latch sync max */
- {SYNC3, 0}, /* 1 QSY data channel */
+ {SYNC2, 0}, /* 0 latch minute sync pulse */
+ {SYNC3, 0}, /* 1 latch data pulse */
{MSCBIT, DST2}, /* 2 dst2 */
{MSCBIT, SECWAR}, /* 3 lw */
{COEF, 0}, /* 4 1 year units */
@@ -303,10 +311,10 @@ struct progx progx[] = {
{COEF, 3}, /* 7 8 */
{DECIM9, YR}, /* 8 */
{IDLE, 0}, /* 9 p1 */
- {COEF, 0}, /* 10 1 minute units */
- {COEF, 1}, /* 11 2 */
- {COEF, 2}, /* 12 4 */
- {COEF, 3}, /* 13 8 */
+ {COEF1, 0}, /* 10 1 minute units */
+ {COEF1, 1}, /* 11 2 */
+ {COEF1, 2}, /* 12 4 */
+ {COEF1, 3}, /* 13 8 */
{DECIM9, MN}, /* 14 */
{COEF, 0}, /* 15 10 minute tens */
{COEF, 1}, /* 16 20 */
@@ -352,7 +360,7 @@ struct progx progx[] = {
{MSCBIT, DUT1}, /* 56 0.1 dut */
{MSCBIT, DUT2}, /* 57 0.2 */
{MSC21, DUT4}, /* 58 0.4 QSY probe channel */
- {MIN1, 0}, /* 59 p6 latch sync min */
+ {MIN1, 0}, /* 59 p6 latch time */
{MIN2, 0} /* 60 leap second */
};
@@ -447,7 +455,6 @@ struct decvec {
int radix; /* radix (3, 4, 6, 10) */
int digit; /* current clock digit */
int mldigit; /* maximum likelihood digit */
- int phase; /* maximum likelihood digit phase */
int count; /* match count */
double digprb; /* max digit probability */
double digsnr; /* likelihood function (dB) */
@@ -455,51 +462,50 @@ struct decvec {
};
/*
- * The station structure is used to acquire the minute pulse from WWV
- * and/or WWVH. These stations are distinguished by the frequency used
- * for the second and minute sync pulses, 1000 Hz for WWV and 1200 Hz
- * for WWVH. Other than frequency, the format is the same.
+ * The station structure (sp) is used to acquire the minute pulse from
+ * WWV and/or WWVH. These stations are distinguished by the frequency
+ * used for the second and minute sync pulses, 1000 Hz for WWV and 1200
+ * Hz for WWVH. Other than frequency, the format is the same.
*/
struct sync {
double epoch; /* accumulated epoch differences */
- double maxamp; /* sync max envelope (square) */
- double noiamp; /* sync noise envelope (square) */
+ double maxeng; /* sync max energy */
+ double noieng; /* sync noise energy */
long pos; /* max amplitude position */
long lastpos; /* last max position */
long mepoch; /* minute synch epoch */
- double amp; /* sync amplitude (I, Q squares) */
- double synamp; /* sync max envelope at 800 ms */
- double synmax; /* sync envelope at 0 s */
- double synmin; /* sync envelope at 59, 1 s */
+ double amp; /* sync signal */
+ double syneng; /* sync signal max */
+ double synmax; /* sync signal max latched at 0 s */
double synsnr; /* sync signal SNR */
+ double metric; /* signal quality metric */
+ int reach; /* reachability register */
int count; /* bit counter */
- char refid[5]; /* reference identifier */
int select; /* select bits */
- int reach; /* reachability register */
+ char refid[5]; /* reference identifier */
};
/*
- * The channel structure is used to mitigate between channels.
+ * The channel structure (cp) is used to mitigate between channels.
*/
struct chan {
int gain; /* audio gain */
- double sigamp; /* data max envelope (square) */
- double noiamp; /* data noise envelope (square) */
- double datsnr; /* data signal SNR */
struct sync wwv; /* wwv station */
struct sync wwvh; /* wwvh station */
};
/*
- * WWV unit control structure
+ * WWV unit control structure (up)
*/
struct wwvunit {
l_fp timestamp; /* audio sample timestamp */
l_fp tick; /* audio sample increment */
double phase, freq; /* logical clock phase and frequency */
double monitor; /* audio monitor point */
+#ifdef ICOM
int fd_icom; /* ICOM file descriptor */
+#endif /* ICOM */
int errflg; /* error flags */
int watch; /* watchcat */
@@ -511,18 +517,11 @@ struct wwvunit {
int gain; /* codec gain */
int mongain; /* codec monitor gain */
int clipcnt; /* sample clipped count */
-#ifdef IRIG_SUCKS
- l_fp wigwag; /* wiggle accumulator */
- int wp; /* wiggle filter pointer */
- l_fp wiggle[WIGGLE]; /* wiggle filter */
- l_fp wigbot[WIGGLE]; /* wiggle bottom fisher*/
-#endif /* IRIG_SUCKS */
/*
* Variables used to establish basic system timing
*/
int avgint; /* master time constant */
- int tepoch; /* sync epoch median */
int yepoch; /* sync epoch */
int repoch; /* buffered sync epoch */
double epomax; /* second sync amplitude */
@@ -554,10 +553,8 @@ struct wwvunit {
* Variables used to estimate signal levels and bit/digit
* probabilities
*/
- double sigsig; /* data max signal */
- double sigamp; /* data max envelope (square) */
- double noiamp; /* data noise envelope (square) */
- double datsnr; /* data SNR (dB) */
+ double datsig; /* data signal max */
+ double datsnr; /* data signal SNR (dB) */
/*
* Variables used to establish status and alarm conditions
@@ -566,7 +563,6 @@ struct wwvunit {
int alarm; /* alarm flashers */
int misc; /* miscellaneous timecode bits */
int errcnt; /* data bit error counter */
- int errbit; /* data bit errors in minute */
};
/*
@@ -584,19 +580,18 @@ static void wwv_epoch P((struct peer *));
static void wwv_rf P((struct peer *, double));
static void wwv_endpoc P((struct peer *, int));
static void wwv_rsec P((struct peer *, double));
-static void wwv_qrz P((struct peer *, struct sync *,
- double, int));
+static void wwv_qrz P((struct peer *, struct sync *, int));
static void wwv_corr4 P((struct peer *, struct decvec *,
double [], double [][4]));
static void wwv_gain P((struct peer *));
-static void wwv_tsec P((struct wwvunit *));
-static double wwv_data P((struct wwvunit *, double));
+static void wwv_tsec P((struct peer *));
static int timecode P((struct wwvunit *, char *));
static double wwv_snr P((double, double));
static int carry P((struct decvec *));
-static void wwv_newchan P((struct peer *));
+static int wwv_newchan P((struct peer *));
static void wwv_newgame P((struct peer *));
static double wwv_metric P((struct sync *));
+static void wwv_clock P((struct peer *));
#ifdef ICOM
static int wwv_qsy P((struct peer *, int));
#endif /* ICOM */
@@ -648,7 +643,7 @@ wwv_start(
#ifdef DEBUG
if (debug)
audio_show();
-#endif
+#endif /* DEBUG */
/*
* Allocate and initialize unit structure
@@ -681,8 +676,8 @@ wwv_start(
* contains all the 256 values in the interest of speed.
*/
up->comp[0] = up->comp[OFFSET] = 0.;
- up->comp[1] = 1; up->comp[OFFSET + 1] = -1.;
- up->comp[2] = 3; up->comp[OFFSET + 2] = -3.;
+ up->comp[1] = 1.; up->comp[OFFSET + 1] = -1.;
+ up->comp[2] = 3.; up->comp[OFFSET + 2] = -3.;
step = 2.;
for (i = 3; i < OFFSET; i++) {
up->comp[i] = up->comp[i - 1] + step;
@@ -705,20 +700,18 @@ wwv_start(
up->decvec[DA + 2].radix = 4;
up->decvec[YR].radix = 10; /* years */
up->decvec[YR + 1].radix = 10;
- wwv_newgame(peer);
- up->schan = up->achan = 3;
+#ifdef ICOM
/*
- * Initialize autotune if available. Start out at 15 MHz. Note
- * that the ICOM select code must be less than 128, so the high
- * order bit can be used to select the line speed.
+ * Initialize autotune if available. Note that the ICOM select
+ * code must be less than 128, so the high order bit can be used
+ * to select the line speed 0 (9600 bps) or 1 (1200 bps).
*/
-#ifdef ICOM
temp = 0;
#ifdef DEBUG
if (debug > 1)
temp = P_TRACE;
-#endif
+#endif /* DEBUG */
if (peer->ttl != 0) {
if (peer->ttl & 0x80)
up->fd_icom = icom_init("/dev/icom", B1200,
@@ -726,9 +719,15 @@ wwv_start(
else
up->fd_icom = icom_init("/dev/icom", B9600,
temp);
+ if (up->fd_icom < 0) {
+ NLOG(NLOG_SYNCEVENT | NLOG_SYSEVENT)
+ msyslog(LOG_NOTICE,
+ "icom: %m");
+ up->errflg = CEVNT_FAULT;
+ }
}
if (up->fd_icom > 0) {
- if ((temp = wwv_qsy(peer, up->schan)) != 0) {
+ if (wwv_qsy(peer, DCHAN) != 0) {
NLOG(NLOG_SYNCEVENT | NLOG_SYSEVENT)
msyslog(LOG_NOTICE,
"icom: radio not found");
@@ -742,6 +741,11 @@ wwv_start(
}
}
#endif /* ICOM */
+
+ /*
+ * Let the games begin.
+ */
+ wwv_newgame(peer);
return (1);
}
@@ -760,9 +764,14 @@ wwv_shutdown(
pp = peer->procptr;
up = (struct wwvunit *)pp->unitptr;
+ if (up == NULL)
+ return;
+
io_closeclock(&pp->io);
+#ifdef ICOM
if (up->fd_icom > 0)
close(up->fd_icom);
+#endif /* ICOM */
free(up);
}
@@ -808,15 +817,15 @@ wwv_receive(
sample = up->comp[~*dpt++ & 0xff];
/*
- * Clip noise spikes greater than MAXSIG. If no clips,
- * increase the gain a tad; if the clips are too high,
- * decrease a tad.
+ * Clip noise spikes greater than MAXAMP (6000) and
+ * record the number of clips to be used later by the
+ * AGC.
*/
- if (sample > MAXSIG) {
- sample = MAXSIG;
+ if (sample > MAXAMP) {
+ sample = MAXAMP;
up->clipcnt++;
- } else if (sample < -MAXSIG) {
- sample = -MAXSIG;
+ } else if (sample < -MAXAMP) {
+ sample = -MAXAMP;
up->clipcnt++;
}
@@ -829,6 +838,7 @@ wwv_receive(
* 125 PPM.
*/
up->phase += up->freq / SECOND;
+ up->phase += FREQ_OFFSET / 1e6;
if (up->phase >= .5) {
up->phase -= 1.;
} else if (up->phase < -.5) {
@@ -861,8 +871,7 @@ wwv_receive(
* This routine keeps track of status. If no offset samples have been
* processed during a poll interval, a timeout event is declared. If
* errors have have occurred during the interval, they are reported as
- * well. Once the clock is set, it always appears reachable, unless
- * reset by watchdog timeout.
+ * well.
*/
static void
wwv_poll(
@@ -888,9 +897,9 @@ wwv_poll(
* wwv_rf - process signals and demodulate to baseband
*
* This routine grooms and filters decompanded raw audio samples. The
- * output signals include the 100-Hz baseband data signal in quadrature
- * form, plus the epoch index of the second sync signal and the second
- * index of the minute sync signal.
+ * output signal is the 100-Hz filtered baseband data signal in
+ * quadrature phase. The routine also determines the minute synch epoch,
+ * as well as certain signal maxima, minima and related values.
*
* There are two 1-s ramps used by this program. Both count the 8000
* logical clock samples spanning exactly one second. The epoch ramp
@@ -911,8 +920,8 @@ wwv_poll(
* matched filters for the data signal (170 ms at 100 Hz), WWV minute
* sync signal (800 ms at 1000 Hz) and WWVH minute sync signal (800 ms
* at 1200 Hz). Two additional matched filters are switched in
- * as required for the WWV second sync signal (5 ms at 1000 Hz) and
- * WWVH second sync signal (5 ms at 1200 Hz).
+ * as required for the WWV second sync signal (5 cycles at 1000 Hz) and
+ * WWVH second sync signal (6 cycles at 1200 Hz).
*/
static void
wwv_rf(
@@ -922,7 +931,7 @@ wwv_rf(
{
struct refclockproc *pp;
struct wwvunit *up;
- struct sync *sp;
+ struct sync *sp, *rp;
static double lpf[5]; /* 150-Hz lpf delay line */
double data; /* lpf output */
@@ -936,24 +945,37 @@ wwv_rf(
static double qbuf[DATSIZ]; /* data Q channel delay line */
static int jptr; /* sync channel pointer */
+ static int kptr; /* tick channel pointer */
+
+ static int csinptr; /* wwv channel phase */
static double cibuf[SYNSIZ]; /* wwv I channel delay line */
static double cqbuf[SYNSIZ]; /* wwv Q channel delay line */
static double ciamp; /* wwv I channel amplitude */
static double cqamp; /* wwv Q channel amplitude */
- static int csinptr; /* wwv channel phase */
+
+ static double csibuf[TCKSIZ]; /* wwv I tick delay line */
+ static double csqbuf[TCKSIZ]; /* wwv Q tick delay line */
+ static double csiamp; /* wwv I tick amplitude */
+ static double csqamp; /* wwv Q tick amplitude */
+
+ static int hsinptr; /* wwvh channel phase */
static double hibuf[SYNSIZ]; /* wwvh I channel delay line */
static double hqbuf[SYNSIZ]; /* wwvh Q channel delay line */
static double hiamp; /* wwvh I channel amplitude */
static double hqamp; /* wwvh Q channel amplitude */
- static int hsinptr; /* wwvh channels phase */
- static double epobuf[SECOND]; /* epoch sync comb filter */
- static double epomax; /* epoch sync amplitude buffer */
- static int epopos; /* epoch sync position buffer */
+ static double hsibuf[TCKSIZ]; /* wwvh I tick delay line */
+ static double hsqbuf[TCKSIZ]; /* wwvh Q tick delay line */
+ static double hsiamp; /* wwvh I tick amplitude */
+ static double hsqamp; /* wwvh Q tick amplitude */
+
+ static double epobuf[SECOND]; /* second sync comb filter */
+ static double epomax, nxtmax; /* second sync amplitude buffer */
+ static int epopos; /* epoch second sync position buffer */
static int iniflg; /* initialization flag */
- int epoch; /* comb filter index */
int pdelay; /* propagation delay (samples) */
+ int epoch; /* comb filter index */
double dtemp;
int i;
@@ -969,8 +991,12 @@ wwv_rf(
memset((char *)qbuf, 0, sizeof(qbuf));
memset((char *)cibuf, 0, sizeof(cibuf));
memset((char *)cqbuf, 0, sizeof(cqbuf));
+ memset((char *)csibuf, 0, sizeof(csibuf));
+ memset((char *)csqbuf, 0, sizeof(csqbuf));
memset((char *)hibuf, 0, sizeof(hibuf));
memset((char *)hqbuf, 0, sizeof(hqbuf));
+ memset((char *)hsibuf, 0, sizeof(hsibuf));
+ memset((char *)hsqbuf, 0, sizeof(hsqbuf));
memset((char *)epobuf, 0, sizeof(epobuf));
}
@@ -981,6 +1007,10 @@ wwv_rf(
* 600-Hz tones and most of the noise and voice modulation
* components.
*
+ * The subcarrier is transmitted 10 dB down from the carrier.
+ * The DGAIN parameter can be adjusted for this and to
+ * compensate for the radio audio response at 100 Hz.
+ *
* Matlab IIR 4th-order IIR elliptic, 150 Hz lowpass, 0.2 dB
* passband ripple, -50 dB stopband ripple.
*/
@@ -988,7 +1018,7 @@ wwv_rf(
data += (lpf[3] = lpf[2]) * -3.481740e+00;
data += (lpf[2] = lpf[1]) * 5.452988e+00;
data += (lpf[1] = lpf[0]) * -3.807229e+00;
- lpf[0] = isig - data;
+ lpf[0] = isig * DGAIN - data;
data = lpf[0] * 3.281435e-03
+ lpf[1] * -1.149947e-02
+ lpf[2] * 1.654858e-02
@@ -996,20 +1026,24 @@ wwv_rf(
+ lpf[4] * 3.281435e-03;
/*
- * The I and Q quadrature data signals are produced by
+ * The 100-Hz data signal is demodulated using a pair of
+ * quadrature multipliers, matched filters and a phase lock
+ * loop. The I and Q quadrature data signals are produced by
* multiplying the filtered signal by 100-Hz sine and cosine
- * signals, respectively. The data signals are demodulated by
- * 170-ms synchronous matched filters to produce the amplitude
- * and phase signals used by the decoder.
+ * signals, respectively. The signals are processed by 170-ms
+ * synchronous matched filters to produce the amplitude and
+ * phase signals used by the demodulator. The signals are scaled
+ * to produce unit energy at the maximum value.
*/
i = up->datapt;
up->datapt = (up->datapt + IN100) % 80;
- dtemp = sintab[i] * data / DATSIZ * DGAIN;
+ dtemp = sintab[i] * data / (MS / 2. * DATCYC);
up->irig -= ibuf[iptr];
ibuf[iptr] = dtemp;
up->irig += dtemp;
+
i = (i + 20) % 80;
- dtemp = sintab[i] * data / DATSIZ * DGAIN;
+ dtemp = sintab[i] * data / (MS / 2. * DATCYC);
up->qrig -= qbuf[iptr];
qbuf[iptr] = dtemp;
up->qrig += dtemp;
@@ -1044,12 +1078,19 @@ wwv_rf(
+ bpf[8] * 8.203628e-03;
/*
- * The I and Q quadrature minute sync signals are produced by
- * multiplying the filtered signal by 1000-Hz (WWV) and 1200-Hz
- * (WWVH) sine and cosine signals, respectively. The resulting
- * signals are demodulated by 800-ms synchronous matched filters
- * to synchronize the second and minute and to detect which one
- * (or both) the WWV or WWVH signal is present.
+ * The 1000/1200 sync signals are demodulated using a pair of
+ * quadrature multipliers and matched filters. However,
+ * synchronous demodulation at these frequencies is impractical,
+ * so only the signal amplitude is used. The I and Q quadrature
+ * sync signals are produced by multiplying the filtered signal
+ * by 1000-Hz (WWV) and 1200-Hz (WWVH) sine and cosine signals,
+ * respectively. The WWV and WWVH signals are processed by 800-
+ * ms synchronous matched filters and combined to produce the
+ * minute sync signal and detect which one (or both) the WWV or
+ * WWVH signal is present. The WWV and WWVH signals are also
+ * processed by 5-ms synchronous matched filters and combined to
+ * produce the second sync signal. The signals are scaled to
+ * produce unit energy at the maximum value.
*
* Note the master timing ramps, which run continuously. The
* minute counter (mphase) counts the samples in the minute,
@@ -1058,37 +1099,64 @@ wwv_rf(
*/
up->mphase = (up->mphase + 1) % MINUTE;
epoch = up->mphase % SECOND;
+
+ /*
+ * WWV
+ */
i = csinptr;
csinptr = (csinptr + IN1000) % 80;
- dtemp = sintab[i] * syncx / SYNSIZ * SGAIN;
- ciamp = ciamp - cibuf[jptr] + dtemp;
+
+ dtemp = sintab[i] * syncx / (MS / 2.);
+ ciamp -= cibuf[jptr];
cibuf[jptr] = dtemp;
+ ciamp += dtemp;
+ csiamp -= csibuf[kptr];
+ csibuf[kptr] = dtemp;
+ csiamp += dtemp;
+
i = (i + 20) % 80;
- dtemp = sintab[i] * syncx / SYNSIZ * SGAIN;
- cqamp = cqamp - cqbuf[jptr] + dtemp;
+ dtemp = sintab[i] * syncx / (MS / 2.);
+ cqamp -= cqbuf[jptr];
cqbuf[jptr] = dtemp;
- sp = &up->mitig[up->schan].wwv;
- dtemp = ciamp * ciamp + cqamp * cqamp;
- sp->amp = dtemp;
+ cqamp += dtemp;
+ csqamp -= csqbuf[kptr];
+ csqbuf[kptr] = dtemp;
+ csqamp += dtemp;
+
+ sp = &up->mitig[up->achan].wwv;
+ sp->amp = sqrt(ciamp * ciamp + cqamp * cqamp) / SYNCYC;
if (!(up->status & MSYNC))
- wwv_qrz(peer, sp, dtemp, (int)(pp->fudgetime1 *
- SECOND));
+ wwv_qrz(peer, sp, (int)(pp->fudgetime1 * SECOND));
+
+ /*
+ * WWVH
+ */
i = hsinptr;
hsinptr = (hsinptr + IN1200) % 80;
- dtemp = sintab[i] * syncx / SYNSIZ * SGAIN;
- hiamp = hiamp - hibuf[jptr] + dtemp;
+
+ dtemp = sintab[i] * syncx / (MS / 2.);
+ hiamp -= hibuf[jptr];
hibuf[jptr] = dtemp;
+ hiamp += dtemp;
+ hsiamp -= hsibuf[kptr];
+ hsibuf[kptr] = dtemp;
+ hsiamp += dtemp;
+
i = (i + 20) % 80;
- dtemp = sintab[i] * syncx / SYNSIZ * SGAIN;
- hqamp = hqamp - hqbuf[jptr] + dtemp;
+ dtemp = sintab[i] * syncx / (MS / 2.);
+ hqamp -= hqbuf[jptr];
hqbuf[jptr] = dtemp;
- sp = &up->mitig[up->schan].wwvh;
- dtemp = hiamp * hiamp + hqamp * hqamp;
- sp->amp = dtemp;
+ hqamp += dtemp;
+ hsqamp -= hsqbuf[kptr];
+ hsqbuf[kptr] = dtemp;
+ hsqamp += dtemp;
+
+ rp = &up->mitig[up->achan].wwvh;
+ rp->amp = sqrt(hiamp * hiamp + hqamp * hqamp) / SYNCYC;
if (!(up->status & MSYNC))
- wwv_qrz(peer, sp, dtemp, (int)(pp->fudgetime2 *
- SECOND));
+ wwv_qrz(peer, rp, (int)(pp->fudgetime2 * SECOND));
jptr = (jptr + 1) % SYNSIZ;
+ kptr = (kptr + 1) % TCKSIZ;
/*
* The following section is called once per minute. It does
@@ -1100,22 +1168,16 @@ wwv_rf(
/*
* If minute sync has not been acquired before
- * timeout, or if no signal is heard, the
- * program cycles to the next frequency and
- * tries again.
+ * ACQSN timeout (6 min), or if no signal is
+ * heard, the program cycles to the next
+ * frequency and tries again.
*/
- wwv_newchan(peer);
- if (!(up->status & (SELV | SELH)) || up->watch >
- ACQSN) {
- wwv_newgame(peer);
+ if (!wwv_newchan(peer))
+ up->watch = 0;
#ifdef ICOM
- if (up->fd_icom > 0) {
- up->schan = (up->schan + 1) %
- NCHAN;
- wwv_qsy(peer, up->schan);
- }
+ if (up->fd_icom > 0)
+ wwv_qsy(peer, up->dchan);
#endif /* ICOM */
- }
} else {
/*
@@ -1138,15 +1200,20 @@ wwv_rf(
* the remaining seconds until the next minute epoch, while the
* sync epoch is zero. Watch out for the first second; if
* already synchronized to the second, the buffered sync epoch
- * must be set.
+ * must be set.
+ *
+ * Note the guard interval is 200 ms; if for some reason the
+ * clock drifts more than that, it might wind up in the wrong
+ * second. If the maximum frequency error is not more than about
+ * 1 PPM, the clock can go as much as two days while still in
+ * the same second.
*/
if (up->status & MSYNC) {
wwv_epoch(peer);
- } else if ((sp = up->sptr) != NULL) {
- struct chan *cp;
-
- if (sp->count >= AMIN && epoch == sp->mepoch % SECOND) {
- up->rsec = 60 - sp->mepoch / SECOND;
+ } else if (up->sptr != NULL) {
+ sp = up->sptr;
+ if (sp->metric >= TTHR && epoch == sp->mepoch % SECOND) {
+ up->rsec = (60 - sp->mepoch / SECOND) % 60;
up->rphase = 0;
up->status |= MSYNC;
up->watch = 0;
@@ -1154,11 +1221,7 @@ wwv_rf(
up->repoch = up->yepoch = epoch;
else
up->repoch = up->yepoch;
- for (i = 0; i < NCHAN; i++) {
- cp = &up->mitig[i];
- cp->wwv.count = cp->wwv.reach = 0;
- cp->wwvh.count = cp->wwvh.reach = 0;
- }
+
}
}
@@ -1171,103 +1234,15 @@ wwv_rf(
*/
if (up->status & SELV) {
pdelay = (int)(pp->fudgetime1 * SECOND);
-
- /*
- * WWV FIR matched filter, five cycles of 1000-Hz
- * sinewave.
- */
- mf[40] = mf[39];
- mfsync = (mf[39] = mf[38]) * 4.224514e-02;
- mfsync += (mf[38] = mf[37]) * 5.974365e-02;
- mfsync += (mf[37] = mf[36]) * 4.224514e-02;
- mf[36] = mf[35];
- mfsync += (mf[35] = mf[34]) * -4.224514e-02;
- mfsync += (mf[34] = mf[33]) * -5.974365e-02;
- mfsync += (mf[33] = mf[32]) * -4.224514e-02;
- mf[32] = mf[31];
- mfsync += (mf[31] = mf[30]) * 4.224514e-02;
- mfsync += (mf[30] = mf[29]) * 5.974365e-02;
- mfsync += (mf[29] = mf[28]) * 4.224514e-02;
- mf[28] = mf[27];
- mfsync += (mf[27] = mf[26]) * -4.224514e-02;
- mfsync += (mf[26] = mf[25]) * -5.974365e-02;
- mfsync += (mf[25] = mf[24]) * -4.224514e-02;
- mf[24] = mf[23];
- mfsync += (mf[23] = mf[22]) * 4.224514e-02;
- mfsync += (mf[22] = mf[21]) * 5.974365e-02;
- mfsync += (mf[21] = mf[20]) * 4.224514e-02;
- mf[20] = mf[19];
- mfsync += (mf[19] = mf[18]) * -4.224514e-02;
- mfsync += (mf[18] = mf[17]) * -5.974365e-02;
- mfsync += (mf[17] = mf[16]) * -4.224514e-02;
- mf[16] = mf[15];
- mfsync += (mf[15] = mf[14]) * 4.224514e-02;
- mfsync += (mf[14] = mf[13]) * 5.974365e-02;
- mfsync += (mf[13] = mf[12]) * 4.224514e-02;
- mf[12] = mf[11];
- mfsync += (mf[11] = mf[10]) * -4.224514e-02;
- mfsync += (mf[10] = mf[9]) * -5.974365e-02;
- mfsync += (mf[9] = mf[8]) * -4.224514e-02;
- mf[8] = mf[7];
- mfsync += (mf[7] = mf[6]) * 4.224514e-02;
- mfsync += (mf[6] = mf[5]) * 5.974365e-02;
- mfsync += (mf[5] = mf[4]) * 4.224514e-02;
- mf[4] = mf[3];
- mfsync += (mf[3] = mf[2]) * -4.224514e-02;
- mfsync += (mf[2] = mf[1]) * -5.974365e-02;
- mfsync += (mf[1] = mf[0]) * -4.224514e-02;
- mf[0] = syncx;
+ mfsync = sqrt(csiamp * csiamp + csqamp * csqamp) /
+ TCKCYC;
} else if (up->status & SELH) {
pdelay = (int)(pp->fudgetime2 * SECOND);
-
- /*
- * WWVH FIR matched filter, six cycles of 1200-Hz
- * sinewave.
- */
- mf[40] = mf[39];
- mfsync = (mf[39] = mf[38]) * 4.833363e-02;
- mfsync += (mf[38] = mf[37]) * 5.681959e-02;
- mfsync += (mf[37] = mf[36]) * 1.846180e-02;
- mfsync += (mf[36] = mf[35]) * -3.511644e-02;
- mfsync += (mf[35] = mf[34]) * -5.974365e-02;
- mfsync += (mf[34] = mf[33]) * -3.511644e-02;
- mfsync += (mf[33] = mf[32]) * 1.846180e-02;
- mfsync += (mf[32] = mf[31]) * 5.681959e-02;
- mfsync += (mf[31] = mf[30]) * 4.833363e-02;
- mf[30] = mf[29];
- mfsync += (mf[29] = mf[28]) * -4.833363e-02;
- mfsync += (mf[28] = mf[27]) * -5.681959e-02;
- mfsync += (mf[27] = mf[26]) * -1.846180e-02;
- mfsync += (mf[26] = mf[25]) * 3.511644e-02;
- mfsync += (mf[25] = mf[24]) * 5.974365e-02;
- mfsync += (mf[24] = mf[23]) * 3.511644e-02;
- mfsync += (mf[23] = mf[22]) * -1.846180e-02;
- mfsync += (mf[22] = mf[21]) * -5.681959e-02;
- mfsync += (mf[21] = mf[20]) * -4.833363e-02;
- mf[20] = mf[19];
- mfsync += (mf[19] = mf[18]) * 4.833363e-02;
- mfsync += (mf[18] = mf[17]) * 5.681959e-02;
- mfsync += (mf[17] = mf[16]) * 1.846180e-02;
- mfsync += (mf[16] = mf[15]) * -3.511644e-02;
- mfsync += (mf[15] = mf[14]) * -5.974365e-02;
- mfsync += (mf[14] = mf[13]) * -3.511644e-02;
- mfsync += (mf[13] = mf[12]) * 1.846180e-02;
- mfsync += (mf[12] = mf[11]) * 5.681959e-02;
- mfsync += (mf[11] = mf[10]) * 4.833363e-02;
- mf[10] = mf[9];
- mfsync += (mf[9] = mf[8]) * -4.833363e-02;
- mfsync += (mf[8] = mf[7]) * -5.681959e-02;
- mfsync += (mf[7] = mf[6]) * -1.846180e-02;
- mfsync += (mf[6] = mf[5]) * 3.511644e-02;
- mfsync += (mf[5] = mf[4]) * 5.974365e-02;
- mfsync += (mf[4] = mf[3]) * 3.511644e-02;
- mfsync += (mf[3] = mf[2]) * -1.846180e-02;
- mfsync += (mf[2] = mf[1]) * -5.681959e-02;
- mfsync += (mf[1] = mf[0]) * -4.833363e-02;
- mf[0] = syncx;
+ mfsync = sqrt(hsiamp * hsiamp + hsqamp * hsqamp) /
+ TCKCYC;
} else {
- mfsync = 0;
pdelay = 0;
+ mfsync = 0;
}
/*
@@ -1276,29 +1251,27 @@ wwv_rf(
* ms for both the WWV and WWVH filters, and also for the
* propagation delay. Once each second look for second sync. If
* not in minute sync, fiddle the codec gain. Note the SNR is
- * computed from the maximum sample and the two samples 6 ms
- * before and 6 ms after it, so if we slip more than a cycle the
- * SNR should plummet.
+ * computed from the maximum sample and the envelope of the
+ * sample 6 ms before it, so if we slip more than a cycle the
+ * SNR should plummet. The signal is scaled to produce unit
+ * energy at the maximum value.
*/
dtemp = (epobuf[epoch] += (mfsync - epobuf[epoch]) /
up->avgint);
if (dtemp > epomax) {
+ int j;
+
epomax = dtemp;
epopos = epoch;
+ j = epoch - 6 * MS;
+ if (j < 0)
+ j += SECOND;
+ nxtmax = fabs(epobuf[j]);
}
if (epoch == 0) {
- int k, j;
-
up->epomax = epomax;
- k = epopos - 6 * MS;
- if (k < 0)
- k += SECOND;
- j = epopos + 6 * MS;
- if (j >= SECOND)
- i -= SECOND;
- up->eposnr = wwv_snr(epomax, max(abs(epobuf[k]),
- abs(epobuf[j])));
- epopos -= pdelay + 5 * MS;
+ up->eposnr = wwv_snr(epomax, nxtmax);
+ epopos -= pdelay + TCKCYC * MS;
if (epopos < 0)
epopos += SECOND;
wwv_endpoc(peer, epopos);
@@ -1317,146 +1290,92 @@ wwv_rf(
* This routine implements a virtual station process used to acquire
* minute sync and to mitigate among the ten frequency and station
* combinations. During minute sync acquisition the process probes each
- * frequency in turn for the minute pulse from either station, which
- * involves searching through the entire minute of samples. After
- * finding a candidate, the process searches only the seconds before and
- * after the candidate for the signal and all other seconds for the
- * noise.
+ * frequency and station in turn for the minute pulse, which
+ * involves searching through the entire 480,000-sample minute. The
+ * process finds the maximum signal and RMS noise plus signal. Then, the
+ * actual noise is determined by subtracting the energy of the matched
+ * filter.
*
* Students of radar receiver technology will discover this algorithm
- * amounts to a range gate discriminator. The discriminator requires
- * that the peak minute pulse amplitude be at least 2000 and the SNR be
- * at least 6 dB. In addition after finding a candidate, The peak second
- * pulse amplitude must be at least 2000, the SNR at least 6 dB and the
+ * amounts to a range-gate discriminator. A valid pulse must have peak
+ * amplitude at least QTHR (2500) and SNR at least QSNR (20) dB and the
* difference between the current and previous epoch must be less than
- * 7.5 ms, which corresponds to a frequency error of 125 PPM.. A compare
- * counter keeps track of the number of successive intervals which
- * satisfy these criteria.
- *
- * Note that, while the minute pulse is found by by the discriminator,
- * the actual value is determined from the second epoch. The assumption
- * is that the discriminator peak occurs about 800 ms into the second,
- * so the timing is retarted to the previous second epoch.
+ * AWND (20 ms). Note that the discriminator peak occurs about 800 ms
+ * into the second, so the timing is retarded to the previous second
+ * epoch.
*/
static void
wwv_qrz(
struct peer *peer, /* peer structure pointer */
struct sync *sp, /* sync channel structure */
- double syncx, /* bandpass filtered sync signal */
int pdelay /* propagation delay (samples) */
)
{
struct refclockproc *pp;
struct wwvunit *up;
- char tbuf[80]; /* monitor buffer */
- double snr; /* on-pulse/off-pulse ratio (dB) */
- long epoch, fpoch;
- int isgood;
+ char tbuf[80]; /* monitor buffer */
+ long epoch;
pp = peer->procptr;
up = (struct wwvunit *)pp->unitptr;
/*
- * Find the sample with peak energy, which defines the minute
- * epoch. If a sample has been found with good amplitude,
- * accumulate the noise squares for all except the second before
- * and after that position.
+ * Find the sample with peak amplitude, which defines the minute
+ * epoch. Accumulate all samples to determine the total noise
+ * energy.
*/
- isgood = up->epomax > STHR && up->eposnr > SSNR;
- if (isgood) {
- fpoch = up->mphase % SECOND - up->tepoch;
- if (fpoch < 0)
- fpoch += SECOND;
- } else {
- fpoch = pdelay + SYNSIZ;
- }
- epoch = up->mphase - fpoch;
+ epoch = up->mphase - pdelay - SYNSIZ;
if (epoch < 0)
epoch += MINUTE;
- if (syncx > sp->maxamp) {
- sp->maxamp = syncx;
+ if (sp->amp > sp->maxeng) {
+ sp->maxeng = sp->amp;
sp->pos = epoch;
}
- if (abs((epoch - sp->lastpos) % MINUTE) > SECOND)
- sp->noiamp += syncx;
+ sp->noieng += sp->amp;
/*
- * At the end of the minute, determine the epoch of the
- * sync pulse, as well as the SNR and difference between
- * the current and previous epoch, which represents the
- * intrinsic frequency error plus jitter.
+ * At the end of the minute, determine the epoch of the minute
+ * sync pulse, as well as the difference between the current and
+ * previous epoches due to the intrinsic frequency error plus
+ * jitter. When calculating the SNR, subtract the pulse energy
+ * from the total noise energy and then normalize.
*/
if (up->mphase == 0) {
- sp->synmax = sqrt(sp->maxamp);
- sp->synmin = sqrt(sp->noiamp / (MINUTE - 2 * SECOND));
+ sp->synmax = sp->maxeng;
+ sp->synsnr = wwv_snr(sp->synmax, (sp->noieng -
+ sp->synmax) / MINUTE);
+ if (sp->count == 0)
+ sp->lastpos = sp->pos;
epoch = (sp->pos - sp->lastpos) % MINUTE;
-
- /*
- * If not yet in minute sync, we have to do a little
- * dance to find a valid minute sync pulse, emphasis
- * valid.
- */
- snr = wwv_snr(sp->synmax, sp->synmin);
- isgood = isgood && sp->synmax > ATHR && snr > ASNR;
- switch (sp->count) {
-
- /*
- * In state 0 the station was not heard during the
- * previous probe. Look for the biggest blip greater
- * than the amplitude threshold in the minute and assume
- * that the minute sync pulse. We're fishing here, since
- * the range gate has not yet been determined. If found,
- * bump to state 1.
- */
- case 0:
- if (sp->synmax >= ATHR)
+ sp->reach <<= 1;
+ if (sp->reach & (1 << AMAX))
+ sp->count--;
+ if (sp->synmax > ATHR && sp->synsnr > ASNR) {
+ if (abs(epoch) < AWND * MS) {
+ sp->reach |= 1;
sp->count++;
- break;
-
- /*
- * In state 1 a candidate blip has been found and the
- * next minute has been searched for another blip. If
- * none are found acceptable, drop back to state 0 and
- * hunt some more. Otherwise, a legitimate minute pulse
- * may have been found, so bump to state 2.
- */
- case 1:
- if (!isgood) {
- sp->count = 0;
- break;
+ sp->mepoch = sp->lastpos = sp->pos;
+ } else if (sp->count == 1) {
+ sp->lastpos = sp->pos;
}
- sp->count++;
- break;
-
- /*
- * In states 2 and above, continue to groom samples as
- * before and drop back to state 0 if the groom fails.
- * If it succeeds, set the epoch and bump to the next
- * state until reaching the threshold, if ever.
- */
- default:
- if (!isgood || abs(epoch) > AWND * MS) {
- sp->count = 0;
- break;
- }
- sp->mepoch = sp->pos;
- sp->count++;
- break;
}
+ if (up->watch > ACQSN)
+ sp->metric = 0;
+ else
+ sp->metric = wwv_metric(sp);
if (pp->sloppyclockflag & CLK_FLAG4) {
sprintf(tbuf,
- "wwv8 %d %3d %s %d %5.0f %5.1f %5ld %5d %ld",
- up->port, up->gain, sp->refid, sp->count,
- sp->synmax, snr, sp->pos, up->tepoch,
- epoch);
+ "wwv8 %04x %3d %s %04x %.0f %.0f/%.1f %4ld %4ld",
+ up->status, up->gain, sp->refid,
+ sp->reach & 0xffff, sp->metric, sp->synmax,
+ sp->synsnr, sp->pos % SECOND, epoch);
record_clock_stats(&peer->srcadr, tbuf);
#ifdef DEBUG
if (debug)
printf("%s\n", tbuf);
-#endif
+#endif /* DEBUG */
}
- sp->lastpos = sp->pos;
- sp->maxamp = sp->noiamp = 0;
+ sp->maxeng = sp->noieng = 0;
}
}
@@ -1465,19 +1384,13 @@ wwv_qrz(
* wwv_endpoc - identify and acquire second sync pulse
*
* This routine is called at the end of the second sync interval. It
- * determines the second sync epoch position within the interval and
+ * determines the second sync epoch position within the second and
* disciplines the sample clock using a frequency-lock loop (FLL).
*
* Second sync is determined in the RF input routine as the maximum
* over all 8000 samples in the second comb filter. To assure accurate
* and reliable time and frequency discipline, this routine performs a
* great deal of heavy-handed heuristic data filtering and grooming.
- *
- * Note that, since the minute sync pulse is very wide (800 ms), precise
- * minute sync epoch acquisition requires at least a rough estimate of
- * the second sync pulse (5 ms). This becomes more important in choppy
- * conditions at the lower frequencies at night, since sferics and
- * cochannel crude can badly distort the minute pulse.
*/
static void
wwv_endpoc(
@@ -1488,11 +1401,15 @@ wwv_endpoc(
struct refclockproc *pp;
struct wwvunit *up;
static int epoch_mf[3]; /* epoch median filter */
+ static int tepoch; /* current second epoch */
static int xepoch; /* last second epoch */
- static int zepoch; /* last averaging interval epoch */
+ static int zepoch; /* last run epoch */
+ static int zcount; /* last run end time */
+ static int scount; /* seconds counter */
static int syncnt; /* run length counter */
static int maxrun; /* longest run length */
- static int mepoch; /* longest run epoch */
+ static int mepoch; /* longest run end epoch */
+ static int mcount; /* longest run end time */
static int avgcnt; /* averaging interval counter */
static int avginc; /* averaging ratchet */
static int iniflg; /* initialization flag */
@@ -1508,6 +1425,21 @@ wwv_endpoc(
}
/*
+ * If the signal amplitude or SNR fall below thresholds, dim the
+ * second sync lamp and wait for hotter ions. If no stations are
+ * heard, we are either in a probe cycle or the ions are really
+ * cold.
+ */
+ scount++;
+ if (up->epomax < STHR || up->eposnr < SSNR) {
+ up->status &= ~(SSYNC | FGATE);
+ avgcnt = syncnt = maxrun = 0;
+ return;
+ }
+ if (!(up->status & (SELV | SELH)))
+ return;
+
+ /*
* A three-stage median filter is used to help denoise the
* second sync pulse. The median sample becomes the candidate
* epoch.
@@ -1517,131 +1449,118 @@ wwv_endpoc(
epoch_mf[0] = epopos;
if (epoch_mf[0] > epoch_mf[1]) {
if (epoch_mf[1] > epoch_mf[2])
- up->tepoch = epoch_mf[1]; /* 0 1 2 */
+ tepoch = epoch_mf[1]; /* 0 1 2 */
else if (epoch_mf[2] > epoch_mf[0])
- up->tepoch = epoch_mf[0]; /* 2 0 1 */
+ tepoch = epoch_mf[0]; /* 2 0 1 */
else
- up->tepoch = epoch_mf[2]; /* 0 2 1 */
+ tepoch = epoch_mf[2]; /* 0 2 1 */
} else {
if (epoch_mf[1] < epoch_mf[2])
- up->tepoch = epoch_mf[1]; /* 2 1 0 */
+ tepoch = epoch_mf[1]; /* 2 1 0 */
else if (epoch_mf[2] < epoch_mf[0])
- up->tepoch = epoch_mf[0]; /* 1 0 2 */
+ tepoch = epoch_mf[0]; /* 1 0 2 */
else
- up->tepoch = epoch_mf[2]; /* 1 2 0 */
+ tepoch = epoch_mf[2]; /* 1 2 0 */
}
- /*
- * If the signal amplitude or SNR fall below thresholds or if no
- * stations are heard, dim the second sync lamp and start over.
- */
- if (!(up->status & (SELV | SELH)) || up->epomax < STHR ||
- up->eposnr < SSNR) {
- up->status &= ~(SSYNC | FGATE);
- avgcnt = syncnt = maxrun = 0;
- return;
- }
- avgcnt++;
/*
* If the epoch candidate is the same as the last one, increment
- * the compare counter. If not, save the length and epoch of the
- * current run for use later and reset the counter.
- */
- tmp2 = (up->tepoch - xepoch) % SECOND;
+ * the run counter. If not, save the length, epoch and end
+ * time of the current run for use later and reset the counter.
+ * The epoch is considered valid if the run is at least SCMP
+ * (10) s, the minute is synchronized and the interval since the
+ * last epoch is not greater than the averaging interval. Thus,
+ * after a long absence, the program will wait a full averaging
+ * interval while the comb filter charges up and noise
+ * dissapates..
+ */
+ tmp2 = (tepoch - xepoch) % SECOND;
if (tmp2 == 0) {
syncnt++;
- } else {
- if (maxrun > 0 && mepoch == xepoch) {
- maxrun += syncnt;
- } else if (syncnt > maxrun) {
- maxrun = syncnt;
- mepoch = xepoch;
+ if (syncnt > SCMP && up->status & MSYNC && (up->status &
+ FGATE || scount - zcount <= up->avgint)) {
+ up->status |= SSYNC;
+ up->yepoch = tepoch;
}
+ } else if (syncnt >= maxrun) {
+ maxrun = syncnt;
+ mcount = scount;
+ mepoch = xepoch;
syncnt = 0;
}
- if ((pp->sloppyclockflag & CLK_FLAG4) && !(up->status & (SSYNC |
- MSYNC))) {
+ if ((pp->sloppyclockflag & CLK_FLAG4) && !(up->status & MSYNC))
+ {
sprintf(tbuf,
- "wwv1 %04x %5.0f %5.1f %5d %5d %4d %4d",
- up->status, up->epomax, up->eposnr, up->tepoch,
- tmp2, avgcnt, syncnt);
+ "wwv1 %04x %3d %4d %5.0f %5.1f %5d %4d %4d %4d",
+ up->status, up->gain, tepoch, up->epomax,
+ up->eposnr, tmp2, avgcnt, syncnt,
+ maxrun);
record_clock_stats(&peer->srcadr, tbuf);
#ifdef DEBUG
if (debug)
printf("%s\n", tbuf);
#endif /* DEBUG */
}
-
- /*
- * The sample clock frequency is disciplined using a first order
- * feedback loop with time constant consistent with the Allan
- * intercept of typical computer clocks.
- *
- * The frequency update is calculated from the epoch change in
- * 125-us units divided by the averaging interval in seconds.
- * The averaging interval affects other receiver functions,
- * including the the 1000/1200-Hz comb filter and codec clock
- * loop. It also affects the 100-Hz subcarrier loop and the bit
- * and digit comparison counter thresholds.
- */
+ avgcnt++;
if (avgcnt < up->avgint) {
- xepoch = up->tepoch;
+ xepoch = tepoch;
return;
}
/*
- * During the averaging interval the longest run of identical
- * epoches is determined. If the longest run is at least 10
- * seconds, the SSYNC bit is lit and the value becomes the
- * reference epoch for the next interval. If not, the second
- * synd lamp is dark and flashers set.
- */
- if (maxrun > 0 && mepoch == xepoch) {
- maxrun += syncnt;
- } else if (syncnt > maxrun) {
+ * The sample clock frequency is disciplined using a first-order
+ * feedback loop with time constant consistent with the Allan
+ * intercept of typical computer clocks. During each averaging
+ * interval the candidate epoch at the end of the longest run is
+ * determined. If the longest run is zero, all epoches in the
+ * interval are different, so the candidate epoch is the current
+ * epoch. The frequency update is computed from the candidate
+ * epoch difference (125-us units) and time difference (seconds)
+ * between updates.
+ */
+ if (syncnt >= maxrun) {
maxrun = syncnt;
+ mcount = scount;
mepoch = xepoch;
}
- xepoch = up->tepoch;
- if (maxrun > SCMP) {
- up->status |= SSYNC;
- up->yepoch = mepoch;
- } else {
- up->status &= ~SSYNC;
+ xepoch = tepoch;
+ if (maxrun == 0) {
+ mepoch = tepoch;
+ mcount = scount;
}
/*
- * If the epoch change over the averaging interval is less than
- * 1 ms, the frequency is adjusted, but clamped at +-125 PPM. If
- * greater than 1 ms, the counter is decremented. If the epoch
- * change is less than 0.5 ms, the counter is incremented. If
- * the counter increments to +3, the averaging interval is
- * doubled and the counter set to zero; if it increments to -3,
- * the interval is halved and the counter set to zero.
+ * The master clock runs at the codec sample frequency of 8000
+ * Hz, so the intrinsic time resolution is 125 us. The frequency
+ * resolution ranges from 18 PPM at the minimum averaging
+ * interval of 8 s to 0.12 PPM at the maximum interval of 1024
+ * s. An offset update is determined at the end of the longest
+ * run in each averaging interval. The frequency adjustment is
+ * computed from the difference between offset updates and the
+ * interval between them.
*
- * Here be spooks. From careful observations, the epoch
- * sometimes makes a long run of identical samples, then takes a
- * lurch due apparently to lost interrupts or spooks. If this
- * happens, the epoch change times the maximum run length will
- * be greater than the averaging interval, so the lurch should
- * be believed but the frequency left alone. Really intricate
- * here.
- */
- if (maxrun == 0)
- mepoch = up->tepoch;
+ * The maximum frequency adjustment ranges from 187 PPM at the
+ * minimum interval to 1.5 PPM at the maximum. If the adjustment
+ * exceeds the maximum, the update is discarded and the
+ * hysteresis counter is decremented. Otherwise, the frequency
+ * is incremented by the adjustment, but clamped to the maximum
+ * 187.5 PPM. If the update is less than half the maximum, the
+ * hysteresis counter is incremented. If the counter increments
+ * to +3, the averaging interval is doubled and the counter set
+ * to zero; if it decrements to -3, the interval is halved and
+ * the counter set to zero.
+ */
dtemp = (mepoch - zepoch) % SECOND;
if (up->status & FGATE) {
if (abs(dtemp) < MAXFREQ * MINAVG) {
- if (maxrun * abs(mepoch - zepoch) <
- avgcnt) {
- up->freq += dtemp / avgcnt;
- if (up->freq > MAXFREQ)
- up->freq = MAXFREQ;
- else if (up->freq < -MAXFREQ)
- up->freq = -MAXFREQ;
- }
- if (abs(dtemp) < MAXFREQ * MINAVG / 2) {
+ up->freq += (dtemp / 2.) / ((mcount - zcount) *
+ FCONST);
+ if (up->freq > MAXFREQ)
+ up->freq = MAXFREQ;
+ else if (up->freq < -MAXFREQ)
+ up->freq = -MAXFREQ;
+ if (abs(dtemp) < MAXFREQ * MINAVG / 2.) {
if (avginc < 3) {
avginc++;
} else {
@@ -1664,17 +1583,23 @@ wwv_endpoc(
}
if (pp->sloppyclockflag & CLK_FLAG4) {
sprintf(tbuf,
- "wwv2 %04x %4.0f %4d %4d %2d %4d %4.0f %6.1f",
- up->status, up->epomax, mepoch, maxrun, avginc,
- avgcnt, dtemp, up->freq * 1e6 / SECOND);
+ "wwv2 %04x %5.0f %5.1f %5d %4d %4d %4d %4.0f %7.2f",
+ up->status, up->epomax, up->eposnr, mepoch,
+ up->avgint, maxrun, mcount - zcount, dtemp,
+ up->freq * 1e6 / SECOND);
record_clock_stats(&peer->srcadr, tbuf);
#ifdef DEBUG
if (debug)
printf("%s\n", tbuf);
#endif /* DEBUG */
}
+
+ /*
+ * This is a valid update; set up for the next interval.
+ */
up->status |= FGATE;
zepoch = mepoch;
+ zcount = mcount;
avgcnt = syncnt = maxrun = 0;
}
@@ -1682,21 +1607,21 @@ wwv_endpoc(
/*
* wwv_epoch - epoch scanner
*
- * This routine scans the receiver second epoch to determine the signal
- * amplitudes and pulse timings. Receiver synchronization is determined
- * by the minute sync pulse detected in the wwv_rf() routine and the
- * second sync pulse detected in the wwv_epoch() routine. A pulse width
- * discriminator extracts data signals from the 100-Hz subcarrier. The
- * transmitted signals are delayed by the propagation delay, receiver
- * delay and filter delay of this program. Delay corrections are
- * introduced separately for WWV and WWVH.
+ * This routine extracts data signals from the 100-Hz subcarrier. It
+ * scans the receiver second epoch to determine the signal amplitudes
+ * and pulse timings. Receiver synchronization is determined by the
+ * minute sync pulse detected in the wwv_rf() routine and the second
+ * sync pulse detected in the wwv_epoch() routine. The transmitted
+ * signals are delayed by the propagation delay, receiver delay and
+ * filter delay of this program. Delay corrections are introduced
+ * separately for WWV and WWVH.
*
* Most communications radios use a highpass filter in the audio stages,
* which can do nasty things to the subcarrier phase relative to the
* sync pulses. Therefore, the data subcarrier reference phase is
* disciplined using the hardlimited quadrature-phase signal sampled at
* the same time as the in-phase signal. The phase tracking loop uses
- * phase adjustments of plus-minus one sample (125 us).
+ * phase adjustments of plus-minus one sample (125 us).
*/
static void
wwv_epoch(
@@ -1706,53 +1631,48 @@ wwv_epoch(
struct refclockproc *pp;
struct wwvunit *up;
struct chan *cp;
- static double dpulse; /* data pulse length */
- double dtemp;
+ static double sigmin, sigzer, sigone, engmax, engmin;
pp = peer->procptr;
up = (struct wwvunit *)pp->unitptr;
/*
- * Sample the minute sync pulse envelopes at epoch 800 for both
- * the WWV and WWVH stations. This will be used later for
- * channel and station mitigation. Note that the seconds epoch
- * is set here well before the end of the second to make sure we
- * never seet the epoch backwards.
+ * Find the maximum minute sync pulse energy for both the
+ * WWV and WWVH stations. This will be used later for channel
+ * and station mitigation. Also set the seconds epoch at 800 ms
+ * well before the end of the second to make sure we never set
+ * the epoch backwards.
*/
- if (up->rphase == 800 * MS) {
+ cp = &up->mitig[up->achan];
+ if (cp->wwv.amp > cp->wwv.syneng)
+ cp->wwv.syneng = cp->wwv.amp;
+ if (cp->wwvh.amp > cp->wwvh.syneng)
+ cp->wwvh.syneng = cp->wwvh.amp;
+ if (up->rphase == 800 * MS)
up->repoch = up->yepoch;
- cp = &up->mitig[up->achan];
- cp->wwv.synamp = cp->wwv.amp;
- cp->wwvh.synamp = cp->wwvh.amp;
- }
/*
- * Sample the data subcarrier at epoch 15 ms, giving a guard
- * time of +-15 ms from the beginning of the second until the
- * pulse rises at 30 ms. The I-channel amplitude is used to
- * calculate the slice level. The envelope amplitude is used
- * during the probe seconds to determine the SNR. There is a
+ * Use the signal amplitude at epoch 15 ms as the noise floor.
+ * This gives a guard time of +-15 ms from the beginning of the
+ * second until the second pulse rises at 30 ms. There is a
* compromise here; we want to delay the sample as long as
* possible to give the radio time to change frequency and the
* AGC to stabilize, but as early as possible if the second
* epoch is not exact.
*/
- if (up->rphase == 15 * MS) {
- up->noiamp = up->irig * up->irig + up->qrig * up->qrig;
+ if (up->rphase == 15 * MS)
+ sigmin = sigzer = sigone = up->irig;
/*
- * Sample the data subcarrier at epoch 215 ms, giving a guard
- * time of +-15 ms from the earliest the pulse peak can be
- * reached to the earliest it can begin to fall. For the data
- * channel latch the I-channel amplitude for all except the
- * probe seconds and adjust the 100-Hz reference oscillator
- * phase using the Q-channel amplitude at this epoch. For the
- * probe channel latch the envelope amplitude.
+ * Latch the data signal at 200 ms. Keep this around until the
+ * end of the second. Use the signal energy as the peak to
+ * compute the SNR. Use the Q sample to adjust the 100-Hz
+ * reference oscillator phase.
*/
- } else if (up->rphase == 215 * MS) {
- up->sigsig = up->irig;
- if (up->sigsig < 0)
- up->sigsig = 0;
+ if (up->rphase == 200 * MS) {
+ sigzer = up->irig;
+ engmax = sqrt(up->irig * up->irig + up->qrig *
+ up->qrig);
up->datpha = up->qrig / up->avgint;
if (up->datpha >= 0) {
up->datapt++;
@@ -1763,20 +1683,15 @@ wwv_epoch(
if (up->datapt < 0)
up->datapt += 80;
}
- up->sigamp = up->irig * up->irig + up->qrig * up->qrig;
+ }
+
/*
- * The slice level is set half way between the peak signal and
- * noise levels. Sample the negative zero crossing after epoch
- * 200 ms and record the epoch at that time. This defines the
- * length of the data pulse, which will later be converted into
- * scaled bit probabilities.
+ * Latch the data signal at 500 ms. Keep this around until the
+ * end of the second.
*/
- } else if (up->rphase > 200 * MS) {
- dtemp = (up->sigsig + sqrt(up->noiamp)) / 2;
- if (up->irig < dtemp && dpulse == 0)
- dpulse = up->rphase;
- }
+ else if (up->rphase == 500 * MS)
+ sigone = up->irig;
/*
* At the end of the second crank the clock state machine and
@@ -1785,17 +1700,43 @@ wwv_epoch(
* seconds synch is diddling the epoch. Then, determine the true
* offset and update the median filter in the driver interface.
*
- * Sample the data subcarrier envelope at the end of the second
- * to determine the SNR for the pulse. This gives a guard time
- * of +-30 ms from the decay of the longest pulse to the rise of
- * the next pulse.
+ * Use the energy at the end of the second as the noise to
+ * compute the SNR for the data pulse. This gives a better
+ * measurement than the beginning of the second, especially when
+ * returning from the probe channel. This gives a guard time of
+ * 30 ms from the decay of the longest pulse to the rise of the
+ * next pulse.
*/
up->rphase++;
if (up->mphase % SECOND == up->repoch) {
- up->datsnr = wwv_snr(up->sigsig, sqrt(up->noiamp));
- wwv_rsec(peer, dpulse);
+ up->status &= ~(DGATE | BGATE);
+ engmin = sqrt(up->irig * up->irig + up->qrig *
+ up->qrig);
+ up->datsig = engmax;
+ up->datsnr = wwv_snr(engmax, engmin);
+
+ /*
+ * If the amplitude or SNR is below threshold, average a
+ * 0 in the the integrators; otherwise, average the
+ * bipolar signal. This is done to avoid noise polution.
+ */
+ if (engmax < DTHR || up->datsnr < DSNR) {
+ up->status |= DGATE;
+ wwv_rsec(peer, 0);
+ } else {
+ sigzer -= sigone;
+ sigone -= sigmin;
+ wwv_rsec(peer, sigone - sigzer);
+ }
+ if (up->status & (DGATE | BGATE))
+ up->errcnt++;
+ if (up->errcnt > MAXERR)
+ up->alarm |= LOWERR;
wwv_gain(peer);
- up->rphase = dpulse = 0;
+ cp = &up->mitig[up->achan];
+ cp->wwv.syneng = 0;
+ cp->wwvh.syneng = 0;
+ up->rphase = 0;
}
}
@@ -1817,7 +1758,7 @@ wwv_epoch(
static void
wwv_rsec(
struct peer *peer, /* peer structure pointer */
- double dpulse
+ double bit
)
{
static int iniflg; /* initialization flag */
@@ -1827,14 +1768,8 @@ wwv_rsec(
struct wwvunit *up;
struct chan *cp;
struct sync *sp, *rp;
- l_fp offset; /* offset in NTP seconds */
- double bit; /* bit likelihood */
- char tbuf[80]; /* monitor buffer */
- int sw, arg, nsec;
-#ifdef IRIG_SUCKS
- int i;
- l_fp ltemp;
-#endif /* IRIG_SUCKS */
+ char tbuf[80]; /* monitor buffer */
+ int sw, arg, nsec;
pp = peer->procptr;
up = (struct wwvunit *)pp->unitptr;
@@ -1852,11 +1787,16 @@ wwv_rsec(
* used, but it's easier to do them all. After that, crank the
* seconds state machine.
*/
- nsec = up->rsec + 1;
- bit = wwv_data(up, dpulse);
- bitvec[up->rsec] += (bit - bitvec[up->rsec]) / TCONST;
- sw = progx[up->rsec].sw;
- arg = progx[up->rsec].arg;
+ nsec = up->rsec;
+ up->rsec++;
+ bitvec[nsec] += (bit - bitvec[nsec]) / TCONST;
+ sw = progx[nsec].sw;
+ arg = progx[nsec].arg;
+
+ /*
+ * The minute state machine. Fly off to a particular section as
+ * directed by the transition matrix and second number.
+ */
switch (sw) {
/*
@@ -1869,123 +1809,132 @@ wwv_rsec(
* Probe channel stuff
*
* The WWV/H format contains data pulses in second 59 (position
- * identifier), second 1 (not used) and the minute sync pulse in
- * second 0. At the end of second 58, QSY to the probe channel,
- * which rotates over all WWV/H frequencies. At the end of
- * second 1 QSY back to the data channel.
+ * identifier) and second 1, but not in second 0. The minute
+ * sync pulse is contained in second 0. At the end of second 58
+ * QSY to the probe channel, which rotates in turn over all
+ * WWV/H frequencies. At the end of second 0 measure the minute
+ * sync pulse. At the end of second 1 measure the data pulse and
+ * QSY back to the data channel. Note that the actions commented
+ * here happen at the end of the second numbered as shown.
*
- * At the end of second 0 save the minute sync pulse peak value
- * previously latched at 800 ms.
+ * At the end of second 0 save the minute sync amplitude latched
+ * at 800 ms as the signal later used to calculate the SNR.
*/
case SYNC2: /* 0 */
cp = &up->mitig[up->achan];
- cp->wwv.synmax = sqrt(cp->wwv.synamp);
- cp->wwvh.synmax = sqrt(cp->wwvh.synamp);
+ cp->wwv.synmax = cp->wwv.syneng;
+ cp->wwvh.synmax = cp->wwvh.syneng;
break;
/*
- * At the end of second 1 determine the minute sync pulse
- * amplitude and SNR and set SYNCNG if these values are below
- * thresholds. Determine the data pulse amplitude and SNR and
- * set DATANG if these values are below thresholds. Set ERRRNG
- * if data pulses in second 59 and second 1 are decoded in
- * error. Shift a 1 into the reachability register if SYNCNG and
- * DATANG are both lit; otherwise shift a 0. Ignore ERRRNG for
- * the present. The number of 1 bits in the last six intervals
- * represents the channel metric used by the mitigation routine.
+ * At the end of second 1 use the minute sync amplitude latched
+ * at 800 ms as the noise to calculate the SNR. If the minute
+ * sync pulse and SNR are above thresholds and the data pulse
+ * amplitude and SNR are above thresolds, shift a 1 into the
+ * station reachability register; otherwise, shift a 0. The
+ * number of 1 bits in the last six intervals is a component of
+ * the channel metric computed by the wwv_metric() routine.
* Finally, QSY back to the data channel.
*/
case SYNC3: /* 1 */
cp = &up->mitig[up->achan];
- cp->sigamp = sqrt(up->sigamp);
- cp->noiamp = sqrt(up->noiamp);
- cp->datsnr = wwv_snr(cp->sigamp, cp->noiamp);
/*
* WWV station
*/
sp = &cp->wwv;
- sp->synmin = sqrt((sp->synmin + sp->synamp) / 2.);
- sp->synsnr = wwv_snr(sp->synmax, sp->synmin);
- sp->select &= ~(SYNCNG | DATANG | ERRRNG);
- if (sp->synmax < QTHR || sp->synsnr < QSNR)
- sp->select |= SYNCNG;
- if (cp->sigamp < XTHR || cp->datsnr < XSNR)
- sp->select |= DATANG;
- if (up->errcnt > 2)
- sp->select |= ERRRNG;
+ sp->synsnr = wwv_snr(sp->synmax, sp->amp);
sp->reach <<= 1;
if (sp->reach & (1 << AMAX))
sp->count--;
- if (!(sp->select & (SYNCNG | DATANG))) {
+ if (sp->synmax >= QTHR && sp->synsnr >= QSNR &&
+ !(up->status & (DGATE | BGATE))) {
sp->reach |= 1;
sp->count++;
}
+ sp->metric = wwv_metric(sp);
/*
* WWVH station
*/
rp = &cp->wwvh;
- rp->synmin = sqrt((rp->synmin + rp->synamp) / 2.);
- rp->synsnr = wwv_snr(rp->synmax, rp->synmin);
- rp->select &= ~(SYNCNG | DATANG | ERRRNG);
- if (rp->synmax < QTHR || rp->synsnr < QSNR)
- rp->select |= SYNCNG;
- if (cp->sigamp < XTHR || cp->datsnr < XSNR)
- rp->select |= DATANG;
- if (up->errcnt > 2)
- rp->select |= ERRRNG;
+ rp->synsnr = wwv_snr(rp->synmax, rp->amp);
rp->reach <<= 1;
if (rp->reach & (1 << AMAX))
rp->count--;
- if (!(rp->select & (SYNCNG | DATANG | ERRRNG))) {
+ if (rp->synmax >= QTHR && rp->synsnr >= QSNR &&
+ !(up->status & (DGATE | BGATE))) {
rp->reach |= 1;
rp->count++;
}
-
- /*
- * Set up for next minute.
- */
+ rp->metric = wwv_metric(rp);
if (pp->sloppyclockflag & CLK_FLAG4) {
sprintf(tbuf,
- "wwv5 %2d %04x %3d %4d %d %.0f/%.1f %s %04x %.0f %.0f/%.1f %s %04x %.0f %.0f/%.1f",
- up->port, up->status, up->gain, up->yepoch,
- up->errcnt, cp->sigamp, cp->datsnr,
+ "wwv5 %04x %3d %4d %.0f/%.1f %.0f/%.1f %s %04x %.0f %.0f/%.1f %s %04x %.0f %.0f/%.1f",
+ up->status, up->gain, up->yepoch,
+ up->epomax, up->eposnr, up->datsig,
+ up->datsnr,
sp->refid, sp->reach & 0xffff,
- wwv_metric(sp), sp->synmax, sp->synsnr,
+ sp->metric, sp->synmax, sp->synsnr,
rp->refid, rp->reach & 0xffff,
- wwv_metric(rp), rp->synmax, rp->synsnr);
+ rp->metric, rp->synmax, rp->synsnr);
record_clock_stats(&peer->srcadr, tbuf);
#ifdef DEBUG
if (debug)
printf("%s\n", tbuf);
#endif /* DEBUG */
}
+ up->errcnt = up->digcnt = up->alarm = 0;
+
+ /*
+ * We now begin the minute scan. If not yet synchronized
+ * to a station, restart if the units digit has not been
+ * found within the DATA timeout (15 m) or if not
+ * synchronized within the SYNCH timeout (40 m). After
+ * synchronizing to a station, restart if no stations
+ * are found within the PANIC timeout (2 days).
+ */
+ if (up->status & INSYNC) {
+ if (up->watch > PANIC) {
+ wwv_newgame(peer);
+ return;
+ }
+ } else {
+ if (!(up->status & DSYNC)) {
+ if (up->watch > DATA) {
+ wwv_newgame(peer);
+ return;
+ }
+ }
+ if (up->watch > SYNCH) {
+ wwv_newgame(peer);
+ return;
+ }
+ }
+ wwv_newchan(peer);
#ifdef ICOM
if (up->fd_icom > 0)
wwv_qsy(peer, up->dchan);
#endif /* ICOM */
- up->status &= ~SFLAG;
- up->errcnt = 0;
- up->alarm = 0;
- wwv_newchan(peer);
break;
/*
* Save the bit probability in the BCD data vector at the index
- * given by the argument. Note that all bits of the vector have
- * to be above the data gate threshold for the digit to be
- * considered valid. Bits not used in the digit are forced to
- * zero and not checked for errors.
- */
- case COEF: /* 4-7, 10-13, 15-17, 20-23,
- 25-26, 30-33, 35-38, 40-41,
- 51-54 */
- if (up->status & DGATE)
- up->status |= BGATE;
+ * given by the argument. Bits not used in the digit are forced
+ * to zero.
+ */
+ case COEF1: /* 4-7 */
bcddld[arg] = bit;
break;
+ case COEF: /* 10-13, 15-17, 20-23, 25-26,
+ 30-33, 35-38, 40-41, 51-54 */
+ if (up->status & DSYNC)
+ bcddld[arg] = bit;
+ else
+ bcddld[arg] = 0;
+ break;
+
case COEF2: /* 18, 27-28, 42-43 */
bcddld[arg] = 0;
break;
@@ -2015,174 +1964,129 @@ wwv_rsec(
/*
* Miscellaneous bits. If above the positive threshold, declare
* 1; if below the negative threshold, declare 0; otherwise
- * raise the SYMERR alarm. At the end of second 58, QSY to the
- * probe channel. The design is intended to preserve the bits
- * over periods of signal loss.
+ * raise the BGATE bit. The design is intended to avoid
+ * integrating noise under low SNR conditions.
*/
case MSC20: /* 55 */
wwv_corr4(peer, &up->decvec[YR + 1], bcddld, bcd9);
/* fall through */
case MSCBIT: /* 2-3, 50, 56-57 */
- if (bitvec[up->rsec] > BTHR)
+ if (bitvec[nsec] > BTHR) {
+ if (!(up->misc & arg))
+ up->alarm |= CMPERR;
up->misc |= arg;
- else if (bitvec[up->rsec] < -BTHR)
+ } else if (bitvec[nsec] < -BTHR) {
+ if (up->misc & arg)
+ up->alarm |= CMPERR;
up->misc &= ~arg;
- else
- up->alarm |= SYMERR;
+ } else {
+ up->status |= BGATE;
+ }
break;
/*
- * Save the data channel gain, then QSY to the probe channel.
+ * Save the data channel gain, then QSY to the probe channel and
+ * dim the seconds comb filters. The newchan() routine will
+ * light them back up.
*/
case MSC21: /* 58 */
- if (bitvec[up->rsec] > BTHR)
+ if (bitvec[nsec] > BTHR) {
+ if (!(up->misc & arg))
+ up->alarm |= CMPERR;
up->misc |= arg;
- else if (bitvec[up->rsec] < -BTHR)
+ } else if (bitvec[nsec] < -BTHR) {
+ if (up->misc & arg)
+ up->alarm |= CMPERR;
up->misc &= ~arg;
- else
- up->alarm |= SYMERR;
- up->mitig[up->dchan].gain = up->gain;
+ } else {
+ up->status |= BGATE;
+ }
+ up->status &= ~(SELV | SELH);
#ifdef ICOM
if (up->fd_icom > 0) {
up->schan = (up->schan + 1) % NCHAN;
wwv_qsy(peer, up->schan);
+ } else {
+ up->mitig[up->achan].gain = up->gain;
}
+#else
+ up->mitig[up->achan].gain = up->gain;
#endif /* ICOM */
- up->status |= SFLAG | SELV | SELH;
- up->errbit = up->errcnt;
- up->errcnt = 0;
break;
/*
* The endgames
*
* During second 59 the receiver and codec AGC are settling
- * down, so the data pulse is unusable. At the end of this
- * second, latch the minute sync pulse noise floor. Then do the
- * minute processing and update the system clock. If a leap
- * second sail on to the next second (60); otherwise, set up for
- * the next minute.
+ * down, so the data pulse is unusable as quality metric. If
+ * LEPSEC is set on the last minute of 30 June or 31 December,
+ * the transmitter and receiver insert an extra second (60) in
+ * the timescale and the minute sync repeats the second. Once
+ * leaps occurred at intervals of about 18 months, but the last
+ * leap before the most recent leap in 1995 was in 1998.
*/
case MIN1: /* 59 */
- cp = &up->mitig[up->achan];
- cp->wwv.synmin = cp->wwv.synamp;
- cp->wwvh.synmin = cp->wwvh.synamp;
+ if (up->status & LEPSEC)
+ break;
- /*
- * Dance the leap if necessary and the kernel has the
- * right stuff. Then, wind up the clock and initialize
- * for the following minute. If the leap dance, note the
- * kernel is armed one second before the actual leap is
- * scheduled.
- */
- if (up->status & SSYNC && up->digcnt >= 9)
- up->status |= INSYNC;
- if (up->status & LEPDAY) {
- pp->leap = LEAP_ADDSECOND;
- } else {
- pp->leap = LEAP_NOWARNING;
- wwv_tsec(up);
- nsec = up->digcnt = 0;
- }
- pp->lencode = timecode(up, pp->a_lastcode);
- record_clock_stats(&peer->srcadr, pp->a_lastcode);
-#ifdef DEBUG
- if (debug)
- printf("wwv: timecode %d %s\n", pp->lencode,
- pp->a_lastcode);
-#endif /* DEBUG */
- if (up->status & INSYNC && up->watch < HOLD)
- refclock_receive(peer);
- break;
+ /* fall through */
- /*
- * If LEPDAY is set on the last minute of 30 June or 31
- * December, the LEPSEC bit is set. At the end of the minute in
- * which LEPSEC is set the transmitter and receiver insert an
- * extra second (60) in the timescale and the minute sync skips
- * a second. We only get to test this wrinkle at intervals of
- * about 18 months; the actual mileage may vary.
- */
case MIN2: /* 60 */
- wwv_tsec(up);
- nsec = up->digcnt = 0;
+ up->status &= ~LEPSEC;
+ wwv_tsec(peer);
+ up->rsec = 0;
+ wwv_clock(peer);
break;
}
-
- /*
- * If digit sync has not been acquired before timeout or if no
- * station has been heard, game over and restart from scratch.
- */
- if (!(up->status & DSYNC) && (!(up->status & (SELV | SELH)) ||
- up->watch > DIGIT)) {
- wwv_newgame(peer);
- return;
- }
-
- /*
- * If no timestamps have been struck before timeout, game over
- * and restart from scratch.
- */
- if (up->watch > PANIC) {
- wwv_newgame(peer);
- return;
+ if ((pp->sloppyclockflag & CLK_FLAG4) && !(up->status &
+ DSYNC)) {
+ sprintf(tbuf,
+ "wwv3 %2d %04x %3d %4d %5.0f %5.1f %5.0f %5.1f %5.0f",
+ nsec, up->status, up->gain, up->yepoch, up->epomax,
+ up->eposnr, up->datsig, up->datsnr, bit);
+ record_clock_stats(&peer->srcadr, tbuf);
+#ifdef DEBUG
+ if (debug)
+ printf("%s\n", tbuf);
+#endif /* DEBUG */
}
pp->disp += AUDIO_PHI;
- up->rsec = nsec;
+}
-#ifdef IRIG_SUCKS
- /*
- * You really don't wanna know what comes down here. Leave it to
- * say Solaris 2.8 broke the nice clean audio stream, apparently
- * affected by a 5-ms sawtooth jitter. Sundown on Solaris. This
- * leaves a little twilight.
- *
- * The scheme involves differentiation, forward learning and
- * integration. The sawtooth has a period of 11 seconds. The
- * timestamp differences are integrated and subtracted from the
- * signal.
- */
- ltemp = pp->lastrec;
- L_SUB(&ltemp, &pp->lastref);
- if (ltemp.l_f < 0)
- ltemp.l_i = -1;
- else
- ltemp.l_i = 0;
- pp->lastref = pp->lastrec;
- if (!L_ISNEG(&ltemp))
- L_CLR(&up->wigwag);
- else
- L_ADD(&up->wigwag, &ltemp);
- L_SUB(&pp->lastrec, &up->wigwag);
- up->wiggle[up->wp] = ltemp;
-
- /*
- * Bottom fisher. To understand this, you have to know about
- * velocity microphones and AM transmitters. No further
- * explanation is offered, as this is truly a black art.
- */
- up->wigbot[up->wp] = pp->lastrec;
- for (i = 0; i < WIGGLE; i++) {
- if (i != up->wp)
- up->wigbot[i].l_ui++;
- L_SUB(&pp->lastrec, &up->wigbot[i]);
- if (L_ISNEG(&pp->lastrec))
- L_ADD(&pp->lastrec, &up->wigbot[i]);
- else
- pp->lastrec = up->wigbot[i];
- }
- up->wp++;
- up->wp %= WIGGLE;
-#endif /* IRIG_SUCKS */
+/*
+ * The radio clock is set if the alarm bits are all zero. After that,
+ * the time is considered valid if the second sync bit is lit. It should
+ * not be a surprise, especially if the radio is not tunable, that
+ * sometimes no stations are above the noise and the integrators
+ * discharge below the thresholds. We assume that, after a day of signal
+ * loss, the minute sync epoch will be in the same second. This requires
+ * the codec frequency be accurate within 6 PPM. Practical experience
+ * shows the frequency typically within 0.1 PPM, so after a day of
+ * signal loss, the time should be within 8.6 ms..
+ */
+static void
+wwv_clock(
+ struct peer *peer /* peer unit pointer */
+ )
+{
+ struct refclockproc *pp;
+ struct wwvunit *up;
+ l_fp offset; /* offset in NTP seconds */
- /*
- * If victory has been declared and seconds sync is lit, strike
- * a timestamp. It should not be a surprise, especially if the
- * radio is not tunable, that sometimes no stations are above
- * the noise and the reference ID set to NONE.
- */
+ pp = peer->procptr;
+ up = (struct wwvunit *)pp->unitptr;
+ if (!(up->status & SSYNC))
+ up->alarm |= SYNERR;
+ if (up->digcnt < 9)
+ up->alarm |= NINERR;
+ if (!(up->alarm))
+ up->status |= INSYNC;
if (up->status & INSYNC && up->status & SSYNC) {
+ if (up->misc & SECWAR)
+ pp->leap = LEAP_ADDSECOND;
+ else
+ pp->leap = LEAP_NOWARNING;
pp->second = up->rsec;
pp->minute = up->decvec[MN].digit + up->decvec[MN +
1].digit * 10;
@@ -2201,95 +2105,19 @@ wwv_rsec(
} else {
up->watch = 0;
pp->disp = 0;
+ pp->lastref = up->timestamp;
refclock_process_offset(pp, offset,
up->timestamp, PDELAY);
+ refclock_receive(peer);
}
}
- if ((pp->sloppyclockflag & CLK_FLAG4) && !(up->status &
- DSYNC)) {
- sprintf(tbuf,
- "wwv3 %2d %04x %5.0f %5.1f %5.0f %5.1f %5.0f",
- up->rsec, up->status, up->epomax, up->eposnr,
- up->sigsig, up->datsnr, bit);
- record_clock_stats(&peer->srcadr, tbuf);
+ pp->lencode = timecode(up, pp->a_lastcode);
+ record_clock_stats(&peer->srcadr, pp->a_lastcode);
#ifdef DEBUG
- if (debug)
- printf("%s\n", tbuf);
+ if (debug)
+ printf("wwv: timecode %d %s\n", pp->lencode,
+ pp->a_lastcode);
#endif /* DEBUG */
- }
-}
-
-
-/*
- * wwv_data - calculate bit probability
- *
- * This routine is called at the end of the receiver second to calculate
- * the probabilities that the previous second contained a zero (P0), one
- * (P1) or position indicator (P2) pulse. If not in sync or if the data
- * bit is bad, a bit error is declared and the probabilities are forced
- * to zero. Otherwise, the data gate is enabled and the probabilities
- * are calculated. Note that the data matched filter contributes half
- * the pulse width, or 85 ms.
- *
- * It's important to observe that there are three conditions to
- * determine: average to +1 (hit), average to -1 (miss) or average to
- * zero (erasure). The erasure condition results from insufficient
- * signal (noise) and has no bias toward either a hit or miss.
- */
-static double
-wwv_data(
- struct wwvunit *up, /* driver unit pointer */
- double pulse /* pulse length (sample units) */
- )
-{
- double p0, p1, p2; /* probabilities */
- double dpulse; /* pulse length in ms */
-
- p0 = p1 = p2 = 0;
- dpulse = pulse - DATSIZ / 2;
-
- /*
- * If no station is being tracked, if either the data amplitude
- * or SNR are below threshold or if the pulse length is less
- * than 170 ms, declare an erasure.
- */
- if (!(up->status & (SELV | SELH)) || up->sigsig < DTHR ||
- up->datsnr < DSNR || dpulse < DATSIZ) {
- up->status |= DGATE;
- up->errcnt++;
- if (up->errcnt > MAXERR)
- up->alarm |= MODERR;
- return (0);
- }
-
- /*
- * The probability of P0 is one below 200 ms falling to zero at
- * 500 ms. The probability of P1 is zero below 200 ms rising to
- * one at 500 ms and falling to zero at 800 ms. The probability
- * of P2 is zero below 500 ms, rising to one above 800 ms.
- */
- up->status &= ~DGATE;
- if (dpulse < (200 * MS)) {
- p0 = 1;
- } else if (dpulse < 500 * MS) {
- dpulse -= 200 * MS;
- p1 = dpulse / (300 * MS);
- p0 = 1 - p1;
- } else if (dpulse < 800 * MS) {
- dpulse -= 500 * MS;
- p2 = dpulse / (300 * MS);
- p1 = 1 - p2;
- } else {
- p2 = 1;
- }
-
- /*
- * The ouput is a metric that ranges from -1 (P0), to +1 (P1)
- * scaled for convenience. An output of zero represents an
- * erasure, either because of a data error or pulse length
- * greater than 500 ms. At the moment, we don't use P2.
- */
- return ((p1 - p0) * MAXSIG);
}
@@ -2307,35 +2135,34 @@ static void
wwv_corr4(
struct peer *peer, /* peer unit pointer */
struct decvec *vp, /* decoding table pointer */
- double data[], /* received data vector */
- double tab[][4] /* correlation vector array */
+ double data[], /* received data vector */
+ double tab[][4] /* correlation vector array */
)
{
struct refclockproc *pp;
struct wwvunit *up;
-
- double topmax, nxtmax; /* metrics */
- double acc; /* accumulator */
- char tbuf[80]; /* monitor buffer */
- int mldigit; /* max likelihood digit */
- int diff; /* decoding difference */
- int i, j;
+ double topmax, nxtmax; /* metrics */
+ double acc; /* accumulator */
+ char tbuf[80]; /* monitor buffer */
+ int mldigit; /* max likelihood digit */
+ int i, j;
pp = peer->procptr;
up = (struct wwvunit *)pp->unitptr;
/*
* Correlate digit vector with each BCD coefficient vector. If
- * any BCD digit bit is bad, consider all bits a miss.
- */
+ * any BCD digit bit is bad, consider all bits a miss. Until the
+ * minute units digit has been resolved, don't to anything else.
+ * Note the SNR is calculated as the ratio of the largest
+ * likelihood value to the next largest likelihood value.
+ */
mldigit = 0;
- topmax = nxtmax = -MAXSIG;
+ topmax = nxtmax = -MAXAMP;
for (i = 0; tab[i][0] != 0; i++) {
acc = 0;
- for (j = 0; j < 4; j++) {
- if (!(up->status & BGATE))
- acc += data[j] * tab[i][j];
- }
+ for (j = 0; j < 4; j++)
+ acc += data[j] * tab[i][j];
acc = (vp->like[i] += (acc - vp->like[i]) / TCONST);
if (acc > topmax) {
nxtmax = topmax;
@@ -2345,69 +2172,57 @@ wwv_corr4(
nxtmax = acc;
}
}
- vp->mldigit = mldigit;
vp->digprb = topmax;
vp->digsnr = wwv_snr(topmax, nxtmax);
/*
- * The maximum likelihood digit is compared with the current
- * clock digit. The difference represents the decoding phase
- * error. If the clock is not yet synchronized, the phase error
- * is corrected even of the digit probability and likelihood are
- * below thresholds. This avoids lengthy averaging times should
- * a carry mistake occur. However, the digit is not declared
- * synchronized until these values are above thresholds and the
- * last five decoded values are identical. If the clock is
- * synchronized, the phase error is not corrected unless the
- * last five digits are all above thresholds and identical. This
- * avoids mistakes when the signal is coming out of the noise
- * and the SNR is very marginal.
- */
- diff = mldigit - vp->digit;
- if (diff < 0)
- diff += vp->radix;
- if (diff != vp->phase) {
- vp->count = 0;
- vp->phase = diff;
- }
- if (vp->digsnr < BSNR) {
- vp->count = 0;
- up->alarm |= SYMERR;
- } else if (vp->digprb < BTHR) {
+ * The current maximum likelihood digit is compared to the last
+ * maximum likelihood digit. If different, the compare counter
+ * and maximum likelihood digit are reset. When the compare
+ * counter reaches the BCMP threshold (3), the digit is assumed
+ * correct. When the compare counter of all nine digits have
+ * reached threshold, the clock is assumed correct.
+ *
+ * Note that the clock display digit is set before the compare
+ * counter has reached threshold; however, the clock display is
+ * not considered correct until all nine clock digits have
+ * reached threshold. This is intended as eye candy, but avoids
+ * mistakes when the signal is low and the SNR is very marginal.
+ * once correctly set, the maximum likelihood digit is ignored
+ * on the assumption the clock will always be correct unless for
+ * some reason it drifts to a different second.
+ */
+ vp->mldigit = mldigit;
+ if (vp->digprb < BTHR || vp->digsnr < BSNR) {
vp->count = 0;
- up->alarm |= SYMERR;
- if (!(up->status & INSYNC)) {
- vp->phase = 0;
- vp->digit = mldigit;
- }
- } else if (vp->count < BCMP) {
- vp->count++;
+ up->status |= BGATE;
+ } else {
up->status |= DSYNC;
- if (!(up->status & INSYNC)) {
- vp->phase = 0;
- vp->digit = mldigit;
+ if (vp->digit != mldigit) {
+ vp->count = 0;
+ up->alarm |= CMPERR;
+ if (!(up->status & INSYNC))
+ vp->digit = mldigit;
+ } else {
+ if (vp->count < BCMP)
+ vp->count++;
+ else
+ up->digcnt++;
}
- } else {
- vp->phase = 0;
- vp->digit = mldigit;
- up->digcnt++;
}
- if (vp->digit != mldigit)
- up->alarm |= DECERR;
if ((pp->sloppyclockflag & CLK_FLAG4) && !(up->status &
INSYNC)) {
sprintf(tbuf,
- "wwv4 %2d %04x %5.0f %2d %d %d %d %d %5.0f %5.1f",
- up->rsec, up->status, up->epomax, vp->radix,
- vp->digit, vp->mldigit, vp->phase, vp->count,
- vp->digprb, vp->digsnr);
+ "wwv4 %2d %04x %3d %4d %5.0f %2d %d %d %d %5.0f %5.1f",
+ up->rsec - 1, up->status, up->gain, up->yepoch,
+ up->epomax, vp->radix, vp->digit, vp->mldigit,
+ vp->count, vp->digprb, vp->digsnr);
record_clock_stats(&peer->srcadr, tbuf);
#ifdef DEBUG
if (debug)
printf("%s\n", tbuf);
#endif /* DEBUG */
}
- up->status &= ~BGATE;
}
@@ -2420,16 +2235,24 @@ wwv_corr4(
*/
static void
wwv_tsec(
- struct wwvunit *up /* driver structure pointer */
+ struct peer *peer /* driver structure pointer */
)
{
+ struct refclockproc *pp;
+ struct wwvunit *up;
int minute, day, isleap;
int temp;
+ pp = peer->procptr;
+ up = (struct wwvunit *)pp->unitptr;
+
/*
- * Advance minute unit of the day.
+ * Advance minute unit of the day. Don't propagate carries until
+ * the unit minute digit has been found.
*/
temp = carry(&up->decvec[MN]); /* minute units */
+ if (!(up->status & DSYNC))
+ return;
/*
* Propagate carries through the day.
@@ -2444,25 +2267,24 @@ wwv_tsec(
/*
* Decode the current minute and day. Set leap day if the
* timecode leap bit is set on 30 June or 31 December. Set leap
- * minute if the last minute on leap day. This code fails in
- * 2400 AD.
+ * minute if the last minute on leap day, but only if the clock
+ * is syncrhronized. This code fails in 2400 AD.
*/
minute = up->decvec[MN].digit + up->decvec[MN + 1].digit *
10 + up->decvec[HR].digit * 60 + up->decvec[HR +
1].digit * 600;
day = up->decvec[DA].digit + up->decvec[DA + 1].digit * 10 +
up->decvec[DA + 2].digit * 100;
- isleap = (up->decvec[YR].digit & 0x3) == 0;
- if (up->misc & SECWAR && (day == (isleap ? 182 : 183) || day ==
- (isleap ? 365 : 366)) && up->status & INSYNC && up->status &
- SSYNC)
- up->status |= LEPDAY;
- else
- up->status &= ~LEPDAY;
- if (up->status & LEPDAY && minute == 1439)
- up->status |= LEPSEC;
- else
- up->status &= ~LEPSEC;
+
+ /*
+ * Set the leap bit on the last minute of the leap day.
+ */
+ isleap = up->decvec[YR].digit & 0x3;
+ if (up->misc & SECWAR && up->status & INSYNC) {
+ if ((day == (isleap ? 182 : 183) || day == (isleap ?
+ 365 : 366)) && minute == 1439)
+ up->status |= LEPSEC;
+ }
/*
* Roll the day if this the first minute and propagate carries
@@ -2470,6 +2292,7 @@ wwv_tsec(
*/
if (minute != 1440)
return;
+
minute = 0;
while (carry(&up->decvec[HR]) != 0); /* advance to minute 0 */
while (carry(&up->decvec[HR + 1]) != 0);
@@ -2486,12 +2309,13 @@ wwv_tsec(
*/
if (day != (isleap ? 365 : 366))
return;
+
day = 1;
while (carry(&up->decvec[DA]) != 1); /* advance to day 1 */
while (carry(&up->decvec[DA + 1]) != 0);
while (carry(&up->decvec[DA + 2]) != 0);
temp = carry(&up->decvec[YR]); /* carry years */
- if (temp)
+ if (temp == 0)
carry(&up->decvec[YR + 1]);
}
@@ -2512,11 +2336,10 @@ carry(
int temp;
int j;
- dp->digit++; /* advance clock digit */
- if (dp->digit == dp->radix) { /* modulo radix */
+ dp->digit++;
+ if (dp->digit == dp->radix)
dp->digit = 0;
- }
- temp = dp->like[dp->radix - 1]; /* rotate likelihood vector */
+ temp = dp->like[dp->radix - 1];
for (j = dp->radix - 1; j > 0; j--)
dp->like[j] = dp->like[j - 1];
dp->like[0] = temp;
@@ -2544,14 +2367,14 @@ wwv_snr(
* other hand, in the likelihood function the "noise" is the
* next maximum down from the peak and this could be negative.
* However, in this case the SNR is truly stupendous, so we
- * simply cap at MAXSNR dB.
+ * simply cap at MAXSNR dB (40).
*/
if (signal <= 0) {
rval = 0;
} else if (noise <= 0) {
rval = MAXSNR;
} else {
- rval = 20 * log10(signal / noise);
+ rval = 20. * log10(signal / noise);
if (rval > MAXSNR)
rval = MAXSNR;
}
@@ -2564,7 +2387,7 @@ wwv_snr(
*
* The radio actually appears to have ten channels, one channel for each
* of five frequencies and each of two stations (WWV and WWVH), although
- * if not tunable only the 15 MHz channels appear live. While the radio
+ * if not tunable only the DCHAN channel appears live. While the radio
* is tuned to the working data channel frequency and station for most
* of the minute, during seconds 59, 0 and 1 the radio is tuned to a
* probe frequency in order to search for minute sync pulse and data
@@ -2583,13 +2406,12 @@ wwv_snr(
* pulse amplitude and then to the highest frequency.
*
* The routine performs an important squelch function to keep dirty data
- * from polluting the integrators. During acquisition and until the
- * clock is synchronized, the signal metric must be at least MTR (13);
- * after that the metrict must be at least TTHR (50). If either of these
- * is not true, the station select bits are cleared so the second sync
- * is disabled and the data bit integrators averaged to a miss.
+ * from polluting the integrators. In order to consider a station valid,
+ * the metric must be at least MTHR (13); otherwise, the station select
+ * bits are cleared so the second sync is disabled and the data bit
+ * integrators averaged to a miss.
*/
-static void
+static int
wwv_newchan(
struct peer *peer /* peer structure pointer */
)
@@ -2605,44 +2427,66 @@ wwv_newchan(
/*
* Search all five station pairs looking for the channel with
- * maximum metric. If no station is found above thresholds, the
- * reference ID is set to NONE and we wait for hotter ions.
+ * maximum metric. If no station is found above thresholds, tune
+ * to WWV on 15 MHz, set the reference ID to NONE and wait for
+ * hotter ions.
*/
- j = 0;
sp = NULL;
+ j = 0;
rank = 0;
for (i = 0; i < NCHAN; i++) {
rp = &up->mitig[i].wwvh;
- dtemp = wwv_metric(rp);
+ dtemp = rp->metric;
if (dtemp >= rank) {
rank = dtemp;
sp = rp;
j = i;
}
rp = &up->mitig[i].wwv;
- dtemp = wwv_metric(rp);
+ dtemp = rp->metric;
if (dtemp >= rank) {
rank = dtemp;
sp = rp;
j = i;
}
}
+
+ /*
+ * If the strongest signal is less than the MTHR threshold (13),
+ * we are beneath the waves, so squelch the second sync. If the
+ * strongest signal is greater than the threshold, tune to that
+ * frequency and transmitter QTH.
+ */
+ if (rank < MTHR) {
+ up->dchan = (up->dchan + 1) % NCHAN;
+ up->status &= ~(SELV | SELH);
+ return (FALSE);
+ }
up->dchan = j;
+ up->status |= SELV | SELH;
up->sptr = sp;
- up->status &= ~(SELV | SELH);
- memcpy(&pp->refid, "NONE", 4);
- if ((!(up->status & INSYNC) && rank >= MTHR) || ((up->status &
- INSYNC) && rank >= TTHR)) {
- up->status |= sp->select & (SELV | SELH);
- memcpy(&pp->refid, sp->refid, 4);
- }
- if (peer->stratum <= 1)
- memcpy(&peer->refid, &pp->refid, 4);
+ memcpy(&pp->refid, sp->refid, 4);
+ peer->refid = pp->refid;
+ return (TRUE);
}
/*
- * www_newgame - reset and start over
+ * wwv_newgame - reset and start over
+ *
+ * There are four conditions resulting in a new game:
+ *
+ * 1 During initial acquisition (MSYNC dark) going 6 minutes (ACQSN)
+ * without reliably finding the minute pulse (MSYNC lit).
+ *
+ * 2 After finding the minute pulse (MSYNC lit), going 15 minutes
+ * (DATA) without finding the unit seconds digit.
+ *
+ * 3 After finding good data (DATA lit), going more than 40 minutes
+ * (SYNCH) without finding station sync (INSYNC lit).
+ *
+ * 4 After finding station sync (INSYNC lit), going more than 2 days
+ * (PANIC) without finding any station.
*/
static void
wwv_newgame(
@@ -2665,12 +2509,12 @@ wwv_newgame(
up->watch = up->status = up->alarm = 0;
up->avgint = MINAVG;
up->freq = 0;
- up->sptr = NULL;
up->gain = MAXGAIN / 2;
/*
* Initialize the station processes for audio gain, select bit,
- * station/frequency identifier and reference identifier.
+ * station/frequency identifier and reference identifier. Start
+ * probing at the next channel after the data channel.
*/
memset(up->mitig, 0, sizeof(up->mitig));
for (i = 0; i < NCHAN; i++) {
@@ -2681,15 +2525,21 @@ wwv_newgame(
cp->wwvh.select = SELH;
sprintf(cp->wwvh.refid, "WH%.0f", floor(qsy[i]));
}
+ up->dchan = (DCHAN + NCHAN - 1) % NCHAN;;
wwv_newchan(peer);
+ up->achan = up->schan = up->dchan;
+#ifdef ICOM
+ if (up->fd_icom > 0)
+ wwv_qsy(peer, up->dchan);
+#endif /* ICOM */
}
/*
* wwv_metric - compute station metric
*
* The most significant bits represent the number of ones in the
- * reachability register. The least significant bits represent the
- * minute sync pulse amplitude. The combined value is scaled 0-100.
+ * station reachability register. The least significant bits represent
+ * the minute sync pulse amplitude. The combined value is scaled 0-100.
*/
double
wwv_metric(
@@ -2698,12 +2548,12 @@ wwv_metric(
{
double dtemp;
- dtemp = sp->count * MAXSIG;
- if (sp->synmax < MAXSIG)
+ dtemp = sp->count * MAXAMP;
+ if (sp->synmax < MAXAMP)
dtemp += sp->synmax;
else
- dtemp += MAXSIG - 1;
- dtemp /= (AMAX + 1) * MAXSIG;
+ dtemp += MAXAMP - 1;
+ dtemp /= (AMAX + 1) * MAXAMP;
return (dtemp * 100.);
}
@@ -2803,8 +2653,8 @@ timecode(
*/
sp = up->sptr;
sprintf(cptr, " %d %d %s %.0f %d %.1f %d", up->watch,
- up->mitig[up->dchan].gain, sp->refid, wwv_metric(sp),
- up->errbit, up->freq / SECOND * 1e6, up->avgint);
+ up->mitig[up->dchan].gain, sp->refid, sp->metric,
+ up->errcnt, up->freq / SECOND * 1e6, up->avgint);
strcat(ptr, cptr);
return (strlen(ptr));
}
@@ -2813,12 +2663,12 @@ timecode(
/*
* wwv_gain - adjust codec gain
*
- * This routine is called at the end of each second. It counts the
- * number of signal clips above the MAXSIG threshold during the previous
- * second. If there are no clips, the gain is bumped up; if too many
- * clips, it is bumped down. The decoder is relatively insensitive to
- * amplitude, so this crudity works just fine. The input port is set and
- * the error flag is cleared, mostly to be ornery.
+ * This routine is called at the end of each second. During the second
+ * the number of signal clips above the MAXAMP threshold (6000). If
+ * there are no clips, the gain is bumped up; if there are more than
+ * MAXCLP clips (100), it is bumped down. The decoder is relatively
+ * insensitive to amplitude, so this crudity works just peachy. The
+ * input port is set and the error flag is cleared, mostly to be ornery.
*/
static void
wwv_gain(
diff --git a/contrib/ntp/ntpd/refclock_wwvb.c b/contrib/ntp/ntpd/refclock_wwvb.c
index c5ef9f9..7bddd3a 100644
--- a/contrib/ntp/ntpd/refclock_wwvb.c
+++ b/contrib/ntp/ntpd/refclock_wwvb.c
@@ -1,5 +1,5 @@
/*
- * refclock_wwvb - clock driver for Spectracom WWVB receivers
+ * refclock_wwvb - clock driver for Spectracom WWVB and GPS receivers
*/
#ifdef HAVE_CONFIG_H
@@ -43,7 +43,7 @@
*
* Format 0 (22 ASCII printing characters):
*
- * <cr><lf>i ddd hh:mm:ss TZ=zz<cr><lf>
+ * <cr><lf>i ddd hh:mm:ss TZ=zz<cr><lf>
*
* on-time = first <cr>
* hh:mm:ss = hours, minutes, seconds
@@ -80,19 +80,20 @@
* synchronized to the indicated time as returned.
*
* This driver does not need to be told which format is in use - it
- * figures out which one from the length of the message.The driver makes
- * no attempt to correct for the intrinsic jitter of the radio itself,
- * which is a known problem with the older radios.
+ * figures out which one from the length of the message. The driver
+ * makes no attempt to correct for the intrinsic jitter of the radio
+ * itself, which is a known problem with the older radios.
*
* Fudge Factors
*
* This driver can retrieve a table of quality data maintained
* internally by the Netclock/2 clock. If flag4 of the fudge
* configuration command is set to 1, the driver will retrieve this
- * table and write it to the clockstats file on when the first timecode
+ * table and write it to the clockstats file when the first timecode
* message of a new day is received.
+ *
+ * PPS calibration fudge time 1: format 0 .003134, format 2 .004034
*/
-
/*
* Interface definitions
*/
@@ -100,7 +101,7 @@
#define SPEED232 B9600 /* uart speed (9600 baud) */
#define PRECISION (-13) /* precision assumed (about 100 us) */
#define REFID "WWVB" /* reference ID */
-#define DESCRIPTION "Spectracom WWVB/GPS Receivers" /* WRU */
+#define DESCRIPTION "Spectracom WWVB/GPS Receiver" /* WRU */
#define LENWWVB0 22 /* format 0 timecode length */
#define LENWWVB1 22 /* format 1 timecode length */
@@ -112,7 +113,6 @@
* WWVB unit control structure
*/
struct wwvbunit {
- u_char tcswitch; /* timecode switch */
l_fp laststamp; /* last receive timestamp */
u_char lasthour; /* last hour (for monitor) */
u_char linect; /* count ignored lines (for monitor */
@@ -125,6 +125,7 @@ static int wwvb_start P((int, struct peer *));
static void wwvb_shutdown P((int, struct peer *));
static void wwvb_receive P((struct recvbuf *));
static void wwvb_poll P((int, struct peer *));
+static void wwvb_timer P((int, struct peer *));
/*
* Transfer vector
@@ -136,7 +137,7 @@ struct refclock refclock_wwvb = {
noentry, /* not used (old wwvb_control) */
noentry, /* initialize driver (not used) */
noentry, /* not used (old wwvb_buginfo) */
- NOFLAGS /* not used */
+ wwvb_timer /* called once per second */
};
@@ -157,7 +158,7 @@ wwvb_start(
/*
* Open serial port. Use CLK line discipline, if available.
*/
- (void)sprintf(device, DEVICE, unit);
+ sprintf(device, DEVICE, unit);
if (!(fd = refclock_open(device, SPEED232, LDISC_CLK)))
return (0);
@@ -166,7 +167,7 @@ wwvb_start(
*/
if (!(up = (struct wwvbunit *)
emalloc(sizeof(struct wwvbunit)))) {
- (void) close(fd);
+ close(fd);
return (0);
}
memset((char *)up, 0, sizeof(struct wwvbunit));
@@ -177,7 +178,7 @@ wwvb_start(
pp->io.datalen = 0;
pp->io.fd = fd;
if (!io_addclock(&pp->io)) {
- (void) close(fd);
+ close(fd);
free(up);
return (0);
}
@@ -188,7 +189,6 @@ wwvb_start(
peer->precision = PRECISION;
pp->clockdesc = DESCRIPTION;
memcpy((char *)&pp->refid, REFID, 4);
- peer->burst = MAXSTAGE;
return (1);
}
@@ -249,21 +249,15 @@ wwvb_receive(
* +-50 us relative to the pps; however, on an unmodified 8170
* the start bit can be delayed up to 10 ms. In format 2 the
* reading precision is only to the millisecond. Thus, unless
- * you have a pps gadget and don't have to have the year, format
+ * you have a PPS gadget and don't have to have the year, format
* 0 provides the lowest jitter.
*/
if (temp == 0) {
- if (up->tcswitch == 0) {
- up->tcswitch = 1;
- up->laststamp = trtmp;
- } else
- up->tcswitch = 0;
+ up->laststamp = trtmp;
return;
}
pp->lencode = temp;
pp->lastrec = up->laststamp;
- up->laststamp = trtmp;
- up->tcswitch = 1;
/*
* We get down to business, check the timecode format and decode
@@ -378,14 +372,16 @@ wwvb_receive(
*/
if (!refclock_process(pp))
refclock_report(peer, CEVNT_BADTIME);
+ if (peer->disp > MAXDISTANCE)
+ refclock_receive(peer);
}
/*
- * wwvb_poll - called by the transmit procedure
+ * wwvb_timer - called once per second by the transmit procedure
*/
static void
-wwvb_poll(
+wwvb_timer(
int unit,
struct peer *peer
)
@@ -399,8 +395,7 @@ wwvb_poll(
* 'T' by returning a timecode in the format(s) specified above.
* Note there is no checking on state, since this may not be the
* only customer reading the clock. Only one customer need poll
- * the clock; all others just listen in. If the clock becomes
- * unreachable, declare a timeout and keep going.
+ * the clock; all others just listen in.
*/
pp = peer->procptr;
up = (struct wwvbunit *)pp->unitptr;
@@ -410,8 +405,42 @@ wwvb_poll(
pollchar = 'T';
if (write(pp->io.fd, &pollchar, 1) != 1)
refclock_report(peer, CEVNT_FAULT);
- if (peer->burst > 0)
- return;
+}
+
+
+/*
+ * wwvb_poll - called by the transmit procedure
+ */
+static void
+wwvb_poll(
+ int unit,
+ struct peer *peer
+ )
+{
+ register struct wwvbunit *up;
+ struct refclockproc *pp;
+
+ /*
+ * Sweep up the samples received since the last poll. If none
+ * are received, declare a timeout and keep going.
+ */
+ pp = peer->procptr;
+ up = (struct wwvbunit *)pp->unitptr;
+ pp->polls++;
+
+ /*
+ * If the monitor flag is set (flag4), we dump the internal
+ * quality table at the first timecode beginning the day.
+ */
+ if (pp->sloppyclockflag & CLK_FLAG4 && pp->hour <
+ (int)up->lasthour)
+ up->linect = MONLIN;
+ up->lasthour = pp->hour;
+
+ /*
+ * Process median filter samples. If none received, declare a
+ * timeout and keep going.
+ */
if (pp->coderecv == pp->codeproc) {
refclock_report(peer, CEVNT_TIMEOUT);
return;
@@ -423,17 +452,6 @@ wwvb_poll(
printf("wwvb: timecode %d %s\n", pp->lencode,
pp->a_lastcode);
#endif
- peer->burst = MAXSTAGE;
- pp->polls++;
-
- /*
- * If the monitor flag is set (flag4), we dump the internal
- * quality table at the first timecode beginning the day.
- */
- if (pp->sloppyclockflag & CLK_FLAG4 && pp->hour <
- (int)up->lasthour)
- up->linect = MONLIN;
- up->lasthour = pp->hour;
}
#else
diff --git a/contrib/ntp/ntpdate/Makefile.am b/contrib/ntp/ntpdate/Makefile.am
index bfe3fea..3372f49 100644
--- a/contrib/ntp/ntpdate/Makefile.am
+++ b/contrib/ntp/ntpdate/Makefile.am
@@ -1,22 +1,28 @@
-#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
-AUTOMAKE_OPTIONS = ../util/ansi2knr
-#bin_PROGRAMS = ntpdate ntptimeset
-bin_PROGRAMS = ntpdate
-EXTRA_PROGRAMS = ntptimeset
-ntptimeset_SOURCES = ntptimeset.c ntptime_config.c
-INCLUDES = -I$(top_srcdir)/include
+#AUTOMAKE_OPTIONS= ../util/ansi2knr
+
+bindir= ${exec_prefix}/${BINSUBDIR}
+#bin_PROGRAMS= ntpdate ntptimeset
+bin_PROGRAMS= ntpdate
+EXTRA_PROGRAMS= ntptimeset
+
+ntptimeset_SOURCES= ntptimeset.c ntptime_config.c
+AM_CPPFLAGS= -I$(top_srcdir)/include
# LDADD might need RESLIB and ADJLIB
-LDADD = version.o ../libntp/libntp.a
-DISTCLEANFILES = .version version.c stamp-v
-noinst_HEADERS = ntpdate.h
-#EXTRA_DIST = ntpdate.mak
-ETAGS_ARGS = Makefile.am
+LDADD= version.o ../libntp/libntp.a
+DISTCLEANFILES= .version version.c stamp-v
+noinst_HEADERS= ntpdate.h
+ETAGS_ARGS= Makefile.am
$(PROGRAMS): $(LDADD)
../libntp/libntp.a:
cd ../libntp && $(MAKE)
+$(top_srcdir)/version :
+ cd $(top_srcdir) && $(MAKE) version
+
version.o: $(ntpdate_OBJECTS) ../libntp/libntp.a Makefile $(top_srcdir)/version
env CSET=`cat $(top_srcdir)/version` $(top_builddir)/scripts/mkver ntpdate
$(COMPILE) -c version.c
+
+include ../bincheck.mf
diff --git a/contrib/ntp/ntpdate/Makefile.in b/contrib/ntp/ntpdate/Makefile.in
index 391f494..fadcd18 100644
--- a/contrib/ntp/ntpdate/Makefile.in
+++ b/contrib/ntp/ntpdate/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -14,6 +14,13 @@
@SET_MAKE@
+#AUTOMAKE_OPTIONS= ../util/ansi2knr
+
+# we traditionally installed software in bindir, while it should have gone
+# in sbindir. Now that we offer a choice, look in the "other" installation
+# subdir to warn folks if there is another version there.
+
+
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -21,7 +28,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +43,61 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+bin_PROGRAMS = ntpdate$(EXEEXT)
+EXTRA_PROGRAMS = ntptimeset$(EXEEXT)
+DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/../bincheck.mf \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+subdir = ntpdate
+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/hs_ulong_const.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 =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+ntpdate_SOURCES = ntpdate.c
+ntpdate_OBJECTS = ntpdate.$(OBJEXT)
+ntpdate_LDADD = $(LDADD)
+ntpdate_DEPENDENCIES = version.o ../libntp/libntp.a
+am_ntptimeset_OBJECTS = ntptimeset.$(OBJEXT) ntptime_config.$(OBJEXT)
+ntptimeset_OBJECTS = $(am_ntptimeset_OBJECTS)
+ntptimeset_LDADD = $(LDADD)
+ntptimeset_DEPENDENCIES = version.o ../libntp/libntp.a
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = ntpdate.c $(ntptimeset_SOURCES)
+DIST_SOURCES = ntpdate.c $(ntptimeset_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +105,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +121,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,15 +176,22 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
-bindir = @bindir@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = ${exec_prefix}/${BINSUBDIR}
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
@@ -139,6 +211,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,83 +219,58 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-
-#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
-AUTOMAKE_OPTIONS = ../util/ansi2knr
-#bin_PROGRAMS = ntpdate ntptimeset
-bin_PROGRAMS = ntpdate
-EXTRA_PROGRAMS = ntptimeset
ntptimeset_SOURCES = ntptimeset.c ntptime_config.c
-INCLUDES = -I$(top_srcdir)/include
+AM_CPPFLAGS = -I$(top_srcdir)/include
# LDADD might need RESLIB and ADJLIB
LDADD = version.o ../libntp/libntp.a
DISTCLEANFILES = .version version.c stamp-v
noinst_HEADERS = ntpdate.h
-#EXTRA_DIST = ntpdate.mak
ETAGS_ARGS = Makefile.am
-subdir = ntpdate
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-EXTRA_PROGRAMS = ntptimeset$(EXEEXT)
-bin_PROGRAMS = ntpdate$(EXEEXT)
-PROGRAMS = $(bin_PROGRAMS)
-
-ntpdate_SOURCES = ntpdate.c
-ntpdate_OBJECTS = ntpdate$U.$(OBJEXT)
-ntpdate_LDADD = $(LDADD)
-ntpdate_DEPENDENCIES = version.o ../libntp/libntp.a
-ntpdate_LDFLAGS =
-am_ntptimeset_OBJECTS = ntptimeset$U.$(OBJEXT) \
- ntptime_config$U.$(OBJEXT)
-ntptimeset_OBJECTS = $(am_ntptimeset_OBJECTS)
-ntptimeset_LDADD = $(LDADD)
-ntptimeset_DEPENDENCIES = version.o ../libntp/libntp.a
-ntptimeset_LDFLAGS =
-
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ntpdate$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntptime_config$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntptimeset$U.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = ntpdate.c $(ntptimeset_SOURCES)
-HEADERS = $(noinst_HEADERS)
-
-DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.in \
- Makefile.am
-SOURCES = ntpdate.c $(ntptimeset_SOURCES)
-
all: all-am
.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../bincheck.mf $(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 ntpdate/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu ntpdate/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ $(AUTOMAKE) --foreign ntpdate/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
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
+ || test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
@@ -230,12 +278,16 @@ uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
- rm -f $(DESTDIR)$(bindir)/$$f; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
ntpdate$(EXEEXT): $(ntpdate_OBJECTS) $(ntpdate_DEPENDENCIES)
@rm -f ntpdate$(EXEEXT)
$(LINK) $(ntpdate_LDFLAGS) $(ntpdate_OBJECTS) $(ntpdate_LDADD) $(LIBS)
@@ -244,60 +296,45 @@ ntptimeset$(EXEEXT): $(ntptimeset_OBJECTS) $(ntptimeset_DEPENDENCIES)
$(LINK) $(ntptimeset_LDFLAGS) $(ntptimeset_OBJECTS) $(ntptimeset_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-ANSI2KNR = ../util/ansi2knr
-../util/ansi2knr:
- cd ../util && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
-
-mostlyclean-kr:
- -test "$U" = "" || rm -f *_.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdate$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntptime_config$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntptimeset$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntptime_config.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntptimeset.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-ntpdate_.c: ntpdate.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpdate.c; then echo $(srcdir)/ntpdate.c; else echo ntpdate.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-ntptime_config_.c: ntptime_config.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntptime_config.c; then echo $(srcdir)/ntptime_config.c; else echo ntptime_config.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-ntptimeset_.c: ntptimeset.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntptimeset.c; then echo $(srcdir)/ntptimeset.c; else echo ntptimeset.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-ntpdate_.$(OBJEXT) ntptime_config_.$(OBJEXT) ntptimeset_.$(OBJEXT) : \
-$(ANSI2KNR)
-uninstall-info-am:
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-ETAGS = etags
-ETAGSFLAGS =
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-CTAGS = ctags
-CTAGSFLAGS =
+mostlyclean-libtool:
+ -rm -f *.lo
-tags: TAGS
+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)'; \
@@ -307,6 +344,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -318,10 +356,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -344,12 +383,9 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/..
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@@ -361,7 +397,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -379,9 +415,10 @@ distdir: $(DISTFILES)
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(HEADERS)
-
installdirs:
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@@ -393,7 +430,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -401,7 +438,7 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@@ -409,19 +446,20 @@ maintainer-clean-generic:
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+ distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
@@ -429,6 +467,8 @@ info-am:
install-data-am:
install-exec-am: install-binPROGRAMS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
install-info: install-info-am
@@ -439,12 +479,12 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
pdf: pdf-am
@@ -457,15 +497,16 @@ ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am info \
- info-am install install-am install-binPROGRAMS 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-compile \
- mostlyclean-generic mostlyclean-kr pdf pdf-am ps ps-am tags \
- uninstall uninstall-am uninstall-binPROGRAMS uninstall-info-am
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-exec \
+ install-exec-am install-exec-hook install-info install-info-am \
+ install-man install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-binPROGRAMS uninstall-info-am
$(PROGRAMS): $(LDADD)
@@ -473,9 +514,24 @@ $(PROGRAMS): $(LDADD)
../libntp/libntp.a:
cd ../libntp && $(MAKE)
+$(top_srcdir)/version :
+ cd $(top_srcdir) && $(MAKE) version
+
version.o: $(ntpdate_OBJECTS) ../libntp/libntp.a Makefile $(top_srcdir)/version
env CSET=`cat $(top_srcdir)/version` $(top_builddir)/scripts/mkver ntpdate
$(COMPILE) -c version.c
+
+install-exec-hook:
+ @case ${BINSUBDIR} in \
+ bin) ODIR=${exec_prefix}/sbin ;; \
+ sbin) ODIR=${exec_prefix}/bin ;; \
+ esac; \
+ test -z "${bin_PROGRAMS}${bin_SCRIPTS}" \
+ || for i in ${bin_PROGRAMS} ${bin_SCRIPTS} " "; do \
+ test ! -f $$ODIR/$$i || echo "*** $$i is also in $$ODIR!"; \
+ done
+
+#
# 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/contrib/ntp/ntpdate/ntpdate.c b/contrib/ntp/ntpdate/ntpdate.c
index b2cbe7e..a0a90ce 100644
--- a/contrib/ntp/ntpdate/ntpdate.c
+++ b/contrib/ntp/ntpdate/ntpdate.c
@@ -21,6 +21,12 @@
#include "ntp_select.h"
#include "ntp_stdlib.h"
+/* Don't include ISC's version of IPv6 variables and structures */
+#define ISC_IPV6_H 1
+#include "isc/net.h"
+#include "isc/result.h"
+#include "isc/sockaddr.h"
+
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
@@ -32,7 +38,6 @@
# include <poll.h>
#endif
#ifndef SYS_WINNT
-# include <netdb.h>
# ifdef HAVE_SYS_SIGNAL_H
# include <sys/signal.h>
# else
@@ -48,10 +53,6 @@
#include <arpa/inet.h>
-#ifdef __QNXNTO__
-# include "adjtime.h"
-#endif
-
#ifdef SYS_VXWORKS
# include "ioLib.h"
# include "sockLib.h"
@@ -59,6 +60,12 @@
/* select wants a zero structure ... */
struct timeval timeout = {0,0};
+#elif defined(SYS_WINNT)
+/*
+ * Windows does not abort a select select call if SIGALRM goes off
+ * so a 200 ms timeout is needed
+ */
+struct timeval timeout = {0,1000000/TIMER_HZ};
#else
struct timeval timeout = {60,0};
#endif
@@ -71,11 +78,13 @@ struct timeval timeout = {60,0};
#ifdef SYS_WINNT
#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
-#define EAFNOSUPPORT WSAEAFNOSUPPORT
-#define EPFNOSUPPORT WSAEPFNOSUPPORT
+#define EAFNOSUPPORT WSAEAFNOSUPPORT
+#define EPFNOSUPPORT WSAEPFNOSUPPORT
#define TARGET_RESOLUTION 1 /* Try for 1-millisecond accuracy
on Windows NT timers. */
#pragma comment(lib, "winmm")
+isc_boolean_t ntp_port_inuse(int af, u_short port);
+UINT wTimerRes;
#endif /* SYS_WINNT */
/*
@@ -96,14 +105,19 @@ static timer_t ntpdate_timerid;
* Compatibility stuff for Version 2
*/
#define NTP_MAXSKW 0x28f /* 0.01 sec in fp format */
-#define NTP_MINDIST 0x51f /* 0.02 sec in fp format */
+#define NTP_MINDIST 0x51f /* 0.02 sec in fp format */
#define PEER_MAXDISP (64*FP_SECOND) /* maximum dispersion (fp 64) */
#define NTP_INFIN 15 /* max stratum, infinity a la Bellman-Ford */
#define NTP_MAXWGT (8*FP_SECOND) /* maximum select weight 8 seconds */
-#define NTP_MAXLIST 5 /* maximum select list size */
+#define NTP_MAXLIST 5 /* maximum select list size */
#define PEER_SHIFT 8 /* 8 suitable for crystal time base */
/*
+ * for get_systime()
+ */
+s_char sys_precision; /* local clock precision (log2 s) */
+
+/*
* Debugging flag
*/
volatile int debug = 0;
@@ -113,14 +127,14 @@ volatile int debug = 0;
*/
int ai_fam_templ;
-int nbsock;
-SOCKET fd[MAX_AF]; /* support up to 2 sockets */
+int nbsock; /* the number of sockets used */
+SOCKET fd[MAX_AF];
int fd_family[MAX_AF]; /* to remember the socket family */
#ifdef HAVE_POLL_H
struct pollfd fdmask[MAX_AF];
#else
fd_set fdmask;
-int maxfd;
+SOCKET maxfd;
#endif
int polltest = 0;
@@ -141,16 +155,11 @@ volatile int alarm_flag = 0;
int simple_query = 0;
/*
- * Unpriviledged port flag.
+ * Unprivileged port flag.
*/
int unpriv_port = 0;
/*
- * Time to spend measuring drift rate
- */
-int rate = 0;
-
-/*
* Program name.
*/
char *progname;
@@ -202,7 +211,7 @@ int verbose = 0;
int always_step = 0;
int never_step = 0;
-int ntpdatemain P((int, char **));
+int ntpdatemain P((int, char **));
static void transmit P((struct server *));
static void receive P((struct recvbuf *));
@@ -212,7 +221,7 @@ static struct server *clock_select P((void));
static int clock_adjust P((void));
static void addserver P((char *));
static struct server *findserver P((struct sockaddr_storage *));
- void timer P((void));
+void timer P((void));
static void init_alarm P((void));
#ifndef SYS_WINNT
static RETSIGTYPE alarming P((int));
@@ -229,7 +238,7 @@ static void printserver P((struct server *, FILE *));
#ifdef SYS_WINNT
int on = 1;
WORD wVersionRequested;
-WSADATA wsaData;
+WSADATA wsaData;
HANDLE TimerThreadHandle = NULL;
#endif /* SYS_WINNT */
@@ -261,15 +270,11 @@ void clear_globals()
simple_query = 0;
/*
- * Unpriviledged port flag.
+ * Unprivileged port flag.
*/
unpriv_port = 0;
/*
- * Time to spend measuring drift rate
- */
- rate = 0;
- /*
* Systemwide parameters and flags
*/
sys_numservers = 0; /* number of servers to poll */
@@ -319,12 +324,12 @@ ntpdatemain (
)
{
int was_alarmed;
- struct recvbuf *rbuflist;
+ int tot_recvbufs;
struct recvbuf *rbuf;
l_fp tmp;
int errflg;
int c;
- int nfound;
+ int nfound;
#ifdef HAVE_NETINFO
ni_namelist *netinfoservers;
@@ -350,6 +355,12 @@ ntpdatemain (
clear_globals();
#endif
+
+ /* Check to see if we have IPv6. Otherwise force the -4 flag */
+ if (isc_net_probeipv6() != ISC_R_SUCCESS) {
+ ai_fam_templ = AF_INET;
+ }
+
errflg = 0;
progname = argv[0];
syslogit = 0;
@@ -357,7 +368,7 @@ ntpdatemain (
/*
* Decode argument list
*/
- while ((c = ntp_getopt(argc, argv, "46a:bBde:k:o:p:qr:st:uv")) != EOF)
+ while ((c = ntp_getopt(argc, argv, "46a:bBde:k:o:p:qst:uv")) != EOF)
switch (c)
{
case '4':
@@ -413,17 +424,6 @@ ntpdatemain (
case 'q':
simple_query = 1;
break;
- case 'r':
- c = atoi(ntp_optarg);
- if (c <= 0 || c > (60 * 60)) {
- (void) fprintf(stderr,
- "%s: rate (%d) is invalid: 0 - %d\n",
- progname, c, (60 * 60));
- errflg++;
- } else {
- rate = c;
- }
- break;
case 's':
syslogit = 1;
break;
@@ -455,7 +455,7 @@ ntpdatemain (
if (errflg) {
(void) fprintf(stderr,
- "usage: %s [-46bBdqsuv] [-a key#] [-e delay] [-k file] [-p samples] [-o version#] [-r rate] [-t timeo] server ...\n",
+ "usage: %s [-46bBdqsuv] [-a key#] [-e delay] [-k file] [-p samples] [-o version#] [-t timeo] server ...\n",
progname);
exit(2);
}
@@ -463,7 +463,12 @@ ntpdatemain (
if (debug || simple_query) {
#ifdef HAVE_SETVBUF
static char buf[BUFSIZ];
+#ifdef SYS_WINNT
+ /* Win32 does not implement line buffering */
+ setvbuf(stdout, NULL, _IONBF, BUFSIZ);
+#else
setvbuf(stdout, buf, _IOLBF, BUFSIZ);
+#endif /* SYS_WINNT */
#else
setlinebuf(stdout);
#endif
@@ -536,10 +541,8 @@ ntpdatemain (
}
authtrust(sys_authkey, 1);
if (!authistrusted(sys_authkey)) {
- char buf[10];
-
- (void) sprintf(buf, "%lu", (unsigned long)sys_authkey);
- msyslog(LOG_ERR, "authentication key %s unknown", buf);
+ msyslog(LOG_ERR, "authentication key %lu unknown",
+ (unsigned long) sys_authkey);
exit(1);
}
}
@@ -569,45 +572,41 @@ ntpdatemain (
initializing = 0;
was_alarmed = 0;
- rbuflist = (struct recvbuf *)0;
while (complete_servers < sys_numservers) {
#ifdef HAVE_POLL_H
- struct pollfd* rdfdes;
- rdfdes = fdmask;
+ struct pollfd* rdfdes;
+ rdfdes = fdmask;
#else
fd_set rdfdes;
- rdfdes = fdmask;
+ rdfdes = fdmask;
#endif
if (alarm_flag) { /* alarmed? */
was_alarmed = 1;
alarm_flag = 0;
}
- rbuflist = getrecvbufs(); /* get received buffers */
+ tot_recvbufs = full_recvbuffs(); /* get received buffers */
- if (!was_alarmed && rbuflist == (struct recvbuf *)0) {
+ if (!was_alarmed && tot_recvbufs == 0) {
/*
* Nothing to do. Wait for something.
*/
#ifdef HAVE_POLL_H
- nfound = poll(rdfdes, (unsigned int)nbsock, timeout.tv_sec * 1000);
+ nfound = poll(rdfdes, (unsigned int)nbsock, timeout.tv_sec * 1000);
#else
- nfound = select(maxfd, &rdfdes, (fd_set *)0,
+ nfound = select(maxfd, &rdfdes, (fd_set *)0,
(fd_set *)0, &timeout);
#endif
if (nfound > 0)
input_handler();
- else if (
-#ifndef SYS_WINNT
- nfound == -1
-#else
- nfound == SOCKET_ERROR
-#endif /* SYS_WINNT */
- ) {
+ else if (nfound == SOCKET_ERROR)
+ {
#ifndef SYS_WINNT
if (errno != EINTR)
+#else
+ if (WSAGetLastError() != WSAEINTR)
#endif
netsyslog(LOG_ERR,
#ifdef HAVE_POLL_H
@@ -616,7 +615,7 @@ ntpdatemain (
"select() error: %m"
#endif
);
- } else {
+ } else if (errno != 0) {
#ifndef SYS_VXWORKS
netsyslog(LOG_DEBUG,
#ifdef HAVE_POLL_H
@@ -631,18 +630,19 @@ ntpdatemain (
was_alarmed = 1;
alarm_flag = 0;
}
- rbuflist = getrecvbufs(); /* get received buffers */
+ tot_recvbufs = full_recvbuffs(); /* get received buffers */
}
/*
* Out here, signals are unblocked. Call receive
* procedure for each incoming packet.
*/
- while (rbuflist != (struct recvbuf *)0) {
- rbuf = rbuflist;
- rbuflist = rbuf->next;
+ rbuf = get_full_recv_buffer();
+ while (rbuf != NULL)
+ {
receive(rbuf);
freerecvbuf(rbuf);
+ rbuf = get_full_recv_buffer();
}
/*
@@ -676,8 +676,8 @@ ntpdatemain (
/*
* transmit - transmit a packet to the given server, or mark it completed.
- * This is called by the timeout routine and by the receive
- * procedure.
+ * This is called by the timeout routine and by the receive
+ * procedure.
*/
static void
transmit(
@@ -710,7 +710,7 @@ transmit(
}
/*
- * If we're here, send another message to the server. Fill in
+ * If we're here, send another message to the server. Fill in
* the packet and let 'er rip.
*/
xpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOTINSYNC,
@@ -779,7 +779,7 @@ receive(
int is_authentic;
if (debug)
- printf("receive(%s)\n", stoa(&rbufp->recv_srcadr));
+ printf("receive(%s)\n", stoa(&rbufp->recv_srcadr));
/*
* Check to see if the packet basically looks like something
* intended for us.
@@ -1060,29 +1060,29 @@ clock_select(void)
if (server->delay == 0) {
if (debug)
printf("%s: Server dropped: no data\n", ntoa(&server->srcadr));
- continue; /* no data */
+ continue; /* no data */
}
if (server->stratum > NTP_INFIN) {
if (debug)
printf("%s: Server dropped: strata too high\n", ntoa(&server->srcadr));
- continue; /* stratum no good */
+ continue; /* stratum no good */
}
if (server->delay > NTP_MAXWGT) {
if (debug)
printf("%s: Server dropped: server too far away\n",
- ntoa(&server->srcadr));
- continue; /* too far away */
+ ntoa(&server->srcadr));
+ continue; /* too far away */
}
if (server->leap == LEAP_NOTINSYNC) {
if (debug)
printf("%s: Server dropped: Leap not in sync\n", ntoa(&server->srcadr));
- continue; /* he's in trouble */
+ continue; /* he's in trouble */
}
if (!L_ISHIS(&server->org, &server->reftime)) {
if (debug)
printf("%s: Server dropped: server is very broken\n",
ntoa(&server->srcadr));
- continue; /* very broken host */
+ continue; /* very broken host */
}
if ((server->org.l_ui - server->reftime.l_ui)
>= NTP_MAXAGE) {
@@ -1239,7 +1239,7 @@ clock_select(void)
}
/*
- * That's it. Return our server.
+ * That's it. Return our server.
*/
return sys_server;
}
@@ -1283,7 +1283,7 @@ clock_adjust(void)
}
if (dostep) {
- if (simple_query || l_step_systime(&server->offset)) {
+ if (simple_query || debug || l_step_systime(&server->offset)){
msyslog(LOG_NOTICE, "step time server %s offset %s sec",
stoa(&server->srcadr),
lfptoa(&server->offset, 6));
@@ -1313,10 +1313,34 @@ clock_adjust(void)
}
+/*
+ * is_unreachable - check to see if we have a route to given destination
+ * (non-blocking).
+ */
+static int
+is_reachable (struct sockaddr_storage *dst)
+{
+ SOCKET sockfd;
+
+ sockfd = socket(dst->ss_family, SOCK_DGRAM, 0);
+ if (sockfd == -1) {
+ return 0;
+ }
+
+ if(connect(sockfd, (struct sockaddr *)dst, SOCKLEN(dst))) {
+ closesocket(sockfd);
+ return 0;
+ }
+ closesocket(sockfd);
+ return 1;
+}
+
+
+
/* XXX ELIMINATE: merge BIG slew into adj_systime in lib/systime.c */
/*
* addserver - determine a server's address and allocate a new structure
- * for it.
+ * for it.
*/
static void
addserver(
@@ -1324,54 +1348,69 @@ addserver(
)
{
register struct server *server;
- /* Address infos structure to store result of getaddrinfo */
- struct addrinfo *addrResult;
- /* Address infos structure to store hints for getaddrinfo */
- struct addrinfo hints;
- /* Error variable for getaddrinfo */
- int error;
- /* Service name */
- char service[5];
+ /* Address infos structure to store result of getaddrinfo */
+ struct addrinfo *addrResult, *ptr;
+ /* Address infos structure to store hints for getaddrinfo */
+ struct addrinfo hints;
+ /* Error variable for getaddrinfo */
+ int error;
+ /* Service name */
+ char service[5];
strcpy(service, "ntp");
- /* Get host address. Looking for UDP datagram connection. */
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = ai_fam_templ;
- hints.ai_socktype = SOCK_DGRAM;
+ /* Get host address. Looking for UDP datagram connection. */
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = ai_fam_templ;
+ hints.ai_socktype = SOCK_DGRAM;
#ifdef DEBUG
- if (debug)
- printf("Looking for host %s and service %s\n", serv, service);
+ if (debug)
+ printf("Looking for host %s and service %s\n", serv, service);
#endif
- error = getaddrinfo(serv, service, &hints, &addrResult);
- if (error != 0) {
- fprintf(stderr, "Error : %s\n", gai_strerror(error));
+ error = getaddrinfo(serv, service, &hints, &addrResult);
+ if (error != 0) {
+ /* Conduct more refined error analysis */
+ if (error == EAI_FAIL || error == EAI_AGAIN){
+ /* Name server is unusable. Exit after failing on the
+ first server, in order to shorten the timeout caused
+ by waiting for resolution of several servers */
+ fprintf(stderr, "Name server cannot be used, exiting");
+ msyslog(LOG_ERR, "name server cannot be used, reason: %s\n", gai_strerror(error));
+ exit(1);
+ }
+ fprintf(stderr, "Error : %s\n", gai_strerror(error));
msyslog(LOG_ERR, "can't find host %s\n", serv);
return;
}
#ifdef DEBUG
- else if (debug) {
- fprintf(stderr, "host found : %s\n", stohost((struct sockaddr_storage*)addrResult->ai_addr));
- }
+ else if (debug) {
+ fprintf(stderr, "host found : %s\n", stohost((struct sockaddr_storage*)addrResult->ai_addr));
+ }
#endif
- server = (struct server *)emalloc(sizeof(struct server));
- memset((char *)server, 0, sizeof(struct server));
-
- /* For now we only get the first returned server of the addrinfo list */
- memset(&(server->srcadr), 0, sizeof(struct sockaddr_storage));
- memcpy(&(server->srcadr), addrResult->ai_addr, addrResult->ai_addrlen);
- server->event_time = ++sys_numservers;
- if (sys_servers == NULL)
- sys_servers = server;
- else {
- struct server *sp;
+ /* We must get all returned server in case the first one fails */
+ for (ptr = addrResult; ptr != NULL; ptr = ptr->ai_next) {
+ if (is_reachable ((struct sockaddr_storage *)ptr->ai_addr)) {
+ server = (struct server *)emalloc(sizeof(struct server));
+ memset((char *)server, 0, sizeof(struct server));
+
+ memset(&(server->srcadr), 0, sizeof(struct sockaddr_storage));
+ memcpy(&(server->srcadr), ptr->ai_addr, ptr->ai_addrlen);
+ server->event_time = ++sys_numservers;
+ if (sys_servers == NULL)
+ sys_servers = server;
+ else {
+ struct server *sp;
- for (sp = sys_servers; sp->next_server != NULL;
- sp = sp->next_server) ;
- sp->next_server = server;
+ for (sp = sys_servers; sp->next_server != NULL;
+ sp = sp->next_server) ;
+ sp->next_server = server;
+ }
+ }
}
+
+ freeaddrinfo(addrResult);
}
@@ -1386,6 +1425,16 @@ findserver(
{
struct server *server;
struct server *mc_server;
+ isc_sockaddr_t laddr;
+ isc_sockaddr_t saddr;
+
+ if(addr->ss_family == AF_INET) {
+ isc_sockaddr_fromin( &laddr, &((struct sockaddr_in*)addr)->sin_addr, 0);
+ }
+ else {
+ isc_sockaddr_fromin6(&laddr, &((struct sockaddr_in6*)addr)->sin6_addr, 0);
+ }
+
mc_server = NULL;
if (htons(((struct sockaddr_in*)addr)->sin_port) != NTP_PORT)
@@ -1394,21 +1443,19 @@ findserver(
for (server = sys_servers; server != NULL;
server = server->next_server) {
- if (memcmp(addr, &server->srcadr, SOCKLEN(addr))==0)
+ if(server->srcadr.ss_family == AF_INET) {
+ isc_sockaddr_fromin(&saddr, &((struct sockaddr_in*)&server->srcadr)->sin_addr, 0);
+ }
+ else {
+ isc_sockaddr_fromin6(&saddr, &((struct sockaddr_in6*)&server->srcadr)->sin6_addr, 0);
+ }
+ if (isc_sockaddr_eqaddr(&laddr, &saddr) == ISC_TRUE)
return server;
- /* Multicast compatibility to verify here... I'm not sure it's working */
- if(addr->ss_family == AF_INET) {
- if (IN_MULTICAST(ntohl(((struct sockaddr_in*)addr)->sin_addr.s_addr)))
- mc_server = server;
- }
- else {
-#ifdef AF_INET6
- if (IN6_IS_ADDR_MULTICAST(&((struct sockaddr_in6*)(&server->srcadr))->sin6_addr))
- mc_server = server;
-#else
- return 0;
-#endif
- }
+
+ if(addr->ss_family == server->srcadr.ss_family) {
+ if (isc_sockaddr_ismulticast(&saddr) == ISC_TRUE)
+ mc_server = server;
+ }
}
if (mc_server != NULL) {
@@ -1423,7 +1470,7 @@ findserver(
server = (struct server *)emalloc(sizeof(struct server));
memset((char *)server, 0, sizeof(struct server));
- memcpy(&server->srcadr, &addr, sizeof(struct sockaddr_storage));
+ memcpy(&server->srcadr, addr, sizeof(struct sockaddr_storage));
server->event_time = ++sys_numservers;
@@ -1488,6 +1535,16 @@ alarming(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
#endif /* SYS_WINNT */
+#ifdef SYS_WINNT
+static void
+callTimeEndPeriod(void)
+{
+ timeEndPeriod( wTimerRes );
+ wTimerRes = 0;
+}
+#endif /* SYS_WINNT */
+
+
/*
* init_alarm - set up the timer interrupt
*/
@@ -1502,7 +1559,7 @@ init_alarm(void)
# endif
#else
TIMECAPS tc;
- UINT wTimerRes, wTimerID;
+ UINT wTimerID;
# endif /* SYS_WINNT */
#if defined SYS_CYGWIN32 || defined SYS_WINNT
HANDLE hToken;
@@ -1554,7 +1611,7 @@ init_alarm(void)
# endif
#if defined SYS_CYGWIN32
/*
- * Get previleges needed for fiddling with the clock
+ * Get privileges needed for fiddling with the clock
*/
/* get the current process token handle */
@@ -1564,7 +1621,7 @@ init_alarm(void)
}
/* get the LUID for system-time privilege. */
LookupPrivilegeValue(NULL, SE_SYSTEMTIME_NAME, &tkp.Privileges[0].Luid);
- tkp.PrivilegeCount = 1; /* one privilege to set */
+ tkp.PrivilegeCount = 1; /* one privilege to set */
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
/* get set-time privilege for this process. */
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES) NULL, 0);
@@ -1576,7 +1633,7 @@ init_alarm(void)
_tzset();
/*
- * Get previleges needed for fiddling with the clock
+ * Get privileges needed for fiddling with the clock
*/
/* get the current process token handle */
@@ -1586,7 +1643,7 @@ init_alarm(void)
}
/* get the LUID for system-time privilege. */
LookupPrivilegeValue(NULL, SE_SYSTEMTIME_NAME, &tkp.Privileges[0].Luid);
- tkp.PrivilegeCount = 1; /* one privilege to set */
+ tkp.PrivilegeCount = 1; /* one privilege to set */
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
/* get set-time privilege for this process. */
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES) NULL, 0);
@@ -1609,14 +1666,15 @@ init_alarm(void)
wTimerRes = min(max(tc.wPeriodMin, TARGET_RESOLUTION), tc.wPeriodMax);
/* establish the minimum timer resolution that we'll use */
timeBeginPeriod(wTimerRes);
+ atexit(callTimeEndPeriod);
/* start the timer event */
wTimerID = timeSetEvent(
- (UINT) (1000/TIMER_HZ), /* Delay */
- wTimerRes, /* Resolution */
- (LPTIMECALLBACK) alarming, /* Callback function */
- (DWORD) dwUser, /* User data */
- TIME_PERIODIC); /* Event type (periodic) */
+ (UINT) (1000/TIMER_HZ), /* Delay */
+ wTimerRes, /* Resolution */
+ (LPTIMECALLBACK) alarming, /* Callback function */
+ (DWORD) dwUser, /* User data */
+ TIME_PERIODIC); /* Event type (periodic) */
if (wTimerID == 0) {
msyslog(LOG_ERR, "timeSetEvent failed: %m");
exit(1);
@@ -1647,10 +1705,11 @@ init_alarm(void)
static void
init_io(void)
{
- struct addrinfo *res, *ressave;
- struct addrinfo hints;
+ struct addrinfo *res, *ressave;
+ struct addrinfo hints;
char service[5];
- int optval = 1;
+ int optval = 1;
+ int check_ntp_port_in_use = !debug && !simple_query && !unpriv_port;
/*
* Init buffer free list and stat counters
@@ -1663,123 +1722,137 @@ init_io(void)
strcpy(service, "ntp");
- /*
- * Init hints addrinfo structure
- */
- memset(&hints, 0, sizeof(hints));
- hints.ai_flags = AI_PASSIVE;
- hints.ai_socktype = SOCK_DGRAM;
-
- if(getaddrinfo(NULL, service, &hints, &res) != 0) {
- msyslog(LOG_ERR, "getaddrinfo() failed: %m");
- exit(1);
- /*NOTREACHED*/
- }
-
- /* Remember the address of the addrinfo structure chain */
- ressave = res;
-
- /*
- * For each structure returned, open and bind socket
- */
- for(nbsock = 0; (nbsock < MAX_AF) && res ; res = res->ai_next) {
+ /*
+ * Init hints addrinfo structure
+ */
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = ai_fam_templ;
+ hints.ai_flags = AI_PASSIVE;
+ hints.ai_socktype = SOCK_DGRAM;
+
+ if(getaddrinfo(NULL, service, &hints, &res) != 0) {
+ msyslog(LOG_ERR, "getaddrinfo() failed: %m");
+ exit(1);
+ /*NOTREACHED*/
+ }
+
+#ifdef SYS_WINNT
+ if (check_ntp_port_in_use && ntp_port_inuse(AF_INET, NTP_PORT)){
+ netsyslog(LOG_ERR, "the NTP socket is in use, exiting: %m");
+ exit(1);
+ }
+#endif
+
+ /* Remember the address of the addrinfo structure chain */
+ ressave = res;
+
+ /*
+ * For each structure returned, open and bind socket
+ */
+ for(nbsock = 0; (nbsock < MAX_AF) && res ; res = res->ai_next) {
/* create a datagram (UDP) socket */
- if ((fd[nbsock] = socket(res->ai_family, res->ai_socktype, res->ai_protocol)) < 0) {
+ fd[nbsock] = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
+ if (fd[nbsock] == SOCKET_ERROR) {
+#ifndef SYS_WINNT
if (errno == EPROTONOSUPPORT || errno == EAFNOSUPPORT ||
errno == EPFNOSUPPORT)
+#else
+ int err = WSAGetLastError();
+ if (err == WSAEPROTONOSUPPORT || err == WSAEAFNOSUPPORT ||
+ err == WSAEPFNOSUPPORT)
+#endif
continue;
netsyslog(LOG_ERR, "socket() failed: %m");
exit(1);
/*NOTREACHED*/
- }
- /* set socket to reuse address */
- if (setsockopt(fd[nbsock], SOL_SOCKET, SO_REUSEADDR, (void*) &optval, sizeof(optval)) < 0) {
- netsyslog(LOG_ERR, "setsockopt() SO_REUSEADDR failed: %m");
- exit(1);
- /*NOTREACHED*/
- }
+ }
+ /* set socket to reuse address */
+ if (setsockopt(fd[nbsock], SOL_SOCKET, SO_REUSEADDR, (void*) &optval, sizeof(optval)) < 0) {
+ netsyslog(LOG_ERR, "setsockopt() SO_REUSEADDR failed: %m");
+ exit(1);
+ /*NOTREACHED*/
+ }
#ifdef IPV6_V6ONLY
- /* Restricts AF_INET6 socket to IPv6 communications (see RFC 2553bis-03) */
- if (res->ai_family == AF_INET6)
- if (setsockopt(fd[nbsock], IPPROTO_IPV6, IPV6_V6ONLY, (void*) &optval, sizeof(optval)) < 0) {
- netsyslog(LOG_ERR, "setsockopt() IPV6_V6ONLY failed: %m");
- exit(1);
- /*NOTREACHED*/
- }
+ /* Restricts AF_INET6 socket to IPv6 communications (see RFC 2553bis-03) */
+ if (res->ai_family == AF_INET6)
+ if (setsockopt(fd[nbsock], IPPROTO_IPV6, IPV6_V6ONLY, (void*) &optval, sizeof(optval)) < 0) {
+ netsyslog(LOG_ERR, "setsockopt() IPV6_V6ONLY failed: %m");
+ exit(1);
+ /*NOTREACHED*/
+ }
#endif
- /* Remember the socket family in fd_family structure */
- fd_family[nbsock] = res->ai_family;
+ /* Remember the socket family in fd_family structure */
+ fd_family[nbsock] = res->ai_family;
- /*
- * bind the socket to the NTP port
- */
- if (!debug && !simple_query && !unpriv_port) {
- if (bind(fd[nbsock], res->ai_addr, SOCKLEN(res->ai_addr)) < 0) {
+ /*
+ * bind the socket to the NTP port
+ */
+ if (check_ntp_port_in_use) {
+ if (bind(fd[nbsock], res->ai_addr, SOCKLEN(res->ai_addr)) < 0) {
#ifndef SYS_WINNT
- if (errno == EADDRINUSE)
+ if (errno == EADDRINUSE)
#else
if (WSAGetLastError() == WSAEADDRINUSE)
#endif /* SYS_WINNT */
- netsyslog(LOG_ERR,
- "the NTP socket is in use, exiting");
+ netsyslog(LOG_ERR, "the NTP socket is in use, exiting");
else
- netsyslog(LOG_ERR, "bind() fails: %m");
- exit(1);
+ netsyslog(LOG_ERR, "bind() fails: %m");
+ exit(1);
+ }
}
- }
#ifdef HAVE_POLL_H
- fdmask[nbsock].fd = fd[nbsock];
- fdmask[nbsock].events = POLLIN;
+ fdmask[nbsock].fd = fd[nbsock];
+ fdmask[nbsock].events = POLLIN;
#else
- FD_SET(fd[nbsock], &fdmask);
- if ((SOCKET) maxfd < fd[nbsock]+1) {
- maxfd = fd[nbsock]+1;
- }
+ FD_SET(fd[nbsock], &fdmask);
+ if (maxfd < fd[nbsock]+1) {
+ maxfd = fd[nbsock]+1;
+ }
#endif
- /*
- * set non-blocking,
- */
+ /*
+ * set non-blocking,
+ */
#ifndef SYS_WINNT
# ifdef SYS_VXWORKS
- {
- int on = TRUE;
+ {
+ int on = TRUE;
- if (ioctl(fd[nbsock],FIONBIO, &on) == ERROR) {
- netsyslog(LOG_ERR, "ioctl(FIONBIO) fails: %m");
- exit(1);
- }
- }
+ if (ioctl(fd[nbsock],FIONBIO, &on) == ERROR) {
+ netsyslog(LOG_ERR, "ioctl(FIONBIO) fails: %m");
+ exit(1);
+ }
+ }
# else /* not SYS_VXWORKS */
# if defined(O_NONBLOCK)
- if (fcntl(fd[nbsock], F_SETFL, O_NONBLOCK) < 0) {
- netsyslog(LOG_ERR, "fcntl(FNDELAY|FASYNC) fails: %m");
- exit(1);
- /*NOTREACHED*/
- }
+ if (fcntl(fd[nbsock], F_SETFL, O_NONBLOCK) < 0) {
+ netsyslog(LOG_ERR, "fcntl(FNDELAY|FASYNC) fails: %m");
+ exit(1);
+ /*NOTREACHED*/
+ }
# else /* not O_NONBLOCK */
# if defined(FNDELAY)
- if (fcntl(fd[nbsock], F_SETFL, FNDELAY) < 0) {
- netsyslog(LOG_ERR, "fcntl(FNDELAY|FASYNC) fails: %m");
- exit(1);
- /*NOTREACHED*/
- }
+ if (fcntl(fd[nbsock], F_SETFL, FNDELAY) < 0) {
+ netsyslog(LOG_ERR, "fcntl(FNDELAY|FASYNC) fails: %m");
+ exit(1);
+ /*NOTREACHED*/
+ }
# else /* FNDELAY */
# include "Bletch: Need non blocking I/O"
# endif /* FNDELAY */
# endif /* not O_NONBLOCK */
# endif /* SYS_VXWORKS */
#else /* SYS_WINNT */
- if (ioctlsocket(fd[nbsock], FIONBIO, (u_long *) &on) == SOCKET_ERROR) {
- netsyslog(LOG_ERR, "ioctlsocket(FIONBIO) fails: %m");
- exit(1);
- }
+ if (ioctlsocket(fd[nbsock], FIONBIO, (u_long *) &on) == SOCKET_ERROR) {
+ netsyslog(LOG_ERR, "ioctlsocket(FIONBIO) fails: %m");
+ exit(1);
+ }
#endif /* SYS_WINNT */
- nbsock++;
- }
- freeaddrinfo(ressave);
+ nbsock++;
+ }
+ freeaddrinfo(ressave);
}
/*
@@ -1792,40 +1865,39 @@ sendpkt(
int len
)
{
- int i;
+ int i;
int cc;
- SOCKET sock = 0;
+ SOCKET sock = INVALID_SOCKET;
#ifdef SYS_WINNT
DWORD err;
#endif /* SYS_WINNT */
- /* Find a local family compatible socket to send ntp packet to ntp server */
- for(i = 0; (i < MAX_AF); i++) {
- if(dest->ss_family == fd_family[i]) {
- sock = fd[i];
- break;
- }
- }
+ /* Find a local family compatible socket to send ntp packet to ntp server */
+ for(i = 0; (i < MAX_AF); i++) {
+ if(dest->ss_family == fd_family[i]) {
+ sock = fd[i];
+ break;
+ }
+ }
- if ( sock == 0 ) {
- netsyslog(LOG_ERR, "cannot find family compatible socket to send ntp packet");
- exit(1);
- /*NOTREACHED*/
- }
+ if ( sock == INVALID_SOCKET ) {
+ netsyslog(LOG_ERR, "cannot find family compatible socket to send ntp packet");
+ exit(1);
+ /*NOTREACHED*/
+ }
cc = sendto(sock, (char *)pkt, len, 0, (struct sockaddr *)dest,
SOCKLEN(dest));
+ if (cc == SOCKET_ERROR) {
#ifndef SYS_WINNT
- if (cc == -1) {
if (errno != EWOULDBLOCK && errno != ENOBUFS)
#else
- if (cc == SOCKET_ERROR) {
err = WSAGetLastError();
if (err != WSAEWOULDBLOCK && err != WSAENOBUFS)
#endif /* SYS_WINNT */
- netsyslog(LOG_ERR, "sendto(%s): %m", stohost(dest));
+ netsyslog(LOG_ERR, "sendto(%s): %m", stohost(dest));
}
}
@@ -1841,13 +1913,13 @@ input_handler(void)
struct timeval tvzero;
int fromlen;
l_fp ts;
- int i;
+ int i;
#ifdef HAVE_POLL_H
struct pollfd fds[MAX_AF];
#else
fd_set fds;
#endif
- int fdc = 0;
+ int fdc = 0;
/*
* Do a poll to see if we have data
@@ -1856,33 +1928,33 @@ input_handler(void)
tvzero.tv_sec = tvzero.tv_usec = 0;
#ifdef HAVE_POLL_H
memcpy(fds, fdmask, sizeof(fdmask));
- n = poll(fds, (unsigned int)nbsock, tvzero.tv_sec * 1000);
+ n = poll(fds, (unsigned int)nbsock, tvzero.tv_sec * 1000);
- /*
- * Determine which socket received data
- */
+ /*
+ * Determine which socket received data
+ */
- for(i=0; i < nbsock; i++) {
- if(fds[i].revents & POLLIN) {
- fdc = fd[i];
- break;
- }
- }
+ for(i=0; i < nbsock; i++) {
+ if(fds[i].revents & POLLIN) {
+ fdc = fd[i];
+ break;
+ }
+ }
#else
fds = fdmask;
- n = select(maxfd, &fds, (fd_set *)0, (fd_set *)0, &tvzero);
+ n = select(maxfd, &fds, (fd_set *)0, (fd_set *)0, &tvzero);
- /*
- * Determine which socket received data
- */
+ /*
+ * Determine which socket received data
+ */
- for(i=0; i < maxfd; i++) {
- if(FD_ISSET(fd[i], &fds)) {
- fdc = fd[i];
- break;
- }
- }
+ for(i=0; i < nbsock; i++) {
+ if(FD_ISSET(fd[i], &fds)) {
+ fdc = fd[i];
+ break;
+ }
+ }
#endif
@@ -2057,7 +2129,7 @@ l_step_systime(
l_adj_systime(ts);
return 1;
#endif
-#else /* SLEWALWAYS */
+#else /* SLEWALWAYS */
if (debug)
return 1;
LFPTOD(ts, dtemp);
@@ -2223,3 +2295,34 @@ getnetinfoservers(void)
return(namelist);
}
#endif
+
+#ifdef SYS_WINNT
+isc_boolean_t ntp_port_inuse(int af, u_short port)
+{
+ /*
+ * Check if NTP socket is already in use on this system
+ * This is only for Windows Systems, as they tend not to fail on the real bind() below
+ */
+
+ SOCKET checksocket;
+ struct sockaddr_in checkservice;
+ checksocket = socket(af, SOCK_DGRAM, 0);
+ if (checksocket == INVALID_SOCKET) {
+ return (ISC_TRUE);
+ }
+
+ checkservice.sin_family = (short) AF_INET;
+ checkservice.sin_addr.s_addr = INADDR_LOOPBACK;
+ checkservice.sin_port = htons(port);
+
+ if (bind(checksocket, (struct sockaddr *)&checkservice,
+ sizeof(checkservice)) == SOCKET_ERROR) {
+ if ( WSAGetLastError() == WSAEADDRINUSE ){
+ closesocket(checksocket);
+ return (ISC_TRUE);
+ }
+ }
+ closesocket(checksocket);
+ return (ISC_FALSE);
+}
+#endif
diff --git a/contrib/ntp/ntpdate/ntptimeset.c b/contrib/ntp/ntpdate/ntptimeset.c
index 6d9332f..2485aad 100644
--- a/contrib/ntp/ntpdate/ntptimeset.c
+++ b/contrib/ntp/ntpdate/ntptimeset.c
@@ -141,7 +141,6 @@
#include <signal.h>
#include <ctype.h>
#ifndef SYS_WINNT
-# include <netdb.h>
# ifdef HAVE_SYS_SIGNAL_H
# include <sys/signal.h>
# else
@@ -403,7 +402,7 @@ ntptimesetmain(
)
{
int was_alarmed;
- struct recvbuf *rbuflist;
+ int tot_recvbufs;
struct recvbuf *rbuf;
l_fp tmp;
int errflg;
@@ -646,7 +645,6 @@ ntptimesetmain(
* yet to learn about anything else that is.
*/
was_alarmed = 0;
- rbuflist = (struct recvbuf *)0;
while (finish_time > current_time) {
#if !defined(HAVE_SIGNALED_IO)
fd_set rdfdes;
@@ -655,7 +653,7 @@ ntptimesetmain(
block_io_and_alarm();
#endif
- rbuflist = getrecvbufs(); /* get received buffers */
+ tot_recvbufs = full_recvbuffs(); /* get received buffers */
if (printmsg) {
printmsg = 0;
analysis(0);
@@ -665,7 +663,7 @@ ntptimesetmain(
alarm_flag = 0;
}
- if (!was_alarmed && rbuflist == (struct recvbuf *)0) {
+ if (!was_alarmed && tot_recvbufs > 0) {
/*
* Nothing to do. Wait for something.
*/
@@ -705,7 +703,7 @@ ntptimesetmain(
was_alarmed = 1;
alarm_flag = 0;
}
- rbuflist = getrecvbufs(); /* get received buffers */
+ tot_recvbufs = full_recvbuffs(); /* get received buffers */
}
#ifdef HAVE_SIGNALED_IO
unblock_io_and_alarm();
@@ -725,18 +723,13 @@ ntptimesetmain(
* Call the data procedure to handle each received
* packet.
*/
- while (rbuflist != (struct recvbuf *)0)
+ rbuf = get_full_recv_buffer();
+ while (rbuf != NULL)
{
- rbuf = rbuflist;
- rbuflist = rbuf->next;
receive(rbuf);
freerecvbuf(rbuf);
+ rbuf = get_full_recv_buffer();
}
-#if defined DEBUG && defined SYS_WINNT
- if (debug > 4)
- printf("getrecvbufs: %ld handler interrupts, %ld frames\n",
- handler_calls, handler_pkts);
-#endif
/*
* Do we have enough information to stop now?
diff --git a/contrib/ntp/ntpdc/Makefile.am b/contrib/ntp/ntpdc/Makefile.am
index f7a4d2a..858c523 100644
--- a/contrib/ntp/ntpdc/Makefile.am
+++ b/contrib/ntp/ntpdc/Makefile.am
@@ -1,26 +1,42 @@
-#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
-AUTOMAKE_OPTIONS = ../util/ansi2knr
+AUTOMAKE_OPTIONS= ../util/ansi2knr
+
+bindir= ${exec_prefix}/${BINSUBDIR}
bin_PROGRAMS= ntpdc
EXTRA_PROGRAMS= ntpdc-layout
EXTRA_DATA= check-layout
-BUILT_SOURCES= maybe-layout
-INCLUDES= -I$(top_srcdir)/include
+BUILT_SOURCES= @MAKE_CHECK_LAYOUT@
+AM_CPPFLAGS= -I$(top_srcdir)/include $(LIBOPTS_CFLAGS)
# LDADD might need RESLIB and ADJLIB
-ntpdc_LDADD= version.o ../libntp/libntp.a @READLINE_LIBS@
+ntpdc_LDADD= version.o @READLINE_LIBS@ $(LIBOPTS_LDADD) ../libntp/libntp.a
# ntpdc-layout doesn't need any additional libraries at all
ntpdc_layout_LDADD=
DISTCLEANFILES= .version version.c
CLEANFILES= check-layout layout.here nl.c ntpdc-layout
noinst_HEADERS= ntpdc.h
-EXTRA_DIST= nl_in.c nl.pl layout.std
ETAGS_ARGS= Makefile.am
+EXTRA_DIST= nl_in.c nl.pl layout.std \
+ ntpdc-opts.def ntpdc.1 ntpdc-opts.texi ntpdc-opts.menu
+BUILT_SOURCES+= ntpdc-opts.c ntpdc-opts.h ntpdc.1 ntpdc-opts.texi \
+ ntpdc-opts.menu
+man_MANS= ntpdc.1
+run_ag= cd $(srcdir) && autogen -L ../include --writable
+std_def_list= $(top_srcdir)/include/debug-opt.def \
+ $(top_srcdir)/include/autogen-version.def \
+ $(top_srcdir)/include/copyright.def \
+ $(top_srcdir)/include/homerc.def \
+ $(top_srcdir)/include/version.def
+
+$(srcdir)/ntpdc-opts.h: $(srcdir)/ntpdc-opts.c
+$(srcdir)/ntpdc-opts.c: $(srcdir)/ntpdc-opts.def $(std_def_list)
+ $(run_ag) ntpdc-opts.def
+
+$(srcdir)/ntpdc.1: $(srcdir)/ntpdc-opts.def $(std_def_list)
+ $(run_ag) -Tagman1.tpl -bntpdc ntpdc-opts.def
-ntpdc_SOURCES = ntpdc.c ntpdc_ops.c
+$(srcdir)/ntpdc-opts.texi $(srcdir)/ntpdc-opts.menu: $(srcdir)/ntpdc-opts.def $(std_def_list)
+ $(run_ag) -Taginfo.tpl -DLEVEL=section ntpdc-opts.def
-maybe-layout:
- @case "${PATH_PERL}" in \
- /*) ${MAKE} check-layout ;; \
- esac
+ntpdc_SOURCES = ntpdc.c ntpdc_ops.c ntpdc-opts.c ntpdc-opts.h
ntpdc-layout.o: nl.c
@@ -35,11 +51,16 @@ $(PROGRAMS): $(LDADD)
../libntp/libntp.a:
cd ../libntp && $(MAKE)
+$(top_srcdir)/version :
+ cd $(top_srcdir) && $(MAKE) version
+
version.o: $(ntpdc_OBJECTS) ../libntp/libntp.a Makefile $(top_srcdir)/version
env CSET=`cat $(top_srcdir)/version` $(top_builddir)/scripts/mkver ntpdc
$(COMPILE) -c version.c
# I ran nl_in.c (attached, to be installed into ntpdc) through
# $(CC) -E nl_in.c | nl.pl > nl.c
-nl.c: nl_in.c nl.pl
- $(CC) -E $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(srcdir)/nl_in.c | ./nl.pl > nl.c
+nl.c: nl_in.c nl.pl Makefile.am
+ $(CC) -E $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(srcdir)/nl_in.c | ./nl.pl > nl.c
+
+include ../bincheck.mf
diff --git a/contrib/ntp/ntpdc/Makefile.in b/contrib/ntp/ntpdc/Makefile.in
index 8ad0e05..30c96ac 100644
--- a/contrib/ntp/ntpdc/Makefile.in
+++ b/contrib/ntp/ntpdc/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -14,6 +14,11 @@
@SET_MAKE@
+# we traditionally installed software in bindir, while it should have gone
+# in sbindir. Now that we offer a choice, look in the "other" installation
+# subdir to warn folks if there is another version there.
+
+
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -21,7 +26,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +41,66 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+ANSI2KNR = ../util/ansi2knr
+bin_PROGRAMS = ntpdc$(EXEEXT)
+EXTRA_PROGRAMS = ntpdc-layout$(EXEEXT)
+DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/../bincheck.mf \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in $(srcdir)/nl.pl.in
+subdir = ntpdc
+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/hs_ulong_const.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 = nl.pl
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_ntpdc_OBJECTS = ntpdc$U.$(OBJEXT) ntpdc_ops$U.$(OBJEXT) \
+ ntpdc-opts$U.$(OBJEXT)
+ntpdc_OBJECTS = $(am_ntpdc_OBJECTS)
+am__DEPENDENCIES_1 =
+ntpdc_DEPENDENCIES = version.o $(am__DEPENDENCIES_1) \
+ ../libntp/libntp.a
+ntpdc_layout_SOURCES = ntpdc-layout.c
+ntpdc_layout_OBJECTS = ntpdc-layout$U.$(OBJEXT)
+ntpdc_layout_DEPENDENCIES =
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(ntpdc_SOURCES) ntpdc-layout.c
+DIST_SOURCES = $(ntpdc_SOURCES) ntpdc-layout.c
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +108,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +124,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,15 +179,22 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
-bindir = @bindir@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = ${exec_prefix}/${BINSUBDIR}
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
@@ -139,6 +214,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,88 +222,79 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-
-#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
-bin_PROGRAMS = ntpdc
-EXTRA_PROGRAMS = ntpdc-layout
EXTRA_DATA = check-layout
-BUILT_SOURCES = maybe-layout
-INCLUDES = -I$(top_srcdir)/include
+BUILT_SOURCES = @MAKE_CHECK_LAYOUT@ ntpdc-opts.c ntpdc-opts.h ntpdc.1 \
+ ntpdc-opts.texi ntpdc-opts.menu
+AM_CPPFLAGS = -I$(top_srcdir)/include $(LIBOPTS_CFLAGS)
# LDADD might need RESLIB and ADJLIB
-ntpdc_LDADD = version.o ../libntp/libntp.a @READLINE_LIBS@
+ntpdc_LDADD = version.o @READLINE_LIBS@ $(LIBOPTS_LDADD) ../libntp/libntp.a
# ntpdc-layout doesn't need any additional libraries at all
ntpdc_layout_LDADD =
DISTCLEANFILES = .version version.c
CLEANFILES = check-layout layout.here nl.c ntpdc-layout
noinst_HEADERS = ntpdc.h
-EXTRA_DIST = nl_in.c nl.pl layout.std
ETAGS_ARGS = Makefile.am
-
-ntpdc_SOURCES = ntpdc.c ntpdc_ops.c
-subdir = ntpdc
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = nl.pl
-EXTRA_PROGRAMS = ntpdc-layout$(EXEEXT)
-bin_PROGRAMS = ntpdc$(EXEEXT)
-PROGRAMS = $(bin_PROGRAMS)
-
-am_ntpdc_OBJECTS = ntpdc$U.$(OBJEXT) ntpdc_ops$U.$(OBJEXT)
-ntpdc_OBJECTS = $(am_ntpdc_OBJECTS)
-ntpdc_DEPENDENCIES = version.o ../libntp/libntp.a
-ntpdc_LDFLAGS =
-ntpdc_layout_SOURCES = ntpdc-layout.c
-ntpdc_layout_OBJECTS = ntpdc-layout$U.$(OBJEXT)
-ntpdc_layout_DEPENDENCIES =
-ntpdc_layout_LDFLAGS =
-
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ntpdc$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntpdc-layout$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntpdc_ops$U.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = $(ntpdc_SOURCES) ntpdc-layout.c
-HEADERS = $(noinst_HEADERS)
-
-DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.in \
- Makefile.am nl.pl.in
-SOURCES = $(ntpdc_SOURCES) ntpdc-layout.c
-
+EXTRA_DIST = nl_in.c nl.pl layout.std \
+ ntpdc-opts.def ntpdc.1 ntpdc-opts.texi ntpdc-opts.menu
+
+man_MANS = ntpdc.1
+run_ag = cd $(srcdir) && autogen -L ../include --writable
+std_def_list = $(top_srcdir)/include/debug-opt.def \
+ $(top_srcdir)/include/autogen-version.def \
+ $(top_srcdir)/include/copyright.def \
+ $(top_srcdir)/include/homerc.def \
+ $(top_srcdir)/include/version.def
+
+ntpdc_SOURCES = ntpdc.c ntpdc_ops.c ntpdc-opts.c ntpdc-opts.h
all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../bincheck.mf $(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 ntpdc/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu ntpdc/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-nl.pl: $(top_builddir)/config.status nl.pl.in
+ $(AUTOMAKE) --foreign ntpdc/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
+nl.pl: $(top_builddir)/config.status $(srcdir)/nl.pl.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
+ || test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
@@ -235,12 +302,16 @@ uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
- rm -f $(DESTDIR)$(bindir)/$$f; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
ntpdc$(EXEEXT): $(ntpdc_OBJECTS) $(ntpdc_DEPENDENCIES)
@rm -f ntpdc$(EXEEXT)
$(LINK) $(ntpdc_LDFLAGS) $(ntpdc_OBJECTS) $(ntpdc_LDADD) $(LIBS)
@@ -249,12 +320,10 @@ ntpdc-layout$(EXEEXT): $(ntpdc_layout_OBJECTS) $(ntpdc_layout_DEPENDENCIES)
$(LINK) $(ntpdc_layout_LDFLAGS) $(ntpdc_layout_OBJECTS) $(ntpdc_layout_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-
-ANSI2KNR = ../util/ansi2knr
../util/ansi2knr:
cd ../util && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
@@ -263,46 +332,95 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdc$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdc-layout$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdc-opts$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpdc_ops$U.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
ntpdc_.c: ntpdc.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpdc.c; then echo $(srcdir)/ntpdc.c; else echo ntpdc.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntpdc-layout_.c: ntpdc-layout.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpdc-layout.c; then echo $(srcdir)/ntpdc-layout.c; else echo ntpdc-layout.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+ntpdc-opts_.c: ntpdc-opts.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpdc-opts.c; then echo $(srcdir)/ntpdc-opts.c; else echo ntpdc-opts.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntpdc_ops_.c: ntpdc_ops.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpdc_ops.c; then echo $(srcdir)/ntpdc_ops.c; else echo ntpdc_ops.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-ntpdc_.$(OBJEXT) ntpdc-layout_.$(OBJEXT) ntpdc_ops_.$(OBJEXT) : \
-$(ANSI2KNR)
-uninstall-info-am:
+ntpdc_.$(OBJEXT) ntpdc_.lo ntpdc-layout_.$(OBJEXT) ntpdc-layout_.lo \
+ntpdc-opts_.$(OBJEXT) ntpdc-opts_.lo ntpdc_ops_.$(OBJEXT) \
+ntpdc_ops_.lo : $(ANSI2KNR)
-ETAGS = etags
-ETAGSFLAGS =
+mostlyclean-libtool:
+ -rm -f *.lo
-CTAGS = ctags
-CTAGSFLAGS =
+clean-libtool:
+ -rm -rf .libs _libs
-tags: TAGS
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-man1: $(man1_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+ else file=$$i; fi; \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
+ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -312,6 +430,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -323,10 +442,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -349,12 +469,9 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
+ $(mkdir_p) $(distdir)/..
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@@ -366,7 +483,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -384,10 +501,11 @@ distdir: $(DISTFILES)
check-am: all-am
check: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) check-am
-all-am: Makefile $(PROGRAMS) $(HEADERS)
-
+all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS)
installdirs:
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
install: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-am
install-exec: install-exec-am
@@ -400,7 +518,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -409,7 +527,7 @@ clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@@ -418,42 +536,45 @@ maintainer-clean-generic:
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
clean: clean-am
-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+ distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
-install-data-am:
+install-data-am: install-man
install-exec-am: install-binPROGRAMS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
install-info: install-info-am
-install-man:
+install-man: install-man1
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool
pdf: pdf-am
@@ -463,24 +584,34 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-man
+
+uninstall-man: uninstall-man1
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am info \
- info-am install install-am install-binPROGRAMS install-data \
- install-data-am install-exec install-exec-am install-info \
- install-info-am install-man install-strip installcheck \
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-exec \
+ install-exec-am install-exec-hook install-info install-info-am \
+ install-man install-man1 install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-kr pdf pdf-am ps ps-am tags \
- uninstall uninstall-am uninstall-binPROGRAMS uninstall-info-am
+ mostlyclean-generic mostlyclean-kr mostlyclean-libtool pdf \
+ pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-info-am uninstall-man \
+ uninstall-man1
-maybe-layout:
- @case "${PATH_PERL}" in \
- /*) ${MAKE} check-layout ;; \
- esac
+$(srcdir)/ntpdc-opts.h: $(srcdir)/ntpdc-opts.c
+$(srcdir)/ntpdc-opts.c: $(srcdir)/ntpdc-opts.def $(std_def_list)
+ $(run_ag) ntpdc-opts.def
+
+$(srcdir)/ntpdc.1: $(srcdir)/ntpdc-opts.def $(std_def_list)
+ $(run_ag) -Tagman1.tpl -bntpdc ntpdc-opts.def
+
+$(srcdir)/ntpdc-opts.texi $(srcdir)/ntpdc-opts.menu: $(srcdir)/ntpdc-opts.def $(std_def_list)
+ $(run_ag) -Taginfo.tpl -DLEVEL=section ntpdc-opts.def
ntpdc-layout.o: nl.c
@@ -495,14 +626,29 @@ $(PROGRAMS): $(LDADD)
../libntp/libntp.a:
cd ../libntp && $(MAKE)
+$(top_srcdir)/version :
+ cd $(top_srcdir) && $(MAKE) version
+
version.o: $(ntpdc_OBJECTS) ../libntp/libntp.a Makefile $(top_srcdir)/version
env CSET=`cat $(top_srcdir)/version` $(top_builddir)/scripts/mkver ntpdc
$(COMPILE) -c version.c
# I ran nl_in.c (attached, to be installed into ntpdc) through
# $(CC) -E nl_in.c | nl.pl > nl.c
-nl.c: nl_in.c nl.pl
- $(CC) -E $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(srcdir)/nl_in.c | ./nl.pl > nl.c
+nl.c: nl_in.c nl.pl Makefile.am
+ $(CC) -E $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(srcdir)/nl_in.c | ./nl.pl > nl.c
+
+install-exec-hook:
+ @case ${BINSUBDIR} in \
+ bin) ODIR=${exec_prefix}/sbin ;; \
+ sbin) ODIR=${exec_prefix}/bin ;; \
+ esac; \
+ test -z "${bin_PROGRAMS}${bin_SCRIPTS}" \
+ || for i in ${bin_PROGRAMS} ${bin_SCRIPTS} " "; do \
+ test ! -f $$ODIR/$$i || echo "*** $$i is also in $$ODIR!"; \
+ done
+
+#
# 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/contrib/ntp/ntpdc/layout.std b/contrib/ntp/ntpdc/layout.std
index 0a67b73..daff636 100644
--- a/contrib/ntp/ntpdc/layout.std
+++ b/contrib/ntp/ntpdc/layout.std
@@ -410,6 +410,28 @@ offsetof(calcnt) = 48
offsetof(errcnt) = 52
offsetof(stbcnt) = 56
+sizeof(struct info_if_stats) = 136
+offsetof(unaddr) = 0
+offsetof(unbcast) = 16
+offsetof(unmask) = 32
+offsetof(v6_flag) = 48
+offsetof(name) = 52
+offsetof(flags) = 84
+offsetof(last_ttl) = 88
+offsetof(num_mcast) = 92
+offsetof(received) = 96
+offsetof(sent) = 100
+offsetof(notsent) = 104
+offsetof(uptime) = 108
+offsetof(scopeid) = 112
+offsetof(ifindex) = 116
+offsetof(ifnum) = 120
+offsetof(peercnt) = 124
+offsetof(family) = 128
+offsetof(ignore_packets) = 130
+offsetof(action) = 131
+offsetof(_filler0) = 132
+
sizeof(struct info_dns_assoc) = 32
offsetof(peeraddr) = 0
offsetof(associd) = 4
diff --git a/contrib/ntp/ntpdc/nl.pl b/contrib/ntp/ntpdc/nl.pl
index 6974fe2..afea8b7 100755
--- a/contrib/ntp/ntpdc/nl.pl
+++ b/contrib/ntp/ntpdc/nl.pl
@@ -20,13 +20,13 @@ while (<>) {
printf " printf(\"sizeof($type) = %%d\\n\", \n\t (int) sizeof($type));\n";
next;
}
- if (/\s*\w+\s*(\w*)(\[.*\])?\s*;\s*$/) {
+ if (/\s*\w+\s+(\w*)\s*(\[.*\])?\s*;\s*$/) {
$field = $1;
print STDERR "\tfield = '$field'\n" if $debug;
printf " printf(\"offsetof($field) = %%d\\n\", \n\t (int) offsetof($type, $field));\n";
next;
}
- if (/^};$/) {
+ if (/^}\s*;\s*$/) {
printf " printf(\"\\n\");\n\n";
$found = 0 if $last;
next;
diff --git a/contrib/ntp/ntpdc/nl.pl.in b/contrib/ntp/ntpdc/nl.pl.in
index dfa79c2..813dc1f 100644
--- a/contrib/ntp/ntpdc/nl.pl.in
+++ b/contrib/ntp/ntpdc/nl.pl.in
@@ -20,13 +20,13 @@ while (<>) {
printf " printf(\"sizeof($type) = %%d\\n\", \n\t (int) sizeof($type));\n";
next;
}
- if (/\s*\w+\s*(\w*)(\[.*\])?\s*;\s*$/) {
+ if (/\s*\w+\s+(\w*)\s*(\[.*\])?\s*;\s*$/) {
$field = $1;
print STDERR "\tfield = '$field'\n" if $debug;
printf " printf(\"offsetof($field) = %%d\\n\", \n\t (int) offsetof($type, $field));\n";
next;
}
- if (/^};$/) {
+ if (/^}\s*;\s*$/) {
printf " printf(\"\\n\");\n\n";
$found = 0 if $last;
next;
diff --git a/contrib/ntp/ntpdc/ntpdc-opts.c b/contrib/ntp/ntpdc/ntpdc-opts.c
new file mode 100644
index 0000000..d3c2549
--- /dev/null
+++ b/contrib/ntp/ntpdc/ntpdc-opts.c
@@ -0,0 +1,667 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (ntpdc-opts.c)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:26:25 AM EDT
+ * From the definitions ntpdc-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This source file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * ntpdc author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * ntpdc copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+
+
+#include <limits.h>
+
+#define OPTION_CODE_COMPILE 1
+#include "ntpdc-opts.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+tSCC zCopyright[] =
+ "ntpdc copyright (c) 1970-2008 David L. Mills and/or others, all rights reserved";
+tSCC zCopyrightNotice[] =
+
+/* extracted from ../include/copyright.def near line 8 */
+"see html/copyright.html";
+extern tUsageProc optionUsage;
+
+/*
+ * global included definitions
+ */
+#ifdef __windows
+ extern int atoi(const char*);
+#else
+# include <stdlib.h>
+#endif
+
+#ifndef NULL
+# define NULL 0
+#endif
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+/*
+ * Ipv4 option description:
+ */
+tSCC zIpv4Text[] =
+ "Force IPv4 DNS name resolution";
+tSCC zIpv4_NAME[] = "IPV4";
+tSCC zIpv4_Name[] = "ipv4";
+#define IPV4_FLAGS (OPTST_DISABLED)
+
+/*
+ * Ipv6 option description:
+ */
+tSCC zIpv6Text[] =
+ "Force IPv6 DNS name resolution";
+tSCC zIpv6_NAME[] = "IPV6";
+tSCC zIpv6_Name[] = "ipv6";
+#define IPV6_FLAGS (OPTST_DISABLED)
+
+/*
+ * Command option description:
+ */
+tSCC zCommandText[] =
+ "run a command and exit";
+tSCC zCommand_NAME[] = "COMMAND";
+tSCC zCommand_Name[] = "command";
+#define COMMAND_FLAGS (OPTST_DISABLED | OPTST_STACKED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Listpeers option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zListpeersText[] =
+ "Print a list of the peers";
+tSCC zListpeers_NAME[] = "LISTPEERS";
+tSCC zListpeers_Name[] = "listpeers";
+static const int
+ aListpeersCantList[] = {
+ INDEX_OPT_COMMAND, NO_EQUIVALENT };
+#define LISTPEERS_FLAGS (OPTST_DISABLED)
+
+/*
+ * Peers option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zPeersText[] =
+ "Print a list of the peers";
+tSCC zPeers_NAME[] = "PEERS";
+tSCC zPeers_Name[] = "peers";
+static const int
+ aPeersCantList[] = {
+ INDEX_OPT_COMMAND, NO_EQUIVALENT };
+#define PEERS_FLAGS (OPTST_DISABLED)
+
+/*
+ * Showpeers option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zShowpeersText[] =
+ "Show a list of the peers";
+tSCC zShowpeers_NAME[] = "SHOWPEERS";
+tSCC zShowpeers_Name[] = "showpeers";
+static const int
+ aShowpeersCantList[] = {
+ INDEX_OPT_COMMAND, NO_EQUIVALENT };
+#define SHOWPEERS_FLAGS (OPTST_DISABLED)
+
+/*
+ * Interactive option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zInteractiveText[] =
+ "Force ntpq to operate in interactive mode";
+tSCC zInteractive_NAME[] = "INTERACTIVE";
+tSCC zInteractive_Name[] = "interactive";
+static const int
+ aInteractiveCantList[] = {
+ INDEX_OPT_COMMAND,
+ INDEX_OPT_LISTPEERS,
+ INDEX_OPT_PEERS,
+ INDEX_OPT_SHOWPEERS, NO_EQUIVALENT };
+#define INTERACTIVE_FLAGS (OPTST_DISABLED)
+
+/*
+ * Debug_Level option description:
+ */
+#ifdef DEBUG
+tSCC zDebug_LevelText[] =
+ "Increase output debug message level";
+tSCC zDebug_Level_NAME[] = "DEBUG_LEVEL";
+tSCC zDebug_Level_Name[] = "debug-level";
+#define DEBUG_LEVEL_FLAGS (OPTST_DISABLED)
+
+#else /* disable Debug_Level */
+#define VALUE_OPT_DEBUG_LEVEL NO_EQUIVALENT
+#define DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zDebug_LevelText NULL
+#define zDebug_Level_NAME NULL
+#define zDebug_Level_Name NULL
+#endif /* DEBUG */
+
+/*
+ * Set_Debug_Level option description:
+ */
+#ifdef DEBUG
+tSCC zSet_Debug_LevelText[] =
+ "Set the output debug message level";
+tSCC zSet_Debug_Level_NAME[] = "SET_DEBUG_LEVEL";
+tSCC zSet_Debug_Level_Name[] = "set-debug-level";
+#define SET_DEBUG_LEVEL_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+#else /* disable Set_Debug_Level */
+#define VALUE_OPT_SET_DEBUG_LEVEL NO_EQUIVALENT
+#define SET_DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zSet_Debug_LevelText NULL
+#define zSet_Debug_Level_NAME NULL
+#define zSet_Debug_Level_Name NULL
+#endif /* DEBUG */
+
+/*
+ * Numeric option description:
+ */
+tSCC zNumericText[] =
+ "numeric host addresses";
+tSCC zNumeric_NAME[] = "NUMERIC";
+tSCC zNumeric_Name[] = "numeric";
+#define NUMERIC_FLAGS (OPTST_DISABLED)
+
+/*
+ * Help/More_Help/Version option descriptions:
+ */
+tSCC zHelpText[] = "Display usage information and exit";
+tSCC zHelp_Name[] = "help";
+
+tSCC zMore_HelpText[] = "Extended usage information passed thru pager";
+tSCC zMore_Help_Name[] = "more-help";
+
+tSCC zVersionText[] = "Output version information and exit";
+tSCC zVersion_Name[] = "version";
+
+/*
+ * Save/Load_Opts option description:
+ */
+tSCC zSave_OptsText[] = "Save the option state to a config file";
+tSCC zSave_Opts_Name[] = "save-opts";
+
+tSCC zLoad_OptsText[] = "Load options from a config file";
+tSCC zLoad_Opts_NAME[] = "LOAD_OPTS";
+
+tSCC zNotLoad_Opts_Name[] = "no-load-opts";
+tSCC zNotLoad_Opts_Pfx[] = "no";
+#define zLoad_Opts_Name (zNotLoad_Opts_Name + 3)
+/*
+ * Declare option callback procedures
+ */
+#ifdef DEBUG
+ static tOptProc doOptSet_Debug_Level;
+#else /* not DEBUG */
+# define doOptSet_Debug_Level NULL
+#endif /* def/not DEBUG */
+#if defined(TEST_NTPDC_OPTS)
+/*
+ * Under test, omit argument processing, or call optionStackArg,
+ * if multiple copies are allowed.
+ */
+extern tOptProc
+ optionPagedUsage, optionStackArg, optionVersionStderr;
+static tOptProc
+ doUsageOpt;
+
+/*
+ * #define map the "normal" callout procs to the test ones...
+ */
+#define SET_DEBUG_LEVEL_OPT_PROC optionStackArg
+
+
+#else /* NOT defined TEST_NTPDC_OPTS */
+/*
+ * When not under test, there are different procs to use
+ */
+extern tOptProc
+ optionPagedUsage, optionPrintVersion, optionStackArg;
+static tOptProc
+ doUsageOpt;
+
+/*
+ * #define map the "normal" callout procs
+ */
+#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
+
+#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
+#endif /* defined(TEST_NTPDC_OPTS) */
+#ifdef TEST_NTPDC_OPTS
+# define DOVERPROC optionVersionStderr
+#else
+# define DOVERPROC optionPrintVersion
+#endif /* TEST_NTPDC_OPTS */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Ntpdc Option Descriptions.
+ */
+static tOptDesc optDesc[ OPTION_CT ] = {
+ { /* entry idx, value */ 0, VALUE_OPT_IPV4,
+ /* equiv idx, value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ IPV4_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIpv4Text, zIpv4_NAME, zIpv4_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 1, VALUE_OPT_IPV6,
+ /* equiv idx, value */ NOLIMIT, NOLIMIT,
+ /* equivalenced to */ INDEX_OPT_IPV4,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ IPV6_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIpv6Text, zIpv6_NAME, zIpv6_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 2, VALUE_OPT_COMMAND,
+ /* equiv idx, value */ 2, VALUE_OPT_COMMAND,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ COMMAND_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionStackArg,
+ /* desc, NAME, name */ zCommandText, zCommand_NAME, zCommand_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 3, VALUE_OPT_LISTPEERS,
+ /* equiv idx, value */ 3, VALUE_OPT_LISTPEERS,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ LISTPEERS_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aListpeersCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zListpeersText, zListpeers_NAME, zListpeers_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 4, VALUE_OPT_PEERS,
+ /* equiv idx, value */ 4, VALUE_OPT_PEERS,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PEERS_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aPeersCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPeersText, zPeers_NAME, zPeers_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 5, VALUE_OPT_SHOWPEERS,
+ /* equiv idx, value */ 5, VALUE_OPT_SHOWPEERS,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SHOWPEERS_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aShowpeersCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zShowpeersText, zShowpeers_NAME, zShowpeers_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 6, VALUE_OPT_INTERACTIVE,
+ /* equiv idx, value */ 6, VALUE_OPT_INTERACTIVE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ INTERACTIVE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aInteractiveCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zInteractiveText, zInteractive_NAME, zInteractive_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 7, VALUE_OPT_DEBUG_LEVEL,
+ /* equiv idx, value */ 7, VALUE_OPT_DEBUG_LEVEL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ DEBUG_LEVEL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zDebug_LevelText, zDebug_Level_NAME, zDebug_Level_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 8, VALUE_OPT_SET_DEBUG_LEVEL,
+ /* equiv idx, value */ 8, VALUE_OPT_SET_DEBUG_LEVEL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ SET_DEBUG_LEVEL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ SET_DEBUG_LEVEL_OPT_PROC,
+ /* desc, NAME, name */ zSet_Debug_LevelText, zSet_Debug_Level_NAME, zSet_Debug_Level_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 9, VALUE_OPT_NUMERIC,
+ /* equiv idx, value */ 9, VALUE_OPT_NUMERIC,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ NUMERIC_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zNumericText, zNumeric_NAME, zNumeric_Name,
+ /* disablement strs */ NULL, NULL },
+
+#ifdef NO_OPTIONAL_OPT_ARGS
+# define VERSION_OPT_FLAGS OPTST_IMM | OPTST_NO_INIT
+#else
+# define VERSION_OPT_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+ OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
+#endif
+
+ { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ VERSION_OPT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ DOVERPROC,
+ /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
+ /* disablement strs */ NULL, NULL },
+
+#undef VERSION_OPT_FLAGS
+
+
+ { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ doUsageOpt,
+ /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionPagedUsage,
+ /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
+ | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSave_OptsText, NULL, zSave_Opts_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) \
+ | OPTST_DISABLE_IMM, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionLoadOpt,
+ /* desc, NAME, name */ zLoad_OptsText, zLoad_Opts_NAME, zLoad_Opts_Name,
+ /* disablement strs */ zNotLoad_Opts_Name, zNotLoad_Opts_Pfx }
+};
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Ntpdc Option Environment
+ */
+tSCC zPROGNAME[] = "NTPDC";
+tSCC zUsageTitle[] =
+"ntpdc - vendor-specific NTP query program - Ver. 4.2.4p5\n\
+USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...]\n";
+tSCC zRcName[] = ".ntprc";
+tSCC* apzHomeList[] = {
+ "$HOME",
+ ".",
+ NULL };
+
+tSCC zBugsAddr[] = "http://bugs.ntp.isc.org, bugs@ntp.org";
+#define zExplain NULL
+tSCC zDetail[] = "\n\
+The\n\
+[= prog-name =]\n\
+utility program is used to query an NTP daemon about its\n\
+current state and to request changes in that state.\n\
+It uses NTP mode 7 control message formats described in the source code.\n\
+The program may\n\
+be run either in interactive mode or controlled using command line\n\
+arguments.\n\
+Extensive state and statistics information is available\n\
+through the\n\
+[= prog-name =]\n\
+interface.\n\
+In addition, nearly all the\n\
+configuration options which can be specified at startup using\n\
+ntpd's configuration file may also be specified at run time using\n\
+[= prog-name =] .\n";
+tSCC zFullVersion[] = NTPDC_FULL_VERSION;
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 408 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE
+ static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+tOptions ntpdcOptions = {
+ OPTIONS_STRUCT_VERSION,
+ 0, NULL, /* original argc + argv */
+ ( OPTPROC_BASE
+ + OPTPROC_ERRSTOP
+ + OPTPROC_SHORTOPT
+ + OPTPROC_LONGOPT
+ + OPTPROC_NO_REQ_OPT
+ + OPTPROC_ENVIRON
+ + OPTPROC_HAS_IMMED ),
+ 0, NULL, /* current option index, current option */
+ NULL, NULL, zPROGNAME,
+ zRcName, zCopyright, zCopyrightNotice,
+ zFullVersion, apzHomeList, zUsageTitle,
+ zExplain, zDetail, optDesc,
+ zBugsAddr, /* address to send bugs to */
+ NULL, NULL, /* extensions/saved state */
+ optionUsage, /* usage procedure */
+ translate_option_strings, /* translation procedure */
+ /*
+ * Indexes to special options
+ */
+ { INDEX_OPT_MORE_HELP,
+ INDEX_OPT_SAVE_OPTS,
+ NO_EQUIVALENT /* index of '-#' option */,
+ NO_EQUIVALENT /* index of default opt */
+ },
+ 15 /* full option count */, 10 /* user option count */
+};
+
+/*
+ * Create the static procedure(s) declared above.
+ */
+static void
+doUsageOpt(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ USAGE( EXIT_SUCCESS );
+}
+
+#if ! defined(TEST_NTPDC_OPTS)
+
+/* * * * * * *
+ *
+ * For the set-debug-level option, when DEBUG is #define-d.
+ */
+#ifdef DEBUG
+static void
+doOptSet_Debug_Level(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ /* extracted from ../include/debug-opt.def, line 29 */
+DESC(DEBUG_LEVEL).optOccCt = atoi( pOptDesc->pzLastArg );
+}
+#endif /* defined DEBUG */
+
+#endif /* defined(TEST_NTPDC_OPTS) */
+
+/* extracted from /usr/local/gnu/share/autogen/optmain.tpl near line 92 */
+
+#if defined(TEST_NTPDC_OPTS) /* TEST MAIN PROCEDURE: */
+
+int
+main( int argc, char** argv )
+{
+ int res = EXIT_SUCCESS;
+ (void)optionProcess( &ntpdcOptions, argc, argv );
+ {
+ void optionPutShell( tOptions* );
+ optionPutShell( &ntpdcOptions );
+ }
+ return res;
+}
+#endif /* defined TEST_NTPDC_OPTS */
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 514 */
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext( char const* pz );
+static void coerce_it(void** s);
+
+static char*
+AO_gettext( char const* pz )
+{
+ char* pzRes;
+ if (pz == NULL)
+ return NULL;
+ pzRes = _(pz);
+ if (pzRes == pz)
+ return pzRes;
+ pzRes = strdup( pzRes );
+ if (pzRes == NULL) {
+ fputs( _("No memory for duping translated strings\n"), stderr );
+ exit( EXIT_FAILURE );
+ }
+ return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s); }
+#define COERSION(_f) \
+ coerce_it((void*)&(ntpdcOptions._f))
+
+/*
+ * This invokes the translation code (e.g. gettext(3)).
+ */
+static void
+translate_option_strings( void )
+{
+ /*
+ * Guard against re-translation. It won't work. The strings will have
+ * been changed by the first pass through this code. One shot only.
+ */
+ if (option_usage_text.field_ct == 0)
+ return;
+ /*
+ * Do the translations. The first pointer follows the field count field.
+ * The field count field is the size of a pointer.
+ */
+ {
+ char** ppz = (char**)(void*)&(option_usage_text);
+ int ix = option_usage_text.field_ct;
+
+ do {
+ ppz++;
+ *ppz = AO_gettext(*ppz);
+ } while (--ix > 0);
+ }
+ option_usage_text.field_ct = 0;
+
+ {
+ tOptDesc* pOD = ntpdcOptions.pOptDesc;
+ int ix = ntpdcOptions.optCt;
+
+ for (;;) {
+ pOD->pzText = AO_gettext(pOD->pzText);
+ pOD->pz_NAME = AO_gettext(pOD->pz_NAME);
+ pOD->pz_Name = AO_gettext(pOD->pz_Name);
+ pOD->pz_DisableName = AO_gettext(pOD->pz_DisableName);
+ pOD->pz_DisablePfx = AO_gettext(pOD->pz_DisablePfx);
+ if (--ix <= 0)
+ break;
+ pOD++;
+ }
+ }
+ COERSION(pzCopyright);
+ COERSION(pzCopyNotice);
+ COERSION(pzFullVersion);
+ COERSION(pzUsageTitle);
+ COERSION(pzExplain);
+ COERSION(pzDetail);
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef __cplusplus
+}
+#endif
+/* ntpdc-opts.c ends here */
diff --git a/contrib/ntp/ntpdc/ntpdc-opts.def b/contrib/ntp/ntpdc/ntpdc-opts.def
new file mode 100644
index 0000000..0b5aefe
--- /dev/null
+++ b/contrib/ntp/ntpdc/ntpdc-opts.def
@@ -0,0 +1,127 @@
+/* -*- Mode: Text -*- */
+
+autogen definitions options;
+
+prog-name = "ntpdc";
+prog-title = "vendor-specific NTP query program";
+argument = '[ host ...]';
+
+#include copyright.def
+#include homerc.def
+#include autogen-version.def
+
+test-main;
+
+flag = {
+ name = ipv4;
+ value = 4;
+ equivalence = ipv4;
+ descrip = "Force IPv4 DNS name resolution";
+ doc = <<- _EndOfDoc_
+ Force DNS resolution of following host names on the command line
+ to the IPv4 namespace.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = ipv6;
+ value = 6;
+ equivalence = ipv4;
+ descrip = "Force IPv6 DNS name resolution";
+ doc = <<- _EndOfDoc_
+ Force DNS resolution of following host names on the command line
+ to the IPv6 namespace.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = command;
+ value = c;
+ arg-type = string;
+ descrip = "run a command and exit";
+ max = NOLIMIT;
+ arg-name = cmd;
+ stack-arg;
+ doc = <<- _EndOfDoc_
+ The following argument is interpreted as an interactive format command
+ and is added to the list of commands to be executed on the specified
+ host(s).
+ _EndOfDoc_;
+};
+
+flag = {
+ name = listpeers;
+ value = l;
+ descrip = "Print a list of the peers";
+ flags-cant = command;
+ doc = <<- _EndOfDoc_
+ Print a list of the peers known to the server as well as a summary of
+ their state. This is equivalent to the 'listpeers' interactive command.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = peers;
+ value = p;
+ descrip = "Print a list of the peers";
+ flags-cant = command;
+ doc = <<- _EndOfDoc_
+ Print a list of the peers known to the server as well as a summary
+ of their state. This is equivalent to the 'peers' interactive command.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = showpeers;
+ value = s;
+ descrip = "Show a list of the peers";
+ flags-cant = command;
+ doc = <<- _EndOfDoc_
+ Print a list of the peers known to the server as well as a summary
+ of their state. This is equivalent to the 'dmpeers' interactive command.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = interactive;
+ value = i;
+ flags-cant = command, listpeers, peers, showpeers;
+ descrip = "Force ntpq to operate in interactive mode";
+ doc = <<- _EndOfDoc_
+ Force ntpq to operate in interactive mode. Prompts will be written
+ to the standard output and commands read from the standard input.
+ _EndOfDoc_;
+};
+
+#include debug-opt.def
+
+flag = {
+ name = numeric;
+ value = n;
+ descrip = "numeric host addresses";
+ doc = <<- _EndOfDoc_
+ Output all host addresses in dotted-quad numeric format rather than
+ converting to the canonical host names.
+ _EndOfDoc_;
+};
+
+detail = <<- _END_DETAIL
+ The
+ [= prog-name =]
+ utility program is used to query an NTP daemon about its
+ current state and to request changes in that state.
+ It uses NTP mode 7 control message formats described in the source code.
+ The program may
+ be run either in interactive mode or controlled using command line
+ arguments.
+ Extensive state and statistics information is available
+ through the
+ [= prog-name =]
+ interface.
+ In addition, nearly all the
+ configuration options which can be specified at startup using
+ ntpd's configuration file may also be specified at run time using
+ [= prog-name =] .
+
+
+ _END_DETAIL;
diff --git a/contrib/ntp/ntpdc/ntpdc-opts.h b/contrib/ntp/ntpdc/ntpdc-opts.h
new file mode 100644
index 0000000..a4bf99f
--- /dev/null
+++ b/contrib/ntp/ntpdc/ntpdc-opts.h
@@ -0,0 +1,222 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (ntpdc-opts.h)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:26:25 AM EDT
+ * From the definitions ntpdc-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This header file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * ntpdc author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * ntpdc copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+/*
+ * This file contains the programmatic interface to the Automated
+ * Options generated for the ntpdc program.
+ * These macros are documented in the AutoGen info file in the
+ * "AutoOpts" chapter. Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_NTPDC_OPTS_H_GUARD
+#define AUTOOPTS_NTPDC_OPTS_H_GUARD
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ * Ensure that the library used for compiling this generated header is at
+ * least as new as the version current when the header template was released
+ * (not counting patch version increments). Also ensure that the oldest
+ * tolerable version is at least as old as what was current when the header
+ * template was released.
+ */
+#define AO_TEMPLATE_VERSION 118784
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+ Choke Me.
+#endif
+
+/*
+ * Enumeration of each option:
+ */
+typedef enum {
+ INDEX_OPT_IPV4 = 0,
+ INDEX_OPT_IPV6 = 1,
+ INDEX_OPT_COMMAND = 2,
+ INDEX_OPT_LISTPEERS = 3,
+ INDEX_OPT_PEERS = 4,
+ INDEX_OPT_SHOWPEERS = 5,
+ INDEX_OPT_INTERACTIVE = 6,
+ INDEX_OPT_DEBUG_LEVEL = 7,
+ INDEX_OPT_SET_DEBUG_LEVEL = 8,
+ INDEX_OPT_NUMERIC = 9,
+ INDEX_OPT_VERSION = 10,
+ INDEX_OPT_HELP = 11,
+ INDEX_OPT_MORE_HELP = 12,
+ INDEX_OPT_SAVE_OPTS = 13,
+ INDEX_OPT_LOAD_OPTS = 14
+} teOptIndex;
+
+#define OPTION_CT 15
+#define NTPDC_VERSION "4.2.4p5"
+#define NTPDC_FULL_VERSION "ntpdc - vendor-specific NTP query program - Ver. 4.2.4p5"
+
+/*
+ * Interface defines for all options. Replace "n" with the UPPER_CASED
+ * option name (as in the teOptIndex enumeration above).
+ * e.g. HAVE_OPT( IPV4 )
+ */
+#define DESC(n) (ntpdcOptions.pOptDesc[INDEX_OPT_## n])
+#define HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define OPT_ARG(n) (DESC(n).optArg.argString)
+#define STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define COUNT_OPT(n) (DESC(n).optOccCt)
+#define ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define CLEAR_OPT(n) STMTS( \
+ DESC(n).fOptState &= OPTST_PERSISTENT_MASK; \
+ if ( (DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+ DESC(n).fOptState |= OPTST_DISABLED; \
+ DESC(n).optCookie = NULL )
+
+/*
+ * Make sure there are no #define name conflicts with the option names
+ */
+#ifndef NO_OPTION_NAME_WARNINGS
+# ifdef IPV4
+# warning undefining IPV4 due to option name conflict
+# undef IPV4
+# endif
+# ifdef IPV6
+# warning undefining IPV6 due to option name conflict
+# undef IPV6
+# endif
+# ifdef COMMAND
+# warning undefining COMMAND due to option name conflict
+# undef COMMAND
+# endif
+# ifdef LISTPEERS
+# warning undefining LISTPEERS due to option name conflict
+# undef LISTPEERS
+# endif
+# ifdef PEERS
+# warning undefining PEERS due to option name conflict
+# undef PEERS
+# endif
+# ifdef SHOWPEERS
+# warning undefining SHOWPEERS due to option name conflict
+# undef SHOWPEERS
+# endif
+# ifdef INTERACTIVE
+# warning undefining INTERACTIVE due to option name conflict
+# undef INTERACTIVE
+# endif
+# ifdef DEBUG_LEVEL
+# warning undefining DEBUG_LEVEL due to option name conflict
+# undef DEBUG_LEVEL
+# endif
+# ifdef SET_DEBUG_LEVEL
+# warning undefining SET_DEBUG_LEVEL due to option name conflict
+# undef SET_DEBUG_LEVEL
+# endif
+# ifdef NUMERIC
+# warning undefining NUMERIC due to option name conflict
+# undef NUMERIC
+# endif
+#else /* NO_OPTION_NAME_WARNINGS */
+# undef IPV4
+# undef IPV6
+# undef COMMAND
+# undef LISTPEERS
+# undef PEERS
+# undef SHOWPEERS
+# undef INTERACTIVE
+# undef DEBUG_LEVEL
+# undef SET_DEBUG_LEVEL
+# undef NUMERIC
+#endif /* NO_OPTION_NAME_WARNINGS */
+
+/*
+ * Interface defines for specific options.
+ */
+#define VALUE_OPT_IPV4 '4'
+#define WHICH_OPT_IPV4 (DESC(IPV4).optActualValue)
+#define WHICH_IDX_IPV4 (DESC(IPV4).optActualIndex)
+#define VALUE_OPT_IPV6 '6'
+#define VALUE_OPT_COMMAND 'c'
+#define VALUE_OPT_LISTPEERS 'l'
+#define VALUE_OPT_PEERS 'p'
+#define VALUE_OPT_SHOWPEERS 's'
+#define VALUE_OPT_INTERACTIVE 'i'
+#ifdef DEBUG
+#define VALUE_OPT_DEBUG_LEVEL 'd'
+#endif /* DEBUG */
+#ifdef DEBUG
+#define VALUE_OPT_SET_DEBUG_LEVEL 'D'
+#endif /* DEBUG */
+#define VALUE_OPT_NUMERIC 'n'
+
+#define VALUE_OPT_VERSION 'v'
+#define VALUE_OPT_HELP '?'
+#define VALUE_OPT_MORE_HELP '!'
+#define VALUE_OPT_SAVE_OPTS '>'
+#define VALUE_OPT_LOAD_OPTS '<'
+#define SET_OPT_SAVE_OPTS(a) STMTS( \
+ DESC(SAVE_OPTS).fOptState &= OPTST_PERSISTENT_MASK; \
+ DESC(SAVE_OPTS).fOptState |= OPTST_SET; \
+ DESC(SAVE_OPTS).optArg.argString = (char const*)(a) )
+/*
+ * Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR STMTS( ntpdcOptions.fOptSet &= ~OPTPROC_ERRSTOP )
+#define ERRSTOP_OPTERR STMTS( ntpdcOptions.fOptSet |= OPTPROC_ERRSTOP )
+#define RESTART_OPT(n) STMTS( \
+ ntpdcOptions.curOptIdx = (n); \
+ ntpdcOptions.pzCurOpt = NULL )
+#define START_OPT RESTART_OPT(1)
+#define USAGE(c) (*ntpdcOptions.pUsageProc)( &ntpdcOptions, c )
+/* extracted from /usr/local/gnu/share/autogen/opthead.tpl near line 360 */
+
+/* * * * * *
+ *
+ * Declare the ntpdc option descriptor.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern tOptions ntpdcOptions;
+
+#ifndef _
+# if ENABLE_NLS
+# include <stdio.h>
+ static inline char* aoGetsText( char const* pz ) {
+ if (pz == NULL) return NULL;
+ return (char*)gettext( pz );
+ }
+# define _(s) aoGetsText(s)
+# else /* ENABLE_NLS */
+# define _(s) s
+# endif /* ENABLE_NLS */
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_NTPDC_OPTS_H_GUARD */
+/* ntpdc-opts.h ends here */
diff --git a/contrib/ntp/ntpdc/ntpdc-opts.menu b/contrib/ntp/ntpdc/ntpdc-opts.menu
new file mode 100644
index 0000000..42ca3b4
--- /dev/null
+++ b/contrib/ntp/ntpdc/ntpdc-opts.menu
@@ -0,0 +1 @@
+* ntpdc Invocation:: Invoking ntpdc
diff --git a/contrib/ntp/ntpdc/ntpdc-opts.texi b/contrib/ntp/ntpdc/ntpdc-opts.texi
new file mode 100644
index 0000000..dbce64c
--- /dev/null
+++ b/contrib/ntp/ntpdc/ntpdc-opts.texi
@@ -0,0 +1,275 @@
+@node ntpdc Invocation
+@section Invoking ntpdc
+@pindex ntpdc
+@cindex vendor-specific NTP query program
+@ignore
+#
+# EDIT THIS FILE WITH CAUTION (ntpdc-opts.texi)
+#
+# It has been AutoGen-ed Sunday August 17, 2008 at 05:26:27 AM EDT
+# From the definitions ntpdc-opts.def
+# and the template file aginfo.tpl
+@end ignore
+This program has no explanation.
+
+The
+[= prog-name =]
+utility program is used to query an NTP daemon about its
+current state and to request changes in that state.
+It uses NTP mode 7 control message formats described in the source code.
+The program may
+be run either in interactive mode or controlled using command line
+arguments.
+Extensive state and statistics information is available
+through the
+[= prog-name =]
+interface.
+In addition, nearly all the
+configuration options which can be specified at startup using
+ntpd's configuration file may also be specified at run time using
+[= prog-name =] .
+
+
+
+This section was generated by @strong{AutoGen},
+the aginfo template and the option descriptions for the @command{ntpdc} program. It documents the ntpdc usage text and option meanings.
+
+This software is released under a specialized copyright license.
+
+@menu
+* ntpdc usage:: ntpdc usage help (-?)
+* ntpdc command:: command option (-c)
+* ntpdc debug-level:: debug-level option (-d)
+* ntpdc interactive:: interactive option (-i)
+* ntpdc ipv4:: ipv4 option (-4)
+* ntpdc ipv6:: ipv6 option (-6)
+* ntpdc listpeers:: listpeers option (-l)
+* ntpdc numeric:: numeric option (-n)
+* ntpdc peers:: peers option (-p)
+* ntpdc set-debug-level:: set-debug-level option (-D)
+* ntpdc showpeers:: showpeers option (-s)
+@end menu
+
+@node ntpdc usage
+@subsection ntpdc usage help (-?)
+@cindex ntpdc usage
+
+This is the automatically generated usage text for ntpdc:
+
+@exampleindent 0
+@example
+ntpdc - vendor-specific NTP query program - Ver. 4.2.5p113
+USAGE: ntpdc [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... [ host ...]
+ Flg Arg Option-Name Description
+ -4 no ipv4 Force IPv4 DNS name resolution
+ -6 no ipv6 Force IPv6 DNS name resolution
+ - an alternate for ipv4
+ -c Str command run a command and exit
+ - may appear multiple times
+ -l no listpeers Print a list of the peers
+ - prohibits these options:
+ command
+ -p no peers Print a list of the peers
+ - prohibits these options:
+ command
+ -s no showpeers Show a list of the peers
+ - prohibits these options:
+ command
+ -i no interactive Force ntpq to operate in interactive mode
+ - prohibits these options:
+ command
+ listpeers
+ peers
+ showpeers
+ -d no debug-level Increase output debug message level
+ - may appear multiple times
+ -D Str set-debug-level Set the output debug message level
+ - may appear multiple times
+ -n no numeric numeric host addresses
+ opt version Output version information and exit
+ -? no help Display usage information and exit
+ -! no more-help Extended usage information passed thru pager
+ -> opt save-opts Save the option state to a config file
+ -< Str load-opts Load options from a config file
+ - disabled as --no-load-opts
+ - may appear multiple times
+
+Options are specified by doubled hyphens and their name
+or by a single hyphen and the flag character.
+
+The following option preset mechanisms are supported:
+ - reading file /users/stenn/.ntprc
+ - reading file /deacon/backroom/snaps/ntp-stable/ntpdc/.ntprc
+ - examining environment variables named NTPDC_*
+
+The
+[= prog-name =]
+utility program is used to query an NTP daemon about its
+current state and to request changes in that state.
+It uses NTP mode 7 control message formats described in the source code.
+The program may
+be run either in interactive mode or controlled using command line
+arguments.
+Extensive state and statistics information is available
+through the
+[= prog-name =]
+interface.
+In addition, nearly all the
+configuration options which can be specified at startup using
+ntpd's configuration file may also be specified at run time using
+[= prog-name =] .
+
+please send bug reports to: http://bugs.ntp.org, bugs@@ntp.org
+@end example
+@exampleindent 4
+
+@node ntpdc ipv4
+@subsection ipv4 option (-4)
+@cindex ntpdc-ipv4
+
+This is the ``force ipv4 dns name resolution'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+is a member of the ipv4 class of options.
+@end itemize
+
+Force DNS resolution of following host names on the command line
+to the IPv4 namespace.
+
+@node ntpdc ipv6
+@subsection ipv6 option (-6)
+@cindex ntpdc-ipv6
+
+This is the ``force ipv6 dns name resolution'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+is a member of the ipv4 class of options.
+@end itemize
+
+Force DNS resolution of following host names on the command line
+to the IPv6 namespace.
+
+@node ntpdc command
+@subsection command option (-c)
+@cindex ntpdc-command
+
+This is the ``run a command and exit'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@end itemize
+
+The following argument is interpreted as an interactive format command
+and is added to the list of commands to be executed on the specified
+host(s).
+
+@node ntpdc listpeers
+@subsection listpeers option (-l)
+@cindex ntpdc-listpeers
+
+This is the ``print a list of the peers'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+command.
+@end itemize
+
+Print a list of the peers known to the server as well as a summary of
+their state. This is equivalent to the 'listpeers' interactive command.
+
+@node ntpdc peers
+@subsection peers option (-p)
+@cindex ntpdc-peers
+
+This is the ``print a list of the peers'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+command.
+@end itemize
+
+Print a list of the peers known to the server as well as a summary
+of their state. This is equivalent to the 'peers' interactive command.
+
+@node ntpdc showpeers
+@subsection showpeers option (-s)
+@cindex ntpdc-showpeers
+
+This is the ``show a list of the peers'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+command.
+@end itemize
+
+Print a list of the peers known to the server as well as a summary
+of their state. This is equivalent to the 'dmpeers' interactive command.
+
+@node ntpdc interactive
+@subsection interactive option (-i)
+@cindex ntpdc-interactive
+
+This is the ``force ntpq to operate in interactive mode'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+command, listpeers, peers, showpeers.
+@end itemize
+
+Force ntpq to operate in interactive mode. Prompts will be written
+to the standard output and commands read from the standard input.
+
+@node ntpdc debug-level
+@subsection debug-level option (-d)
+@cindex ntpdc-debug-level
+
+This is the ``increase output debug message level'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@item
+must be compiled in by defining @code{DEBUG} during the compilation.
+@end itemize
+
+Increase the debugging message output level.
+
+@node ntpdc set-debug-level
+@subsection set-debug-level option (-D)
+@cindex ntpdc-set-debug-level
+
+This is the ``set the output debug message level'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@item
+must be compiled in by defining @code{DEBUG} during the compilation.
+@end itemize
+
+Set the output debugging level. Can be supplied multiple times,
+but each overrides the previous value(s).
+
+@node ntpdc numeric
+@subsection numeric option (-n)
+@cindex ntpdc-numeric
+
+This is the ``numeric host addresses'' option.
+Output all host addresses in dotted-quad numeric format rather than
+converting to the canonical host names.
diff --git a/contrib/ntp/ntpdc/ntpdc.1 b/contrib/ntp/ntpdc/ntpdc.1
new file mode 100644
index 0000000..c653b62
--- /dev/null
+++ b/contrib/ntp/ntpdc/ntpdc.1
@@ -0,0 +1,158 @@
+.TH NTPDC 1 2008-08-17 "( 4.2.4p5)" "Programmer's Manual"
+.\" EDIT THIS FILE WITH CAUTION (ntpdc.1)
+.\"
+.\" It has been AutoGen-ed Sunday August 17, 2008 at 05:26:27 AM EDT
+.\" From the definitions ntpdc-opts.def
+.\" and the template file agman1.tpl
+.\"
+.SH NAME
+ntpdc \- vendor-specific NTP query program
+.SH SYNOPSIS
+.B ntpdc
+.\" Mixture of short (flag) options and long options
+.RB [ \-\fIflag\fP " [\fIvalue\fP]]... [" \--\fIopt-name\fP " [[=| ]\fIvalue\fP]]..."
+.br
+.in +8
+[ host ...]
+.SH "DESCRIPTION"
+This manual page documents, briefly, the \fBntpdc\fP command.
+The
+[= prog-name =]
+utility program is used to query an NTP daemon about its
+current state and to request changes in that state.
+It uses NTP mode 7 control message formats described in the source code.
+The program may
+be run either in interactive mode or controlled using command line
+arguments.
+Extensive state and statistics information is available
+through the
+[= prog-name =]
+interface.
+In addition, nearly all the
+configuration options which can be specified at startup using
+ntpd's configuration file may also be specified at run time using
+[= prog-name =] .
+
+
+.SH OPTIONS
+.TP
+.BR \-4 ", " \--ipv4
+Force IPv4 DNS name resolution.
+This option is a member of the ipv4 class of options.
+.sp
+Force DNS resolution of following host names on the command line
+to the IPv4 namespace.
+.TP
+.BR \-6 ", " \--ipv6
+Force IPv6 DNS name resolution.
+This option is a member of the ipv4 class of options.
+.sp
+Force DNS resolution of following host names on the command line
+to the IPv6 namespace.
+.TP
+.BR \-c " \fIcmd\fP, " \--command "=" \fIcmd\fP
+run a command and exit.
+This option may appear an unlimited number of times.
+.sp
+The following argument is interpreted as an interactive format command
+and is added to the list of commands to be executed on the specified
+host(s).
+.TP
+.BR \-l ", " \--listpeers
+Print a list of the peers.
+This option must not appear in combination with any of the following options:
+command.
+.sp
+Print a list of the peers known to the server as well as a summary of
+their state. This is equivalent to the 'listpeers' interactive command.
+.TP
+.BR \-p ", " \--peers
+Print a list of the peers.
+This option must not appear in combination with any of the following options:
+command.
+.sp
+Print a list of the peers known to the server as well as a summary
+of their state. This is equivalent to the 'peers' interactive command.
+.TP
+.BR \-s ", " \--showpeers
+Show a list of the peers.
+This option must not appear in combination with any of the following options:
+command.
+.sp
+Print a list of the peers known to the server as well as a summary
+of their state. This is equivalent to the 'dmpeers' interactive command.
+.TP
+.BR \-i ", " \--interactive
+Force ntpq to operate in interactive mode.
+This option must not appear in combination with any of the following options:
+command, listpeers, peers, showpeers.
+.sp
+Force ntpq to operate in interactive mode. Prompts will be written
+to the standard output and commands read from the standard input.
+.TP
+.BR \-d ", " \--debug-level
+Increase output debug message level.
+This option may appear an unlimited number of times.
+.sp
+Increase the debugging message output level.
+.TP
+.BR \-D " \fIstring\fP, " \--set-debug-level "=" \fIstring\fP
+Set the output debug message level.
+This option may appear an unlimited number of times.
+.sp
+Set the output debugging level. Can be supplied multiple times,
+but each overrides the previous value(s).
+.TP
+.BR \-n ", " \--numeric
+numeric host addresses.
+.sp
+Output all host addresses in dotted-quad numeric format rather than
+converting to the canonical host names.
+.TP
+.BR \-? , " \--help"
+Display usage information and exit.
+.TP
+.BR \-! , " \--more-help"
+Extended usage information passed thru pager.
+.TP
+.BR \-> " [\fIrcfile\fP]," " \--save-opts" "[=\fIrcfile\fP]"
+Save the option state to \fIrcfile\fP. The default is the \fIlast\fP
+configuration file listed in the \fBOPTION PRESETS\fP section, below.
+.TP
+.BR \-< " \fIrcfile\fP," " \--load-opts" "=\fIrcfile\fP," " \--no-load-opts"
+Load options from \fIrcfile\fP.
+The \fIno-load-opts\fP form will disable the loading
+of earlier RC/INI files. \fI--no-load-opts\fP is handled early,
+out of order.
+.TP
+.BR \-v " [{\fIv|c|n\fP}]," " \--version" "[=\fI{v|c|n}\fP]"
+Output version of program and exit. The default mode is `v', a simple
+version. The `c' mode will print copyright information and `n' will
+print the full copyright notice.
+.SH OPTION PRESETS
+Any option that is not marked as \fInot presettable\fP may be preset
+by loading values from configuration ("RC" or ".INI") file(s) and values from
+environment variables named:
+.nf
+ \fBNTPDC_<option-name>\fP or \fBNTPDC\fP
+.fi
+.aj
+The environmental presets take precedence (are processed later than)
+the configuration files.
+The \fIhomerc\fP files are "\fI$HOME\fP", and "\fI.\fP".
+If any of these are directories, then the file \fI.ntprc\fP
+is searched for within those directories.
+.SH AUTHOR
+David L. Mills and/or others
+.br
+Please send bug reports to: http://bugs.ntp.isc.org, bugs@ntp.org
+
+.PP
+.nf
+.na
+see html/copyright.html
+.fi
+.ad
+.PP
+This manual page was \fIAutoGen\fP-erated from the \fBntpdc\fP
+option definitions.
diff --git a/contrib/ntp/ntpdc/ntpdc.c b/contrib/ntp/ntpdc/ntpdc.c
index aa4f188..9126533 100644
--- a/contrib/ntp/ntpdc/ntpdc.c
+++ b/contrib/ntp/ntpdc/ntpdc.c
@@ -4,6 +4,10 @@
#include <stdio.h>
+#include <ctype.h>
+#include <signal.h>
+#include <setjmp.h>
+
#include "ntpdc.h"
#include "ntp_select.h"
#include "ntp_io.h"
@@ -13,12 +17,10 @@
#include "isc/net.h"
#include "isc/result.h"
-#include <ctype.h>
-#include <signal.h>
-#include <setjmp.h>
-#include <netdb.h>
+#include "ntpdc-opts.h"
#ifdef SYS_WINNT
+# include <Mswsock.h>
# include <io.h>
#else
# define closesocket close
@@ -30,9 +32,14 @@
#endif /* HAVE_LIBREADLINE || HAVE_LIBEDIT */
#ifdef SYS_VXWORKS
-/* vxWorks needs mode flag -casey*/
-#define open(name, flags) open(name, flags, 0777)
-#define SERVER_PORT_NUM 123
+ /* vxWorks needs mode flag -casey*/
+# define open(name, flags) open(name, flags, 0777)
+# define SERVER_PORT_NUM 123
+#endif
+
+/* We use COMMAND as an autogen keyword */
+#ifdef COMMAND
+# undef COMMAND
#endif
/*
@@ -47,6 +54,7 @@ static const char * prompt = "ntpdc> "; /* prompt to ask him about */
* Keyid used for authenticated requests. Obtained on the fly.
*/
static u_long info_auth_keyid;
+static int keyid_entered = 0;
/*
* Type of key md5
@@ -56,6 +64,11 @@ static u_long info_auth_keyid;
static int info_auth_keytype = KEY_TYPE_MD5; /* MD5 */
u_long current_time; /* needed by authkeys; not used */
+/*
+ * for get_systime()
+ */
+s_char sys_precision; /* local clock precision (log2 s) */
+
int ntpdcmain P((int, char **));
/*
* Built in command handler declarations
@@ -105,10 +118,10 @@ static struct xcmd builtins[] = {
{ "help", help, { OPT|NTP_STR, NO, NO, NO },
{ "command", "", "", "" },
"tell the use and syntax of commands" },
- { "timeout", timeout, { OPT|UINT, NO, NO, NO },
+ { "timeout", timeout, { OPT|NTP_UINT, NO, NO, NO },
{ "msec", "", "", "" },
"set the primary receive time out" },
- { "delay", my_delay, { OPT|INT, NO, NO, NO },
+ { "delay", my_delay, { OPT|NTP_INT, NO, NO, NO },
{ "msec", "", "", "" },
"set the delay added to encryption time stamps" },
{ "host", host, { OPT|NTP_STR, OPT|NTP_STR, NO, NO },
@@ -129,7 +142,7 @@ static struct xcmd builtins[] = {
{ "exit", quit, { NO, NO, NO, NO },
{ "", "", "", "" },
"exit ntpdc" },
- { "keyid", keyid, { OPT|UINT, NO, NO, NO },
+ { "keyid", keyid, { OPT|NTP_UINT, NO, NO, NO },
{ "key#", "", "", "" },
"set/show keyid to use for authenticated requests" },
{ "keytype", keytype, { OPT|NTP_STR, NO, NO, NO },
@@ -154,9 +167,8 @@ static struct xcmd builtins[] = {
#define MAXCMDS 100 /* maximum commands on cmd line */
#define MAXHOSTS 200 /* maximum hosts on cmd line */
#define MAXLINE 512 /* maximum line length */
-#define MAXTOKENS (1+1+MAXARGS+2) /* maximum number of usable tokens */
- /* command + -4|-6 + MAXARGS + */
- /* redirection */
+#define MAXTOKENS (1+1+MAXARGS+MOREARGS+2) /* maximum number of usable tokens */
+#define SCREENWIDTH 78 /* nominal screen width in columns */
/*
* Some variables used and manipulated locally
@@ -268,11 +280,7 @@ main(
#ifdef SYS_VXWORKS
void clear_globals(void)
{
- extern int ntp_optind;
- extern char *ntp_optarg;
showhostnames = 0; /* show host names by default */
- ntp_optind = 0;
- ntp_optarg = 0;
havehost = 0; /* set to 1 when host open */
numcmds = 0;
numhosts = 0;
@@ -288,10 +296,7 @@ ntpdcmain(
char *argv[]
)
{
- int c;
- int errflg = 0;
extern int ntp_optind;
- extern char *ntp_optarg;
delay_time.l_ui = 0;
delay_time.l_uf = DEFDELAY;
@@ -315,6 +320,69 @@ ntpdcmain(
}
progname = argv[0];
+
+ {
+ int optct = optionProcess(&ntpdcOptions, argc, argv);
+ argc -= optct;
+ argv += optct;
+ }
+
+ switch (WHICH_IDX_IPV4) {
+ case INDEX_OPT_IPV4:
+ ai_fam_templ = AF_INET;
+ break;
+ case INDEX_OPT_IPV6:
+ ai_fam_templ = AF_INET6;
+ break;
+ default:
+ ai_fam_templ = ai_fam_default;
+ break;
+ }
+
+ if (HAVE_OPT(COMMAND)) {
+ int cmdct = STACKCT_OPT( COMMAND );
+ const char** cmds = STACKLST_OPT( COMMAND );
+
+ while (cmdct-- > 0) {
+ ADDCMD(*cmds++);
+ }
+ }
+
+ debug = DESC(DEBUG_LEVEL).optOccCt;
+
+ if (HAVE_OPT(INTERACTIVE)) {
+ interactive = 1;
+ }
+
+ if (HAVE_OPT(NUMERIC)) {
+ showhostnames = 0;
+ }
+
+ if (HAVE_OPT(LISTPEERS)) {
+ ADDCMD("listpeers");
+ }
+
+ if (HAVE_OPT(PEERS)) {
+ ADDCMD("peers");
+ }
+
+ if (HAVE_OPT(SHOWPEERS)) {
+ ADDCMD("dmpeers");
+ }
+
+ if (ntp_optind == argc) {
+ ADDHOST(DEFHOST);
+ } else {
+ for (; ntp_optind < argc; ntp_optind++)
+ ADDHOST(argv[ntp_optind]);
+ }
+
+ if (numcmds == 0 && interactive == 0
+ && isatty(fileno(stdin)) && isatty(fileno(stderr))) {
+ interactive = 1;
+ }
+
+#if 0
ai_fam_templ = ai_fam_default;
while ((c = ntp_getopt(argc, argv, "46c:dilnps")) != EOF)
switch (c) {
@@ -349,12 +417,14 @@ ntpdcmain(
errflg++;
break;
}
+
if (errflg) {
(void) fprintf(stderr,
"usage: %s [-46dilnps] [-c cmd] host ...\n",
progname);
exit(2);
}
+
if (ntp_optind == argc) {
ADDHOST(DEFHOST);
} else {
@@ -366,6 +436,7 @@ ntpdcmain(
&& isatty(fileno(stdin)) && isatty(fileno(stderr))) {
interactive = 1;
}
+#endif
#ifndef SYS_WINNT /* Under NT cannot handle SIGINT, WIN32 spawns a handler */
if (interactive)
@@ -449,7 +520,11 @@ openhost(
hints.ai_flags = AI_NUMERICHOST;
a_info = getaddrinfo(hname, service, &hints, &ai);
- if (a_info == EAI_NONAME || a_info == EAI_NODATA) {
+ if (a_info == EAI_NONAME
+#ifdef EAI_NODATA
+ || a_info == EAI_NODATA
+#endif
+ ) {
hints.ai_flags = AI_CANONNAME;
#ifdef AI_ADDRCONFIG
hints.ai_flags |= AI_ADDRCONFIG;
@@ -463,6 +538,8 @@ openhost(
}
if (a_info != 0) {
(void) fprintf(stderr, "%s\n", gai_strerror(a_info));
+ if (ai != NULL)
+ freeaddrinfo(ai);
return 0;
}
@@ -502,6 +579,7 @@ openhost(
{
int optionValue = SO_SYNCHRONOUS_NONALERT;
int err;
+
err = setsockopt(INVALID_SOCKET, SOL_SOCKET, SO_OPENTYPE, (char *)&optionValue, sizeof(optionValue));
if (err != NO_ERROR) {
(void) fprintf(stderr, "cannot open nonoverlapped sockets\n");
@@ -541,7 +619,7 @@ openhost(
ai->ai_addrlen) == -1)
#endif /* SYS_VXWORKS */
error("connect", "", "");
- if (a_info)
+ if (ai != NULL)
freeaddrinfo(ai);
havehost = 1;
req_pkt_size = REQ_LEN_NOMAC;
@@ -853,10 +931,10 @@ sendrequest(
qpkt.mbz_itemsize = MBZ_ITEMSIZE(qsize);
} else {
qpkt.err_nitems = ERR_NITEMS(0, 0);
- qpkt.mbz_itemsize = MBZ_ITEMSIZE(0);
+ qpkt.mbz_itemsize = MBZ_ITEMSIZE(qsize); /* allow for optional first item */
}
- if (!auth) {
+ if (!auth || (keyid_entered && info_auth_keyid == 0)) {
qpkt.auth_seq = AUTH_SEQ(0, 0);
return sendpkt((char *)&qpkt, req_pkt_size);
} else {
@@ -869,13 +947,17 @@ sendrequest(
+ MAX_MAC_LEN - sizeof(struct req_pkt_tail));
if (info_auth_keyid == 0) {
- maclen = getkeyid("Keyid: ");
- if (maclen == 0) {
- (void) fprintf(stderr,
- "Invalid key identifier\n");
- return 1;
+ if (((struct conf_peer *)qpkt.data)->keyid > 0)
+ info_auth_keyid = ((struct conf_peer *)qpkt.data)->keyid;
+ else {
+ maclen = getkeyid("Keyid: ");
+ if (maclen == 0) {
+ (void) fprintf(stderr,
+ "Invalid key identifier\n");
+ return 1;
+ }
+ info_auth_keyid = maclen;
}
- info_auth_keyid = maclen;
}
if (!authistrusted(info_auth_keyid)) {
pass = getpass("MD5 Password: ");
@@ -1098,7 +1180,7 @@ docmd(
const char *cmdline
)
{
- char *tokens[1+MAXARGS+2];
+ char *tokens[1+MAXARGS+MOREARGS+2];
struct parse pcmd;
int ntok;
int i, ti;
@@ -1155,6 +1237,21 @@ docmd(
i++;
}
+ /* Any extra args are assumed to be "OPT|NTP_STR". */
+ for ( ; i < MAXARGS + MOREARGS;) {
+ if ((i+ti) >= ntok)
+ break;
+ rval = getarg(tokens[i+ti], (int)(OPT|NTP_STR), &pcmd.argval[i]);
+ if (rval == -1) {
+ ti++;
+ continue;
+ }
+ if (rval == 0)
+ return;
+ pcmd.nargs++;
+ i++;
+ }
+
i += ti;
if (i < ntok && *tokens[i] == '>') {
char *fname;
@@ -1293,6 +1390,9 @@ findcmd(
/*
* getarg - interpret an argument token
*
+ * string is always set.
+ * type is set to the decoded type.
+ *
* return: 0 - failure
* 1 - success
* -1 - skip to next token
@@ -1308,11 +1408,15 @@ getarg(
char *cp, *np;
static const char *digits = "0123456789";
- switch (code & ~OPT) {
+ memset(argp, 0, sizeof(*argp));
+
+ argp->string = str;
+ argp->type = code & ~OPT;
+
+ switch (argp->type) {
case NTP_STR:
- argp->string = str;
break;
- case ADD:
+ case NTP_ADD:
if (!strcmp("-6", str)) {
ai_fam_templ = AF_INET6;
return -1;
@@ -1324,8 +1428,8 @@ getarg(
return 0;
}
break;
- case INT:
- case UINT:
+ case NTP_INT:
+ case NTP_UINT:
isneg = 0;
np = str;
if (*np == '-') {
@@ -1346,7 +1450,7 @@ getarg(
} while (*(++np) != '\0');
if (isneg) {
- if ((code & ~OPT) == UINT) {
+ if ((code & ~OPT) == NTP_UINT) {
(void) fprintf(stderr,
"***Value %s should be unsigned\n", str);
return 0;
@@ -1383,7 +1487,6 @@ getnetnum(
int af
)
{
- int err;
int sockaddr_len;
struct addrinfo hints, *ai = NULL;
@@ -1404,7 +1507,7 @@ getnetnum(
NI_NUMERICHOST);
}
return 1;
- } else if ((err = getaddrinfo(hname, "ntp", &hints, &ai)) == 0) {
+ } else if (getaddrinfo(hname, "ntp", &hints, &ai) == 0) {
memmove((char *)num, ai->ai_addr, ai->ai_addrlen);
if (fullhost != 0)
(void) strcpy(fullhost, ai->ai_canonname);
@@ -1447,57 +1550,56 @@ help(
FILE *fp
)
{
- int i;
- int n;
struct xcmd *xcp;
char *cmd;
- const char *cmdsort[100];
- int length[100];
- int maxlength;
- int numperline;
- static const char *spaces = " "; /* 20 spaces */
+ const char *list[100];
+ int word, words;
+ int row, rows;
+ int col, cols;
if (pcmd->nargs == 0) {
- n = 0;
+ words = 0;
for (xcp = builtins; xcp->keyword != 0; xcp++) {
if (*(xcp->keyword) != '?')
- cmdsort[n++] = xcp->keyword;
+ list[words++] = xcp->keyword;
}
- for (xcp = opcmds; xcp->keyword != 0; xcp++)
- cmdsort[n++] = xcp->keyword;
+ for (xcp = opcmds; xcp->keyword != 0; xcp++)
+ list[words++] = xcp->keyword;
+ qsort(
#ifdef QSORT_USES_VOID_P
- qsort(cmdsort, (size_t)n, sizeof(char *), helpsort);
+ (void *)
#else
- qsort((char *)cmdsort, (size_t)n, sizeof(char *), helpsort);
+ (char *)
#endif
-
- maxlength = 0;
- for (i = 0; i < n; i++) {
- length[i] = strlen(cmdsort[i]);
- if (length[i] > maxlength)
- maxlength = length[i];
+ (list), (size_t)(words), sizeof(char *), helpsort);
+ col = 0;
+ for (word = 0; word < words; word++) {
+ int length = strlen(list[word]);
+ if (col < length) {
+ col = length;
+ }
}
- maxlength++;
- numperline = 76 / maxlength;
-
- (void) fprintf(fp, "Commands available:\n");
- for (i = 0; i < n; i++) {
- if ((i % numperline) == (numperline-1)
- || i == (n-1))
- (void) fprintf(fp, "%s\n", cmdsort[i]);
- else
- (void) fprintf(fp, "%s%s", cmdsort[i],
- spaces+20-maxlength+length[i]);
+
+ cols = SCREENWIDTH / ++col;
+ rows = (words + cols - 1) / cols;
+
+ (void) fprintf(fp, "ntpdc commands:\n");
+
+ for (row = 0; row < rows; row++) {
+ for (word = row; word < words; word += rows) {
+ (void) fprintf(fp, "%-*.*s", col, col-1, list[word]);
+ }
+ (void) fprintf(fp, "\n");
}
} else {
cmd = pcmd->argval[0].string;
- n = findcmd(cmd, builtins, opcmds, &xcp);
- if (n == 0) {
+ words = findcmd(cmd, builtins, opcmds, &xcp);
+ if (words == 0) {
(void) fprintf(stderr,
"Command `%s' is unknown\n", cmd);
return;
- } else if (n >= 2) {
+ } else if (words >= 2) {
(void) fprintf(stderr,
"Command `%s' is ambiguous\n", cmd);
return;
@@ -1549,7 +1651,7 @@ printusage(
opt46 = 0;
(void) fprintf(fp, "usage: %s", xcp->keyword);
for (i = 0; i < MAXARGS && xcp->arg[i] != NO; i++) {
- if (opt46 == 0 && (xcp->arg[i] & ~OPT) == ADD) {
+ if (opt46 == 0 && (xcp->arg[i] & ~OPT) == NTP_ADD) {
(void) fprintf(fp, " [ -4|-6 ]");
opt46 = 1;
}
@@ -1675,12 +1777,15 @@ keyid(
)
{
if (pcmd->nargs == 0) {
- if (info_auth_keyid == 0)
+ if (info_auth_keyid == 0 && !keyid_entered)
(void) fprintf(fp, "no keyid defined\n");
+ else if (info_auth_keyid == 0 && keyid_entered)
+ (void) fprintf(fp, "no keyid will be sent\n");
else
(void) fprintf(fp, "keyid is %lu\n", (u_long)info_auth_keyid);
} else {
info_auth_keyid = pcmd->argval[0].uval;
+ keyid_entered = 1;
}
}
diff --git a/contrib/ntp/ntpdc/ntpdc.h b/contrib/ntp/ntpdc/ntpdc.h
index 589529f..785c312 100644
--- a/contrib/ntp/ntpdc/ntpdc.h
+++ b/contrib/ntp/ntpdc/ntpdc.h
@@ -11,23 +11,26 @@
* Maximum number of arguments
*/
#define MAXARGS 4
+#define MOREARGS 10
/*
* Flags for forming descriptors.
*/
-#define OPT 0x80 /* this argument is optional, or'd with type */
+#define OPT 0x80 /* this argument is optional, or'd with type */
-#define NO 0x0
-#define NTP_STR 0x1 /* string argument */
-#define UINT 0x2 /* unsigned integer */
-#define INT 0x3 /* signed integer */
-#define ADD 0x4 /* IP network address */
-#define IP_VERSION 0x5 /* IP version */
+#define NO 0x0
+#define NTP_STR 0x1 /* string argument */
+#define NTP_UINT 0x2 /* unsigned integer */
+#define NTP_INT 0x3 /* signed integer */
+#define NTP_ADD 0x4 /* IP network address */
+#define IP_VERSION 0x5 /* IP version */
/*
- * Arguments are returned in a union
+ * Arguments are returned in a struct - no
+ * union space saving is attempted.
*/
-typedef union {
+typedef struct {
+ u_char type;
char *string;
long ival;
u_long uval;
@@ -39,7 +42,7 @@ typedef union {
*/
struct parse {
char *keyword;
- arg_v argval[MAXARGS];
+ arg_v argval[MAXARGS + MOREARGS];
int nargs;
};
diff --git a/contrib/ntp/ntpdc/ntpdc_ops.c b/contrib/ntp/ntpdc/ntpdc_ops.c
index 9fa3bd7..e40016b 100644
--- a/contrib/ntp/ntpdc/ntpdc_ops.c
+++ b/contrib/ntp/ntpdc/ntpdc_ops.c
@@ -18,7 +18,6 @@
#ifdef HAVE_SYS_TIMEX_H
# include <sys/timex.h>
#endif
-#include <netdb.h>
#if !defined(__bsdi__) && !defined(apollo)
#include <netinet/in.h>
#endif
@@ -79,6 +78,8 @@ static void clockstat P((struct parse *, FILE *));
static void fudge P((struct parse *, FILE *));
static void clkbug P((struct parse *, FILE *));
static void kerninfo P((struct parse *, FILE *));
+static void get_if_stats P((struct parse *, FILE *));
+static void do_if_reload P((struct parse *, FILE *));
/*
* Commands we understand. Ntpdc imports this.
@@ -93,10 +94,10 @@ struct xcmd opcmds[] = {
{ "dmpeers", dmpeers, { OPT|IP_VERSION, NO, NO, NO },
{ "-4|-6", "", "", "" },
"display peer summary info the way Dave Mills likes it (IP Version)" },
- { "showpeer", showpeer, { ADD, OPT|ADD, OPT|ADD, OPT|ADD},
+ { "showpeer", showpeer, { NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD},
{ "peer_address", "peer2_addr", "peer3_addr", "peer4_addr" },
"display detailed information for one or more peers" },
- { "pstats", peerstats, { ADD, OPT|ADD, OPT|ADD, OPT|ADD },
+ { "pstats", peerstats, { NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD },
{ "peer_address", "peer2_addr", "peer3_addr", "peer4_addr" },
"display statistical information for one or more peers" },
{ "loopinfo", loopinfo, { OPT|NTP_STR, NO, NO, NO },
@@ -117,19 +118,19 @@ struct xcmd opcmds[] = {
{ "timerstats", timerstats, { NO, NO, NO, NO },
{ "", "", "", "" },
"display event timer subsystem statistics" },
- { "addpeer", addpeer, { ADD, OPT|UINT, OPT|UINT, OPT|NTP_STR },
- { "addr", "keyid", "version", "minpoll|prefer" },
+ { "addpeer", addpeer, { NTP_ADD, OPT|NTP_STR, OPT|NTP_STR, OPT|NTP_STR },
+ { "addr", "keyid", "version", "minpoll#|prefer|burst|iburst|'minpoll N'|'maxpoll N'|'keyid N'|'version N' ..." },
"configure a new peer association" },
- { "addserver", addserver, { ADD, OPT|UINT, OPT|UINT, OPT|NTP_STR },
- { "addr", "keyid", "version", "minpoll|prefer" },
+ { "addserver", addserver, { NTP_ADD, OPT|NTP_STR, OPT|NTP_STR, OPT|NTP_STR },
+ { "addr", "keyid", "version", "minpoll#|prefer|burst|iburst|'minpoll N'|'maxpoll N'|'keyid N'|'version N' ..." },
"configure a new server" },
- { "addrefclock",addrefclock, { ADD, OPT|UINT, OPT|NTP_STR, OPT|NTP_STR },
+ { "addrefclock",addrefclock, { NTP_ADD, OPT|NTP_UINT, OPT|NTP_STR, OPT|NTP_STR },
{ "addr", "mode", "minpoll|prefer", "minpoll|prefer" },
"configure a new server" },
- { "broadcast", broadcast, { ADD, OPT|UINT, OPT|UINT, OPT|NTP_STR },
+ { "broadcast", broadcast, { NTP_ADD, OPT|NTP_STR, OPT|NTP_STR, OPT|NTP_STR },
{ "addr", "keyid", "version", "minpoll" },
"configure broadcasting time service" },
- { "unconfig", unconfig, { ADD, OPT|ADD, OPT|ADD, OPT|ADD },
+ { "unconfig", unconfig, { NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD },
{ "peer_address", "peer2_addr", "peer3_addr", "peer4_addr" },
"unconfigure existing peer assocations" },
{ "enable", set, { NTP_STR, OPT|NTP_STR, OPT|NTP_STR, OPT|NTP_STR },
@@ -141,35 +142,35 @@ struct xcmd opcmds[] = {
{ "reslist", reslist, {OPT|IP_VERSION, NO, NO, NO },
{ "-4|-6", "", "", "" },
"display the server's restrict list" },
- { "restrict", new_restrict, { ADD, ADD, NTP_STR, OPT|NTP_STR },
+ { "restrict", new_restrict, { NTP_ADD, NTP_ADD, NTP_STR, OPT|NTP_STR },
{ "address", "mask",
"ntpport|ignore|noserve|notrust|noquery|nomodify|nopeer|version|kod",
"..." },
"create restrict entry/add flags to entry" },
- { "unrestrict", unrestrict, { ADD, ADD, NTP_STR, OPT|NTP_STR },
+ { "unrestrict", unrestrict, { NTP_ADD, NTP_ADD, NTP_STR, OPT|NTP_STR },
{ "address", "mask",
"ntpport|ignore|noserve|notrust|noquery|nomodify|nopeer|version|kod",
"..." },
"remove flags from a restrict entry" },
- { "delrestrict", delrestrict, { ADD, ADD, OPT|NTP_STR, NO },
+ { "delrestrict", delrestrict, { NTP_ADD, NTP_ADD, OPT|NTP_STR, NO },
{ "address", "mask", "ntpport", "" },
"delete a restrict entry" },
- { "monlist", monlist, { OPT|INT, NO, NO, NO },
+ { "monlist", monlist, { OPT|NTP_INT, NO, NO, NO },
{ "version", "", "", "" },
"display data the server's monitor routines have collected" },
{ "reset", reset, { NTP_STR, OPT|NTP_STR, OPT|NTP_STR, OPT|NTP_STR },
{ "io|sys|mem|timer|auth|allpeers", "...", "...", "..." },
"reset various subsystem statistics counters" },
- { "preset", preset, { ADD, OPT|ADD, OPT|ADD, OPT|ADD },
+ { "preset", preset, { NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD },
{ "peer_address", "peer2_addr", "peer3_addr", "peer4_addr" },
"reset stat counters associated with particular peer(s)" },
{ "readkeys", readkeys, { NO, NO, NO, NO },
{ "", "", "", "" },
"request a reread of the keys file and re-init of system keys" },
- { "trustedkey", trustkey, { UINT, OPT|UINT, OPT|UINT, OPT|UINT },
+ { "trustedkey", trustkey, { NTP_UINT, OPT|NTP_UINT, OPT|NTP_UINT, OPT|NTP_UINT },
{ "keyid", "keyid", "keyid", "keyid" },
"add one or more key ID's to the trusted list" },
- { "untrustedkey", untrustkey, { UINT, OPT|UINT, OPT|UINT, OPT|UINT },
+ { "untrustedkey", untrustkey, { NTP_UINT, OPT|NTP_UINT, OPT|NTP_UINT, OPT|NTP_UINT },
{ "keyid", "keyid", "keyid", "keyid" },
"remove one or more key ID's from the trusted list" },
{ "authinfo", authinfo, { NO, NO, NO, NO },
@@ -178,34 +179,39 @@ struct xcmd opcmds[] = {
{ "traps", traps, { NO, NO, NO, NO },
{ "", "", "", "" },
"display the traps set in the server" },
- { "addtrap", addtrap, { ADD, OPT|UINT, OPT|ADD, NO },
+ { "addtrap", addtrap, { NTP_ADD, OPT|NTP_UINT, OPT|NTP_ADD, NO },
{ "address", "port", "interface", "" },
"configure a trap in the server" },
- { "clrtrap", clrtrap, { ADD, OPT|UINT, OPT|ADD, NO },
+ { "clrtrap", clrtrap, { NTP_ADD, OPT|NTP_UINT, OPT|NTP_ADD, NO },
{ "address", "port", "interface", "" },
"remove a trap (configured or otherwise) from the server" },
- { "requestkey", requestkey, { UINT, NO, NO, NO },
+ { "requestkey", requestkey, { NTP_UINT, NO, NO, NO },
{ "keyid", "", "", "" },
"change the keyid the server uses to authenticate requests" },
- { "controlkey", controlkey, { UINT, NO, NO, NO },
+ { "controlkey", controlkey, { NTP_UINT, NO, NO, NO },
{ "keyid", "", "", "" },
"change the keyid the server uses to authenticate control messages" },
{ "ctlstats", ctlstats, { NO, NO, NO, NO },
{ "", "", "", "" },
"display packet count statistics from the control module" },
- { "clockstat", clockstat, { ADD, OPT|ADD, OPT|ADD, OPT|ADD },
+ { "clockstat", clockstat, { NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD },
{ "address", "address", "address", "address" },
"display clock status information" },
- { "fudge", fudge, { ADD, NTP_STR, NTP_STR, NO },
+ { "fudge", fudge, { NTP_ADD, NTP_STR, NTP_STR, NO },
{ "address", "time1|time2|val1|val2|flags", "value", "" },
"set/change one of a clock's fudge factors" },
- { "clkbug", clkbug, { ADD, OPT|ADD, OPT|ADD, OPT|ADD },
+ { "clkbug", clkbug, { NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD, OPT|NTP_ADD },
{ "address", "address", "address", "address" },
"display clock debugging information" },
{ "kerninfo", kerninfo, { NO, NO, NO, NO },
{ "", "", "", "" },
"display the kernel pll/pps variables" },
-
+ { "ifstats", get_if_stats, { NO, NO, NO, NO },
+ { "", "", "", "" },
+ "list interface statistics" },
+ { "ifreload", do_if_reload, { NO, NO, NO, NO },
+ { "", "", "", "" },
+ "reload interface configuration" },
{ 0, 0, { NO, NO, NO, NO },
{ "", "", "", "" }, "" }
};
@@ -301,7 +307,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!checkitems(items, fp))
@@ -391,7 +397,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!checkitems(items, fp))
@@ -483,6 +489,52 @@ refid_string(
return numtoa(refid);
}
+static void
+print_pflag(
+ FILE *fp,
+ u_int32 flags
+ )
+{
+ const char *str;
+
+ if (flags == 0) {
+ (void) fprintf(fp, " none\n");
+ } else {
+ str = "";
+ if (flags & INFO_FLAG_SYSPEER) {
+ (void) fprintf(fp, " system_peer");
+ str = ",";
+ }
+ if (flags & INFO_FLAG_CONFIG) {
+ (void) fprintf(fp, "%s config", str);
+ str = ",";
+ }
+ if (flags & INFO_FLAG_REFCLOCK) {
+ (void) fprintf(fp, "%s refclock", str);
+ str = ",";
+ }
+ if (flags & INFO_FLAG_AUTHENABLE) {
+ (void) fprintf(fp, "%s auth", str);
+ str = ",";
+ }
+ if (flags & INFO_FLAG_BCLIENT) {
+ (void) fprintf(fp, "%s bclient", str);
+ str = ",";
+ }
+ if (flags & INFO_FLAG_PREFER) {
+ (void) fprintf(fp, "%s prefer", str);
+ str = ",";
+ }
+ if (flags & INFO_FLAG_IBURST) {
+ (void) fprintf(fp, "%s iburst", str);
+ str = ",";
+ }
+ if (flags & INFO_FLAG_BURST) {
+ (void) fprintf(fp, "%s burst", str);
+ }
+ (void) fprintf(fp, "\n");
+ }
+}
/*
* printpeer - print detail information for a peer
*/
@@ -493,7 +545,6 @@ printpeer(
)
{
register int i;
- const char *str;
l_fp tempts;
struct sockaddr_storage srcadr, dstadr;
@@ -539,39 +590,7 @@ printpeer(
fptoa(NTOHS_FP(pp->estbdelay), 5), pp->ttl);
(void) fprintf(fp, "timer %lds, flags", (long)ntohl(pp->timer));
- if (pp->flags == 0) {
- (void) fprintf(fp, " none\n");
- } else {
- str = "";
- if (pp->flags & INFO_FLAG_SYSPEER) {
- (void) fprintf(fp, " system_peer");
- str = ",";
- }
- if (pp->flags & INFO_FLAG_CONFIG) {
- (void) fprintf(fp, "%s config", str);
- str = ",";
- }
- if (pp->flags & INFO_FLAG_REFCLOCK) {
- (void) fprintf(fp, "%s refclock", str);
- str = ",";
- }
- if (pp->flags & INFO_FLAG_AUTHENABLE) {
- (void) fprintf(fp, "%s auth", str);
- str = ",";
- }
- if (pp->flags & INFO_FLAG_BCLIENT) {
- (void) fprintf(fp, "%s bclient", str);
- str = ",";
- }
- if (pp->flags & INFO_FLAG_PREFER) {
- (void) fprintf(fp, "%s prefer", str);
- str = ",";
- }
- if (pp->flags & INFO_FLAG_BURST) {
- (void) fprintf(fp, "%s burst", str);
- }
- (void) fprintf(fp, "\n");
- }
+ print_pflag(fp, pp->flags);
NTOHL_FP(&pp->reftime, &tempts);
(void) fprintf(fp, "reference time: %s\n",
@@ -674,7 +693,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!checkitems(items, fp))
@@ -748,7 +767,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!checkitems(items, fp))
@@ -804,7 +823,9 @@ again:
(int)pp->candidate);
if (items > 0)
(void) fprintf(fp, "\n");
- pp++;
+ (void) fprintf(fp, "flags: ");
+ print_pflag(fp, ntohs(pp->flags));
+ pp++;
}
}
@@ -846,7 +867,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!check1item(items, fp))
@@ -865,8 +886,8 @@ again:
"offset %s, frequency %s, time_const %ld, watchdog %ld\n",
lfptoa(&tempts, 6),
lfptoa(&temp2ts, 3),
- (u_long)ntohl(il->compliance),
- (u_long)ntohl(il->watchdog_timer));
+ (long)(int32_t)ntohl((u_long)il->compliance),
+ (u_long)ntohl((u_long)il->watchdog_timer));
} else {
NTOHL_FP(&il->last_offset, &tempts);
(void) fprintf(fp, "offset: %s s\n",
@@ -875,7 +896,7 @@ again:
(void) fprintf(fp, "frequency: %s ppm\n",
lfptoa(&tempts, 3));
(void) fprintf(fp, "poll adjust: %ld\n",
- (u_long)ntohl(il->compliance));
+ (long)(int32_t)ntohl(il->compliance));
(void) fprintf(fp, "watchdog timer: %ld s\n",
(u_long)ntohl(il->watchdog_timer));
}
@@ -909,7 +930,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!check1item(items, fp))
@@ -1006,7 +1027,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!check1item(items, fp))
@@ -1072,7 +1093,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!check1item(items, fp))
@@ -1134,7 +1155,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!check1item(items, fp))
@@ -1157,9 +1178,9 @@ again:
(u_long)ntohl(mem->demobilizations));
(void) fprintf(fp, "hash table counts: ");
- for (i = 0; i < HASH_SIZE; i++) {
+ for (i = 0; i < NTP_HASH_SIZE; i++) {
(void) fprintf(fp, "%4d", (int)mem->hashcount[i]);
- if ((i % 8) == 7 && i != (HASH_SIZE-1)) {
+ if ((i % 8) == 7 && i != (NTP_HASH_SIZE-1)) {
(void) fprintf(fp, "\n ");
}
}
@@ -1193,7 +1214,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!check1item(items, fp))
@@ -1281,78 +1302,108 @@ doconfig(
u_long keyid;
u_int version;
u_char minpoll;
+ u_char maxpoll;
u_int flags;
u_char cmode;
int res;
int sendsize;
+ int numtyp;
again:
keyid = 0;
- version = NTP_OLDVERSION + 1;
+ version = 3;
flags = 0;
res = 0;
cmode = 0;
minpoll = NTP_MINDPOLL;
+ maxpoll = NTP_MAXDPOLL;
+ numtyp = 1;
+ if (refc)
+ numtyp = 5;
if (impl_ver == IMPL_XNTPD)
sendsize = sizeof(struct conf_peer);
else
sendsize = v4sizeof(struct conf_peer);
- items = pcmd->nargs;
-
- if (refc) {
- if (pcmd->nargs > 1) {
- cmode = (u_char) pcmd->argval[1].uval;
- items = 2;
- }
- } else {
- if (pcmd->nargs > 1) {
- keyid = pcmd->argval[1].uval;
- if (keyid > 0) {
- flags |= CONF_FLAG_AUTHENABLE;
- }
- if (pcmd->nargs > 2) {
- version = (u_int)pcmd->argval[2].uval;
- if (version > NTP_VERSION ||
- version < NTP_OLDVERSION) {
- (void)fprintf(fp,
- "invalid version number %u\n",
- version);
- res++;
- }
- items = 3;
- }
- }
- }
-
+ items = 1;
while (pcmd->nargs > items) {
if (STREQ(pcmd->argval[items].string, "prefer"))
flags |= CONF_FLAG_PREFER;
else if (STREQ(pcmd->argval[items].string, "burst"))
flags |= CONF_FLAG_BURST;
+ else if (STREQ(pcmd->argval[items].string, "dynamic"))
+ (void) fprintf(fp, "Warning: the \"dynamic\" keyword has been obsoleted and will be removed in the next release\n");
+ else if (STREQ(pcmd->argval[items].string, "iburst"))
+ flags |= CONF_FLAG_IBURST;
+ else if (!refc && STREQ(pcmd->argval[items].string, "keyid"))
+ numtyp = 1;
+ else if (!refc && STREQ(pcmd->argval[items].string, "version"))
+ numtyp = 2;
+ else if (STREQ(pcmd->argval[items].string, "minpoll"))
+ numtyp = 3;
+ else if (STREQ(pcmd->argval[items].string, "maxpoll"))
+ numtyp = 4;
else {
long val;
- if (!atoint(pcmd->argval[items].string, &val)) {
- (void) fprintf(fp,
- "%s not understood\n",
- pcmd->argval[items].string);
- res++;
- break;
- } else {
- if (val >= NTP_MINPOLL && val <= NTP_MAXPOLL) {
- minpoll = (u_char)val;
- } else {
- (void) fprintf(fp,
- "minpol must be within %d..%d\n",
- NTP_MINPOLL, NTP_MAXPOLL);
- res++;
- break;
- }
+ if (!atoint(pcmd->argval[items].string, &val))
+ numtyp = 0;
+ switch (numtyp) {
+ case 1:
+ keyid = val;
+ numtyp = 2;
+ break;
+
+ case 2:
+ version = (u_int) val;
+ numtyp = 0;
+ break;
+
+ case 3:
+ minpoll = (u_char)val;
+ numtyp = 0;
+ break;
+
+ case 4:
+ maxpoll = (u_char)val;
+ numtyp = 0;
+ break;
+
+ case 5:
+ cmode = (u_char)val;
+ numtyp = 0;
+ break;
+
+ default:
+ (void) fprintf(fp, "*** '%s' not understood\n",
+ pcmd->argval[items].string);
+ res++;
+ numtyp = 0;
}
- }
- items++;
- }
+ if (val < 0) {
+ (void) fprintf(stderr,
+ "***Value '%s' should be unsigned\n",
+ pcmd->argval[items].string);
+ res++;
+ }
+ }
+ items++;
+ }
+ if (keyid > 0)
+ flags |= CONF_FLAG_AUTHENABLE;
+ if (version > NTP_VERSION ||
+ version < NTP_OLDVERSION) {
+ (void)fprintf(fp, "***invalid version number: %u\n",
+ version);
+ res++;
+ }
+ if (minpoll < NTP_MINPOLL || minpoll > NTP_MAXPOLL ||
+ maxpoll < NTP_MINPOLL || maxpoll > NTP_MAXPOLL ||
+ minpoll > maxpoll) {
+ (void) fprintf(fp, "***min/max-poll must be within %d..%d\n",
+ NTP_MINPOLL, NTP_MAXPOLL);
+ res++;
+ }
if (res)
return;
@@ -1376,7 +1427,7 @@ again:
cpeer.keyid = keyid;
cpeer.version = (u_char) version;
cpeer.minpoll = minpoll;
- cpeer.maxpoll = NTP_MAXDPOLL;
+ cpeer.maxpoll = maxpoll;
cpeer.flags = (u_char)flags;
cpeer.ttl = cmode;
@@ -1528,6 +1579,7 @@ doset(
}
}
+ sys.flags = htonl(sys.flags);
if (res || sys.flags == 0)
return;
@@ -1554,7 +1606,22 @@ struct resflags {
int bit;
};
-static struct resflags resflags[] = {
+/* XXX: HMS: we apparently don't report set bits we do not recognize. */
+
+static struct resflags resflagsV2[] = {
+ { "ignore", 0x001 },
+ { "noserve", 0x002 },
+ { "notrust", 0x004 },
+ { "noquery", 0x008 },
+ { "nomodify", 0x010 },
+ { "nopeer", 0x020 },
+ { "notrap", 0x040 },
+ { "lptrap", 0x080 },
+ { "limited", 0x100 },
+ { "", 0 }
+};
+
+static struct resflags resflagsV3[] = {
{ "ignore", RES_IGNORE },
{ "noserve", RES_DONTSERVE },
{ "notrust", RES_DONTTRUST },
@@ -1614,7 +1681,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!checkitems(items, fp))
@@ -1677,7 +1744,10 @@ again:
rf++;
}
- rf = &resflags[0];
+ rf = (impl_ver == IMPL_XNTPD_OLD)
+ ? &resflagsV2[0]
+ : &resflagsV3[0]
+ ;
while (rf->bit != 0) {
if (flags & rf->bit) {
if (!res)
@@ -1795,17 +1865,17 @@ again:
if (STREQ(pcmd->argval[res].string, "ntpport")) {
cres.mflags |= RESM_NTPONLY;
} else {
- for (i = 0; resflags[i].bit != 0; i++) {
+ for (i = 0; resflagsV3[i].bit != 0; i++) {
if (STREQ(pcmd->argval[res].string,
- resflags[i].str))
+ resflagsV3[i].str))
break;
}
- if (resflags[i].bit != 0) {
- cres.flags |= resflags[i].bit;
+ if (resflagsV3[i].bit != 0) {
+ cres.flags |= resflagsV3[i].bit;
if (req_code == REQ_UNRESTRICT) {
(void) fprintf(fp,
"Flag %s inappropriate\n",
- resflags[i].str);
+ resflagsV3[i].str);
err++;
}
} else {
@@ -1815,6 +1885,8 @@ again:
}
}
}
+ cres.flags = htons(cres.flags);
+ cres.mflags = htons(cres.mflags);
/*
* Make sure mask for default address is zero. Otherwise,
@@ -1899,7 +1971,7 @@ again:
&items, &itemsize, &struct_star, 0,
sizeof(struct info_monitor));
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!checkitems(items, fp))
@@ -2068,6 +2140,7 @@ reset(
rflags.flags |= sreset[i].flag;
}
}
+ rflags.flags = htonl(rflags.flags);
if (err) {
(void) fprintf(fp, "Not done due to errors\n");
@@ -2268,7 +2341,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!check1item(items, fp))
@@ -2326,7 +2399,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!checkitems(items, fp))
@@ -2567,7 +2640,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!check1item(items, fp))
@@ -2627,7 +2700,6 @@ clockstat(
int res;
l_fp ts;
struct clktype *clk;
- u_long ltemp;
for (qitems = 0; qitems < min(pcmd->nargs, 8); qitems++)
clist[qitems] = GET_INADDR(pcmd->argval[qitems].netnum);
@@ -2642,7 +2714,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!checkitems(items, fp))
@@ -2685,9 +2757,8 @@ again:
lfptoa(&ts, 6));
(void) fprintf(fp, "stratum: %ld\n",
(u_long)ntohl(cl->fudgeval1));
- ltemp = ntohl(cl->fudgeval2);
(void) fprintf(fp, "reference ID: %s\n",
- (char *)&ltemp);
+ refid_string(ntohl(cl->fudgeval2), 0));
(void) fprintf(fp, "fudge flags: 0x%x\n",
cl->flags);
@@ -2815,7 +2886,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!checkitems(items, fp))
@@ -2903,7 +2974,7 @@ again:
goto again;
}
- if (res != 0 && items == 0)
+ if (res != 0)
return;
if (!check1item(items, fp))
return;
@@ -2919,7 +2990,7 @@ again:
tscale = 1e-9;
#endif
(void)fprintf(fp, "pll offset: %g s\n",
- (long)ntohl(ik->offset) * tscale);
+ (int32_t)ntohl(ik->offset) * tscale);
(void)fprintf(fp, "pll frequency: %s ppm\n",
fptoa((s_fp)ntohl(ik->freq), 3));
(void)fprintf(fp, "maximum error: %g s\n",
@@ -3010,3 +3081,124 @@ again:
(void)fprintf(fp, "calibration errors: %ld\n",
(u_long)ntohl(ik->errcnt));
}
+
+#define IF_LIST_FMT "%2d %c %48s %c %c %12.12s %03x %3d %2d %5d %5d %5d %2d %2d %3d %7d\n"
+#define IF_LIST_FMT_STR "%2s %c %48s %c %c %12.12s %3s %3s %2s %5s %5s %5s %2s %2s %3s %7s\n"
+#define IF_LIST_AFMT_STR " %48s %c\n"
+#define IF_LIST_LABELS "#", 'A', "Address/Mask/Broadcast", 'T', 'E', "IF name", "Flg", "TL", "#M", "recv", "sent", "drop", "S", "IX", "PC", "uptime"
+#define IF_LIST_LINE "=====================================================================================================================\n"
+
+static void
+iflist(
+ FILE *fp,
+ struct info_if_stats *ifs,
+ int items,
+ int itemsize,
+ int res
+ )
+{
+ static char *actions = "?.+-";
+ struct sockaddr_storage saddr;
+
+ if (res != 0)
+ return;
+
+ if (!checkitems(items, fp))
+ return;
+
+ if (!checkitemsize(itemsize, sizeof(struct info_if_stats)))
+ return;
+
+ fprintf(fp, IF_LIST_FMT_STR, IF_LIST_LABELS);
+ fprintf(fp, IF_LIST_LINE);
+
+ while (items > 0) {
+ if (ntohl(ifs->v6_flag)) {
+ memcpy((char *)&GET_INADDR6(saddr), (char *)&ifs->unaddr.addr6, sizeof(ifs->unaddr.addr6));
+ saddr.ss_family = AF_INET6;
+ } else {
+ memcpy((char *)&GET_INADDR(saddr), (char *)&ifs->unaddr.addr, sizeof(ifs->unaddr.addr));
+ saddr.ss_family = AF_INET;
+ }
+#ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
+ saddr.ss_len = SOCKLEN(&saddr);
+#endif
+ fprintf(fp, IF_LIST_FMT,
+ ntohl(ifs->ifnum),
+ actions[(ifs->action >= 1 && ifs->action < 4) ? ifs->action : 0],
+ stoa((&saddr)), 'A',
+ ifs->ignore_packets ? 'D' : 'E',
+ ifs->name,
+ ntohl(ifs->flags),
+ ntohl(ifs->last_ttl),
+ ntohl(ifs->num_mcast),
+ ntohl(ifs->received),
+ ntohl(ifs->sent),
+ ntohl(ifs->notsent),
+ ntohl(ifs->scopeid),
+ ntohl(ifs->ifindex),
+ ntohl(ifs->peercnt),
+ ntohl(ifs->uptime));
+
+ if (ntohl(ifs->v6_flag)) {
+ memcpy((char *)&GET_INADDR6(saddr), (char *)&ifs->unmask.addr6, sizeof(ifs->unmask.addr6));
+ saddr.ss_family = AF_INET6;
+ } else {
+ memcpy((char *)&GET_INADDR(saddr), (char *)&ifs->unmask.addr, sizeof(ifs->unmask.addr));
+ saddr.ss_family = AF_INET;
+ }
+#ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
+ saddr.ss_len = SOCKLEN(&saddr);
+#endif
+ fprintf(fp, IF_LIST_AFMT_STR, stoa(&saddr), 'M');
+
+ if (!ntohl(ifs->v6_flag) && ntohl(ifs->flags) & (INT_BCASTOPEN)) {
+ memcpy((char *)&GET_INADDR(saddr), (char *)&ifs->unbcast.addr, sizeof(ifs->unbcast.addr));
+ saddr.ss_family = AF_INET;
+#ifdef HAVE_SA_LEN_IN_STRUCT_SOCKADDR
+ saddr.ss_len = SOCKLEN(&saddr);
+#endif
+ fprintf(fp, IF_LIST_AFMT_STR, stoa(&saddr), 'B');
+
+ }
+
+ ifs++;
+ items--;
+ }
+}
+
+/*ARGSUSED*/
+static void
+get_if_stats(
+ struct parse *pcmd,
+ FILE *fp
+ )
+{
+ struct info_if_stats *ifs;
+ int items;
+ int itemsize;
+ int res;
+
+ res = doquery(impl_ver, REQ_IF_STATS, 1, 0, 0, (char *)NULL, &items,
+ &itemsize, (void *)&ifs, 0,
+ sizeof(struct info_if_stats));
+ iflist(fp, ifs, items, itemsize, res);
+}
+
+/*ARGSUSED*/
+static void
+do_if_reload(
+ struct parse *pcmd,
+ FILE *fp
+ )
+{
+ struct info_if_stats *ifs;
+ int items;
+ int itemsize;
+ int res;
+
+ res = doquery(impl_ver, REQ_IF_RELOAD, 1, 0, 0, (char *)NULL, &items,
+ &itemsize, (void *)&ifs, 0,
+ sizeof(struct info_if_stats));
+ iflist(fp, ifs, items, itemsize, res);
+}
diff --git a/contrib/ntp/ntpq/Makefile.am b/contrib/ntp/ntpq/Makefile.am
index 0bd05fc..7cd3f0a 100644
--- a/contrib/ntp/ntpq/Makefile.am
+++ b/contrib/ntp/ntpq/Makefile.am
@@ -1,21 +1,42 @@
-#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
-AUTOMAKE_OPTIONS = ../util/ansi2knr
-bin_PROGRAMS = ntpq
-INCLUDES = -I$(top_srcdir)/include
+AUTOMAKE_OPTIONS= ../util/ansi2knr
+
+bin_PROGRAMS= ntpq
+AM_CPPFLAGS= -I$(top_srcdir)/include $(LIBOPTS_CFLAGS)
+
# LDADD might need RESLIB and ADJLIB
-ntpq_LDADD = version.o ../libntp/libntp.a @READLINE_LIBS@
-DISTCLEANFILES = .version version.c
-noinst_HEADERS = ntpq.h
-#EXTRA_DIST = ntpq.mak
-ETAGS_ARGS = Makefile.am
+ntpq_LDADD= version.o @READLINE_LIBS@ $(LIBOPTS_LDADD) ../libntp/libntp.a
+DISTCLEANFILES= .version version.c
+noinst_HEADERS= ntpq.h
+ETAGS_ARGS= Makefile.am
+EXTRA_DIST= ntpq-opts.def ntpq.1 ntpq-opts.texi ntpq-opts.menu
+BUILT_SOURCES= ntpq-opts.c ntpq-opts.h ntpq.1 ntpq-opts.texi ntpq-opts.menu
+man_MANS= ntpq.1
+run_ag= cd $(srcdir) && autogen -L ../include --writable
+std_def_list= $(top_srcdir)/include/debug-opt.def \
+ $(top_srcdir)/include/autogen-version.def \
+ $(top_srcdir)/include/copyright.def \
+ $(top_srcdir)/include/homerc.def \
+ $(top_srcdir)/include/version.def
+ntpq_SOURCES= ntpq.c ntpq-subs.c ntpq-opts.c ntpq-opts.h
+
+$(srcdir)/ntpq-opts.h: $(srcdir)/ntpq-opts.c
+$(srcdir)/ntpq-opts.c: $(srcdir)/ntpq-opts.def $(std_def_list)
+ $(run_ag) ntpq-opts.def
-ntpq_SOURCES = ntpq.c ntpq_ops.c
+$(srcdir)/ntpq.1: $(srcdir)/ntpq-opts.def $(std_def_list)
+ $(run_ag) -Tagman1.tpl -bntpq ntpq-opts.def
+
+$(srcdir)/ntpq-opts.texi $(srcdir)/ntpq-opts.menu: $(srcdir)/ntpq-opts.def $(std_def_list)
+ $(run_ag) -Taginfo.tpl -DLEVEL=section ntpq-opts.def
$(PROGRAMS): $(LDADD)
../libntp/libntp.a:
cd ../libntp && $(MAKE)
+$(top_srcdir)/version :
+ cd $(top_srcdir) && $(MAKE) version
+
version.o: $(ntpq_OBJECTS) ../libntp/libntp.a Makefile $(top_srcdir)/version
env CSET=`cat $(top_srcdir)/version` $(top_builddir)/scripts/mkver ntpq
$(COMPILE) -c version.c
diff --git a/contrib/ntp/ntpq/Makefile.in b/contrib/ntp/ntpq/Makefile.in
index 7ddf4d3..32616a9 100644
--- a/contrib/ntp/ntpq/Makefile.in
+++ b/contrib/ntp/ntpq/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -14,6 +14,7 @@
@SET_MAKE@
+
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -21,7 +22,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +37,61 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+ANSI2KNR = ../util/ansi2knr
+bin_PROGRAMS = ntpq$(EXEEXT)
+subdir = ntpq
+DIST_COMMON = README $(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/hs_ulong_const.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 =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_ntpq_OBJECTS = ntpq$U.$(OBJEXT) ntpq-subs$U.$(OBJEXT) \
+ ntpq-opts$U.$(OBJEXT)
+ntpq_OBJECTS = $(am_ntpq_OBJECTS)
+am__DEPENDENCIES_1 =
+ntpq_DEPENDENCIES = version.o $(am__DEPENDENCIES_1) ../libntp/libntp.a
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(ntpq_SOURCES)
+DIST_SOURCES = $(ntpq_SOURCES)
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +99,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +115,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +170,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +205,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,72 +213,71 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-
-#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
-bin_PROGRAMS = ntpq
-INCLUDES = -I$(top_srcdir)/include
+AM_CPPFLAGS = -I$(top_srcdir)/include $(LIBOPTS_CFLAGS)
+
# LDADD might need RESLIB and ADJLIB
-ntpq_LDADD = version.o ../libntp/libntp.a @READLINE_LIBS@
+ntpq_LDADD = version.o @READLINE_LIBS@ $(LIBOPTS_LDADD) ../libntp/libntp.a
DISTCLEANFILES = .version version.c
noinst_HEADERS = ntpq.h
-#EXTRA_DIST = ntpq.mak
ETAGS_ARGS = Makefile.am
-
-ntpq_SOURCES = ntpq.c ntpq_ops.c
-subdir = ntpq
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-bin_PROGRAMS = ntpq$(EXEEXT)
-PROGRAMS = $(bin_PROGRAMS)
-
-am_ntpq_OBJECTS = ntpq$U.$(OBJEXT) ntpq_ops$U.$(OBJEXT)
-ntpq_OBJECTS = $(am_ntpq_OBJECTS)
-ntpq_DEPENDENCIES = version.o ../libntp/libntp.a
-ntpq_LDFLAGS =
-
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/ntpq$U.Po ./$(DEPDIR)/ntpq_ops$U.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = $(ntpq_SOURCES)
-HEADERS = $(noinst_HEADERS)
-
-DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.in \
- Makefile.am
-SOURCES = $(ntpq_SOURCES)
-
-all: all-am
+EXTRA_DIST = ntpq-opts.def ntpq.1 ntpq-opts.texi ntpq-opts.menu
+BUILT_SOURCES = ntpq-opts.c ntpq-opts.h ntpq.1 ntpq-opts.texi ntpq-opts.menu
+man_MANS = ntpq.1
+run_ag = cd $(srcdir) && autogen -L ../include --writable
+std_def_list = $(top_srcdir)/include/debug-opt.def \
+ $(top_srcdir)/include/autogen-version.def \
+ $(top_srcdir)/include/copyright.def \
+ $(top_srcdir)/include/homerc.def \
+ $(top_srcdir)/include/version.def
+
+ntpq_SOURCES = ntpq.c ntpq-subs.c ntpq-opts.c ntpq-opts.h
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+.SUFFIXES: .c .lo .o .obj
+$(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 ntpq/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu ntpq/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ $(AUTOMAKE) --foreign ntpq/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
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
+ || test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
@@ -219,23 +285,25 @@ uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
- rm -f $(DESTDIR)$(bindir)/$$f; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
ntpq$(EXEEXT): $(ntpq_OBJECTS) $(ntpq_DEPENDENCIES)
@rm -f ntpq$(EXEEXT)
$(LINK) $(ntpq_LDFLAGS) $(ntpq_OBJECTS) $(ntpq_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-
-ANSI2KNR = ../util/ansi2knr
../util/ansi2knr:
cd ../util && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
@@ -243,43 +311,92 @@ mostlyclean-kr:
-test "$U" = "" || rm -f *_.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpq$U.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpq_ops$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpq-opts$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpq-subs$U.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
ntpq_.c: ntpq.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpq.c; then echo $(srcdir)/ntpq.c; else echo ntpq.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-ntpq_ops_.c: ntpq_ops.c $(ANSI2KNR)
- $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpq_ops.c; then echo $(srcdir)/ntpq_ops.c; else echo ntpq_ops.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-ntpq_.$(OBJEXT) ntpq_ops_.$(OBJEXT) : $(ANSI2KNR)
-uninstall-info-am:
+ntpq-opts_.c: ntpq-opts.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpq-opts.c; then echo $(srcdir)/ntpq-opts.c; else echo ntpq-opts.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+ntpq-subs_.c: ntpq-subs.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntpq-subs.c; then echo $(srcdir)/ntpq-subs.c; else echo ntpq-subs.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+ntpq_.$(OBJEXT) ntpq_.lo ntpq-opts_.$(OBJEXT) ntpq-opts_.lo \
+ntpq-subs_.$(OBJEXT) ntpq-subs_.lo : $(ANSI2KNR)
-ETAGS = etags
-ETAGSFLAGS =
+mostlyclean-libtool:
+ -rm -f *.lo
-CTAGS = ctags
-CTAGSFLAGS =
+clean-libtool:
+ -rm -rf .libs _libs
-tags: TAGS
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-man1: $(man1_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+ else file=$$i; fi; \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
+ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -289,6 +406,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -300,10 +418,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -326,10 +445,6 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -343,7 +458,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -359,12 +474,15 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS) $(HEADERS)
-
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(PROGRAMS) $(MANS) $(HEADERS)
installdirs:
- $(mkinstalldirs) $(DESTDIR)$(bindir)
-install: install-am
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
@@ -375,7 +493,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -383,50 +501,52 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
clean: clean-am
-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+ distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
-install-data-am:
+install-data-am: install-man
install-exec-am: install-binPROGRAMS
install-info: install-info-am
-install-man:
+install-man: install-man1
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool
pdf: pdf-am
@@ -436,25 +556,42 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-man
+
+uninstall-man: uninstall-man1
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am info \
- info-am install install-am install-binPROGRAMS 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-compile \
- mostlyclean-generic mostlyclean-kr pdf pdf-am ps ps-am tags \
- uninstall uninstall-am uninstall-binPROGRAMS uninstall-info-am
+ clean-generic clean-libtool ctags distclean distclean-compile \
+ distclean-generic distclean-libtool distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-man1 install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-kr mostlyclean-libtool pdf pdf-am ps ps-am tags \
+ uninstall uninstall-am uninstall-binPROGRAMS uninstall-info-am \
+ uninstall-man uninstall-man1
+$(srcdir)/ntpq-opts.h: $(srcdir)/ntpq-opts.c
+$(srcdir)/ntpq-opts.c: $(srcdir)/ntpq-opts.def $(std_def_list)
+ $(run_ag) ntpq-opts.def
+
+$(srcdir)/ntpq.1: $(srcdir)/ntpq-opts.def $(std_def_list)
+ $(run_ag) -Tagman1.tpl -bntpq ntpq-opts.def
+
+$(srcdir)/ntpq-opts.texi $(srcdir)/ntpq-opts.menu: $(srcdir)/ntpq-opts.def $(std_def_list)
+ $(run_ag) -Taginfo.tpl -DLEVEL=section ntpq-opts.def
+
$(PROGRAMS): $(LDADD)
../libntp/libntp.a:
cd ../libntp && $(MAKE)
+$(top_srcdir)/version :
+ cd $(top_srcdir) && $(MAKE) version
+
version.o: $(ntpq_OBJECTS) ../libntp/libntp.a Makefile $(top_srcdir)/version
env CSET=`cat $(top_srcdir)/version` $(top_builddir)/scripts/mkver ntpq
$(COMPILE) -c version.c
diff --git a/contrib/ntp/ntpq/ntpq-opts.c b/contrib/ntp/ntpq/ntpq-opts.c
new file mode 100644
index 0000000..0e73886
--- /dev/null
+++ b/contrib/ntp/ntpq/ntpq-opts.c
@@ -0,0 +1,607 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (ntpq-opts.c)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:26:55 AM EDT
+ * From the definitions ntpq-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This source file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * ntpq author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * ntpq copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+
+
+#include <limits.h>
+
+#define OPTION_CODE_COMPILE 1
+#include "ntpq-opts.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+tSCC zCopyright[] =
+ "ntpq copyright (c) 1970-2008 David L. Mills and/or others, all rights reserved";
+tSCC zCopyrightNotice[] =
+
+/* extracted from ../include/copyright.def near line 8 */
+"see html/copyright.html";
+extern tUsageProc optionUsage;
+
+/*
+ * global included definitions
+ */
+#ifdef __windows
+ extern int atoi(const char*);
+#else
+# include <stdlib.h>
+#endif
+
+#ifndef NULL
+# define NULL 0
+#endif
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+/*
+ * Ipv4 option description:
+ */
+tSCC zIpv4Text[] =
+ "Force IPv4 DNS name resolution";
+tSCC zIpv4_NAME[] = "IPV4";
+tSCC zIpv4_Name[] = "ipv4";
+#define IPV4_FLAGS (OPTST_DISABLED)
+
+/*
+ * Ipv6 option description:
+ */
+tSCC zIpv6Text[] =
+ "Force IPv6 DNS name resolution";
+tSCC zIpv6_NAME[] = "IPV6";
+tSCC zIpv6_Name[] = "ipv6";
+#define IPV6_FLAGS (OPTST_DISABLED)
+
+/*
+ * Command option description:
+ */
+tSCC zCommandText[] =
+ "run a command and exit";
+tSCC zCommand_NAME[] = "COMMAND";
+tSCC zCommand_Name[] = "command";
+#define COMMAND_FLAGS (OPTST_DISABLED | OPTST_STACKED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Debug_Level option description:
+ */
+#ifdef DEBUG
+tSCC zDebug_LevelText[] =
+ "Increase output debug message level";
+tSCC zDebug_Level_NAME[] = "DEBUG_LEVEL";
+tSCC zDebug_Level_Name[] = "debug-level";
+#define DEBUG_LEVEL_FLAGS (OPTST_DISABLED)
+
+#else /* disable Debug_Level */
+#define VALUE_OPT_DEBUG_LEVEL NO_EQUIVALENT
+#define DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zDebug_LevelText NULL
+#define zDebug_Level_NAME NULL
+#define zDebug_Level_Name NULL
+#endif /* DEBUG */
+
+/*
+ * Set_Debug_Level option description:
+ */
+#ifdef DEBUG
+tSCC zSet_Debug_LevelText[] =
+ "Set the output debug message level";
+tSCC zSet_Debug_Level_NAME[] = "SET_DEBUG_LEVEL";
+tSCC zSet_Debug_Level_Name[] = "set-debug-level";
+#define SET_DEBUG_LEVEL_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+#else /* disable Set_Debug_Level */
+#define VALUE_OPT_SET_DEBUG_LEVEL NO_EQUIVALENT
+#define SET_DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zSet_Debug_LevelText NULL
+#define zSet_Debug_Level_NAME NULL
+#define zSet_Debug_Level_Name NULL
+#endif /* DEBUG */
+
+/*
+ * Peers option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zPeersText[] =
+ "Print a list of the peers";
+tSCC zPeers_NAME[] = "PEERS";
+tSCC zPeers_Name[] = "peers";
+static const int
+ aPeersCantList[] = {
+ INDEX_OPT_INTERACTIVE, NO_EQUIVALENT };
+#define PEERS_FLAGS (OPTST_DISABLED)
+
+/*
+ * Interactive option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zInteractiveText[] =
+ "Force ntpq to operate in interactive mode";
+tSCC zInteractive_NAME[] = "INTERACTIVE";
+tSCC zInteractive_Name[] = "interactive";
+static const int
+ aInteractiveCantList[] = {
+ INDEX_OPT_COMMAND,
+ INDEX_OPT_PEERS, NO_EQUIVALENT };
+#define INTERACTIVE_FLAGS (OPTST_DISABLED)
+
+/*
+ * Numeric option description:
+ */
+tSCC zNumericText[] =
+ "numeric host addresses";
+tSCC zNumeric_NAME[] = "NUMERIC";
+tSCC zNumeric_Name[] = "numeric";
+#define NUMERIC_FLAGS (OPTST_DISABLED)
+
+/*
+ * Help/More_Help/Version option descriptions:
+ */
+tSCC zHelpText[] = "Display usage information and exit";
+tSCC zHelp_Name[] = "help";
+
+tSCC zMore_HelpText[] = "Extended usage information passed thru pager";
+tSCC zMore_Help_Name[] = "more-help";
+
+tSCC zVersionText[] = "Output version information and exit";
+tSCC zVersion_Name[] = "version";
+
+/*
+ * Save/Load_Opts option description:
+ */
+tSCC zSave_OptsText[] = "Save the option state to a config file";
+tSCC zSave_Opts_Name[] = "save-opts";
+
+tSCC zLoad_OptsText[] = "Load options from a config file";
+tSCC zLoad_Opts_NAME[] = "LOAD_OPTS";
+
+tSCC zNotLoad_Opts_Name[] = "no-load-opts";
+tSCC zNotLoad_Opts_Pfx[] = "no";
+#define zLoad_Opts_Name (zNotLoad_Opts_Name + 3)
+/*
+ * Declare option callback procedures
+ */
+#ifdef DEBUG
+ static tOptProc doOptSet_Debug_Level;
+#else /* not DEBUG */
+# define doOptSet_Debug_Level NULL
+#endif /* def/not DEBUG */
+#if defined(TEST_NTPQ_OPTS)
+/*
+ * Under test, omit argument processing, or call optionStackArg,
+ * if multiple copies are allowed.
+ */
+extern tOptProc
+ optionPagedUsage, optionStackArg, optionVersionStderr;
+static tOptProc
+ doUsageOpt;
+
+/*
+ * #define map the "normal" callout procs to the test ones...
+ */
+#define SET_DEBUG_LEVEL_OPT_PROC optionStackArg
+
+
+#else /* NOT defined TEST_NTPQ_OPTS */
+/*
+ * When not under test, there are different procs to use
+ */
+extern tOptProc
+ optionPagedUsage, optionPrintVersion, optionStackArg;
+static tOptProc
+ doUsageOpt;
+
+/*
+ * #define map the "normal" callout procs
+ */
+#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
+
+#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
+#endif /* defined(TEST_NTPQ_OPTS) */
+#ifdef TEST_NTPQ_OPTS
+# define DOVERPROC optionVersionStderr
+#else
+# define DOVERPROC optionPrintVersion
+#endif /* TEST_NTPQ_OPTS */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Ntpq Option Descriptions.
+ */
+static tOptDesc optDesc[ OPTION_CT ] = {
+ { /* entry idx, value */ 0, VALUE_OPT_IPV4,
+ /* equiv idx, value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ IPV4_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIpv4Text, zIpv4_NAME, zIpv4_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 1, VALUE_OPT_IPV6,
+ /* equiv idx, value */ NOLIMIT, NOLIMIT,
+ /* equivalenced to */ INDEX_OPT_IPV4,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ IPV6_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIpv6Text, zIpv6_NAME, zIpv6_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 2, VALUE_OPT_COMMAND,
+ /* equiv idx, value */ 2, VALUE_OPT_COMMAND,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ COMMAND_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionStackArg,
+ /* desc, NAME, name */ zCommandText, zCommand_NAME, zCommand_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 3, VALUE_OPT_DEBUG_LEVEL,
+ /* equiv idx, value */ 3, VALUE_OPT_DEBUG_LEVEL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ DEBUG_LEVEL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zDebug_LevelText, zDebug_Level_NAME, zDebug_Level_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 4, VALUE_OPT_SET_DEBUG_LEVEL,
+ /* equiv idx, value */ 4, VALUE_OPT_SET_DEBUG_LEVEL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ SET_DEBUG_LEVEL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ SET_DEBUG_LEVEL_OPT_PROC,
+ /* desc, NAME, name */ zSet_Debug_LevelText, zSet_Debug_Level_NAME, zSet_Debug_Level_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 5, VALUE_OPT_PEERS,
+ /* equiv idx, value */ 5, VALUE_OPT_PEERS,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PEERS_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aPeersCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPeersText, zPeers_NAME, zPeers_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 6, VALUE_OPT_INTERACTIVE,
+ /* equiv idx, value */ 6, VALUE_OPT_INTERACTIVE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ INTERACTIVE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aInteractiveCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zInteractiveText, zInteractive_NAME, zInteractive_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 7, VALUE_OPT_NUMERIC,
+ /* equiv idx, value */ 7, VALUE_OPT_NUMERIC,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ NUMERIC_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zNumericText, zNumeric_NAME, zNumeric_Name,
+ /* disablement strs */ NULL, NULL },
+
+#ifdef NO_OPTIONAL_OPT_ARGS
+# define VERSION_OPT_FLAGS OPTST_IMM | OPTST_NO_INIT
+#else
+# define VERSION_OPT_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+ OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
+#endif
+
+ { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ VERSION_OPT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ DOVERPROC,
+ /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
+ /* disablement strs */ NULL, NULL },
+
+#undef VERSION_OPT_FLAGS
+
+
+ { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ doUsageOpt,
+ /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionPagedUsage,
+ /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
+ | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSave_OptsText, NULL, zSave_Opts_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) \
+ | OPTST_DISABLE_IMM, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionLoadOpt,
+ /* desc, NAME, name */ zLoad_OptsText, zLoad_Opts_NAME, zLoad_Opts_Name,
+ /* disablement strs */ zNotLoad_Opts_Name, zNotLoad_Opts_Pfx }
+};
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Ntpq Option Environment
+ */
+tSCC zPROGNAME[] = "NTPQ";
+tSCC zUsageTitle[] =
+"ntpq - standard NTP query program - Ver. 4.2.4p5\n\
+USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]... [ host ...]\n";
+tSCC zRcName[] = ".ntprc";
+tSCC* apzHomeList[] = {
+ "$HOME",
+ ".",
+ NULL };
+
+tSCC zBugsAddr[] = "http://bugs.ntp.isc.org, bugs@ntp.org";
+#define zExplain NULL
+tSCC zDetail[] = "\n\
+The\n\
+[= prog-name =]\n\
+utility program is used to query NTP servers which\n\
+implement the standard NTP mode 6 control message formats defined\n\
+in Appendix B of the NTPv3 specification RFC1305, requesting\n\
+information about current state and/or changes in that state.\n\
+The same formats are used in NTPv4, although some of the\n\
+variables have changed and new ones added.\n";
+tSCC zFullVersion[] = NTPQ_FULL_VERSION;
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 408 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE
+ static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+tOptions ntpqOptions = {
+ OPTIONS_STRUCT_VERSION,
+ 0, NULL, /* original argc + argv */
+ ( OPTPROC_BASE
+ + OPTPROC_ERRSTOP
+ + OPTPROC_SHORTOPT
+ + OPTPROC_LONGOPT
+ + OPTPROC_NO_REQ_OPT
+ + OPTPROC_ENVIRON
+ + OPTPROC_HAS_IMMED ),
+ 0, NULL, /* current option index, current option */
+ NULL, NULL, zPROGNAME,
+ zRcName, zCopyright, zCopyrightNotice,
+ zFullVersion, apzHomeList, zUsageTitle,
+ zExplain, zDetail, optDesc,
+ zBugsAddr, /* address to send bugs to */
+ NULL, NULL, /* extensions/saved state */
+ optionUsage, /* usage procedure */
+ translate_option_strings, /* translation procedure */
+ /*
+ * Indexes to special options
+ */
+ { INDEX_OPT_MORE_HELP,
+ INDEX_OPT_SAVE_OPTS,
+ NO_EQUIVALENT /* index of '-#' option */,
+ NO_EQUIVALENT /* index of default opt */
+ },
+ 13 /* full option count */, 8 /* user option count */
+};
+
+/*
+ * Create the static procedure(s) declared above.
+ */
+static void
+doUsageOpt(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ USAGE( EXIT_SUCCESS );
+}
+
+#if ! defined(TEST_NTPQ_OPTS)
+
+/* * * * * * *
+ *
+ * For the set-debug-level option, when DEBUG is #define-d.
+ */
+#ifdef DEBUG
+static void
+doOptSet_Debug_Level(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ /* extracted from ../include/debug-opt.def, line 29 */
+DESC(DEBUG_LEVEL).optOccCt = atoi( pOptDesc->pzLastArg );
+}
+#endif /* defined DEBUG */
+
+#endif /* defined(TEST_NTPQ_OPTS) */
+
+/* extracted from /usr/local/gnu/share/autogen/optmain.tpl near line 92 */
+
+#if defined(TEST_NTPQ_OPTS) /* TEST MAIN PROCEDURE: */
+
+int
+main( int argc, char** argv )
+{
+ int res = EXIT_SUCCESS;
+ (void)optionProcess( &ntpqOptions, argc, argv );
+ {
+ void optionPutShell( tOptions* );
+ optionPutShell( &ntpqOptions );
+ }
+ return res;
+}
+#endif /* defined TEST_NTPQ_OPTS */
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 514 */
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext( char const* pz );
+static void coerce_it(void** s);
+
+static char*
+AO_gettext( char const* pz )
+{
+ char* pzRes;
+ if (pz == NULL)
+ return NULL;
+ pzRes = _(pz);
+ if (pzRes == pz)
+ return pzRes;
+ pzRes = strdup( pzRes );
+ if (pzRes == NULL) {
+ fputs( _("No memory for duping translated strings\n"), stderr );
+ exit( EXIT_FAILURE );
+ }
+ return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s); }
+#define COERSION(_f) \
+ coerce_it((void*)&(ntpqOptions._f))
+
+/*
+ * This invokes the translation code (e.g. gettext(3)).
+ */
+static void
+translate_option_strings( void )
+{
+ /*
+ * Guard against re-translation. It won't work. The strings will have
+ * been changed by the first pass through this code. One shot only.
+ */
+ if (option_usage_text.field_ct == 0)
+ return;
+ /*
+ * Do the translations. The first pointer follows the field count field.
+ * The field count field is the size of a pointer.
+ */
+ {
+ char** ppz = (char**)(void*)&(option_usage_text);
+ int ix = option_usage_text.field_ct;
+
+ do {
+ ppz++;
+ *ppz = AO_gettext(*ppz);
+ } while (--ix > 0);
+ }
+ option_usage_text.field_ct = 0;
+
+ {
+ tOptDesc* pOD = ntpqOptions.pOptDesc;
+ int ix = ntpqOptions.optCt;
+
+ for (;;) {
+ pOD->pzText = AO_gettext(pOD->pzText);
+ pOD->pz_NAME = AO_gettext(pOD->pz_NAME);
+ pOD->pz_Name = AO_gettext(pOD->pz_Name);
+ pOD->pz_DisableName = AO_gettext(pOD->pz_DisableName);
+ pOD->pz_DisablePfx = AO_gettext(pOD->pz_DisablePfx);
+ if (--ix <= 0)
+ break;
+ pOD++;
+ }
+ }
+ COERSION(pzCopyright);
+ COERSION(pzCopyNotice);
+ COERSION(pzFullVersion);
+ COERSION(pzUsageTitle);
+ COERSION(pzExplain);
+ COERSION(pzDetail);
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef __cplusplus
+}
+#endif
+/* ntpq-opts.c ends here */
diff --git a/contrib/ntp/ntpq/ntpq-opts.def b/contrib/ntp/ntpq/ntpq-opts.def
new file mode 100644
index 0000000..928bd9d
--- /dev/null
+++ b/contrib/ntp/ntpq/ntpq-opts.def
@@ -0,0 +1,345 @@
+/* -*- Mode: Text -*- */
+
+autogen definitions options;
+
+#include copyright.def
+#include homerc.def
+#include autogen-version.def
+
+prog-name = "ntpq";
+prog-title = "standard NTP query program";
+argument = '[ host ...]';
+
+test-main;
+
+flag = {
+ name = ipv4;
+ value = 4;
+ equivalence = ipv4;
+ descrip = "Force IPv4 DNS name resolution";
+ doc = <<- _EndOfDoc_
+ Force DNS resolution of following host names on the command line
+ to the IPv4 namespace.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = ipv6;
+ value = 6;
+ equivalence = ipv4;
+ descrip = "Force IPv6 DNS name resolution";
+ doc = <<- _EndOfDoc_
+ Force DNS resolution of following host names on the command line
+ to the IPv6 namespace.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = command;
+ value = c;
+ arg-type = string;
+ descrip = "run a command and exit";
+ max = NOLIMIT;
+ arg-name = cmd;
+ stack-arg;
+ doc = <<- _EndOfDoc_
+ The following argument is interpreted as an interactive format command
+ and is added to the list of commands to be executed on the specified
+ host(s).
+ _EndOfDoc_;
+};
+
+#include debug-opt.def
+
+flag = {
+ name = peers;
+ value = p;
+ descrip = "Print a list of the peers";
+ flags-cant = interactive;
+ doc = <<- _EndOfDoc_
+ Print a list of the peers known to the server as well as a summary
+ of their state. This is equivalent to the 'peers' interactive command.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = interactive;
+ value = i;
+ flags-cant = command, peers;
+ descrip = "Force ntpq to operate in interactive mode";
+ doc = <<- _EndOfDoc_
+ Force ntpq to operate in interactive mode. Prompts will be written
+ to the standard output and commands read from the standard input.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = numeric;
+ value = n;
+ descrip = "numeric host addresses";
+ doc = <<- _EndOfDoc_
+ Output all host addresses in dotted-quad numeric format rather than
+ converting to the canonical host names.
+ _EndOfDoc_;
+};
+
+detail = <<- _END_DETAIL
+ The
+ [= prog-name =]
+ utility program is used to query NTP servers which
+ implement the standard NTP mode 6 control message formats defined
+ in Appendix B of the NTPv3 specification RFC1305, requesting
+ information about current state and/or changes in that state.
+ The same formats are used in NTPv4, although some of the
+ variables have changed and new ones added.
+ _END_DETAIL;
+
+prog-man-descrip = <<- _END_PROG_MAN_DESCRIP
+ The
+ [= prog-name =]
+ utility program is used to query NTP servers which
+ implement the standard NTP mode 6 control message formats defined
+ in Appendix B of the NTPv3 specification RFC1305, requesting
+ information about current state and/or changes in that state.
+ The same formats are used in NTPv4, although some of the
+ variables have changed and new ones added. The description on this
+ page is for the NTPv4 variables.
+ The program may be run either in interactive mode or controlled using
+ command line arguments.
+ Requests to read and write arbitrary
+ variables can be assembled, with raw and pretty-printed output
+ options being available.
+ The
+ [= prog-name =]
+ utility can also obtain and print a
+ list of peers in a common format by sending multiple queries to the
+ server.
+
+ If one or more request options is included on the command line
+ when
+ [= prog-name =]
+ is executed, each of the requests will be sent
+ to the NTP servers running on each of the hosts given as command
+ line arguments, or on localhost by default.
+ If no request options
+ are given,
+ [= prog-name =]
+ will attempt to read commands from the
+ standard input and execute these on the NTP server running on the
+ first host given on the command line, again defaulting to localhost
+ when no other host is specified.
+ The
+ [= prog-name =]
+ utility will prompt for
+ commands if the standard input is a terminal device.
+
+ The
+ [= prog-name =]
+ utility uses NTP mode 6 packets to communicate with the
+ NTP server, and hence can be used to query any compatible server on
+ the network which permits it.
+ Note that since NTP is a UDP protocol
+ this communication will be somewhat unreliable, especially over
+ large distances in terms of network topology.
+ The
+ [= prog-name =]
+ utility makes
+ one attempt to retransmit requests, and will time requests out if
+ the remote host is not heard from within a suitable timeout
+ time.
+
+ Specifying a
+ command line option other than
+ .Fl i
+ or
+ .Fl n
+ will
+ cause the specified query (queries) to be sent to the indicated
+ host(s) immediately.
+ Otherwise,
+ [= prog-name =]
+ will attempt to read
+ interactive format commands from the standard input.
+ .Ss "Internal Commands"
+ Interactive format commands consist of a keyword followed by zero
+ to four arguments.
+ Only enough characters of the full keyword to
+ uniquely identify the command need be typed.
+
+ A
+ number of interactive format commands are executed entirely within
+ the
+ [= prog-name =]
+ utility itself and do not result in NTP mode 6
+ requests being sent to a server.
+ These are described following.
+ @table @code
+ @item ? [command_keyword]
+ @itemx help [command_keyword]
+ A
+ .Ql \&?
+ by itself will print a list of all the command
+ keywords known to this incarnation of
+ [= prog-name =] .
+ A
+ .Ql \&?
+ followed by a command keyword will print function and usage
+ information about the command.
+ This command is probably a better
+ source of information about
+ [= prog-name =]
+ than this manual
+ page.
+ @item addvars
+ .Ar variable_name [=value] ...
+ .Xc
+ @item rmvars variable_name ...
+ @item clearvars
+ The data carried by NTP mode 6 messages consists of a list of
+ items of the form
+ .Ql variable_name=value ,
+ where the
+ .Ql =value
+ is ignored, and can be omitted,
+ in requests to the server to read variables.
+ The
+ [= prog-name =]
+ utility maintains an internal list in which data to be included in control
+ messages can be assembled, and sent using the
+ .Ic readlist
+ and
+ .Ic writelist
+ commands described below.
+ The
+ .Ic addvars
+ command allows variables and their optional values to be added to
+ the list.
+ If more than one variable is to be added, the list should
+ be comma-separated and not contain white space.
+ The
+ .Ic rmvars
+ command can be used to remove individual variables from the list,
+ while the
+ .Ic clearlist
+ command removes all variables from the
+ list.
+ @item authenticate [ yes | no ]
+ Normally
+ [= prog-name =]
+ does not authenticate requests unless
+ they are write requests.
+ The command
+ .Ql authenticate yes
+ causes
+ [= prog-name =]
+ to send authentication with all requests it
+ makes.
+ Authenticated requests causes some servers to handle
+ requests slightly differently, and can occasionally melt the CPU in
+ fuzzballs if you turn authentication on before doing a
+ .Ic peer
+ display.
+ The command
+ .Ql authenticate
+ causes
+ [= prog-name =]
+ to display whether or not
+ [= prog-name =]
+ is currently autheinticating requests.
+ @item cooked
+ Causes output from query commands to be "cooked", so that
+ variables which are recognized by
+ [= prog-name =]
+ will have their
+ values reformatted for human consumption.
+ Variables which
+ [= prog-name =]
+ thinks should have a decodable value but didn't are
+ marked with a trailing
+ .Ql \&? .
+ .@item debug [
+ .Cm more |
+ .Cm less |
+ .Cm off
+ ]
+ .Xc
+ With no argument, displays the current debug level.
+ Otherwise, the debug level is changed to the indicated level.
+ @item delay milliseconds
+ Specify a time interval to be added to timestamps included in
+ requests which require authentication.
+ This is used to enable
+ (unreliable) server reconfiguration over long delay network paths
+ or between machines whose clocks are unsynchronized.
+ Actually the
+ server does not now require timestamps in authenticated requests,
+ so this command may be obsolete.
+ @item host hostname
+ Set the host to which future queries will be sent.
+ Hostname may
+ be either a host name or a numeric address.
+ @item hostnames Cm yes | Cm no
+ If
+ .Cm yes
+ is specified, host names are printed in
+ information displays.
+ If
+ .Cm no
+ is specified, numeric
+ addresses are printed instead.
+ The default is
+ .Cm yes ,
+ unless
+ modified using the command line
+ .Fl n
+ switch.
+ @item keyid keyid
+ This command allows the specification of a key number to be
+ used to authenticate configuration requests.
+ This must correspond
+ to a key number the server has been configured to use for this
+ purpose.
+ @item ntpversion [
+ .Cm 1 |
+ .Cm 2 |
+ .Cm 3 |
+ .Cm 4
+ ]
+ .Xc
+ Sets the NTP version number which
+ [= prog-name =]
+ claims in
+ packets.
+ Defaults to 3, Note that mode 6 control messages (and
+ modes, for that matter) didn't exist in NTP version 1.
+ There appear
+ to be no servers left which demand version 1.
+ With no argument, displays the current NTP version that will be used
+ when communicating with servers.
+ @item quit
+ Exit
+ [= prog-name =] .
+ @item passwd
+ This command prompts you to type in a password (which will not
+ be echoed) which will be used to authenticate configuration
+ requests.
+ The password must correspond to the key configured for
+ use by the NTP server for this purpose if such requests are to be
+ successful.
+ @item raw
+ Causes all output from query commands is printed as received
+ from the remote server.
+ The only formating/interpretation done on
+ the data is to transform nonascii data into a printable (but barely
+ understandable) form.
+ @item timeout Ar milliseconds
+ Specify a timeout period for responses to server queries.
+ The
+ default is about 5000 milliseconds.
+ Note that since
+ [= prog-name =]
+ retries each query once after a timeout, the total waiting time for
+ a timeout will be twice the timeout value set.
+ @end table
+
+ _END_PROG_MAN_DESCRIP;
diff --git a/contrib/ntp/ntpq/ntpq-opts.h b/contrib/ntp/ntpq/ntpq-opts.h
new file mode 100644
index 0000000..bbd35ca
--- /dev/null
+++ b/contrib/ntp/ntpq/ntpq-opts.h
@@ -0,0 +1,208 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (ntpq-opts.h)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:26:55 AM EDT
+ * From the definitions ntpq-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This header file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * ntpq author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * ntpq copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+/*
+ * This file contains the programmatic interface to the Automated
+ * Options generated for the ntpq program.
+ * These macros are documented in the AutoGen info file in the
+ * "AutoOpts" chapter. Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_NTPQ_OPTS_H_GUARD
+#define AUTOOPTS_NTPQ_OPTS_H_GUARD
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ * Ensure that the library used for compiling this generated header is at
+ * least as new as the version current when the header template was released
+ * (not counting patch version increments). Also ensure that the oldest
+ * tolerable version is at least as old as what was current when the header
+ * template was released.
+ */
+#define AO_TEMPLATE_VERSION 118784
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+ Choke Me.
+#endif
+
+/*
+ * Enumeration of each option:
+ */
+typedef enum {
+ INDEX_OPT_IPV4 = 0,
+ INDEX_OPT_IPV6 = 1,
+ INDEX_OPT_COMMAND = 2,
+ INDEX_OPT_DEBUG_LEVEL = 3,
+ INDEX_OPT_SET_DEBUG_LEVEL = 4,
+ INDEX_OPT_PEERS = 5,
+ INDEX_OPT_INTERACTIVE = 6,
+ INDEX_OPT_NUMERIC = 7,
+ INDEX_OPT_VERSION = 8,
+ INDEX_OPT_HELP = 9,
+ INDEX_OPT_MORE_HELP = 10,
+ INDEX_OPT_SAVE_OPTS = 11,
+ INDEX_OPT_LOAD_OPTS = 12
+} teOptIndex;
+
+#define OPTION_CT 13
+#define NTPQ_VERSION "4.2.4p5"
+#define NTPQ_FULL_VERSION "ntpq - standard NTP query program - Ver. 4.2.4p5"
+
+/*
+ * Interface defines for all options. Replace "n" with the UPPER_CASED
+ * option name (as in the teOptIndex enumeration above).
+ * e.g. HAVE_OPT( IPV4 )
+ */
+#define DESC(n) (ntpqOptions.pOptDesc[INDEX_OPT_## n])
+#define HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define OPT_ARG(n) (DESC(n).optArg.argString)
+#define STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define COUNT_OPT(n) (DESC(n).optOccCt)
+#define ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define CLEAR_OPT(n) STMTS( \
+ DESC(n).fOptState &= OPTST_PERSISTENT_MASK; \
+ if ( (DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+ DESC(n).fOptState |= OPTST_DISABLED; \
+ DESC(n).optCookie = NULL )
+
+/*
+ * Make sure there are no #define name conflicts with the option names
+ */
+#ifndef NO_OPTION_NAME_WARNINGS
+# ifdef IPV4
+# warning undefining IPV4 due to option name conflict
+# undef IPV4
+# endif
+# ifdef IPV6
+# warning undefining IPV6 due to option name conflict
+# undef IPV6
+# endif
+# ifdef COMMAND
+# warning undefining COMMAND due to option name conflict
+# undef COMMAND
+# endif
+# ifdef DEBUG_LEVEL
+# warning undefining DEBUG_LEVEL due to option name conflict
+# undef DEBUG_LEVEL
+# endif
+# ifdef SET_DEBUG_LEVEL
+# warning undefining SET_DEBUG_LEVEL due to option name conflict
+# undef SET_DEBUG_LEVEL
+# endif
+# ifdef PEERS
+# warning undefining PEERS due to option name conflict
+# undef PEERS
+# endif
+# ifdef INTERACTIVE
+# warning undefining INTERACTIVE due to option name conflict
+# undef INTERACTIVE
+# endif
+# ifdef NUMERIC
+# warning undefining NUMERIC due to option name conflict
+# undef NUMERIC
+# endif
+#else /* NO_OPTION_NAME_WARNINGS */
+# undef IPV4
+# undef IPV6
+# undef COMMAND
+# undef DEBUG_LEVEL
+# undef SET_DEBUG_LEVEL
+# undef PEERS
+# undef INTERACTIVE
+# undef NUMERIC
+#endif /* NO_OPTION_NAME_WARNINGS */
+
+/*
+ * Interface defines for specific options.
+ */
+#define VALUE_OPT_IPV4 '4'
+#define WHICH_OPT_IPV4 (DESC(IPV4).optActualValue)
+#define WHICH_IDX_IPV4 (DESC(IPV4).optActualIndex)
+#define VALUE_OPT_IPV6 '6'
+#define VALUE_OPT_COMMAND 'c'
+#ifdef DEBUG
+#define VALUE_OPT_DEBUG_LEVEL 'd'
+#endif /* DEBUG */
+#ifdef DEBUG
+#define VALUE_OPT_SET_DEBUG_LEVEL 'D'
+#endif /* DEBUG */
+#define VALUE_OPT_PEERS 'p'
+#define VALUE_OPT_INTERACTIVE 'i'
+#define VALUE_OPT_NUMERIC 'n'
+
+#define VALUE_OPT_VERSION 'v'
+#define VALUE_OPT_HELP '?'
+#define VALUE_OPT_MORE_HELP '!'
+#define VALUE_OPT_SAVE_OPTS '>'
+#define VALUE_OPT_LOAD_OPTS '<'
+#define SET_OPT_SAVE_OPTS(a) STMTS( \
+ DESC(SAVE_OPTS).fOptState &= OPTST_PERSISTENT_MASK; \
+ DESC(SAVE_OPTS).fOptState |= OPTST_SET; \
+ DESC(SAVE_OPTS).optArg.argString = (char const*)(a) )
+/*
+ * Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR STMTS( ntpqOptions.fOptSet &= ~OPTPROC_ERRSTOP )
+#define ERRSTOP_OPTERR STMTS( ntpqOptions.fOptSet |= OPTPROC_ERRSTOP )
+#define RESTART_OPT(n) STMTS( \
+ ntpqOptions.curOptIdx = (n); \
+ ntpqOptions.pzCurOpt = NULL )
+#define START_OPT RESTART_OPT(1)
+#define USAGE(c) (*ntpqOptions.pUsageProc)( &ntpqOptions, c )
+/* extracted from /usr/local/gnu/share/autogen/opthead.tpl near line 360 */
+
+/* * * * * *
+ *
+ * Declare the ntpq option descriptor.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern tOptions ntpqOptions;
+
+#ifndef _
+# if ENABLE_NLS
+# include <stdio.h>
+ static inline char* aoGetsText( char const* pz ) {
+ if (pz == NULL) return NULL;
+ return (char*)gettext( pz );
+ }
+# define _(s) aoGetsText(s)
+# else /* ENABLE_NLS */
+# define _(s) s
+# endif /* ENABLE_NLS */
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_NTPQ_OPTS_H_GUARD */
+/* ntpq-opts.h ends here */
diff --git a/contrib/ntp/ntpq/ntpq-opts.menu b/contrib/ntp/ntpq/ntpq-opts.menu
new file mode 100644
index 0000000..c06f90d
--- /dev/null
+++ b/contrib/ntp/ntpq/ntpq-opts.menu
@@ -0,0 +1 @@
+* ntpq Invocation:: Invoking ntpq
diff --git a/contrib/ntp/ntpq/ntpq-opts.texi b/contrib/ntp/ntpq/ntpq-opts.texi
new file mode 100644
index 0000000..0c4ca7d
--- /dev/null
+++ b/contrib/ntp/ntpq/ntpq-opts.texi
@@ -0,0 +1,215 @@
+@node ntpq Invocation
+@section Invoking ntpq
+@pindex ntpq
+@cindex standard NTP query program
+@ignore
+#
+# EDIT THIS FILE WITH CAUTION (ntpq-opts.texi)
+#
+# It has been AutoGen-ed Sunday August 17, 2008 at 05:26:58 AM EDT
+# From the definitions ntpq-opts.def
+# and the template file aginfo.tpl
+@end ignore
+This program has no explanation.
+
+The
+[= prog-name =]
+utility program is used to query NTP servers which
+implement the standard NTP mode 6 control message formats defined
+in Appendix B of the NTPv3 specification RFC1305, requesting
+information about current state and/or changes in that state.
+The same formats are used in NTPv4, although some of the
+variables have changed and new ones added.
+
+This section was generated by @strong{AutoGen},
+the aginfo template and the option descriptions for the @command{ntpq} program. It documents the ntpq usage text and option meanings.
+
+This software is released under a specialized copyright license.
+
+@menu
+* ntpq usage:: ntpq usage help (-?)
+* ntpq command:: command option (-c)
+* ntpq debug-level:: debug-level option (-d)
+* ntpq interactive:: interactive option (-i)
+* ntpq ipv4:: ipv4 option (-4)
+* ntpq ipv6:: ipv6 option (-6)
+* ntpq numeric:: numeric option (-n)
+* ntpq peers:: peers option (-p)
+* ntpq set-debug-level:: set-debug-level option (-D)
+@end menu
+
+@node ntpq usage
+@subsection ntpq usage help (-?)
+@cindex ntpq usage
+
+This is the automatically generated usage text for ntpq:
+
+@exampleindent 0
+@example
+ntpq - standard NTP query program - Ver. 4.2.5p113
+USAGE: ntpq [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]... [ host ...]
+ Flg Arg Option-Name Description
+ -4 no ipv4 Force IPv4 DNS name resolution
+ -6 no ipv6 Force IPv6 DNS name resolution
+ - an alternate for ipv4
+ -c Str command run a command and exit
+ - may appear multiple times
+ -d no debug-level Increase output debug message level
+ - may appear multiple times
+ -D Str set-debug-level Set the output debug message level
+ - may appear multiple times
+ -p no peers Print a list of the peers
+ - prohibits these options:
+ interactive
+ -i no interactive Force ntpq to operate in interactive mode
+ - prohibits these options:
+ command
+ peers
+ -n no numeric numeric host addresses
+ opt version Output version information and exit
+ -? no help Display usage information and exit
+ -! no more-help Extended usage information passed thru pager
+ -> opt save-opts Save the option state to a config file
+ -< Str load-opts Load options from a config file
+ - disabled as --no-load-opts
+ - may appear multiple times
+
+Options are specified by doubled hyphens and their name
+or by a single hyphen and the flag character.
+
+The following option preset mechanisms are supported:
+ - reading file /users/stenn/.ntprc
+ - reading file /deacon/backroom/snaps/ntp-stable/ntpq/.ntprc
+ - examining environment variables named NTPQ_*
+
+The
+[= prog-name =]
+utility program is used to query NTP servers which
+implement the standard NTP mode 6 control message formats defined
+in Appendix B of the NTPv3 specification RFC1305, requesting
+information about current state and/or changes in that state.
+The same formats are used in NTPv4, although some of the
+variables have changed and new ones added.
+
+please send bug reports to: http://bugs.ntp.org, bugs@@ntp.org
+@end example
+@exampleindent 4
+
+@node ntpq ipv4
+@subsection ipv4 option (-4)
+@cindex ntpq-ipv4
+
+This is the ``force ipv4 dns name resolution'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+is a member of the ipv4 class of options.
+@end itemize
+
+Force DNS resolution of following host names on the command line
+to the IPv4 namespace.
+
+@node ntpq ipv6
+@subsection ipv6 option (-6)
+@cindex ntpq-ipv6
+
+This is the ``force ipv6 dns name resolution'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+is a member of the ipv4 class of options.
+@end itemize
+
+Force DNS resolution of following host names on the command line
+to the IPv6 namespace.
+
+@node ntpq command
+@subsection command option (-c)
+@cindex ntpq-command
+
+This is the ``run a command and exit'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@end itemize
+
+The following argument is interpreted as an interactive format command
+and is added to the list of commands to be executed on the specified
+host(s).
+
+@node ntpq debug-level
+@subsection debug-level option (-d)
+@cindex ntpq-debug-level
+
+This is the ``increase output debug message level'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@item
+must be compiled in by defining @code{DEBUG} during the compilation.
+@end itemize
+
+Increase the debugging message output level.
+
+@node ntpq set-debug-level
+@subsection set-debug-level option (-D)
+@cindex ntpq-set-debug-level
+
+This is the ``set the output debug message level'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@item
+must be compiled in by defining @code{DEBUG} during the compilation.
+@end itemize
+
+Set the output debugging level. Can be supplied multiple times,
+but each overrides the previous value(s).
+
+@node ntpq peers
+@subsection peers option (-p)
+@cindex ntpq-peers
+
+This is the ``print a list of the peers'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+interactive.
+@end itemize
+
+Print a list of the peers known to the server as well as a summary
+of their state. This is equivalent to the 'peers' interactive command.
+
+@node ntpq interactive
+@subsection interactive option (-i)
+@cindex ntpq-interactive
+
+This is the ``force ntpq to operate in interactive mode'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+command, peers.
+@end itemize
+
+Force ntpq to operate in interactive mode. Prompts will be written
+to the standard output and commands read from the standard input.
+
+@node ntpq numeric
+@subsection numeric option (-n)
+@cindex ntpq-numeric
+
+This is the ``numeric host addresses'' option.
+Output all host addresses in dotted-quad numeric format rather than
+converting to the canonical host names.
diff --git a/contrib/ntp/ntpq/ntpq_ops.c b/contrib/ntp/ntpq/ntpq-subs.c
index c493631..07f25ce 100644
--- a/contrib/ntp/ntpq/ntpq_ops.c
+++ b/contrib/ntp/ntpq/ntpq-subs.c
@@ -6,7 +6,6 @@
#include <ctype.h>
#include <sys/types.h>
#include <sys/time.h>
-#include <netdb.h>
#include "ntpq.h"
#include "ntp_stdlib.h"
@@ -82,10 +81,10 @@ struct xcmd opcmds[] = {
{ "lpassociations", lpassociations, { NO, NO, NO, NO },
{ "", "", "", "" },
"print last obtained list of associations, including client information" },
- { "addvars", addvars, { STR, NO, NO, NO },
+ { "addvars", addvars, { NTP_STR, NO, NO, NO },
{ "name[=value][,...]", "", "", "" },
"add variables to the variable list or change their values" },
- { "rmvars", rmvars, { STR, NO, NO, NO },
+ { "rmvars", rmvars, { NTP_STR, NO, NO, NO },
{ "name[,...]", "", "", "" },
"remove variables from the variable list" },
{ "clearvars", clearvars, { NO, NO, NO, NO },
@@ -94,49 +93,49 @@ struct xcmd opcmds[] = {
{ "showvars", showvars, { NO, NO, NO, NO },
{ "", "", "", "" },
"print variables on the variable list" },
- { "readlist", readlist, { OPT|UINT, NO, NO, NO },
+ { "readlist", readlist, { OPT|NTP_UINT, NO, NO, NO },
{ "assocID", "", "", "" },
"read the system or peer variables included in the variable list" },
- { "rl", readlist, { OPT|UINT, NO, NO, NO },
+ { "rl", readlist, { OPT|NTP_UINT, NO, NO, NO },
{ "assocID", "", "", "" },
"read the system or peer variables included in the variable list" },
- { "writelist", writelist, { OPT|UINT, NO, NO, NO },
+ { "writelist", writelist, { OPT|NTP_UINT, NO, NO, NO },
{ "assocID", "", "", "" },
"write the system or peer variables included in the variable list" },
- { "readvar", readvar, { OPT|UINT, OPT|STR, NO, NO },
+ { "readvar", readvar, { OPT|NTP_UINT, OPT|NTP_STR, NO, NO },
{ "assocID", "name=value[,...]", "", "" },
"read system or peer variables" },
- { "rv", readvar, { OPT|UINT, OPT|STR, NO, NO },
+ { "rv", readvar, { OPT|NTP_UINT, OPT|NTP_STR, NO, NO },
{ "assocID", "name=value[,...]", "", "" },
"read system or peer variables" },
- { "writevar", writevar, { UINT, STR, NO, NO },
+ { "writevar", writevar, { NTP_UINT, NTP_STR, NO, NO },
{ "assocID", "name=value,[...]", "", "" },
"write system or peer variables" },
- { "mreadlist", mreadlist, { UINT, UINT, NO, NO },
+ { "mreadlist", mreadlist, { NTP_UINT, NTP_UINT, NO, NO },
{ "assocID", "assocID", "", "" },
"read the peer variables in the variable list for multiple peers" },
- { "mrl", mreadlist, { UINT, UINT, NO, NO },
+ { "mrl", mreadlist, { NTP_UINT, NTP_UINT, NO, NO },
{ "assocID", "assocID", "", "" },
"read the peer variables in the variable list for multiple peers" },
- { "mreadvar", mreadvar, { UINT, UINT, OPT|STR, NO },
+ { "mreadvar", mreadvar, { NTP_UINT, NTP_UINT, OPT|NTP_STR, NO },
{ "assocID", "assocID", "name=value[,...]", "" },
"read peer variables from multiple peers" },
- { "mrv", mreadvar, { UINT, UINT, OPT|STR, NO },
+ { "mrv", mreadvar, { NTP_UINT, NTP_UINT, OPT|NTP_STR, NO },
{ "assocID", "assocID", "name=value[,...]", "" },
"read peer variables from multiple peers" },
- { "clocklist", clocklist, { OPT|UINT, NO, NO, NO },
+ { "clocklist", clocklist, { OPT|NTP_UINT, NO, NO, NO },
{ "assocID", "", "", "" },
"read the clock variables included in the variable list" },
- { "cl", clocklist, { OPT|UINT, NO, NO, NO },
+ { "cl", clocklist, { OPT|NTP_UINT, NO, NO, NO },
{ "assocID", "", "", "" },
"read the clock variables included in the variable list" },
- { "clockvar", clockvar, { OPT|UINT, OPT|STR, NO, NO },
+ { "clockvar", clockvar, { OPT|NTP_UINT, OPT|NTP_STR, NO, NO },
{ "assocID", "name=value[,...]", "", "" },
"read clock variables" },
- { "cv", clockvar, { OPT|UINT, OPT|STR, NO, NO },
+ { "cv", clockvar, { OPT|NTP_UINT, OPT|NTP_STR, NO, NO },
{ "assocID", "name=value[,...]", "", "" },
"read clock variables" },
- { "pstatus", pstatus, { UINT, NO, NO, NO },
+ { "pstatus", pstatus, { NTP_UINT, NO, NO, NO },
{ "assocID", "", "", "" },
"print status information returned for a peer" },
{ "peers", peers, { OPT|IP_VERSION, NO, NO, NO },
@@ -522,6 +521,8 @@ dolist(
if (res != 0)
return 0;
+ if (numhosts > 1)
+ (void) fprintf(fp, "server=%s ", currenthost);
if (dsize == 0) {
if (associd == 0)
(void) fprintf(fp, "No system%s variables returned\n",
@@ -533,6 +534,7 @@ dolist(
return 1;
}
+ (void) fprintf(fp,"assID=%d ",associd);
printvars(dsize, datap, (int)rstatus, type, fp);
return 1;
}
@@ -595,11 +597,15 @@ writelist(
if (res != 0)
return;
+ if (numhosts > 1)
+ (void) fprintf(fp, "server=%s ", currenthost);
if (dsize == 0)
(void) fprintf(fp, "done! (no data returned)\n");
- else
+ else {
+ (void) fprintf(fp,"assID=%d ",associd);
printvars(dsize, datap, (int)rstatus,
(associd != 0) ? TYPE_PEER : TYPE_SYS, fp);
+ }
return;
}
@@ -666,11 +672,15 @@ writevar(
if (res != 0)
return;
+ if (numhosts > 1)
+ (void) fprintf(fp, "server=%s ", currenthost);
if (dsize == 0)
(void) fprintf(fp, "done! (no data returned)\n");
- else
+ else {
+ (void) fprintf(fp,"assID=%d ",associd);
printvars(dsize, datap, (int)rstatus,
(associd != 0) ? TYPE_PEER : TYPE_SYS, fp);
+ }
return;
}
@@ -859,23 +869,27 @@ dogetassoc(
FILE *fp
)
{
- u_short *datap;
+ char *datap;
int res;
int dsize;
u_short rstatus;
res = doquery(CTL_OP_READSTAT, 0, 0, 0, (char *)0, &rstatus,
- &dsize, (void *)&datap);
+ &dsize, &datap);
if (res != 0)
return 0;
if (dsize == 0) {
+ if (numhosts > 1)
+ (void) fprintf(fp, "server=%s ", currenthost);
(void) fprintf(fp, "No association ID's returned\n");
return 0;
}
if (dsize & 0x3) {
+ if (numhosts > 1)
+ (void) fprintf(stderr, "server=%s ", currenthost);
(void) fprintf(stderr,
"***Server returned %d octets, should be multiple of 4\n",
dsize);
@@ -884,10 +898,10 @@ dogetassoc(
numassoc = 0;
while (dsize > 0) {
- assoc_cache[numassoc].assid = ntohs(*datap);
- datap++;
- assoc_cache[numassoc].status = ntohs(*datap);
- datap++;
+ assoc_cache[numassoc].assid = ntohs(*((u_short *)datap));
+ datap += sizeof(u_short);
+ assoc_cache[numassoc].status = ntohs(*((u_short *)datap));
+ datap += sizeof(u_short);
if (++numassoc >= MAXASSOC)
break;
dsize -= sizeof(u_short) + sizeof(u_short);
@@ -928,7 +942,7 @@ printassoc(
* Output a header
*/
(void) fprintf(fp,
- "ind assID status conf reach auth condition last_event cnt\n");
+ "\nind assID status conf reach auth condition last_event cnt\n");
(void) fprintf(fp,
"===========================================================\n");
for (i = 0; i < numassoc; i++) {
@@ -1127,6 +1141,8 @@ radiostatus(
if (res != 0)
return;
+ if (numhosts > 1)
+ (void) fprintf(fp, "server=%s ", currenthost);
if (dsize == 0) {
(void) fprintf(fp, "No radio status string returned\n");
return;
@@ -1161,6 +1177,8 @@ pstatus(
if (res != 0)
return;
+ if (numhosts > 1)
+ (void) fprintf(fp, "server=%s ", currenthost);
if (dsize == 0) {
(void) fprintf(fp,
"No information returned for association %u\n",
@@ -1168,6 +1186,7 @@ pstatus(
return;
}
+ (void) fprintf(fp,"assID=%d ",associd);
printvars(dsize, datap, (int)rstatus, TYPE_PEER, fp);
}
@@ -1374,7 +1393,7 @@ doprintpeers(
while (nextvar(&datalen, &data, &name, &value)) {
struct sockaddr_storage dum_store;
- i = findvar(name, peer_var);
+ i = findvar(name, peer_var, 1);
if (i == 0)
continue; /* don't know this one */
switch (i) {
@@ -1397,6 +1416,13 @@ doprintpeers(
havevar[HAVE_REFID] = 1;
if (*value == '\0') {
dstadr_refid = "0.0.0.0";
+ } else if ((int)strlen(value) <= 4) {
+ refid_string[0] = '.';
+ (void) strcpy(&refid_string[1], value);
+ i = strlen(refid_string);
+ refid_string[i] = '.';
+ refid_string[i+1] = '\0';
+ dstadr_refid = refid_string;
} else if (decodenetnum(value, &dstadr)) {
if (SOCKNUL(&dstadr))
dstadr_refid = "0.0.0.0";
@@ -1407,13 +1433,6 @@ doprintpeers(
else
dstadr_refid =
stoa(&dstadr);
- } else if ((int)strlen(value) <= 4) {
- refid_string[0] = '.';
- (void) strcpy(&refid_string[1], value);
- i = strlen(refid_string);
- refid_string[i] = '.';
- refid_string[i+1] = '\0';
- dstadr_refid = refid_string;
} else {
havevar[HAVE_REFID] = 0;
}
@@ -1450,8 +1469,9 @@ doprintpeers(
havevar[HAVE_OFFSET] = 1;
break;
case CP_JITTER:
- if (decodetime(value, &estjitter))
- havevar[HAVE_JITTER] = 1;
+ if (pvl == peervarlist)
+ if (decodetime(value, &estjitter))
+ havevar[HAVE_JITTER] = 1;
break;
case CP_DISPERSION:
if (decodetime(value, &estdisp))
@@ -1558,6 +1578,8 @@ dogetpeers(
return 0;
if (dsize == 0) {
+ if (numhosts > 1)
+ (void) fprintf(stderr, "server=%s ", currenthost);
(void) fprintf(stderr,
"***No information returned for association %d\n",
associd);
@@ -1591,7 +1613,7 @@ dopeers(
maxhostlen = strlen(fullname);
}
if (numhosts > 1)
- (void) fprintf(fp, "%-*.*s ", maxhostlen, maxhostlen, "host");
+ (void) fprintf(fp, "%-*.*s ", maxhostlen, maxhostlen, "server");
(void) fprintf(fp,
" remote refid st t when poll reach delay offset jitter\n");
if (numhosts > 1)
@@ -1668,12 +1690,24 @@ doopeers(
)
{
register int i;
+ char fullname[LENHOSTNAME];
+ struct sockaddr_storage netnum;
if (!dogetassoc(fp))
return;
+ for (i = 0; i < numhosts; ++i) {
+ if (getnetnum(chosts[i], &netnum, fullname, af))
+ if ((int)strlen(fullname) > maxhostlen)
+ maxhostlen = strlen(fullname);
+ }
+ if (numhosts > 1)
+ (void) fprintf(fp, "%-*.*s ", maxhostlen, maxhostlen, "server");
(void) fprintf(fp,
" remote local st t when poll reach delay offset disp\n");
+ if (numhosts > 1)
+ for (i = 0; i <= maxhostlen; ++i)
+ (void) fprintf(fp, "=");
(void) fprintf(fp,
"==============================================================================\n");
diff --git a/contrib/ntp/ntpq/ntpq.1 b/contrib/ntp/ntpq/ntpq.1
new file mode 100644
index 0000000..d418636
--- /dev/null
+++ b/contrib/ntp/ntpq/ntpq.1
@@ -0,0 +1,385 @@
+.TH NTPQ 1 2008-08-17 "( 4.2.4p5)" "Programmer's Manual"
+.\" EDIT THIS FILE WITH CAUTION (ntpq.1)
+.\"
+.\" It has been AutoGen-ed Sunday August 17, 2008 at 05:26:57 AM EDT
+.\" From the definitions ntpq-opts.def
+.\" and the template file agman1.tpl
+.\"
+.SH NAME
+ntpq \- standard NTP query program
+.SH SYNOPSIS
+.B ntpq
+.\" Mixture of short (flag) options and long options
+.RB [ \-\fIflag\fP " [\fIvalue\fP]]... [" \--\fIopt-name\fP " [[=| ]\fIvalue\fP]]..."
+.br
+.in +8
+[ host ...]
+.SH "DESCRIPTION"
+This manual page documents, briefly, the \fBntpq\fP command.
+The
+[= prog-name =]
+utility program is used to query NTP servers which
+implement the standard NTP mode 6 control message formats defined
+in Appendix B of the NTPv3 specification RFC1305, requesting
+information about current state and/or changes in that state.
+The same formats are used in NTPv4, although some of the
+variables have changed and new ones added. The description on this
+page is for the NTPv4 variables.
+The program may be run either in interactive mode or controlled using
+command line arguments.
+Requests to read and write arbitrary
+variables can be assembled, with raw and pretty-printed output
+options being available.
+The
+[= prog-name =]
+utility can also obtain and print a
+list of peers in a common format by sending multiple queries to the
+server.
+
+If one or more request options is included on the command line
+when
+[= prog-name =]
+is executed, each of the requests will be sent
+to the NTP servers running on each of the hosts given as command
+line arguments, or on localhost by default.
+If no request options
+are given,
+[= prog-name =]
+will attempt to read commands from the
+standard input and execute these on the NTP server running on the
+first host given on the command line, again defaulting to localhost
+when no other host is specified.
+The
+[= prog-name =]
+utility will prompt for
+commands if the standard input is a terminal device.
+
+The
+[= prog-name =]
+utility uses NTP mode 6 packets to communicate with the
+NTP server, and hence can be used to query any compatible server on
+the network which permits it.
+Note that since NTP is a UDP protocol
+this communication will be somewhat unreliable, especially over
+large distances in terms of network topology.
+The
+[= prog-name =]
+utility makes
+one attempt to retransmit requests, and will time requests out if
+the remote host is not heard from within a suitable timeout
+time.
+
+Specifying a
+command line option other than
+.Fl i
+or
+.Fl n
+will
+cause the specified query (queries) to be sent to the indicated
+host(s) immediately.
+Otherwise,
+[= prog-name =]
+will attempt to read
+interactive format commands from the standard input.
+.Ss "Internal Commands"
+Interactive format commands consist of a keyword followed by zero
+to four arguments.
+Only enough characters of the full keyword to
+uniquely identify the command need be typed.
+
+A
+number of interactive format commands are executed entirely within
+the
+[= prog-name =]
+utility itself and do not result in NTP mode 6
+requests being sent to a server.
+These are described following.
+.sp
+.IR "? [command_keyword]"
+.sp 1x help [command_keyword]
+A
+.Ql \&?
+by itself will print a list of all the command
+keywords known to this incarnation of
+[= prog-name =] .
+A
+.Ql \&?
+followed by a command keyword will print function and usage
+information about the command.
+This command is probably a better
+source of information about
+[= prog-name =]
+than this manual
+page.
+.sp
+.IR "addvars"
+.Ar variable_name [=value] ...
+.Xc
+.sp
+.IR "rmvars variable_name ..."
+.sp
+.IR "clearvars"
+The data carried by NTP mode 6 messages consists of a list of
+items of the form
+.Ql variable_name=value ,
+where the
+.Ql =value
+is ignored, and can be omitted,
+in requests to the server to read variables.
+The
+[= prog-name =]
+utility maintains an internal list in which data to be included in control
+messages can be assembled, and sent using the
+.Ic readlist
+and
+.Ic writelist
+commands described below.
+The
+.Ic addvars
+command allows variables and their optional values to be added to
+the list.
+If more than one variable is to be added, the list should
+be comma-separated and not contain white space.
+The
+.Ic rmvars
+command can be used to remove individual variables from the list,
+while the
+.Ic clearlist
+command removes all variables from the
+list.
+.sp
+.IR "authenticate [ yes | no ]"
+Normally
+[= prog-name =]
+does not authenticate requests unless
+they are write requests.
+The command
+.Ql authenticate yes
+causes
+[= prog-name =]
+to send authentication with all requests it
+makes.
+Authenticated requests causes some servers to handle
+requests slightly differently, and can occasionally melt the CPU in
+fuzzballs if you turn authentication on before doing a
+.Ic peer
+display.
+The command
+.Ql authenticate
+causes
+[= prog-name =]
+to display whether or not
+[= prog-name =]
+is currently autheinticating requests.
+.sp
+.IR "cooked"
+Causes output from query commands to be "cooked", so that
+variables which are recognized by
+[= prog-name =]
+will have their
+values reformatted for human consumption.
+Variables which
+[= prog-name =]
+thinks should have a decodable value but didn't are
+marked with a trailing
+.Ql \&? .
+.@item debug [
+.Cm more |
+.Cm less |
+.Cm off
+]
+.Xc
+With no argument, displays the current debug level.
+Otherwise, the debug level is changed to the indicated level.
+.sp
+.IR "delay milliseconds"
+Specify a time interval to be added to timestamps included in
+requests which require authentication.
+This is used to enable
+(unreliable) server reconfiguration over long delay network paths
+or between machines whose clocks are unsynchronized.
+Actually the
+server does not now require timestamps in authenticated requests,
+so this command may be obsolete.
+.sp
+.IR "host hostname"
+Set the host to which future queries will be sent.
+Hostname may
+be either a host name or a numeric address.
+.sp
+.IR "hostnames Cm yes | Cm no"
+If
+.Cm yes
+is specified, host names are printed in
+information displays.
+If
+.Cm no
+is specified, numeric
+addresses are printed instead.
+The default is
+.Cm yes ,
+unless
+modified using the command line
+.Fl n
+switch.
+.sp
+.IR "keyid keyid"
+This command allows the specification of a key number to be
+used to authenticate configuration requests.
+This must correspond
+to a key number the server has been configured to use for this
+purpose.
+.sp
+.IR "ntpversion ["
+.Cm 1 |
+.Cm 2 |
+.Cm 3 |
+.Cm 4
+]
+.Xc
+Sets the NTP version number which
+[= prog-name =]
+claims in
+packets.
+Defaults to 3, Note that mode 6 control messages (and
+modes, for that matter) didn't exist in NTP version 1.
+There appear
+to be no servers left which demand version 1.
+With no argument, displays the current NTP version that will be used
+when communicating with servers.
+.sp
+.IR "quit"
+Exit
+[= prog-name =] .
+.sp
+.IR "passwd"
+This command prompts you to type in a password (which will not
+be echoed) which will be used to authenticate configuration
+requests.
+The password must correspond to the key configured for
+use by the NTP server for this purpose if such requests are to be
+successful.
+.sp
+.IR "raw"
+Causes all output from query commands is printed as received
+from the remote server.
+The only formating/interpretation done on
+the data is to transform nonascii data into a printable (but barely
+understandable) form.
+.sp
+.IR "timeout Ar milliseconds"
+Specify a timeout period for responses to server queries.
+The
+default is about 5000 milliseconds.
+Note that since
+[= prog-name =]
+retries each query once after a timeout, the total waiting time for
+a timeout will be twice the timeout value set.
+.br
+
+.SH OPTIONS
+.TP
+.BR \-4 ", " \--ipv4
+Force IPv4 DNS name resolution.
+This option is a member of the ipv4 class of options.
+.sp
+Force DNS resolution of following host names on the command line
+to the IPv4 namespace.
+.TP
+.BR \-6 ", " \--ipv6
+Force IPv6 DNS name resolution.
+This option is a member of the ipv4 class of options.
+.sp
+Force DNS resolution of following host names on the command line
+to the IPv6 namespace.
+.TP
+.BR \-c " \fIcmd\fP, " \--command "=" \fIcmd\fP
+run a command and exit.
+This option may appear an unlimited number of times.
+.sp
+The following argument is interpreted as an interactive format command
+and is added to the list of commands to be executed on the specified
+host(s).
+.TP
+.BR \-d ", " \--debug-level
+Increase output debug message level.
+This option may appear an unlimited number of times.
+.sp
+Increase the debugging message output level.
+.TP
+.BR \-D " \fIstring\fP, " \--set-debug-level "=" \fIstring\fP
+Set the output debug message level.
+This option may appear an unlimited number of times.
+.sp
+Set the output debugging level. Can be supplied multiple times,
+but each overrides the previous value(s).
+.TP
+.BR \-p ", " \--peers
+Print a list of the peers.
+This option must not appear in combination with any of the following options:
+interactive.
+.sp
+Print a list of the peers known to the server as well as a summary
+of their state. This is equivalent to the 'peers' interactive command.
+.TP
+.BR \-i ", " \--interactive
+Force ntpq to operate in interactive mode.
+This option must not appear in combination with any of the following options:
+command, peers.
+.sp
+Force ntpq to operate in interactive mode. Prompts will be written
+to the standard output and commands read from the standard input.
+.TP
+.BR \-n ", " \--numeric
+numeric host addresses.
+.sp
+Output all host addresses in dotted-quad numeric format rather than
+converting to the canonical host names.
+.TP
+.BR \-? , " \--help"
+Display usage information and exit.
+.TP
+.BR \-! , " \--more-help"
+Extended usage information passed thru pager.
+.TP
+.BR \-> " [\fIrcfile\fP]," " \--save-opts" "[=\fIrcfile\fP]"
+Save the option state to \fIrcfile\fP. The default is the \fIlast\fP
+configuration file listed in the \fBOPTION PRESETS\fP section, below.
+.TP
+.BR \-< " \fIrcfile\fP," " \--load-opts" "=\fIrcfile\fP," " \--no-load-opts"
+Load options from \fIrcfile\fP.
+The \fIno-load-opts\fP form will disable the loading
+of earlier RC/INI files. \fI--no-load-opts\fP is handled early,
+out of order.
+.TP
+.BR \-v " [{\fIv|c|n\fP}]," " \--version" "[=\fI{v|c|n}\fP]"
+Output version of program and exit. The default mode is `v', a simple
+version. The `c' mode will print copyright information and `n' will
+print the full copyright notice.
+.SH OPTION PRESETS
+Any option that is not marked as \fInot presettable\fP may be preset
+by loading values from configuration ("RC" or ".INI") file(s) and values from
+environment variables named:
+.nf
+ \fBNTPQ_<option-name>\fP or \fBNTPQ\fP
+.fi
+.aj
+The environmental presets take precedence (are processed later than)
+the configuration files.
+The \fIhomerc\fP files are "\fI$HOME\fP", and "\fI.\fP".
+If any of these are directories, then the file \fI.ntprc\fP
+is searched for within those directories.
+.SH AUTHOR
+David L. Mills and/or others
+.br
+Please send bug reports to: http://bugs.ntp.isc.org, bugs@ntp.org
+
+.PP
+.nf
+.na
+see html/copyright.html
+.fi
+.ad
+.PP
+This manual page was \fIAutoGen\fP-erated from the \fBntpq\fP
+option definitions.
diff --git a/contrib/ntp/ntpq/ntpq.c b/contrib/ntp/ntpq/ntpq.c
index bc12725..9137940 100644
--- a/contrib/ntp/ntpq/ntpq.c
+++ b/contrib/ntp/ntpq/ntpq.c
@@ -4,6 +4,12 @@
#include <stdio.h>
+#include <ctype.h>
+#include <signal.h>
+#include <setjmp.h>
+#include <sys/types.h>
+#include <sys/time.h>
+
#include "ntpq.h"
#include "ntp_unixtime.h"
#include "ntp_calendar.h"
@@ -15,16 +21,13 @@
#include "isc/net.h"
#include "isc/result.h"
-#include <ctype.h>
-#include <signal.h>
-#include <setjmp.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <netdb.h>
+#include "ntpq-opts.h"
+
#ifdef SYS_WINNT
+# include <Mswsock.h>
# include <io.h>
#else
-#define closesocket close
+# define closesocket close
#endif /* SYS_WINNT */
#if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT)
@@ -33,9 +36,14 @@
#endif /* HAVE_LIBREADLINE || HAVE_LIBEDIT */
#ifdef SYS_VXWORKS
-/* vxWorks needs mode flag -casey*/
-#define open(name, flags) open(name, flags, 0777)
-#define SERVER_PORT_NUM 123
+ /* vxWorks needs mode flag -casey*/
+# define open(name, flags) open(name, flags, 0777)
+# define SERVER_PORT_NUM 123
+#endif
+
+/* we use COMMAND as an autogen keyword */
+#ifdef COMMAND
+# undef COMMAND
#endif
/*
@@ -47,6 +55,11 @@ const char *prompt = "ntpq> "; /* prompt to ask him about */
/*
+ * for get_systime()
+ */
+s_char sys_precision; /* local clock precision (log2 s) */
+
+/*
* Keyid used for authenticated requests. Obtained on the fly.
*/
u_long info_auth_keyid = 0;
@@ -156,7 +169,7 @@ struct ctl_var peer_var[] = {
{ CP_REC, TS, "rec" }, /* 19 */
{ CP_XMT, TS, "xmt" }, /* 20 */
{ CP_REACH, OC, "reach" }, /* 21 */
- { CP_VALID, UI, "valid" }, /* 22 */
+ { CP_UNREACH, UI, "unreach" }, /* 22 */
{ CP_TIMER, UI, "timer" }, /* 23 */
{ CP_DELAY, FS, "delay" }, /* 24 */
{ CP_OFFSET, FL, "offset" }, /* 25 */
@@ -209,17 +222,19 @@ struct ctl_var clock_var[] = {
* flasher bits
*/
static const char *tstflagnames[] = {
- "dup_pkt", /* TEST1 */
- "bogus_pkt", /* TEST2 */
- "proto_unsync", /* TEST3 */
- "no_access", /* TEST4 */
- "bad_auth", /* TEST5 */
- "peer_unsync", /* TEST6 */
- "peer_stratum", /* TEST7 */
- "root_bounds", /* TEST8 */
- "peer_bounds", /* TEST9 */
- "bad_autokey", /* TEST10 */
- "not_proventic" /* TEST11*/
+ "pkt_dup", /* TEST1 */
+ "pkt_bogus", /* TEST2 */
+ "pkt_proto", /* TEST3 */
+ "pkt_denied", /* TEST4 */
+ "pkt_auth", /* TEST5 */
+ "pkt_synch", /* TEST6 */
+ "pkt_dist", /* TEST7 */
+ "pkt_autokey", /* TEST8 */
+ "pkt_crypto", /* TEST9 */
+ "peer_stratum", /* TEST10 */
+ "peer_dist", /* TEST11 */
+ "peer_loop", /* TEST12 */
+ "peer_unfit" /* TEST13 */
};
@@ -284,31 +299,31 @@ static int assoccmp P((struct association *, struct association *));
* Built-in commands we understand
*/
struct xcmd builtins[] = {
- { "?", help, { OPT|STR, NO, NO, NO },
+ { "?", help, { OPT|NTP_STR, NO, NO, NO },
{ "command", "", "", "" },
"tell the use and syntax of commands" },
- { "help", help, { OPT|STR, NO, NO, NO },
+ { "help", help, { OPT|NTP_STR, NO, NO, NO },
{ "command", "", "", "" },
"tell the use and syntax of commands" },
- { "timeout", timeout, { OPT|UINT, NO, NO, NO },
+ { "timeout", timeout, { OPT|NTP_UINT, NO, NO, NO },
{ "msec", "", "", "" },
"set the primary receive time out" },
- { "delay", auth_delay, { OPT|INT, NO, NO, NO },
+ { "delay", auth_delay, { OPT|NTP_INT, NO, NO, NO },
{ "msec", "", "", "" },
"set the delay added to encryption time stamps" },
- { "host", host, { OPT|STR, OPT|STR, NO, NO },
+ { "host", host, { OPT|NTP_STR, OPT|NTP_STR, NO, NO },
{ "-4|-6", "hostname", "", "" },
"specify the host whose NTP server we talk to" },
- { "poll", ntp_poll, { OPT|UINT, OPT|STR, NO, NO },
+ { "poll", ntp_poll, { OPT|NTP_UINT, OPT|NTP_STR, NO, NO },
{ "n", "verbose", "", "" },
"poll an NTP server in client mode `n' times" },
{ "passwd", passwd, { NO, NO, NO, NO },
{ "", "", "", "" },
"specify a password to use for authenticated requests"},
- { "hostnames", hostnames, { OPT|STR, NO, NO, NO },
+ { "hostnames", hostnames, { OPT|NTP_STR, NO, NO, NO },
{ "yes|no", "", "", "" },
"specify whether hostnames or net numbers are printed"},
- { "debug", setdebug, { OPT|STR, NO, NO, NO },
+ { "debug", setdebug, { OPT|NTP_STR, NO, NO, NO },
{ "no|more|less", "", "", "" },
"set/change debugging level" },
{ "quit", quit, { NO, NO, NO, NO },
@@ -317,7 +332,7 @@ struct xcmd builtins[] = {
{ "exit", quit, { NO, NO, NO, NO },
{ "", "", "", "" },
"exit ntpq" },
- { "keyid", keyid, { OPT|UINT, NO, NO, NO },
+ { "keyid", keyid, { OPT|NTP_UINT, NO, NO, NO },
{ "key#", "", "", "" },
"set keyid to use for authenticated requests" },
{ "version", version, { NO, NO, NO, NO },
@@ -329,13 +344,13 @@ struct xcmd builtins[] = {
{ "cooked", cooked, { NO, NO, NO, NO },
{ "", "", "", "" },
"do cooked mode variable output" },
- { "authenticate", authenticate, { OPT|STR, NO, NO, NO },
+ { "authenticate", authenticate, { OPT|NTP_STR, NO, NO, NO },
{ "yes|no", "", "", "" },
"always authenticate requests to this server" },
- { "ntpversion", ntpversion, { OPT|UINT, NO, NO, NO },
+ { "ntpversion", ntpversion, { OPT|NTP_UINT, NO, NO, NO },
{ "version number", "", "", "" },
"set the NTP version number to use for requests" },
- { "keytype", keytype, { OPT|STR, NO, NO, NO },
+ { "keytype", keytype, { OPT|NTP_STR, NO, NO, NO },
{ "key type (md5|des)", "", "", "" },
"set key type to use for authenticated requests (des|md5)" },
{ 0, 0, { NO, NO, NO, NO },
@@ -358,6 +373,7 @@ struct xcmd builtins[] = {
#define MAXVARLEN 256 /* maximum length of a variable name */
#define MAXVALLEN 400 /* maximum length of a variable value */
#define MAXOUTLINE 72 /* maximum length of an output line */
+#define SCREENWIDTH 76 /* nominal screen width in columns */
/*
* Some variables used and manipulated locally
@@ -457,10 +473,8 @@ CALL(ntpq,"ntpq",ntpqmain);
void clear_globals(void)
{
extern int ntp_optind;
- extern char *ntp_optarg;
showhostnames = 0; /* don'tshow host names by default */
ntp_optind = 0;
- ntp_optarg = 0;
server_entry = NULL; /* server entry for ntp */
havehost = 0; /* set to 1 when host open */
numassoc = 0; /* number of cached associations */
@@ -489,15 +503,13 @@ ntpqmain(
char *argv[]
)
{
- int c;
- int errflg = 0;
extern int ntp_optind;
- extern char *ntp_optarg;
-#ifdef NO_MAIN_ALLOWED
- clear_globals();
- taskPrioritySet(taskIdSelf(), 100 );
+#ifdef SYS_VXWORKS
+ clear_globals();
+ taskPrioritySet(taskIdSelf(), 100 );
#endif
+
delay_time.l_ui = 0;
delay_time.l_uf = DEFDELAY;
@@ -515,7 +527,49 @@ ntpqmain(
}
progname = argv[0];
- ai_fam_templ = ai_fam_default;
+
+ {
+ int optct = optionProcess(&ntpqOptions, argc, argv);
+ argc -= optct;
+ argv += optct;
+ }
+
+ switch (WHICH_IDX_IPV4) {
+ case INDEX_OPT_IPV4:
+ ai_fam_templ = AF_INET;
+ break;
+ case INDEX_OPT_IPV6:
+ ai_fam_templ = AF_INET6;
+ break;
+ default:
+ ai_fam_templ = ai_fam_default;
+ break;
+ }
+
+ if (HAVE_OPT(COMMAND)) {
+ int cmdct = STACKCT_OPT( COMMAND );
+ const char** cmds = STACKLST_OPT( COMMAND );
+
+ while (cmdct-- > 0) {
+ ADDCMD(*cmds++);
+ }
+ }
+
+ debug = DESC(DEBUG_LEVEL).optOccCt;
+
+ if (HAVE_OPT(INTERACTIVE)) {
+ interactive = 1;
+ }
+
+ if (HAVE_OPT(NUMERIC)) {
+ showhostnames = 0;
+ }
+
+ if (HAVE_OPT(PEERS)) {
+ ADDCMD("peers");
+ }
+
+#if 0
while ((c = ntp_getopt(argc, argv, "46c:dinp")) != EOF)
switch (c) {
case '4':
@@ -549,6 +603,7 @@ ntpqmain(
progname);
exit(2);
}
+#endif
if (ntp_optind == argc) {
ADDHOST(DEFHOST);
} else {
@@ -630,7 +685,11 @@ openhost(
hints.ai_flags = AI_NUMERICHOST;
a_info = getaddrinfo(hname, service, &hints, &ai);
- if (a_info == EAI_NONAME || a_info == EAI_NODATA) {
+ if (a_info == EAI_NONAME
+#ifdef EAI_NODATA
+ || a_info == EAI_NODATA
+#endif
+ ) {
hints.ai_flags = AI_CANONNAME;
#ifdef AI_ADDRCONFIG
hints.ai_flags |= AI_ADDRCONFIG;
@@ -684,6 +743,7 @@ openhost(
{
int optionValue = SO_SYNCHRONOUS_NONALERT;
int err;
+
err = setsockopt(INVALID_SOCKET, SOL_SOCKET, SO_OPENTYPE, (char *)&optionValue, sizeof(optionValue));
if (err != NO_ERROR) {
(void) fprintf(stderr, "cannot open nonoverlapped sockets\n");
@@ -1268,6 +1328,8 @@ doquery(
done = 1;
goto again;
}
+ if (numhosts > 1)
+ (void) fprintf(stderr, "server=%s ", currenthost);
switch(res) {
case CERR_BADFMT:
(void) fprintf(stderr,
@@ -1577,16 +1639,16 @@ getarg(
static const char *digits = "0123456789";
switch (code & ~OPT) {
- case STR:
+ case NTP_STR:
argp->string = str;
break;
- case ADD:
+ case NTP_ADD:
if (!getnetnum(str, &(argp->netnum), (char *)0, 0)) {
return 0;
}
break;
- case INT:
- case UINT:
+ case NTP_INT:
+ case NTP_UINT:
isneg = 0;
np = str;
if (*np == '&') {
@@ -1629,7 +1691,7 @@ getarg(
} while (*(++np) != '\0');
if (isneg) {
- if ((code & ~OPT) == UINT) {
+ if ((code & ~OPT) == NTP_UINT) {
(void) fprintf(stderr,
"***Value %s should be unsigned\n", str);
return 0;
@@ -1666,7 +1728,6 @@ getnetnum(
int af
)
{
- int err;
int sockaddr_len;
struct addrinfo hints, *ai = NULL;
@@ -1685,10 +1746,9 @@ getnetnum(
getnameinfo((struct sockaddr *)num, sockaddr_len,
fullhost, sizeof(fullhost), NULL, 0,
NI_NUMERICHOST);
-
}
return 1;
- } else if ((err = getaddrinfo(hname, "ntp", &hints, &ai)) == 0) {
+ } else if (getaddrinfo(hname, "ntp", &hints, &ai) == 0) {
memmove((char *)num, ai->ai_addr, ai->ai_addrlen);
if (ai->ai_canonname != 0)
(void) strcpy(fullhost, ai->ai_canonname);
@@ -1915,8 +1975,8 @@ decodeint(
{
if (*str == '0') {
if (*(str+1) == 'x' || *(str+1) == 'X')
- return hextoint(str+2, (void *)&val);
- return octtoint(str, (void *)&val);
+ return hextoint(str+2, val);
+ return octtoint(str, val);
}
return atoint(str, val);
}
@@ -1991,57 +2051,56 @@ help(
FILE *fp
)
{
- int i;
- int n;
struct xcmd *xcp;
char *cmd;
- const char *cmdsort[100];
- int length[100];
- int maxlength;
- int numperline;
- static const char *spaces = " "; /* 20 spaces */
+ const char *list[100];
+ int word, words;
+ int row, rows;
+ int col, cols;
if (pcmd->nargs == 0) {
- n = 0;
+ words = 0;
for (xcp = builtins; xcp->keyword != 0; xcp++) {
if (*(xcp->keyword) != '?')
- cmdsort[n++] = xcp->keyword;
+ list[words++] = xcp->keyword;
}
for (xcp = opcmds; xcp->keyword != 0; xcp++)
- cmdsort[n++] = xcp->keyword;
+ list[words++] = xcp->keyword;
+ qsort(
#ifdef QSORT_USES_VOID_P
- qsort(cmdsort, (size_t)n, sizeof(char *), helpsort);
+ (void *)
#else
- qsort((char *)cmdsort, (size_t)n, sizeof(char *), helpsort);
+ (char *)
#endif
-
- maxlength = 0;
- for (i = 0; i < n; i++) {
- length[i] = strlen(cmdsort[i]);
- if (length[i] > maxlength)
- maxlength = length[i];
- }
- maxlength++;
- numperline = 76 / maxlength;
-
- (void) fprintf(fp, "Commands available:\n");
- for (i = 0; i < n; i++) {
- if ((i % numperline) == (numperline-1)
- || i == (n-1))
- (void) fprintf(fp, "%s\n", cmdsort[i]);
- else
- (void) fprintf(fp, "%s%s", cmdsort[i],
- spaces+20-maxlength+length[i]);
+ (list), (size_t)(words), sizeof(char *), helpsort);
+ col = 0;
+ for (word = 0; word < words; word++) {
+ int length = strlen(list[word]);
+ if (col < length) {
+ col = length;
+ }
}
+
+ cols = SCREENWIDTH / ++col;
+ rows = (words + cols - 1) / cols;
+
+ (void) fprintf(fp, "ntpq commands:\n");
+
+ for (row = 0; row < rows; row++) {
+ for (word = row; word < words; word += rows) {
+ (void) fprintf(fp, "%-*.*s", col, col-1, list[word]);
+ }
+ (void) fprintf(fp, "\n");
+ }
} else {
cmd = pcmd->argval[0].string;
- n = findcmd(cmd, builtins, opcmds, &xcp);
- if (n == 0) {
+ words = findcmd(cmd, builtins, opcmds, &xcp);
+ if (words == 0) {
(void) fprintf(stderr,
"Command `%s' is unknown\n", cmd);
return;
- } else if (n >= 2) {
+ } else if (words >= 2) {
(void) fprintf(stderr,
"Command `%s' is ambiguous\n", cmd);
return;
@@ -2743,12 +2802,15 @@ nextvar(
/*
- * findvar - see if this variable is known to us
+ * findvar - see if this variable is known to us.
+ * If "code" is 1, return ctl_var->code.
+ * Otherwise return the ordinal position of the found variable.
*/
int
findvar(
char *varname,
- struct ctl_var *varlist
+ struct ctl_var *varlist,
+ int code
)
{
register char *np;
@@ -2758,7 +2820,10 @@ findvar(
np = varname;
while (vl->fmt != EOV) {
if (vl->fmt != PADDING && STREQ(np, vl->text))
- return vl->code;
+ return (code)
+ ? vl->code
+ : (vl - varlist)
+ ;
vl++;
}
return 0;
@@ -2964,7 +3029,7 @@ tstflags(
cb += strlen(cb);
} else {
*cb++ = ' ';
- for (i = 0; i < 11; i++) {
+ for (i = 0; i < 13; i++) {
if (val & 0x1) {
sprintf(cb, "%s%s", sep, tstflagnames[i]);
sep = ", ";
@@ -3022,7 +3087,7 @@ cookedprint(
startoutput();
while (nextvar(&length, &data, &name, &value)) {
- varid = findvar(name, varlist);
+ varid = findvar(name, varlist, 0);
if (varid == 0) {
output_raw = '*';
} else {
diff --git a/contrib/ntp/ntpq/ntpq.h b/contrib/ntp/ntpq/ntpq.h
index 1bb1028..0f29fd5 100644
--- a/contrib/ntp/ntpq/ntpq.h
+++ b/contrib/ntp/ntpq/ntpq.h
@@ -15,14 +15,17 @@
/*
* Flags for forming descriptors.
*/
-#define OPT 0x80 /* this argument is optional, or'd with type */
+/*
+ * Flags for forming descriptors.
+ */
+#define OPT 0x80 /* this argument is optional, or'd with type */
-#define NO 0x0
-#define STR 0x1 /* string argument */
-#define UINT 0x2 /* unsigned integer */
-#define INT 0x3 /* signed integer */
-#define ADD 0x4 /* IP network address */
-#define IP_VERSION 0x5 /* IP address family */
+#define NO 0x0
+#define NTP_STR 0x1 /* string argument */
+#define NTP_UINT 0x2 /* unsigned integer */
+#define NTP_INT 0x3 /* signed integer */
+#define NTP_ADD 0x4 /* IP network address */
+#define IP_VERSION 0x5 /* IP version */
/*
* Arguments are returned in a union
@@ -87,4 +90,4 @@ extern int nextvar P((int *, char **, char **, char **));
extern int decodetime P((char *, l_fp *));
extern void printvars P((int, char *, int, int, FILE *));
extern int decodeint P((char *, long *));
-extern int findvar P((char *, struct ctl_var *));
+extern int findvar P((char *, struct ctl_var *, int code));
diff --git a/contrib/ntp/packageinfo.sh b/contrib/ntp/packageinfo.sh
new file mode 100644
index 0000000..fe1a4ba
--- /dev/null
+++ b/contrib/ntp/packageinfo.sh
@@ -0,0 +1,31 @@
+repotype=stable
+# version=Protocol.Major.Minor
+# odd minor numbers are for -dev, even minor numbers are for -stable
+proto=4
+major=2
+minor=4
+version=${proto}.${major}.${minor}
+# Point. 3 cases:
+# - Numeric values increment
+# - empty 'increments' to 1
+# - NEW 'increments' to empty
+point=5
+# Special. Normally unused. A suffix.
+#special=ag
+special=
+# [???] To start an RC cycle: RC->yes
+# To release from an RC cycle: rcpoint-> GO
+# ReleaseCandidate. 'yes' or 'no'.
+releasecandidate=no
+#releasecandidate=no
+# ChangeLog tag
+CLTAG=NTP_4_2_0
+###
+# The following is for ntp-stable. 2 cases:
+# - Numeric values increment
+# - GO triggers a release
+# - - rcpoint gets set to 0
+# - - releasecandidate gets set to no
+# - GRONK is for -dev
+rcpoint=
+#rcpoint=GRONK
diff --git a/contrib/ntp/parseutil/Makefile.in b/contrib/ntp/parseutil/Makefile.in
index fbaded6..ce97f1c 100644
--- a/contrib/ntp/parseutil/Makefile.in
+++ b/contrib/ntp/parseutil/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -21,7 +21,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +36,56 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+ANSI2KNR = ../util/ansi2knr
+noinst_PROGRAMS = @TESTDCF@ @DCFD@
+EXTRA_PROGRAMS = testdcf$(EXEEXT) dcfd$(EXEEXT)
+subdir = parseutil
+DIST_COMMON = README $(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/hs_ulong_const.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 =
+PROGRAMS = $(noinst_PROGRAMS)
+dcfd_SOURCES = dcfd.c
+dcfd_OBJECTS = dcfd$U.$(OBJEXT)
+dcfd_LDADD = $(LDADD)
+testdcf_SOURCES = testdcf.c
+testdcf_OBJECTS = testdcf$U.$(OBJEXT)
+testdcf_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = dcfd.c testdcf.c
+DIST_SOURCES = dcfd.c testdcf.c
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +93,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +109,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +164,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +199,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,63 +207,53 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ../util/ansi2knr
-noinst_PROGRAMS = @TESTDCF@ @DCFD@
-EXTRA_PROGRAMS = testdcf dcfd
INCLUDES = -I$(top_srcdir)/include
ETAGS_ARGS = Makefile.am
DISTCLEANFILES = $(EXTRA_PROGRAMS)
-subdir = parseutil
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-EXTRA_PROGRAMS = testdcf$(EXEEXT) dcfd$(EXEEXT)
-noinst_PROGRAMS = @TESTDCF@ @DCFD@
-PROGRAMS = $(noinst_PROGRAMS)
-
-dcfd_SOURCES = dcfd.c
-dcfd_OBJECTS = dcfd$U.$(OBJEXT)
-dcfd_LDADD = $(LDADD)
-dcfd_DEPENDENCIES =
-dcfd_LDFLAGS =
-testdcf_SOURCES = testdcf.c
-testdcf_OBJECTS = testdcf$U.$(OBJEXT)
-testdcf_LDADD = $(LDADD)
-testdcf_DEPENDENCIES =
-testdcf_LDFLAGS =
-
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/dcfd$U.Po ./$(DEPDIR)/testdcf$U.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = dcfd.c testdcf.c
-DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am
-SOURCES = dcfd.c testdcf.c
-
all: all-am
.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+.SUFFIXES: .c .lo .o .obj
+$(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 parseutil/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu parseutil/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+ $(AUTOMAKE) --foreign parseutil/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
clean-noinstPROGRAMS:
- -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
dcfd$(EXEEXT): $(dcfd_OBJECTS) $(dcfd_DEPENDENCIES)
@rm -f dcfd$(EXEEXT)
$(LINK) $(dcfd_LDFLAGS) $(dcfd_OBJECTS) $(dcfd_LDADD) $(LIBS)
@@ -211,12 +262,10 @@ testdcf$(EXEEXT): $(testdcf_OBJECTS) $(testdcf_DEPENDENCIES)
$(LINK) $(testdcf_LDFLAGS) $(testdcf_OBJECTS) $(testdcf_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-
-ANSI2KNR = ../util/ansi2knr
../util/ansi2knr:
cd ../util && $(MAKE) $(AM_MAKEFLAGS) ansi2knr
@@ -227,40 +276,40 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testdcf$U.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
dcfd_.c: dcfd.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/dcfd.c; then echo $(srcdir)/dcfd.c; else echo dcfd.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
testdcf_.c: testdcf.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/testdcf.c; then echo $(srcdir)/testdcf.c; else echo testdcf.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-dcfd_.$(OBJEXT) testdcf_.$(OBJEXT) : $(ANSI2KNR)
-uninstall-info-am:
+dcfd_.$(OBJEXT) dcfd_.lo testdcf_.$(OBJEXT) testdcf_.lo : $(ANSI2KNR)
-ETAGS = etags
-ETAGSFLAGS =
+mostlyclean-libtool:
+ -rm -f *.lo
-CTAGS = ctags
-CTAGSFLAGS =
+clean-libtool:
+ -rm -rf .libs _libs
-tags: TAGS
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -270,6 +319,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -281,10 +331,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -307,10 +358,6 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -324,7 +371,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -343,7 +390,6 @@ check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-local
check: check-am
all-am: Makefile $(PROGRAMS)
-
installdirs:
install: install-am
install-exec: install-exec-am
@@ -356,7 +402,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -364,7 +410,7 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@@ -372,19 +418,21 @@ maintainer-clean-generic:
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+ mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+ distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
@@ -402,12 +450,12 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool
pdf: pdf-am
@@ -420,15 +468,16 @@ ps-am:
uninstall-am: uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
- clean-generic clean-noinstPROGRAMS ctags distclean \
- distclean-compile distclean-generic distclean-tags distdir dvi \
- dvi-am info info-am install install-am install-data \
+ clean-generic clean-libtool clean-noinstPROGRAMS ctags \
+ distclean distclean-compile 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-compile \
- mostlyclean-generic mostlyclean-kr pdf pdf-am ps ps-am tags \
- uninstall uninstall-am uninstall-info-am
+ mostlyclean-generic mostlyclean-kr mostlyclean-libtool pdf \
+ pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am
#EXTRA_DIST= TAGS
diff --git a/contrib/ntp/parseutil/dcfd.c b/contrib/ntp/parseutil/dcfd.c
index 28fede7..c87ab35 100644
--- a/contrib/ntp/parseutil/dcfd.c
+++ b/contrib/ntp/parseutil/dcfd.c
@@ -1,7 +1,7 @@
/*
- * /src/NTP/ntp-4/parseutil/dcfd.c,v 4.9 1999/02/28 13:06:27 kardel RELEASE_19990228_A
+ * /src/NTP/REPOSITORY/ntp4-dev/parseutil/dcfd.c,v 4.18 2005/10/07 22:08:18 kardel RELEASE_20051008_A
*
- * dcfd.c,v 4.9 1999/02/28 13:06:27 kardel RELEASE_19990228_A
+ * dcfd.c,v 4.18 2005/10/07 22:08:18 kardel RELEASE_20051008_A
*
* DCF77 100/200ms pulse synchronisation daemon program (via 50Baud serial line)
*
@@ -13,22 +13,40 @@
* Lacks:
* Leap second handling (at that level you should switch to NTP Version 4 - really!)
*
- * Copyright (C) 1995-1999 by Frank Kardel <kardel@acm.org>
- * Copyright (C) 1993-1994 by Frank Kardel
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
- * This program may not be sold or used for profit without prior
- * written consent of the author.
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
+#include <sys/ioctl.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
@@ -112,6 +130,8 @@
extern int errno;
#endif
+static char *revision = "4.18";
+
/*
* display received data (avoids also detaching from tty)
*/
@@ -1549,14 +1569,17 @@ main(
memset(term.c_cc, 0, sizeof(term.c_cc));
term.c_cc[VMIN] = 1;
#ifdef NO_PARENB_IGNPAR
- term.c_cflag = B50|CS8|CREAD|CLOCAL;
+ term.c_cflag = CS8|CREAD|CLOCAL;
#else
- term.c_cflag = B50|CS8|CREAD|CLOCAL|PARENB;
+ term.c_cflag = CS8|CREAD|CLOCAL|PARENB;
#endif
term.c_iflag = IGNPAR;
term.c_oflag = 0;
term.c_lflag = 0;
+ cfsetispeed(&term, B50);
+ cfsetospeed(&term, B50);
+
if (TTY_SETATTR(fd, &term) == -1)
{
perror("tcsetattr");
@@ -1581,29 +1604,14 @@ main(
/*
* setup periodic operations (state control / frequency control)
*/
-#ifdef HAVE_SIGVEC
- {
- struct sigvec vec;
-
- vec.sv_handler = tick;
- vec.sv_mask = 0;
- vec.sv_flags = 0;
-
- if (sigvec(SIGALRM, &vec, (struct sigvec *)0) == -1)
- {
- syslog(LOG_ERR, "sigvec(SIGALRM): %m");
- exit(1);
- }
- }
-#else
#ifdef HAVE_SIGACTION
{
struct sigaction act;
- act.sa_handler = tick;
# ifdef HAVE_SA_SIGACTION_IN_STRUCT_SIGACTION
act.sa_sigaction = (void (*) P((int, siginfo_t *, void *)))0;
# endif /* HAVE_SA_SIGACTION_IN_STRUCT_SIGACTION */
+ act.sa_handler = tick;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;
@@ -1614,6 +1622,21 @@ main(
}
}
#else
+#ifdef HAVE_SIGVEC
+ {
+ struct sigvec vec;
+
+ vec.sv_handler = tick;
+ vec.sv_mask = 0;
+ vec.sv_flags = 0;
+
+ if (sigvec(SIGALRM, &vec, (struct sigvec *)0) == -1)
+ {
+ syslog(LOG_ERR, "sigvec(SIGALRM): %m");
+ exit(1);
+ }
+ }
+#else
(void) signal(SIGALRM, tick);
#endif
#endif
@@ -1637,7 +1660,7 @@ main(
(void) alarm(1<<ADJINTERVAL);
#endif
- PRINTF(" DCF77 monitor - Copyright (C) 1993-1998 by Frank Kardel\n\n");
+ PRINTF(" DCF77 monitor %s - Copyright (C) 1993-2005 by Frank Kardel\n\n", revision);
pbuf[60] = '\0';
for ( i = 0; i < 60; i++)
@@ -1850,3 +1873,31 @@ main(
return 0;
}
+
+/*
+ * History:
+ *
+ * dcfd.c,v
+ * Revision 4.18 2005/10/07 22:08:18 kardel
+ * make dcfd.c compile on NetBSD 3.99.9 again (configure/sigvec compatibility fix)
+ *
+ * Revision 4.17.2.1 2005/10/03 19:15:16 kardel
+ * work around configure not detecting a missing sigvec compatibility
+ * interface on NetBSD 3.99.9 and above
+ *
+ * Revision 4.17 2005/08/10 10:09:44 kardel
+ * output revision information
+ *
+ * Revision 4.16 2005/08/10 06:33:25 kardel
+ * cleanup warnings
+ *
+ * Revision 4.15 2005/08/10 06:28:45 kardel
+ * fix setting of baud rate
+ *
+ * Revision 4.14 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.13 2004/11/14 15:29:41 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
+ */
diff --git a/contrib/ntp/parseutil/testdcf.c b/contrib/ntp/parseutil/testdcf.c
index e3b71f3..223ab30 100644
--- a/contrib/ntp/parseutil/testdcf.c
+++ b/contrib/ntp/parseutil/testdcf.c
@@ -1,23 +1,42 @@
/*
- * /src/NTP/REPOSITORY/v4/parseutil/testdcf.c,v 3.18 1996/12/01 16:05:04 kardel Exp
- *
- * testdcf.c,v 3.18 1996/12/01 16:05:04 kardel Exp
+ * /src/NTP/ntp4-dev/parseutil/testdcf.c,v 4.10 2005/08/06 14:18:43 kardel RELEASE_20050806_A
*
+ * testdcf.c,v 4.10 2005/08/06 14:18:43 kardel RELEASE_20050806_A
+ *
* simple DCF77 100/200ms pulse test program (via 50Baud serial line)
*
- * Copyright (c) 1993,1994,1995,1996, 1998 by Frank Kardel
- * Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
- *
- * 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.
+ * Copyright (c) 1995-2005 by Frank Kardel <kardel <AT> ntp.org>
+ * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany
+ *
+ * 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.
+ * 3. Neither the name of the author nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR 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.
*
- * This program may not be sold or used for profit without prior
- * written consent of the author.
*/
#include "ntp_stdlib.h"
+#include <sys/ioctl.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
@@ -47,6 +66,8 @@ struct clocktime /* clock time broken up from time code */
typedef struct clocktime clocktime_t;
+static char type(unsigned int);
+
#define TIMES10(_X_) (((_X_) << 3) + ((_X_) << 1))
/*
@@ -106,6 +127,8 @@ typedef struct clocktime clocktime_t;
* 59 - usually missing (minute indication), except for leap insertion
*/
+static char revision[] = "4.10";
+
static struct rawdcfcode
{
char offset; /* start bit */
@@ -264,13 +287,13 @@ convert_rawdcf(
}
}
-char
+static char
type(
unsigned int c
)
{
c ^= 0xFF;
- return (c > 0xF);
+ return (c >= 0xF);
}
static const char *wday[8] =
@@ -359,14 +382,17 @@ main(
term.c_cc[VMIN] = 1;
#ifdef NO_PARENB_IGNPAR /* Was: defined(SYS_IRIX4) || defined (SYS_IRIX5) */
/* somehow doesn't grok PARENB & IGNPAR (mj) */
- term.c_cflag = B50|CS8|CREAD|CLOCAL;
+ term.c_cflag = CS8|CREAD|CLOCAL;
#else
- term.c_cflag = B50|CS8|CREAD|CLOCAL|PARENB;
+ term.c_cflag = CS8|CREAD|CLOCAL|PARENB;
#endif
term.c_iflag = IGNPAR;
term.c_oflag = 0;
term.c_lflag = 0;
+ cfsetispeed(&term, B50);
+ cfsetospeed(&term, B50);
+
if (tcsetattr(fd, TCSANOW, &term) == -1)
{
perror("tcsetattr");
@@ -384,7 +410,7 @@ main(
}
#endif
- printf(" DCF77 monitor - Copyright (C) 1993-1996, Frank Kardel\n\n");
+ printf(" DCF77 monitor %s - Copyright (C) 1993-2005, Frank Kardel\n\n", revision);
clock_time.hour = 0;
clock_time.minute = 0;
@@ -491,3 +517,24 @@ main(
}
return 0;
}
+
+/*
+ * History:
+ *
+ * testdcf.c,v
+ * Revision 4.10 2005/08/06 14:18:43 kardel
+ * cleanup warnings
+ *
+ * Revision 4.9 2005/08/06 14:14:38 kardel
+ * document revision on startup
+ *
+ * Revision 4.8 2005/08/06 14:10:08 kardel
+ * fix setting of baud rate
+ *
+ * Revision 4.7 2005/04/16 17:32:10 kardel
+ * update copyright
+ *
+ * Revision 4.6 2004/11/14 15:29:42 kardel
+ * support PPSAPI, upgrade Copyright to Berkeley style
+ *
+ */
diff --git a/contrib/ntp/scripts/Makefile.am b/contrib/ntp/scripts/Makefile.am
index dc41963..76d7655 100644
--- a/contrib/ntp/scripts/Makefile.am
+++ b/contrib/ntp/scripts/Makefile.am
@@ -1,4 +1,5 @@
-bin_SCRIPTS = ntp-wait ntptrace
-noinst_SCRIPTS = calc_tickadj checktime freq_adj mkver ntpsweep ntpver plot_summary summary
-EXTRA_DIST = fixautomakedepsmagic hpadjtime.sh monitoring ntp-close \
- ntp-groper ntp-restart ntp-status rc1 rc2 stats support
+bin_SCRIPTS= ntp-wait ntptrace
+noinst_SCRIPTS= calc_tickadj checktime freq_adj html2man mkver ntpsweep ntpver plot_summary summary
+EXTRA_DIST = VersionName fixautomakedepsmagic genCommitLog genver \
+ hpadjtime.sh monitoring ntp-close ntp-groper ntp-restart \
+ ntp-status rc1 rc2 stats
diff --git a/contrib/ntp/scripts/Makefile.in b/contrib/ntp/scripts/Makefile.in
index ff2c46b..7aee5f7 100644
--- a/contrib/ntp/scripts/Makefile.in
+++ b/contrib/ntp/scripts/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -21,7 +21,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +36,42 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+subdir = scripts
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/calc_tickadj.in $(srcdir)/checktime.in \
+ $(srcdir)/freq_adj.in $(srcdir)/html2man.in $(srcdir)/mkver.in \
+ $(srcdir)/ntp-wait.in $(srcdir)/ntpsweep.in \
+ $(srcdir)/ntptrace.in $(srcdir)/ntpver.in \
+ $(srcdir)/plot_summary.in $(srcdir)/summary.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/hs_ulong_const.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 = calc_tickadj checktime freq_adj html2man mkver \
+ ntp-wait ntpsweep ntptrace ntpver plot_summary summary
+am__installdirs = "$(DESTDIR)$(bindir)"
+binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(bin_SCRIPTS) $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +79,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +95,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +150,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +185,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,66 +193,76 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
bin_SCRIPTS = ntp-wait ntptrace
-noinst_SCRIPTS = calc_tickadj checktime freq_adj mkver ntpsweep ntpver plot_summary summary
-EXTRA_DIST = fixautomakedepsmagic hpadjtime.sh monitoring ntp-close \
- ntp-groper ntp-restart ntp-status rc1 rc2 stats support
+noinst_SCRIPTS = calc_tickadj checktime freq_adj html2man mkver ntpsweep ntpver plot_summary summary
+EXTRA_DIST = VersionName fixautomakedepsmagic genCommitLog genver \
+ hpadjtime.sh monitoring ntp-close ntp-groper ntp-restart \
+ ntp-status rc1 rc2 stats
-subdir = scripts
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = calc_tickadj checktime freq_adj mkver ntp-wait \
- ntpsweep ntptrace ntpver plot_summary summary
-SCRIPTS = $(bin_SCRIPTS) $(noinst_SCRIPTS)
-
-DIST_SOURCES =
-DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am calc_tickadj.in \
- checktime.in freq_adj.in mkver.in ntp-wait.in ntpsweep.in \
- ntptrace.in ntpver.in plot_summary.in summary.in
all: all-am
.SUFFIXES:
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+$(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 scripts/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu scripts/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-calc_tickadj: $(top_builddir)/config.status calc_tickadj.in
+ $(AUTOMAKE) --foreign scripts/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
+calc_tickadj: $(top_builddir)/config.status $(srcdir)/calc_tickadj.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-checktime: $(top_builddir)/config.status checktime.in
+checktime: $(top_builddir)/config.status $(srcdir)/checktime.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-freq_adj: $(top_builddir)/config.status freq_adj.in
+freq_adj: $(top_builddir)/config.status $(srcdir)/freq_adj.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-mkver: $(top_builddir)/config.status mkver.in
+html2man: $(top_builddir)/config.status $(srcdir)/html2man.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-ntp-wait: $(top_builddir)/config.status ntp-wait.in
+mkver: $(top_builddir)/config.status $(srcdir)/mkver.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-ntpsweep: $(top_builddir)/config.status ntpsweep.in
+ntp-wait: $(top_builddir)/config.status $(srcdir)/ntp-wait.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-ntptrace: $(top_builddir)/config.status ntptrace.in
+ntpsweep: $(top_builddir)/config.status $(srcdir)/ntpsweep.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-ntpver: $(top_builddir)/config.status ntpver.in
+ntptrace: $(top_builddir)/config.status $(srcdir)/ntptrace.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-plot_summary: $(top_builddir)/config.status plot_summary.in
+ntpver: $(top_builddir)/config.status $(srcdir)/ntpver.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-summary: $(top_builddir)/config.status summary.in
+plot_summary: $(top_builddir)/config.status $(srcdir)/plot_summary.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+summary: $(top_builddir)/config.status $(srcdir)/summary.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_SCRIPTS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f $$d$$p; then \
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
- echo " $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f"; \
- $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f; \
+ echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
else :; fi; \
done
@@ -213,9 +270,18 @@ uninstall-binSCRIPTS:
@$(NORMAL_UNINSTALL)
@list='$(bin_SCRIPTS)'; for p in $$list; do \
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
- echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
- rm -f $(DESTDIR)$(bindir)/$$f; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
uninstall-info-am:
tags: TAGS
TAGS:
@@ -223,10 +289,6 @@ TAGS:
ctags: CTAGS
CTAGS:
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -240,7 +302,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -258,9 +320,10 @@ distdir: $(DISTFILES)
check-am: all-am
check: check-am
all-am: Makefile $(SCRIPTS)
-
installdirs:
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@@ -272,7 +335,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -280,24 +343,25 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -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 mostlyclean-am
+clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
-
-distclean-am: clean-am distclean-generic
+distclean-am: clean-am distclean-generic distclean-libtool
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
@@ -314,12 +378,11 @@ 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-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
@@ -331,14 +394,15 @@ ps-am:
uninstall-am: uninstall-binSCRIPTS uninstall-info-am
-.PHONY: all all-am check check-am clean clean-generic distclean \
- distclean-generic distdir dvi dvi-am info info-am install \
- install-am install-binSCRIPTS 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 pdf pdf-am ps ps-am uninstall \
- uninstall-am uninstall-binSCRIPTS uninstall-info-am
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binSCRIPTS 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 \
+ uninstall uninstall-am uninstall-binSCRIPTS 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.
diff --git a/contrib/ntp/scripts/VersionName b/contrib/ntp/scripts/VersionName
new file mode 100755
index 0000000..f601cc3
--- /dev/null
+++ b/contrib/ntp/scripts/VersionName
@@ -0,0 +1,41 @@
+#! /bin/sh
+
+# This script must be executed from the TLD of the source tree...
+. ./packageinfo.sh
+
+NAME="$version"
+case $point in
+ [0-9]*)
+ NAME="${NAME}p$point"
+ ;;
+ NEW) ;;
+ '') ;;
+ *) echo "Unexpected value for 'point' <$point>!"
+ exit 1
+ ;;
+esac
+
+case $special in
+ '') ;;
+ *) NAME="${NAME}-$special" ;;
+esac
+
+case $releasecandidate in
+ [Nn][Oo]) ;;
+ [Yy][Ee][Ss]) NAME="${NAME}-RC" ;;
+ *) echo "Unexpected value for 'releasecandidate' <$releasecandidate>!"
+ exit 1
+ ;;
+esac
+
+case $repotype in
+ stable)
+ case $rcpoint in
+ [0-9]*)
+ NAME="${NAME}$rcpoint"
+ ;;
+ esac
+ ;;
+esac
+
+echo "$NAME"
diff --git a/contrib/ntp/scripts/genCommitLog b/contrib/ntp/scripts/genCommitLog
new file mode 100755
index 0000000..2a258ad
--- /dev/null
+++ b/contrib/ntp/scripts/genCommitLog
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+set -e
+
+. packageinfo.sh
+bk -R prs -hr${CLTAG}.. -nd':I:' | bk changes -m -v - > CommitLog.new
+mv CommitLog.new CommitLog
diff --git a/contrib/ntp/scripts/genver b/contrib/ntp/scripts/genver
new file mode 100755
index 0000000..0ce1922
--- /dev/null
+++ b/contrib/ntp/scripts/genver
@@ -0,0 +1,67 @@
+#! /bin/sh
+
+# possible usage: $0 [-f] [version.m4] [version.def]
+#
+# -f would be 'force the update'
+
+force=0
+outputs=
+for i in $*
+do
+ case "$i" in
+ -f) force=1 ;;
+ version.m4)
+ outputs="version.m4 $outputs"
+ ;;
+ *version.def)
+ outputs="include/version.def $outputs"
+ ;;
+ *) echo "Unrecognized option: $i"
+ exit 1
+ ;;
+ esac
+done
+
+case "$outputs" in
+ '') outputs="version.m4 include/version.def" ;;
+esac
+
+set -e
+
+. ./packageinfo.sh
+
+dversion=`scripts/VersionName`
+
+set +e
+
+case "$outputs" in
+ *version.m4*)
+ echo "m4_define([VERSION_NUMBER],[${dversion}])" > /tmp/version.m4+
+ cmp -s /tmp/version.m4+ version.m4
+ rc=$?
+ case "$force$rc" in
+ 00)
+ rm -f /tmp/version.m4+
+ ;;
+ *)
+ mv /tmp/version.m4+ version.m4
+ ;;
+ esac
+ ;;
+esac
+
+case "$outputs" in
+ *version.def*)
+ echo "version = '${dversion}';" > /tmp/version.def+
+ cmp -s /tmp/version.def+ include/version.def
+ rc=$?
+ case "$force$rc" in
+ 00)
+ rm -f /tmp/version.def+
+ ;;
+ *)
+ mv /tmp/version.def+ include/version.def
+ ;;
+ esac
+ ;;
+esac
diff --git a/contrib/ntp/scripts/html2man.in b/contrib/ntp/scripts/html2man.in
new file mode 100755
index 0000000..b7cebce
--- /dev/null
+++ b/contrib/ntp/scripts/html2man.in
@@ -0,0 +1,172 @@
+#! @PATH_PERL@ -w
+#
+# html2man: Converts the NTP HTML documentation to man page format
+#
+# This file require the Perl HTML::TokeParser module:
+# http://search.cpan.org/search?module=HTML::TokeParser
+#
+# Depending on where this is run from, you might need to modify $MANDIR below.
+#
+# Hacked together by Peter Boettcher <boettcher@ll.mit.edu>
+# Last modified: <Mon Jan 28 17:24:38 2002 by pwb>
+
+require HTML::TokeParser;
+
+# use strict; # I can dream...
+
+$MANDIR = "./man";
+
+# HTML files to convert. Also include per-file info here:
+# name of man page, man section, 'see also' section
+%manfiles = (
+ 'ntpd' => ['ntpd', 8, 'ntp.conf(5), ntpq(8), ntpdc(8)'],
+ 'ntpq' => ['ntpq', 8, 'ntpd(8), ntpdc(8)'],
+ 'ntpdate' => ['ntpdate', 8, 'ntpd(8)'],
+ 'ntpdc' => ['ntpdc', 8, 'ntpd(8)'],
+ 'ntptime' => ['ntpdtime', 8, 'ntpd(8), ntpdate(8)'],
+ 'ntptrace' => ['ntptrace', 8, 'ntpd(8)'],
+ 'keygen' => ['ntp-keygen', 8, 'ntpd(8), ntp_auth(5)'],
+ 'confopt' => ['ntp.conf', 5, 'ntpd(8)'],
+ 'authopt' => ['ntp_auth', 5, 'ntp.conf(5), ntpd(8)'],
+ 'monopt' => ['ntp_mon', 5, 'ntp.conf(5)'],
+ 'accopt' => ['ntp_acc', 5, 'ntp.conf(5)'],
+ 'clockopt' => ['ntp_clock', 5, 'ntp.conf(5)'],
+ 'miscopt' => ['ntp_misc', 5, 'ntp.conf(5)']);
+
+# Disclaimer to go in SEE ALSO section of the man page
+$seealso_disclaimer = 'These man pages are automatically hacked from the main NTP ' .
+ 'documentation pages, which are maintained in HTML format. These files are ' .
+ 'included in the NTP source distribution. If you installed NTP from a binary ' .
+ 'package, or it came pre-installed on your system, chances are the documentation ' .
+ 'was also included in the usual place for your system. The HTML files are more ' .
+ 'correct and complete than these man pages, which are provided for your reference ' .
+ 'only.';
+
+# Disclaimer to go right at the top
+$top_disclaimer = 'This file was automatically generated from HTML source, and may be ' .
+ 'incorrect. See the SEE ALSO section at the end of this file for more info';
+
+mkdir $MANDIR, 0777;
+mkdir "$MANDIR/man8", 0777;
+mkdir "$MANDIR/man5", 0777;
+
+# Do the actual processing
+foreach $file (keys %manfiles) {
+ process($file);
+}
+# End of main function
+
+
+
+# Do the real work
+sub process {
+ my($filename) = @_;
+ $fileinfo = $manfiles{$filename};
+
+ $p = HTML::TokeParser->new("$filename.html") || die "Can't open $filename.html: $!";
+ open(MANOUT, ">$MANDIR/man$fileinfo->[1]/$fileinfo->[0].$fileinfo->[1]")
+ || die "Can't open: $!";
+
+ $p->get_tag("title");
+ $name = $p->get_text("/title");
+ $p->get_tag("hr"); # Skip past image and quote, hopefully
+
+ # Setup man header
+ print MANOUT ".TH " . $fileinfo->[0] . " " . $fileinfo->[1] . "\n";
+ print MANOUT ".UC 4\n";
+ print MANOUT ".SH NAME\n";
+ $pat = $fileinfo->[0];
+ if ($name =~ /$pat/) {
+ } else {
+ # Add the manpage name, if not in the HTML title already
+ print MANOUT "$fileinfo->[0] - ";
+ }
+ print MANOUT "$name\n\n";
+
+ print MANOUT "$top_disclaimer\n";
+
+ # Now start scanning. We basically print everything after translating some tags.
+ # $token->[0] has "T", "S", "E" for Text, Start, End
+ # $token->[1] has the tag name, or text (for "T" case)
+ # Theres lots more in the world of tokens, but who cares?
+ while (my $token = $p->get_token) {
+ if($token->[0] eq "T") {
+ my $text = $token->[1];
+ if($tag) {
+ $text =~ s/^[\n ]*//;
+ $text =~ s/[\n ]*$/ /;
+ }
+ $text =~ s/&nbsp\;/ /g;
+ $text =~ s/^\./\\./;
+ print MANOUT "$text";
+ $tag = 0;
+ }
+ if($token->[0] eq "S") {
+ if($token->[1] eq "h4") {
+ my $text = uc($p->get_trimmed_text("/h4"));
+ print MANOUT ".SH $text\n";
+ }
+ if($token->[1] eq "tt") {
+ push @fontstack, "tt";
+ print MANOUT "\\fB";
+ }
+ if($token->[1] eq "i") {
+ push @fontstack, "i";
+ print MANOUT "\\fI";
+ }
+ if($token->[1] eq "address") {
+ my $text = $p->get_trimmed_text("/address");
+ print MANOUT "\n.SH AUTHOR\n$text\n";
+ }
+ if($token->[1] eq "dt") {
+ $tmp = $deflevel-4;
+ print MANOUT "\n.RS $tmp\n";
+ $tag = 1;
+ }
+ if($token->[1] eq "dd") {
+ print MANOUT "\n.RS $deflevel\n";
+ $tag = 1;
+ }
+ if($token->[1] eq "dl") {
+ $deflevel+=4;
+ }
+ }
+ elsif($token->[0] eq "E") {
+ if($token->[1] eq "dd") {
+ print MANOUT "\n.RE\n";
+ $tag = 1;
+ }
+ if($token->[1] eq "tt") {
+ $f = pop @fontstack;
+ if($f ne "tt") {
+ warn "Oops, mismatched font! Trying to continue\n";
+ }
+ if ($#fontstack < 0) { $fontswitch = "\\fR"; }
+ elsif ($fontstack[$#fontstack] eq "tt") { $fontswitch = "\\fB"; }
+ else { $fontswitch = "\\fI"; }
+ print MANOUT "$fontswitch";
+ }
+ if($token->[1] eq "i") {
+ $f = pop @fontstack;
+ if($f ne "i") {
+ warn "Oops, mismatched font! Trying to continue\n";
+ }
+ if ($#fontstack < 0) { $fontswitch = "\\fR"; }
+ elsif ($fontstack[$#fontstack] eq "tt") { $fontswitch = "\\fB"; }
+ else { $fontswitch = "\\fI"; }
+ print MANOUT "$fontswitch";
+ }
+ if($token->[1] eq "dl") {
+ $deflevel-=4;
+ }
+ if($token->[1] eq "dt") {
+ print MANOUT "\n.RE";
+ $tag = 1;
+ }
+ }
+ }
+ print MANOUT ".SH SEE ALSO\n\n";
+ print MANOUT "$fileinfo->[2]\n\n";
+ print MANOUT "$seealso_disclaimer\n";
+ close(MANOUT);
+}
diff --git a/contrib/ntp/scripts/mkver.in b/contrib/ntp/scripts/mkver.in
index dbe9c2a..11aa613 100644
--- a/contrib/ntp/scripts/mkver.in
+++ b/contrib/ntp/scripts/mkver.in
@@ -10,17 +10,14 @@ case "$CSET" in
*) ConfStr="$ConfStr@$CSET" ;;
esac
-case "@LIBRSAREF@" in
- '')
- case "@AUTOKEY@" in
- '') ;;
- *) ConfStr="${ConfStr}-a" ;;
- esac
- ;;
- *) ConfStr="${ConfStr}-r" ;;
+case "@LCRYPTO@" in
+ '') ;;
+ -lcrypto)
+ ConfStr="${ConfStr}-o" ;;
+ *) ConfStr="${ConfStr}-?" ;;
esac
-ConfStr="$ConfStr `LC_TIME=C date`"
+ConfStr="$ConfStr `LC_TIME=C TZ= date`"
if [ ! -f .version ]; then
echo 0 > .version
diff --git a/contrib/ntp/scripts/monitoring/lr.pl b/contrib/ntp/scripts/monitoring/lr.pl
index 7980d22..1ab3e3f 100644
--- a/contrib/ntp/scripts/monitoring/lr.pl
+++ b/contrib/ntp/scripts/monitoring/lr.pl
@@ -52,7 +52,7 @@ sub init
$self->{sy2} = 0.0;
}
-sub sample($$$)
+sub sample($$)
{
my $self = shift;
my($_x, $_y) = @_;
@@ -65,7 +65,7 @@ sub sample($$$)
$self->{sy2} += $_y**2;
}
-sub B($)
+sub B()
{
my $self = shift;
@@ -74,28 +74,28 @@ sub B($)
/ ($self->{n} * $self->{sx2} - $self->{sx}**2);
}
-sub A($)
+sub A()
{
my $self = shift;
- return ($self->{sy} - B($self) * $self->{sx}) / $self->{n};
+ return ($self->{sy} - B() * $self->{sx}) / $self->{n};
}
-sub Y($$)
+sub Y()
{
my $self = shift;
- return A($self) + B($self) * $_[$[];
+ return A() + B() * $_[$[];
}
-sub X($$)
+sub X()
{
my $self = shift;
- return ($_[$[] - A($self)) / B($self);
+ return ($_[$[] - A()) / B();
}
-sub r($)
+sub r()
{
my $self = shift;
@@ -107,7 +107,7 @@ sub r($)
return ($self->{n} * $self->{sxy} - $self->{sx} * $self->{sy}) / sqrt($s);
}
-sub cov($)
+sub cov()
{
my $self = shift;
@@ -115,7 +115,7 @@ sub cov($)
/ ($self->{n} - 1);
}
-sub sigma($)
+sub sigma()
{
my $self = shift;
@@ -124,7 +124,7 @@ sub sigma($)
/ ($self->{n}));
}
-sub mean($)
+sub mean()
{
my $self = shift;
diff --git a/contrib/ntp/scripts/monitoring/ntploopwatch b/contrib/ntp/scripts/monitoring/ntploopwatch
index db661d3..a94695c 100644
--- a/contrib/ntp/scripts/monitoring/ntploopwatch
+++ b/contrib/ntp/scripts/monitoring/ntploopwatch
@@ -1,8 +1,7 @@
#!/usr/bin/perl -w
;# --*-perl-*--
;#
-;# /src/NTP/ntp-4/scripts/monitoring/ntploopwatch,v 4.3 1999/02/21 12:18:38 kardel RELEASE_19990228_A
-;# RELEASE_19990228_A
+;# /src/NTP/ntp4-dev/scripts/monitoring/ntploopwatch,v 4.7 2004/11/14 16:11:05 kardel RELEASE_20050508_A
;#
;# process loop filter statistics file and either
;# - show statistics periodically using gnuplot
@@ -55,7 +54,7 @@ a file of this name instead of delivered to a printer.
E-O-P
;# add directory to look for lr.pl and timelocal.pl (in front of current list)
-unshift(@INC,"/usr/local/xntp/monitoring");
+unshift(@INC,".");
require "lr.pl"; # linear regresion routines
@@ -438,8 +437,9 @@ sub read_config
print "configuration file read\n" if $verbose > 2;
}
-sub make_doplot
+sub make_doplot($$)
{
+ my($lo, $lf) = @_;
local($c) = ("");
local($fmt)
= ("%s \"%s\" using 1:%d title '%s <%lf %lf> %6s' with lines");
@@ -536,22 +536,22 @@ sub make_doplot
$c = ",");
$showoreg && $showoffs &&
($doplot .= sprintf($regfmt, $c,
- &lr_B('offs'),&lr_A('offs'),
+ $lo->B(),$lo->A(),
"offset ",
- &lr_B('offs'),
- ((&lr_A('offs')) < 0 ? '-' : '+'),
- &abs(&lr_A('offs')), &lr_r('offs'),
+ $lo->B(),
+ (($lo->A()) < 0 ? '-' : '+'),
+ &abs($lo->A()), $lo->r(),
"[ms]"),
$c = ",");
$showfreg && $showfreq &&
($doplot .= sprintf($regfmt, $c,
- &lr_B('freq') * $FreqScale,
- (&lr_A('freq') + $minfreq) * $FreqScale - $LastFreqBase,
+ $lf->B() * $FreqScale,
+ ($lf->A() + $minfreq) * $FreqScale - $LastFreqBase,
"frequency",
- &lr_B('freq') * $FreqScale,
- ((&lr_A('freq') + $minfreq) * $FreqScale - $LastFreqBase) < 0 ? '-' : '+',
- &abs((&lr_A('freq') + $minfreq) * $FreqScale - $LastFreqBase),
- &lr_r('freq'),
+ $lf->B() * $FreqScale,
+ (($lf->A() + $minfreq) * $FreqScale - $LastFreqBase) < 0 ? '-' : '+',
+ &abs(($lf->A() + $minfreq) * $FreqScale - $LastFreqBase),
+ $lf->r(),
"[${FreqScaleInv}ppm]"),
$c = ",");
$doplot .= "\n";
@@ -566,7 +566,7 @@ sub make_doplot
sub genfile
{
- local($cnt,$in,$out,@fpos) = @_;
+ local($cnt,$in,$out,$lo,$lf,@fpos) = @_;
local(@F,@t,$t,$lastT) = ();
local(@break,@time,@offs,@freq,@cmpl,@loffset,@filekey) = ();
@@ -1058,9 +1058,6 @@ sub genfile
print "input scanned ($l lines/",scalar(@time)," samples)\n"
if $verbose > 1;
- &lr_init('offs');
- &lr_init('freq');
-
if (@time)
{
local($_,@F);
@@ -1110,13 +1107,13 @@ sub genfile
;# (otherwise a (shift(@a1),shift(a2)) would do),
;# I dont like to make copies of these arrays as they may be huge
$i = $[;
- &lr_sample(($time[$i]-$timebase)/3600,$offs[$i],'offs'),$i++
+ $lo->sample(($time[$i]-$timebase)/3600,$offs[$i]),$i++
while $i <= $#time;
($minoffs == $maxoffs) && ($minoffs -= 0.1,$maxoffs += 0.1);
- $i = &lr_sigma('offs');
- $m = &lr_mean('offs');
+ $i = $lo->sigma();
+ $m = $lo->mean();
print "mean offset: $m sigma: $i\n" if $verbose > 2;
@@ -1156,12 +1153,12 @@ sub genfile
$maxfreq = &max(@freq);
$i = $[;
- &lr_sample(($time[$i]-$timebase)/3600,$freq[$i]-$minfreq,'freq'),
+ $lf->sample(($time[$i]-$timebase)/3600,$freq[$i]-$minfreq),
$i++
while $i <= $#time;
- $i = &lr_sigma('freq');
- $m = &lr_mean('freq') + $minfreq;
+ $i = $lf->sigma();
+ $m = $lf->mean() + $minfreq;
print "mean frequency: $m sigma: $i\n" if $verbose > 2;
@@ -1185,7 +1182,7 @@ sub genfile
($FreqScale == 1 ? "" : (1/$FreqScale));
$freqbase = ($maxfreq + $minfreq)/ 2 * $FreqScale; #$m * $FreqScale;
- $freqbase -= ($maxy + $miny) / 2; #&lr_mean('offs');
+ $freqbase -= ($maxy + $miny) / 2; #$lf->mean();
;# round resulting freqbase
;# to precision of min max difference
@@ -1306,10 +1303,10 @@ sub genfile
;# prevent plotcmd from processing empty file
print "Creating plot command dummy...\n" if $verbose > 2;
print OUT "# dummy samples\n0 1 2 3\n1 1 2 3\n";
- &lr_sample(0,1,'offs');
- &lr_sample(1,1,'offs');
- &lr_sample(0,2,'freq');
- &lr_sample(1,2,'freq');
+ $lo->sample(0,1);
+ $lo->sample(1,1);
+ $lf->sample(0,2);
+ $lf->sample(1,2);
@time = (0, 1); $maxtime = 1; $mintime = 0;
@offs = (1, 1); $maxoffs = 1; $minoffs = 1;
@freq = (2, 2); $maxfreq = 2; $minfreq = 2;
@@ -1453,10 +1450,13 @@ while(1)
&read_config;# unless defined($PrintIt);
unlink($tmpfile);
- @filepos = &genfile($samples,$srcprefix,$tmpfile,@filepos);
+ my $lo = lr->new();
+ my $lf = lr->new();
+
+ @filepos = &genfile($samples,$srcprefix,$tmpfile,$lo,$lf,@filepos);
;# make plotcmd display samples
- &make_doplot;
+ make_doplot($lo, $lf);
print "Displaying plot...\n" if $verbose > 1;
print "command for plot sub process:\n$doplot----\n" if $verbose > 3;
print PLOT $doplot;
diff --git a/contrib/ntp/scripts/ntpsweep.in b/contrib/ntp/scripts/ntpsweep.in
index 156fb45..e503a06 100644
--- a/contrib/ntp/scripts/ntpsweep.in
+++ b/contrib/ntp/scripts/ntpsweep.in
@@ -16,8 +16,7 @@
# purpose. The name Origin B.V. must not be used to endorse or promote
# products derived from this software without prior written permission.
#
-# Hans Lambermont <Hans.Lambermont@nl.origin-it.com>/<H.Lambermont@chello.nl>
-# 14 Jan 2000
+# Hans Lambermont <ntpsweep@lambermont.dyndns.org>
require 5.0; # But actually tested on 5.004 ;)
use Getopt::Long; # GetOptions()
diff --git a/contrib/ntp/scripts/ntptrace.in b/contrib/ntp/scripts/ntptrace.in
index 8545b2c..c3c2a20 100755
--- a/contrib/ntp/scripts/ntptrace.in
+++ b/contrib/ntp/scripts/ntptrace.in
@@ -4,19 +4,26 @@
use Socket;
use Getopt::Std;
-use vars qw($opt_n);
+use vars qw($opt_n $opt_m);
$ntpq = "ntpq";
-getopts('n');
+getopts('nm:');
$dodns = 1;
$dodns = 0 if (defined($opt_n));
+$max_hosts = (defined($opt_m) ? $opt_m : 99);
+$max_hosts = 0 if ( $max_hosts !~ /^\d+$/ );
+$nb_host = 1;
+
$host = shift;
$host ||= "127.0.0.1";
for (;;) {
+ $nb_host++;
+ $rootdelay = 0;
+ $rootdispersion = 0;
$stratum = 255;
$cmd = "$ntpq -n -c rv $host";
open(PH, $cmd . "|") || die "failed to start command $cmd: $!";
@@ -26,12 +33,13 @@ for (;;) {
# Very old servers report phase and not offset.
$offset = $1 if (/(?:offset|phase)=([^\s,]+)/);
$rootdelay = $1 if (/rootdelay=([^\s,]+)/);
+ $rootdispersion = $1 if (/rootdispersion=([^\s,]+)/);
$refid = $1 if (/refid=([^\s,]+)/);
}
close(PH) || die "$cmd failed";
last if ($stratum == 255);
$offset /= 1000;
- $rootdelay /= 1000;
+ $syncdistance = ($rootdispersion + ($rootdelay / 2)) / 1000;
$dhost = $host;
# Only do lookups of IPv4 addresses. The standard lookup functions
# of perl only do IPv4 and I don't know if we should require extras.
@@ -40,12 +48,13 @@ for (;;) {
$name = (gethostbyaddr($iaddr, AF_INET))[0];
$dhost = $name if (defined($name));
}
- printf("%s: stratum %d, offset %f, root distance %f",
- $dhost, $stratum, $offset, $rootdelay);
+ printf("%s: stratum %d, offset %f, synch distance %f",
+ $dhost, $stratum, $offset, $syncdistance);
printf(", refid '%s'", $refid) if ($stratum == 1);
printf("\n");
last if ($stratum == 0 || $stratum == 1 || $stratum == 16);
last if ($refid =~ /^127\.127\.\d{1,3}\.\d{1,3}$/);
+ last if ($nb_host > $max_hosts);
$cmd = "$ntpq -n -c \"pstat $peer\" $host";
open(PH, $cmd . "|") || die "failed to start command $cmd: $!";
@@ -55,6 +64,7 @@ for (;;) {
}
close(PH) || die "$cmd failed";
last if ($thost eq "");
+ last if ($thost =~ /^127\.127\.\d{1,3}\.\d{1,3}$/);
$host = $thost;
}
diff --git a/contrib/ntp/scripts/support/README b/contrib/ntp/scripts/support/README
deleted file mode 100644
index 812965b..0000000
--- a/contrib/ntp/scripts/support/README
+++ /dev/null
@@ -1,73 +0,0 @@
-The bin and etc directories contain several scripts (sh and perl) that
-should ease startup and configuration of NTP sites.
-
- bin/monl is a monitoring script that prints out new, current and
- old customers of an NTP timeserver when monitoring is
- in effect.
- monl has following options:
- -i <regexp> (regular expression matchin IP addres to be ignored
- -d <directory> where the current state is kept (default /tmp)
- -v debug output
- -n do not translate IP addresses into hostnames
- <host> host to be analyzed
-
- monl uses xntpdc for information gathering and is thus
- limited to the NTP version xntpdc is compiled for.
-
- bin/mvstats moves compresses and removes statistics files (useful mainly
- for reference servers
-
- etc/install creates the locally needed directories for NTP (if not residung in /etc)
-
- etc/rc starts up daemon with configuration file and key file
- etc/cron cron called monitor statistic (uses bin/monl)
- etc/crontab crontab prototype for reference time servers
- etc/setup sh script sourced by the other scripts for variable setup
-
-YOU MUST EDIT THESE FILES TO REFLECT YOUR LOCAL SETUP !
-
-READ THIS BEFORE USING THE STARTUP SCRIPTS
-
-The startupscript etc/rc has been written for Suns and HPs. They are not
-guaranteed to work elsewhere. Following assumptions have been made:
-
- All NTP related files reside in ONE directory having following structure:
-
- bin/* - all executables (daemon, control, date, scripts)
- etc/* - startup scripts and cron scripts
- conf/* - NTP configuration files
-
-The variable NTPROOT (etc/rc, etc/install) must be edited to reflect
-the NTP directory (e.g. /usr/local/NTP)
-
-NTP config files are located via Suns arch command and have the name
-conf/`arch`.`arch -k`.
-These are the default configurations (usually clients). If a file with the name
-conf/`arch`.`arch -k`.`hostname` is present this file will be preferred (Reference host,
-gateway). If the arch command is not available no-arch is used. The arch command
-is usually a shell script which echoes a string unique the the current machine
-architecture.
-
-The tickadj command has its own conf/tickconf file which is used to set host
-specific tickadj values. The line with DEFAULT specifies the default tickadj
-parameters, all other lines consists of <hostname> <hostid>
-<tickadj parameters>. These lines need only be entered if the specified host
-needs parameters different from the default parameters.
-
-Reference clock support is provided for DCF77. If you need to initialize
-certain things for reference clock support (e.g. loading STREAMS modules),
-you need to edit etc/rc.
-
-The current config files of Erlangen are included in the conf directory.
-They are just for reference, but might help you a bit in setting up a
-synchronisation network.
-
-The advantage of keeping all config files centralized is the easier
-administration.
-
-We replicate the NTP directory via NFS and rdist.
-
-When you have set up the local config files (YOUR OWN!) you can call
-<NTPROOT>/etc/rc for daemon startup.
-
-For more information: time@informatik.uni-erlangen.de
diff --git a/contrib/ntp/scripts/support/bin/monl b/contrib/ntp/scripts/support/bin/monl
deleted file mode 100644
index f0c48db..0000000
--- a/contrib/ntp/scripts/support/bin/monl
+++ /dev/null
@@ -1,213 +0,0 @@
-#!/local/bin/perl
-
-%service = ( 0, "unspec",
- 1, "Active",
- 2, "Passive",
- 3, "Client",
- 4, "Server",
- 5, "Broadcast",
- 6, "Control",
- 7, "Private" );
-%nc = ();
-@ignpat = ();
-$noname = 0;
-$verbose = 0;
-$retries = 5;
-$lastkey = 0;
-
-sub timedelta {
- local($tm, $days, $h, $m, $s);
-
- $tm = @_[$[];
- $days = 0;
- $days = sprintf("%dd+", $days) if $days = int($tm / (60*60*24));
- $days = "" unless $days;
- $tm = $tm % (60*60*24);
- $h = int($tm / (60*60));
- $tm = $tm % (60*60);
- $m = int($tm / 60);
- $s = $tm % 60;
-
- return sprintf("%s%02d:%02d:%02d", $days, $h, $m, $s);
-}
-
-sub listentry {
- local($host, $mode) = split("$;" , @_[$[]);
- local($count, $version, $firsttime) = split("$;" , $_[$[+1]);
- local($name);
-
- if (grep($host =~ m/$_/, @ignpat))
- {
- print "ignored $host ...\n" if $verbose;
- return;
- }
-
- return if ! $count;
-
- if (defined($nc{$host}))
- {
- $name = $nc{$host};
- }
- else
- {
- if ($noname)
- {
- $nc{$host} = $name = $host;
- }
- else
- {
- $name = (gethostbyaddr(pack("C4", split(/\./, $host)), 2))[$[];
- $nc{$host} = $name = $host if ! defined($name);
- }
- }
-
- printf ($fmt, ($lastkey eq $host) ? "" : $name, $service{$mode}, $count, $version, &timedelta($firsttime), $firsttime / $count);
-
- if (@_[$[+2])
- {
- $hostcnt++ if $lastkey ne $host;
- $packcnt += $count;
- $maxtime = $firsttime if $firsttime > $maxtime;
- }
-
- $lastkey = $host;
-}
-
-while ($ARGV[$[] =~ /^-[nvid]$/)
- {
- if ($ARGV[$[] eq "-i")
- {
- shift;
- push(@ignpat, shift) unless ! defined($ARGV[$[]);
- }
- elsif ($ARGV[$[] eq "-d")
- {
- shift;
- $dir = shift unless ! defined($ARGV[$[]);
- }
- elsif ($ARGV[$[] eq "-n")
- {
- shift;
- $noname = 1;
- }
- elsif ($ARGV[$[] eq "-v")
- {
- shift;
- $verbose = 1;
- }
- }
-
-$dir = "/tmp" unless defined($dir);
-$gone = 60*60*48;
-$fmt = "%48s %10s %7d %7d %13s %14.3f\n";
-$sfmt = "%48s %10s %7s %7s %13s %14s\n";
-@lbl = ("Host", "Mode", "Count", "Version", "Time active", "Packetinterval");
-
-if (!defined($ARGV[$[]))
- {
- $hostname = `hostname`;
- chop($hostname);
- unshift(@ARGV, $hostname);
- }
-
-foreach $hostname (@ARGV)
- {
- $dbmfile = $dir . "/monlstats-" . $hostname;
- $monl = "xntpdc -c 'hostnames no' -c monl $hostname | tail +3 |";
- $hostcnt = 0;
- $packcnt = 0;
- $maxtime = 0;
- %Seen = ();
- %New = ();
- %Old = ();
-
- print "Monitor Status of $hostname\n\n";
-
- $cnt = $retries;
- do
- {
- open(MONL, $monl) || die("$monl failed $!");
- @monlout = <MONL>;
- close(MONL);
- } while (! @monlout && $cnt--);
-
- if (! @monlout)
- {
- print "not available.\n";
- next;
- }
-
- dbmopen(Clients, $dbmfile, 0644) || die("dbmopen(.., $dbmfile, ...): $!");
-
- foreach (@monlout)
- {
- chop;
- split;
- ($host, $count, $mode, $version, $lasttime, $firsttime) =
- (@_[$[, $[+2 .. $[+4, $#_-1,$#_]);
-
- $Seen{$host, $mode} = 1;
-
- if (!defined($Clients{$host, $mode}))
- {
- if ($lasttime <= $gone)
- {
- ## got a new one
- $Clients{$host, $mode} = $New{$host, $mode} = join("$;", $count, $version, $firsttime, $lasttime);
- }
- }
- else
- {
- ## throw out the old ones
- if ($lasttime > $gone)
- {
- $Old{$host, $mode} = $Clients{$host, $mode};
- delete $Clients{$host, $mode};
- }
- else
- {
- $Clients{$host, $mode} = join("$;", $count, $version, $firsttime, $lasttime);
- }
- }
- }
-
- grep(($Seen{$_} || ($Old{$_} = delete $Clients{$_})), keys(%Clients));
-
- if (grep(($tmp = $_ , !grep($tmp =~ m/$_/, @ignpat)), keys(%New)))
- {
- print "New customers\n";
- print "-------------\n";
- printf $sfmt, @lbl;
- grep( &listentry($_, $New{$_}, 1), sort(keys(%New)) );
- print "\n";
- }
-
-
- if (grep((!defined($New{$_}) && ($tmp = $_, !grep($tmp =~ m/$_/, @ignpat))), keys(%Clients)))
- {
- print "Current customers\n";
- print "-----------------\n";
- printf $sfmt, @lbl;
- grep( defined($New{$_}) || &listentry($_, $Clients{$_}, 1) , sort(keys(%Clients)) );
- print "\n";
- }
-
- if (grep(($tmp = $_, !grep($tmp =~ m/$_/, @ignpat)), keys(%Old)))
- {
- print "Discarded customers\n";
- print "-------------------\n";
- printf $sfmt, @lbl;
- grep( &listentry($_, $Old{$_}, 0) , sort(keys(%Old)) );
- print "\n";
- }
-
- dbmclose(Clients);
-
- print "\nSummary:\n";
- print "--------\n";
- printf("Elapsed time: %13s\n", &timedelta($maxtime));
- printf(" Hosts: %13d\n", $hostcnt);
- printf(" Packets: %13d\n", $packcnt);
- printf(" Rate: %13.2f\n", $packcnt / $maxtime) if $maxtime;
- print "\n";
- }
diff --git a/contrib/ntp/scripts/support/bin/mvstats b/contrib/ntp/scripts/support/bin/mvstats
deleted file mode 100644
index e33dc792..0000000
--- a/contrib/ntp/scripts/support/bin/mvstats
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-#
-# mvstats,v 3.1 1993/07/06 01:10:24 jbj Exp
-#
-# mvstats is called by cron for keeping the log files together
-# usually only used on reference hosts
-#
-# Files reside in /var/NTP
-# Files older than 2 days will be compressed,
-# Files older than 64 days will be removed.
-#
-# mvstats,v
-# Revision 3.1 1993/07/06 01:10:24 jbj
-# XNTP release 3.1
-#
-#
-# Revision 1.1 1992/12/10 12:58:24 kardel
-# Prerelease NTP V3 / DCF
-#
-#
-cd /var/NTP
-find . ! -name '*.Z' -mtime +2 -exec compress -f {} \;
-find . -mtime +64 -exec rm -f {} \;
diff --git a/contrib/ntp/scripts/support/conf/hp700.hp700.faui47 b/contrib/ntp/scripts/support/conf/hp700.hp700.faui47
deleted file mode 100644
index e69de29..0000000
--- a/contrib/ntp/scripts/support/conf/hp700.hp700.faui47
+++ /dev/null
diff --git a/contrib/ntp/scripts/support/conf/hp800.hp800 b/contrib/ntp/scripts/support/conf/hp800.hp800
deleted file mode 100644
index e69de29..0000000
--- a/contrib/ntp/scripts/support/conf/hp800.hp800
+++ /dev/null
diff --git a/contrib/ntp/scripts/support/conf/ntp.conf b/contrib/ntp/scripts/support/conf/ntp.conf
deleted file mode 100644
index 2d6bb85..0000000
--- a/contrib/ntp/scripts/support/conf/ntp.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-#
-# put your default configuration (e.g. broadcastclient) in here
-#
diff --git a/contrib/ntp/scripts/support/conf/sun3.sun3 b/contrib/ntp/scripts/support/conf/sun3.sun3
deleted file mode 100644
index e69de29..0000000
--- a/contrib/ntp/scripts/support/conf/sun3.sun3
+++ /dev/null
diff --git a/contrib/ntp/scripts/support/conf/sun4.sun4.faui01 b/contrib/ntp/scripts/support/conf/sun4.sun4.faui01
deleted file mode 100644
index e69de29..0000000
--- a/contrib/ntp/scripts/support/conf/sun4.sun4.faui01
+++ /dev/null
diff --git a/contrib/ntp/scripts/support/conf/sun4.sun4.faui10 b/contrib/ntp/scripts/support/conf/sun4.sun4.faui10
deleted file mode 100644
index e69de29..0000000
--- a/contrib/ntp/scripts/support/conf/sun4.sun4.faui10
+++ /dev/null
diff --git a/contrib/ntp/scripts/support/conf/sun4.sun4.faui45 b/contrib/ntp/scripts/support/conf/sun4.sun4.faui45
deleted file mode 100644
index e69de29..0000000
--- a/contrib/ntp/scripts/support/conf/sun4.sun4.faui45
+++ /dev/null
diff --git a/contrib/ntp/scripts/support/conf/sun4.sun4c b/contrib/ntp/scripts/support/conf/sun4.sun4c
deleted file mode 100644
index e69de29..0000000
--- a/contrib/ntp/scripts/support/conf/sun4.sun4c
+++ /dev/null
diff --git a/contrib/ntp/scripts/support/conf/sun4.sun4c.Lucifer b/contrib/ntp/scripts/support/conf/sun4.sun4c.Lucifer
deleted file mode 100644
index e69de29..0000000
--- a/contrib/ntp/scripts/support/conf/sun4.sun4c.Lucifer
+++ /dev/null
diff --git a/contrib/ntp/scripts/support/conf/sun4.sun4m b/contrib/ntp/scripts/support/conf/sun4.sun4m
deleted file mode 100644
index e69de29..0000000
--- a/contrib/ntp/scripts/support/conf/sun4.sun4m
+++ /dev/null
diff --git a/contrib/ntp/scripts/support/conf/sun4.sun4m.faui42 b/contrib/ntp/scripts/support/conf/sun4.sun4m.faui42
deleted file mode 100644
index e69de29..0000000
--- a/contrib/ntp/scripts/support/conf/sun4.sun4m.faui42
+++ /dev/null
diff --git a/contrib/ntp/scripts/support/conf/sun4.sun4m.faui45m b/contrib/ntp/scripts/support/conf/sun4.sun4m.faui45m
deleted file mode 100644
index e69de29..0000000
--- a/contrib/ntp/scripts/support/conf/sun4.sun4m.faui45m
+++ /dev/null
diff --git a/contrib/ntp/scripts/support/conf/tickconf b/contrib/ntp/scripts/support/conf/tickconf
deleted file mode 100644
index b17dbe8..0000000
--- a/contrib/ntp/scripts/support/conf/tickconf
+++ /dev/null
@@ -1,19 +0,0 @@
-DEFAULT -A -p -s -q
-Lucifer 55406cfa -a 1 -p -s -q -t 10001
-faui45 24000f9b -a 1 -p -s -q
-faui10 2440213c -a 1 -p -s -q
-faui1b 54001418 -A -p -s -q -t 10001
-faui4p 5100344d -A -p -s -q -t 9999
-faui02g 1200be20 -A -p -s -q -t 9999
-faui02e 1200bbab -A -p -s -q -t 9999
-faui02f 1200bedb -A -p -s -q -t 9999
-faui03b 1200b92b -A -p -s -q -t 9999
-faui45m 726001ac -A -p -s -q -t 10001
-faui45o 72600272 -A -p -s -q -t 10001
-faui45p 7260028f -A -p -s -q -t 10001
-faui45r 72400cc7 -A -p -s -q -t 10001
-faui45s 726045be -A -p -s -q -t 10001
-faui45v 72604487 -A -p -s -q -t 10001
-faui45x 726044eb -A -p -s -q -t 10001
-faui45y 7260476d -A -p -s -q -t 10001
-faui45z 726045a1 -A -p -s -q -t 10001
diff --git a/contrib/ntp/scripts/support/etc/cron b/contrib/ntp/scripts/support/etc/cron
deleted file mode 100644
index 07ed189..0000000
--- a/contrib/ntp/scripts/support/etc/cron
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-#
-# cron,v 3.1 1993/07/06 01:10:50 jbj Exp
-#
-# called by cron for statistics gathering
-#
-# cron,v
-# Revision 3.1 1993/07/06 01:10:50 jbj
-# XNTP release 3.1
-#
-#
-# Revision 1.1 1992/12/10 12:59:18 kardel
-# Prerelease NTP V3 / DCF
-#
-#
-PATH="${PATH}:/local/NTP/bin"
-export PATH
-monl -d /local/NTP/monitor -i '127\.0\.0\.1' faui10 faui45 lucifer rackety.udel.edu
diff --git a/contrib/ntp/scripts/support/etc/crontab b/contrib/ntp/scripts/support/etc/crontab
deleted file mode 100644
index 2b2d19c..0000000
--- a/contrib/ntp/scripts/support/etc/crontab
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# NTP statistics periodic cleanup - REFERENCE SERVER ONLY
-#
-#55 23 * * * sh /local/NTP/etc/mvstats
-#
-# gather NTP client statistics - REFERENCE SERVER ONLY
-#
-0 8,18 * * * /local/NTP/etc/cron 2>/dev/null | /usr/ucb/mail -s "NTP statistics" time@informatik.uni-erlangen.de
diff --git a/contrib/ntp/scripts/support/etc/install b/contrib/ntp/scripts/support/etc/install
deleted file mode 100644
index 169a7e5..0000000
--- a/contrib/ntp/scripts/support/etc/install
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/sh
-#
-# install,v 3.1 1993/07/06 01:10:53 jbj Exp
-#
-# install,v
-# Revision 3.1 1993/07/06 01:10:53 jbj
-# XNTP release 3.1
-#
-#
-# Revision 1.1 1992/12/10 12:59:21 kardel
-# Prerelease NTP V3 / DCF
-#
-# Revision 1.1 1992/06/18 14:50:08 kardel
-# Initial revision
-#
-#
-NTPROOT=/local/NTP # SITE SPECIFIC: where NTP resides
-#
-# where the local NTP state files reside (xntp.drift) ussualle /etc
-# this directory must not be shared as machine dependent data ist stored there
-#
-NTPDIR="/+private/local/NTP"
-#
-# get the initial setup
-#
-if [ ! -r $NTPROOT/etc/setup ]; then
- echo "ERROR: $NTPROOT/etc/setup missing - incorrect installation."
- exit 1
-else
- . $NTPROOT/etc/setup
-fi
-
-umask 022 # SITE SPECIFIC: local policy - watch out for NFS and "root" rights
-
-Mkdir() {
- p=""
- IFS="/"
- set -- $@
- IFS='
-'
- for pnc do
- if [ ! -d "$p/$pnc" ]; then
- ECHO -n "creating directory $p/$pnc"
- if mkdir "$p/$pnc"; then
- ECHO ""
- else
- ECHO " - FAILED"
- break;
- fi
- fi
- p="$p/$pnc"
- done
-}
-
-if [ ! -d "$NTPDIR" ]; then
- ECHO "installing NTP private data area ($NTPDIR)"
- if Mkdir "$NTPDIR"; then
- chmod 755 "$NTPDIR"
- ECHO "$NTPDIR created."
- fi
-else
- ECHO "NTP already installed."
- if [ -f "$NTPDIR/xntp.drift" ]; then
- ECHO "currently saved drift value:" `cat "$NTPDIR/xntp.drift"`
- fi
-fi
-
diff --git a/contrib/ntp/scripts/support/etc/rc b/contrib/ntp/scripts/support/etc/rc
deleted file mode 100644
index ef8834a..0000000
--- a/contrib/ntp/scripts/support/etc/rc
+++ /dev/null
@@ -1,198 +0,0 @@
-#!/bin/sh
-# NTP time synchronisation
-#
-# /src/NTP/REPOSITORY/v3/supportscripts/etc/rc,v 1.11 1993/07/09 13:17:00 kardel Exp
-#
-# rc,v
-# Revision 1.11 1993/07/09 13:17:00 kardel
-# local NTPROOT
-#
-# Revision 1.10 1993/07/09 11:37:29 kardel
-# Initial restructured version + GPS support
-#
-# Revision 1.9 1993/06/23 14:10:36 kardel
-# June 21st reconcilation
-#
-# Revision 1.7 1993/06/02 12:04:43 kardel
-# May 28th reconcilation & clenaup
-#
-#
-# non reference clock hosts will try to do an ntpdate on NTPSERVERS
-#
-NTPSERVERS="ntps1-0 ntps1-1 ntps2-0 ntps2-1"
-NTPROOT=/local/NTP
-
-#
-# get the initial setup
-#
-if [ ! -r $NTPROOT/etc/setup ]; then
- echo "ERROR: $NTPROOT/etc/setup missing - incorrect installation."
- exit 1
-else
- . $NTPROOT/etc/setup
-fi
-
-umask 022 # SITE SPECIFIC: local policy - watch out for NFS and "root" rights
-
-msg=""
-#
-# default configuration files are named $NTPROOT/conf/<ARCH>.<KARCH>
-#
-CF=$NTPROOT/conf/$ARCH.$KARCH # default configuration file
-#
-# Host specific config file (reference clocks) have the hostname tagged on
-#
-CFH="$CF"."$HOSTNAME" # specific configuration file
-#
-# where to find the tickadj command
-#
-KFIX=$NTPROOT/bin/tickadj # kernel variable fix
-#
-# where to find special tickadj parameters
-#
-TC=$NTPROOT/conf/tickconf # special tickadj parameters
-#
-# where to find the keys file (if not found $KEY.dumb will be used)
-#
-KEY=$NTPROOT/conf/ntp.keys # private key file
-#
-# the daemon
-#
-XD=$NTPROOT/bin/xntpd # NTP daemon
-#
-# HP adjtimed
-#
-ADJTIMED=$NTPROOT/bin/adjtimed # HP special (adjtime() emulation)
-#
-# ntpdate command
-#
-NTPDATE=$NTPROOT/bin/ntpdate
-
-#
-# secondary timed support
-# The word "TIMED" must be in the config file for timed to start
-# Note that this times is a special version which does not ever set or
-# adjust the time. Ask time@informatik.uni-erlangen.de for patches
-#
-TIMED=$NTPROOT/bin/timed # timed (Berkeley) secondary time service
- # here used in a *HARMLESS* version
- # to provide time to "inferior" systems
-#
-# ISREFHOST is a command that returns exit status 0 for a reference host
-# Site specific: sample for dcf77 is given
-#
-ISREFHOST="[ -f $NTPROOT/.karch.$KARCH/sys/OBJ/parsestreams.o -a -f /dev/refclock-0 ]"
-#
-# SETUP_REFCLOCK
-#
-# what to do in order to set up a local reference clock
-# usually this will load a STREAMS module or initialize other things
-# needed
-#
-SETUP_REFCLOCK() {
- if modstat | grep -s 'PARSE'; then
- ECHO "loadable PARSER STREAMS module already loaded."
- else
- ECHO "attempting to load PARSER STREAMS module..."
- MDLFILE="/tmp/mdl.$$"
- if modload $NTPROOT/.karch.$KARCH/sys/OBJ/parsestreams.o -o $MDLFILE 2>&1; then
- modstat
- else
- echo WARNING: load FAILED
- fi | LOG
- rm -f $MDLFILE
- unset MDLFILE
- fi
-}
-
-kargs() {
- MATCH=NO
- HOSTID="`(hostid) 2>/dev/null || echo 000000`"
- if [ -r "$TC" ]; then
- exec 0< "$TC"
- while [ "$MATCH" != "YES" ] && read HOST ID PARAM; do
- if [ "$HOST" = "DEFAULT" ]; then
- DEFAULT="$ID $PARAM"
- else
- if [ "$ID" = "$HOSTID" -o "$HOST" = "$HOSTNAME" ]; then
- echo "$PARAM"
- MATCH=YES
- fi
- fi
- done
- if [ "$MATCH" != "YES" ]; then
- if [ -z "$DEFAULT" ]; then
- echo "-A -p -s -q";
- else
- echo "$DEFAULT";
- fi
- fi
- else
- echo "-A -p -s -q";
- fi
-}
-
-if [ -x $XD ]; then
- if [ -x "$ADJTIMED" ]; then
- $ADJTIMED && ECHO "adjusttimesupport: adjtimed."
- fi
- #
- # WARNING: check ps command first, or you might kill things you don't want to
- #
- PID="`(ps -efa 2>/dev/null || ps auxww 2>/dev/null || echo "") | grep xntp | grep -v grep | awk '{ print $2 }'`"
-
- if [ ! -z "$PID" ]; then
- ECHO "killing old NTP daemon (PID=$PID)"
- #
- # enable this after checking for correctness
- # kill $PID
- ECHO "should do a kill $PID, if this is the right PID - check rc script"
- fi
- #
- # try an ntpdate when timeservers are configured
- #
- if [ ! -z "$NTPSERVERS" -a -x $NTPDATE ]; then
- ECHO "NTP initial time setting"
- $NTPDATE -v $NTPSERVERS | LOG
- fi
- #
- # look for reference clock equipment
- #
- if $ISREFHOST; then
- ECHO "REFERENCE CLOCK SUPPORT (initializing...)"
- SETUP_REFCLOCK
- fi
-
- if [ -r "$CFH" ]; then
- CF="$CFH"
- else
- if [ ! -r "$KEY" ]; then
- KEY="$KEY.dumb"
- fi
- fi
-
- ECHO "NTP configuration file: $CF"
- ECHO -n "time daemon startup:"
-
- if [ -r "$CF" ]; then
- if [ -x "$KFIX" ]; then
- KARGS="`kargs`"
- if [ ! -z "$KARGS" ]; then
- $KFIX $KARGS && ECHO -n "tickadj $KARGS"
- fi
- fi
- $XD -c "$CF" -k "$KEY" && ECHO -n ' xntpd'
- if [ -x "$TIMED" ] && grep -s TIMED "$CF"; then
- $TIMED -M -N && ECHO -n ' timed'
- fi
- else
- msg="configuration file ($CF) not present."
- fi
-else
- msg="daemon binary ($XD) not present."
-fi
-ECHO "."
-
-if [ "$msg" ]; then
- NLECHO "WARNING: NO NTP time sychronisation: $msg"
-fi
diff --git a/contrib/ntp/scripts/support/etc/setup b/contrib/ntp/scripts/support/etc/setup
deleted file mode 100644
index d4ea75e..0000000
--- a/contrib/ntp/scripts/support/etc/setup
+++ /dev/null
@@ -1,72 +0,0 @@
-#
-# setup,v 3.1 1993/07/06 01:10:55 jbj Exp
-#
-# /bin/sh sourced file for environment setup
-# expects NTPROOT variable initialized
-#
-# if not set it will be initialized to /usr/local/NTP
-#
-# setup,v
-# Revision 3.1 1993/07/06 01:10:55 jbj
-# XNTP release 3.1
-#
-#
-# Revision 1.1 1992/12/10 12:59:25 kardel
-# Prerelease NTP V3 / DCF
-#
-# Revision 1.1 1992/12/10 10:14:46 kardel
-# Initial revision
-#
-#
-NTPROOT=${NTPROOT-/usr/local/NTP}
-
-#
-# we so use our own echos, as we somes want to substitute them with a
-# file logging version durin the /etc/rc.local phase
-#
-set `type ECHO`
-
-PATH="${PATH}:$NTPROOT/bin"
-export PATH
-
-if [ "$2" = "is" ]; then
- :
-else
- #
- # find out the way echos work (Rest of rc thinks BSD echo)
- #
- ECHOREP="`echo -n x`"
- if [ "$ECHOREP" = "-n x" ]; then
- ECHO () {
- if [ "$1" = "-n" ]; then
- shift
- echo "$@\c"
- else
- echo "$@"
- fi
- }
- #ECHO "System V style echo"
- else
- ECHO () {
- echo "$@"
- }
- #ECHO "BSD style echo"
- fi
-
- NLECHO () {
- echo "$@"
- }
-
- LOG () {
- while read _line; do
- ECHO "$_line"
- done
- }
- #
- # carefully find out some configuration Variables
- #
- ARCH="`(arch) 2>/dev/null || ((uname) > /dev/null && uname -a | awk '{ print $6; }') 2>/dev/null || echo 'no-arch'`"
- KARCH="`(arch -k) 2>/dev/null || ((uname) > /dev/null && uname -a | awk '{ print $5 }') || echo 'no-arch'`"
- HOSTNAME="`(hostname) 2>/dev/null || uname -n`"
-fi
-
diff --git a/contrib/ntp/sntp/COPYRIGHT b/contrib/ntp/sntp/COPYRIGHT
new file mode 100644
index 0000000..c4f6f5d
--- /dev/null
+++ b/contrib/ntp/sntp/COPYRIGHT
@@ -0,0 +1,80 @@
+ General Public Licence for the software known as MSNTP
+ ------------------------------------------------------
+
+ (c) Copyright, N.M. Maclaren, 1996, 1997, 2000
+ (c) Copyright, University of Cambridge, 1996, 1997, 2000
+
+
+
+Free use of MSNTP in source and binary forms is permitted, provided that this
+entire licence is duplicated in all copies, and that any documentation,
+announcements, and other materials related to use acknowledge that the software
+was developed by N.M. Maclaren (hereafter refered to as the Author) at the
+University of Cambridge. Neither the name of the Author nor the University of
+Cambridge may be used to endorse or promote products derived from this material
+without specific prior written permission.
+
+The Author and the University of Cambridge retain the copyright and all other
+legal rights to the software and make it available non-exclusively. All users
+must ensure that the software in all its derivations carries a copyright notice
+in the form:
+ (c) Copyright N.M. Maclaren,
+ (c) Copyright University of Cambridge.
+
+
+
+ NO WARRANTY
+
+Because the MSNTP software is licensed free of charge, the Author and the
+University of Cambridge provide absolutely no warranty, either expressed or
+implied, including, but not limited to, the implied warranties of
+merchantability and fitness for a particular purpose. The entire risk as to
+the quality and performance of the MSNTP software is with you. Should MSNTP
+prove defective, you assume the cost of all necessary servicing or repair.
+
+In no event, unless required by law, will the Author or the University of
+Cambridge, or any other party who may modify and redistribute this software as
+permitted in accordance with the provisions below, be liable for damages for
+any losses whatsoever, including but not limited to lost profits, lost monies,
+lost or corrupted data, or other special, incidental or consequential losses
+that may arise out of the use or inability to use the MSNTP software.
+
+
+
+ COPYING POLICY
+
+Permission is hereby granted for copying and distribution of copies of the
+MSNTP source and binary files, and of any part thereof, subject to the
+following licence conditions:
+
+1. You may distribute MSNTP or components of MSNTP, with or without additions
+developed by you or by others. No charge, other than an "at-cost" distribution
+fee, may be charged for copies, derivations, or distributions of this material
+without the express written consent of the copyright holders.
+
+2. You may also distribute MSNTP along with any other product for sale,
+provided that the cost of the bundled package is the same regardless of whether
+MSNTP is included or not, and provided that those interested only in MSNTP must
+be notified that it is a product freely available from the University of
+Cambridge.
+
+3. If you distribute MSNTP software or parts of MSNTP, with or without
+additions developed by you or others, then you must either make available the
+source to all portions of the MSNTP system (exclusive of any additions made by
+you or by others) upon request, or instead you may notify anyone requesting
+source that it is freely available from the University of Cambridge.
+
+4. You may not omit any of the copyright notices on either the source files,
+the executable files, or the documentation.
+
+5. You may not omit transmission of this License agreement with whatever
+portions of MSNTP that are distributed.
+
+6. Any users of this software must be notified that it is without warranty or
+guarantee of any nature, express or implied, nor is there any fitness for use
+represented.
+
+
+October 1996
+April 1997
+October 2000
diff --git a/contrib/ntp/sntp/Makefile.am b/contrib/ntp/sntp/Makefile.am
index ccb62d8..1bee65d 100644
--- a/contrib/ntp/sntp/Makefile.am
+++ b/contrib/ntp/sntp/Makefile.am
@@ -1,38 +1,77 @@
+# Makefile.am, by Harlan Stenn, from:
# Makefile for sntp
# N.M. Maclaren, October 2000.
-# Take a look at README for the various preprocessor symbols, but they are
-# extremely unlikely to be needed on newer systems. You may prefer to change
-# LOCKNAME and SAVENAME to use /var/run (or even /tmp) rather than /etc. Note
-# that not all of the following system settings have been tested recently.
-
AUTOMAKE_OPTIONS = foreign
+ACLOCAL_AMFLAGS= -I libopts/m4
+
+AM_CPPFLAGS= $(LIBOPTS_CFLAGS)
+LDADD= $(LIBOPTS_LDADD)
+
+NULL=
+
+bindir= ${exec_prefix}/${BINSUBDIR}
+bin_PROGRAMS= sntp
+#run_ag= cd $(srcdir) && autogen --writable -L $(top_srcdir)/include
+run_ag= cd $(srcdir) && autogen --writable
+
+SUBDIRS=
+if NEED_LIBOPTS
+SUBDIRS+= libopts
+endif
+SUBDIRS+= .
-# Compiling this sort of ANSI C under SunOS 4.1 is a mug's game, because Sun's
-# Unix headers make GNU C vomit even in compatibility mode, but the following
-# will compile main.c and unix.c. At least two people have got it to work.
-# CC = gcc -ansi
-# CFLAGS = -O -DNONBLOCK_BROKEN
-# LDFLAGS =
-# LIBS = -lm
-
-# The following settings can be used under Linux. While adjtime is present,
-# it is completely broken (i.e. it will work only if xntp is running), so it
-# is a good idea to add -DADJTIME_MISSING.
-# CC = cc -DADJTIME_MISSING
-# CFLAGS = -O
-# LDFLAGS =
-# LIBS = -lm
-
-bin_PROGRAMS = sntp
sntp_SOURCES = \
header.h \
internet.c \
internet.h \
kludges.h \
main.c \
+ sntp-opts.c \
+ sntp-opts.h \
socket.c \
timing.c \
unix.c \
- $(EMPTY)
+ $(NULL)
+
+dist_man_MANS= sntp.1
+
+EXTRA_DIST= bincheck.mf \
+ COPYRIGHT \
+ sntp-opts.def sntp.1 sntp-opts.texi sntp-opts.menu \
+ autogen-version.def version.def
+BUILT_SOURCES= check-autogen-version.def check-version.def \
+ sntp-opts.c sntp-opts.h sntp.1 sntp-opts.texi sntp-opts.menu
+man_MANS= sntp.1
+
+
+FRC:
+check-autogen-version.def: FRC
+ @cd $(srcdir) \
+ && test -r ../include/autogen-version.def \
+ && ( if cmp -s ../include/autogen-version.def autogen-version.def; \
+ then : ; \
+ else cp ../include/autogen-version.def autogen-version.def; \
+ echo "Installing new sntp/autogen-version.def file"; \
+ fi )
+
+check-version.def: FRC
+ @cd $(srcdir) \
+ && test -r ../include/version.def \
+ && ( if cmp -s ../include/version.def version.def; \
+ then : ; \
+ else cp ../include/version.def version.def; \
+ echo "Installing new sntp/version.def file"; \
+ fi )
+
+$(srcdir)/sntp-opts.h: $(srcdir)/sntp-opts.c
+$(srcdir)/sntp-opts.c: $(srcdir)/sntp-opts.def $(srcdir)/version.def
+ $(run_ag) sntp-opts.def
+
+$(srcdir)/sntp.1: $(srcdir)/sntp-opts.def $(srcdir)/version.def
+ $(run_ag) -Tagman1.tpl -bsntp sntp-opts.def
+
+$(srcdir)/sntp-opts.texi $(srcdir)/sntp-opts.menu: $(srcdir)/sntp-opts.def $(srcdir)/version.def
+ $(run_ag) -Taginfo.tpl -DLEVEL=section sntp-opts.def
+include bincheck.mf
diff --git a/contrib/ntp/sntp/Makefile.in b/contrib/ntp/sntp/Makefile.in
index 597dd97..a3efa6a 100644
--- a/contrib/ntp/sntp/Makefile.in
+++ b/contrib/ntp/sntp/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -14,13 +14,13 @@
@SET_MAKE@
+# Makefile.am, by Harlan Stenn, from:
# Makefile for sntp
# N.M. Maclaren, October 2000.
-# Take a look at README for the various preprocessor symbols, but they are
-# extremely unlikely to be needed on newer systems. You may prefer to change
-# LOCKNAME and SAVENAME to use /var/run (or even /tmp) rather than /etc. Note
-# that not all of the following system settings have been tested recently.
+# we traditionally installed software in bindir, while it should have gone
+# in sbindir. Now that we offer a choice, look in the "other" installation
+# subdir to warn folks if there is another version there.
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -29,7 +29,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -45,37 +44,119 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+bin_PROGRAMS = sntp$(EXEEXT)
+@NEED_LIBOPTS_TRUE@am__append_1 = libopts
+DIST_COMMON = README $(am__configure_deps) $(dist_man_MANS) \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/bincheck.mf $(srcdir)/config.h.in \
+ $(top_srcdir)/configure compile config.guess config.sub \
+ depcomp install-sh ltmain.sh missing
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/libopts/m4/libopts.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am__objects_1 =
+am_sntp_OBJECTS = internet.$(OBJEXT) main.$(OBJEXT) \
+ sntp-opts.$(OBJEXT) socket.$(OBJEXT) timing.$(OBJEXT) \
+ unix.$(OBJEXT) $(am__objects_1)
+sntp_OBJECTS = $(am_sntp_OBJECTS)
+sntp_LDADD = $(LDADD)
+am__DEPENDENCIES_1 =
+sntp_DEPENDENCIES = $(am__DEPENDENCIES_1)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(sntp_SOURCES)
+DIST_SOURCES = $(sntp_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-exec-recursive install-info-recursive \
+ install-recursive installcheck-recursive installdirs-recursive \
+ pdf-recursive ps-recursive uninstall-info-recursive \
+ uninstall-recursive
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(dist_man_MANS) $(man_MANS)
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = libopts .
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+ { test ! -d $(distdir) \
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+ && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -84,18 +165,27 @@ PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
-bindir = @bindir@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = ${exec_prefix}/${BINSUBDIR}
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
@@ -115,109 +205,111 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-
AUTOMAKE_OPTIONS = foreign
-
-
-# Compiling this sort of ANSI C under SunOS 4.1 is a mug's game, because Sun's
-# Unix headers make GNU C vomit even in compatibility mode, but the following
-# will compile main.c and unix.c. At least two people have got it to work.
-# CC = gcc -ansi
-# CFLAGS = -O -DNONBLOCK_BROKEN
-# LDFLAGS =
-# LIBS = -lm
-
-# The following settings can be used under Linux. While adjtime is present,
-# it is completely broken (i.e. it will work only if xntp is running), so it
-# is a good idea to add -DADJTIME_MISSING.
-# CC = cc -DADJTIME_MISSING
-# CFLAGS = -O
-# LDFLAGS =
-# LIBS = -lm
-bin_PROGRAMS = sntp
+ACLOCAL_AMFLAGS = -I libopts/m4
+AM_CPPFLAGS = $(LIBOPTS_CFLAGS)
+LDADD = $(LIBOPTS_LDADD)
+NULL =
+#run_ag= cd $(srcdir) && autogen --writable -L $(top_srcdir)/include
+run_ag = cd $(srcdir) && autogen --writable
+SUBDIRS = $(am__append_1) .
sntp_SOURCES = \
header.h \
internet.c \
internet.h \
kludges.h \
main.c \
+ sntp-opts.c \
+ sntp-opts.h \
socket.c \
timing.c \
unix.c \
- $(EMPTY)
+ $(NULL)
-subdir = .
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_CLEAN_FILES =
-bin_PROGRAMS = sntp$(EXEEXT)
-PROGRAMS = $(bin_PROGRAMS)
+dist_man_MANS = sntp.1
+EXTRA_DIST = bincheck.mf \
+ COPYRIGHT \
+ sntp-opts.def sntp.1 sntp-opts.texi sntp-opts.menu \
+ autogen-version.def version.def
-am_sntp_OBJECTS = internet.$(OBJEXT) main.$(OBJEXT) socket.$(OBJEXT) \
- timing.$(OBJEXT) unix.$(OBJEXT) $(am__objects_1)
-sntp_OBJECTS = $(am_sntp_OBJECTS)
-sntp_LDADD = $(LDADD)
-sntp_DEPENDENCIES =
-sntp_LDFLAGS =
+BUILT_SOURCES = check-autogen-version.def check-version.def \
+ sntp-opts.c sntp-opts.h sntp.1 sntp-opts.texi sntp-opts.menu
-DEFAULT_INCLUDES = -I. -I$(srcdir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/internet.Po ./$(DEPDIR)/main.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/socket.Po ./$(DEPDIR)/timing.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/unix.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = $(sntp_SOURCES)
-DIST_COMMON = README $(srcdir)/Makefile.in $(srcdir)/configure \
- Makefile.am aclocal.m4 config.guess config.sub configure \
- configure.ac depcomp install-sh missing mkinstalldirs
-SOURCES = $(sntp_SOURCES)
-
-all: all-am
+man_MANS = sntp.1
+all: $(BUILT_SOURCES) config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
-.SUFFIXES: .c .o .obj
-
-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
+.SUFFIXES: .c .lo .o .obj
+am--refresh:
+ @:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/bincheck.mf $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
+ cd $(srcdir) && $(AUTOMAKE) --foreign \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
-
-$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ echo ' $(SHELL) ./config.status'; \
+ $(SHELL) ./config.status;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
-$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
- cd $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): configure.ac
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: $(am__configure_deps)
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
+ || test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
@@ -225,58 +317,179 @@ uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
- rm -f $(DESTDIR)$(bindir)/$$f; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
sntp$(EXEEXT): $(sntp_OBJECTS) $(sntp_DEPENDENCIES)
@rm -f sntp$(EXEEXT)
$(LINK) $(sntp_LDFLAGS) $(sntp_OBJECTS) $(sntp_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/internet.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sntp-opts.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socket.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timing.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-uninstall-info-am:
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-ETAGS = etags
-ETAGSFLAGS =
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-CTAGS = ctags
-CTAGSFLAGS =
+mostlyclean-libtool:
+ -rm -f *.lo
-tags: TAGS
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+install-man1: $(man1_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+ else file=$$i; fi; \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
+ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -286,27 +499,42 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(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 "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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) \
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
@@ -323,23 +551,11 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = .
-distdir = $(PACKAGE)-$(VERSION)
-
-am__remove_distdir = \
- { test ! -d $(distdir) \
- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
- && rm -fr $(distdir); }; }
-
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
+ $(mkdir_p) $(distdir)/libopts/m4
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@@ -351,7 +567,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -366,25 +582,67 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(mkdir_p) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ $(am__remove_distdir)
+
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
- $(am__remove_distdir)
- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
+ case '$(DIST_ARCHIVES)' in \
+ *.tar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+ *.zip*) \
+ unzip $(distdir).zip ;;\
+ esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
@@ -404,19 +662,20 @@ distcheck: dist
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
- (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
- && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
- && rm -f $(distdir).tar.gz \
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
+ && rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
- @echo "$(distdir).tar.gz is ready for distribution" | \
- sed 'h;s/./=/g;p;x;p;x'
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
@@ -436,23 +695,27 @@ distcleancheck: distclean
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
-check: check-am
-all-am: Makefile $(PROGRAMS)
-
-installdirs:
- $(mkinstalldirs) $(DESTDIR)$(bindir)
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-recursive
+all-am: Makefile $(PROGRAMS) $(MANS) config.h
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-installcheck: installcheck-am
+installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -460,75 +723,131 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -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
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-recursive
-clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
-distclean: distclean-am
+distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+ distclean-hdr distclean-libtool distclean-tags
-dvi: dvi-am
+dvi: dvi-recursive
dvi-am:
-info: info-am
+html: html-recursive
+
+info: info-recursive
info-am:
-install-data-am:
+install-data-am: install-man
install-exec-am: install-binPROGRAMS
+ @$(NORMAL_INSTALL)
+ $(MAKE) $(AM_MAKEFLAGS) install-exec-hook
-install-info: install-info-am
+install-info: install-info-recursive
-install-man:
+install-man: install-man1
installcheck-am:
-maintainer-clean: maintainer-clean-am
+maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
-mostlyclean: mostlyclean-am
+mostlyclean: mostlyclean-recursive
-mostlyclean-am: mostlyclean-compile mostlyclean-generic
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
-pdf: pdf-am
+pdf: pdf-recursive
pdf-am:
-ps: ps-am
+ps: ps-recursive
ps-am:
-uninstall-am: uninstall-binPROGRAMS uninstall-info-am
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic ctags dist dist-all dist-gzip distcheck distclean \
- distclean-compile distclean-generic distclean-tags \
- distcleancheck distdir distuninstallcheck dvi dvi-am info \
- info-am install install-am install-binPROGRAMS 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-compile \
- mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
- uninstall-am uninstall-binPROGRAMS uninstall-info-am
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-man
+
+uninstall-info: uninstall-info-recursive
+
+uninstall-man: uninstall-man1
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+ check-am clean clean-binPROGRAMS clean-generic clean-libtool \
+ clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \
+ dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \
+ distclean-compile distclean-generic distclean-hdr \
+ distclean-libtool distclean-recursive distclean-tags \
+ distcleancheck distdir distuninstallcheck dvi dvi-am html \
+ html-am info info-am install install-am install-binPROGRAMS \
+ install-data install-data-am install-exec install-exec-am \
+ install-exec-hook install-info install-info-am install-man \
+ install-man1 install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic maintainer-clean-recursive \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-info-am uninstall-man \
+ uninstall-man1
+
+
+FRC:
+check-autogen-version.def: FRC
+ @cd $(srcdir) \
+ && test -r ../include/autogen-version.def \
+ && ( if cmp -s ../include/autogen-version.def autogen-version.def; \
+ then : ; \
+ else cp ../include/autogen-version.def autogen-version.def; \
+ echo "Installing new sntp/autogen-version.def file"; \
+ fi )
+
+check-version.def: FRC
+ @cd $(srcdir) \
+ && test -r ../include/version.def \
+ && ( if cmp -s ../include/version.def version.def; \
+ then : ; \
+ else cp ../include/version.def version.def; \
+ echo "Installing new sntp/version.def file"; \
+ fi )
+
+$(srcdir)/sntp-opts.h: $(srcdir)/sntp-opts.c
+$(srcdir)/sntp-opts.c: $(srcdir)/sntp-opts.def $(srcdir)/version.def
+ $(run_ag) sntp-opts.def
+
+$(srcdir)/sntp.1: $(srcdir)/sntp-opts.def $(srcdir)/version.def
+ $(run_ag) -Tagman1.tpl -bsntp sntp-opts.def
+
+$(srcdir)/sntp-opts.texi $(srcdir)/sntp-opts.menu: $(srcdir)/sntp-opts.def $(srcdir)/version.def
+ $(run_ag) -Taginfo.tpl -DLEVEL=section sntp-opts.def
+
+install-exec-hook:
+ @case ${BINSUBDIR} in \
+ bin) ODIR=${exec_prefix}/sbin ;; \
+ sbin) ODIR=${exec_prefix}/bin ;; \
+ esac; \
+ test -z "${bin_PROGRAMS}${bin_SCRIPTS}" \
+ || for i in ${bin_PROGRAMS} ${bin_SCRIPTS} " "; do \
+ test ! -f $$ODIR/$$i || echo "*** $$i is also in $$ODIR!"; \
+ done
+#
# 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/contrib/ntp/sntp/README b/contrib/ntp/sntp/README
index 10932f0..d7738e9 100644
--- a/contrib/ntp/sntp/README
+++ b/contrib/ntp/sntp/README
@@ -1,4 +1,4 @@
-MSNTP (Simple Network Time Protocol Utility) - Version 1.6
+SNTP (Simple Network Time Protocol Utility) - Version 1.6
----------------------------------------------------------
Please read the file Copyright first. Also note that the file RFC2030.TXT is
@@ -16,13 +16,8 @@ WARNING: the text version of RFC 1305 is incomplete, and omits the tables that
are in the Postscript version. Unfortunately, these contain the only copy of
some critical information.
-The canonical NTP code for Unix is the xntp suite, and is as complicated as
-would be expected from reading RFC 1305. While its code is moderately clean by
-Unix and C standards, version 3-5.86 is over 80,000 lines and unavoidably
-system-dependent. A worse problem is that it is so badly fouled up by its
-configuration mechanism that ab initio porting could be several weeks' work,
-even if the new system has all the necessary facilities and is bug free!
-
+draft-mills-sntp-v4-00.txt is the next proposed revision of RFC 2030,
+and the current goal is to have this code implement that specification.
SNTP Servers - Some Little-Known Facts
--------------------------------------
@@ -34,6 +29,13 @@ be for the very lowest level of server, exporting solely to local clients that
do not themselves act as servers to ANY system (e.g. on a Netware server,
exporting only to the PCs that it manages).
+[There is missing language in the previous paragraph. SNTP is designed
+to be used in 2 cases: as a client at the lowest levels of the timing
+hierarchy, or as a server of last resort at stratum 1 when connected to
+a modem or radio clock.]
+
+[This is as far as I have updated this file as part of the upgrade.]
+
If the NTP network were being run as a directed acyclic graph (i.e. using SNTP
rather than full NTP), with a diameter of D links and a maximum error per link
of E, the maximum synchronisation error would be D*E. Reasonable figures for D
@@ -44,28 +46,28 @@ SNTP client/servers must NEVER be embedded WITHIN an NTP network.
The other reason is that inserting SNTP client/servers at a low stratum (but
not the root) of an NTP network could easily break NTP! See RFC 1305 for why,
but don't expect the answer to stand out at you. It would be easy to extend
-MSNTP to a full-function client/server application, thus making it into a true
-alternative to xntp, but this incompatibility is why it MUST NOT be done.
+SNTP to a full-function client/server application, thus making it into a true
+alternative to ntp, but this incompatibility is why it MUST NOT be done.
The above does not mean that the SNTP approach is unsatisfactory, but only that
it is incompatible with full NTP. The author would favour a complete SNTP
network using the SNTP approach, and the statistical error reduction used in
-MSNTP, but it actually addresses a slightly different problem from that
+SNTP, but it actually addresses a slightly different problem from that
addressed by NTP. TANSTAAFL.
FINAL WARNING: do NOT use this program to serve NTP requests from outside the
systems that you manage. If you do this, and manage to break the time
synchronisation on other people's systems, you will be regarded very
unfavourably. Actually, this should be possible only if their NTP client is
-completely broken, because MSNTP does its damnedest to declare its packets as
+completely broken, because SNTP does its damnedest to declare its packets as
the lowest form of NTP timestamp.
-MSNTP and its Assumptions
+SNTP and its Assumptions
-------------------------
-MSNTP is intended to be a straightforward SNTP daemon/utility that is easy to
+SNTP is intended to be a straightforward SNTP daemon/utility that is easy to
build on any reasonable Unix platform (and most near-Unix ones), whether or not
it has ever been ported to them before. It is intended to answer the following
requirements, either by challenge and response or the less reliable broadcast
@@ -94,13 +96,12 @@ method:
should work, unchanged, on any system with an ANSI/ISO C compiler.
There are full tracing facilities and a lot of paranoia in the code to check
-for bad packets (more than in xntp) which may need relaxing in the light of
+for bad packets (more than in ntp) which may need relaxing in the light of
experience. Unfortunately, RFC 1305 does not include a precise description of
the data protocol, despite its length, and there are some internal
-inconsistencies and differences between it and RFC 2030 and xntp3-5's
-behaviour.
+inconsistencies and differences between it and RFC 2030 and ntp's behaviour.
-WARNING: MSNTP has not been tested in conjunction with xntp broadcasts or xntp
+WARNING: SNTP has not been tested in conjunction with ntp broadcasts or ntp
clients, as the ability to do so was not available to the author. It is very
unlikely that it won't work, but you should check. Much of the paranoid code
is only partially tested, too, because it is dealing with cases that are very
@@ -115,7 +116,7 @@ cross-check.
Furthermore, it does not attempt to solve all of the problems addressed by the
NTP protocol and you should NOT use it if any of those problems are likely to
-cause you serious trouble. If they are, bite the bullet and implement xntp, or
+cause you serious trouble. If they are, bite the bullet and implement ntp, or
buy a fancy time-server.
@@ -134,7 +135,7 @@ main.c - most of the source (almost entirely portable)
unix.c - just for isatty, sleep and locking
internet.c - Internet host and service name lookup
socket.c - the Berkeley socket code
-msntp.1 - the man page
+sntp.1 - the man page
RFC2030.TXT - the SNTPv4 specification
All you SHOULD need to do is to uncomment the settings in file Makefile for
@@ -279,7 +280,7 @@ commands, the installation is finished!
You can use it as a simple unprivileged command to check the time, quite
independently of whether it is running as a time-updating daemon or server, or
-whether you are running xntp. You can run it in daemon mode without updating
+whether you are running ntp. You can run it in daemon mode without updating
the clock, to check for drift, but it may fail if the clock is changed under
its feet. Unfortunately, you cannot listen to broadcasts without privilege.
@@ -326,7 +327,7 @@ Simple Examples of Use
----------------------
Many people use it solely to check the time of their system, especially as a
-cross-check on xntpd. You do not need privilege and it will not cause trouble
+cross-check on ntpd. You do not need privilege and it will not cause trouble
to the local network, so you can use it on someone else's system! You can
specify one server or several. For example:
@@ -334,10 +335,10 @@ specify one server or several. For example:
You can use it to check how your system is drifting, but it isn't very good at
this if the system is drifting very badly (in which case use the previous
-technique and dc) or if you are running xntp. You do not need privilege and it
+technique and dc) or if you are running ntp. You do not need privilege and it
will not cause trouble to the local network. For example:
- msntp -x 120 -f /tmp/msntp.state ntp.server.local
+ sntp -x 120 -f /tmp/msntp.state ntp.server.local
More generally, it is used to synchronise the clock, in which case you DO need
root privilege. It can be used in many ways, but the author favours running it
@@ -346,15 +347,15 @@ with no attention, and send a mail message (if cron is configured to do that)
when it fails badly. For example, the author uses a root crontab entry on one
system of:
- 15 0 * * * /bin/nice --10 /usr/local/bin/msntp -a -x 480 ntp.server.local
+ 15 0 * * * /bin/nice --10 /usr/local/bin/sntp -a -x 480 ntp.server.local
If you have a home computer, it can be set up to resynchronise each time you
-dial up. For example, the author uses a /etc/ppp/ip-up.d/msntp file on his
+dial up. For example, the author uses a /etc/ppp/ip-up.d/sntp file on his
home Linux system of:
#!/bin/sh
sleep 60
- /bin/nice --10 /usr/local/sbin/msntp -r -P 60 ntp.server.local
+ /bin/nice --10 /usr/local/sbin/sntp -r -P 60 ntp.server.local
-a would be better, but adjtime is broken in Linux.
diff --git a/contrib/ntp/sntp/aclocal.m4 b/contrib/ntp/sntp/aclocal.m4
index fb76c3d..21cd960 100644
--- a/contrib/ntp/sntp/aclocal.m4
+++ b/contrib/ntp/sntp/aclocal.m4
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.7.7 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005 Free Software Foundation, Inc.
# This file 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.
@@ -11,332 +11,6196 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-# Do all the work for Automake. -*- Autoconf -*-
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-# This macro actually does too much some checks are only needed if
-# your package does certain things. But this isn't really a big deal.
+# serial 47 AC_PROG_LIBTOOL
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# 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.
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+ [],
+ [m4_define([AC_PROVIDE_IFELSE],
+ [m4_ifdef([AC_PROVIDE_$1],
+ [$2], [$3])])])
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+ AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [AC_LIBTOOL_CXX],
+ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+ ])])
+dnl And a similar setup for Fortran 77 support
+ AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [AC_LIBTOOL_F77],
+ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
-# serial 10
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [ifdef([AC_PROG_GCJ],
+ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([A][M_PROG_GCJ],
+ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([LT_AC_PROG_GCJ],
+ [define([LT_AC_PROG_GCJ],
+ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
-AC_PREREQ([2.54])
-# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow
-# the ones we care about.
-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
-# AM_INIT_AUTOMAKE([OPTIONS])
-# -----------------------------------------------
-# The call with PACKAGE and VERSION arguments is the old style
-# call (pre autoconf-2.50), which is being phased out. PACKAGE
-# and VERSION should now be passed to AC_INIT and removed from
-# the call to AM_INIT_AUTOMAKE.
-# We support both call styles for the transition. After
-# the next Automake release, Autoconf can make the AC_INIT
-# arguments mandatory, and then we can depend on a new Autoconf
-# release and drop the old call support.
-AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
- AC_REQUIRE([AC_PROG_INSTALL])dnl
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
- test -f $srcdir/config.status; then
- AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+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 to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
fi
-# test whether we have cygpath
-if test -z "$CYGPATH_W"; then
- if (cygpath --version) >/dev/null 2>/dev/null; then
- CYGPATH_W='cygpath -w'
- else
- CYGPATH_W=echo
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ AC_PATH_MAGIC
fi
+ ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+ [AC_HELP_STRING([--with-pic],
+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+ [pic_mode="$withval"],
+ [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+AC_DEFUN([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+ case $cc_temp in
+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+AC_DEFUN([_LT_LINKER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_LINKER_BOILERPLATE
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
fi
-AC_SUBST([CYGPATH_W])
-# Define the identity of the package.
-dnl Distinguish between old-style and new-style calls.
-m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
- AC_SUBST([PACKAGE], [$1])dnl
- AC_SUBST([VERSION], [$2])],
-[_AM_SET_OPTIONS([$1])dnl
- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+[$]*
+EOF
+ exit 0
+fi
-_AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+# 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
-# Some tools Automake needs.
-AC_REQUIRE([AM_SANITY_CHECK])dnl
-AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_MISSING_PROG(AMTAR, tar)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
-# We need awk for the "check" target. The system "awk" is bad on
-# some platforms.
-AC_REQUIRE([AC_PROG_AWK])dnl
-AC_REQUIRE([AC_PROG_MAKE_SET])dnl
-AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
-_AM_IF_OPTION([no-dependencies],,
-[AC_PROVIDE_IFELSE([AC_PROG_CC],
- [_AM_DEPENDENCIES(CC)],
- [define([AC_PROG_CC],
- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
-AC_PROVIDE_IFELSE([AC_PROG_CXX],
- [_AM_DEPENDENCIES(CXX)],
- [define([AC_PROG_CXX],
- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+ [AC_LANG_PUSH(C)
+ AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+ AC_LANG_POP])
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+ ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$3"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ fi
+ $rm conftest*
])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$5], , :, [$5])
+else
+ ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&AS_MESSAGE_LOG_FD
+ $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ $2=yes
+ fi
+ else
+ $2=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
])
+if test x"[$]$2" = xyes; then
+ ifelse([$4], , :, [$4])
+else
+ ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
-# When config.status generates a header, we must update the stamp-h file.
-# This file resides in the same directory as the config header
-# that is generated. The stamp files are numbered to have different names.
-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
-# loop where config.status creates the headers, so we can generate
-# our stamp files there.
-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
-[# Compute $1's index in $config_headers.
-_am_stamp_count=1
-for _am_header in $config_headers :; do
- case $_am_header in
- $1 | $1:* )
- break ;;
- * )
- _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
esac
-done
-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+ AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
-# Copyright 2002 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.
+# _LT_AC_CHECK_DLFCN
+# --------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
-# 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., 59 Temple Place - Suite 330, Boston, MA
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+ [$4]
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
-# AM_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"])
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION so it can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
- [AM_AUTOMAKE_VERSION([1.7.7])])
+#include <stdio.h>
-# Helper functions for option handling. -*- Autoconf -*-
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
-# Copyright 2001, 2002 Free Software Foundation, Inc.
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
-# 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.
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
-# 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.
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
-# serial 2
+ exit (status);
+}]
+EOF
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) $1 ;;
+ x$lt_dlneed_uscore) $2 ;;
+ x$lt_unknown|x*) $3 ;;
+ esac
+ else :
+ # compilation failed
+ $3
+ fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
-# _AM_MANGLE_OPTION(NAME)
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ])
+ ;;
+
+ *)
+ AC_CHECK_FUNC([shl_load],
+ [lt_cv_dlopen="shl_load"],
+ [AC_CHECK_LIB([dld], [shl_load],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+ [AC_CHECK_FUNC([dlopen],
+ [lt_cv_dlopen="dlopen"],
+ [AC_CHECK_LIB([dl], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+ [AC_CHECK_LIB([svld], [dlopen],
+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+ [AC_CHECK_LIB([dld], [dld_link],
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ AC_CACHE_CHECK([whether a program can dlopen itself],
+ lt_cv_dlopen_self, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+ ])
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+ lt_cv_dlopen_self_static, [dnl
+ _LT_AC_TRY_DLOPEN_SELF(
+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross)
+ ])
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+ $SED '/^$/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+ fi
+ fi
+ chmod u+w . 2>&AS_MESSAGE_LOG_FD
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ AC_MSG_CHECKING([if we can lock with hard links])
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ AC_MSG_RESULT([$hard_links])
+ if test "$hard_links" = no; then
+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_AC_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[[01]] | aix4.[[01]].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[[45]]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[[123]]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[[89]] | openbsd2.[[89]].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+ [include additional configurations @<:@automatic@:>@])],
+ [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ AC_MSG_WARN([output file `$ofile' does not exist])
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+ else
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+ "") ;;
+ *) AC_MSG_ERROR([invalid tag name: $tagname])
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ AC_MSG_ERROR([tag name \"$tagname\" already exists])
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+ AC_LIBTOOL_LANG_F77_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+ AC_LIBTOOL_LANG_GCJ_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+ AC_LIBTOOL_LANG_RC_CONFIG
+ ;;
+
+ *)
+ AC_MSG_ERROR([Unsupported tag name: $tagname])
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ AC_MSG_ERROR([unable to update list of available tagged configurations.])
+ fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 DLLs
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+#- set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+ [p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac],
+ [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
# -----------------------
-AC_DEFUN([_AM_MANGLE_OPTION],
-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
-# _AM_SET_OPTION(NAME)
-# ------------------------------
-# Set option NAME. Presently that only means defining a flag for this option.
-AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
-# _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
-# OPTIONS is a space-separated list of Automake options.
-AC_DEFUN([_AM_SET_OPTIONS],
-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
-AC_DEFUN([_AM_IF_OPTION],
-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] | ?:[\\/]*])
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word. This closes a longstanding sh security hole.
+ ac_dummy="ifelse([$2], , $PATH, [$2])"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/$1; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ AC_MSG_RESULT($MAGIC_CMD)
+else
+ AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+ [AC_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld @<:@default=no@:>@])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ AC_MSG_CHECKING([for ld used by $CC])
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ AC_MSG_RESULT($LD)
+else
+ AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+ lt_cv_ld_reload_flag,
+ [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[[45]]*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sco3.2v5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+ # These system don't have libm, or don't need it
+ ;;
+*-ncr-sysv4.3*)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+ ;;
+*)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
+ ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# it is assumed to be `libltdl'. LIBLTDL will be prefixed with
+# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+# (note the single quotes!). If your package is not flat and you're not
+# using automake, define top_builddir and top_srcdir appropriately in
+# the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+ "") enable_ltdl_convenience=yes
+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+ esac
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# and an installed libltdl is not found, it is assumed to be `libltdl'.
+# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+# '${top_srcdir}/' (note the single quotes!). If your package is not
+# flat and you're not using automake, define top_builddir and top_srcdir
+# appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_CHECK_LIB(ltdl, lt_dlinit,
+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+ [if test x"$enable_ltdl_install" = xno; then
+ AC_MSG_WARN([libltdl not installed, but installation disabled])
+ else
+ enable_ltdl_install=yes
+ fi
+ ])
+ if test x"$enable_ltdl_install" = x"yes"; then
+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ else
+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+ LIBLTDL="-lltdl"
+ LTDLINCL=
+ fi
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ---------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([AC_PROG_CXX])
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_PROG_CXXCPP
+fi
+])# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# --------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
#
-# Check to make sure that the build environment is sane.
+# Check for any special shared library compilation flags.
#
+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
+if test "$GCC" = no; then
+ case $host_os in
+ sco3.2v5*)
+ _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
+ ;;
+ esac
+fi
+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
+ AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
+ if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then :
+ else
+ AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
+ _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
+ fi
+fi
-# Copyright 1996, 1997, 2000, 2001 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.
+#
+# Check to make sure the static flag actually works.
+#
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+ $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
+ [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
-# serial 3
+# Report which librarie types wil actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
-# AM_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Do `set' in a subshell so we don't clobber the current shell's
-# arguments. Must try -L first in case configure is actually a
-# symlink; some systems play weird games with the mod time of symlinks
-# (eg FreeBSD returns the mod time of the symlink's containing
-# directory).
-if (
- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
- if test "$[*]" = "X"; then
- # -L didn't work.
- set X `ls -t $srcdir/configure conftest.file`
- fi
- rm -f conftest.file
- if test "$[*]" != "X $srcdir/configure conftest.file" \
- && test "$[*]" != "X conftest.file $srcdir/configure"; then
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
- # If neither matched, then we have a broken ls. This can happen
- # if, for instance, CONFIG_SHELL is bash and it inherits a
- # broken ls alias from the environment. This has actually
- # happened. Such a system could not be considered "sane".
- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
-alias in your environment])
- fi
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
- test "$[2]" = conftest.file
- )
-then
- # Ok.
- :
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
else
- AC_MSG_ERROR([newly created file is older than distributed files!
-Check your system clock])
+ unset lt_cv_prog_gnu_ld
fi
-AC_MSG_RESULT(yes)])
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
-# -*- Autoconf -*-
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
-# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
+ AC_PROG_LD
-# 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.
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-# 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.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
-# serial 3
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
-# AM_MISSING_PROG(NAME, PROGRAM)
-# ------------------------------
-AC_DEFUN([AM_MISSING_PROG],
-[AC_REQUIRE([AM_MISSING_HAS_RUN])
-$1=${$1-"${am_missing_run}$2"}
-AC_SUBST($1)])
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-# AM_MISSING_HAS_RUN
-# ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
-AC_DEFUN([AM_MISSING_HAS_RUN],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
- am_missing_run="$MISSING --run "
else
- am_missing_run=
- AC_MSG_WARN([`missing' script is too old or missing])
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ fi
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ freebsd[[12]]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ ia64*|hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc*)
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+ $rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ sco*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker. We must also pass each convience library through
+ # to the system linker between allextract/defaultextract.
+ # The C++ compiler will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library. It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+EOF
])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
-# AM_AUX_DIR_EXPAND
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
-# Copyright 2001 Free Software Foundation, Inc.
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
-# 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.
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
-# 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.
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+ _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+ _LT_AC_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+ _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+ifelse([$1],[CXX],
+[case $host_os in
+solaris*)
+ case $cc_basename in
+ CC*)
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+ ;;
+ esac
+esac
+])
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars. Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ _LT_AC_TAGVAR(compiler, $1) \
+ _LT_AC_TAGVAR(CC, $1) \
+ _LT_AC_TAGVAR(LD, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+ _LT_AC_TAGVAR(old_archive_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+ _LT_AC_TAGVAR(predep_objects, $1) \
+ _LT_AC_TAGVAR(postdep_objects, $1) \
+ _LT_AC_TAGVAR(predeps, $1) \
+ _LT_AC_TAGVAR(postdeps, $1) \
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+ _LT_AC_TAGVAR(archive_cmds, $1) \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(postinstall_cmds, $1) \
+ _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+ _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+ _LT_AC_TAGVAR(no_undefined_flag, $1) \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+ _LT_AC_TAGVAR(hardcode_automatic, $1) \
+ _LT_AC_TAGVAR(module_cmds, $1) \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(exclude_expsyms, $1) \
+ _LT_AC_TAGVAR(include_expsyms, $1); do
+
+ case $var in
+ _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(module_cmds, $1) | \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\[$]0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+ ;;
+ esac
+
+ifelse([$1], [],
+ [cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ AC_MSG_NOTICE([creating $ofile])],
+ [cfgfile="$ofile"])
+
+ cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# 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.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# 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
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+])
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDGIRSTW]]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[[BCDEGRST]]'
+ ;;
+osf*)
+ symcode='[[BCDEGQRST]]'
+ ;;
+solaris* | sysv5*)
+ symcode='[[BDRT]]'
+ ;;
+sysv4)
+ symcode='[[DFNSTU]]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if AC_TRY_EVAL(ac_compile); then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+ fi
+ else
+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ AC_MSG_RESULT(failed)
+else
+ AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ icpc* | ecpc*)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler.
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ sco*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ unixware*)
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ unicos*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+],[
+ runpath_var=
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)=
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_AC_TAGVAR(include_expsyms, $1)=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ _LT_CC_BASENAME([$compiler])
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ _LT_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[[012]]|aix4.[[012]].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ # see comment about different semantics on the GNU ld section
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ bsdi[[45]]*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ sco3.2v5*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ *)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv5*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_AC_TAGVAR(archive_cmds, $1) in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# # ifdef __CYGWIN32__
+# # define __CYGWIN__ __CYGWIN32__
+# # endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+# __hDllInstance_base = hInst;
+# return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD], [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# NOTE: This macro has been submitted for inclusion into #
+# GNU Autoconf as AC_PROG_SED. When it is available in #
+# a released version of Autoconf we should remove this #
+# macro and use it instead. #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+])
+SED=$lt_cv_path_SED
+AC_MSG_RESULT([$SED])
+])
+
+# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+ [AM_AUTOMAKE_VERSION([1.9.6])])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
@@ -376,131 +6240,55 @@ fi
# absolute PATH. The drawback is that using absolute paths prevent a
# configured tree to be moved without reconfiguration.
-# Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])
-
-AC_DEFUN([AM_AUX_DIR_EXPAND], [
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
# expand $ac_aux_dir to an absolute path
am_aux_dir=`cd $ac_aux_dir && pwd`
])
-# AM_PROG_INSTALL_SH
-# ------------------
-# Define $install_sh.
-
-# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
-AC_SUBST(install_sh)])
-
-# AM_PROG_INSTALL_STRIP
-
-# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-
-# One issue with vendor `install' (even GNU) is that you can't
-# specify the program used to strip binaries. This is especially
-# annoying in cross-compiling environments, where the build's strip
-# is unlikely to handle the host's binaries.
-# Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
-# STRIPPROG with the value of the STRIP variable (set by the user).
-AC_DEFUN([AM_PROG_INSTALL_STRIP],
-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'. However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
-if test "$cross_compiling" != no; then
- AC_CHECK_TOOL([STRIP], [strip], :)
-fi
-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# -*- Autoconf -*-
-# Copyright (C) 2003 Free Software Foundation, Inc.
+# AM_CONDITIONAL -*- Autoconf -*-
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-# serial 1
+# serial 7
-# Check whether the underlying file-system supports filenames
-# with a leading dot. For instance MS-DOS doesn't.
-AC_DEFUN([AM_SET_LEADING_DOT],
-[rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
- am__leading_dot=.
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+ $1_TRUE=
+ $1_FALSE='#'
else
- am__leading_dot=_
+ $1_TRUE='#'
+ $1_FALSE=
fi
-rmdir .tst 2>/dev/null
-AC_SUBST([am__leading_dot])])
-
-# serial 5 -*- Autoconf -*-
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+ AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
-# Copyright (C) 1999, 2000, 2001, 2002, 2003 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
+# serial 8
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4,
@@ -509,7 +6297,6 @@ AC_SUBST([am__leading_dot])])
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
-
# _AM_DEPENDENCIES(NAME)
# ----------------------
# See how the compiler implements dependency checking.
@@ -568,7 +6355,9 @@ AC_CACHE_CHECK([dependency style of $depcc],
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- : > sub/conftst$i.h
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
@@ -596,9 +6385,14 @@ AC_CACHE_CHECK([dependency style of $depcc],
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
- # (even with -Werror). So we grep stderr for any message
- # that says an option was ignored.
- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_$1_dependencies_compiler_type=$depmode
break
fi
@@ -632,8 +6426,8 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
# ------------
AC_DEFUN([AM_DEP_TRACK],
[AC_ARG_ENABLE(dependency-tracking,
-[ --disable-dependency-tracking Speeds up one-time builds
- --enable-dependency-tracking Do not reject slow dependency extractors])
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
if test "x$enable_dependency_tracking" != xno; then
am_depcomp="$ac_aux_dir/depcomp"
AMDEPBACKSLASH='\'
@@ -642,26 +6436,16 @@ AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
AC_SUBST([AMDEPBACKSLASH])
])
-# Generate code to set up dependency tracking. -*- Autoconf -*-
-
-# Copyright 1999, 2000, 2001, 2002 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.
+# Generate code to set up dependency tracking. -*- Autoconf -*-
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-#serial 2
+#serial 3
# _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------
@@ -680,27 +6464,21 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
else
continue
fi
- grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
- # Extract the definition of DEP_FILES from the Makefile without
- # running `make'.
- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n -e '/^U = / s///p' < "$mf"`
- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
- # We invoke sed twice because it is the simplest approach to
- # changing $(DEPDIR) to its actual value in the expansion.
- for file in `sed -n -e '
- /^DEP_FILES = .*\\\\$/ {
- s/^DEP_FILES = //
- :loop
- s/\\\\$//
- p
- n
- /\\\\$/ b loop
- p
- }
- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
@@ -726,27 +6504,177 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
])
-# Check to see how 'make' treats includes. -*- Autoconf -*-
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+# serial 8
-# 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.
+# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
-# 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.
+# Do all the work for Automake. -*- Autoconf -*-
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 12
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.58])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+ test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
# serial 2
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 3
+
# AM_MAKE_INCLUDE()
# -----------------
# Check to see how make treats includes.
@@ -789,47 +6717,311 @@ AC_MSG_RESULT([$_am_result])
rm -f confinc confmf
])
-# AM_CONDITIONAL -*- Autoconf -*-
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
-# Copyright 1997, 2000, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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 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.
+# serial 4
-# 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.
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
-# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
-# serial 5
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
-AC_PREREQ(2.52)
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
-# AM_CONDITIONAL(NAME, SHELL-CONDITION)
-# -------------------------------------
-# Define a conditional.
-AC_DEFUN([AM_CONDITIONAL],
-[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
-AC_SUBST([$1_TRUE])
-AC_SUBST([$1_FALSE])
-if $2; then
- $1_TRUE=
- $1_FALSE='#'
+# AM_PROG_MKDIR_P
+# ---------------
+# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+#
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake. There are at least two reasons why we must not
+# use `-m 0755':
+# - it causes special bits like SGID to be ignored,
+# - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out. Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
else
- $1_TRUE='#'
- $1_FALSE=
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
fi
-AC_CONFIG_COMMANDS_PRE(
-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
- AC_MSG_ERROR([conditional "$1" was never defined.
-Usually this means the macro was only invoked conditionally.])
-fi])])
+AC_SUBST([mkdir_p])])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file 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.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+m4_include([libopts/m4/libopts.m4])
diff --git a/contrib/ntp/sntp/autogen-version.def b/contrib/ntp/sntp/autogen-version.def
new file mode 100644
index 0000000..8943983
--- /dev/null
+++ b/contrib/ntp/sntp/autogen-version.def
@@ -0,0 +1,2 @@
+#assert (version-compare >= autogen-version "5.9.1")
+guard-option-names;
diff --git a/contrib/ntp/sntp/bincheck.mf b/contrib/ntp/sntp/bincheck.mf
new file mode 100644
index 0000000..c67827d
--- /dev/null
+++ b/contrib/ntp/sntp/bincheck.mf
@@ -0,0 +1,15 @@
+# we traditionally installed software in bindir, while it should have gone
+# in sbindir. Now that we offer a choice, look in the "other" installation
+# subdir to warn folks if there is another version there.
+
+install-exec-hook:
+ @case ${BINSUBDIR} in \
+ bin) ODIR=${exec_prefix}/sbin ;; \
+ sbin) ODIR=${exec_prefix}/bin ;; \
+ esac; \
+ test -z "${bin_PROGRAMS}${bin_SCRIPTS}" \
+ || for i in ${bin_PROGRAMS} ${bin_SCRIPTS} " "; do \
+ test ! -f $$ODIR/$$i || echo "*** $$i is also in $$ODIR!"; \
+ done
+
+#
diff --git a/contrib/ntp/sntp/compile b/contrib/ntp/sntp/compile
new file mode 100755
index 0000000..1b1d232
--- /dev/null
+++ b/contrib/ntp/sntp/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 <tromey@cygnus.com>.
+#
+# 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 <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+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 <bug-automake@gnu.org>.
+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/contrib/ntp/sntp/config.guess b/contrib/ntp/sntp/config.guess
index 0e30d56..917bbc5 100755
--- a/contrib/ntp/sntp/config.guess
+++ b/contrib/ntp/sntp/config.guess
@@ -1,9 +1,9 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-timestamp='2003-07-02'
+timestamp='2005-07-08'
# 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
@@ -17,13 +17,15 @@ timestamp='2003-07-02'
#
# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# 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 <per@bothner.com>.
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
@@ -53,7 +55,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -66,11 +68,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -123,7 +125,7 @@ case $CC_FOR_BUILD,$HOST_CC,$CC in
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
-esac ;'
+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)
@@ -196,50 +198,29 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- macppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvmeppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- pmax:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mipseb-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- wgrisc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ 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 ;;
+ macppc:MirBSD:*:*)
+ echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
alpha:OSF1:*:*)
- if test $UNAME_RELEASE = "V4.0"; then
+ case $UNAME_RELEASE in
+ *4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
+ ;;
+ *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
@@ -277,42 +258,49 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
"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/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
- Alpha*:OpenVMS:*:*)
- echo alpha-hp-vms
- exit 0 ;;
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
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 0 ;;
+ exit ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
- exit 0 ;;
+ exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
- exit 0;;
+ exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
+ exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
+ exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
- exit 0 ;;
+ 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 0;;
+ 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 0;;
+ 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
@@ -320,32 +308,32 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
else
echo pyramid-pyramid-bsd
fi
- exit 0 ;;
+ exit ;;
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
- exit 0 ;;
+ exit ;;
DRS?6000:unix:4.0:6*)
echo sparc-icl-nx6
- exit 0 ;;
- DRS?6000:UNIX_SV:4.2*:7*)
+ 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 0 ;;
+ sparc) echo sparc-icl-nx7; exit ;;
esac ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
i86pc:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
Series*|S4*)
@@ -354,10 +342,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
+ exit ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
+ 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
@@ -369,10 +357,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo sparc-sun-sunos${UNAME_RELEASE}
;;
esac
- exit 0 ;;
+ exit ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
+ 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
@@ -383,37 +371,40 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
echo m68k-milan-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
echo m68k-hades-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
- exit 0 ;;
+ exit ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -437,32 +428,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
exit (-1);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c \
- && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && exit 0
+ $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 0 ;;
+ exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
- exit 0 ;;
+ exit ;;
Motorola:*:4.3:PL8-*)
echo powerpc-harris-powermax
- exit 0 ;;
+ exit ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
echo powerpc-harris-powermax
- exit 0 ;;
+ exit ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
- exit 0 ;;
+ exit ;;
m88k:CX/UX:7*:*)
echo m88k-harris-cxux7
- exit 0 ;;
+ exit ;;
m88k:*:4*:R4*)
echo m88k-motorola-sysv4
- exit 0 ;;
+ exit ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
@@ -478,29 +470,29 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit 0 ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
- exit 0 ;;
+ exit ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
echo m88k-tektronix-sysv3
- exit 0 ;;
+ exit ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
echo m68k-tektronix-bsd
- exit 0 ;;
+ exit ;;
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
+ 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 0 ;; # Note that: echo "'`uname -s`'" gives '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 0 ;;
+ exit ;;
ia64:AIX:*:*)
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
@@ -508,7 +500,7 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
eval $set_cc_for_build
@@ -523,14 +515,18 @@ EOF
exit(0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
- echo rs6000-ibm-aix3.2.5
+ 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 0 ;;
+ exit ;;
*:AIX:*:[45])
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
@@ -544,28 +540,28 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
- exit 0 ;;
+ exit ;;
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
- exit 0 ;;
+ exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
+ exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
- exit 0 ;;
+ exit ;;
DPX/2?00:B.O.S.:*:*)
echo m68k-bull-sysv3
- exit 0 ;;
+ exit ;;
9000/[34]??:4.3bsd:1.*:*)
echo m68k-hp-bsd
- exit 0 ;;
+ exit ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
- exit 0 ;;
+ exit ;;
9000/[34678]??:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
case "${UNAME_MACHINE}" in
@@ -627,9 +623,19 @@ EOF
esac
if [ ${HP_ARCH} = "hppa2.0w" ]
then
- # avoid double evaluation of $set_cc_for_build
- test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
- if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+ 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 __LP64__ >/dev/null
then
HP_ARCH="hppa2.0w"
else
@@ -637,11 +643,11 @@ EOF
fi
fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
ia64:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ia64-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
3050*:HI-UX:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -669,153 +675,166 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
- exit 0 ;;
+ exit ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
echo hppa1.1-hp-bsd
- exit 0 ;;
+ exit ;;
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
- exit 0 ;;
+ exit ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
- exit 0 ;;
+ exit ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
- exit 0 ;;
+ exit ;;
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
- exit 0 ;;
+ exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
- exit 0 ;;
+ exit ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
- exit 0 ;;
+ exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*T3E:*:*:*)
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
*:UNICOS/mp:*:*)
- echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ 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 0 ;;
+ 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 0 ;;
+ exit ;;
sparc*:BSD/OS:*:*)
echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:BSD/OS:*:*)
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
- *:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
- # Determine whether the default compiler uses glibc.
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #include <features.h>
- #if __GLIBC__ >= 2
- LIBC=gnu
- #else
- LIBC=
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- # GNU/FreeBSD systems have a "k" prefix to indicate we are using
- # FreeBSD's kernel, but not the complete OS.
- case ${LIBC} in gnu) kernel_only='k' ;; esac
- echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
- exit 0 ;;
+ exit ;;
+ *:FreeBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
+ exit ;;
i*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
- exit 0 ;;
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
- exit 0 ;;
+ exit ;;
x86:Interix*:[34]*)
echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
- exit 0 ;;
+ exit ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
+ exit ;;
+ amd64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin
- exit 0 ;;
+ exit ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
*:GNU:*:*)
+ # the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
arm*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
cris:Linux:*:*)
echo cris-axis-linux-gnu
- exit 0 ;;
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
mips:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -833,7 +852,7 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
mips64:Linux:*:*)
eval $set_cc_for_build
@@ -852,14 +871,14 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
@@ -873,7 +892,7 @@ EOF
objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit 0 ;;
+ exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
@@ -881,25 +900,25 @@ EOF
PA8*) echo hppa2.0-unknown-linux-gnu ;;
*) echo hppa-unknown-linux-gnu ;;
esac
- exit 0 ;;
+ exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
echo hppa64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
- exit 0 ;;
+ exit ;;
sh64*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
# first see if it will tell us. cd to the root directory to prevent
@@ -917,15 +936,15 @@ EOF
;;
a.out-i386-linux)
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0 ;;
+ exit ;;
coff-i386)
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit 0 ;;
+ exit ;;
"")
# Either a pre-BFD a.out linker (linux-gnuoldld) or
# one that does not give us useful --help.
echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit 0 ;;
+ exit ;;
esac
# Determine whether the default compiler is a.out or elf
eval $set_cc_for_build
@@ -948,17 +967,23 @@ EOF
LIBC=gnuaout
#endif
#endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; 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 0 ;;
+ 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...
@@ -966,24 +991,27 @@ EOF
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
i*86:XTS-300:*:STOP)
echo ${UNAME_MACHINE}-unknown-stop
- exit 0 ;;
+ exit ;;
i*86:atheos:*:*)
echo ${UNAME_MACHINE}-unknown-atheos
- exit 0 ;;
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
i*86:*DOS:*:*)
echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
+ 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
@@ -991,15 +1019,16 @@ EOF
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
fi
- exit 0 ;;
- i*86:*:5:[78]*)
+ 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 0 ;;
+ exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
@@ -1017,73 +1046,73 @@ EOF
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
- exit 0 ;;
+ 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 i386.
echo i386-pc-msdosdjgpp
- exit 0 ;;
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
- exit 0 ;;
+ exit ;;
paragon:*:*:*)
echo i860-intel-osf1
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
echo m68010-convergent-sysv
- exit 0 ;;
+ exit ;;
mc68k:UNIX:SYSTEM5:3.51m)
echo m68k-convergent-sysv
- exit 0 ;;
+ exit ;;
M680?0:D-NIX:5.3:*)
echo m68k-diab-dnix
- exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*: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)
+ 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 0
+ && { 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 0 ;;
+ && { 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 0 ;;
+ && { echo i486-ncr-sysv4; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
- exit 0 ;;
+ exit ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
@@ -1091,68 +1120,73 @@ EOF
else
echo ns32k-sni-sysv
fi
- exit 0 ;;
+ exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
- exit 0 ;;
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
- exit 0 ;;
+ exit ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
- exit 0 ;;
+ 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 0 ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
- exit 0 ;;
+ exit ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
echo powerpc-apple-beos
- exit 0 ;;
+ exit ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
- exit 0 ;;
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Rhapsody:*:*)
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Darwin:*:*)
- case `uname -p` in
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
*86) UNAME_PROCESSOR=i686 ;;
- powerpc) UNAME_PROCESSOR=powerpc ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = "x86"; then
@@ -1160,22 +1194,25 @@ EOF
UNAME_MACHINE=pc
fi
echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
- exit 0 ;;
- NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
- exit 0 ;;
+ exit ;;
BS2000:POSIX*:*:*)
echo bs2000-siemens-sysv
- exit 0 ;;
+ exit ;;
DS/*:UNIX_System_V:*:*)
echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
@@ -1186,28 +1223,44 @@ EOF
UNAME_MACHINE="$cputype"
fi
echo ${UNAME_MACHINE}-unknown-plan9
- exit 0 ;;
+ exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
- exit 0 ;;
+ exit ;;
*:TENEX:*:*)
echo pdp10-unknown-tenex
- exit 0 ;;
+ exit ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
echo pdp10-dec-tops20
- exit 0 ;;
+ exit ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
echo pdp10-xkl-tops20
- exit 0 ;;
+ exit ;;
*:TOPS-20:*:*)
echo pdp10-unknown-tops20
- exit 0 ;;
+ exit ;;
*:ITS:*:*)
echo pdp10-unknown-its
- exit 0 ;;
+ exit ;;
SEI:*:*:SEIUX)
echo mips-sei-seiux${UNAME_RELEASE}
- exit 0 ;;
+ 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 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1239,7 +1292,7 @@ main ()
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
+ printf ("arm-acorn-riscix\n"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
@@ -1328,11 +1381,12 @@ main ()
}
EOF
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+$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 0; }
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
# Convex versions that predate uname can use getsysinfo(1)
@@ -1341,22 +1395,22 @@ then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
c34*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
c38*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
c4*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
esac
fi
@@ -1367,7 +1421,9 @@ This script, last modified $timestamp, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
- ftp://ftp.gnu.org/pub/gnu/config/
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
If the version you run ($0) is already up to date, please
send the following data and any information you think might be
diff --git a/contrib/ntp/sntp/config.h.in b/contrib/ntp/sntp/config.h.in
new file mode 100644
index 0000000..067a3de
--- /dev/null
+++ b/contrib/ntp/sntp/config.h.in
@@ -0,0 +1,312 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* fopen(3) accepts a 'b' in the mode flag */
+#undef FOPEN_BINARY_FLAG
+
+/* fopen(3) accepts a 't' in the mode flag */
+#undef FOPEN_TEXT_FLAG
+
+/* Define to 1 if you have the `alarm' function. */
+#undef HAVE_ALARM
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#undef HAVE_ARPA_INET_H
+
+/* Define to 1 if you have the `canonicalize_file_name' function. */
+#undef HAVE_CANONICALIZE_FILE_NAME
+
+/* Define this if /dev/zero is readable device */
+#undef HAVE_DEV_ZERO
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+#undef HAVE_DOPRNT
+
+/* Define to 1 if you have the <errno.h> header file. */
+#undef HAVE_ERRNO_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the <float.h> header file. */
+#undef HAVE_FLOAT_H
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the `inet_ntoa' function. */
+#undef HAVE_INET_NTOA
+
+/* Define to 1 if the system has the type `int16_t'. */
+#undef HAVE_INT16_T
+
+/* Define to 1 if the system has the type `int32_t'. */
+#undef HAVE_INT32_T
+
+/* Define to 1 if the system has the type `int8_t'. */
+#undef HAVE_INT8_T
+
+/* Define to 1 if the system has the type `intptr_t'. */
+#undef HAVE_INTPTR_T
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `gen' library (-lgen). */
+#undef HAVE_LIBGEN
+
+/* Define to 1 if you have the <libgen.h> header file. */
+#undef HAVE_LIBGEN_H
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define to 1 if you have the `nsl' library (-lnsl). */
+#undef HAVE_LIBNSL
+
+/* Define to 1 if you have the `socket' library (-lsocket). */
+#undef HAVE_LIBSOCKET
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `memset' function. */
+#undef HAVE_MEMSET
+
+/* Define to 1 if you have the `mmap' function. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#undef HAVE_NETDB_H
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#undef HAVE_NETINET_IN_H
+
+/* Define this if pathfind(3) works */
+#undef HAVE_PATHFIND
+
+/* Define this if we have a functional realpath(3C) */
+#undef HAVE_REALPATH
+
+/* Define to 1 if you have the <setjmp.h> header file. */
+#undef HAVE_SETJMP_H
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if you have the `socket' function. */
+#undef HAVE_SOCKET
+
+/* Define to 1 if you have the `sqrt' function. */
+#undef HAVE_SQRT
+
+/* Does struct sockaddr_storage have ss_family? */
+#undef HAVE_SS_FAMILY_IN_SS
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strchr' function. */
+#undef HAVE_STRCHR
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define this if strftime() works */
+#undef HAVE_STRFTIME
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strrchr' function. */
+#undef HAVE_STRRCHR
+
+/* Define to 1 if you have the <sysexits.h> header file. */
+#undef HAVE_SYSEXITS_H
+
+/* Define to 1 if you have the <syslog.h> header file. */
+#undef HAVE_SYSLOG_H
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/limits.h> header file. */
+#undef HAVE_SYS_LIMITS_H
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+ */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#undef HAVE_SYS_POLL_H
+
+/* Define to 1 if you have the <sys/procset.h> header file. */
+#undef HAVE_SYS_PROCSET_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/stropts.h> header file. */
+#undef HAVE_SYS_STROPTS_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/un.h> header file. */
+#undef HAVE_SYS_UN_H
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if the system has the type `uint16_t'. */
+#undef HAVE_UINT16_T
+
+/* Define to 1 if the system has the type `uint32_t'. */
+#undef HAVE_UINT32_T
+
+/* Define to 1 if the system has the type `uint8_t'. */
+#undef HAVE_UINT8_T
+
+/* Define to 1 if the system has the type `uintptr_t'. */
+#undef HAVE_UINTPTR_T
+
+/* Define to 1 if the system has the type `uint_t'. */
+#undef HAVE_UINT_T
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
+
+/* Define to 1 if you have the <values.h> header file. */
+#undef HAVE_VALUES_H
+
+/* Define to 1 if you have the <varargs.h> header file. */
+#undef HAVE_VARARGS_H
+
+/* Define to 1 if you have the `vprintf' function. */
+#undef HAVE_VPRINTF
+
+/* Does struct sockaddr_storage have __ss_family? */
+#undef HAVE___SS_FAMILY_IN_SS
+
+/* Define this if optional arguments are disallowed */
+#undef NO_OPTIONAL_OPT_ARGS
+
+/* Should we avoid #warning on option name collisions? */
+#undef NO_OPTION_NAME_WARNINGS
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if the C compiler supports function prototypes. */
+#undef PROTOTYPES
+
+/* name of regex header file */
+#undef REGEX_HEADER
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
+
+/* Define to 1 if the `setvbuf' function takes the buffering type as its
+ second argument and the buffer pointer as the third, as on System V before
+ release 3. */
+#undef SETVBUF_REVERSED
+
+/* The size of a `char*', as computed by sizeof. */
+#undef SIZEOF_CHARP
+
+/* The size of a `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of a `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of a `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Version number of package */
+#undef VERSION
+
+/* Define this if a working libregex can be found */
+#undef WITH_LIBREGEX
+
+/* Define like PROTOTYPES; this can be used by system headers. */
+#undef __PROTOTYPES
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+#undef size_t
+
+/* normalize ss_family access */
+#undef ss_family
+
+/* normalize ss_len access */
+#undef ss_len
+
+/* Alternate uintptr_t for systems without it. */
+#undef uintptr_t
diff --git a/contrib/ntp/sntp/config.sub b/contrib/ntp/sntp/config.sub
index c8a01be..1c366df 100755
--- a/contrib/ntp/sntp/config.sub
+++ b/contrib/ntp/sntp/config.sub
@@ -1,9 +1,9 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-timestamp='2003-07-04'
+timestamp='2005-07-08'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -21,14 +21,15 @@ timestamp='2003-07-04'
#
# 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., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
+# 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 <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
#
@@ -70,7 +71,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -83,11 +84,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -99,7 +100,7 @@ while test $# -gt 0 ; do
*local*)
# First pass through any local machine types.
echo $1
- exit 0;;
+ exit ;;
* )
break ;;
@@ -118,7 +119,8 @@ esac
# 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* | kfreebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+ kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -144,7 +146,7 @@ case $os in
-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)
+ -apple | -axis | -knuth | -cray)
os=
basic_machine=$1
;;
@@ -228,14 +230,16 @@ case $basic_machine in
| 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 \
+ | bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
| fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
- | ip2k \
- | m32r | m68000 | m68k | m88k | mcore \
+ | ip2k | iq2000 \
+ | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -244,30 +248,37 @@ case $basic_machine in
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
+ | ms1 \
| msp430 \
| ns16k | ns32k \
- | openrisc | or32 \
+ | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
- | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+ | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b \
| strongarm \
| tahoe | thumb | tic4x | tic80 | tron \
| v850 | v850e \
| we32k \
- | x86 | xscale | xstormy16 | xtensa \
+ | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k)
basic_machine=$basic_machine-unknown
;;
+ m32c)
+ basic_machine=$basic_machine-unknown
+ ;;
m6811 | m68hc11 | m6812 | m68hc12)
# Motorola 68HC11/12.
basic_machine=$basic_machine-unknown
@@ -295,19 +306,19 @@ case $basic_machine in
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* \
- | bs2000-* \
+ | bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
- | clipper-* | cydra-* \
+ | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* \
- | m32r-* \
+ | ip2k-* | iq2000-* \
+ | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | mcore-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -316,33 +327,40 @@ case $basic_machine in
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | ms1-* \
| msp430-* \
- | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
- | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
- | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
- | xtensa-* \
+ | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa-* \
| ymp-* \
| z8k-*)
;;
+ m32c-*)
+ ;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd)
@@ -359,6 +377,9 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
adobe68k)
basic_machine=m68010-adobe
os=-scout
@@ -376,6 +397,9 @@ case $basic_machine in
amd64)
basic_machine=x86_64-pc
;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
amdahl)
basic_machine=580-amdahl
os=-sysv
@@ -435,12 +459,27 @@ case $basic_machine in
basic_machine=j90-cray
os=-unicos
;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16c)
+ basic_machine=cr16c-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
;;
@@ -463,6 +502,10 @@ case $basic_machine in
basic_machine=m88k-motorola
os=-sysv3
;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
@@ -641,10 +684,6 @@ case $basic_machine in
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
- mmix*)
- basic_machine=mmix-knuth
- os=-mmixware
- ;;
monitor)
basic_machine=m68k-rom68k
os=-coff
@@ -725,10 +764,6 @@ case $basic_machine in
np1)
basic_machine=np1-gould
;;
- nv1)
- basic_machine=nv1-cray
- os=-unicosmp
- ;;
nsr-tandem)
basic_machine=nsr-tandem
;;
@@ -736,9 +771,12 @@ case $basic_machine in
basic_machine=hppa1.1-oki
os=-proelf
;;
- or32 | or32-*)
+ openrisc | openrisc-*)
basic_machine=or32-unknown
- os=-coff
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
@@ -960,6 +998,10 @@ case $basic_machine in
tower | tower-32)
basic_machine=m68k-ncr
;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
udi29k)
basic_machine=a29k-amd
os=-udi
@@ -1003,6 +1045,10 @@ case $basic_machine in
basic_machine=hppa1.1-winbond
os=-proelf
;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
xps | xps100)
basic_machine=xps100-honeywell
;;
@@ -1033,6 +1079,9 @@ case $basic_machine in
romp)
basic_machine=romp-ibm
;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
rs6000)
basic_machine=rs6000-ibm
;;
@@ -1049,13 +1098,10 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
- sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparc | sparcv9 | sparcv9b)
+ sparc | sparcv8 | sparcv9 | sparcv9b)
basic_machine=sparc-sun
;;
cydra)
@@ -1128,19 +1174,21 @@ case $os in
| -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+ | -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* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -mingw32* | -linux-gnu* | -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*)
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1158,12 +1206,15 @@ case $os in
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -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|'`
;;
@@ -1176,6 +1227,9 @@ case $os in
-opened*)
os=-openedition
;;
+ -os400*)
+ os=-os400
+ ;;
-wince*)
os=-wince
;;
@@ -1197,6 +1251,9 @@ case $os in
-atheos*)
os=-atheos
;;
+ -syllable*)
+ os=-syllable
+ ;;
-386bsd)
os=-bsd
;;
@@ -1219,6 +1276,9 @@ case $os in
-sinix*)
os=-sysv4
;;
+ -tpf*)
+ os=-tpf
+ ;;
-triton*)
os=-sysv3
;;
@@ -1255,6 +1315,9 @@ case $os in
-kaos*)
os=-kaos
;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
-none)
;;
*)
@@ -1332,9 +1395,15 @@ case $basic_machine in
*-be)
os=-beos
;;
+ *-haiku)
+ os=-haiku
+ ;;
*-ibm)
os=-aix
;;
+ *-knuth)
+ os=-mmixware
+ ;;
*-wec)
os=-proelf
;;
@@ -1467,9 +1536,15 @@ case $basic_machine in
-mvs* | -opened*)
vendor=ibm
;;
+ -os400*)
+ vendor=ibm
+ ;;
-ptx*)
vendor=sequent
;;
+ -tpf*)
+ vendor=ibm
+ ;;
-vxsim* | -vxworks* | -windiss*)
vendor=wrs
;;
@@ -1494,7 +1569,7 @@ case $basic_machine in
esac
echo $basic_machine$os
-exit 0
+exit
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/contrib/ntp/sntp/configure b/contrib/ntp/sntp/configure
index 33f5fe8..fd31384 100755
--- a/contrib/ntp/sntp/configure
+++ b/contrib/ntp/sntp/configure
@@ -1,9 +1,8 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.57.
+# Generated by GNU Autoconf 2.59.
#
-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-# Free Software Foundation, Inc.
+# Copyright (C) 2003 Free Software Foundation, Inc.
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
## --------------------- ##
@@ -20,9 +19,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
set -o posix
fi
+DUALCASE=1; export DUALCASE # for MKS sh
# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
as_unset=unset
else
as_unset=false
@@ -41,7 +41,7 @@ for as_var in \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
LC_TELEPHONE LC_TIME
do
- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
eval $as_var=C; export $as_var
else
$as_unset $as_var
@@ -218,16 +218,17 @@ rm -f conf$$ conf$$.exe conf$$.file
if mkdir -p . 2>/dev/null; then
as_mkdir_p=:
else
+ test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
as_executable_p="test -f"
# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
# IFS
@@ -240,6 +241,160 @@ IFS=" $as_nl"
$as_unset CDPATH
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit 0
+fi
+
+# 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
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "$0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
# Name of the host.
# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
# so uname gets run too.
@@ -309,7 +464,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBOPTS_DIR INSTALL_LIBOPTS_TRUE INSTALL_LIBOPTS_FALSE NEED_LIBOPTS_TRUE NEED_LIBOPTS_FALSE LIBOPTS_LDADD LIBOPTS_CFLAGS LIBOBJS BINSUBDIR LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -668,7 +823,7 @@ done
# Be sure to have absolute paths.
for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
- localstatedir libdir includedir oldincludedir infodir mandir
+ localstatedir libdir includedir oldincludedir infodir mandir
do
eval ac_val=$`echo $ac_var`
case $ac_val in
@@ -708,10 +863,10 @@ if test -z "$srcdir"; then
# Try the directory containing this script, then its parent.
ac_confdir=`(dirname "$0") 2>/dev/null ||
$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$0" : 'X\(//\)[^/]' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$0" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -770,6 +925,26 @@ ac_env_CPP_set=${CPP+set}
ac_env_CPP_value=$CPP
ac_cv_env_CPP_set=${CPP+set}
ac_cv_env_CPP_value=$CPP
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
#
# Report the --help message.
@@ -803,9 +978,9 @@ _ACEOF
cat <<_ACEOF
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
+ [$ac_default_prefix]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
+ [PREFIX]
By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
@@ -839,7 +1014,6 @@ Program names:
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
- --target=TARGET configure for building compilers for TARGET [HOST]
_ACEOF
fi
@@ -850,8 +1024,34 @@ if test -n "$ac_init_help"; then
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --disable-dependency-tracking Speeds up one-time builds
- --enable-dependency-tracking Do not reject slow dependency extractors
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --enable-shared[=PKGS]
+ build shared libraries [default=no]
+ --enable-static[=PKGS]
+ build static libraries [default=yes]
+ --enable-fast-install[=PKGS]
+ optimize for fast installation [default=yes]
+ --disable-libtool-lock avoid locking (might break parallel builds)
+ --enable-local-libopts Force using the supplied libopts tearoff code
+ --disable-libopts-install
+ Do not install libopts with client installation
+ --disable-optional-args not wanting optional option args
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-tags[=TAGS]
+ include additional configurations [automatic]
+ --with-autoopts-config specify the config-info script
+ --with-regex-header a reg expr header is specified
+ --with-libregex libregex installation prefix
+ --with-libregex-cflags libregex compile flags
+ --with-libregex-libs libregex link command arguments
+ --with-binsubdir bin ={bin,sbin}
Some influential environment variables:
CC C compiler command
@@ -861,6 +1061,11 @@ Some influential environment variables:
CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
headers in a nonstandard directory <include dir>
CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+ F77 Fortran 77 compiler command
+ FFLAGS Fortran 77 compiler flags
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -898,12 +1103,45 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
cd $ac_dir
# Check for guested configure; otherwise get Cygnus style configure.
@@ -914,7 +1152,7 @@ ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
echo
$SHELL $ac_srcdir/configure --help=recursive
elif test -f $ac_srcdir/configure.ac ||
- test -f $ac_srcdir/configure.in; then
+ test -f $ac_srcdir/configure.in; then
echo
$ac_configure --help
else
@@ -928,8 +1166,7 @@ test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-Free Software Foundation, Inc.
+Copyright (C) 2003 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -941,7 +1178,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
-generated by GNU Autoconf 2.57. Invocation command line was
+generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -1018,19 +1255,19 @@ do
2)
ac_configure_args1="$ac_configure_args1 '$ac_arg'"
if test $ac_must_keep_next = true; then
- ac_must_keep_next=false # Got value, back to normal.
+ ac_must_keep_next=false # Got value, back to normal.
else
- case $ac_arg in
- *=* | --config-cache | -C | -disable-* | --disable-* \
- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
- | -with-* | --with-* | -without-* | --without-* | --x)
- case "$ac_configure_args0 " in
- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
- esac
- ;;
- -* ) ac_must_keep_next=true ;;
- esac
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
fi
ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
# Get rid of the leading space.
@@ -1064,12 +1301,12 @@ _ASBOX
case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
*ac_space=\ *)
sed -n \
- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
;;
*)
sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
;;
esac;
}
@@ -1098,7 +1335,7 @@ _ASBOX
for ac_var in $ac_subst_files
do
eval ac_val=$`echo $ac_var`
- echo "$ac_var='"'"'$ac_val'"'"'"
+ echo "$ac_var='"'"'$ac_val'"'"'"
done | sort
echo
fi
@@ -1117,7 +1354,7 @@ _ASBOX
echo "$as_me: caught signal $ac_signal"
echo "$as_me: exit $exit_status"
} >&5
- rm -f core core.* *.core &&
+ rm -f core *.core &&
rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
exit $exit_status
' 0
@@ -1197,7 +1434,7 @@ fi
# value.
ac_cache_corrupted=false
for ac_var in `(set) 2>&1 |
- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
eval ac_old_set=\$ac_cv_env_${ac_var}_set
eval ac_new_set=\$ac_env_${ac_var}_set
eval ac_old_val="\$ac_cv_env_${ac_var}_value"
@@ -1214,13 +1451,13 @@ echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
,);;
*)
if test "x$ac_old_val" != "x$ac_new_val"; then
- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
echo "$as_me: current value: $ac_new_val" >&2;}
- ac_cache_corrupted=:
+ ac_cache_corrupted=:
fi;;
esac
# Pass precious variables to config.status.
@@ -1268,7 +1505,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-am__api_version="1.7"
+am__api_version="1.9"
ac_aux_dir=
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
if test -f $ac_dir/install-sh; then
@@ -1305,6 +1542,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
@@ -1321,6 +1559,7 @@ do
case $as_dir/ in
./ | .// | /cC/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
/usr/ucb/* ) ;;
*)
# OSF1 and SCO ODT 3.0 have their own names for install.
@@ -1328,20 +1567,20 @@ case $as_dir/ in
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
- if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
- # program-specific install script used by HP pwplus--don't use.
- :
- else
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
- break 3
- fi
- fi
+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
done
done
;;
@@ -1429,7 +1668,6 @@ _ACEOF
program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
rm conftest.sed
-
# expand $ac_aux_dir to an absolute path
am_aux_dir=`cd $ac_aux_dir && pwd`
@@ -1443,6 +1681,39 @@ else
echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
fi
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ # We used to keeping the `.' as first argument, in order to
+ # allow $(mkdir_p) to be used without argument. As in
+ # $(mkdir_p) $(somedir)
+ # where $(somedir) is conditionally defined. However this is wrong
+ # for two reasons:
+ # 1. if the package is installed by a user who cannot write `.'
+ # make install will fail,
+ # 2. the above comment should most certainly read
+ # $(mkdir_p) $(DESTDIR)$(somedir)
+ # so it does not work when $(somedir) is undefined and
+ # $(DESTDIR) is not.
+ # To support the latter case, we have to write
+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+ # so the `.' trick is pointless.
+ mkdir_p='mkdir -p --'
+else
+ # On NextStep and OpenStep, the `mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because `.' already
+ # exists.
+ for d in ./-p ./--version;
+ do
+ test -d $d && rmdir $d
+ done
+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+ if test -f "$ac_aux_dir/mkinstalldirs"; then
+ mkdir_p='$(mkinstalldirs)'
+ else
+ mkdir_p='$(install_sh) -d'
+ fi
+fi
+
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -1485,7 +1756,7 @@ done
echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
@@ -1521,7 +1792,7 @@ else
fi
rmdir .tst 2>/dev/null
- # test to see if srcdir already configured
+# test to see if srcdir already configured
if test "`cd $srcdir && pwd`" != "`pwd`" &&
test -f $srcdir/config.status; then
{ { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
@@ -1569,9 +1840,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
install_sh=${install_sh-"$am_aux_dir/install-sh"}
# Installed binaries are usually stripped using `strip' when the user
@@ -1664,6 +1932,13 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
# We need awk for the "check" target. The system "awk" is bad on
# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
@@ -1722,34 +1997,8 @@ host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$as_me:$LINENO: checking target system type" >&5
-echo $ECHO_N "checking target system type... $ECHO_C" >&6
-if test "${ac_cv_target+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_target_alias=$target_alias
-test "x$ac_cv_target_alias" = "x" &&
- ac_cv_target_alias=$ac_cv_host_alias
-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
- { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_target" >&5
-echo "${ECHO_T}$ac_cv_target" >&6
-target=$ac_cv_target
-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
+ ac_config_headers="$ac_config_headers config.h"
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
- test "$program_prefix$program_suffix$program_transform_name" = \
- NONENONEs,x,x, &&
- program_prefix=${target_alias}-
# Checks for programs.
ac_ext=c
@@ -2088,7 +2337,6 @@ ac_compiler=`set X $ac_compile; echo $2`
(exit $ac_status); }
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2108,8 +2356,8 @@ ac_clean_files="$ac_clean_files a.out a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-echo "$as_me:$LINENO: checking for C compiler default output" >&5
-echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
(eval $ac_link_default) 2>&5
@@ -2129,23 +2377,23 @@ do
test -f "$ac_file" || continue
case $ac_file in
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
- ;;
+ ;;
conftest.$ac_ext )
- # This is the source file.
- ;;
+ # This is the source file.
+ ;;
[ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
*.* )
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- # FIXME: I believe we export ac_cv_exeext for Libtool,
- # but it would be cool to find out if it's true. Does anybody
- # maintain Libtool? --akim.
- export ac_cv_exeext
- break;;
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool,
+ # but it would be cool to find out if it's true. Does anybody
+ # maintain Libtool? --akim.
+ export ac_cv_exeext
+ break;;
* )
- break;;
+ break;;
esac
done
else
@@ -2219,8 +2467,8 @@ for ac_file in conftest.exe conftest conftest.*; do
case $ac_file in
*.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
*.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- export ac_cv_exeext
- break;;
+ export ac_cv_exeext
+ break;;
* ) break;;
esac
done
@@ -2245,7 +2493,6 @@ if test "${ac_cv_objext+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2296,7 +2543,6 @@ if test "${ac_cv_c_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2316,11 +2562,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2333,7 +2589,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_compiler_gnu=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
@@ -2349,7 +2605,6 @@ if test "${ac_cv_prog_cc_g+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2366,11 +2621,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2383,7 +2648,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_prog_cc_g=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
@@ -2410,7 +2675,6 @@ else
ac_cv_prog_cc_stdc=no
ac_save_CC=$CC
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2438,6 +2702,16 @@ static char *f (char * (*g) (char **, int), char **p, ...)
va_end (v);
return s;
}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std1 is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std1. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
int test (int i, double x);
struct s1 {int (*f) (int a);};
struct s2 {int (*f) (double a);};
@@ -2464,11 +2738,21 @@ do
CC="$ac_save_CC $ac_arg"
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2481,7 +2765,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext
+rm -f conftest.err conftest.$ac_objext
done
rm -f conftest.$ac_ext conftest.$ac_objext
CC=$ac_save_CC
@@ -2509,19 +2793,28 @@ cat >conftest.$ac_ext <<_ACEOF
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
for ac_declaration in \
- ''\
- '#include <stdlib.h>' \
+ '' \
'extern "C" void std::exit (int) throw (); using std::exit;' \
'extern "C" void std::exit (int); using std::exit;' \
'extern "C" void exit (int) throw ();' \
@@ -2529,14 +2822,13 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
'void exit (int);'
do
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <stdlib.h>
$ac_declaration
+#include <stdlib.h>
int
main ()
{
@@ -2547,11 +2839,21 @@ exit (42);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2564,9 +2866,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
continue
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2583,11 +2884,21 @@ exit (42);
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -2599,7 +2910,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
done
rm -f conftest*
if test -n "$ac_declaration"; then
@@ -2613,7 +2924,7 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f 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'
@@ -2726,7 +3037,9 @@ else
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
- : > sub/conftst$i.h
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
@@ -2754,9 +3067,14 @@ else
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
- # (even with -Werror). So we grep stderr for any message
- # that says an option was ignored.
- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_CC_dependencies_compiler_type=$depmode
break
fi
@@ -2788,9 +3106,723 @@ fi
-# Checks for libraries.
+# So far, the only shared library we might use is libopts.
+# It's a small library - we might as well use a static version of it.
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+ enableval="$enable_shared"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_shared=yes ;;
+ no) enable_shared=no ;;
+ *)
+ enable_shared=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_shared=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_shared=no
+fi;
+
+
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+ enableval="$enable_static"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_static=yes ;;
+ no) enable_static=no ;;
+ *)
+ enable_static=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_static=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_static=yes
+fi;
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+ enableval="$enable_fast_install"
+ p=${PACKAGE-default}
+ case $enableval in
+ yes) enable_fast_install=yes ;;
+ no) enable_fast_install=no ;;
+ *)
+ enable_fast_install=no
+ # Look at the argument we got. We use all the common list separators.
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for pkg in $enableval; do
+ IFS="$lt_save_ifs"
+ if test "X$pkg" = "X$p"; then
+ enable_fast_install=yes
+ fi
+ done
+ IFS="$lt_save_ifs"
+ ;;
+ esac
+else
+ enable_fast_install=yes
+fi;
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for lt_ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+ fi
+ done
+ done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+ test ! -f $lt_ac_sed && continue
+ cat /dev/null > conftest.in
+ lt_ac_count=0
+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+ # Check for GNU sed and select it if it is found.
+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+ lt_cv_path_SED=$lt_ac_sed
+ break
+ fi
+ while true; do
+ cat conftest.in conftest.in >conftest.tmp
+ mv conftest.tmp conftest.in
+ cp conftest.in conftest.nl
+ echo >>conftest.nl
+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+ cmp -s conftest.out conftest.nl || break
+ # 10000 chars as input seems more than enough
+ test $lt_ac_count -gt 10 && break
+ lt_ac_count=`expr $lt_ac_count + 1`
+ if test $lt_ac_count -gt $lt_ac_max; then
+ lt_ac_max=$lt_ac_count
+ lt_cv_path_SED=$lt_ac_sed
+ fi
+ done
+done
+
+fi
+
+SED=$lt_cv_path_SED
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+ darwin*)
+ if test "$GCC" = yes; then
+ reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+ else
+ reload_cmds='$LD$reload_flag -o $output$reload_objs'
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$NM"; then
+ # Let the user override the test.
+ lt_cv_path_NM="$NM"
+else
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+ # Check to see if the nm accepts a BSD-compat flag.
+ # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+ # nm: unknown option "B" ignored
+ # Tru64's nm complains that /dev/null is an invalid object file
+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+ */dev/null* | *'Invalid file or object type'*)
+ lt_cv_path_NM="$tmp_nm -B"
+ break
+ ;;
+ *)
+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+ */dev/null*)
+ lt_cv_path_NM="$tmp_nm -p"
+ break
+ ;;
+ *)
+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+ continue # so that we can try to find one that supports BSD flags
+ ;;
+ esac
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+beos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+bsdi[45]*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=/shlib/libc.so
+ ;;
+
+cygwin*)
+ # func_win32_libid is a shell function defined in ltmain.sh
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ ;;
+
+mingw* | pw32*)
+ # Base MSYS/MinGW do not provide the 'file' command needed by
+ # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ case $host_cpu in
+ i*86 )
+ # Not sure whether the presence of OpenBSD here was a mistake.
+ # Let's accept both of them until this is cleared up.
+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+ ;;
+ esac
+ else
+ lt_cv_deplibs_check_method=pass_all
+ fi
+ ;;
+
+gnu*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+hpux10.20* | hpux11*)
+ lt_cv_file_magic_cmd=/usr/bin/file
+ case $host_cpu in
+ ia64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+ ;;
+ hppa*64*)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+ ;;
+ *)
+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+ esac
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $LD in
+ *-32|*"-32 ") libmagic=32-bit;;
+ *-n32|*"-n32 ") libmagic=N32;;
+ *-64|*"-64 ") libmagic=64-bit;;
+ *) libmagic=never-match;;
+ esac
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+ fi
+ ;;
+
+newos6*)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libnls.so
+ ;;
+
+nto-qnx*)
+ lt_cv_deplibs_check_method=unknown
+ ;;
+
+openbsd*)
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+ else
+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+ fi
+ ;;
+
+osf3* | osf4* | osf5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sco3.2v5*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+solaris*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ case $host_vendor in
+ motorola)
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ ;;
+ ncr)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ sequent)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+ ;;
+ sni)
+ lt_cv_file_magic_cmd='/bin/file'
+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+ lt_cv_file_magic_test_file=/lib/libc.so
+ ;;
+ siemens)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+ esac
+ ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *ELF-32*)
+ HPUX_IA64_MODE="32"
+ ;;
+ *ELF-64*)
+ HPUX_IA64_MODE="64"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+*-*-irix6*)
+ # Find out which ABI we are using.
+ echo '#line 3665 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -melf32bsmip"
+ ;;
+ *N32*)
+ LD="${LD-ld} -melf32bmipn32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -melf64bmip"
+ ;;
+ esac
+ else
+ case `/usr/bin/file conftest.$ac_objext` in
+ *32-bit*)
+ LD="${LD-ld} -32"
+ ;;
+ *N32*)
+ LD="${LD-ld} -n32"
+ ;;
+ *64-bit*)
+ LD="${LD-ld} -64"
+ ;;
+ esac
+ fi
+ fi
+ rm -rf conftest*
+ ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_i386"
+ ;;
+ ppc64-*linux*|powerpc64-*linux*)
+ LD="${LD-ld} -m elf32ppclinux"
+ ;;
+ s390x-*linux*)
+ LD="${LD-ld} -m elf_s390"
+ ;;
+ sparc64-*linux*)
+ LD="${LD-ld} -m elf32_sparc"
+ ;;
+ esac
+ ;;
+ *64-bit*)
+ case $host in
+ x86_64-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ LD="${LD-ld} -m elf64_s390"
+ ;;
+ sparc*-*linux*)
+ LD="${LD-ld} -m elf64_sparc"
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+*-*-sco3.2v5*)
+ # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+ SAVE_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -belf"
+ echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ lt_cv_cc_needs_belf=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext 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
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+ CFLAGS="$SAVE_CFLAGS"
+ fi
+ ;;
+
+esac
+
+need_locks="$enable_libtool_lock"
-# Checks for header files.
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -2820,7 +3852,6 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2831,7 +3862,7 @@ cat >>conftest.$ac_ext <<_ACEOF
#else
# include <assert.h>
#endif
- Syntax error
+ Syntax error
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
@@ -2843,6 +3874,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -2863,7 +3895,6 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2881,6 +3912,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -2927,7 +3959,6 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2938,7 +3969,7 @@ cat >>conftest.$ac_ext <<_ACEOF
#else
# include <assert.h>
#endif
- Syntax error
+ Syntax error
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
@@ -2950,6 +3981,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -2970,7 +4002,6 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -2988,6 +4019,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -3027,28 +4059,15683 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
-if test "${ac_cv_prog_egrep+set}" = set; then
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if echo a | (grep -E '(a|b)') >/dev/null 2>&1
- then ac_cv_prog_egrep='grep -E'
- else ac_cv_prog_egrep='egrep'
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+ CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+ "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+for ac_declaration in \
+ '' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+depcc="$CXX" am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named `D' -- because `-MD' means `put the output
+ # in D'.
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+ # Solaris 8's {/usr,}/bin/sh.
+ touch sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ case $depmode in
+ nosideeffect)
+ # after this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ none) break ;;
+ esac
+ # We check with `-c' and `-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle `-M -o', and we need to detect this.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
- EGREP=$ac_cv_prog_egrep
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+
+
+if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether non-existent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$F77"; then
+ ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+ echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$F77" && break
+ done
+fi
+if test -z "$F77"; then
+ ac_ct_F77=$F77
+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_F77"; then
+ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_F77="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+ echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_F77" && break
+done
+
+ F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:5244:" \
+ "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file. (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+#ifndef __GNUC__
+ choke me
+#endif
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_f77_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-g -O2"
+ else
+ FFLAGS="-g"
+ fi
+else
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-O2"
+ else
+ FFLAGS=
+ fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+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
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ i=0
+ teststring="ABCD"
+
+ case $build_os in
+ msdosdjgpp*)
+ # On DJGPP, this test can blow up pretty badly due to problems in libc
+ # (any single argument exceeding 2000 bytes causes a buffer overrun
+ # during glob expansion). Even if it were fixed, the result of this
+ # check would be larger than it should be.
+ lt_cv_sys_max_cmd_len=12288; # 12K is about right
+ ;;
+
+ gnu*)
+ # Under GNU Hurd, this test is not required because there is
+ # no limit to the length of command line arguments.
+ # Libtool will interpret -1 as no limit whatsoever
+ lt_cv_sys_max_cmd_len=-1;
+ ;;
+
+ cygwin* | mingw*)
+ # On Win9x/ME, this test blows up -- it succeeds, but takes
+ # about 5 minutes as the teststring grows exponentially.
+ # Worse, since 9x/ME are not pre-emptively multitasking,
+ # you end up with a "frozen" computer, even though with patience
+ # the test eventually succeeds (with a max line length of 256k).
+ # Instead, let's just punt: use the minimum linelength reported by
+ # all of the supported platforms: 8192 (on NT/2K/XP).
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ amigaos*)
+ # On AmigaOS with pdksh, this test takes hours, literally.
+ # So we just punt and use a minimum line length of 8192.
+ lt_cv_sys_max_cmd_len=8192;
+ ;;
+
+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+ # This has been around since 386BSD, at least. Likely further.
+ if test -x /sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+ elif test -x /usr/sbin/sysctl; then
+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+ else
+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs
+ fi
+ # And add a safety zone
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ ;;
+ osf*)
+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+ # nice to cause kernel panics so lets avoid the loop below.
+ # First set a reasonable default.
+ lt_cv_sys_max_cmd_len=16384
+ #
+ if test -x /sbin/sysconfig; then
+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+ *1*) lt_cv_sys_max_cmd_len=-1 ;;
+ esac
+ fi
+ ;;
+ *)
+ # If test is not a shell built-in, we'll probably end up computing a
+ # maximum length that is only half of the actual maximum length, but
+ # we can't tell.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+ echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDGIRSTW]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ fi
+ ;;
+irix* | nonstopux*)
+ symcode='[BCDEGRST]'
+ ;;
+osf*)
+ symcode='[BCDEGQRST]'
+ ;;
+solaris* | sysv5*)
+ symcode='[BDRT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+ symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+ # Write the raw and C identifiers.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s "$nlist"; then
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if grep ' nm_test_var$' "$nlist" >/dev/null; then
+ if grep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_save_CFLAGS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ rm -f conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ lt_cv_sys_global_symbol_pipe=
+ fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+ lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+ echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+ echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ lt_cv_objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+ # AIX sometimes has problems with the GCC collect2 program. For some
+ # reason, if we set the COLLECT_NAMES environment variable, the problems
+ # vanish in a puff of smoke.
+ if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+ fi
+ ;;
+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 to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="ar"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ AR=$ac_ct_AR
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+ ac_ct_RANLIB=$RANLIB
+ # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ RANLIB=$ac_ct_RANLIB
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ STRIP=$ac_ct_STRIP
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+ case $host_os in
+ openbsd*)
+ old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+ ;;
+ *)
+ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+ ;;
+ esac
+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/${ac_tool_prefix}file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $MAGIC_CMD in
+[\\/*] | ?:[\\/]*)
+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+ ;;
+*)
+ lt_save_MAGIC_CMD="$MAGIC_CMD"
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+ for ac_dir in $ac_dummy; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f $ac_dir/file; then
+ lt_cv_path_MAGIC_CMD="$ac_dir/file"
+ if test -n "$file_magic_test_file"; then
+ case $deplibs_check_method in
+ "file_magic "*)
+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+ $EGREP "$file_magic_regex" > /dev/null; then
+ :
+ else
+ cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+ fi ;;
+ esac
+ fi
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+ MAGIC_CMD="$lt_save_MAGIC_CMD"
+ ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+ enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+ withval="$with_pic"
+ pic_mode="$withval"
+else
+ pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+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
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+#
+# Check for any special shared library compilation flags.
+#
+lt_prog_cc_shlib=
+if test "$GCC" = no; then
+ case $host_os in
+ sco3.2v5*)
+ lt_prog_cc_shlib='-belf'
+ ;;
+ esac
+fi
+if test -n "$lt_prog_cc_shlib"; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
+ if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then :
+ else
+ { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+ lt_cv_prog_cc_can_build_shared=no
+ fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
+ printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+ # The linker can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ if test -s conftest.err; then
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works=yes
+ fi
+ else
+ lt_prog_compiler_static_works=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:6342: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:6346: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_static='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static='-Bstatic'
+ else
+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic='-qnocommon'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-fpic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic='-Kpic'
+ lt_prog_compiler_static='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl='-Qoption ld '
+ lt_prog_compiler_pic='-PIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic='-Kconform_pic'
+ lt_prog_compiler_static='-Bstatic'
+ fi
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_can_build_shared=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic='-pic'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:6604: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:6608: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+ case $lt_prog_compiler_pic in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+ esac
+else
+ lt_prog_compiler_pic=
+ lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic=
+ ;;
+ *)
+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:6666: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:6670: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+ $SED '/^$/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag=
+ enable_shared_with_static_runtimes=no
+ archive_cmds=
+ archive_expsym_cmds=
+ old_archive_From_new_cmds=
+ old_archive_from_expsyms_cmds=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ thread_safe_flag_spec=
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_direct=no
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ link_all_deplibs=unknown
+ hardcode_automatic=no
+ module_cmds=
+ module_expsym_cmds=
+ always_export_symbols=no
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ allow_undefined_flag=unsupported
+ always_export_symbols=no
+ enable_shared_with_static_runtimes=yes
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+
+ sunos4*)
+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag=unsupported
+ always_export_symbols=yes
+ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds=''
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ link_all_deplibs=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct=yes
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag="-z nodefs"
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag=' ${wl}-bernotok'
+ allow_undefined_flag=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec=' '
+ archive_cmds_need_lc=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ allow_undefined_flag=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ whole_archive_flag_spec=''
+ link_all_deplibs=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ export_dynamic_flag_spec='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ export_dynamic_flag_spec='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ link_all_deplibs=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ newsos6)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_shlibpath_var=no
+ ;;
+
+ openbsd*)
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ allow_undefined_flag=unsupported
+ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_shlibpath_var=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds='$CC -r -o $output$reload_objs'
+ hardcode_direct=no
+ ;;
+ motorola)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ export_dynamic_flag_spec='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct=yes
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ hardcode_libdir_flag_spec=
+ hardcode_shlibpath_var=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_shlibpath_var=no
+ ;;
+
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag
+ allow_undefined_flag=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc=no
+ else
+ archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+ test -n "$runpath_var" || \
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+ test "$hardcode_minus_L" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 8914 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 9012 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+# Report which librarie types wil actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler \
+ CC \
+ LD \
+ lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
+ lt_prog_compiler_static \
+ lt_prog_compiler_no_builtin_flag \
+ export_dynamic_flag_spec \
+ thread_safe_flag_spec \
+ whole_archive_flag_spec \
+ enable_shared_with_static_runtimes \
+ old_archive_cmds \
+ old_archive_from_new_cmds \
+ predep_objects \
+ postdep_objects \
+ predeps \
+ postdeps \
+ compiler_lib_search_path \
+ archive_cmds \
+ archive_expsym_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ old_archive_from_expsyms_cmds \
+ allow_undefined_flag \
+ no_undefined_flag \
+ export_symbols_cmds \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+ hardcode_automatic \
+ module_cmds \
+ module_expsym_cmds \
+ lt_cv_prog_compiler_c_o \
+ exclude_expsyms \
+ include_expsyms; do
+
+ case $var in
+ old_archive_cmds | \
+ old_archive_from_new_cmds | \
+ archive_cmds | \
+ archive_expsym_cmds | \
+ module_cmds | \
+ module_expsym_cmds | \
+ old_archive_from_expsyms_cmds | \
+ export_symbols_cmds | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+ cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# 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
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+ case $host_os in
+ aix3*)
+ cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program. For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+ COLLECT_NAMES=
+ export COLLECT_NAMES
+fi
+EOF
+ ;;
+ esac
+
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+ sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+ withval="$with_tags"
+ tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+ else
+ { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+ fi
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+ "") ;;
+ *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+ unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+ lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+ unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+ lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+ withval="$with_gnu_ld"
+ test "$withval" = no || with_gnu_ld=yes
+else
+ with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $ac_prog in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+ ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+ done
+ test -z "$LD" && LD="$ac_prog"
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ac_prog=ld
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+elif test "$with_gnu_ld" = yes; then
+ echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -z "$LD"; then
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$lt_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ lt_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$lt_save_ifs"
+else
+ lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+ echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ lt_cv_prog_gnu_ld=yes
+ ;;
+*)
+ lt_cv_prog_gnu_ld=no
+ ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+ # Check if GNU C++ uses GNU ld as the underlying linker, since the
+ # archiving commands below assume that GNU ld is being used.
+ if test "$with_gnu_ld" = yes; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+ # investigate it a little bit more. (MM)
+ wlarc='${wl}'
+
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+ grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_CXX=
+ fi
+ else
+ with_gnu_ld=no
+ wlarc=
+
+ # A generic and very simple default shared library creation
+ # command for GNU C++ for the case where it uses the native
+ # linker, instead of GNU ld. If possible, this setting should
+ # overridden to take advantage of the native linker features on
+ # the platform it is being used on.
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ fi
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ case $ld_flag in
+ *-brtl*)
+ aix_use_runtimelinking=yes
+ break
+ ;;
+ esac
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_CXX=''
+ hardcode_direct_CXX=yes
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_CXX=yes
+ else
+ # We have old collect2
+ hardcode_direct_CXX=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_CXX=yes
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ hardcode_libdir_separator_CXX=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_CXX=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_CXX='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_CXX="-z nodefs"
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_CXX=' ${wl}-bernotok'
+ allow_undefined_flag_CXX=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_CXX=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_CXX=' '
+ archive_cmds_need_lc_CXX=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ allow_undefined_flag_CXX=unsupported
+ always_export_symbols_CXX=no
+ enable_shared_with_static_runtimes_CXX=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_direct_CXX=no
+ hardcode_automatic_CXX=yes
+ hardcode_shlibpath_var_CXX=unsupported
+ whole_archive_flag_spec_CXX=''
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ fi
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ ld_shlibs_CXX=no
+ ;;
+ freebsd-elf*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ ;;
+ ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ *)
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=yes # Not in the search PATH,
+ # but as the default
+ # location of the library.
+ ;;
+ esac
+
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ ia64*|hppa*64*)
+ archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ esac
+ fi
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ irix5* | irix6*)
+ case $cc_basename in
+ CC*)
+ # SGI C++
+ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ # Archives containing C++ object files must be created using
+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ link_all_deplibs_CXX=yes
+ ;;
+ esac
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+ archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc*)
+ # Intel C++
+ with_gnu_ld=yes
+ # version 8.0 and above of icpc choke on multiply defined symbols
+ # if we add $predep_objects and $postdep_objects, however 7.1 and
+ # earlier do not add the objects themselves.
+ case `$CC -V 2>&1` in
+ *"Version 7."*)
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ *) # Version 8.0 or newer
+ tmp_idyn=
+ case $host_cpu in
+ ia64*) tmp_idyn=' -i_dynamic';;
+ esac
+ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ fi
+ # Workaround some broken pre-1.5 toolchains
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ ld_shlibs_CXX=no
+ ;;
+ openbsd*)
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+ archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ allow_undefined_flag_CXX=' -expect_unresolved \*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+ echo "-hidden">> $lib.exp~
+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+ $rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ #
+ # There doesn't appear to be a way to prevent this compiler from
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ sco*)
+ archive_cmds_need_lc_CXX=no
+ case $cc_basename in
+ CC*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ archive_cmds_need_lc_CXX=yes
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_shlibpath_var_CXX=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker. We must also pass each convience library through
+ # to the system linker between allextract/defaultextract.
+ # The C++ compiler will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+ # The C++ compiler must be used to create the archive.
+ old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+ output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+ fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Parse the compiler output and extract the necessary
+ # objects, libraries and library flags.
+
+ # Sentinel used to keep track of whether or not we are before
+ # the conftest object file.
+ pre_test_object_deps_done=no
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $p in
+
+ -L* | -R* | -l*)
+ # Some compilers place space between "-{L,R}" and the path.
+ # Remove the space.
+ if test $p = "-L" \
+ || test $p = "-R"; then
+ prev=$p
+ continue
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p in
+ -L* | -R*)
+ # Internal compiler library paths should come after those
+ # provided the user. The postdeps already come after the
+ # user supplied libs so there is no need to process them.
+ if test -z "$compiler_lib_search_path_CXX"; then
+ compiler_lib_search_path_CXX="${prev}${p}"
+ else
+ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+ fi
+ ;;
+ # The "-l" case would never come before the object being
+ # linked, so don't bother handling this case.
+ esac
+ else
+ if test -z "$postdeps_CXX"; then
+ postdeps_CXX="${prev}${p}"
+ else
+ postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$objext)
+ # This assumes that the test object file only shows up
+ # once in the compiler output.
+ if test "$p" = "conftest.$objext"; then
+ pre_test_object_deps_done=yes
+ continue
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ if test -z "$predep_objects_CXX"; then
+ predep_objects_CXX="$p"
+ else
+ predep_objects_CXX="$predep_objects_CXX $p"
+ fi
+ else
+ if test -z "$postdep_objects_CXX"; then
+ postdep_objects_CXX="$p"
+ else
+ postdep_objects_CXX="$postdep_objects_CXX $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+solaris*)
+ case $cc_basename in
+ CC*)
+ # Adding this requires a known-good setup of shared libraries for
+ # Sun compiler versions before 5.6, else PIC objects from an old
+ # archive will be linked into the output, leading to subtle bugs.
+ postdeps_CXX='-lCstd -lCrun'
+ ;;
+ esac
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_CXX='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ lt_prog_compiler_pic_CXX=
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_CXX=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ else
+ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+ ;;
+ esac
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_CXX='-qnocommon'
+ lt_prog_compiler_wl_CXX='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+ aCC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='+Z'
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ irix5* | irix6* | nonstopux*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ icpc* | ecpc*)
+ # Intel C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler.
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-fpic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ cxx*)
+ # Compaq C++
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ sco*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ lt_prog_compiler_pic_CXX='-pic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ unixware*)
+ ;;
+ vxworks*)
+ ;;
+ *)
+ lt_prog_compiler_can_build_shared_CXX=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_CXX=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:11267: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:11271: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+ case $lt_prog_compiler_pic_CXX in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+ esac
+else
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_CXX=
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_CXX=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:11329: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:11333: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+ $SED '/^$/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_CXX=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ export_symbols_cmds_CXX="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_CXX=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_CXX in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_CXX
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+ allow_undefined_flag_CXX=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_CXX=no
+ else
+ archive_cmds_need_lc_CXX=yes
+ fi
+ allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+ test -n "$runpath_var_CXX" || \
+ test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_CXX" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+ test "$hardcode_minus_L_CXX" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_CXX=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_CXX=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_CXX=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_cxx_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 12706 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 12804 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_CXX \
+ CC_CXX \
+ LD_CXX \
+ lt_prog_compiler_wl_CXX \
+ lt_prog_compiler_pic_CXX \
+ lt_prog_compiler_static_CXX \
+ lt_prog_compiler_no_builtin_flag_CXX \
+ export_dynamic_flag_spec_CXX \
+ thread_safe_flag_spec_CXX \
+ whole_archive_flag_spec_CXX \
+ enable_shared_with_static_runtimes_CXX \
+ old_archive_cmds_CXX \
+ old_archive_from_new_cmds_CXX \
+ predep_objects_CXX \
+ postdep_objects_CXX \
+ predeps_CXX \
+ postdeps_CXX \
+ compiler_lib_search_path_CXX \
+ archive_cmds_CXX \
+ archive_expsym_cmds_CXX \
+ postinstall_cmds_CXX \
+ postuninstall_cmds_CXX \
+ old_archive_from_expsyms_cmds_CXX \
+ allow_undefined_flag_CXX \
+ no_undefined_flag_CXX \
+ export_symbols_cmds_CXX \
+ hardcode_libdir_flag_spec_CXX \
+ hardcode_libdir_flag_spec_ld_CXX \
+ hardcode_libdir_separator_CXX \
+ hardcode_automatic_CXX \
+ module_cmds_CXX \
+ module_expsym_cmds_CXX \
+ lt_cv_prog_compiler_c_o_CXX \
+ exclude_expsyms_CXX \
+ include_expsyms_CXX; do
+
+ case $var in
+ old_archive_cmds_CXX | \
+ old_archive_from_new_cmds_CXX | \
+ archive_cmds_CXX | \
+ archive_expsym_cmds_CXX | \
+ module_cmds_CXX | \
+ module_expsym_cmds_CXX | \
+ old_archive_from_expsyms_cmds_CXX | \
+ export_symbols_cmds_CXX | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+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
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+ test "$enable_shared" = yes && enable_static=no
+ if test -n "$RANLIB"; then
+ archive_cmds="$archive_cmds~\$RANLIB \$lib"
+ postinstall_cmds='$RANLIB $lib'
+ fi
+ ;;
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_static_F77='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_F77='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared_F77=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_F77=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ else
+ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_F77='-qnocommon'
+ lt_prog_compiler_wl_F77='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_F77='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-fpic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic_F77='-Kpic'
+ lt_prog_compiler_static_F77='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl_F77='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl_F77='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_F77='-Qoption ld '
+ lt_prog_compiler_pic_F77='-PIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_F77='-Kconform_pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_F77='-pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_F77=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_F77"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:13689: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:13693: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+ case $lt_prog_compiler_pic_F77 in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+ esac
+else
+ lt_prog_compiler_pic_F77=
+ lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_F77=
+ ;;
+ *)
+ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_F77=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:13751: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:13755: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+ $SED '/^$/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_F77=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_F77=
+ enable_shared_with_static_runtimes_F77=no
+ archive_cmds_F77=
+ archive_expsym_cmds_F77=
+ old_archive_From_new_cmds_F77=
+ old_archive_from_expsyms_cmds_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ thread_safe_flag_spec_F77=
+ hardcode_libdir_flag_spec_F77=
+ hardcode_libdir_flag_spec_ld_F77=
+ hardcode_libdir_separator_F77=
+ hardcode_direct_F77=no
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=unsupported
+ link_all_deplibs_F77=unknown
+ hardcode_automatic_F77=no
+ module_cmds_F77=
+ module_expsym_cmds_F77=
+ always_export_symbols_F77=no
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_F77=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_F77=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_F77=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_F77=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_F77=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=no
+ enable_shared_with_static_runtimes_F77=yes
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ sunos4*)
+ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_F77" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=yes
+ archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_F77=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_F77=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_F77=''
+ hardcode_direct_F77=yes
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_F77=yes
+ else
+ # We have old collect2
+ hardcode_direct_F77=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_F77=yes
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_libdir_separator_F77=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_F77=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_F77='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_F77="-z nodefs"
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_f77_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_F77=' ${wl}-bernotok'
+ allow_undefined_flag_F77=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_F77=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_F77=' '
+ archive_cmds_need_lc_F77=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_F77=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_F77=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_F77=' '
+ allow_undefined_flag_F77=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_F77='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_F77=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_F77=no
+ hardcode_direct_F77=no
+ hardcode_automatic_F77=yes
+ hardcode_shlibpath_var_F77=unsupported
+ whole_archive_flag_spec_F77=''
+ link_all_deplibs_F77=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_F77=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ link_all_deplibs_F77=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ newsos6)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ allow_undefined_flag_F77=unsupported
+ archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag_F77=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_shlibpath_var_F77=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs_F77=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_F77='$CC -r -o $output$reload_objs'
+ hardcode_direct_F77=no
+ ;;
+ motorola)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_F77=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag_F77='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag_F77=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ hardcode_libdir_flag_spec_F77=
+ hardcode_shlibpath_var_F77=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_F77=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_F77 in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_F77
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+ allow_undefined_flag_F77=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_F77=no
+ else
+ archive_cmds_need_lc_F77=yes
+ fi
+ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+ test -n "$runpath_var_F77" || \
+ test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_F77" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+ test "$hardcode_minus_L_F77" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_F77=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_F77=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_F77 \
+ CC_F77 \
+ LD_F77 \
+ lt_prog_compiler_wl_F77 \
+ lt_prog_compiler_pic_F77 \
+ lt_prog_compiler_static_F77 \
+ lt_prog_compiler_no_builtin_flag_F77 \
+ export_dynamic_flag_spec_F77 \
+ thread_safe_flag_spec_F77 \
+ whole_archive_flag_spec_F77 \
+ enable_shared_with_static_runtimes_F77 \
+ old_archive_cmds_F77 \
+ old_archive_from_new_cmds_F77 \
+ predep_objects_F77 \
+ postdep_objects_F77 \
+ predeps_F77 \
+ postdeps_F77 \
+ compiler_lib_search_path_F77 \
+ archive_cmds_F77 \
+ archive_expsym_cmds_F77 \
+ postinstall_cmds_F77 \
+ postuninstall_cmds_F77 \
+ old_archive_from_expsyms_cmds_F77 \
+ allow_undefined_flag_F77 \
+ no_undefined_flag_F77 \
+ export_symbols_cmds_F77 \
+ hardcode_libdir_flag_spec_F77 \
+ hardcode_libdir_flag_spec_ld_F77 \
+ hardcode_libdir_separator_F77 \
+ hardcode_automatic_F77 \
+ module_cmds_F77 \
+ module_expsym_cmds_F77 \
+ lt_cv_prog_compiler_c_o_F77 \
+ exclude_expsyms_F77 \
+ include_expsyms_F77; do
+
+ case $var in
+ old_archive_cmds_F77 | \
+ old_archive_from_new_cmds_F77 | \
+ archive_cmds_F77 | \
+ archive_expsym_cmds_F77 | \
+ module_cmds_F77 | \
+ module_expsym_cmds_F77 | \
+ old_archive_from_expsyms_cmds_F77 | \
+ export_symbols_cmds_F77 | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="-fno-rtti -fno-exceptions"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:15881: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:15885: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_rtti_exceptions=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_static_GCJ='-static'
+
+ case $host_os in
+ aix*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # FIXME: we need at least 68020 code to build shared libraries, but
+ # adding the `-m68020' flag to GCC prevents building anything better,
+ # like `-m68040'.
+ lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_GCJ='-fno-common'
+ ;;
+
+ msdosdjgpp*)
+ # Just because we use GCC doesn't mean we suddenly get shared libraries
+ # on systems that don't support them.
+ lt_prog_compiler_can_build_shared_GCJ=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_GCJ=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ else
+ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_GCJ='-qnocommon'
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # This hack is so that the source file can tell whether it is being
+ # built for inclusion in a dll (and should export symbols for example).
+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+ # not for PA HP-UX.
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-fpic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ sco3.2v5*)
+ lt_prog_compiler_pic_GCJ='-Kpic'
+ lt_prog_compiler_static_GCJ='-dn'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl_GCJ='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld '
+ lt_prog_compiler_pic_GCJ='-PIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_GCJ='-Kconform_pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_GCJ='-pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_GCJ=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ # The option is referenced via a variable to avoid confusing sed.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:16143: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:16147: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s "$ac_outfile"; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings other than the usual output.
+ $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+ $SED '/^$/d' conftest.err >conftest.er2
+ if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+ case $lt_prog_compiler_pic_GCJ in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+ esac
+else
+ lt_prog_compiler_pic_GCJ=
+ lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_GCJ=
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_GCJ=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ lt_compiler_flag="-o out/conftest2.$ac_objext"
+ # Insert the option either (1) after the last *FLAGS variable, or
+ # (2) before a word containing "conftest.", or (3) at the end.
+ # Note that $ac_compile itself does not contain backslashes and begins
+ # with a dollar sign (not a hyphen), so the echo should work correctly.
+ lt_compile=`echo "$ac_compile" | $SED \
+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+ -e 's:$: $lt_compiler_flag:'`
+ (eval echo "\"\$as_me:16205: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:16209: \$? = $ac_status" >&5
+ if (exit $ac_status) && test -s out/conftest2.$ac_objext
+ then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+ $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+ $SED '/^$/d' out/conftest.err >out/conftest.er2
+ if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+ lt_cv_prog_compiler_c_o_GCJ=yes
+ fi
+ fi
+ chmod u+w . 2>&5
+ $rm conftest*
+ # SGI C++ compiler will create directory out/ii_files/ for
+ # template instantiation
+ test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+ $rm out/* && rmdir out
+ cd ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+ hard_links=yes
+ $rm conftest*
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ touch conftest.a
+ ln conftest.a conftest.b 2>&5 || hard_links=no
+ ln conftest.a conftest.b 2>/dev/null && hard_links=no
+ echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+ need_locks=warn
+ fi
+else
+ need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+ runpath_var=
+ allow_undefined_flag_GCJ=
+ enable_shared_with_static_runtimes_GCJ=no
+ archive_cmds_GCJ=
+ archive_expsym_cmds_GCJ=
+ old_archive_From_new_cmds_GCJ=
+ old_archive_from_expsyms_cmds_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ thread_safe_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_ld_GCJ=
+ hardcode_libdir_separator_GCJ=
+ hardcode_direct_GCJ=no
+ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=unsupported
+ link_all_deplibs_GCJ=unknown
+ hardcode_automatic_GCJ=no
+ module_cmds_GCJ=
+ module_expsym_cmds_GCJ=
+ always_export_symbols_GCJ=no
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_GCJ=
+ # exclude_expsyms can be an extended regexp of symbols to exclude
+ # it will be wrapped by ` (' and `)$', so one must not match beginning or
+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+ # as well as any symbol that contains `d'.
+ exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+ # platforms (ab)use it in PIC code, but their linkers get confused if
+ # the symbol is explicitly referenced. Since portable code cannot
+ # rely on this symbol name, it's probably fine to never include it in
+ # preloaded symbol tables.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+ esac
+
+ ld_shlibs_GCJ=yes
+ if test "$with_gnu_ld" = yes; then
+ # If archive_cmds runs LD, not CC, wlarc should be empty
+ wlarc='${wl}'
+
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ runpath_var=LD_RUN_PATH
+ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+ # ancient GNU ld didn't support --whole-archive et. al.
+ if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_GCJ=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+ *\ 2.11.*) ;; # other 2.11 versions
+ *) supports_anon_versioning=yes ;;
+ esac
+
+ # See if GNU ld supports shared libraries.
+ case $host_os in
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support. If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_GCJ=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_GCJ=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=no
+ enable_shared_with_static_runtimes_GCJ=yes
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ # If the export-symbols file already is a .def file (1st line
+ # is EXPORTS), use it as is; otherwise, prepend...
+ archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+ cp $export_symbols $output_objdir/$soname.def;
+ else
+ echo EXPORTS > $output_objdir/$soname.def;
+ cat $export_symbols >> $output_objdir/$soname.def;
+ fi~
+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag -Mnomain' ;;
+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64
+ tmp_addflag=' -i_dynamic' ;;
+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64
+ tmp_addflag=' -i_dynamic -nofor_main' ;;
+ ifc* | ifort*) # Intel Fortran compiler
+ tmp_addflag=' -nofor_main' ;;
+ esac
+ archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ fi
+ ;;
+
+ solaris* | sysv5*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems. Therefore, libtool
+*** is disabling shared libraries support. We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer. Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ sunos4*)
+ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_GCJ" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=yes
+ archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L_GCJ=yes
+ if test "$GCC" = yes && test -z "$link_static_flag"; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct_GCJ=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ exp_sym_flag='-Bexport'
+ no_entry_flag=""
+ else
+ # If we're using GNU nm, then we don't want the "-C" option.
+ # -C means demangle to AIX nm, but means don't demangle with GNU nm
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ aix_use_runtimelinking=no
+
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ esac
+
+ exp_sym_flag='-bexport'
+ no_entry_flag='-bnoentry'
+ fi
+
+ # When large executables or shared objects are built, AIX ld can
+ # have problems creating the table of contents. If linking a library
+ # or program results in "error TOC overflow" add -mminimal-toc to
+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not
+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+ archive_cmds_GCJ=''
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ # We only want to do this on AIX 4.2 and lower, the check
+ # below for broken collect2 doesn't work under 4.3+
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ hardcode_direct_GCJ=yes
+ else
+ # We have old collect2
+ hardcode_direct_GCJ=unsupported
+ # It fails to find uninstalled libraries when the uninstalled
+ # path is not listed in the libpath. Setting hardcode_minus_L
+ # to unsupported forces relinking
+ hardcode_minus_L_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_libdir_separator_GCJ=
+ fi
+ esac
+ shared_flag='-shared'
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag="$shared_flag "'${wl}-G'
+ fi
+ else
+ # not using gcc
+ if test "$host_cpu" = ia64; then
+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+ # chokes on -Wl,-G. The following line is correct:
+ shared_flag='-G'
+ else
+ if test "$aix_use_runtimelinking" = yes; then
+ shared_flag='${wl}-G'
+ else
+ shared_flag='${wl}-bM:SRE'
+ fi
+ fi
+ fi
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ always_export_symbols_GCJ=yes
+ if test "$aix_use_runtimelinking" = yes; then
+ # Warning - without using the other runtime loading flags (-brtl),
+ # -berok will link without error, but may produce a broken library.
+ allow_undefined_flag_GCJ='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_GCJ="-z nodefs"
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+ else
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ # Warning - without using the other run time loading flags,
+ # -berok will link without error, but may produce a broken library.
+ no_undefined_flag_GCJ=' ${wl}-bernotok'
+ allow_undefined_flag_GCJ=' ${wl}-berok'
+ # -bexpall does not export symbols beginning with underscore (_)
+ always_export_symbols_GCJ=yes
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_GCJ=' '
+ archive_cmds_need_lc_GCJ=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+ fi
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_GCJ=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_GCJ=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ=' '
+ allow_undefined_flag_GCJ=unsupported
+ # Tell ltmain to make .lib files, not .a files.
+ libext=lib
+ # Tell ltmain to make .dll files, not .so files.
+ shrext_cmds=".dll"
+ # FIXME: Setting linknames here is a bad hack.
+ archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_GCJ='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_GCJ=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_GCJ=no
+ hardcode_direct_GCJ=no
+ hardcode_automatic_GCJ=yes
+ hardcode_shlibpath_var_GCJ=unsupported
+ whole_archive_flag_spec_GCJ=''
+ link_all_deplibs_GCJ=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_GCJ=no
+ ;;
+
+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+ # support. Future versions do this automatically, but an explicit c++rt0.o
+ # does not break anything, and helps significantly (at the cost of a little
+ # extra space).
+ freebsd2.2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ else
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ ;;
+
+ hpux10* | hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*|ia64*)
+ archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+ ;;
+ esac
+ fi
+ if test "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+ ia64*)
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ ;;
+ *)
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ newsos6)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ allow_undefined_flag_GCJ=unsupported
+ archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+ # Both c and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ sco3.2v5*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ;;
+
+ solaris*)
+ no_undefined_flag_GCJ=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ sunos4*)
+ if test "x$host_vendor" = xsequent; then
+ # Use $CC to link under sequent, because it throws in some extra .o
+ # files that make .init and .fini sections work.
+ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+ hardcode_direct_GCJ=no
+ ;;
+ motorola)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ export_dynamic_flag_spec_GCJ='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_GCJ=yes
+ fi
+ ;;
+
+ sysv4.2uw2*)
+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_runpath_var=yes
+ runpath_var=LD_RUN_PATH
+ ;;
+
+ sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+ no_undefined_flag_GCJ='${wl}-z ${wl}text'
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv5*)
+ no_undefined_flag_GCJ=' -z text'
+ # $CC -shared without GNU ld will not create a library from C++
+ # object files and a static libstdc++, better avoid it by now
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+ hardcode_libdir_flag_spec_GCJ=
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var='LD_RUN_PATH'
+ ;;
+
+ uts4*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_GCJ=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_GCJ in
+ *'~'*)
+ # FIXME: we may have to deal with multi-command sequences.
+ ;;
+ '$CC '*)
+ # Test whether the compiler implicitly links with -lc since on some
+ # systems, -lgcc has to come before -lc. If gcc already passes -lc
+ # to ld, don't add -lc before -lgcc.
+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_GCJ
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+ allow_undefined_flag_GCJ=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_GCJ=no
+ else
+ archive_cmds_need_lc_GCJ=yes
+ fi
+ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # if the path contains ";" then we assume it to be the separator
+ # otherwise default to the standard path separator (i.e. ":") - it is
+ # assumed that no part of a normal pathname contains ";" but that should
+ # okay in the real world where ";" in dirpaths is itself problematic.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+
+aix4* | aix5*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+ # for dependence libraries. The import file would start with
+ # the line `#! .'. This would cause the generated library to
+ # depend on `.', always an invalid library. This was fixed in
+ # development snapshots of GCC prior to 3.0.
+ case $host_os in
+ aix4 | aix4.[01] | aix4.[01].*)
+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+ echo ' yes '
+ echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+ :
+ else
+ can_build_shared=no
+ fi
+ ;;
+ esac
+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+ # soname into executable. Probably we can add versioning support to
+ # collect2, so additional links can be useful in future.
+ if test "$aix_use_runtimelinking" = yes; then
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+ ;;
+
+amigaos*)
+ library_names_spec='$libname.ixlibrary $libname.a'
+ # Create ${libname}_ixlibrary.a entries in /sys/libs.
+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+ ;;
+
+beos*)
+ library_names_spec='${libname}${shared_ext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+
+bsdi[45]*)
+ version_type=linux
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+ # the default ld.so.conf also contains /usr/contrib/lib and
+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+ # libtool to hard-code these into programs
+ ;;
+
+cygwin* | mingw* | pw32*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ library_names_spec='$libname.dll.a'
+ # DLL is installed to $(libdir)/../bin by postinstall_cmds
+ postinstall_cmds='base_file=`basename \${file}`~
+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+ dldir=$destdir/`dirname \$dlpath`~
+ test -d \$dldir || mkdir -p \$dldir~
+ $install_prog $dir/$dlname \$dldir/$dlname~
+ chmod a+x \$dldir/$dlname'
+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+ dlpath=$dir/\$dldll~
+ $rm \$dlpath'
+ shlibpath_overrides_runpath=yes
+
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ else
+ sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ fi
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ ;;
+ esac
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # FIXME: first we should search . and the directory the executable is in
+ shlibpath_var=PATH
+ ;;
+
+darwin* | rhapsody*)
+ dynamic_linker="$host_os dyld"
+ version_type=darwin
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+ soname_spec='${libname}${release}${major}$shared_ext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+ ;;
+
+dgux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+freebsd1*)
+ dynamic_linker=no
+ ;;
+
+kfreebsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+freebsd* | dragonfly*)
+ # DragonFly does not have aout. When/if they implement a new
+ # versioning mechanism, adjust this.
+ if test -x /usr/bin/objformat; then
+ objformat=`/usr/bin/objformat`
+ else
+ case $host_os in
+ freebsd[123]*) objformat=aout ;;
+ *) objformat=elf ;;
+ esac
+ fi
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_os in
+ freebsd2*)
+ shlibpath_overrides_runpath=yes
+ ;;
+ freebsd3.[01]* | freebsdelf3.[01]*)
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+ *) # from 3.2 on
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ ;;
+ esac
+ ;;
+
+gnu*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+
+hpux9* | hpux10* | hpux11*)
+ # Give a soname corresponding to the major version so that dld.sl refuses to
+ # link against other versions.
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ case $host_cpu in
+ ia64*)
+ shrext_cmds='.so'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+ fi
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ hppa*64*)
+ shrext_cmds='.sl'
+ hardcode_into_libs=yes
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+ *)
+ shrext_cmds='.sl'
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+ postinstall_cmds='chmod 555 $lib'
+ ;;
+
+irix5* | irix6* | nonstopux*)
+ case $host_os in
+ nonstopux*) version_type=nonstopux ;;
+ *)
+ if test "$lt_cv_prog_gnu_ld" = yes; then
+ version_type=linux
+ else
+ version_type=irix
+ fi ;;
+ esac
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in # libtool.m4 will add one of these switches to LD
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+ libsuff= shlibsuff= libmagic=32-bit;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+ libsuff=32 shlibsuff=N32 libmagic=N32;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+ libsuff=64 shlibsuff=64 libmagic=64-bit;;
+ *) libsuff= shlibsuff= libmagic=never-match;;
+ esac
+ ;;
+ esac
+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+ hardcode_into_libs=yes
+ ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+ dynamic_linker=no
+ ;;
+
+# This must be Linux ELF.
+linux*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # Append ld.so.conf contents to the search path
+ if test -f /etc/ld.so.conf; then
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+ fi
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
+ ;;
+
+knetbsd*-gnu)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+netbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ ;;
+
+newsos6)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+nto-qnx*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+
+openbsd*)
+ version_type=sunos
+ need_lib_prefix=no
+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+ case $host_os in
+ openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+ *) need_version=no ;;
+ esac
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ case $host_os in
+ openbsd2.[89] | openbsd2.[89].*)
+ shlibpath_overrides_runpath=no
+ ;;
+ *)
+ shlibpath_overrides_runpath=yes
+ ;;
+ esac
+ else
+ shlibpath_overrides_runpath=yes
+ fi
+ ;;
+
+os2*)
+ libname_spec='$name'
+ shrext_cmds=".dll"
+ need_lib_prefix=no
+ library_names_spec='$libname${shared_ext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+
+osf3* | osf4* | osf5*)
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+ ;;
+
+sco3.2v5*)
+ version_type=osf
+ soname_spec='${libname}${release}${shared_ext}$major'
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+solaris*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+ # ldd complains unless libraries are executable
+ postinstall_cmds='chmod +x $lib'
+ ;;
+
+sunos4*)
+ version_type=sunos
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ if test "$with_gnu_ld" = yes; then
+ need_lib_prefix=no
+ fi
+ need_version=yes
+ ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+ shlibpath_overrides_runpath=no
+ need_lib_prefix=no
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ runpath_var=LD_RUN_PATH
+ ;;
+ siemens)
+ need_lib_prefix=no
+ ;;
+ motorola)
+ need_lib_prefix=no
+ need_version=no
+ shlibpath_overrides_runpath=no
+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+ ;;
+ esac
+ ;;
+
+sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+ soname_spec='$libname${shared_ext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+uts4*)
+ version_type=linux
+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+ soname_spec='${libname}${release}${shared_ext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+*)
+ dynamic_linker=no
+ ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+ test -n "$runpath_var_GCJ" || \
+ test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_GCJ" != no &&
+ # If the only mechanism to avoid hardcoding is shlibpath_var, we
+ # have to relink, otherwise we might link with an installed library
+ # when we should be linking with a yet-to-be-installed one
+ ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+ test "$hardcode_minus_L_GCJ" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_GCJ=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_GCJ=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; then
+ # Fast installation is not supported
+ enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+ test "$enable_shared" = no; then
+ # Fast installation is not necessary
+ enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+ case $host_os in
+ darwin*)
+ if test -n "$STRIP" ; then
+ striplib="$STRIP -x"
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ ;;
+ *)
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+ ;;
+ esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+ enable_dlopen=unknown
+ enable_dlopen_self=unknown
+ enable_dlopen_self_static=unknown
+else
+ lt_cv_dlopen=no
+ lt_cv_dlopen_libs=
+
+ case $host_os in
+ beos*)
+ lt_cv_dlopen="load_add_on"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+ ;;
+
+ mingw* | pw32*)
+ lt_cv_dlopen="LoadLibrary"
+ lt_cv_dlopen_libs=
+ ;;
+
+ cygwin*)
+ lt_cv_dlopen="dlopen"
+ lt_cv_dlopen_libs=
+ ;;
+
+ darwin*)
+ # if libdl is installed we need to link against it
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+ lt_cv_dlopen="dyld"
+ lt_cv_dlopen_libs=
+ lt_cv_dlopen_self=yes
+
+fi
+
+ ;;
+
+ *)
+ echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+ ;;
+ esac
+
+ if test "x$lt_cv_dlopen" != xno; then
+ enable_dlopen=yes
+ else
+ enable_dlopen=no
+ fi
+
+ case $lt_cv_dlopen in
+ dlopen)
+ save_CPPFLAGS="$CPPFLAGS"
+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+ save_LDFLAGS="$LDFLAGS"
+ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+ save_LIBS="$LIBS"
+ LIBS="$lt_cv_dlopen_libs $LIBS"
+
+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 18453 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+ if test "x$lt_cv_dlopen_self" = xyes; then
+ LDFLAGS="$LDFLAGS $link_static_flag"
+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then :
+ lt_cv_dlopen_self_static=cross
+else
+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+#line 18551 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LT_DLGLOBAL RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+# define LT_DLGLOBAL DL_GLOBAL
+# else
+# define LT_DLGLOBAL 0
+# endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+ find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+# ifdef RTLD_LAZY
+# define LT_DLLAZY_OR_NOW RTLD_LAZY
+# else
+# ifdef DL_LAZY
+# define LT_DLLAZY_OR_NOW DL_LAZY
+# else
+# ifdef RTLD_NOW
+# define LT_DLLAZY_OR_NOW RTLD_NOW
+# else
+# ifdef DL_NOW
+# define LT_DLLAZY_OR_NOW DL_NOW
+# else
+# define LT_DLLAZY_OR_NOW 0
+# endif
+# endif
+# endif
+# endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+ int status = $lt_dlunknown;
+
+ if (self)
+ {
+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore;
+ else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+ /* dlclose (self); */
+ }
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+ (./conftest; exit; ) >&5 2>/dev/null
+ lt_status=$?
+ case x$lt_status in
+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+ x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+ esac
+ else :
+ # compilation failed
+ lt_cv_dlopen_self_static=no
+ fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+ fi
+
+ CPPFLAGS="$save_CPPFLAGS"
+ LDFLAGS="$save_LDFLAGS"
+ LIBS="$save_LIBS"
+ ;;
+ esac
+
+ case $lt_cv_dlopen_self in
+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+ *) enable_dlopen_self=unknown ;;
+ esac
+
+ case $lt_cv_dlopen_self_static in
+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+ *) enable_dlopen_self_static=unknown ;;
+ esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_GCJ \
+ CC_GCJ \
+ LD_GCJ \
+ lt_prog_compiler_wl_GCJ \
+ lt_prog_compiler_pic_GCJ \
+ lt_prog_compiler_static_GCJ \
+ lt_prog_compiler_no_builtin_flag_GCJ \
+ export_dynamic_flag_spec_GCJ \
+ thread_safe_flag_spec_GCJ \
+ whole_archive_flag_spec_GCJ \
+ enable_shared_with_static_runtimes_GCJ \
+ old_archive_cmds_GCJ \
+ old_archive_from_new_cmds_GCJ \
+ predep_objects_GCJ \
+ postdep_objects_GCJ \
+ predeps_GCJ \
+ postdeps_GCJ \
+ compiler_lib_search_path_GCJ \
+ archive_cmds_GCJ \
+ archive_expsym_cmds_GCJ \
+ postinstall_cmds_GCJ \
+ postuninstall_cmds_GCJ \
+ old_archive_from_expsyms_cmds_GCJ \
+ allow_undefined_flag_GCJ \
+ no_undefined_flag_GCJ \
+ export_symbols_cmds_GCJ \
+ hardcode_libdir_flag_spec_GCJ \
+ hardcode_libdir_flag_spec_ld_GCJ \
+ hardcode_libdir_separator_GCJ \
+ hardcode_automatic_GCJ \
+ module_cmds_GCJ \
+ module_expsym_cmds_GCJ \
+ lt_cv_prog_compiler_c_o_GCJ \
+ exclude_expsyms_GCJ \
+ include_expsyms_GCJ; do
+
+ case $var in
+ old_archive_cmds_GCJ | \
+ old_archive_from_new_cmds_GCJ | \
+ archive_cmds_GCJ | \
+ archive_expsym_cmds_GCJ | \
+ module_cmds_GCJ | \
+ module_expsym_cmds_GCJ | \
+ old_archive_from_expsyms_cmds_GCJ | \
+ export_symbols_cmds_GCJ | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # See if we are running on zsh, and set the options which allow our commands through
+ # without removal of \ escapes.
+ if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+ fi
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_RC \
+ CC_RC \
+ LD_RC \
+ lt_prog_compiler_wl_RC \
+ lt_prog_compiler_pic_RC \
+ lt_prog_compiler_static_RC \
+ lt_prog_compiler_no_builtin_flag_RC \
+ export_dynamic_flag_spec_RC \
+ thread_safe_flag_spec_RC \
+ whole_archive_flag_spec_RC \
+ enable_shared_with_static_runtimes_RC \
+ old_archive_cmds_RC \
+ old_archive_from_new_cmds_RC \
+ predep_objects_RC \
+ postdep_objects_RC \
+ predeps_RC \
+ postdeps_RC \
+ compiler_lib_search_path_RC \
+ archive_cmds_RC \
+ archive_expsym_cmds_RC \
+ postinstall_cmds_RC \
+ postuninstall_cmds_RC \
+ old_archive_from_expsyms_cmds_RC \
+ allow_undefined_flag_RC \
+ no_undefined_flag_RC \
+ export_symbols_cmds_RC \
+ hardcode_libdir_flag_spec_RC \
+ hardcode_libdir_flag_spec_ld_RC \
+ hardcode_libdir_separator_RC \
+ hardcode_automatic_RC \
+ module_cmds_RC \
+ module_expsym_cmds_RC \
+ lt_cv_prog_compiler_c_o_RC \
+ exclude_expsyms_RC \
+ include_expsyms_RC; do
+
+ case $var in
+ old_archive_cmds_RC | \
+ old_archive_from_new_cmds_RC | \
+ archive_cmds_RC | \
+ archive_expsym_cmds_RC | \
+ module_cmds_RC | \
+ module_expsym_cmds_RC | \
+ old_archive_from_expsyms_cmds_RC | \
+ export_symbols_cmds_RC | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names. First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+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
+
+CC="$lt_save_CC"
+
+ ;;
+
+ *)
+ { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# NTP has (so far) been relying on leading-edge autogen.
+# Therefore, by default:
+# - use the version we ship with
+# - do not install it
+# - build a static copy (AC_DISABLE_SHARED - done earlier)
+case "${enable_local_libopts+set}" in
+ set) ;;
+ *) enable_local_libopts=yes ;;
+esac
+case "${enable_libopts_install+set}" in
+ set) ;;
+ *) enable_libopts_install=no ;;
+esac
+
+ NEED_LIBOPTS_DIR=''
+
+ LIBOPTS_DIR=libopts
+
+ # Check whether --enable-local-libopts or --disable-local-libopts was given.
+if test "${enable_local_libopts+set}" = set; then
+ enableval="$enable_local_libopts"
+
+ if test x$enableval = xyes ; then
+ { echo "$as_me:$LINENO: Using supplied libopts tearoff" >&5
+echo "$as_me: Using supplied libopts tearoff" >&6;}
+ LIBOPTS_LDADD='$(top_builddir)/libopts/libopts.la'
+ LIBOPTS_CFLAGS='-I$(top_srcdir)/libopts'
+ NEED_LIBOPTS_DIR=true
+ fi
+fi;
+
+ # Check whether --enable-libopts-install or --disable-libopts-install was given.
+if test "${enable_libopts_install+set}" = set; then
+ enableval="$enable_libopts_install"
+
+fi;
+
+
+if test "X${enable_libopts_install}" != Xno; then
+ INSTALL_LIBOPTS_TRUE=
+ INSTALL_LIBOPTS_FALSE='#'
+else
+ INSTALL_LIBOPTS_TRUE='#'
+ INSTALL_LIBOPTS_FALSE=
+fi
+
+
+ if test -z "${NEED_LIBOPTS_DIR}" ; then
+ echo "$as_me:$LINENO: checking whether autoopts-config can be found" >&5
+echo $ECHO_N "checking whether autoopts-config can be found... $ECHO_C" >&6
+
+# Check whether --with-autoopts-config or --without-autoopts-config was given.
+if test "${with_autoopts_config+set}" = set; then
+ withval="$with_autoopts_config"
+ lo_cv_with_autoopts_config=${with_autoopts_config}
+else
+ echo "$as_me:$LINENO: checking whether autoopts-config is specified" >&5
+echo $ECHO_N "checking whether autoopts-config is specified... $ECHO_C" >&6
+if test "${lo_cv_with_autoopts_config+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if autoopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=autoopts-config
+ elif libopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=libopts-config
+ else lo_cv_with_autoopts_config=no ; fi
+fi
+echo "$as_me:$LINENO: result: $lo_cv_with_autoopts_config" >&5
+echo "${ECHO_T}$lo_cv_with_autoopts_config" >&6
+
+fi; # end of AC_ARG_WITH
+
+ if test "${lo_cv_test_autoopts+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test -z "${lo_cv_with_autoopts_config}" \
+ -o X"${lo_cv_with_autoopts_config}" = Xno
+ then
+ if autoopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=autoopts-config
+ elif libopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=libopts-config
+ else lo_cv_with_autoopts_config=false ; fi
+ fi
+ lo_cv_test_autoopts=`
+ ${lo_cv_with_autoopts_config} --libs` 2> /dev/null
+ if test $? -ne 0 -o -z "${lo_cv_test_autoopts}"
+ then lo_cv_test_autoopts=no ; fi
+
+fi
+ # end of CACHE_VAL
+ echo "$as_me:$LINENO: result: ${lo_cv_test_autoopts}" >&5
+echo "${ECHO_T}${lo_cv_test_autoopts}" >&6
+
+ if test "X${lo_cv_test_autoopts}" != Xno
+ then
+ LIBOPTS_LDADD="${lo_cv_test_autoopts}"
+ LIBOPTS_CFLAGS="`${lo_cv_with_autoopts_config} --cflags`"
+ else
+ LIBOPTS_LDADD='$(top_builddir)/libopts/libopts.la'
+ LIBOPTS_CFLAGS='-I$(top_srcdir)/libopts'
+ NEED_LIBOPTS_DIR=true
+ fi
+ fi # end of if test -z "${NEED_LIBOPTS_DIR}"
+
+
+
+if test -n "${NEED_LIBOPTS_DIR}"; then
+ NEED_LIBOPTS_TRUE=
+ NEED_LIBOPTS_FALSE='#'
+else
+ NEED_LIBOPTS_TRUE='#'
+ NEED_LIBOPTS_FALSE=
+fi
+
+
+
+ LIBOPTS_DIR=libopts
+
+ ac_config_files="$ac_config_files libopts/Makefile"
+
+
+
+ if test -n "${NEED_LIBOPTS_DIR}" ; then
+
+
+if test X${INVOKE_LIBOPTS_MACROS_FIRST_done} != Xyes ; then
+ # =================
+ # AC_HEADER_STDC
+ # =================
+ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
if test "${ac_cv_header_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3069,11 +19756,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3086,12 +19783,11 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_stdc=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3113,7 +19809,6 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3138,7 +19833,6 @@ if test $ac_cv_header_stdc = yes; then
:
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3150,9 +19844,9 @@ cat >>conftest.$ac_ext <<_ACEOF
# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
#else
# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
#endif
@@ -3163,7 +19857,7 @@ main ()
int i;
for (i = 0; i < 256; i++)
if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
+ || toupper (i) != TOUPPER (i))
exit(2);
exit (0);
}
@@ -3188,7 +19882,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
ac_cv_header_stdc=no
fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
fi
@@ -3202,43 +19896,4637 @@ _ACEOF
fi
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+ # =================
+ # AC_HEADER_DIRENT
+ # =================
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+ as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
+echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <$ac_hdr>
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+_ACEOF
+ac_header_dirent=$ac_hdr; break
+fi
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+ echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
+if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_opendir=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_opendir" = no; then
+ for ac_lib in dir; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6
+if test "$ac_cv_search_opendir" != no; then
+ test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+
+fi
+
+else
+ echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
+if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_opendir=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_opendir" = no; then
+ for ac_lib in x; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6
+if test "$ac_cv_search_opendir" != no; then
+ test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+
+fi
+
+fi
+
+
+ # =================
+ # AC_CHECK_HEADERS
+ # =================
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_header in dlfcn.h errno.h fcntl.h libgen.h memory.h netinet/in.h \
+ setjmp.h sys/mman.h sys/param.h sys/poll.h sys/procset.h sys/select.h \
+ sys/socket.h sys/stropts.h sys/time.h sys/un.h sys/wait.h unistd.h \
+ utime.h sysexits.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
echo "$as_me:$LINENO: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ # --------------------------------------------
+ # Verify certain entries from AC_CHECK_HEADERS
+ # --------------------------------------------
+ for f in sys_types sys_mman sys_param sys_stat sys_wait \
+ string errno stdlib memory setjmp
+ do eval as_ac_var=\${ac_cv_header_${f}_h+set}
+ test "${as_ac_var}" = set || \
+ { { echo "$as_me:$LINENO: error: You must have ${f}.h on your system" >&5
+echo "$as_me: error: You must have ${f}.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ done
+
+ # ================================================
+ # AC_CHECK_HEADERS: stdarg.h is present define HAVE_STDARG_H, otherwise
+ # if varargs.h is present define HAVE_VARARGS_H.
+ # ================================================
+
+
+for ac_header in stdarg.h varargs.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have stdarg.h or varargs.h on your system" >&5
+echo "$as_me: error: You must have stdarg.h or varargs.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # ================================================
+ # Similarly for the string.h and strings.h headers
+ # ================================================
+
+
+for ac_header in string.h strings.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
#include <$ac_header>
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have string.h or strings.h on your system" >&5
+echo "$as_me: error: You must have string.h or strings.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # =====================
+ # ...and limits headers
+ # =====================
+
+
+
+for ac_header in limits.h sys/limits.h values.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have one of limits.h, sys/limits.h or values.h" >&5
+echo "$as_me: error: You must have one of limits.h, sys/limits.h or values.h" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # ========================
+ # ...and int types headers
+ # ========================
+
+
+for ac_header in stdint.h inttypes.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ echo "$as_me:$LINENO: checking for int8_t" >&5
+echo $ECHO_N "checking for int8_t... $ECHO_C" >&6
+if test "${ac_cv_type_int8_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int8_t *) 0)
+ return 0;
+if (sizeof (int8_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int8_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int8_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5
+echo "${ECHO_T}$ac_cv_type_int8_t" >&6
+if test $ac_cv_type_int8_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT8_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint8_t" >&5
+echo $ECHO_N "checking for uint8_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint8_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint8_t *) 0)
+ return 0;
+if (sizeof (uint8_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint8_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint8_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint8_t" >&6
+if test $ac_cv_type_uint8_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT8_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for int16_t" >&5
+echo $ECHO_N "checking for int16_t... $ECHO_C" >&6
+if test "${ac_cv_type_int16_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int16_t *) 0)
+ return 0;
+if (sizeof (int16_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int16_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int16_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5
+echo "${ECHO_T}$ac_cv_type_int16_t" >&6
+if test $ac_cv_type_int16_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT16_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint16_t" >&5
+echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint16_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint16_t *) 0)
+ return 0;
+if (sizeof (uint16_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint16_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint16_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint16_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint16_t" >&6
+if test $ac_cv_type_uint16_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT16_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for int32_t" >&5
+echo $ECHO_N "checking for int32_t... $ECHO_C" >&6
+if test "${ac_cv_type_int32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int32_t *) 0)
+ return 0;
+if (sizeof (int32_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int32_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int32_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5
+echo "${ECHO_T}$ac_cv_type_int32_t" >&6
+if test $ac_cv_type_int32_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT32_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint32_t" >&5
+echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint32_t *) 0)
+ return 0;
+if (sizeof (uint32_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint32_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint32_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint32_t" >&6
+if test $ac_cv_type_uint32_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT32_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for intptr_t" >&5
+echo $ECHO_N "checking for intptr_t... $ECHO_C" >&6
+if test "${ac_cv_type_intptr_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((intptr_t *) 0)
+ return 0;
+if (sizeof (intptr_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_intptr_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_intptr_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_intptr_t" >&5
+echo "${ECHO_T}$ac_cv_type_intptr_t" >&6
+if test $ac_cv_type_intptr_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INTPTR_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint_t" >&5
+echo $ECHO_N "checking for uint_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint_t *) 0)
+ return 0;
+if (sizeof (uint_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint_t" >&6
+if test $ac_cv_type_uint_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT_T 1
+_ACEOF
+
+
+fi
+
+
+ # ====================
+ # uintptr type & sizes
+ # ====================
+ echo "$as_me:$LINENO: checking for uintptr_t" >&5
+echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6
+if test "${ac_cv_type_uintptr_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uintptr_t *) 0)
+ return 0;
+if (sizeof (uintptr_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uintptr_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uintptr_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5
+echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6
+if test $ac_cv_type_uintptr_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINTPTR_T 1
+_ACEOF
+
+
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define uintptr_t unsigned long
+_ACEOF
+
+fi
+
+ echo "$as_me:$LINENO: checking for char*" >&5
+echo $ECHO_N "checking for char*... $ECHO_C" >&6
+if test "${ac_cv_type_charp+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((char* *) 0)
+ return 0;
+if (sizeof (char*))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_charp=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_charp=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_charp" >&5
+echo "${ECHO_T}$ac_cv_type_charp" >&6
+
+echo "$as_me:$LINENO: checking size of char*" >&5
+echo $ECHO_N "checking size of char*... $ECHO_C" >&6
+if test "${ac_cv_sizeof_charp+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_charp" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_charp=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (char*)); }
+unsigned long ulongval () { return (long) (sizeof (char*)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (char*))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (char*))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (char*))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_charp=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_charp=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_charp" >&5
+echo "${ECHO_T}$ac_cv_sizeof_charp" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_CHARP $ac_cv_sizeof_charp
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for int" >&5
+echo $ECHO_N "checking for int... $ECHO_C" >&6
+if test "${ac_cv_type_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int *) 0)
+ return 0;
+if (sizeof (int))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
+echo "${ECHO_T}$ac_cv_type_int" >&6
+
+echo "$as_me:$LINENO: checking size of int" >&5
+echo $ECHO_N "checking size of int... $ECHO_C" >&6
+if test "${ac_cv_sizeof_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_int" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_int=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (int)); }
+unsigned long ulongval () { return (long) (sizeof (int)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (int))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_int=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_int=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
+echo "${ECHO_T}$ac_cv_sizeof_int" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for long" >&5
+echo $ECHO_N "checking for long... $ECHO_C" >&6
+if test "${ac_cv_type_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((long *) 0)
+ return 0;
+if (sizeof (long))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_long=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_long=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
+echo "${ECHO_T}$ac_cv_type_long" >&6
+
+echo "$as_me:$LINENO: checking size of long" >&5
+echo $ECHO_N "checking size of long... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_long" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (long)); }
+unsigned long ulongval () { return (long) (sizeof (long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (long))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_long=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_long=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for short" >&5
+echo $ECHO_N "checking for short... $ECHO_C" >&6
+if test "${ac_cv_type_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((short *) 0)
+ return 0;
+if (sizeof (short))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_short=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_short=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
+echo "${ECHO_T}$ac_cv_type_short" >&6
+
+echo "$as_me:$LINENO: checking size of short" >&5
+echo $ECHO_N "checking size of short... $ECHO_C" >&6
+if test "${ac_cv_sizeof_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_short" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_short=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (short)); }
+unsigned long ulongval () { return (long) (sizeof (short)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (short))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_short=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_short=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
+echo "${ECHO_T}$ac_cv_sizeof_short" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+_ACEOF
+
+
+
+ # ----------------------------------------------------------------------
+ # AC_CHECK_LIB for SVR4 libgen, and use it if it defines pathfind.
+ # ----------------------------------------------------------------------
+
+echo "$as_me:$LINENO: checking for pathfind in -lgen" >&5
+echo $ECHO_N "checking for pathfind in -lgen... $ECHO_C" >&6
+if test "${ac_cv_lib_gen_pathfind+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgen $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char pathfind ();
+int
+main ()
+{
+pathfind ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_gen_pathfind=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_gen_pathfind=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_gen_pathfind" >&5
+echo "${ECHO_T}$ac_cv_lib_gen_pathfind" >&6
+if test $ac_cv_lib_gen_pathfind = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBGEN 1
+_ACEOF
+
+ LIBS="-lgen $LIBS"
+
+fi
+
+
+for ac_func in vprintf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+echo "$as_me:$LINENO: checking for _doprnt" >&5
+echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6
+if test "${ac_cv_func__doprnt+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define _doprnt to an innocuous variant, in case <limits.h> declares _doprnt.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define _doprnt innocuous__doprnt
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char _doprnt (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef _doprnt
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char _doprnt ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub__doprnt) || defined (__stub____doprnt)
+choke me
+#else
+char (*f) () = _doprnt;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != _doprnt;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func__doprnt=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func__doprnt=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5
+echo "${ECHO_T}$ac_cv_func__doprnt" >&6
+if test $ac_cv_func__doprnt = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DOPRNT 1
+_ACEOF
+
+fi
+
+fi
+done
+
+
+
+
+
+
+
+
+for ac_func in mmap canonicalize_file_name snprintf strdup strchr strrchr
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ INVOKE_LIBOPTS_MACROS_FIRST_done=yes
+fi
+ # Check to see if a reg expr header is specified.
+
+
+# Check whether --with-regex-header or --without-regex-header was given.
+if test "${with_regex_header+set}" = set; then
+ withval="$with_regex_header"
+ libopts_cv_with_regex_header=${with_regex_header}
+else
+ echo "$as_me:$LINENO: checking whether a reg expr header is specified" >&5
+echo $ECHO_N "checking whether a reg expr header is specified... $ECHO_C" >&6
+if test "${libopts_cv_with_regex_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ libopts_cv_with_regex_header=no
+fi
+echo "$as_me:$LINENO: result: $libopts_cv_with_regex_header" >&5
+echo "${ECHO_T}$libopts_cv_with_regex_header" >&6
+
+fi; # end of AC_ARG_WITH
+
+ if test "X${libopts_cv_with_regex_header}" != Xno
+ then
+ cat >>confdefs.h <<_ACEOF
+#define REGEX_HEADER <${libopts_cv_with_regex_header}>
+_ACEOF
+
+ else
+
+cat >>confdefs.h <<\_ACEOF
+#define REGEX_HEADER <regex.h>
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if a working libregex can be found.
+
+
+# Check whether --with-libregex or --without-libregex was given.
+if test "${with_libregex+set}" = set; then
+ withval="$with_libregex"
+ libopts_cv_with_libregex_root=${with_libregex}
+else
+ echo "$as_me:$LINENO: checking whether with-libregex was specified" >&5
+echo $ECHO_N "checking whether with-libregex was specified... $ECHO_C" >&6
+if test "${libopts_cv_with_libregex_root+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ libopts_cv_with_libregex_root=no
+fi
+echo "$as_me:$LINENO: result: $libopts_cv_with_libregex_root" >&5
+echo "${ECHO_T}$libopts_cv_with_libregex_root" >&6
+
+fi; # end of AC_ARG_WITH libregex
+
+ if test "${with_libguile+set}" = set && \
+ test "${withval}" = no
+ then ## disabled by request
+ libopts_cv_with_libregex_root=no
+ libopts_cv_with_libregex_cflags=no
+ libopts_cv_with_libregex_libs=no
+ else
+
+
+# Check whether --with-libregex-cflags or --without-libregex-cflags was given.
+if test "${with_libregex_cflags+set}" = set; then
+ withval="$with_libregex_cflags"
+ libopts_cv_with_libregex_cflags=${with_regex_cflags}
+else
+ echo "$as_me:$LINENO: checking whether with-libregex-cflags was specified" >&5
+echo $ECHO_N "checking whether with-libregex-cflags was specified... $ECHO_C" >&6
+if test "${libopts_cv_with_libregex_cflags+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ libopts_cv_with_libregex_cflags=no
+fi
+echo "$as_me:$LINENO: result: $libopts_cv_with_libregex_cflags" >&5
+echo "${ECHO_T}$libopts_cv_with_libregex_cflags" >&6
+
+fi; # end of AC_ARG_WITH libregex-cflags
+
+
+# Check whether --with-libregex-libs or --without-libregex-libs was given.
+if test "${with_libregex_libs+set}" = set; then
+ withval="$with_libregex_libs"
+ libopts_cv_with_libregex_libs=${with_regex_libs}
+else
+ echo "$as_me:$LINENO: checking whether with-libregex-libs was specified" >&5
+echo $ECHO_N "checking whether with-libregex-libs was specified... $ECHO_C" >&6
+if test "${libopts_cv_with_libregex_libs+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ libopts_cv_with_libregex_libs=no
+fi
+echo "$as_me:$LINENO: result: $libopts_cv_with_libregex_libs" >&5
+echo "${ECHO_T}$libopts_cv_with_libregex_libs" >&6
+
+fi; # end of AC_ARG_WITH libregex-libs
+
+ case "X${libopts_cv_with_libregex_cflags}" in
+ Xyes|Xno|X )
+ case "X${libopts_cv_with_libregex_root}" in
+ Xyes|Xno|X ) libopts_cv_with_libregex_cflags=no ;;
+ * ) libopts_cv_with_libregex_cflags=-I${libopts_cv_with_libregex_root}/include ;;
+ esac
+ esac
+ case "X${libopts_cv_with_libregex_libs}" in
+ Xyes|Xno|X )
+ case "X${libopts_cv_with_libregex_root}" in
+ Xyes|Xno|X ) libopts_cv_with_libregex_libs=no ;;
+ * ) libopts_cv_with_libregex_libs="-L${libopts_cv_with_libregex_root}/lib -lregex";;
+ esac
+ esac
+ libopts_save_CPPFLAGS="${CPPFLAGS}"
+ libopts_save_LIBS="${LIBS}"
+ fi ## disabled by request
+
+ case "X${libopts_cv_with_libregex_cflags}" in
+ Xyes|Xno|X )
+ libopts_cv_with_libregex_cflags="" ;;
+ * ) CPPFLAGS="${CPPFLAGS} ${libopts_cv_with_libregex_cflags}" ;;
+ esac
+ case "X${libopts_cv_with_libregex_libs}" in
+ Xyes|Xno|X )
+ libopts_cv_with_libregex_libs="" ;;
+ * )
+ LIBS="${LIBS} ${libopts_cv_with_libregex_libs}" ;;
+ esac
+ LIBREGEX_CFLAGS=""
+ LIBREGEX_LIBS=""
+ echo "$as_me:$LINENO: checking whether libregex functions properly" >&5
+echo $ECHO_N "checking whether libregex functions properly... $ECHO_C" >&6
+ if test "${libopts_cv_with_libregex+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_with_libregex=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include REGEX_HEADER
+static regex_t re;
+void comp_re( char const* pzPat ) {
+ int res = regcomp( &re, pzPat, REG_EXTENDED|REG_ICASE|REG_NEWLINE );
+ if (res == 0) return;
+ exit( res ); }
+int main() {
+ regmatch_t m[2];
+ comp_re( "^.*\$" );
+ comp_re( "()|no.*" );
+ comp_re( "." );
+ if (regexec( &re, "X", 2, m, 0 ) != 0) return 1;
+ if ((m[0].rm_so != 0) || (m[0].rm_eo != 1)) {
+ fputs( "error: regex -->.<-- did not match\n", stderr );
+ return 1;
+ }
+ return 0; }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_with_libregex=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_with_libregex=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of AC_TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_with_libregex
+ echo "$as_me:$LINENO: result: ${libopts_cv_with_libregex}" >&5
+echo "${ECHO_T}${libopts_cv_with_libregex}" >&6
+
+ if test "X${libopts_cv_with_libregex}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define WITH_LIBREGEX 1
+_ACEOF
+
+ else
+ CPPFLAGS="${libopts_save_CPPFLAGS}"
+ LIBS="${libopts_save_LIBS}"
+ fi
+
+
+
+ # Check to see if pathfind(3) works.
+
+ echo "$as_me:$LINENO: checking whether pathfind(3) works" >&5
+echo $ECHO_N "checking whether pathfind(3) works... $ECHO_C" >&6
+ if test "${libopts_cv_run_pathfind+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_run_pathfind=no
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+#include <stdlib.h>
+int main (int argc, char** argv) {
+ char* pz = pathfind( getenv( "PATH" ), "sh", "x" );
+ return (pz == 0) ? 1 : 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_run_pathfind=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_run_pathfind=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_run_pathfind
+ echo "$as_me:$LINENO: result: ${libopts_cv_run_pathfind}" >&5
+echo "${ECHO_T}${libopts_cv_run_pathfind}" >&6
+
+ if test "X${libopts_cv_run_pathfind}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_PATHFIND 1
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if /dev/zero is readable device.
+
+ echo "$as_me:$LINENO: checking whether /dev/zero is readable device" >&5
+echo $ECHO_N "checking whether /dev/zero is readable device... $ECHO_C" >&6
+ if test "${libopts_cv_test_dev_zero+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ libopts_cv_test_dev_zero=`exec 2> /dev/null
+dzero=\`ls -lL /dev/zero | egrep ^c......r\`
+test -z "${dzero}" && exit 1
+echo ${dzero}`
+ if test $? -ne 0
+ then libopts_cv_test_dev_zero=no
+ elif test -z "$libopts_cv_test_dev_zero"
+ then libopts_cv_test_dev_zero=no
+ fi
+
+fi
+ # end of CACHE_VAL of libopts_cv_test_dev_zero
+ echo "$as_me:$LINENO: result: ${libopts_cv_test_dev_zero}" >&5
+echo "${ECHO_T}${libopts_cv_test_dev_zero}" >&6
+
+ if test "X${libopts_cv_test_dev_zero}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DEV_ZERO 1
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if we have a functional realpath(3C).
+
+ echo "$as_me:$LINENO: checking whether we have a functional realpath(3C)" >&5
+echo $ECHO_N "checking whether we have a functional realpath(3C)... $ECHO_C" >&6
+ if test "${libopts_cv_run_realpath+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_run_realpath=no
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <limits.h>
+#include <stdlib.h>
+int main (int argc, char** argv) {
+#ifndef PATH_MAX
+choke me!!
+#else
+ char zPath[PATH_MAX+1];
+#endif
+ char *pz = realpath(argv[0], zPath);
+ return (pz == zPath) ? 0 : 1;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_run_realpath=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_run_realpath=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_run_realpath
+ echo "$as_me:$LINENO: result: ${libopts_cv_run_realpath}" >&5
+echo "${ECHO_T}${libopts_cv_run_realpath}" >&6
+
+ if test "X${libopts_cv_run_realpath}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_REALPATH 1
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if strftime() works.
+
+ echo "$as_me:$LINENO: checking whether strftime() works" >&5
+echo $ECHO_N "checking whether strftime() works... $ECHO_C" >&6
+ if test "${libopts_cv_run_strftime+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_run_strftime=no
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <time.h>
+#include <string.h>
+char t_buf[ 64 ];
+int main() {
+ static char const z[] = "Thursday Aug 28 240";
+ struct tm tm;
+ tm.tm_sec = 36; /* seconds after the minute [0, 61] */
+ tm.tm_min = 44; /* minutes after the hour [0, 59] */
+ tm.tm_hour = 12; /* hour since midnight [0, 23] */
+ tm.tm_mday = 28; /* day of the month [1, 31] */
+ tm.tm_mon = 7; /* months since January [0, 11] */
+ tm.tm_year = 86; /* years since 1900 */
+ tm.tm_wday = 4; /* days since Sunday [0, 6] */
+ tm.tm_yday = 239; /* days since January 1 [0, 365] */
+ tm.tm_isdst = 1; /* flag for daylight savings time */
+ strftime( t_buf, sizeof( t_buf ), "%A %b %d %j", &tm );
+ return (strcmp( t_buf, z ) != 0); }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_run_strftime=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_run_strftime=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_run_strftime
+ echo "$as_me:$LINENO: result: ${libopts_cv_run_strftime}" >&5
+echo "${ECHO_T}${libopts_cv_run_strftime}" >&6
+
+ if test "X${libopts_cv_run_strftime}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRFTIME 1
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if fopen accepts "b" mode.
+
+ echo "$as_me:$LINENO: checking whether fopen accepts \"b\" mode" >&5
+echo $ECHO_N "checking whether fopen accepts \"b\" mode... $ECHO_C" >&6
+ if test "${libopts_cv_run_fopen_binary+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_run_fopen_binary=no
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+int main (int argc, char** argv) {
+FILE* fp = fopen("conftest.$ac_ext", "rb");
+return (fp == NULL) ? 1 : fclose(fp); }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_run_fopen_binary=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_run_fopen_binary=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_run_fopen_binary
+ echo "$as_me:$LINENO: result: ${libopts_cv_run_fopen_binary}" >&5
+echo "${ECHO_T}${libopts_cv_run_fopen_binary}" >&6
+
+ if test "X${libopts_cv_run_fopen_binary}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define FOPEN_BINARY_FLAG "b"
+_ACEOF
+
+ else
+
+cat >>confdefs.h <<\_ACEOF
+#define FOPEN_BINARY_FLAG ""
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if fopen accepts "t" mode.
+
+ echo "$as_me:$LINENO: checking whether fopen accepts \"t\" mode" >&5
+echo $ECHO_N "checking whether fopen accepts \"t\" mode... $ECHO_C" >&6
+ if test "${libopts_cv_run_fopen_text+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ if test "$cross_compiling" = yes; then
+ libopts_cv_run_fopen_text=no
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+int main (int argc, char** argv) {
+FILE* fp = fopen("conftest.$ac_ext", "rt");
+return (fp == NULL) ? 1 : fclose(fp); }
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ libopts_cv_run_fopen_text=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+libopts_cv_run_fopen_text=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi # end of TRY_RUN
+
+fi
+ # end of AC_CACHE_VAL for libopts_cv_run_fopen_text
+ echo "$as_me:$LINENO: result: ${libopts_cv_run_fopen_text}" >&5
+echo "${ECHO_T}${libopts_cv_run_fopen_text}" >&6
+
+ if test "X${libopts_cv_run_fopen_text}" != Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define FOPEN_TEXT_FLAG "t"
+_ACEOF
+
+ else
+
+cat >>confdefs.h <<\_ACEOF
+#define FOPEN_TEXT_FLAG ""
+_ACEOF
+
+ fi
+
+
+
+ # Check to see if not wanting optional option args.
+
+ # Check whether --enable-optional-args or --disable-optional-args was given.
+if test "${enable_optional_args+set}" = set; then
+ enableval="$enable_optional_args"
+ libopts_cv_enable_optional_args=${enable_optional_args}
+else
+ echo "$as_me:$LINENO: checking whether not wanting optional option args" >&5
+echo $ECHO_N "checking whether not wanting optional option args... $ECHO_C" >&6
+if test "${libopts_cv_enable_optional_args+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ libopts_cv_enable_optional_args=yes
+fi
+echo "$as_me:$LINENO: result: $libopts_cv_enable_optional_args" >&5
+echo "${ECHO_T}$libopts_cv_enable_optional_args" >&6
+
+fi; # end of AC_ARG_ENABLE
+
+ if test "X${libopts_cv_enable_optional_args}" = Xno
+ then
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_OPTIONAL_OPT_ARGS 1
+_ACEOF
+
+ fi
+
+
+
+
+ else
+
+if test X${INVOKE_LIBOPTS_MACROS_FIRST_done} != Xyes ; then
+ # =================
+ # AC_HEADER_STDC
+ # =================
+ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+ # =================
+ # AC_HEADER_DIRENT
+ # =================
+
+
+
+
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+ as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
+echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <$ac_hdr>
+
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3251,12 +24539,445 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_Header=no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+_ACEOF
+
+ac_header_dirent=$ac_hdr; break
+fi
+
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+ echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
+if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_opendir=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_opendir" = no; then
+ for ac_lib in dir; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6
+if test "$ac_cv_search_opendir" != no; then
+ test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+
+fi
+
+else
+ echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
+if test "${ac_cv_search_opendir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_opendir=no
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_opendir" = no; then
+ for ac_lib in x; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_opendir="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6
+if test "$ac_cv_search_opendir" != no; then
+ test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
+
+fi
+
+fi
+
+
+ # =================
+ # AC_CHECK_HEADERS
+ # =================
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_header in dlfcn.h errno.h fcntl.h libgen.h memory.h netinet/in.h \
+ setjmp.h sys/mman.h sys/param.h sys/poll.h sys/procset.h sys/select.h \
+ sys/socket.h sys/stropts.h sys/time.h sys/un.h sys/wait.h unistd.h \
+ utime.h sysexits.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
@@ -3265,19 +24986,346 @@ fi
done
+ # --------------------------------------------
+ # Verify certain entries from AC_CHECK_HEADERS
+ # --------------------------------------------
+ for f in sys_types sys_mman sys_param sys_stat sys_wait \
+ string errno stdlib memory setjmp
+ do eval as_ac_var=\${ac_cv_header_${f}_h+set}
+ test "${as_ac_var}" = set || \
+ { { echo "$as_me:$LINENO: error: You must have ${f}.h on your system" >&5
+echo "$as_me: error: You must have ${f}.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ done
+
+ # ================================================
+ # AC_CHECK_HEADERS: stdarg.h is present define HAVE_STDARG_H, otherwise
+ # if varargs.h is present define HAVE_VARARGS_H.
+ # ================================================
+
+
+for ac_header in stdarg.h varargs.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have stdarg.h or varargs.h on your system" >&5
+echo "$as_me: error: You must have stdarg.h or varargs.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # ================================================
+ # Similarly for the string.h and strings.h headers
+ # ================================================
+for ac_header in string.h strings.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+done
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have string.h or strings.h on your system" >&5
+echo "$as_me: error: You must have string.h or strings.h on your system" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ # =====================
+ # ...and limits headers
+ # =====================
-for ac_header in arpa/inet.h fcntl.h float.h limits.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h syslog.h unistd.h
+for ac_header in limits.h sys/limits.h values.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -3293,7 +25341,6 @@ else
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3304,11 +25351,21 @@ $ac_includes_default
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3321,7 +25378,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
@@ -3329,7 +25386,6 @@ echo "${ECHO_T}$ac_header_compiler" >&6
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3347,6 +25403,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
else
ac_cpp_err=
fi
@@ -3366,33 +25423,3220 @@ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
;;
- no:yes )
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ if test `eval echo '${'$as_ac_Header'}'` != yes; then
+ { { echo "$as_me:$LINENO: error: You must have one of limits.h, sys/limits.h or values.h" >&5
+echo "$as_me: error: You must have one of limits.h, sys/limits.h or values.h" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # ========================
+ # ...and int types headers
+ # ========================
+
+
+for ac_header in stdint.h inttypes.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ (
+ cat <<\_ASBOX
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
+_ASBOX
+ ) |
+ sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ break
+fi
+
+done
+
+ echo "$as_me:$LINENO: checking for int8_t" >&5
+echo $ECHO_N "checking for int8_t... $ECHO_C" >&6
+if test "${ac_cv_type_int8_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int8_t *) 0)
+ return 0;
+if (sizeof (int8_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int8_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int8_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5
+echo "${ECHO_T}$ac_cv_type_int8_t" >&6
+if test $ac_cv_type_int8_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT8_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint8_t" >&5
+echo $ECHO_N "checking for uint8_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint8_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint8_t *) 0)
+ return 0;
+if (sizeof (uint8_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint8_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint8_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint8_t" >&6
+if test $ac_cv_type_uint8_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT8_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for int16_t" >&5
+echo $ECHO_N "checking for int16_t... $ECHO_C" >&6
+if test "${ac_cv_type_int16_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int16_t *) 0)
+ return 0;
+if (sizeof (int16_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int16_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int16_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5
+echo "${ECHO_T}$ac_cv_type_int16_t" >&6
+if test $ac_cv_type_int16_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT16_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint16_t" >&5
+echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint16_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint16_t *) 0)
+ return 0;
+if (sizeof (uint16_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint16_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint16_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint16_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint16_t" >&6
+if test $ac_cv_type_uint16_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT16_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for int32_t" >&5
+echo $ECHO_N "checking for int32_t... $ECHO_C" >&6
+if test "${ac_cv_type_int32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int32_t *) 0)
+ return 0;
+if (sizeof (int32_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int32_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int32_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5
+echo "${ECHO_T}$ac_cv_type_int32_t" >&6
+if test $ac_cv_type_int32_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT32_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint32_t" >&5
+echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint32_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint32_t *) 0)
+ return 0;
+if (sizeof (uint32_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint32_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint32_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint32_t" >&6
+if test $ac_cv_type_uint32_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT32_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for intptr_t" >&5
+echo $ECHO_N "checking for intptr_t... $ECHO_C" >&6
+if test "${ac_cv_type_intptr_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((intptr_t *) 0)
+ return 0;
+if (sizeof (intptr_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_intptr_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_intptr_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_intptr_t" >&5
+echo "${ECHO_T}$ac_cv_type_intptr_t" >&6
+if test $ac_cv_type_intptr_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INTPTR_T 1
+_ACEOF
+
+
+fi
+echo "$as_me:$LINENO: checking for uint_t" >&5
+echo $ECHO_N "checking for uint_t... $ECHO_C" >&6
+if test "${ac_cv_type_uint_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uint_t *) 0)
+ return 0;
+if (sizeof (uint_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uint_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uint_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uint_t" >&5
+echo "${ECHO_T}$ac_cv_type_uint_t" >&6
+if test $ac_cv_type_uint_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINT_T 1
+_ACEOF
+
+
+fi
+
+
+ # ====================
+ # uintptr type & sizes
+ # ====================
+ echo "$as_me:$LINENO: checking for uintptr_t" >&5
+echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6
+if test "${ac_cv_type_uintptr_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((uintptr_t *) 0)
+ return 0;
+if (sizeof (uintptr_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_uintptr_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_uintptr_t=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5
+echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6
+if test $ac_cv_type_uintptr_t = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UINTPTR_T 1
+_ACEOF
+
+
+else
+
+cat >>confdefs.h <<\_ACEOF
+#define uintptr_t unsigned long
+_ACEOF
+
+fi
+
+ echo "$as_me:$LINENO: checking for char*" >&5
+echo $ECHO_N "checking for char*... $ECHO_C" >&6
+if test "${ac_cv_type_charp+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((char* *) 0)
+ return 0;
+if (sizeof (char*))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_charp=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_charp=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_charp" >&5
+echo "${ECHO_T}$ac_cv_type_charp" >&6
+
+echo "$as_me:$LINENO: checking size of char*" >&5
+echo $ECHO_N "checking size of char*... $ECHO_C" >&6
+if test "${ac_cv_sizeof_charp+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_charp" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (char*))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_charp=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (char*)); }
+unsigned long ulongval () { return (long) (sizeof (char*)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (char*))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (char*))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (char*))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_charp=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char*), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_charp=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_charp" >&5
+echo "${ECHO_T}$ac_cv_sizeof_charp" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_CHARP $ac_cv_sizeof_charp
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for int" >&5
+echo $ECHO_N "checking for int... $ECHO_C" >&6
+if test "${ac_cv_type_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((int *) 0)
+ return 0;
+if (sizeof (int))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_int=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_int=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
+echo "${ECHO_T}$ac_cv_type_int" >&6
+
+echo "$as_me:$LINENO: checking size of int" >&5
+echo $ECHO_N "checking size of int... $ECHO_C" >&6
+if test "${ac_cv_sizeof_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_int" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_int=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (int)); }
+unsigned long ulongval () { return (long) (sizeof (int)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (int))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (int))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_int=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_int=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
+echo "${ECHO_T}$ac_cv_sizeof_int" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for long" >&5
+echo $ECHO_N "checking for long... $ECHO_C" >&6
+if test "${ac_cv_type_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((long *) 0)
+ return 0;
+if (sizeof (long))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_long=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_long=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
+echo "${ECHO_T}$ac_cv_type_long" >&6
+
+echo "$as_me:$LINENO: checking size of long" >&5
+echo $ECHO_N "checking size of long... $ECHO_C" >&6
+if test "${ac_cv_sizeof_long+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_long" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (long)); }
+unsigned long ulongval () { return (long) (sizeof (long)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (long))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (long))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_long=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_long=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+ echo "$as_me:$LINENO: checking for short" >&5
+echo $ECHO_N "checking for short... $ECHO_C" >&6
+if test "${ac_cv_type_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+if ((short *) 0)
+ return 0;
+if (sizeof (short))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_short=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_type_short=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
+echo "${ECHO_T}$ac_cv_type_short" >&6
+
+echo "$as_me:$LINENO: checking size of short" >&5
+echo $ECHO_N "checking size of short... $ECHO_C" >&6
+if test "${ac_cv_sizeof_short+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_short" = yes; then
+ # The cast to unsigned long works around a bug in the HP C Compiler
+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+ # This bug is HP SR number 8606223364.
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo= ac_hi=
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_short=$ac_lo;;
+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+long longval () { return (long) (sizeof (short)); }
+unsigned long ulongval () { return (long) (sizeof (short)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ exit (1);
+ if (((long) (sizeof (short))) < 0)
+ {
+ long i = longval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long i = ulongval ();
+ if (i != ((long) (sizeof (short))))
+ exit (1);
+ fprintf (f, "%lu\n", i);
+ }
+ exit (ferror (f) || fclose (f) != 0);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_short=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (short), 77
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+rm -f conftest.val
+else
+ ac_cv_sizeof_short=0
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
+echo "${ECHO_T}$ac_cv_sizeof_short" >&6
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+_ACEOF
+
+
+
+ # ----------------------------------------------------------------------
+ # AC_CHECK_LIB for SVR4 libgen, and use it if it defines pathfind.
+ # ----------------------------------------------------------------------
+
+echo "$as_me:$LINENO: checking for pathfind in -lgen" >&5
+echo $ECHO_N "checking for pathfind in -lgen... $ECHO_C" >&6
+if test "${ac_cv_lib_gen_pathfind+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgen $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char pathfind ();
+int
+main ()
+{
+pathfind ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_gen_pathfind=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_gen_pathfind=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_gen_pathfind" >&5
+echo "${ECHO_T}$ac_cv_lib_gen_pathfind" >&6
+if test $ac_cv_lib_gen_pathfind = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBGEN 1
+_ACEOF
+
+ LIBS="-lgen $LIBS"
+
+fi
+
+
+for ac_func in vprintf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+echo "$as_me:$LINENO: checking for _doprnt" >&5
+echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6
+if test "${ac_cv_func__doprnt+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define _doprnt to an innocuous variant, in case <limits.h> declares _doprnt.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define _doprnt innocuous__doprnt
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char _doprnt (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef _doprnt
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char _doprnt ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub__doprnt) || defined (__stub____doprnt)
+choke me
+#else
+char (*f) () = _doprnt;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != _doprnt;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func__doprnt=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func__doprnt=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5
+echo "${ECHO_T}$ac_cv_func__doprnt" >&6
+if test $ac_cv_func__doprnt = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DOPRNT 1
+_ACEOF
+
+fi
+
+fi
+done
+
+
+
+
+
+
+
+
+for ac_func in mmap canonicalize_file_name snprintf strdup strchr strrchr
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ INVOKE_LIBOPTS_MACROS_FIRST_done=yes
+fi
+ fi
+# end of AC_DEFUN of LIBOPTS_CHECK
+
+
+echo "$as_me:$LINENO: checking if $CC can handle #warning" >&5
+echo $ECHO_N "checking if $CC can handle #warning... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#warning foo
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_cpp_warning=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_cpp_warning=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_cv_cpp_warning" >&5
+echo "${ECHO_T}$ac_cv_cpp_warning" >&6
+
+case "$ac_cv_cpp_warning" in
+ no)
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_OPTION_NAME_WARNINGS 1
+_ACEOF
+
+ echo "$as_me:$LINENO: result: Enabling NO_OPTION_NAME_WARNINGS as #warning does not work" >&5
+echo "${ECHO_T}Enabling NO_OPTION_NAME_WARNINGS as #warning does not work" >&6
+ ;;
+esac
+
+# Checks for libraries.
+
+# Checks for header files.
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_header in arpa/inet.h fcntl.h float.h limits.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h syslog.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+ # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
(
cat <<\_ASBOX
-## ------------------------------------ ##
-## Report this to bug-autoconf@gnu.org. ##
-## ------------------------------------ ##
+## ------------------------------------------ ##
+## Report this to the AC_PACKAGE_NAME lists. ##
+## ------------------------------------------ ##
_ASBOX
) |
sed "s/^/$as_me: WARNING: /" >&2
@@ -3403,7 +28647,7 @@ echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- eval "$as_ac_Header=$ac_header_preproc"
+ eval "$as_ac_Header=\$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
@@ -3426,7 +28670,6 @@ if test "${ac_cv_c_const+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3489,11 +28732,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3506,7 +28759,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_c_const=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
echo "${ECHO_T}$ac_cv_c_const" >&6
@@ -3524,7 +28777,6 @@ if test "${ac_cv_type_size_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3544,11 +28796,21 @@ if (sizeof (size_t))
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3561,7 +28823,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_size_t=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
echo "${ECHO_T}$ac_cv_type_size_t" >&6
@@ -3581,7 +28843,6 @@ if test "${ac_cv_header_time+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3602,11 +28863,21 @@ return 0;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3619,7 +28890,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_header_time=no
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
echo "${ECHO_T}$ac_cv_header_time" >&6
@@ -3637,7 +28908,6 @@ if test "${ac_cv_struct_tm+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3656,11 +28926,21 @@ struct tm *tp; tp->tm_sec;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3673,7 +28953,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_struct_tm=sys/time.h
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
echo "${ECHO_T}$ac_cv_struct_tm" >&6
@@ -3693,7 +28973,6 @@ if test "${ac_cv_have_ss_family_in_struct_ss+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3713,11 +28992,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3730,18 +29019,20 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_have_ss_family_in_struct_ss="no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_have_ss_family_in_struct_ss" >&5
echo "${ECHO_T}$ac_cv_have_ss_family_in_struct_ss" >&6
-if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
+case "$ac_cv_have_ss_family_in_struct_ss" in
+ yes)
cat >>confdefs.h <<\_ACEOF
#define HAVE_SS_FAMILY_IN_SS 1
_ACEOF
-fi
+ ;;
+esac
echo "$as_me:$LINENO: checking for __ss_family field in struct sockaddr_storage" >&5
echo $ECHO_N "checking for __ss_family field in struct sockaddr_storage... $ECHO_C" >&6
@@ -3750,7 +29041,6 @@ if test "${ac_cv_have___ss_family_in_struct_ss+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3770,11 +29060,21 @@ main ()
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3788,26 +29088,30 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_have___ss_family_in_struct_ss="no"
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_have___ss_family_in_struct_ss" >&5
echo "${ECHO_T}$ac_cv_have___ss_family_in_struct_ss" >&6
-if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
+case "$ac_cv_have___ss_family_in_struct_ss" in
+ yes)
cat >>confdefs.h <<\_ACEOF
#define HAVE___SS_FAMILY_IN_SS 1
_ACEOF
-fi
+ ;;
+esac
case "$ac_cv_have_ss_family_in_struct_ss$ac_cv_have___ss_family_in_struct_ss" in
noyes)
- cat >>confdefs.h <<_ACEOF
+
+cat >>confdefs.h <<_ACEOF
#define ss_family __ss_family
_ACEOF
- cat >>confdefs.h <<_ACEOF
+
+cat >>confdefs.h <<_ACEOF
#define ss_len __ss_len
_ACEOF
@@ -3824,13 +29128,12 @@ else
ac_cv_func_memcmp_working=no
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-
+$ac_includes_default
int
main ()
{
@@ -3849,12 +29152,12 @@ main ()
int i;
for (i = 0; i < 4; i++)
{
- char *a = foo + i;
- char *b = bar + i;
- strcpy (a, "--------01111111");
- strcpy (b, "--------10000000");
- if (memcmp (a, b, 16) >= 0)
- exit (1);
+ char *a = foo + i;
+ char *b = bar + i;
+ strcpy (a, "--------01111111");
+ strcpy (b, "--------10000000");
+ if (memcmp (a, b, 16) >= 0)
+ exit (1);
}
exit (0);
}
@@ -3883,12 +29186,19 @@ sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
ac_cv_func_memcmp_working=no
fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5
echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6
-test $ac_cv_func_memcmp_working = no && LIBOBJS="$LIBOBJS memcmp.$ac_objext"
+test $ac_cv_func_memcmp_working = no && case $LIBOBJS in
+ "memcmp.$ac_objext" | \
+ *" memcmp.$ac_objext" | \
+ "memcmp.$ac_objext "* | \
+ *" memcmp.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;;
+esac
+
echo "$as_me:$LINENO: checking for function prototypes" >&5
echo $ECHO_N "checking for function prototypes... $ECHO_C" >&6
@@ -3917,7 +29227,6 @@ if test "${ac_cv_func_setvbuf_reversed+set}" = set; then
else
ac_cv_func_setvbuf_reversed=no
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3937,18 +29246,27 @@ char buf; return setvbuf (stdout, _IOLBF, &buf, 1);
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -3968,11 +29286,21 @@ char buf; return setvbuf (stdout, &buf, _IOLBF, 1);
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -3985,7 +29313,6 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
: # Assume setvbuf is not reversed when cross-compiling.
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4025,9 +29352,9 @@ echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
-rm -f core core.* *.core
+rm -f core *.core
fi
-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
ac_cv_func_setvbuf_reversed=yes
else
@@ -4035,13 +29362,15 @@ else
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_setvbuf_reversed" >&5
echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6
@@ -4059,7 +29388,6 @@ if test "${ac_cv_type_signal+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4086,11 +29414,21 @@ int i;
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
+ (eval $ac_compile) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4103,7 +29441,7 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_type_signal=int
fi
-rm -f conftest.$ac_objext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
echo "${ECHO_T}$ac_cv_type_signal" >&6
@@ -4123,21 +29461,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -4168,11 +29513,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4185,7 +29540,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -4203,21 +29559,28 @@ if test "${ac_cv_func_gethostent+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define gethostent to an innocuous variant, in case <limits.h> declares gethostent.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define gethostent innocuous_gethostent
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostent (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef gethostent
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -4248,11 +29611,21 @@ return f != gethostent;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4265,7 +29638,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_func_gethostent=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_func_gethostent" >&5
echo "${ECHO_T}$ac_cv_func_gethostent" >&6
@@ -4281,7 +29655,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lnsl -lsocket $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4305,11 +29678,21 @@ gethostent ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4322,7 +29705,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_nsl_gethostent=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostent" >&5
@@ -4350,21 +29734,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -4395,11 +29786,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4412,7 +29813,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -4434,21 +29836,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -4479,11 +29888,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4496,7 +29915,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -4515,7 +29935,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsocket $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4539,11 +29958,21 @@ socket ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4556,7 +29985,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_socket_socket=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5
@@ -4583,21 +30013,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -4628,11 +30065,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4645,7 +30092,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -4664,7 +30112,6 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
@@ -4688,11 +30135,21 @@ sqrt ();
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4705,7 +30162,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_m_sqrt=no
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_m_sqrt" >&5
@@ -4732,21 +30190,28 @@ if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
+
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
+
+#undef $ac_func
+
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
@@ -4777,11 +30242,21 @@ return f != $ac_func;
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
+ (eval $ac_link) 2>conftest.er1
ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
@@ -4794,7 +30269,8 @@ sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
@@ -4808,6 +30284,14 @@ done
case "$host" in
+ *-*-hpux10.*) # at least for hppa2.0-hp-hpux10.20
+ case "$GCC" in
+ yes)
+ ;;
+ *) CFLAGS="$CFLAGS -Wp,-H18816"
+ ;;
+ esac
+ ;;
*-*-linux*)
CFLAGS="$CFLAGS -DADJTIME_MISSING"
;;
@@ -4816,6 +30300,33 @@ case "$host" in
;;
esac
+echo "$as_me:$LINENO: checking for bin subdirectory" >&5
+echo $ECHO_N "checking for bin subdirectory... $ECHO_C" >&6
+
+# Check whether --with-binsubdir or --without-binsubdir was given.
+if test "${with_binsubdir+set}" = set; then
+ withval="$with_binsubdir"
+ use_binsubdir="$withval"
+else
+ use_binsubdir="bin"
+fi;
+
+case "$use_binsubdir" in
+ bin)
+ ;;
+ sbin)
+ ;;
+ *)
+ { { echo "$as_me:$LINENO: error: <$use_binsubdir> is illegal - must be \"bin\" or \"sbin\"" >&5
+echo "$as_me: error: <$use_binsubdir> is illegal - must be \"bin\" or \"sbin\"" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+esac
+echo "$as_me:$LINENO: result: $use_binsubdir" >&5
+echo "${ECHO_T}$use_binsubdir" >&6
+BINSUBDIR=$use_binsubdir
+
+
ac_config_files="$ac_config_files Makefile"
cat >confcache <<\_ACEOF
@@ -4846,13 +30357,13 @@ _ACEOF
# `set' does not quote correctly, so add quotes (double-quote
# substitution turns \\\\ into \\, and sed turns \\ into \).
sed -n \
- "s/'/'\\\\''/g;
- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
;;
*)
# `set' quotes correctly as required by POSIX, so do not add quotes.
sed -n \
- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
;;
esac;
} |
@@ -4882,55 +30393,24 @@ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
# trailing colons and then remove the whole line if VPATH becomes empty
# (actually we leave an empty line to preserve line numbers).
if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=/{
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
s/:*\$(srcdir):*/:/;
s/:*\${srcdir}:*/:/;
s/:*@srcdir@:*/:/;
-s/^\([^=]*=[ ]*\):*/\1/;
+s/^\([^=]*=[ ]*\):*/\1/;
s/:*$//;
-s/^[^=]*=[ ]*$//;
+s/^[^=]*=[ ]*$//;
}'
fi
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-#
-# If the first sed substitution is executed (which looks for macros that
-# take arguments), then we branch to the quote section. Otherwise,
-# look for a macro that doesn't take arguments.
-cat >confdef2opt.sed <<\_ACEOF
-t clear
-: clear
-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g
-t quote
-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g
-t quote
-d
-: quote
-s,[ `~#$^&*(){}\\|;'"<>?],\\&,g
-s,\[,\\&,g
-s,\],\\&,g
-s,\$,$$,g
-p
-_ACEOF
-# We use echo to avoid assuming a particular line-breaking character.
-# The extra dot is to prevent the shell from consuming trailing
-# line-breaks from the sub-command output. A line-break within
-# single-quotes doesn't work because, if this script is created in a
-# platform that uses two characters for line-breaks (e.g., DOS), tr
-# would break.
-ac_LF_and_DOT=`echo; echo .`
-DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
-rm -f confdef2opt.sed
-
+DEFS=-DHAVE_CONFIG_H
ac_libobjs=
ac_ltlibobjs=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_i=`echo "$ac_i" |
- sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
# 2. Add them.
ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
@@ -4954,6 +30434,27 @@ echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${INSTALL_LIBOPTS_TRUE}" && test -z "${INSTALL_LIBOPTS_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"INSTALL_LIBOPTS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"INSTALL_LIBOPTS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${NEED_LIBOPTS_TRUE}" && test -z "${NEED_LIBOPTS_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"NEED_LIBOPTS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"NEED_LIBOPTS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
: ${CONFIG_STATUS=./config.status}
ac_clean_files_save=$ac_clean_files
@@ -4988,9 +30489,10 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
set -o posix
fi
+DUALCASE=1; export DUALCASE # for MKS sh
# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
as_unset=unset
else
as_unset=false
@@ -5009,7 +30511,7 @@ for as_var in \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
LC_TELEPHONE LC_TIME
do
- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
eval $as_var=C; export $as_var
else
$as_unset $as_var
@@ -5188,16 +30690,17 @@ rm -f conf$$ conf$$.exe conf$$.file
if mkdir -p . 2>/dev/null; then
as_mkdir_p=:
else
+ test -d ./-p && rmdir ./-p
as_mkdir_p=false
fi
as_executable_p="test -f"
# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
# IFS
@@ -5224,7 +30727,7 @@ _ASBOX
cat >&5 <<_CSEOF
This file was extended by $as_me, which was
-generated by GNU Autoconf 2.57. Invocation command line was
+generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -5268,11 +30771,16 @@ Usage: $0 [OPTIONS] [FILE]...
-d, --debug don't remove temporary files
--recheck update $as_me by reconfiguring in the same conditions
--file=FILE[:TEMPLATE]
- instantiate the configuration file FILE
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
Configuration files:
$config_files
+Configuration headers:
+$config_headers
+
Configuration commands:
$config_commands
@@ -5282,11 +30790,10 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
config.status
-configured by $0, generated by GNU Autoconf 2.57,
+configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
+Copyright (C) 2003 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
srcdir=$srcdir
@@ -5392,8 +30899,10 @@ for ac_config_target in $ac_config_targets
do
case "$ac_config_target" in
# Handling of arguments.
+ "libopts/Makefile" ) CONFIG_FILES="$CONFIG_FILES libopts/Makefile" ;;
"Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
*) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
{ (exit 1); exit 1; }; };;
@@ -5406,6 +30915,7 @@ done
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
fi
@@ -5489,14 +30999,17 @@ s,@AUTOCONF@,$AUTOCONF,;t t
s,@AUTOMAKE@,$AUTOMAKE,;t t
s,@AUTOHEADER@,$AUTOHEADER,;t t
s,@MAKEINFO@,$MAKEINFO,;t t
-s,@AMTAR@,$AMTAR,;t t
s,@install_sh@,$install_sh,;t t
s,@STRIP@,$STRIP,;t t
s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s,@mkdir_p@,$mkdir_p,;t t
s,@AWK@,$AWK,;t t
s,@SET_MAKE@,$SET_MAKE,;t t
s,@am__leading_dot@,$am__leading_dot,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@am__tar@,$am__tar,;t t
+s,@am__untar@,$am__untar,;t t
s,@build@,$build,;t t
s,@build_cpu@,$build_cpu,;t t
s,@build_vendor@,$build_vendor,;t t
@@ -5505,10 +31018,6 @@ s,@host@,$host,;t t
s,@host_cpu@,$host_cpu,;t t
s,@host_vendor@,$host_vendor,;t t
s,@host_os@,$host_os,;t t
-s,@target@,$target,;t t
-s,@target_cpu@,$target_cpu,;t t
-s,@target_vendor@,$target_vendor,;t t
-s,@target_os@,$target_os,;t t
s,@CC@,$CC,;t t
s,@CFLAGS@,$CFLAGS,;t t
s,@LDFLAGS@,$LDFLAGS,;t t
@@ -5525,9 +31034,34 @@ s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
s,@CCDEPMODE@,$CCDEPMODE,;t t
s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
-s,@CPP@,$CPP,;t t
s,@EGREP@,$EGREP,;t t
+s,@LN_S@,$LN_S,;t t
+s,@ECHO@,$ECHO,;t t
+s,@AR@,$AR,;t t
+s,@ac_ct_AR@,$ac_ct_AR,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@CPP@,$CPP,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+s,@CXXDEPMODE@,$CXXDEPMODE,;t t
+s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s,@CXXCPP@,$CXXCPP,;t t
+s,@F77@,$F77,;t t
+s,@FFLAGS@,$FFLAGS,;t t
+s,@ac_ct_F77@,$ac_ct_F77,;t t
+s,@LIBTOOL@,$LIBTOOL,;t t
+s,@LIBOPTS_DIR@,$LIBOPTS_DIR,;t t
+s,@INSTALL_LIBOPTS_TRUE@,$INSTALL_LIBOPTS_TRUE,;t t
+s,@INSTALL_LIBOPTS_FALSE@,$INSTALL_LIBOPTS_FALSE,;t t
+s,@NEED_LIBOPTS_TRUE@,$NEED_LIBOPTS_TRUE,;t t
+s,@NEED_LIBOPTS_FALSE@,$NEED_LIBOPTS_FALSE,;t t
+s,@LIBOPTS_LDADD@,$LIBOPTS_LDADD,;t t
+s,@LIBOPTS_CFLAGS@,$LIBOPTS_CFLAGS,;t t
s,@LIBOBJS@,$LIBOBJS,;t t
+s,@BINSUBDIR@,$BINSUBDIR,;t t
s,@LTLIBOBJS@,$LTLIBOBJS,;t t
CEOF
@@ -5558,9 +31092,9 @@ _ACEOF
(echo ':t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
else
- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
fi
ac_sed_frag=`expr $ac_sed_frag + 1`
ac_beg=$ac_end
@@ -5578,21 +31112,21 @@ for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
case $ac_file in
- | *:- | *:-:* ) # input from stdin
- cat >$tmp/stdin
- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
*:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
* ) ac_file_in=$ac_file.in ;;
esac
# Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
ac_dir=`(dirname "$ac_file") 2>/dev/null ||
$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_file" : 'X\(//\)[^/]' \| \
- X"$ac_file" : 'X\(//\)$' \| \
- X"$ac_file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -5608,10 +31142,10 @@ echo X"$ac_file" |
as_dirs="$as_dir $as_dirs"
as_dir=`(dirname "$as_dir") 2>/dev/null ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -5649,12 +31183,45 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
case $INSTALL in
@@ -5676,7 +31243,7 @@ echo "$as_me: creating $ac_file" >&6;}
configure_input="$ac_file. "
fi
configure_input=$configure_input"Generated from `echo $ac_file_in |
- sed 's,.*/,,'` by configure."
+ sed 's,.*/,,'` by configure."
# First look for the input files in the build tree, otherwise in the
# src tree.
@@ -5685,24 +31252,24 @@ echo "$as_me: creating $ac_file" >&6;}
case $f in
-) echo $tmp/stdin ;;
[\\/$]*)
- # Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
- echo $f;;
+ echo "$f";;
*) # Relative
- if test -f "$f"; then
- # Build tree
- echo $f
- elif test -f "$srcdir/$f"; then
- # Source tree
- echo $srcdir/$f
- else
- # /dev/null tree
- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
- fi;;
+ fi;;
esac
done` || { (exit 1); exit 1; }
_ACEOF
@@ -5737,6 +31304,251 @@ _ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF
#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
+ esac
+
+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ # Do quote $f, to prevent DOS paths from being IFS'd.
+ echo "$f";;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo "$f"
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo "$srcdir/$f"
+ else
+ # /dev/null tree
+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h. The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status. Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless. Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments. This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo ' :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+ # Write a limited-size here document to $tmp/defines.sed.
+ echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#define' lines.
+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/defines.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo ' fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+ # Write a limited-size here document to $tmp/undefs.sed.
+ echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+ # Speed up: don't consider the non `#undef'
+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS
+ # Work around the forget-to-reset-the-flag bug.
+ echo 't clr' >>$CONFIG_STATUS
+ echo ': clr' >>$CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+ rm -f $tmp/in
+ mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+ rm -f conftest.undefs
+ mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated by configure. */" >$tmp/config.h
+ else
+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ rm -f $tmp/in
+ if test x"$ac_file" != x-; then
+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
+ fi
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
+ fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $ac_file | $ac_file:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X$ac_file : 'X\(//\)[^/]' \| \
+ X$ac_file : 'X\(//\)$' \| \
+ X$ac_file : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
# CONFIG_COMMANDS section.
#
for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
@@ -5744,16 +31556,41 @@ for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$ac_dest" : 'X\(//\)[^/]' \| \
- X"$ac_dest" : 'X\(//\)$' \| \
- X"$ac_dest" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$ac_dest" : 'X\(//\)[^/]' \| \
+ X"$ac_dest" : 'X\(//\)$' \| \
+ X"$ac_dest" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$ac_dest" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
/^X\(\/\/\)$/{ s//\1/; q; }
/^X\(\/\).*/{ s//\1/; q; }
s/.*/./; q'`
+ { if $as_mkdir_p; then
+ mkdir -p "$ac_dir"
+ else
+ as_dir="$ac_dir"
+ as_dirs=
+ while test ! -d "$as_dir"; do
+ as_dirs="$as_dir $as_dirs"
+ as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
+ done
+ test ! -n "$as_dirs" || mkdir $as_dirs
+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+ { (exit 1); exit 1; }; }; }
+
ac_builddir=.
if test "$ac_dir" != .; then
@@ -5779,12 +31616,45 @@ case $srcdir in
ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
ac_top_srcdir=$ac_top_builddir$srcdir ;;
esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+ case "$ac_dir" in
+ .) ac_abs_builddir=`pwd`;;
+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+ *) ac_abs_builddir=`pwd`/"$ac_dir";;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+ case ${ac_top_builddir}. in
+ .) ac_abs_top_builddir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+ case $ac_srcdir in
+ .) ac_abs_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+ esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+ case $ac_top_srcdir in
+ .) ac_abs_top_srcdir=$ac_abs_builddir;;
+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+ esac;;
+esac
{ echo "$as_me:$LINENO: executing $ac_dest commands" >&5
@@ -5802,10 +31672,10 @@ echo "$as_me: executing $ac_dest commands" >&6;}
if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
dirpart=`(dirname "$mf") 2>/dev/null ||
$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$mf" : 'X\(//\)[^/]' \| \
- X"$mf" : 'X\(//\)$' \| \
- X"$mf" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$mf" : 'X\(//\)[^/]' \| \
+ X"$mf" : 'X\(//\)$' \| \
+ X"$mf" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$mf" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -5815,36 +31685,30 @@ echo X"$mf" |
else
continue
fi
- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
- # Extract the definition of DEP_FILES from the Makefile without
- # running `make'.
- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
+ # Extract the definition of DEPDIR, am__include, and am__quote
+ # from the Makefile without running `make'.
+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
+ am__include=`sed -n 's/^am__include = //p' < "$mf"`
+ test -z "am__include" && continue
+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# When using ansi2knr, U may be empty or an underscore; expand it
- U=`sed -n -e '/^U = / s///p' < "$mf"`
- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
- # We invoke sed twice because it is the simplest approach to
- # changing $(DEPDIR) to its actual value in the expansion.
- for file in `sed -n -e '
- /^DEP_FILES = .*\\\\$/ {
- s/^DEP_FILES = //
- :loop
- s/\\\\$//
- p
- n
- /\\\\$/ b loop
- p
- }
- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
+ U=`sed -n 's/^U = //p' < "$mf"`
+ # Find all dependency output files, they are included files with
+ # $(DEPDIR) in their names. We invoke sed twice because it is the
+ # simplest approach to changing $(DEPDIR) to its actual value in the
+ # expansion.
+ for file in `sed -n "
+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
# Make sure the directory exists.
test -f "$dirpart/$file" && continue
fdir=`(dirname "$file") 2>/dev/null ||
$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$file" : 'X\(//\)[^/]' \| \
- X"$file" : 'X\(//\)$' \| \
- X"$file" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$file" : 'X\(//\)[^/]' \| \
+ X"$file" : 'X\(//\)$' \| \
+ X"$file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
@@ -5860,10 +31724,10 @@ echo X"$file" |
as_dirs="$as_dir $as_dirs"
as_dir=`(dirname "$as_dir") 2>/dev/null ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$as_dir" : 'X\(//\)[^/]' \| \
- X"$as_dir" : 'X\(//\)$' \| \
- X"$as_dir" : 'X\(/\)' \| \
- . : '\(.\)' 2>/dev/null ||
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
echo X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
/^X\(\/\/\)[^/].*/{ s//\1/; q; }
diff --git a/contrib/ntp/sntp/configure.ac b/contrib/ntp/sntp/configure.ac
index b954168..5cc52b1 100644
--- a/contrib/ntp/sntp/configure.ac
+++ b/contrib/ntp/sntp/configure.ac
@@ -2,11 +2,44 @@
AC_INIT(main.c)
AM_INIT_AUTOMAKE([msntp],[1.6])
AC_CONFIG_SRCDIR([header.h])
-AC_CANONICAL_SYSTEM
+AC_CANONICAL_HOST
+AM_CONFIG_HEADER(config.h)
# Checks for programs.
AC_PROG_CC
+# So far, the only shared library we might use is libopts.
+# It's a small library - we might as well use a static version of it.
+AC_DISABLE_SHARED
+
+AC_PROG_LIBTOOL
+
+# NTP has (so far) been relying on leading-edge autogen.
+# Therefore, by default:
+# - use the version we ship with
+# - do not install it
+# - build a static copy (AC_DISABLE_SHARED - done earlier)
+case "${enable_local_libopts+set}" in
+ set) ;;
+ *) enable_local_libopts=yes ;;
+esac
+case "${enable_libopts_install+set}" in
+ set) ;;
+ *) enable_libopts_install=no ;;
+esac
+LIBOPTS_CHECK
+
+AC_MSG_CHECKING([[if $CC can handle #warning]])
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#warning foo]])],[ac_cv_cpp_warning=yes],[ac_cv_cpp_warning=no])
+AC_MSG_RESULT([$ac_cv_cpp_warning])
+
+case "$ac_cv_cpp_warning" in
+ no)
+ AC_DEFINE([NO_OPTION_NAME_WARNINGS], [1], [Should we avoid #warning on option name collisions?])
+ AC_MSG_RESULT([[Enabling NO_OPTION_NAME_WARNINGS as #warning does not work]])
+ ;;
+esac
+
# Checks for libraries.
# Checks for header files.
@@ -31,9 +64,11 @@ AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
[ ac_cv_have_ss_family_in_struct_ss="no" ],
)
])
-if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
- AC_DEFINE(HAVE_SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have ss_family?])
-fi
+case "$ac_cv_have_ss_family_in_struct_ss" in
+ yes)
+ AC_DEFINE(HAVE_SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have ss_family?])
+ ;;
+esac
AC_CACHE_CHECK([for __ss_family field in struct sockaddr_storage],
ac_cv_have___ss_family_in_struct_ss, [
@@ -47,14 +82,16 @@ AC_CACHE_CHECK([for __ss_family field in struct sockaddr_storage],
[ ac_cv_have___ss_family_in_struct_ss="no" ]
)
])
-if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
- AC_DEFINE(HAVE___SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have __ss_family?])
-fi
+case "$ac_cv_have___ss_family_in_struct_ss" in
+ yes)
+ AC_DEFINE(HAVE___SS_FAMILY_IN_SS, 1, [Does struct sockaddr_storage have __ss_family?])
+ ;;
+esac
case "$ac_cv_have_ss_family_in_struct_ss$ac_cv_have___ss_family_in_struct_ss" in
noyes)
- AC_DEFINE_UNQUOTED(ss_family, __ss_family, [])
- AC_DEFINE_UNQUOTED(ss_len, __ss_len, [])
+ AC_DEFINE_UNQUOTED([ss_family], [__ss_family], [normalize ss_family access])
+ AC_DEFINE_UNQUOTED([ss_len], [__ss_len], [normalize ss_len access])
;;
esac
@@ -70,6 +107,14 @@ AC_CHECK_FUNCS(sqrt, , AC_CHECK_LIB(m, sqrt))
AC_CHECK_FUNCS([strrchr])
case "$host" in
+ *-*-hpux10.*) # at least for hppa2.0-hp-hpux10.20
+ case "$GCC" in
+ yes)
+ ;;
+ *) CFLAGS="$CFLAGS -Wp,-H18816"
+ ;;
+ esac
+ ;;
*-*-linux*)
CFLAGS="$CFLAGS -DADJTIME_MISSING"
;;
@@ -78,5 +123,23 @@ case "$host" in
;;
esac
+AC_MSG_CHECKING(for bin subdirectory)
+AC_ARG_WITH(binsubdir,
+ AC_HELP_STRING([--with-binsubdir], [bin ={bin,sbin}]),
+ use_binsubdir="$withval", use_binsubdir="bin")
+
+case "$use_binsubdir" in
+ bin)
+ ;;
+ sbin)
+ ;;
+ *)
+ AC_MSG_ERROR([<$use_binsubdir> is illegal - must be "bin" or "sbin"])
+ ;;
+esac
+AC_MSG_RESULT($use_binsubdir)
+BINSUBDIR=$use_binsubdir
+AC_SUBST(BINSUBDIR)
+
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
diff --git a/contrib/ntp/sntp/depcomp b/contrib/ntp/sntp/depcomp
index aea3d00..04701da 100755
--- a/contrib/ntp/sntp/depcomp
+++ b/contrib/ntp/sntp/depcomp
@@ -1,7 +1,9 @@
#! /bin/sh
-
# depcomp - compile a program generating dependencies as side-effects
-# Copyright 1999, 2000 Free Software Foundation, Inc.
+
+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
@@ -15,8 +17,8 @@
# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# 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
@@ -25,22 +27,45 @@
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+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 <bug-automake@gnu.org>.
+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
-# `libtool' can also be set to `yes' or `no'.
-
-if test -z "$depfile"; then
- base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
- dir=`echo "$object" | sed 's,/.*$,/,'`
- if test "$dir" = "$object"; then
- dir=
- fi
- # FIXME: should be _deps on DOS.
- depfile="$dir.deps/$base"
-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"
@@ -172,19 +197,25 @@ sgi)
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
- # in a .u file. 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.
- stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
+ # 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"
- outname="$stripped.o"
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"
@@ -192,6 +223,7 @@ aix)
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:'.
@@ -255,31 +287,47 @@ tru64)
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
- tmpdepfile1="$dir.libs/$base.lo.d"
- tmpdepfile2="$dir.libs/$base.d"
+ # 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"
+ 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"
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
- if test -f "$tmpdepfile1"; then
- tmpdepfile="$tmpdepfile1"
- else
- tmpdepfile="$tmpdepfile2"
- 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 space and a tab in the [].
- sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$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
@@ -292,7 +340,7 @@ tru64)
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout, regardless of -o.
+ # always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
@@ -388,7 +436,7 @@ makedepend)
cpp)
# Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout.
+ # always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
@@ -419,7 +467,8 @@ cpp)
done
"$@" -E |
- sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+ 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"
@@ -430,7 +479,7 @@ cpp)
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
- # always write the proprocessed file to stdout, regardless of -o,
+ # always write the preprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
@@ -470,3 +519,12 @@ none)
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/contrib/ntp/sntp/header.h b/contrib/ntp/sntp/header.h
index f107b1d..c752d15 100644
--- a/contrib/ntp/sntp/header.h
+++ b/contrib/ntp/sntp/header.h
@@ -19,10 +19,10 @@ No changes should be needed for any system that is even remotely like Unix. */
#define MAX_SOCKETS 10 /* Maximum number of addresses */
#ifndef LOCKNAME
- #define LOCKNAME "/etc/msntp.pid" /* Stores the pid */
+# define LOCKNAME "/etc/sntp.pid" /* Stores the pid */
#endif
#ifndef SAVENAME
- #define SAVENAME "/etc/msntp.state" /* Stores the recovery state */
+# define SAVENAME "/etc/sntp.state" /* Stores the recovery state */
#endif
@@ -30,9 +30,7 @@ No changes should be needed for any system that is even remotely like Unix. */
/* Defined in main.c */
#define op_client 1 /* Behave as a challenge client */
-#define op_server 2 /* Behave as a response server */
-#define op_listen 3 /* Behave as a listening client */
-#define op_broadcast 4 /* Behave as a broadcast server */
+#define op_listen 2 /* Behave as a listening client */
extern const char *argv0;
diff --git a/contrib/ntp/sntp/install-sh b/contrib/ntp/sntp/install-sh
index 6ce63b9..4d4a951 100755
--- a/contrib/ntp/sntp/install-sh
+++ b/contrib/ntp/sntp/install-sh
@@ -1,7 +1,8 @@
#!/bin/sh
-#
# install - install a program, script, or datafile
-#
+
+scriptversion=2005-05-14.22
+
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
@@ -41,13 +42,11 @@
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
-
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
-
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
@@ -59,236 +58,266 @@ stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
+chowncmd=
+chgrpcmd=
+stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd=$cpprog
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd=$stripprog
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "$0: no input file specified" >&2
- exit 1
-else
- :
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d "$dst" ]; then
- instcmd=:
- chmodcmd=""
- else
- instcmd=$mkdirprog
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f "$src" ] || [ -d "$src" ]
- then
- :
- else
- echo "$0: $src does not exist" >&2
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "$0: no destination specified" >&2
- exit 1
- else
- :
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d "$dst" ]
- then
- dst=$dst/`basename "$src"`
- else
- :
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
- '
-IFS="${IFS-$defaultIFS}"
-
-oIFS=$IFS
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS=$oIFS
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp=$pathcomp$1
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c (ignored)
+-d create directories instead of installing files.
+-g GROUP $chgrpprog installed files to GROUP.
+-m MODE $chmodprog installed files to MODE.
+-o USER $chownprog installed files to USER.
+-s $stripprog installed files.
+-t DIRECTORY install into DIRECTORY.
+-T report an error if DSTFILE is a directory.
+--help display this help and exit.
+--version display version info and exit.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+ case $1 in
+ -c) shift
+ continue;;
+
+ -d) dir_arg=true
+ shift
+ continue;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift
+ shift
+ continue;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) chmodcmd="$chmodprog $2"
+ shift
+ shift
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+ shift
+ shift
+ continue;;
+
+ -s) stripcmd=$stripprog
+ shift
+ continue;;
+
+ -t) dstarg=$2
shift
+ shift
+ continue;;
- if [ ! -d "$pathcomp" ] ;
- then
- $mkdirprog "$pathcomp"
- else
- :
- fi
-
- pathcomp=$pathcomp/
+ -T) no_target_directory=true
+ shift
+ continue;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ *) # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ test -n "$dir_arg$dstarg" && break
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dstarg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dstarg"
+ shift # fnord
+ fi
+ shift # arg
+ dstarg=$arg
+ done
+ break;;
+ esac
done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd "$dst" &&
- if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename "$dst"`
- else
- dstfile=`basename "$dst" $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename "$dst"`
- else
- :
- fi
-
-# Make a couple of temp file names in the proper directory.
-
- dsttmp=$dstdir/_inst.$$_
- rmtmp=$dstdir/_rm.$$_
-
-# Trap to clean up temp files at exit.
-
- trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
- trap '(exit $?); exit' 1 2 13 15
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd "$src" "$dsttmp" &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
-
-# Now remove or move aside any old file at destination location. We try this
-# two ways since rm can't unlink itself on some systems and the destination
-# file might be busy for other reasons. In this case, the final cleanup
-# might fail but the new file should still install successfully.
-
-{
- if [ -f "$dstdir/$dstfile" ]
- then
- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
- $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
- {
- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
- (exit 1); exit
- }
- else
- :
- fi
-} &&
-
-# Now rename the file to the real destination.
+if test -z "$1"; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call `install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+for src
+do
+ # Protect names starting with `-'.
+ case $src in
+ -*) src=./$src ;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ src=
+
+ if test -d "$dst"; then
+ mkdircmd=:
+ chmodcmd=
+ else
+ mkdircmd=$mkdirprog
+ fi
+ else
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dstarg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+
+ dst=$dstarg
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst ;;
+ esac
-fi &&
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test -n "$no_target_directory"; then
+ echo "$0: $dstarg: Is a directory" >&2
+ exit 1
+ fi
+ dst=$dst/`basename "$src"`
+ fi
+ fi
+
+ # This sed command emulates the dirname command.
+ dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+
+ # Make sure that the destination directory exists.
+
+ # Skip lots of stat calls in the usual case.
+ if test ! -d "$dstdir"; then
+ defaultIFS='
+ '
+ IFS="${IFS-$defaultIFS}"
+
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+ set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ shift
+ IFS=$oIFS
+
+ pathcomp=
+
+ while test $# -ne 0 ; do
+ pathcomp=$pathcomp$1
+ shift
+ if test ! -d "$pathcomp"; then
+ $mkdirprog "$pathcomp"
+ # mkdir can fail with a `File exist' error in case several
+ # install-sh are creating the directory concurrently. This
+ # is OK.
+ test -d "$pathcomp" || exit
+ fi
+ pathcomp=$pathcomp/
+ done
+ fi
+
+ if test -n "$dir_arg"; then
+ $doit $mkdircmd "$dst" \
+ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+ else
+ dstfile=`basename "$dst"`
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+ trap '(exit $?); exit' 1 2 13 15
+
+ # Copy the file name to the temp name.
+ $doit $cpprog "$src" "$dsttmp" &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+ # Now rename the file to the real destination.
+ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+ || {
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ if test -f "$dstdir/$dstfile"; then
+ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+ || {
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+ (exit 1); exit 1
+ }
+ else
+ :
+ fi
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+ }
+ }
+ fi || { (exit 1); exit 1; }
+done
# The final little trick to "correctly" pass the exit status to the exit trap.
-
{
- (exit 0); exit
+ (exit 0); 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/contrib/ntp/sntp/internet.c b/contrib/ntp/sntp/internet.c
index 2d23e50..a1040f1 100644
--- a/contrib/ntp/sntp/internet.c
+++ b/contrib/ntp/sntp/internet.c
@@ -62,7 +62,7 @@ void preferred_family(int fam) {
#ifdef HAVE_IPV6
void find_address (struct sockaddr_storage *address,
- struct sockaddr_storage *anywhere, struct sockaddr_storage *everywhere,
+ struct sockaddr_storage *anywhere,
int *port, char *hostname, int timespan) {
/* Locate the specified NTP server and return its Internet address and port
@@ -71,13 +71,10 @@ number. */
int family, rval;
struct addrinfo hints;
struct addrinfo *res;
- struct sockaddr_in *sin;
- struct sockaddr_in6 *sin6;
res = NULL;
memset(address, 0, sizeof(struct sockaddr_storage));
memset(anywhere, 0, sizeof(struct sockaddr_storage));
- memset(everywhere, 0, sizeof(struct sockaddr_storage));
if (setjmp(jump_buffer))
fatal(0,"unable to set up access to NTP server %s",hostname);
@@ -92,7 +89,8 @@ number. */
hints.ai_family = pref_family;
rval = getaddrinfo(hostname, "ntp", &hints, &res);
if (rval != 0)
- fatal(0, "getaddrinfo failed with %s", gai_strerror(rval));
+ fatal(0, "getaddrinfo(hostname, ntp) failed with %s",
+ gai_strerror(rval));
/* Now clear the timer and check the result. */
@@ -109,30 +107,20 @@ number. */
hints.ai_flags = AI_PASSIVE;
rval = getaddrinfo(NULL, "ntp", &hints, &res);
if (rval != 0)
- fatal(0, "getaddrinfo failed with %s", gai_strerror(rval));
+ fatal(0, "getaddrinfo(NULL, ntp) failed with %s",
+ gai_strerror(rval));
memcpy(anywhere, res->ai_addr, res->ai_addrlen);
freeaddrinfo(res);
- rval = getaddrinfo("255.255.255.255", "ntp", &hints, &res);
- if (rval != 0)
- fatal(0, "getaddrinfo failed with %s", gai_strerror(rval));
- memcpy(everywhere, res->ai_addr, res->ai_addrlen);
- freeaddrinfo(res);
break;
case AF_INET6:
hints.ai_family = AF_INET6;
hints.ai_flags = AI_PASSIVE;
rval = getaddrinfo(NULL, "ntp", &hints, &res);
if (rval != 0)
- fatal(0, "getaddrinfo failed with %s", gai_strerror(rval));
+ fatal(0, "getaddrinfo(NULL, ntp, INET6, AI_PASSIVE) failed with %s",
+ gai_strerror(rval));
memcpy(anywhere, res->ai_addr, res->ai_addrlen);
freeaddrinfo(res);
- /* IPv6 do not have broadcast, give it loopback. */
- hints.ai_flags = 0;
- rval = getaddrinfo(NULL, "ntp", &hints, &res);
- if (rval != 0)
- fatal(0, "getaddrinfo failed with %s", gai_strerror(rval));
- memcpy(everywhere, res->ai_addr, res->ai_addrlen);
- freeaddrinfo(res);
break;
}
}
@@ -140,7 +128,7 @@ number. */
#else
void find_address (struct in_addr *address, struct in_addr *anywhere,
- struct in_addr *everywhere, int *port, char *hostname, int timespan) {
+ int *port, char *hostname, int timespan) {
/* Locate the specified NTP server and return its Internet address and port
number. */
@@ -155,7 +143,6 @@ addresses are 32 bits. */
local_to_address(nowhere,INADDR_LOOPBACK);
local_to_address(anywhere,INADDR_ANY);
- local_to_address(everywhere,INADDR_BROADCAST);
/* Check the address, if any. This assumes that the DNS is reliable, or is at
least checked by someone else. But it doesn't assume that it is accessible, so
@@ -192,9 +179,8 @@ it needs to set up a timeout. */
if (host->h_length != sizeof(struct in_addr))
fatal(0,"the address does not seem to be an Internet one",NULL);
*address = *((struct in_addr **)host->h_addr_list)[0];
- if (memcmp(address,nowhere,sizeof(struct in_addr)) == 0 ||
- memcmp(address,anywhere,sizeof(struct in_addr)) == 0 ||
- memcmp(address,everywhere,sizeof(struct in_addr)) == 0)
+ if (memcmp(address,nowhere,sizeof(struct in_addr)) == 0
+ || memcmp(address,anywhere,sizeof(struct in_addr)) == 0)
fatal(0,"reserved IP numbers cannot be used",NULL);
if (verbose)
fprintf(stderr,
diff --git a/contrib/ntp/sntp/internet.h b/contrib/ntp/sntp/internet.h
index 993dce6..5241314 100644
--- a/contrib/ntp/sntp/internet.h
+++ b/contrib/ntp/sntp/internet.h
@@ -39,9 +39,9 @@ to see whether the universal availability of 64-bit integers arrives first. */
/* Defined in internet.c */
#ifdef HAVE_IPV6
extern void find_address (struct sockaddr_storage *address,
- struct sockaddr_storage *anywhere, struct sockaddr_storage *everwhere,
+ struct sockaddr_storage *anywhere,
int *port, char *hostname, int timespan);
#else
extern void find_address (struct in_addr *address, struct in_addr *anywhere,
- struct in_addr *everwhere, int *port, char *hostname, int timespan);
+ int *port, char *hostname, int timespan);
#endif
diff --git a/contrib/ntp/sntp/libopts/COPYING.lgpl b/contrib/ntp/sntp/libopts/COPYING.lgpl
new file mode 100644
index 0000000..129c5de
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/COPYING.lgpl
@@ -0,0 +1,502 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/contrib/ntp/sntp/libopts/COPYING.mbsd b/contrib/ntp/sntp/libopts/COPYING.mbsd
new file mode 100644
index 0000000..8a70427
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/COPYING.mbsd
@@ -0,0 +1,26 @@
+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.
+
+ 3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
diff --git a/contrib/ntp/scripts/support/conf/hp700.hp700 b/contrib/ntp/sntp/libopts/MakeDefs.inc
index e69de29..e69de29 100644
--- a/contrib/ntp/scripts/support/conf/hp700.hp700
+++ b/contrib/ntp/sntp/libopts/MakeDefs.inc
diff --git a/contrib/ntp/sntp/libopts/Makefile.am b/contrib/ntp/sntp/libopts/Makefile.am
new file mode 100644
index 0000000..5f138614
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/Makefile.am
@@ -0,0 +1,24 @@
+## LIBOPTS Makefile
+MAINTAINERCLEANFILES = Makefile.in
+if INSTALL_LIBOPTS
+lib_LTLIBRARIES = libopts.la
+else
+noinst_LTLIBRARIES = libopts.la
+endif
+libopts_la_SOURCES = libopts.c
+libopts_la_CPPFLAGS = -I$(top_srcdir)
+libopts_la_LDFLAGS = -version-info 29:0:4
+EXTRA_DIST = \
+ COPYING.lgpl COPYING.mbsd MakeDefs.inc \
+ README autoopts/options.h autoopts/usage-txt.h \
+ autoopts.c autoopts.h boolean.c \
+ compat/windows-config.h compat/compat.h compat/pathfind.c \
+ compat/snprintf.c compat/strdup.c compat/strchr.c \
+ configfile.c cook.c enumeration.c \
+ environment.c genshell.c genshell.h \
+ load.c m4/libopts.m4 m4/liboptschk.m4 \
+ makeshell.c nested.c numeric.c \
+ pgusage.c proto.h putshell.c \
+ restore.c save.c sort.c \
+ stack.c streqvcmp.c text_mmap.c \
+ tokenize.c usage.c version.c
diff --git a/contrib/ntp/sntp/libopts/Makefile.in b/contrib/ntp/sntp/libopts/Makefile.in
new file mode 100644
index 0000000..2a7eca3
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/Makefile.in
@@ -0,0 +1,496 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# 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.
+
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+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 = @build@
+host_triplet = @host@
+subdir = libopts
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/libopts/m4/libopts.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 =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES)
+libopts_la_LIBADD =
+am_libopts_la_OBJECTS = libopts_la-libopts.lo
+libopts_la_OBJECTS = $(am_libopts_la_OBJECTS)
+@INSTALL_LIBOPTS_FALSE@am_libopts_la_rpath =
+@INSTALL_LIBOPTS_TRUE@am_libopts_la_rpath = -rpath $(libdir)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libopts_la_SOURCES)
+DIST_SOURCES = $(libopts_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+MAINTAINERCLEANFILES = Makefile.in
+@INSTALL_LIBOPTS_TRUE@lib_LTLIBRARIES = libopts.la
+@INSTALL_LIBOPTS_FALSE@noinst_LTLIBRARIES = libopts.la
+libopts_la_SOURCES = libopts.c
+libopts_la_CPPFLAGS = -I$(top_srcdir)
+libopts_la_LDFLAGS = -version-info 29:0:4
+EXTRA_DIST = \
+ COPYING.lgpl COPYING.mbsd MakeDefs.inc \
+ README autoopts/options.h autoopts/usage-txt.h \
+ autoopts.c autoopts.h boolean.c \
+ compat/windows-config.h compat/compat.h compat/pathfind.c \
+ compat/snprintf.c compat/strdup.c compat/strchr.c \
+ configfile.c cook.c enumeration.c \
+ environment.c genshell.c genshell.h \
+ load.c m4/libopts.m4 m4/liboptschk.m4 \
+ makeshell.c nested.c numeric.c \
+ pgusage.c proto.h putshell.c \
+ restore.c save.c sort.c \
+ stack.c streqvcmp.c text_mmap.c \
+ tokenize.c usage.c version.c
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(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) --gnu libopts/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu libopts/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
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libopts.la: $(libopts_la_OBJECTS) $(libopts_la_DEPENDENCIES)
+ $(LINK) $(am_libopts_la_rpath) $(libopts_la_LDFLAGS) $(libopts_la_OBJECTS) $(libopts_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libopts_la-libopts.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+libopts_la-libopts.lo: libopts.c
+@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libopts_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libopts_la-libopts.lo -MD -MP -MF "$(DEPDIR)/libopts_la-libopts.Tpo" -c -o libopts_la-libopts.lo `test -f 'libopts.c' || echo '$(srcdir)/'`libopts.c; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libopts_la-libopts.Tpo" "$(DEPDIR)/libopts_la-libopts.Plo"; else rm -f "$(DEPDIR)/libopts_la-libopts.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libopts.c' object='libopts_la-libopts.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libopts_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libopts_la-libopts.lo `test -f 'libopts.c' || echo '$(srcdir)/'`libopts.c
+
+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)
+ $(mkdir_p) $(distdir)/autoopts $(distdir)/compat $(distdir)/m4
+ @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 $(LTLIBRARIES)
+installdirs:
+ for dir in "$(DESTDIR)$(libdir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+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."
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
+ clean-noinstLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile 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-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
+ ctags distclean distclean-compile 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-libLTLIBRARIES install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-info-am uninstall-libLTLIBRARIES
+
+# 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/contrib/ntp/sntp/libopts/README b/contrib/ntp/sntp/libopts/README
new file mode 100644
index 0000000..7cbe0b0
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/README
@@ -0,0 +1,93 @@
+ THIS TARBALL IS NOT A FULL DISTRIBUTION.
+
+The contents of this tarball is designed to be incorporated into
+software packages that utilize the AutoOpts option automation
+package and are intended to be installed on systems that may not
+have libopts installed. It is redistributable under the terms
+of either the LGPL (see COPYING.lgpl) or under the terms of
+the advertising clause free BSD license (see COPYING.mbsd).
+
+Usage Instructions for autoconf/automake/libtoolized projects:
+
+1. Install the unrolled tarball into your package source tree,
+ copying ``libopts.m4'' to your autoconf macro directory.
+
+ In your bootstrap (pre-configure) script, you can do this:
+
+ rm -rf libopts libopts-*
+ gunzip -c `autoopts-config libsrc` | tar -xvf -
+ mv -f libopts-*.*.* libopts
+ cp -fp libopts/m4/*.m4 m4/.
+
+ I tend to put my configure auxiliary files in "m4".
+ Whatever directory you choose, if it is not ".", then
+ be sure to tell autoconf about it with:
+
+ AC_CONFIG_AUX_DIR(m4)
+
+ This is one macro where you *MUST* remember to *NOT* quote
+ the argument. If you do, automake will get lost.
+
+2. Add the following to your ``configure.ac'' file:
+
+ LIBOPTS_CHECK
+
+ or:
+
+ LIBOPTS_CHECK([relative/path/to/libopts])
+
+ This macro will automatically invoke
+
+ AC_CONFIG_FILES( [relative/path/to/libopts/Makefile] )
+
+ The default ``relative/path/to/libopts'' is simply
+ ``libopts''.
+
+3. Add the following to your top level ``Makefile.am'' file:
+
+ if NEED_LIBOPTS
+ SUBDIRS += $(LIBOPTS_DIR)
+ endif
+
+ where ``<...>'' can be whatever other files or directories
+ you may need. The SUBDIRS must be properly ordered.
+ *PLEASE NOTE* it is crucial that the SUBDIRS be set under the
+ control of an automake conditional. To work correctly,
+ automake has to know the range of possible values of SUBDIRS.
+ It's a magical name with magical properties. ``NEED_LIBOPTS''
+ will be correctly set by the ``LIBOPTS_CHECK'' macro, above.
+
+4. Add ``$(LIBOPTS_CFLAGS)'' to relevant compiler flags and
+ ``$(LIBOPTS_LDADD)'' to relevant link options whereever
+ you need them in your build tree.
+
+5. Make sure your object files explicitly depend upon the
+ generated options header file. e.g.:
+
+ $(prog_OBJECTS) : prog-opts.h
+ prog-opts.h : prog-opts.c
+ prog-opts.c : prog-opts.def
+ autogen prog-opts.def
+
+6. *OPTIONAL* --
+ If you are creating man pages and texi documentation from
+ the program options, you will need these rules somewhere, too:
+
+ man_MANS = prog.1
+ prog.1 : prog-opts.def
+ autogen -Tagman1.tpl -bprog prog-opts.def
+
+ prog-invoke.texi : prog-opts.def
+ autogen -Taginfo.tpl -bprog-invoke prog-opts.def
+
+If your package does not utilize the auto* tools, then you
+will need to hand craft the rules for building the library.
+
+LICENSING:
+
+This material is copyright 1993-2007 by Bruce Korb.
+You are licensed to use this under the terms of either
+the GNU Lesser General Public License (see: COPYING.lgpl), or,
+at your option, the modified Berkeley Software Distribution
+License (see: COPYING.mbsd). Both of these files should be
+included with this tarball.
diff --git a/contrib/ntp/sntp/libopts/autoopts.c b/contrib/ntp/sntp/libopts/autoopts.c
new file mode 100644
index 0000000..139841b
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/autoopts.c
@@ -0,0 +1,1120 @@
+
+/*
+ * $Id: autoopts.c,v 4.25 2007/04/15 19:01:18 bkorb Exp $
+ * Time-stamp: "2007-04-15 11:10:40 bkorb"
+ *
+ * This file contains all of the routines that must be linked into
+ * an executable to use the generated option processing. The optional
+ * routines are in separately compiled modules so that they will not
+ * necessarily be linked in.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+static char const zNil[] = "";
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static tSuccess
+findOptDesc( tOptions* pOpts, tOptState* pOptState );
+
+static tSuccess
+nextOption( tOptions* pOpts, tOptState* pOptState );
+
+static tSuccess
+doPresets( tOptions* pOpts );
+
+static int
+checkConsistency( tOptions* pOpts );
+/* = = = END-STATIC-FORWARD = = = */
+
+LOCAL void *
+ao_malloc( size_t sz )
+{
+ void * res = malloc(sz);
+ if (res == NULL) {
+ fprintf( stderr, "malloc of %d bytes failed\n", (int)sz );
+ exit( EXIT_FAILURE );
+ }
+ return res;
+}
+#undef malloc
+#define malloc(_s) ao_malloc(_s)
+
+LOCAL void *
+ao_realloc( void *p, size_t sz )
+{
+ void * res = realloc(p, sz);
+ if (res == NULL) {
+ fprintf( stderr, "realloc of %d bytes at 0x%p failed\n", (int)sz, p );
+ exit( EXIT_FAILURE );
+ }
+ return res;
+}
+#undef realloc
+#define realloc(_p,_s) ao_realloc(_p,_s)
+
+
+LOCAL void
+ao_free( void *p )
+{
+ if (p != NULL)
+ free(p);
+}
+#undef free
+#define free(_p) ao_free(_p)
+
+
+LOCAL char *
+ao_strdup( char const *str )
+{
+ char * res = strdup(str);
+ if (res == NULL) {
+ fprintf( stderr, "strdup of %d byte string failed\n", (int)strlen(str) );
+ exit( EXIT_FAILURE );
+ }
+ return res;
+}
+#undef strdup
+#define strdup(_p) ao_strdup(_p)
+
+#ifndef HAVE_PATHFIND
+# include "compat/pathfind.c"
+#endif
+
+#ifndef HAVE_SNPRINTF
+# include "compat/snprintf.c"
+#endif
+
+#ifndef HAVE_STRDUP
+# include "compat/strdup.c"
+#endif
+
+#ifndef HAVE_STRCHR
+# include "compat/strchr.c"
+#endif
+
+/*
+ * handleOption
+ *
+ * This routine handles equivalencing, sets the option state flags and
+ * invokes the handler procedure, if any.
+ */
+LOCAL tSuccess
+handleOption( tOptions* pOpts, tOptState* pOptState )
+{
+ /*
+ * Save a copy of the option procedure pointer.
+ * If this is an equivalence class option, we still want this proc.
+ */
+ tOptDesc* pOD = pOptState->pOD;
+ tOptProc* pOP = pOD->pOptProc;
+ if (pOD->fOptState & OPTST_ALLOC_ARG)
+ AGFREE(pOD->optArg.argString);
+
+ pOD->optArg.argString = pOptState->pzOptArg;
+
+ /*
+ * IF we are presetting options, then we will ignore any un-presettable
+ * options. They are the ones either marked as such.
+ */
+ if ( ((pOpts->fOptSet & OPTPROC_PRESETTING) != 0)
+ && ((pOD->fOptState & OPTST_NO_INIT) != 0)
+ )
+ return PROBLEM;
+
+ /*
+ * IF this is an equivalence class option,
+ * THEN
+ * Save the option value that got us to this option
+ * entry. (It may not be pOD->optChar[0], if this is an
+ * equivalence entry.)
+ * set the pointer to the equivalence class base
+ */
+ if (pOD->optEquivIndex != NO_EQUIVALENT) {
+ tOptDesc* p = pOpts->pOptDesc + pOD->optEquivIndex;
+
+ /*
+ * IF the current option state has not been defined (set on the
+ * command line), THEN we will allow continued resetting of
+ * the value. Once "defined", then it must not change.
+ */
+ if ((pOD->fOptState & OPTST_DEFINED) != 0) {
+ /*
+ * The equivalenced-to option has been found on the command
+ * line before. Make sure new occurrences are the same type.
+ *
+ * IF this option has been previously equivalenced and
+ * it was not the same equivalenced-to option,
+ * THEN we have a usage problem.
+ */
+ if (p->optActualIndex != pOD->optIndex) {
+ fprintf( stderr, (char*)zMultiEquiv, p->pz_Name, pOD->pz_Name,
+ (pOpts->pOptDesc + p->optActualIndex)->pz_Name);
+ return FAILURE;
+ }
+ } else {
+ /*
+ * Set the equivalenced-to actual option index to no-equivalent
+ * so that we set all the entries below. This option may either
+ * never have been selected before, or else it was selected by
+ * some sort of "presetting" mechanism.
+ */
+ p->optActualIndex = NO_EQUIVALENT;
+ }
+
+ if (p->optActualIndex != pOD->optIndex) {
+ /*
+ * First time through, copy over the state
+ * and add in the equivalence flag
+ */
+ p->optActualValue = pOD->optValue;
+ p->optActualIndex = pOD->optIndex;
+ pOptState->flags |= OPTST_EQUIVALENCE;
+ }
+
+ /*
+ * Copy the most recent option argument. set membership state
+ * is kept in ``p->optCookie''. Do not overwrite.
+ */
+ p->optArg.argString = pOD->optArg.argString;
+ pOD = p;
+
+ } else {
+ pOD->optActualValue = pOD->optValue;
+ pOD->optActualIndex = pOD->optIndex;
+ }
+
+ pOD->fOptState &= OPTST_PERSISTENT_MASK;
+ pOD->fOptState |= (pOptState->flags & ~OPTST_PERSISTENT_MASK);
+
+ /*
+ * Keep track of count only for DEFINED (command line) options.
+ * IF we have too many, build up an error message and bail.
+ */
+ if ( (pOD->fOptState & OPTST_DEFINED)
+ && (++pOD->optOccCt > pOD->optMaxCt) ) {
+
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0) {
+ char const * pzEqv =
+ (pOD->optEquivIndex != NO_EQUIVALENT) ? zEquiv : zNil;
+
+ fputs( zErrOnly, stderr );
+
+ if (pOD->optMaxCt > 1)
+ fprintf(stderr, zAtMost, pOD->optMaxCt, pOD->pz_Name, pzEqv);
+ else
+ fprintf(stderr, zOnlyOne, pOD->pz_Name, pzEqv);
+ }
+
+ return FAILURE;
+ }
+
+ /*
+ * If provided a procedure to call, call it
+ */
+ if (pOP != (tpOptProc)NULL)
+ (*pOP)( pOpts, pOD );
+
+ return SUCCESS;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * HUNT FOR OPTIONS IN THE ARGUMENT LIST
+ *
+ * The next four procedures are "private" to nextOption().
+ * nextOption() uses findOptDesc() to find the next descriptor and it, in
+ * turn, uses longOptionFind() and shortOptionFind() to actually do the hunt.
+ *
+ * longOptionFind
+ *
+ * Find the long option descriptor for the current option
+ */
+LOCAL tSuccess
+longOptionFind( tOptions* pOpts, char* pzOptName, tOptState* pOptState )
+{
+ ag_bool disable = AG_FALSE;
+ char* pzEq = strchr( pzOptName, '=' );
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int idx = 0;
+ int idxLim = pOpts->optCt;
+ int matchCt = 0;
+ int matchIdx = 0;
+ int nameLen;
+
+ /*
+ * IF the value is attached to the name,
+ * THEN clip it off.
+ * Either way, figure out how long our name is
+ */
+ if (pzEq != NULL) {
+ nameLen = (int)(pzEq - pzOptName);
+ *pzEq = NUL;
+ } else nameLen = strlen( pzOptName );
+
+ do {
+ if (SKIP_OPT(pOD))
+ continue;
+
+ if (strneqvcmp( pzOptName, pOD->pz_Name, nameLen ) == 0) {
+ /*
+ * IF we have a complete match
+ * THEN it takes priority over any already located partial
+ */
+ if (pOD->pz_Name[ nameLen ] == NUL) {
+ matchCt = 1;
+ matchIdx = idx;
+ break;
+ }
+ }
+
+ /*
+ * IF there is a disable name
+ * *AND* no argument value has been supplied
+ * (disabled options may have no argument)
+ * *AND* the option name matches the disable name
+ * THEN ...
+ */
+ else if ( (pOD->pz_DisableName != NULL)
+ && (strneqvcmp(pzOptName, pOD->pz_DisableName, nameLen) == 0)
+ ) {
+ disable = AG_TRUE;
+
+ /*
+ * IF we have a complete match
+ * THEN it takes priority over any already located partial
+ */
+ if (pOD->pz_DisableName[ nameLen ] == NUL) {
+ matchCt = 1;
+ matchIdx = idx;
+ break;
+ }
+ }
+
+ else
+ continue;
+
+ /*
+ * We found a partial match, either regular or disabling.
+ * Remember the index for later.
+ */
+ matchIdx = idx;
+
+ if (++matchCt > 1)
+ break;
+
+ } while (pOD++, (++idx < idxLim));
+
+ if (pzEq != NULL)
+ *(pzEq++) = '=';
+
+ /*
+ * Make sure we either found an exact match or found only one partial
+ */
+ if (matchCt == 1) {
+ /*
+ * IF we found a disablement name,
+ * THEN set the bit in the callers' flag word
+ */
+ if (disable)
+ pOptState->flags |= OPTST_DISABLED;
+
+ pOptState->pOD = pOpts->pOptDesc + matchIdx;
+ pOptState->pzOptArg = pzEq;
+ pOptState->optType = TOPT_LONG;
+ return SUCCESS;
+ }
+
+ /*
+ * IF there is no equal sign
+ * *AND* we are using named arguments
+ * *AND* there is a default named option,
+ * THEN return that option.
+ */
+ if ( (pzEq == NULL)
+ && NAMED_OPTS(pOpts)
+ && (pOpts->specOptIdx.default_opt != NO_EQUIVALENT)) {
+ pOptState->pOD = pOpts->pOptDesc + pOpts->specOptIdx.default_opt;
+
+ pOptState->pzOptArg = pzOptName;
+ pOptState->optType = TOPT_DEFAULT;
+ return SUCCESS;
+ }
+
+ /*
+ * IF we are to stop on errors (the default, actually)
+ * THEN call the usage procedure.
+ */
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0) {
+ fprintf( stderr, zIllOptStr, pOpts->pzProgPath,
+ (matchCt == 0) ? zIllegal : zAmbiguous, pzOptName );
+ (*pOpts->pUsageProc)( pOpts, EXIT_FAILURE );
+ }
+
+ return FAILURE;
+}
+
+
+/*
+ * shortOptionFind
+ *
+ * Find the short option descriptor for the current option
+ */
+LOCAL tSuccess
+shortOptionFind( tOptions* pOpts, uint_t optValue, tOptState* pOptState )
+{
+ tOptDesc* pRes = pOpts->pOptDesc;
+ int ct = pOpts->optCt;
+
+ /*
+ * Search the option list
+ */
+ for (;;) {
+ /*
+ * IF the values match,
+ * THEN we stop here
+ */
+ if ((! SKIP_OPT(pRes)) && (optValue == pRes->optValue)) {
+ pOptState->pOD = pRes;
+ pOptState->optType = TOPT_SHORT;
+ return SUCCESS;
+ }
+
+ /*
+ * Advance to next option description
+ */
+ pRes++;
+
+ /*
+ * IF we have searched everything, ...
+ */
+ if (--ct <= 0)
+ break;
+ }
+
+ /*
+ * IF the character value is a digit
+ * AND there is a special number option ("-n")
+ * THEN the result is the "option" itself and the
+ * option is the specially marked "number" option.
+ */
+ if ( isdigit( optValue )
+ && (pOpts->specOptIdx.number_option != NO_EQUIVALENT) ) {
+ pOptState->pOD = \
+ pRes = pOpts->pOptDesc + pOpts->specOptIdx.number_option;
+ (pOpts->pzCurOpt)--;
+ pOptState->optType = TOPT_SHORT;
+ return SUCCESS;
+ }
+
+ /*
+ * IF we are to stop on errors (the default, actually)
+ * THEN call the usage procedure.
+ */
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0) {
+ fprintf( stderr, zIllOptChr, pOpts->pzProgPath, optValue );
+ (*pOpts->pUsageProc)( pOpts, EXIT_FAILURE );
+ }
+
+ return FAILURE;
+}
+
+
+/*
+ * findOptDesc
+ *
+ * Find the option descriptor for the current option
+ */
+static tSuccess
+findOptDesc( tOptions* pOpts, tOptState* pOptState )
+{
+ /*
+ * IF we are continuing a short option list (e.g. -xyz...)
+ * THEN continue a single flag option.
+ * OTHERWISE see if there is room to advance and then do so.
+ */
+ if ((pOpts->pzCurOpt != NULL) && (*pOpts->pzCurOpt != NUL))
+ return shortOptionFind( pOpts, (tAoUC)*(pOpts->pzCurOpt), pOptState );
+
+ if (pOpts->curOptIdx >= pOpts->origArgCt)
+ return PROBLEM; /* NORMAL COMPLETION */
+
+ pOpts->pzCurOpt = pOpts->origArgVect[ pOpts->curOptIdx ];
+
+ /*
+ * IF all arguments must be named options, ...
+ */
+ if (NAMED_OPTS(pOpts)) {
+ char* pz = pOpts->pzCurOpt;
+ pOpts->curOptIdx++;
+
+ /*
+ * Skip over any flag/option markers.
+ * In this mode, they are not required.
+ */
+ while (*pz == '-') pz++;
+
+ return longOptionFind( pOpts, pz, pOptState );
+ }
+
+ /*
+ * Note the kind of flag/option marker
+ */
+ if (*((pOpts->pzCurOpt)++) != '-')
+ return PROBLEM; /* NORMAL COMPLETION - this + rest are operands */
+
+ /*
+ * Special hack for a hyphen by itself
+ */
+ if (*(pOpts->pzCurOpt) == NUL)
+ return PROBLEM; /* NORMAL COMPLETION - this + rest are operands */
+
+ /*
+ * The current argument is to be processed as an option argument
+ */
+ pOpts->curOptIdx++;
+
+ /*
+ * We have an option marker.
+ * Test the next character for long option indication
+ */
+ if (pOpts->pzCurOpt[0] == '-') {
+ if (*++(pOpts->pzCurOpt) == NUL)
+ /*
+ * NORMAL COMPLETION - NOT this arg, but rest are operands
+ */
+ return PROBLEM;
+
+ /*
+ * We do not allow the hyphen to be used as a flag value.
+ * Therefore, if long options are not to be accepted, we punt.
+ */
+ if ((pOpts->fOptSet & OPTPROC_LONGOPT) == 0) {
+ fprintf( stderr, zIllOptStr, pOpts->pzProgPath,
+ zIllegal, pOpts->pzCurOpt-2 );
+ return FAILURE;
+ }
+
+ return longOptionFind( pOpts, pOpts->pzCurOpt, pOptState );
+ }
+
+ /*
+ * If short options are not allowed, then do long
+ * option processing. Otherwise the character must be a
+ * short (i.e. single character) option.
+ */
+ if ((pOpts->fOptSet & OPTPROC_SHORTOPT) != 0)
+ return shortOptionFind( pOpts, (tAoUC)*(pOpts->pzCurOpt), pOptState );
+
+ return longOptionFind( pOpts, pOpts->pzCurOpt, pOptState );
+}
+
+
+/*
+ * nextOption
+ *
+ * Find the option descriptor and option argument (if any) for the
+ * next command line argument. DO NOT modify the descriptor. Put
+ * all the state in the state argument so that the option can be skipped
+ * without consequence (side effect).
+ */
+static tSuccess
+nextOption( tOptions* pOpts, tOptState* pOptState )
+{
+ tSuccess res;
+ enum { ARG_NONE, ARG_MAY, ARG_MUST } arg_type = ARG_NONE;
+ teOptArgType at;
+
+ res = findOptDesc( pOpts, pOptState );
+ if (! SUCCESSFUL( res ))
+ return res;
+ pOptState->flags |= (pOptState->pOD->fOptState & OPTST_PERSISTENT_MASK);
+ at = OPTST_GET_ARGTYPE(pOptState->flags);
+
+ /*
+ * Figure out what to do about option arguments. An argument may be
+ * required, not associated with the option, or be optional. We detect the
+ * latter by examining for an option marker on the next possible argument.
+ * Disabled mode option selection also disables option arguments.
+ */
+ if ((pOptState->flags & OPTST_DISABLED) != 0)
+ arg_type = ARG_NONE;
+ else if (at == OPARG_TYPE_NONE)
+ arg_type = ARG_NONE;
+ else if (pOptState->flags & OPTST_ARG_OPTIONAL)
+ arg_type = ARG_MAY;
+ else
+ arg_type = ARG_MUST;
+
+ switch (arg_type) {
+ case ARG_MUST:
+ /*
+ * An option argument is required. Long options can either have
+ * a separate command line argument, or an argument attached by
+ * the '=' character. Figure out which.
+ */
+ switch (pOptState->optType) {
+ case TOPT_SHORT:
+ /*
+ * See if an arg string follows the flag character
+ */
+ if (*++(pOpts->pzCurOpt) == NUL)
+ pOpts->pzCurOpt = pOpts->origArgVect[ pOpts->curOptIdx++ ];
+ pOptState->pzOptArg = pOpts->pzCurOpt;
+ break;
+
+ case TOPT_LONG:
+ /*
+ * See if an arg string has already been assigned (glued on
+ * with an `=' character)
+ */
+ if (pOptState->pzOptArg == NULL)
+ pOptState->pzOptArg = pOpts->origArgVect[ pOpts->curOptIdx++ ];
+ break;
+
+ default:
+#ifdef DEBUG
+ fputs( "AutoOpts lib error: option type not selected\n",
+ stderr );
+ exit( EXIT_FAILURE );
+#endif
+
+ case TOPT_DEFAULT:
+ /*
+ * The option was selected by default. The current token is
+ * the option argument.
+ */
+ break;
+ }
+
+ /*
+ * Make sure we did not overflow the argument list.
+ */
+ if (pOpts->curOptIdx > pOpts->origArgCt) {
+ fprintf( stderr, zMisArg, pOpts->pzProgPath,
+ pOptState->pOD->pz_Name );
+ return FAILURE;
+ }
+
+ pOpts->pzCurOpt = NULL; /* next time advance to next arg */
+ break;
+
+ case ARG_MAY:
+ /*
+ * An option argument is optional.
+ */
+ switch (pOptState->optType) {
+ case TOPT_SHORT:
+ if (*++pOpts->pzCurOpt != NUL)
+ pOptState->pzOptArg = pOpts->pzCurOpt;
+ else {
+ char* pzLA = pOpts->origArgVect[ pOpts->curOptIdx ];
+
+ /*
+ * BECAUSE it is optional, we must make sure
+ * we did not find another flag and that there
+ * is such an argument.
+ */
+ if ((pzLA == NULL) || (*pzLA == '-'))
+ pOptState->pzOptArg = NULL;
+ else {
+ pOpts->curOptIdx++; /* argument found */
+ pOptState->pzOptArg = pzLA;
+ }
+ }
+ break;
+
+ case TOPT_LONG:
+ /*
+ * Look for an argument if we don't already have one (glued on
+ * with a `=' character) *AND* we are not in named argument mode
+ */
+ if ( (pOptState->pzOptArg == NULL)
+ && (! NAMED_OPTS(pOpts))) {
+ char* pzLA = pOpts->origArgVect[ pOpts->curOptIdx ];
+
+ /*
+ * BECAUSE it is optional, we must make sure
+ * we did not find another flag and that there
+ * is such an argument.
+ */
+ if ((pzLA == NULL) || (*pzLA == '-'))
+ pOptState->pzOptArg = NULL;
+ else {
+ pOpts->curOptIdx++; /* argument found */
+ pOptState->pzOptArg = pzLA;
+ }
+ }
+ break;
+
+ default:
+ case TOPT_DEFAULT:
+ fputs( "AutoOpts lib error: defaulted to option with optional arg\n",
+ stderr );
+ exit( EX_SOFTWARE );
+ }
+
+ /*
+ * After an option with an optional argument, we will
+ * *always* start with the next option because if there
+ * were any characters following the option name/flag,
+ * they would be interpreted as the argument.
+ */
+ pOpts->pzCurOpt = NULL;
+ break;
+
+ default: /* CANNOT */
+ /*
+ * No option argument. Make sure next time around we find
+ * the correct option flag character for short options
+ */
+ if (pOptState->optType == TOPT_SHORT)
+ (pOpts->pzCurOpt)++;
+
+ /*
+ * It is a long option. Make sure there was no ``=xxx'' argument
+ */
+ else if (pOptState->pzOptArg != NULL) {
+ fprintf( stderr, zNoArg, pOpts->pzProgPath,
+ pOptState->pOD->pz_Name );
+ return FAILURE;
+ }
+
+ /*
+ * It is a long option. Advance to next command line argument.
+ */
+ else
+ pOpts->pzCurOpt = NULL;
+ }
+
+ return SUCCESS;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * DO PRESETS
+ *
+ * The next several routines do the immediate action pass on the command
+ * line options, then the environment variables, then the config files in
+ * reverse order. Once done with that, the order is reversed and all
+ * the config files and environment variables are processed again, this
+ * time only processing the non-immediate action options. doPresets()
+ * will then return for optionProcess() to do the final pass on the command
+ * line arguments.
+ */
+
+/*
+ * doImmediateOpts - scan the command line for immediate action options
+ */
+LOCAL tSuccess
+doImmediateOpts( tOptions* pOpts )
+{
+ pOpts->curOptIdx = 1; /* start by skipping program name */
+ pOpts->pzCurOpt = NULL;
+
+ /*
+ * Examine all the options from the start. We process any options that
+ * are marked for immediate processing.
+ */
+ for (;;) {
+ tOptState optState = OPTSTATE_INITIALIZER(PRESET);
+
+ switch (nextOption( pOpts, &optState )) {
+ case FAILURE: goto optionsDone;
+ case PROBLEM: return SUCCESS; /* no more args */
+ case SUCCESS: break;
+ }
+
+ /*
+ * IF this *is* an immediate-attribute option, then do it.
+ */
+ if (! DO_IMMEDIATELY(optState.flags))
+ continue;
+
+ if (! SUCCESSFUL( handleOption( pOpts, &optState )))
+ break;
+ } optionsDone:;
+
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0)
+ (*pOpts->pUsageProc)( pOpts, EXIT_FAILURE );
+ return FAILURE;
+}
+
+
+LOCAL tSuccess
+doRegularOpts( tOptions* pOpts )
+{
+ /*
+ * Now, process all the options from our current position onward.
+ * (This allows interspersed options and arguments for the few
+ * non-standard programs that require it.)
+ */
+ for (;;) {
+ tOptState optState = OPTSTATE_INITIALIZER(DEFINED);
+
+ switch (nextOption( pOpts, &optState )) {
+ case FAILURE: goto optionsDone;
+ case PROBLEM: return SUCCESS; /* no more args */
+ case SUCCESS: break;
+ }
+
+ /*
+ * IF this is not being processed normally (i.e. is immediate action)
+ * THEN skip it (unless we are supposed to do it a second time).
+ */
+ if (! DO_NORMALLY(optState.flags)) {
+ if (! DO_SECOND_TIME(optState.flags))
+ continue;
+ optState.pOD->optOccCt--; /* don't count last time */
+ }
+
+ if (! SUCCESSFUL( handleOption( pOpts, &optState )))
+ break;
+ } optionsDone:;
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0)
+ (*pOpts->pUsageProc)( pOpts, EXIT_FAILURE );
+ return FAILURE;
+}
+
+
+/*
+ * doPresets - check for preset values from a config file or the envrionment
+ */
+static tSuccess
+doPresets( tOptions* pOpts )
+{
+ tOptDesc * pOD = NULL;
+
+ if (! SUCCESSFUL( doImmediateOpts( pOpts )))
+ return FAILURE;
+
+ /*
+ * IF this option set has a --save-opts option, then it also
+ * has a --load-opts option. See if a command line option has disabled
+ * option presetting.
+ */
+ if (pOpts->specOptIdx.save_opts != 0) {
+ pOD = pOpts->pOptDesc + pOpts->specOptIdx.save_opts + 1;
+ if (DISABLED_OPT(pOD))
+ return SUCCESS;
+ }
+
+ /*
+ * Until we return from this procedure, disable non-presettable opts
+ */
+ pOpts->fOptSet |= OPTPROC_PRESETTING;
+ /*
+ * IF there are no config files,
+ * THEN do any environment presets and leave.
+ */
+ if (pOpts->papzHomeList == NULL) {
+ doEnvPresets( pOpts, ENV_ALL );
+ }
+ else {
+ doEnvPresets( pOpts, ENV_IMM );
+
+ /*
+ * Check to see if environment variables have disabled presetting.
+ */
+ if ((pOD != NULL) && ! DISABLED_OPT(pOD))
+ internalFileLoad( pOpts );
+
+ /*
+ * ${PROGRAM_LOAD_OPTS} value of "no" cannot disable other environment
+ * variable options. Only the loading of .rc files.
+ */
+ doEnvPresets( pOpts, ENV_NON_IMM );
+ }
+ pOpts->fOptSet &= ~OPTPROC_PRESETTING;
+
+ return SUCCESS;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * VERIFY OPTION CONSISTENCY
+ *
+ * Make sure that the argument list passes our consistency tests.
+ */
+static int
+checkConsistency( tOptions* pOpts )
+{
+ int errCt = 0;
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int oCt = pOpts->presetOptCt;
+
+ /*
+ * FOR each of "oCt" options, ...
+ */
+ for (;;) {
+ const int* pMust = pOD->pOptMust;
+ const int* pCant = pOD->pOptCant;
+
+ /*
+ * IF the current option was provided on the command line
+ * THEN ensure that any "MUST" requirements are not
+ * "DEFAULT" (unspecified) *AND* ensure that any
+ * "CANT" options have not been SET or DEFINED.
+ */
+ if (SELECTED_OPT(pOD)) {
+ if (pMust != NULL) for (;;) {
+ tOptDesc* p = pOpts->pOptDesc + *(pMust++);
+ if (UNUSED_OPT(p)) {
+ const tOptDesc* pN = pOpts->pOptDesc + pMust[-1];
+ errCt++;
+ fprintf( stderr, zReqFmt, pOD->pz_Name, pN->pz_Name );
+ }
+
+ if (*pMust == NO_EQUIVALENT)
+ break;
+ }
+
+ if (pCant != NULL) for (;;) {
+ tOptDesc* p = pOpts->pOptDesc + *(pCant++);
+ if (SELECTED_OPT(p)) {
+ const tOptDesc* pN = pOpts->pOptDesc + pCant[-1];
+ errCt++;
+ fprintf( stderr, zCantFmt, pOD->pz_Name, pN->pz_Name );
+ }
+
+ if (*pCant == NO_EQUIVALENT)
+ break;
+ }
+ }
+
+ /*
+ * IF this option is not equivalenced to another,
+ * OR it is equivalenced to itself (is the equiv. root)
+ * THEN we need to make sure it occurs often enough.
+ */
+ if ( (pOD->optEquivIndex == NO_EQUIVALENT)
+ || (pOD->optEquivIndex == pOD->optIndex) ) do {
+ /*
+ * IF the occurrence counts have been satisfied,
+ * THEN there is no problem.
+ */
+ if (pOD->optOccCt >= pOD->optMinCt)
+ break;
+
+ /*
+ * IF MUST_SET means SET and PRESET are okay,
+ * so min occurrence count doesn't count
+ */
+ if ( (pOD->fOptState & OPTST_MUST_SET)
+ && (pOD->fOptState & (OPTST_PRESET | OPTST_SET)) )
+ break;
+
+ errCt++;
+ if (pOD->optMinCt > 1)
+ fprintf( stderr, zNotEnough, pOD->pz_Name, pOD->optMinCt );
+ else fprintf( stderr, zNeedOne, pOD->pz_Name );
+ } while (0);
+
+ if (--oCt <= 0)
+ break;
+ pOD++;
+ }
+
+ /*
+ * IF we are stopping on errors, check to see if any remaining
+ * arguments are required to be there or prohibited from being there.
+ */
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0) {
+
+ /*
+ * Check for prohibition
+ */
+ if ((pOpts->fOptSet & OPTPROC_NO_ARGS) != 0) {
+ if (pOpts->origArgCt > pOpts->curOptIdx) {
+ fprintf( stderr, zNoArgs, pOpts->pzProgName );
+ ++errCt;
+ }
+ }
+
+ /*
+ * ELSE not prohibited, check for being required
+ */
+ else if ((pOpts->fOptSet & OPTPROC_ARGS_REQ) != 0) {
+ if (pOpts->origArgCt <= pOpts->curOptIdx) {
+ fprintf( stderr, zArgsMust, pOpts->pzProgName );
+ ++errCt;
+ }
+ }
+ }
+
+ return errCt;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * THESE ROUTINES ARE CALLABLE FROM THE GENERATED OPTION PROCESSING CODE
+ */
+/*=--subblock=arg=arg_type,arg_name,arg_desc =*/
+/*=*
+ * library: opts
+ * header: your-opts.h
+ *
+ * lib_description:
+ *
+ * These are the routines that libopts users may call directly from their
+ * code. There are several other routines that can be called by code
+ * generated by the libopts option templates, but they are not to be
+ * called from any other user code. The @file{options.h} header is
+ * fairly clear about this, too.
+=*/
+
+/*=export_func optionProcess
+ *
+ * what: this is the main option processing routine
+ *
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + int + argc + program arg count +
+ * arg: + char** + argv + program arg vector +
+ *
+ * ret_type: int
+ * ret_desc: the count of the arguments processed
+ *
+ * doc:
+ *
+ * This is the main entry point for processing options. It is intended
+ * that this procedure be called once at the beginning of the execution of
+ * a program. Depending on options selected earlier, it is sometimes
+ * necessary to stop and restart option processing, or to select completely
+ * different sets of options. This can be done easily, but you generally
+ * do not want to do this.
+ *
+ * The number of arguments processed always includes the program name.
+ * If one of the arguments is "--", then it is counted and the processing
+ * stops. If an error was encountered and errors are to be tolerated, then
+ * the returned value is the index of the argument causing the error.
+ * A hyphen by itself ("-") will also cause processing to stop and will
+ * @emph{not} be counted among the processed arguments. A hyphen by itself
+ * is treated as an operand. Encountering an operand stops option
+ * processing.
+ *
+ * err: Errors will cause diagnostics to be printed. @code{exit(3)} may
+ * or may not be called. It depends upon whether or not the options
+ * were generated with the "allow-errors" attribute, or if the
+ * ERRSKIP_OPTERR or ERRSTOP_OPTERR macros were invoked.
+=*/
+int
+optionProcess(
+ tOptions* pOpts,
+ int argCt,
+ char** argVect )
+{
+ if (! SUCCESSFUL( validateOptionsStruct( pOpts, argVect[0] )))
+ exit( EX_SOFTWARE );
+
+ /*
+ * Establish the real program name, the program full path,
+ * and do all the presetting the first time thru only.
+ */
+ if ((pOpts->fOptSet & OPTPROC_INITDONE) == 0) {
+ pOpts->origArgCt = argCt;
+ pOpts->origArgVect = argVect;
+ pOpts->fOptSet |= OPTPROC_INITDONE;
+
+ if (! SUCCESSFUL( doPresets( pOpts )))
+ return 0;
+
+ if ((pOpts->fOptSet & OPTPROC_REORDER) != 0)
+ optionSort( pOpts );
+
+ pOpts->curOptIdx = 1;
+ pOpts->pzCurOpt = NULL;
+ }
+
+ /*
+ * IF we are (re)starting,
+ * THEN reset option location
+ */
+ else if (pOpts->curOptIdx <= 0) {
+ pOpts->curOptIdx = 1;
+ pOpts->pzCurOpt = NULL;
+ }
+
+ if (! SUCCESSFUL( doRegularOpts( pOpts )))
+ return pOpts->origArgCt;
+
+ /*
+ * IF there were no errors
+ * AND we have RC/INI files
+ * AND there is a request to save the files
+ * THEN do that now before testing for conflicts.
+ * (conflicts are ignored in preset options)
+ */
+ if (pOpts->specOptIdx.save_opts != 0) {
+ tOptDesc* pOD = pOpts->pOptDesc + pOpts->specOptIdx.save_opts;
+
+ if (SELECTED_OPT( pOD )) {
+ optionSaveFile( pOpts );
+ exit( EXIT_SUCCESS );
+ }
+ }
+
+ /*
+ * IF we are checking for errors,
+ * THEN look for too few occurrences of required options
+ */
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) != 0) {
+ if (checkConsistency( pOpts ) != 0)
+ (*pOpts->pUsageProc)( pOpts, EXIT_FAILURE );
+ }
+
+ return pOpts->curOptIdx;
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/autoopts.c */
diff --git a/contrib/ntp/sntp/libopts/autoopts.h b/contrib/ntp/sntp/libopts/autoopts.h
new file mode 100644
index 0000000..2645757
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/autoopts.h
@@ -0,0 +1,387 @@
+
+/*
+ * Time-stamp: "2007-04-15 09:59:39 bkorb"
+ *
+ * autoopts.h $Id: autoopts.h,v 4.23 2007/04/15 19:01:18 bkorb Exp $
+ * Time-stamp: "2005-02-14 05:59:50 bkorb"
+ *
+ * This file defines all the global structures and special values
+ * used in the automated option processing library.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+#ifndef AUTOGEN_AUTOOPTS_H
+#define AUTOGEN_AUTOOPTS_H
+
+#include "compat/compat.h"
+
+#define AO_NAME_LIMIT 127
+#define AO_NAME_SIZE ((size_t)(AO_NAME_LIMIT + 1))
+
+#ifndef AG_PATH_MAX
+# ifdef PATH_MAX
+# define AG_PATH_MAX ((size_t)PATH_MAX)
+# else
+# define AG_PATH_MAX ((size_t)4096)
+# endif
+#else
+# if defined(PATH_MAX) && (PATH_MAX > MAXPATHLEN)
+# undef AG_PATH_MAX
+# define AG_PATH_MAX ((size_t)PATH_MAX)
+# endif
+#endif
+
+#undef EXPORT
+#define EXPORT
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+# define DIRCH '\\'
+#else
+# define DIRCH '/'
+#endif
+
+#ifndef EX_NOINPUT
+# define EX_NOINPUT 66
+#endif
+#ifndef EX_SOFTWARE
+# define EX_SOFTWARE 70
+#endif
+#ifndef EX_CONFIG
+# define EX_CONFIG 78
+#endif
+
+/*
+ * Convert the number to a list usable in a printf call
+ */
+#define NUM_TO_VER(n) ((n) >> 12), ((n) >> 7) & 0x001F, (n) & 0x007F
+
+#define NAMED_OPTS(po) \
+ (((po)->fOptSet & (OPTPROC_SHORTOPT | OPTPROC_LONGOPT)) == 0)
+
+#define SKIP_OPT(p) (((p)->fOptState & (OPTST_DOCUMENT|OPTST_OMITTED)) != 0)
+
+typedef int tDirection;
+#define DIRECTION_PRESET -1
+#define DIRECTION_PROCESS 1
+#define DIRECTION_CALLED 0
+
+#define PROCESSING(d) ((d)>0)
+#define PRESETTING(d) ((d)<0)
+
+#define ISNAMECHAR( c ) (isalnum(c) || ((c) == '_') || ((c) == '-'))
+
+/*
+ * Procedure success codes
+ *
+ * USAGE: define procedures to return "tSuccess". Test their results
+ * with the SUCCEEDED, FAILED and HADGLITCH macros.
+ *
+ * Microsoft sticks its nose into user space here, so for Windows' sake,
+ * make sure all of these are undefined.
+ */
+#undef SUCCESS
+#undef FAILURE
+#undef PROBLEM
+#undef SUCCEEDED
+#undef SUCCESSFUL
+#undef FAILED
+#undef HADGLITCH
+
+#define SUCCESS ((tSuccess) 0)
+#define FAILURE ((tSuccess)-1)
+#define PROBLEM ((tSuccess) 1)
+
+typedef int tSuccess;
+
+#define SUCCEEDED( p ) ((p) == SUCCESS)
+#define SUCCESSFUL( p ) SUCCEEDED( p )
+#define FAILED( p ) ((p) < SUCCESS)
+#define HADGLITCH( p ) ((p) > SUCCESS)
+
+/*
+ * When loading a line (or block) of text as an option, the value can
+ * be processed in any of several modes:
+ *
+ * @table @samp
+ * @item keep
+ * Every part of the value between the delimiters is saved.
+ *
+ * @item uncooked
+ * Even if the value begins with quote characters, do not do quote processing.
+ *
+ * @item cooked
+ * If the value looks like a quoted string, then process it.
+ * Double quoted strings are processed the way strings are in "C" programs,
+ * except they are treated as regular characters if the following character
+ * is not a well-established escape sequence.
+ * Single quoted strings (quoted with apostrophies) are handled the way
+ * strings are handled in shell scripts, *except* that backslash escapes
+ * are honored before backslash escapes and apostrophies.
+ * @end table
+ */
+typedef enum {
+ OPTION_LOAD_COOKED,
+ OPTION_LOAD_UNCOOKED,
+ OPTION_LOAD_KEEP
+} tOptionLoadMode;
+
+extern tOptionLoadMode option_load_mode;
+
+/*
+ * The pager state is used by optionPagedUsage() procedure.
+ * When it runs, it sets itself up to be called again on exit.
+ * If, however, a routine needs a child process to do some work
+ * before it is done, then 'pagerState' must be set to
+ * 'PAGER_STATE_CHILD' so that optionPagedUsage() will not try
+ * to run the pager program before its time.
+ */
+typedef enum {
+ PAGER_STATE_INITIAL,
+ PAGER_STATE_READY,
+ PAGER_STATE_CHILD
+} tePagerState;
+
+extern tePagerState pagerState;
+
+typedef enum {
+ ENV_ALL,
+ ENV_IMM,
+ ENV_NON_IMM
+} teEnvPresetType;
+
+typedef enum {
+ TOPT_UNDEFINED = 0,
+ TOPT_SHORT,
+ TOPT_LONG,
+ TOPT_DEFAULT
+} teOptType;
+
+typedef struct {
+ tOptDesc* pOD;
+ tCC* pzOptArg;
+ tAoUL flags;
+ teOptType optType;
+} tOptState;
+#define OPTSTATE_INITIALIZER(st) \
+ { NULL, NULL, OPTST_ ## st, TOPT_UNDEFINED }
+
+#define TEXTTO_TABLE \
+ _TT_( LONGUSAGE ) \
+ _TT_( USAGE ) \
+ _TT_( VERSION )
+#define _TT_(n) \
+ TT_ ## n ,
+
+typedef enum { TEXTTO_TABLE COUNT_TT } teTextTo;
+
+#undef _TT_
+
+typedef struct {
+ tCC* pzStr;
+ tCC* pzReq;
+ tCC* pzNum;
+ tCC* pzKey;
+ tCC* pzKeyL;
+ tCC* pzBool;
+ tCC* pzNest;
+ tCC* pzOpt;
+ tCC* pzNo;
+ tCC* pzBrk;
+ tCC* pzNoF;
+ tCC* pzSpc;
+ tCC* pzOptFmt;
+} arg_types_t;
+
+#define AGALOC( c, w ) ao_malloc((size_t)c)
+#define AGREALOC( p, c, w ) ao_realloc((void*)p, (size_t)c)
+#define AGFREE( p ) ao_free((void*)p)
+#define AGDUPSTR( p, s, w ) (p = ao_strdup(s))
+
+static void *
+ao_malloc( size_t sz );
+
+static void *
+ao_realloc( void *p, size_t sz );
+
+static void
+ao_free( void *p );
+
+static char *
+ao_strdup( char const *str );
+
+#define TAGMEM( m, t )
+
+/*
+ * DO option handling?
+ *
+ * Options are examined at two times: at immediate handling time and at
+ * normal handling time. If an option is disabled, the timing may be
+ * different from the handling of the undisabled option. The OPTST_DIABLED
+ * bit indicates the state of the currently discovered option.
+ * So, here's how it works:
+ *
+ * A) handling at "immediate" time, either 1 or 2:
+ *
+ * 1. OPTST_DISABLED is not set:
+ * IMM must be set
+ * DISABLE_IMM don't care
+ * TWICE don't care
+ * DISABLE_TWICE don't care
+ * 0 -and- 1 x x x
+ *
+ * 2. OPTST_DISABLED is set:
+ * IMM don't care
+ * DISABLE_IMM must be set
+ * TWICE don't care
+ * DISABLE_TWICE don't care
+ * 1 -and- x 1 x x
+ */
+#define DO_IMMEDIATELY(_flg) \
+ ( (((_flg) & (OPTST_DISABLED|OPTST_IMM)) == OPTST_IMM) \
+ || ( ((_flg) & (OPTST_DISABLED|OPTST_DISABLE_IMM)) \
+ == (OPTST_DISABLED|OPTST_DISABLE_IMM) ))
+
+/* B) handling at "regular" time because it was not immediate
+ *
+ * 1. OPTST_DISABLED is not set:
+ * IMM must *NOT* be set
+ * DISABLE_IMM don't care
+ * TWICE don't care
+ * DISABLE_TWICE don't care
+ * 0 -and- 0 x x x
+ *
+ * 2. OPTST_DISABLED is set:
+ * IMM don't care
+ * DISABLE_IMM don't care
+ * TWICE must be set
+ * DISABLE_TWICE don't care
+ * 1 -and- x x 1 x
+ */
+#define DO_NORMALLY(_flg) ( \
+ (((_flg) & (OPTST_DISABLED|OPTST_IMM)) == 0) \
+ || (((_flg) & (OPTST_DISABLED|OPTST_DISABLE_IMM)) == \
+ OPTST_DISABLED) )
+
+/* C) handling at "regular" time because it is to be handled twice.
+ * The immediate bit was already tested and found to be set:
+ *
+ * 3. OPTST_DISABLED is not set:
+ * IMM is set (but don't care)
+ * DISABLE_IMM don't care
+ * TWICE must be set
+ * DISABLE_TWICE don't care
+ * 0 -and- ? x 1 x
+ *
+ * 4. OPTST_DISABLED is set:
+ * IMM don't care
+ * DISABLE_IMM is set (but don't care)
+ * TWICE don't care
+ * DISABLE_TWICE must be set
+ * 1 -and- x ? x 1
+ */
+#define DO_SECOND_TIME(_flg) ( \
+ (((_flg) & (OPTST_DISABLED|OPTST_TWICE)) == \
+ OPTST_TWICE) \
+ || (((_flg) & (OPTST_DISABLED|OPTST_DISABLE_TWICE)) == \
+ (OPTST_DISABLED|OPTST_DISABLE_TWICE) ))
+
+/*
+ * text_mmap structure. Only active on platforms with mmap(2).
+ */
+#ifdef HAVE_SYS_MMAN_H
+# include <sys/mman.h>
+#else
+# ifndef PROT_READ
+# define PROT_READ 0x01
+# endif
+# ifndef PROT_WRITE
+# define PROT_WRITE 0x02
+# endif
+# ifndef MAP_SHARED
+# define MAP_SHARED 0x01
+# endif
+# ifndef MAP_PRIVATE
+# define MAP_PRIVATE 0x02
+# endif
+#endif
+
+#ifndef MAP_FAILED
+# define MAP_FAILED ((void*)-1)
+#endif
+
+#ifndef _SC_PAGESIZE
+# ifdef _SC_PAGE_SIZE
+# define _SC_PAGESIZE _SC_PAGE_SIZE
+# endif
+#endif
+
+#ifndef HAVE_STRCHR
+extern char* strchr( char const *s, int c);
+extern char* strrchr( char const *s, int c);
+#endif
+
+/*
+ * Define and initialize all the user visible strings.
+ * We do not do translations. If translations are to be done, then
+ * the client will provide a callback for that purpose.
+ */
+#undef DO_TRANSLATIONS
+#include "autoopts/usage-txt.h"
+
+/*
+ * File pointer for usage output
+ */
+extern FILE* option_usage_fp;
+
+extern tOptProc optionPrintVersion, optionPagedUsage, optionLoadOpt;
+
+#endif /* AUTOGEN_AUTOOPTS_H */
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/autoopts.h */
diff --git a/contrib/ntp/sntp/libopts/autoopts/options.h b/contrib/ntp/sntp/libopts/autoopts/options.h
new file mode 100644
index 0000000..c2ceeb3
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/autoopts/options.h
@@ -0,0 +1,977 @@
+/* -*- buffer-read-only: t -*- vi: set ro:
+ *
+ * DO NOT EDIT THIS FILE (options.h)
+ *
+ * It has been AutoGen-ed Saturday May 5, 2007 at 12:02:34 PM PDT
+ * From the definitions funcs.def
+ * and the template file options_h
+ *
+ * This file defines all the global structures and special values
+ * used in the automated option processing library.
+ *
+ * Automated Options copyright 1992-Y Bruce Korb
+ *
+ * AutoOpts is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * AutoOpts 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with AutoOpts. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef AUTOOPTS_OPTIONS_H_GUARD
+#define AUTOOPTS_OPTIONS_H_GUARD
+#include <sys/types.h>
+
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif /* HAVE_STDINT/INTTYPES_H */
+
+#if defined(HAVE_LIMITS_H)
+# include <limits.h>
+#elif defined(HAVE_SYS_LIMITS_H)
+# include <sys/limits.h>
+#endif /* HAVE_LIMITS/SYS_LIMITS_H */
+
+#if defined(HAVE_SYSEXITS_H)
+# include <sysexits.h>
+#endif /* HAVE_SYSEXITS_H */
+
+#ifndef EX_USAGE
+# define EX_USAGE 64
+#endif
+
+/*
+ * PUBLIC DEFINES
+ *
+ * The following defines may be used in applications that need to test the
+ * state of an option. To test against these masks and values, a pointer
+ * to an option descriptor must be obtained. There are two ways:
+ *
+ * 1. inside an option processing procedure, it is the second argument,
+ * conventionally "tOptDesc* pOD".
+ *
+ * 2. Outside of an option procedure (or to reference a different option
+ * descriptor), use either "&DESC( opt_name )" or "&pfx_DESC( opt_name )".
+ *
+ * See the relevant generated header file to determine which and what
+ * values for "opt_name" are available.
+ */
+
+#define OPTIONS_STRUCT_VERSION 118784
+#define OPTIONS_VERSION_STRING "29:0:4"
+#define OPTIONS_MINIMUM_VERSION 102400
+#define OPTIONS_MIN_VER_STRING "25:0:0"
+
+typedef enum {
+ OPARG_TYPE_NONE = 0,
+ OPARG_TYPE_STRING = 1, /* default type/ vanilla string */
+ OPARG_TYPE_ENUMERATION = 2, /* opt arg is an enum (keyword list) */
+ OPARG_TYPE_BOOLEAN = 3, /* opt arg is boolean-valued */
+ OPARG_TYPE_MEMBERSHIP = 4, /* opt arg sets set membership bits */
+ OPARG_TYPE_NUMERIC = 5, /* opt arg has numeric value */
+ OPARG_TYPE_HIERARCHY = 6 /* option arg is hierarchical value */
+} teOptArgType;
+
+typedef struct optionValue {
+ teOptArgType valType;
+ char* pzName;
+ union {
+ char strVal[1]; /* OPARG_TYPE_STRING */
+ unsigned int enumVal; /* OPARG_TYPE_ENUMERATION */
+ unsigned int boolVal; /* OPARG_TYPE_BOOLEAN */
+ unsigned long setVal; /* OPARG_TYPE_MEMBERSHIP */
+ long longVal; /* OPARG_TYPE_NUMERIC */
+ void* nestVal; /* OPARG_TYPE_HIERARCHY */
+ } v;
+} tOptionValue;
+
+/*
+ * Bits in the fOptState option descriptor field.
+ */
+typedef enum {
+ OPTST_SET_ID = 0, /* Set via the "SET_OPT()" macro */
+ OPTST_PRESET_ID = 1, /* Set via an RC/INI file */
+ OPTST_DEFINED_ID = 2, /* Set via a command line option */
+ OPTST_EQUIVALENCE_ID = 4, /* selected by equiv'ed option */
+ OPTST_DISABLED_ID = 5, /* option is in disabled state */
+ OPTST_ALLOC_ARG_ID = 6, /* pzOptArg was allocated */
+ OPTST_NO_INIT_ID = 8, /* option cannot be preset */
+ OPTST_NUMBER_OPT_ID = 9, /* opt value (flag) is any digit */
+ OPTST_STACKED_ID = 10, /* opt uses optionStackArg proc */
+ OPTST_INITENABLED_ID = 11, /* option defaults to enabled */
+ OPTST_ARG_TYPE_1_ID = 12, /* bit 1 of arg type enum */
+ OPTST_ARG_TYPE_2_ID = 13, /* bit 2 of arg type enum */
+ OPTST_ARG_TYPE_3_ID = 14, /* bit 3 of arg type enum */
+ OPTST_ARG_TYPE_4_ID = 15, /* bit 4 of arg type enum */
+ OPTST_ARG_OPTIONAL_ID = 16, /* the option arg not required */
+ OPTST_IMM_ID = 17, /* process opt on first pass */
+ OPTST_DISABLE_IMM_ID = 18, /* process disablement immed. */
+ OPTST_OMITTED_ID = 19, /* compiled out of program */
+ OPTST_MUST_SET_ID = 20, /* must be set or pre-set */
+ OPTST_DOCUMENT_ID = 21, /* opt is for doc only */
+ OPTST_TWICE_ID = 22, /* process opt twice - imm + reg */
+ OPTST_DISABLE_TWICE_ID = 23 /* process disabled option twice */
+} opt_state_enum_t;
+
+#define OPTST_INIT 0U
+#define OPTST_SET (1U << OPTST_SET_ID)
+#define OPTST_PRESET (1U << OPTST_PRESET_ID)
+#define OPTST_DEFINED (1U << OPTST_DEFINED_ID)
+#define OPTST_EQUIVALENCE (1U << OPTST_EQUIVALENCE_ID)
+#define OPTST_DISABLED (1U << OPTST_DISABLED_ID)
+#define OPTST_ALLOC_ARG (1U << OPTST_ALLOC_ARG_ID)
+#define OPTST_NO_INIT (1U << OPTST_NO_INIT_ID)
+#define OPTST_NUMBER_OPT (1U << OPTST_NUMBER_OPT_ID)
+#define OPTST_STACKED (1U << OPTST_STACKED_ID)
+#define OPTST_INITENABLED (1U << OPTST_INITENABLED_ID)
+#define OPTST_ARG_TYPE_1 (1U << OPTST_ARG_TYPE_1_ID)
+#define OPTST_ARG_TYPE_2 (1U << OPTST_ARG_TYPE_2_ID)
+#define OPTST_ARG_TYPE_3 (1U << OPTST_ARG_TYPE_3_ID)
+#define OPTST_ARG_TYPE_4 (1U << OPTST_ARG_TYPE_4_ID)
+#define OPTST_ARG_OPTIONAL (1U << OPTST_ARG_OPTIONAL_ID)
+#define OPTST_IMM (1U << OPTST_IMM_ID)
+#define OPTST_DISABLE_IMM (1U << OPTST_DISABLE_IMM_ID)
+#define OPTST_OMITTED (1U << OPTST_OMITTED_ID)
+#define OPTST_MUST_SET (1U << OPTST_MUST_SET_ID)
+#define OPTST_DOCUMENT (1U << OPTST_DOCUMENT_ID)
+#define OPTST_TWICE (1U << OPTST_TWICE_ID)
+#define OPTST_DISABLE_TWICE (1U << OPTST_DISABLE_TWICE_ID)
+#define OPT_STATE_MASK 0x00FFFF77U
+
+#define OPTST_SET_MASK ( \
+ OPTST_SET | \
+ OPTST_PRESET | \
+ OPTST_DEFINED )
+
+#define OPTST_MUTABLE_MASK ( \
+ OPTST_SET | \
+ OPTST_PRESET | \
+ OPTST_DEFINED | \
+ OPTST_EQUIVALENCE | \
+ OPTST_DISABLED | \
+ OPTST_ALLOC_ARG )
+
+#define OPTST_SELECTED_MASK ( \
+ OPTST_SET | \
+ OPTST_DEFINED )
+
+#define OPTST_ARG_TYPE_MASK ( \
+ OPTST_ARG_TYPE_1 | \
+ OPTST_ARG_TYPE_2 | \
+ OPTST_ARG_TYPE_3 | \
+ OPTST_ARG_TYPE_4 )
+
+#ifdef NO_OPTIONAL_OPT_ARGS
+# undef OPTST_ARG_OPTIONAL
+# define OPTST_ARG_OPTIONAL 0
+#endif
+
+#define OPTST_PERSISTENT_MASK (~OPTST_MUTABLE_MASK)
+
+#define SELECTED_OPT( pod ) ((pod)->fOptState & OPTST_SELECTED_MASK)
+#define UNUSED_OPT( pod ) (((pod)->fOptState & OPTST_SET_MASK) == 0)
+#define DISABLED_OPT( pod ) ((pod)->fOptState & OPTST_DISABLED)
+#define OPTION_STATE( pod ) ((pod)->fOptState)
+
+#define OPTST_SET_ARGTYPE(n) ((n) << OPTST_ARG_TYPE_1_ID)
+#define OPTST_GET_ARGTYPE(f) (((f) & OPTST_ARG_TYPE_MASK)>>OPTST_ARG_TYPE_1_ID)
+
+/*
+ * PRIVATE INTERFACES
+ *
+ * The following values are used in the generated code to communicate
+ * with the option library procedures. They are not for public use
+ * and may be subject to change.
+ */
+
+/*
+ * Define the processing state flags
+ */
+typedef enum {
+ OPTPROC_LONGOPT_ID = 0, /* Process long style options */
+ OPTPROC_SHORTOPT_ID = 1, /* Process short style "flags" */
+ OPTPROC_ERRSTOP_ID = 2, /* Stop on argument errors */
+ OPTPROC_DISABLEDOPT_ID = 3, /* Current option is disabled */
+ OPTPROC_NO_REQ_OPT_ID = 4, /* no options are required */
+ OPTPROC_NUM_OPT_ID = 5, /* there is a number option */
+ OPTPROC_INITDONE_ID = 6, /* have initializations been done? */
+ OPTPROC_NEGATIONS_ID = 7, /* any negation options? */
+ OPTPROC_ENVIRON_ID = 8, /* check environment? */
+ OPTPROC_NO_ARGS_ID = 9, /* Disallow remaining arguments */
+ OPTPROC_ARGS_REQ_ID = 10, /* Require arguments after options */
+ OPTPROC_REORDER_ID = 11, /* reorder operands after options */
+ OPTPROC_GNUUSAGE_ID = 12, /* emit usage in GNU style */
+ OPTPROC_TRANSLATE_ID = 13, /* Translate strings in tOptions */
+ OPTPROC_HAS_IMMED_ID = 14, /* program defines immed options */
+ OPTPROC_PRESETTING_ID = 19 /* opt processing in preset state */
+} optproc_state_enum_t;
+
+#define OPTPROC_NONE 0U
+#define OPTPROC_LONGOPT (1U << OPTPROC_LONGOPT_ID)
+#define OPTPROC_SHORTOPT (1U << OPTPROC_SHORTOPT_ID)
+#define OPTPROC_ERRSTOP (1U << OPTPROC_ERRSTOP_ID)
+#define OPTPROC_DISABLEDOPT (1U << OPTPROC_DISABLEDOPT_ID)
+#define OPTPROC_NO_REQ_OPT (1U << OPTPROC_NO_REQ_OPT_ID)
+#define OPTPROC_NUM_OPT (1U << OPTPROC_NUM_OPT_ID)
+#define OPTPROC_INITDONE (1U << OPTPROC_INITDONE_ID)
+#define OPTPROC_NEGATIONS (1U << OPTPROC_NEGATIONS_ID)
+#define OPTPROC_ENVIRON (1U << OPTPROC_ENVIRON_ID)
+#define OPTPROC_NO_ARGS (1U << OPTPROC_NO_ARGS_ID)
+#define OPTPROC_ARGS_REQ (1U << OPTPROC_ARGS_REQ_ID)
+#define OPTPROC_REORDER (1U << OPTPROC_REORDER_ID)
+#define OPTPROC_GNUUSAGE (1U << OPTPROC_GNUUSAGE_ID)
+#define OPTPROC_TRANSLATE (1U << OPTPROC_TRANSLATE_ID)
+#define OPTPROC_HAS_IMMED (1U << OPTPROC_HAS_IMMED_ID)
+#define OPTPROC_PRESETTING (1U << OPTPROC_PRESETTING_ID)
+#define OPTPROC_STATE_MASK 0x00087FFFU
+
+#define STMTS(s) do { s; } while (0)
+
+/*
+ * The following must be #defined instead of typedef-ed
+ * because "static const" cannot both be applied to a type,
+ * tho each individually can...so they all are
+ */
+#define tSCC static char const
+#define tCC char const
+#define tAoSC static char
+#define tAoUC unsigned char
+#define tAoUI unsigned int
+#define tAoUL unsigned long
+#define tAoUS unsigned short
+
+/*
+ * It is so disgusting that there must be so many ways
+ * of specifying TRUE and FALSE.
+ */
+typedef enum { AG_FALSE = 0, AG_TRUE } ag_bool;
+
+/*
+ * Define a structure that describes each option and
+ * a pointer to the procedure that handles it.
+ * The argument is the count of this flag previously seen.
+ */
+typedef struct options tOptions;
+typedef struct optDesc tOptDesc;
+typedef struct optNames tOptNames;
+
+/*
+ * The option procedures do the special processing for each
+ * option flag that needs it.
+ */
+typedef void (tOptProc)( tOptions* pOpts, tOptDesc* pOptDesc );
+typedef tOptProc* tpOptProc;
+
+/*
+ * The usage procedure will never return. It calls "exit(2)"
+ * with the "exitCode" argument passed to it.
+ */
+typedef void (tUsageProc)( tOptions* pOpts, int exitCode );
+typedef tUsageProc* tpUsageProc;
+
+/*
+ * Special definitions. "NOLIMIT" is the 'max' value to use when
+ * a flag may appear multiple times without limit. "NO_EQUIVALENT"
+ * is an illegal value for 'optIndex' (option description index).
+ */
+#define NOLIMIT USHRT_MAX
+#define OPTION_LIMIT SHRT_MAX
+#define NO_EQUIVALENT (OPTION_LIMIT+1)
+
+/*
+ * Special values for optValue. It must not be generatable from the
+ * computation "optIndex +96". Since "optIndex" is limited to 100, ...
+ */
+#define NUMBER_OPTION '#'
+
+typedef struct argList tArgList;
+#define MIN_ARG_ALLOC_CT 6
+#define INCR_ARG_ALLOC_CT 8
+struct argList {
+ int useCt;
+ int allocCt;
+ tCC* apzArgs[ MIN_ARG_ALLOC_CT ];
+};
+
+typedef union {
+ char const * argString;
+ uintptr_t argEnum;
+ uintptr_t argIntptr;
+ long argInt;
+ unsigned long argUint;
+ unsigned int argBool;
+} optArgBucket_t;
+
+/*
+ * Descriptor structure for each option.
+ * Only the fields marked "PUBLIC" are for public use.
+ */
+struct optDesc {
+ tAoUS const optIndex; /* PUBLIC */
+ tAoUS const optValue; /* PUBLIC */
+ tAoUS optActualIndex; /* PUBLIC */
+ tAoUS optActualValue; /* PUBLIC */
+
+ tAoUS const optEquivIndex; /* PUBLIC */
+ tAoUS const optMinCt;
+ tAoUS const optMaxCt;
+ tAoUS optOccCt; /* PUBLIC */
+
+ tAoUI fOptState; /* PUBLIC */
+ tAoUI reserved;
+ optArgBucket_t optArg; /* PUBLIC */
+# define pzLastArg optArg.argString
+ void* optCookie; /* PUBLIC */
+
+ const int * pOptMust;
+ const int * pOptCant;
+ tpOptProc pOptProc;
+ char const* pzText;
+
+ char const* pz_NAME;
+ char const* pz_Name;
+ char const* pz_DisableName;
+ char const* pz_DisablePfx;
+};
+
+/*
+ * Some options need special processing, so we store their
+ * indexes in a known place:
+ */
+typedef struct optSpecIndex tOptSpecIndex;
+struct optSpecIndex {
+ const tAoUS more_help;
+ const tAoUS save_opts;
+ const tAoUS number_option;
+ const tAoUS default_opt;
+};
+
+/*
+ * The procedure generated for translating option text
+ */
+typedef void (tOptionXlateProc)(void);
+
+struct options {
+ int const structVersion;
+ int origArgCt;
+ char** origArgVect;
+ unsigned int fOptSet;
+ unsigned int curOptIdx;
+ char* pzCurOpt;
+
+ char const* pzProgPath;
+ char const* pzProgName;
+ char const* const pzPROGNAME;
+ char const* const pzRcName;
+ char const* const pzCopyright;
+ char const* const pzCopyNotice;
+ char const* const pzFullVersion;
+ char const* const* const papzHomeList;
+ char const* const pzUsageTitle;
+ char const* const pzExplain;
+ char const* const pzDetail;
+ tOptDesc* const pOptDesc;
+ char const* const pzBugAddr;
+
+ void* pExtensions;
+ void* pSavedState;
+
+ tpUsageProc pUsageProc;
+ tOptionXlateProc* pTransProc;
+
+ tOptSpecIndex specOptIdx;
+ int const optCt;
+ int const presetOptCt;
+};
+
+/*
+ * "token list" structure returned by "string_tokenize()"
+ */
+typedef struct {
+ unsigned long tkn_ct;
+ unsigned char* tkn_list[1];
+} token_list_t;
+
+/*
+ * Hide the interface - it pollutes a POSIX claim, but leave it for
+ * anyone #include-ing this header
+ */
+#define strneqvcmp option_strneqvcmp
+#define streqvcmp option_streqvcmp
+#define streqvmap option_streqvmap
+#define strequate option_strequate
+#define strtransform option_strtransform
+
+/*
+ * This is an output only structure used by text_mmap and text_munmap.
+ * Clients must not alter the contents and must provide it to both
+ * the text_mmap and text_munmap procedures. BE ADVISED: if you are
+ * mapping the file with PROT_WRITE the NUL byte at the end MIGHT NOT
+ * BE WRITABLE. In any event, that byte is not be written back
+ * to the source file. ALSO: if "txt_data" is valid and "txt_errno"
+ * is not zero, then there *may* not be a terminating NUL.
+ */
+typedef struct {
+ void* txt_data; /* text file data */
+ size_t txt_size; /* actual file size */
+ size_t txt_full_size; /* mmaped mem size */
+ int txt_fd; /* file descriptor */
+ int txt_zero_fd; /* fd for /dev/zero */
+ int txt_errno; /* warning code */
+ int txt_prot; /* "prot" flags */
+ int txt_flags; /* mapping type */
+ int txt_alloc; /* if we malloced memory */
+} tmap_info_t;
+
+#define TEXT_MMAP_FAILED_ADDR(a) ((void*)(a) == (void*)MAP_FAILED)
+
+#ifdef __cplusplus
+extern "C" {
+#define CPLUSPLUS_CLOSER }
+#else
+#define CPLUSPLUS_CLOSER
+#endif
+
+/*
+ * The following routines may be coded into AutoOpts client code:
+ */
+
+/* From: tokenize.c line 115
+ *
+ * ao_string_tokenize - tokenize an input string
+ *
+ * Arguments:
+ * string string to be tokenized
+ *
+ * Returns: token_list_t* - pointer to a structure that lists each token
+ *
+ * This function will convert one input string into a list of strings.
+ * The list of strings is derived by separating the input based on
+ * white space separation. However, if the input contains either single
+ * or double quote characters, then the text after that character up to
+ * a matching quote will become the string in the list.
+ *
+ * The returned pointer should be deallocated with @code{free(3C)} when
+ * are done using the data. The data are placed in a single block of
+ * allocated memory. Do not deallocate individual token/strings.
+ *
+ * The structure pointed to will contain at least these two fields:
+ * @table @samp
+ * @item tkn_ct
+ * The number of tokens found in the input string.
+ * @item tok_list
+ * An array of @code{tkn_ct + 1} pointers to substring tokens, with
+ * the last pointer set to NULL.
+ * @end table
+ *
+ * There are two types of quoted strings: single quoted (@code{'}) and
+ * double quoted (@code{"}). Singly quoted strings are fairly raw in that
+ * escape characters (@code{\\}) are simply another character, except when
+ * preceding the following characters:
+ * @example
+ * @code{\\} double backslashes reduce to one
+ * @code{'} incorporates the single quote into the string
+ * @code{\n} suppresses both the backslash and newline character
+ * @end example
+ *
+ * Double quote strings are formed according to the rules of string
+ * constants in ANSI-C programs.
+ */
+extern token_list_t* ao_string_tokenize( char const* );
+
+
+/* From: configfile.c line 113
+ *
+ * configFileLoad - parse a configuration file
+ *
+ * Arguments:
+ * pzFile the file to load
+ *
+ * Returns: const tOptionValue* - An allocated, compound value structure
+ *
+ * This routine will load a named configuration file and parse the
+ * text as a hierarchically valued option. The option descriptor
+ * created from an option definition file is not used via this interface.
+ * The returned value is "named" with the input file name and is of
+ * type "@code{OPARG_TYPE_HIERARCHY}". It may be used in calls to
+ * @code{optionGetValue()}, @code{optionNextValue()} and
+ * @code{optionUnloadNested()}.
+ */
+extern const tOptionValue* configFileLoad( char const* );
+
+
+/* From: configfile.c line 883
+ *
+ * optionFileLoad - Load the locatable config files, in order
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ * pzProg program name
+ *
+ * Returns: int - 0 -> SUCCESS, -1 -> FAILURE
+ *
+ * This function looks in all the specified directories for a configuration
+ * file ("rc" file or "ini" file) and processes any found twice. The first
+ * time through, they are processed in reverse order (last file first). At
+ * that time, only "immediate action" configurables are processed. For
+ * example, if the last named file specifies not processing any more
+ * configuration files, then no more configuration files will be processed.
+ * Such an option in the @strong{first} named directory will have no effect.
+ *
+ * Once the immediate action configurables have been handled, then the
+ * directories are handled in normal, forward order. In that way, later
+ * config files can override the settings of earlier config files.
+ *
+ * See the AutoOpts documentation for a thorough discussion of the
+ * config file format.
+ *
+ * Configuration files not found or not decipherable are simply ignored.
+ */
+extern int optionFileLoad( tOptions*, char const* );
+
+
+/* From: configfile.c line 245
+ *
+ * optionFindNextValue - find a hierarcicaly valued option instance
+ *
+ * Arguments:
+ * pOptDesc an option with a nested arg type
+ * pPrevVal the last entry
+ * name name of value to find
+ * value the matching value
+ *
+ * Returns: const tOptionValue* - a compound value structure
+ *
+ * This routine will find the next entry in a nested value option or
+ * configurable. It will search through the list and return the next entry
+ * that matches the criteria.
+ */
+extern const tOptionValue* optionFindNextValue( const tOptDesc*, const tOptionValue*, char const*, char const* );
+
+
+/* From: configfile.c line 171
+ *
+ * optionFindValue - find a hierarcicaly valued option instance
+ *
+ * Arguments:
+ * pOptDesc an option with a nested arg type
+ * name name of value to find
+ * value the matching value
+ *
+ * Returns: const tOptionValue* - a compound value structure
+ *
+ * This routine will find an entry in a nested value option or configurable.
+ * It will search through the list and return a matching entry.
+ */
+extern const tOptionValue* optionFindValue( const tOptDesc*, char const*, char const* );
+
+
+/* From: restore.c line 188
+ *
+ * optionFree - free allocated option processing memory
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ *
+ * AutoOpts sometimes allocates memory and puts pointers to it in the
+ * option state structures. This routine deallocates all such memory.
+ */
+extern void optionFree( tOptions* );
+
+
+/* From: configfile.c line 314
+ *
+ * optionGetValue - get a specific value from a hierarcical list
+ *
+ * Arguments:
+ * pOptValue a hierarchcal value
+ * valueName name of value to get
+ *
+ * Returns: const tOptionValue* - a compound value structure
+ *
+ * This routine will find an entry in a nested value option or configurable.
+ * If "valueName" is NULL, then the first entry is returned. Otherwise,
+ * the first entry with a name that exactly matches the argument will be
+ * returned.
+ */
+extern const tOptionValue* optionGetValue( const tOptionValue*, char const* );
+
+
+/* From: load.c line 521
+ *
+ * optionLoadLine - process a string for an option name and value
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ * pzLine NUL-terminated text
+ *
+ * This is a client program callable routine for setting options from, for
+ * example, the contents of a file that they read in. Only one option may
+ * appear in the text. It will be treated as a normal (non-preset) option.
+ *
+ * When passed a pointer to the option struct and a string, it will find
+ * the option named by the first token on the string and set the option
+ * argument to the remainder of the string. The caller must NUL terminate
+ * the string. Any embedded new lines will be included in the option
+ * argument. If the input looks like one or more quoted strings, then the
+ * input will be "cooked". The "cooking" is identical to the string
+ * formation used in AutoGen definition files (@pxref{basic expression}),
+ * except that you may not use backquotes.
+ */
+extern void optionLoadLine( tOptions*, char const* );
+
+
+/* From: configfile.c line 373
+ *
+ * optionNextValue - get the next value from a hierarchical list
+ *
+ * Arguments:
+ * pOptValue a hierarchcal list value
+ * pOldValue a value from this list
+ *
+ * Returns: const tOptionValue* - a compound value structure
+ *
+ * This routine will return the next entry after the entry passed in. At the
+ * end of the list, NULL will be returned. If the entry is not found on the
+ * list, NULL will be returned and "@var{errno}" will be set to EINVAL.
+ * The "@var{pOldValue}" must have been gotten from a prior call to this
+ * routine or to "@code{opitonGetValue()}".
+ */
+extern const tOptionValue* optionNextValue( const tOptionValue*, const tOptionValue* );
+
+
+/* From: usage.c line 128
+ *
+ * optionOnlyUsage - Print usage text for just the options
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ * ex_code exit code for calling exit(3)
+ *
+ * This routine will print only the usage for each option.
+ * This function may be used when the emitted usage must incorporate
+ * information not available to AutoOpts.
+ */
+extern void optionOnlyUsage( tOptions*, int );
+
+
+/* From: autoopts.c line 1012
+ *
+ * optionProcess - this is the main option processing routine
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ * argc program arg count
+ * argv program arg vector
+ *
+ * Returns: int - the count of the arguments processed
+ *
+ * This is the main entry point for processing options. It is intended
+ * that this procedure be called once at the beginning of the execution of
+ * a program. Depending on options selected earlier, it is sometimes
+ * necessary to stop and restart option processing, or to select completely
+ * different sets of options. This can be done easily, but you generally
+ * do not want to do this.
+ *
+ * The number of arguments processed always includes the program name.
+ * If one of the arguments is "--", then it is counted and the processing
+ * stops. If an error was encountered and errors are to be tolerated, then
+ * the returned value is the index of the argument causing the error.
+ * A hyphen by itself ("-") will also cause processing to stop and will
+ * @emph{not} be counted among the processed arguments. A hyphen by itself
+ * is treated as an operand. Encountering an operand stops option
+ * processing.
+ */
+extern int optionProcess( tOptions*, int, char** );
+
+
+/* From: restore.c line 145
+ *
+ * optionRestore - restore option state from memory copy
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ *
+ * Copy back the option state from saved memory.
+ * The allocated memory is left intact, so this routine can be
+ * called repeatedly without having to call optionSaveState again.
+ * If you are restoring a state that was saved before the first call
+ * to optionProcess(3AO), then you may change the contents of the
+ * argc/argv parameters to optionProcess.
+ */
+extern void optionRestore( tOptions* );
+
+
+/* From: save.c line 334
+ *
+ * optionSaveFile - saves the option state to a file
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ *
+ * This routine will save the state of option processing to a file. The name
+ * of that file can be specified with the argument to the @code{--save-opts}
+ * option, or by appending the @code{rcfile} attribute to the last
+ * @code{homerc} attribute. If no @code{rcfile} attribute was specified, it
+ * will default to @code{.@i{programname}rc}. If you wish to specify another
+ * file, you should invoke the @code{SET_OPT_SAVE_OPTS( @i{filename} )} macro.
+ */
+extern void optionSaveFile( tOptions* );
+
+
+/* From: restore.c line 93
+ *
+ * optionSaveState - saves the option state to memory
+ *
+ * Arguments:
+ * pOpts program options descriptor
+ *
+ * This routine will allocate enough memory to save the current option
+ * processing state. If this routine has been called before, that memory
+ * will be reused. You may only save one copy of the option state. This
+ * routine may be called before optionProcess(3AO). If you do call it
+ * before the first call to optionProcess, then you may also change the
+ * contents of argc/argv after you call optionRestore(3AO)
+ *
+ * In fact, more strongly put: it is safest to only use this function
+ * before having processed any options. In particular, the saving and
+ * restoring of stacked string arguments and hierarchical values is
+ * disabled. The values are not saved.
+ */
+extern void optionSaveState( tOptions* );
+
+
+/* From: nested.c line 559
+ *
+ * optionUnloadNested - Deallocate the memory for a nested value
+ *
+ * Arguments:
+ * pOptVal the hierarchical value
+ *
+ * A nested value needs to be deallocated. The pointer passed in should
+ * have been gotten from a call to @code{configFileLoad()} (See
+ * @pxref{libopts-configFileLoad}).
+ */
+extern void optionUnloadNested( tOptionValue const * );
+
+
+/* From: version.c line 58
+ *
+ * optionVersion - return the compiled AutoOpts version number
+ *
+ * Returns: char const* - the version string in constant memory
+ *
+ * Returns the full version string compiled into the library.
+ * The returned string cannot be modified.
+ */
+extern char const* optionVersion( void );
+
+
+/* From: ../compat/pathfind.c line 34
+ *
+ * pathfind - fild a file in a list of directories
+ *
+ * Arguments:
+ * path colon separated list of search directories
+ * file the name of the file to look for
+ * mode the mode bits that must be set to match
+ *
+ * Returns: char* - the path to the located file
+ *
+ * the pathfind function is available only if HAVE_PATHFIND is not defined
+ *
+ * pathfind looks for a a file with name "FILE" and "MODE" access
+ * along colon delimited "PATH", and returns the full pathname as a
+ * string, or NULL if not found. If "FILE" contains a slash, then
+ * it is treated as a relative or absolute path and "PATH" is ignored.
+ *
+ * @strong{NOTE}: this function is compiled into @file{libopts} only if
+ * it is not natively supplied.
+ *
+ * The "MODE" argument is a string of option letters chosen from the
+ * list below:
+ * @example
+ * Letter Meaning
+ * r readable
+ * w writable
+ * x executable
+ * f normal file (NOT IMPLEMENTED)
+ * b block special (NOT IMPLEMENTED)
+ * c character special (NOT IMPLEMENTED)
+ * d directory (NOT IMPLEMENTED)
+ * p FIFO (pipe) (NOT IMPLEMENTED)
+ * u set user ID bit (NOT IMPLEMENTED)
+ * g set group ID bit (NOT IMPLEMENTED)
+ * k sticky bit (NOT IMPLEMENTED)
+ * s size nonzero (NOT IMPLEMENTED)
+ * @end example
+ */
+#ifndef HAVE_PATHFIND
+extern char* pathfind( char const*, char const*, char const* );
+#endif /* HAVE_PATHFIND */
+
+
+/* From: streqvcmp.c line 233
+ *
+ * strequate - map a list of characters to the same value
+ *
+ * Arguments:
+ * ch_list characters to equivalence
+ *
+ * Each character in the input string get mapped to the first character
+ * in the string.
+ * This function name is mapped to option_strequate so as to not conflict
+ * with the POSIX name space.
+ */
+extern void strequate( char const* );
+
+
+/* From: streqvcmp.c line 143
+ *
+ * streqvcmp - compare two strings with an equivalence mapping
+ *
+ * Arguments:
+ * str1 first string
+ * str2 second string
+ *
+ * Returns: int - the difference between two differing characters
+ *
+ * Using a character mapping, two strings are compared for "equivalence".
+ * Each input character is mapped to a comparison character and the
+ * mapped-to characters are compared for the two NUL terminated input strings.
+ * This function name is mapped to option_streqvcmp so as to not conflict
+ * with the POSIX name space.
+ */
+extern int streqvcmp( char const*, char const* );
+
+
+/* From: streqvcmp.c line 180
+ *
+ * streqvmap - Set the character mappings for the streqv functions
+ *
+ * Arguments:
+ * From Input character
+ * To Mapped-to character
+ * ct compare length
+ *
+ * Set the character mapping. If the count (@code{ct}) is set to zero, then
+ * the map is cleared by setting all entries in the map to their index
+ * value. Otherwise, the "@code{From}" character is mapped to the "@code{To}"
+ * character. If @code{ct} is greater than 1, then @code{From} and @code{To}
+ * are incremented and the process repeated until @code{ct} entries have been
+ * set. For example,
+ * @example
+ * streqvmap( 'a', 'A', 26 );
+ * @end example
+ * @noindent
+ * will alter the mapping so that all English lower case letters
+ * will map to upper case.
+ *
+ * This function name is mapped to option_streqvmap so as to not conflict
+ * with the POSIX name space.
+ */
+extern void streqvmap( char, char, int );
+
+
+/* From: streqvcmp.c line 102
+ *
+ * strneqvcmp - compare two strings with an equivalence mapping
+ *
+ * Arguments:
+ * str1 first string
+ * str2 second string
+ * ct compare length
+ *
+ * Returns: int - the difference between two differing characters
+ *
+ * Using a character mapping, two strings are compared for "equivalence".
+ * Each input character is mapped to a comparison character and the
+ * mapped-to characters are compared for the two NUL terminated input strings.
+ * The comparison is limited to @code{ct} bytes.
+ * This function name is mapped to option_strneqvcmp so as to not conflict
+ * with the POSIX name space.
+ */
+extern int strneqvcmp( char const*, char const*, int );
+
+
+/* From: streqvcmp.c line 259
+ *
+ * strtransform - convert a string into its mapped-to value
+ *
+ * Arguments:
+ * dest output string
+ * src input string
+ *
+ * Each character in the input string is mapped and the mapped-to
+ * character is put into the output.
+ * This function name is mapped to option_strtransform so as to not conflict
+ * with the POSIX name space.
+ */
+extern void strtransform( char*, char const* );
+
+/* AutoOpts PRIVATE FUNCTIONS: */
+tOptProc optionStackArg, optionUnstackArg, optionBooleanVal, optionNumericVal;
+
+extern char* ao_string_cook( char*, int* );
+
+extern unsigned int ao_string_cook_escape_char( char const*, char*, unsigned int );
+
+extern void export_options_to_guile( tOptions* );
+
+extern void genshelloptUsage( tOptions*, int );
+
+extern void optionBooleanVal( tOptions*, tOptDesc* );
+
+extern uintptr_t optionEnumerationVal( tOptions*, tOptDesc*, char const * const *, unsigned int );
+
+extern char const* optionKeywordName( tOptDesc*, unsigned int );
+
+extern void optionLoadOpt( tOptions*, tOptDesc* );
+
+extern ag_bool optionMakePath( char*, int, char const*, char const* );
+
+extern void optionNestedVal( tOptions*, tOptDesc* );
+
+extern void optionNumericVal( tOptions*, tOptDesc* );
+
+extern void optionPagedUsage( tOptions*, tOptDesc* );
+
+extern void optionParseShell( tOptions* );
+
+extern void optionPrintVersion( tOptions*, tOptDesc* );
+
+extern void optionPutShell( tOptions* );
+
+extern void optionSetMembers( tOptions*, tOptDesc*, char const * const *, unsigned int );
+
+extern void optionStackArg( tOptions*, tOptDesc* );
+
+extern void optionUnstackArg( tOptions*, tOptDesc* );
+
+extern void optionUsage( tOptions*, int );
+
+extern void optionVersionStderr( tOptions*, tOptDesc* );
+
+extern void* text_mmap( char const*, int, int, tmap_info_t* );
+
+extern int text_munmap( tmap_info_t* );
+
+CPLUSPLUS_CLOSER
+#endif /* AUTOOPTS_OPTIONS_H_GUARD */
+/*
+ * Local Variables:
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * options.h ends here */
diff --git a/contrib/ntp/sntp/libopts/autoopts/usage-txt.h b/contrib/ntp/sntp/libopts/autoopts/usage-txt.h
new file mode 100644
index 0000000..5aaaa01
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/autoopts/usage-txt.h
@@ -0,0 +1,355 @@
+/* -*- buffer-read-only: t -*- vi: set ro:
+ *
+ * DO NOT EDIT THIS FILE (usage-txt.h)
+ *
+ * It has been AutoGen-ed Saturday May 5, 2007 at 12:02:33 PM PDT
+ * From the definitions usage-txt.def
+ * and the template file usage-txt.tpl
+ *
+ * This file handles all the bookkeeping required for tracking all the little
+ * tiny strings used by the AutoOpts library. There are 113
+ * of them. This is not versioned because it is entirely internal to the
+ * library and accessed by client code only in a very well-controlled way:
+ * they may substitute translated strings using a procedure that steps through
+ * all the string pointers.
+ *
+ * AutoOpts is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * AutoOpts 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with AutoOpts. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef AUTOOPTS_USAGE_TXT_H_GUARD
+#define AUTOOPTS_USAGE_TXT_H_GUARD
+
+#undef cch_t
+#define cch_t char const
+
+/*
+ * One structure to hold all the pointers to all the stringlets.
+ */
+typedef struct {
+ int field_ct;
+ char* utpz_GnuBoolArg;
+ char* utpz_GnuKeyArg;
+ char* utpz_GnuKeyLArg;
+ char* utpz_GnuNumArg;
+ char* utpz_GnuStrArg;
+ cch_t* apz_str[ 108 ];
+} usage_text_t;
+
+/*
+ * Declare the global structure with all the pointers to translated
+ * strings. This is then used by the usage generation procedure.
+ */
+extern usage_text_t option_usage_text;
+
+#if defined(AUTOOPTS_INTERNAL) /* DEFINE ALL THE STRINGS = = = = = */
+/*
+ * Provide a mapping from a short name to fields in this structure.
+ */
+#define zAO_Bad (option_usage_text.apz_str[ 0])
+#define zAO_Big (option_usage_text.apz_str[ 1])
+#define zAO_Err (option_usage_text.apz_str[ 2])
+#define zAO_Sml (option_usage_text.apz_str[ 3])
+#define zAll (option_usage_text.apz_str[ 4])
+#define zAlt (option_usage_text.apz_str[ 5])
+#define zAmbigKey (option_usage_text.apz_str[ 6])
+#define zAmbiguous (option_usage_text.apz_str[ 7])
+#define zArgsMust (option_usage_text.apz_str[ 8])
+#define zAtMost (option_usage_text.apz_str[ 9])
+#define zAuto (option_usage_text.apz_str[ 10])
+#define zBadPipe (option_usage_text.apz_str[ 11])
+#define zBadVerArg (option_usage_text.apz_str[ 12])
+#define zCantFmt (option_usage_text.apz_str[ 13])
+#define zCantSave (option_usage_text.apz_str[ 14])
+#define zDefaultOpt (option_usage_text.apz_str[ 15])
+#define zDis (option_usage_text.apz_str[ 16])
+#define zEnab (option_usage_text.apz_str[ 17])
+#define zEquiv (option_usage_text.apz_str[ 18])
+#define zErrOnly (option_usage_text.apz_str[ 19])
+#define zExamineFmt (option_usage_text.apz_str[ 20])
+#define zFiveSpaces (option_usage_text.apz_str[ 21])
+#define zFlagOkay (option_usage_text.apz_str[ 22])
+#define zFmtFmt (option_usage_text.apz_str[ 23])
+#define zForkFail (option_usage_text.apz_str[ 24])
+#define zFSErrOptLoad (option_usage_text.apz_str[ 25])
+#define zFSErrReadFile (option_usage_text.apz_str[ 26])
+#define zGenshell (option_usage_text.apz_str[ 27])
+#define zGnuBoolArg (option_usage_text.utpz_GnuBoolArg)
+#define zGnuBreak (option_usage_text.apz_str[ 28])
+#define zGnuKeyArg (option_usage_text.utpz_GnuKeyArg)
+#define zGnuKeyLArg (option_usage_text.utpz_GnuKeyLArg)
+#define zGnuNestArg (option_usage_text.apz_str[ 29])
+#define zGnuNumArg (option_usage_text.utpz_GnuNumArg)
+#define zGnuOptArg (option_usage_text.apz_str[ 30])
+#define zGnuOptFmt (option_usage_text.apz_str[ 31])
+#define zGnuStrArg (option_usage_text.utpz_GnuStrArg)
+#define zIllOptChr (option_usage_text.apz_str[ 32])
+#define zIllOptStr (option_usage_text.apz_str[ 33])
+#define zIllegal (option_usage_text.apz_str[ 34])
+#define zInvalOptDesc (option_usage_text.apz_str[ 35])
+#define zKeyWords (option_usage_text.apz_str[ 36])
+#define zLoadCooked (option_usage_text.apz_str[ 37])
+#define zLoadKeep (option_usage_text.apz_str[ 38])
+#define zLoadType (option_usage_text.apz_str[ 39])
+#define zLoadUncooked (option_usage_text.apz_str[ 40])
+#define zLtypeInteger (option_usage_text.apz_str[ 41])
+#define zLtypeNest (option_usage_text.apz_str[ 42])
+#define zLtypeString (option_usage_text.apz_str[ 43])
+#define zLtypeBool (option_usage_text.apz_str[ 44])
+#define zLtypeKeyword (option_usage_text.apz_str[ 45])
+#define zLtypeSetMembership (option_usage_text.apz_str[ 46])
+#define zMembers (option_usage_text.apz_str[ 47])
+#define zMisArg (option_usage_text.apz_str[ 48])
+#define zMultiEquiv (option_usage_text.apz_str[ 49])
+#define zMust (option_usage_text.apz_str[ 50])
+#define zNeedOne (option_usage_text.apz_str[ 51])
+#define zNoArg (option_usage_text.apz_str[ 52])
+#define zNoArgs (option_usage_text.apz_str[ 53])
+#define zNoCreat (option_usage_text.apz_str[ 54])
+#define zNoFlags (option_usage_text.apz_str[ 55])
+#define zNoKey (option_usage_text.apz_str[ 56])
+#define zNoLim (option_usage_text.apz_str[ 57])
+#define zNoPreset (option_usage_text.apz_str[ 58])
+#define zNoRq_NoShrtTtl (option_usage_text.apz_str[ 59])
+#define zNoRq_ShrtTtl (option_usage_text.apz_str[ 60])
+#define zNoStat (option_usage_text.apz_str[ 61])
+#define zNoState (option_usage_text.apz_str[ 62])
+#define zNone (option_usage_text.apz_str[ 63])
+#define zNotDef (option_usage_text.apz_str[ 64])
+#define zNotEnough (option_usage_text.apz_str[ 65])
+#define zNotFile (option_usage_text.apz_str[ 66])
+#define zNotNumber (option_usage_text.apz_str[ 67])
+#define zNrmOptFmt (option_usage_text.apz_str[ 68])
+#define zNumberOpt (option_usage_text.apz_str[ 69])
+#define zOneSpace (option_usage_text.apz_str[ 70])
+#define zOnlyOne (option_usage_text.apz_str[ 71])
+#define zOptsOnly (option_usage_text.apz_str[ 72])
+#define zPathFmt (option_usage_text.apz_str[ 73])
+#define zPlsSendBugs (option_usage_text.apz_str[ 74])
+#define zPreset (option_usage_text.apz_str[ 75])
+#define zPresetFile (option_usage_text.apz_str[ 76])
+#define zPresetIntro (option_usage_text.apz_str[ 77])
+#define zProg (option_usage_text.apz_str[ 78])
+#define zProhib (option_usage_text.apz_str[ 79])
+#define zReorder (option_usage_text.apz_str[ 80])
+#define zReqFmt (option_usage_text.apz_str[ 81])
+#define zReqOptFmt (option_usage_text.apz_str[ 82])
+#define zReqThese (option_usage_text.apz_str[ 83])
+#define zReq_NoShrtTtl (option_usage_text.apz_str[ 84])
+#define zReq_ShrtTtl (option_usage_text.apz_str[ 85])
+#define zSepChars (option_usage_text.apz_str[ 86])
+#define zSetMembers (option_usage_text.apz_str[ 87])
+#define zSetMemberSettings (option_usage_text.apz_str[ 88])
+#define zShrtGnuOptFmt (option_usage_text.apz_str[ 89])
+#define zSixSpaces (option_usage_text.apz_str[ 90])
+#define zStdBoolArg (option_usage_text.apz_str[ 91])
+#define zStdBreak (option_usage_text.apz_str[ 92])
+#define zStdKeyArg (option_usage_text.apz_str[ 93])
+#define zStdKeyLArg (option_usage_text.apz_str[ 94])
+#define zStdNestArg (option_usage_text.apz_str[ 95])
+#define zStdNoArg (option_usage_text.apz_str[ 96])
+#define zStdNumArg (option_usage_text.apz_str[ 97])
+#define zStdOptArg (option_usage_text.apz_str[ 98])
+#define zStdReqArg (option_usage_text.apz_str[ 99])
+#define zStdStrArg (option_usage_text.apz_str[100])
+#define zTabHyp (option_usage_text.apz_str[101])
+#define zTabHypAnd (option_usage_text.apz_str[102])
+#define zTabout (option_usage_text.apz_str[103])
+#define zThreeSpaces (option_usage_text.apz_str[104])
+#define zTwoSpaces (option_usage_text.apz_str[105])
+#define zUpTo (option_usage_text.apz_str[106])
+#define zValidKeys (option_usage_text.apz_str[107])
+
+ /*
+ * First, set up the strings. Some of these are writable. These are all in
+ * English. This gets compiled into libopts and is distributed here so that
+ * xgettext (or equivalents) can extract these strings for translation.
+ */
+
+ static char eng_zGnuBoolArg[] = "=T/F";
+ static char eng_zGnuKeyArg[] = "=KWd";
+ static char eng_zGnuKeyLArg[] = "=Mbr";
+ static char eng_zGnuNumArg[] = "=num";
+ static char eng_zGnuStrArg[] = "=str";
+static char const usage_txt[3208] =
+ "AutoOpts function called without option descriptor\n\0"
+ "\tThis exceeds the compiled library version: \0"
+ "Automated Options Processing Error!\n"
+ "\t%s called AutoOpts function with structure version %d:%d:%d.\n\0"
+ "\tThis is less than the minimum library version: \0"
+ "all\0"
+ "\t\t\t\t- an alternate for %s\n\0"
+ "%s error: the keyword `%s' is ambiguous for %s\n\0"
+ "ambiguous\0"
+ "%s: Command line arguments required\n\0"
+ "%d %s%s options allowed\n\0"
+ "version and help options:\0"
+ "Error %d (%s) from the pipe(2) syscall\n\0"
+ "ERROR: version option argument '%c' invalid. Use:\n"
+ "\t'v' - version only\n"
+ "\t'c' - version and copyright\n"
+ "\t'n' - version and copyright notice\n\0"
+ "ERROR: %s option conflicts with the %s option\n\0"
+ "%s(optionSaveState): error: cannot allocate %d bytes\n\0"
+ "\t\t\t\t- default option for unnamed options\n\0"
+ "\t\t\t\t- disabled as --%s\n\0"
+ "\t\t\t\t- enabled by default\n\0"
+ "-equivalence\0"
+ "ERROR: only \0"
+ " - examining environment variables named %s_*\n\0"
+ " \0"
+ "Options are specified by doubled hyphens and their name\n"
+ "or by a single hyphen and the flag character.\n\0"
+ "%%-%ds %%s\n\0"
+ "fs error %d (%s) on fork - cannot obtain %s usage\n\0"
+ "File error %d (%s) opening %s for loading options\n\0"
+ "fs error %d (%s) reading file %s\n\0"
+ "\n"
+ "= = = = = = = =\n\n"
+ "This incarnation of genshell will produce\n"
+ "a shell script to parse the options for %s:\n\n\0"
+ "\n"
+ "%s\n\n\0"
+ "=Cplx\0"
+ "[=arg]\0"
+ "--%2$s%1$s\0"
+ "%s: illegal option -- %c\n\0"
+ "%s: %s option -- %s\n\0"
+ "illegal\0"
+ "AutoOpts ERROR: invalid option descriptor for %s\n\0"
+ "words=\0"
+ "cooked\0"
+ "keep\0"
+ "type=\0"
+ "uncooked\0"
+ "integer\0"
+ "nested\0"
+ "string\0"
+ "bool\0"
+ "keyword\0"
+ "set\0"
+ "\t\t\t\t- is a set membership option\n\0"
+ "%s: option `%s' requires an argument\n\0"
+ "Equivalenced option '%s' was equivalenced to both\n"
+ "\t'%s' and '%s'\0"
+ "\t\t\t\t- must appear between %d and %d times\n\0"
+ "ERROR: The %s option is required\n\0"
+ "%s: option `%s' cannot have an argument\n\0"
+ "%s: Command line arguments not allowed\n\0"
+ "error %d (%s) creating %s\n\0"
+ "Options are specified by single or double hyphens and their name.\n\0"
+ "%s error: `%s' does not match any %s keywords\n\0"
+ "\t\t\t\t- may appear multiple times\n\0"
+ "\t\t\t\t- may not be preset\n\0"
+ " Arg Option-Name Description\n\0"
+ " Flg Arg Option-Name Description\n\0"
+ "error %d (%s) stat-ing %s\n\0"
+ "%s(optionRestore): error: no saved option state\n\0"
+ "none\0"
+ "'%s' not defined\n\0"
+ "ERROR: The %s option must appear %d times\n\0"
+ "error: cannot load options from non-regular file %s\n\0"
+ "%s error: `%s' is not a recognizable number\n\0"
+ " %3s %s\0"
+ "The '-#<number>' option may omit the hash char\n\0"
+ " \0"
+ "one %s%s option allowed\n\0"
+ "All arguments are named options.\n\0"
+ " - reading file %s\0"
+ "\n"
+ "please send bug reports to: %s\n\0"
+ "\t\t\t\t- may NOT appear - preset only\n\0"
+ "# preset/initialization file\n"
+ "# %s#\n\0"
+ "\n"
+ "The following option preset mechanisms are supported:\n\0"
+ "program\0"
+ "prohibits these options:\n\0"
+ "Operands and options may be intermixed. They will be reordered.\n\0"
+ "ERROR: %s option requires the %s option\n\0"
+ " %3s %-14s %s\0"
+ "requires these options:\n\0"
+ " Arg Option-Name Req? Description\n\0"
+ " Flg Arg Option-Name Req? Description\n\0"
+ "-_^\0"
+ "members=\0"
+ "or you may use a numeric representation. Preceding these with a '!' will\n"
+ "clear the bits, specifying 'none' will clear all bits, and 'all' will set them\n"
+ "all. Multiple entries may be passed as an option argument list.\n\0"
+ "%s\0"
+ " \0"
+ "T/F\0"
+ "\n"
+ "%s\n\n"
+ "%s\0"
+ "KWd\0"
+ "Mbr\0"
+ "Cpx\0"
+ "no \0"
+ "Num\0"
+ "opt\0"
+ "YES\0"
+ "Str\0"
+ "\t\t\t\t- \0"
+ "\t\t\t\t-- and \0"
+ "\t\t\t\t%s\n\0"
+ " \0"
+ " \0"
+ "\t\t\t\t- may appear up to %d times\n\0"
+ "The valid \"%s\" option keywords are:\n\0";
+
+
+ /*
+ * Now, define (and initialize) the structure that contains
+ * the pointers to all these strings.
+ * Aren't you glad you don't maintain this by hand?
+ */
+ usage_text_t option_usage_text = {
+ 113,
+ eng_zGnuBoolArg, eng_zGnuKeyArg, eng_zGnuKeyLArg, eng_zGnuNumArg,
+ eng_zGnuStrArg,
+ {
+ usage_txt + 0, usage_txt + 52, usage_txt + 98, usage_txt + 197,
+ usage_txt + 247, usage_txt + 251, usage_txt + 278, usage_txt + 327,
+ usage_txt + 337, usage_txt + 374, usage_txt + 399, usage_txt + 425,
+ usage_txt + 465, usage_txt + 602, usage_txt + 650, usage_txt + 704,
+ usage_txt + 746, usage_txt + 770, usage_txt + 796, usage_txt + 809,
+ usage_txt + 823, usage_txt + 870, usage_txt + 876, usage_txt + 979,
+ usage_txt + 991, usage_txt +1042, usage_txt +1093, usage_txt +1127,
+ usage_txt +1233, usage_txt +1239, usage_txt +1245, usage_txt +1252,
+ usage_txt +1263, usage_txt +1289, usage_txt +1310, usage_txt +1318,
+ usage_txt +1369, usage_txt +1376, usage_txt +1383, usage_txt +1388,
+ usage_txt +1394, usage_txt +1403, usage_txt +1411, usage_txt +1418,
+ usage_txt +1425, usage_txt +1430, usage_txt +1438, usage_txt +1442,
+ usage_txt +1476, usage_txt +1514, usage_txt +1579, usage_txt +1622,
+ usage_txt +1657, usage_txt +1698, usage_txt +1738, usage_txt +1765,
+ usage_txt +1832, usage_txt +1880, usage_txt +1913, usage_txt +1938,
+ usage_txt +1973, usage_txt +2011, usage_txt +2038, usage_txt +2087,
+ usage_txt +2092, usage_txt +2110, usage_txt +2154, usage_txt +2208,
+ usage_txt +2254, usage_txt +2262, usage_txt +2310, usage_txt +2312,
+ usage_txt +2337, usage_txt +2371, usage_txt +2390, usage_txt +2424,
+ usage_txt +2460, usage_txt +2498, usage_txt +2554, usage_txt +2562,
+ usage_txt +2588, usage_txt +2654, usage_txt +2696, usage_txt +2710,
+ usage_txt +2735, usage_txt +2775, usage_txt +2818, usage_txt +2822,
+ usage_txt +2831, usage_txt +3050, usage_txt +3053, usage_txt +3060,
+ usage_txt +3064, usage_txt +3072, usage_txt +3076, usage_txt +3080,
+ usage_txt +3084, usage_txt +3088, usage_txt +3092, usage_txt +3096,
+ usage_txt +3100, usage_txt +3104, usage_txt +3111, usage_txt +3123,
+ usage_txt +3131, usage_txt +3135, usage_txt +3138, usage_txt +3171
+ }
+ };
+
+#endif /* DO_TRANSLATIONS */
+#endif /* AUTOOPTS_USAGE_TXT_H_GUARD */
diff --git a/contrib/ntp/sntp/libopts/boolean.c b/contrib/ntp/sntp/libopts/boolean.c
new file mode 100644
index 0000000..37148a9
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/boolean.c
@@ -0,0 +1,106 @@
+
+/*
+ * $Id: boolean.c,v 4.10 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 10:10:39 bkorb"
+ *
+ * Automated Options Paged Usage module.
+ *
+ * This routine will run run-on options through a pager so the
+ * user may examine, print or edit them at their leisure.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/*=export_func optionBooleanVal
+ * private:
+ *
+ * what: Decipher a boolean value
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Decipher a true or false value for a boolean valued option argument.
+ * The value is true, unless it starts with 'n' or 'f' or "#f" or
+ * it is an empty string or it is a number that evaluates to zero.
+=*/
+void
+optionBooleanVal( tOptions* pOpts, tOptDesc* pOD )
+{
+ char* pz;
+ ag_bool res = AG_TRUE;
+
+ switch (*(pOD->optArg.argString)) {
+ case '0':
+ {
+ long val = strtol( pOD->optArg.argString, &pz, 0 );
+ if ((val != 0) || (*pz != NUL))
+ break;
+ /* FALLTHROUGH */
+ }
+ case 'N':
+ case 'n':
+ case 'F':
+ case 'f':
+ case NUL:
+ res = AG_FALSE;
+ break;
+ case '#':
+ if (pOD->optArg.argString[1] != 'f')
+ break;
+ res = AG_FALSE;
+ }
+
+ if (pOD->fOptState & OPTST_ALLOC_ARG) {
+ AGFREE(pOD->optArg.argString);
+ pOD->fOptState &= ~OPTST_ALLOC_ARG;
+ }
+ pOD->optArg.argBool = res;
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/boolean.c */
diff --git a/contrib/ntp/sntp/libopts/compat/compat.h b/contrib/ntp/sntp/libopts/compat/compat.h
new file mode 100644
index 0000000..b3bd58f
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/compat/compat.h
@@ -0,0 +1,319 @@
+/* -*- Mode: C -*- */
+
+/* --- fake the preprocessor into handlng portability */
+/*
+ * Time-stamp: "2007-02-03 17:41:06 bkorb"
+ *
+ * Author: Gary V Vaughan <gvaughan@oranda.demon.co.uk>
+ * Created: Mon Jun 30 15:54:46 1997
+ *
+ * $Id: compat.h,v 4.16 2007/04/27 01:10:47 bkorb Exp $
+ */
+#ifndef COMPAT_H_GUARD
+#define COMPAT_H_GUARD 1
+
+#if defined(HAVE_CONFIG_H)
+# include <config.h>
+
+#elif defined(_WIN32) && !defined(__CYGWIN__)
+# include "windows-config.h"
+
+#else
+# error "compat.h" requires "config.h"
+ choke me.
+#endif
+
+
+#ifndef HAVE_STRSIGNAL
+ char * strsignal( int signo );
+#endif
+
+#define _GNU_SOURCE 1 /* for strsignal in GNU's libc */
+#define __USE_GNU 1 /* exact same thing as above */
+#define __EXTENSIONS__ 1 /* and another way to call for it */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * SYSTEM HEADERS:
+ */
+#include <sys/types.h>
+#ifdef HAVE_SYS_MMAN_H
+# include <sys/mman.h>
+#endif
+#include <sys/param.h>
+#if HAVE_SYS_PROCSET_H
+# include <sys/procset.h>
+#endif
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#if defined( HAVE_SOLARIS_SYSINFO )
+# include <sys/systeminfo.h>
+#elif defined( HAVE_UNAME_SYSCALL )
+# include <sys/utsname.h>
+#endif
+
+#ifdef DAEMON_ENABLED
+# if HAVE_SYS_STROPTS_H
+# include <sys/stropts.h>
+# endif
+
+# if HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+# endif
+
+# if ! defined(HAVE_SYS_POLL_H) && ! defined(HAVE_SYS_SELECT_H)
+# error This system cannot support daemon processing
+ Choke Me.
+# endif
+
+# if HAVE_SYS_POLL_H
+# include <sys/poll.h>
+# endif
+
+# if HAVE_SYS_SELECT_H
+# include <sys/select.h>
+# endif
+
+# if HAVE_NETINET_IN_H
+# include <netinet/in.h>
+# endif
+
+# if HAVE_SYS_UN_H
+# include <sys/un.h>
+# endif
+#endif
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * USER HEADERS:
+ */
+#include <stdio.h>
+#include <assert.h>
+#include <ctype.h>
+
+/*
+ * Directory opening stuff:
+ */
+# if defined (_POSIX_SOURCE)
+/* Posix does not require that the d_ino field be present, and some
+ systems do not provide it. */
+# define REAL_DIR_ENTRY(dp) 1
+# else /* !_POSIX_SOURCE */
+# define REAL_DIR_ENTRY(dp) (dp->d_ino != 0)
+# endif /* !_POSIX_SOURCE */
+
+# if defined (HAVE_DIRENT_H)
+# include <dirent.h>
+# define D_NAMLEN(dirent) strlen((dirent)->d_name)
+# else /* !HAVE_DIRENT_H */
+# define dirent direct
+# define D_NAMLEN(dirent) (dirent)->d_namlen
+# if defined (HAVE_SYS_NDIR_H)
+# include <sys/ndir.h>
+# endif /* HAVE_SYS_NDIR_H */
+# if defined (HAVE_SYS_DIR_H)
+# include <sys/dir.h>
+# endif /* HAVE_SYS_DIR_H */
+# if defined (HAVE_NDIR_H)
+# include <ndir.h>
+# endif /* HAVE_NDIR_H */
+# endif /* !HAVE_DIRENT_H */
+
+#include <errno.h>
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+#ifndef O_NONBLOCK
+# define O_NONBLOCK FNDELAY
+#endif
+
+#if defined(HAVE_LIBGEN) && defined(HAVE_LIBGEN_H)
+# include <libgen.h>
+#endif
+
+#if defined(HAVE_LIMITS_H) /* this is also in options.h */
+# include <limits.h>
+#elif defined(HAVE_SYS_LIMITS_H)
+# include <sys/limits.h>
+#endif /* HAVE_LIMITS/SYS_LIMITS_H */
+
+#include <memory.h>
+#include <setjmp.h>
+#include <signal.h>
+
+#if defined( HAVE_STDINT_H )
+# include <stdint.h>
+#elif defined( HAVE_INTTYPES_H )
+# include <inttypes.h>
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#include <time.h>
+
+#ifdef HAVE_UTIME_H
+# include <utime.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * FIXUPS and CONVIENCE STUFF:
+ */
+#ifdef __cplusplus
+# define EXTERN extern "C"
+#else
+# define EXTERN extern
+#endif
+
+/* some systems #def errno! and others do not declare it!! */
+#ifndef errno
+ extern int errno;
+#endif
+
+/* Some machines forget this! */
+
+# ifndef EXIT_FAILURE
+# define EXIT_SUCCESS 0
+# define EXIT_FAILURE 1
+# endif
+
+#ifndef NUL
+# define NUL '\0'
+#endif
+
+#ifndef NULL
+# define NULL 0
+#endif
+
+#if !defined (MAXPATHLEN) && defined (HAVE_SYS_PARAM_H)
+# include <sys/param.h>
+#endif /* !MAXPATHLEN && HAVE_SYS_PARAM_H */
+
+#if !defined (MAXPATHLEN) && defined (PATH_MAX)
+# define MAXPATHLEN PATH_MAX
+#endif /* !MAXPATHLEN && PATH_MAX */
+
+#if !defined (MAXPATHLEN) && defined(_MAX_PATH)
+# define PATH_MAX _MAX_PATH
+# define MAXPATHLEN _MAX_PATH
+#endif
+
+#if !defined (MAXPATHLEN)
+# define MAXPATHLEN ((size_t)4096)
+#endif /* MAXPATHLEN */
+
+#define AG_PATH_MAX ((size_t)MAXPATHLEN)
+
+#ifndef LONG_MAX
+# define LONG_MAX ~(1L << (8*sizeof(long) -1))
+# define INT_MAX ~(1 << (8*sizeof(int) -1))
+#endif
+
+#ifndef ULONG_MAX
+# define ULONG_MAX ~(OUL)
+# define UINT_MAX ~(OU)
+#endif
+
+#ifndef SHORT_MAX
+# define SHORT_MAX ~(1 << (8*sizeof(short) -1))
+#else
+# define USHORT_MAX ~(OUS)
+#endif
+
+#ifndef HAVE_INT8_T
+ typedef signed char int8_t;
+#endif
+#ifndef HAVE_UINT8_T
+ typedef unsigned char uint8_t;
+#endif
+#ifndef HAVE_INT16_T
+ typedef signed short int16_t;
+#endif
+#ifndef HAVE_UINT16_T
+ typedef unsigned short uint16_t;
+#endif
+#ifndef HAVE_UINT_T
+ typedef unsigned int uint_t;
+#endif
+
+#ifndef HAVE_INT32_T
+# if SIZEOF_INT == 4
+ typedef signed int int32_t;
+# elif SIZEOF_LONG == 4
+ typedef signed long int32_t;
+# endif
+#endif
+
+#ifndef HAVE_UINT32_T
+# if SIZEOF_INT == 4
+ typedef unsigned int uint32_t;
+# elif SIZEOF_LONG == 4
+ typedef unsigned long uint32_t;
+# else
+# error Cannot create a uint32_t type.
+ Choke Me.
+# endif
+#endif
+
+#ifndef HAVE_INTPTR_T
+ typedef signed long intptr_t;
+#endif
+#ifndef HAVE_UINTPTR_T
+ typedef unsigned long uintptr_t;
+#endif
+
+/* redefine these for BSD style string libraries */
+#ifndef HAVE_STRCHR
+# define strchr index
+# define strrchr rindex
+#endif
+
+#ifdef USE_FOPEN_BINARY
+# ifndef FOPEN_BINARY_FLAG
+# define FOPEN_BINARY_FLAG "b"
+# endif
+# ifndef FOPEN_TEXT_FLAG
+# define FOPEN_TEXT_FLAG "t"
+# endif
+#else
+# ifndef FOPEN_BINARY_FLAG
+# define FOPEN_BINARY_FLAG
+# endif
+# ifndef FOPEN_TEXT_FLAG
+# define FOPEN_TEXT_FLAG
+# endif
+#endif
+
+#ifndef STR
+# define _STR(s) #s
+# define STR(s) _STR(s)
+#endif
+
+/* ##### Pointer sized word ##### */
+
+/* FIXME: the MAX stuff in here is broken! */
+#if SIZEOF_CHARP > SIZEOF_INT
+ typedef long t_word;
+ #define WORD_MAX LONG_MAX
+ #define WORD_MIN LONG_MIN
+#else /* SIZEOF_CHARP <= SIZEOF_INT */
+ typedef int t_word;
+ #define WORD_MAX INT_MAX
+ #define WORD_MIN INT_MIN
+#endif
+
+#endif /* COMPAT_H_GUARD */
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of compat/compat.h */
diff --git a/contrib/ntp/sntp/libopts/compat/pathfind.c b/contrib/ntp/sntp/libopts/compat/pathfind.c
new file mode 100644
index 0000000..96eb771
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/compat/pathfind.c
@@ -0,0 +1,339 @@
+/* -*- Mode: C -*- */
+
+/* pathfind.c --- find a FILE MODE along PATH */
+
+/*
+ * Author: Gary V Vaughan <gvaughan@oranda.demon.co.uk>
+ * Time-stamp: "2006-09-23 19:46:16 bkorb"
+ * Created: Tue Jun 24 15:07:31 1997
+ * Last Modified: $Date: 2006/11/27 01:52:23 $
+ * by: bkorb
+ *
+ * $Id: pathfind.c,v 4.10 2006/11/27 01:52:23 bkorb Exp $
+ */
+
+/* Code: */
+
+#include "compat.h"
+#ifndef HAVE_PATHFIND
+#if defined(__windows__) && !defined(__CYGWIN__)
+char*
+pathfind( char const* path,
+ char const* fileName,
+ char const* mode )
+{
+ return NULL;
+}
+#else
+
+static char* make_absolute( char const *string, char const *dot_path );
+static char* canonicalize_pathname( char *path );
+static char* extract_colon_unit( char* dir, char const *string, int *p_index );
+
+
+/*=export_func pathfind
+ *
+ * what: fild a file in a list of directories
+ *
+ * ifndef: HAVE_PATHFIND
+ *
+ * arg: + char const* + path + colon separated list of search directories +
+ * arg: + char const* + file + the name of the file to look for +
+ * arg: + char const* + mode + the mode bits that must be set to match +
+ *
+ * ret_type: char*
+ * ret_desc: the path to the located file
+ *
+ * doc:
+ *
+ * pathfind looks for a a file with name "FILE" and "MODE" access
+ * along colon delimited "PATH", and returns the full pathname as a
+ * string, or NULL if not found. If "FILE" contains a slash, then
+ * it is treated as a relative or absolute path and "PATH" is ignored.
+ *
+ * @strong{NOTE}: this function is compiled into @file{libopts} only if
+ * it is not natively supplied.
+ *
+ * The "MODE" argument is a string of option letters chosen from the
+ * list below:
+ * @example
+ * Letter Meaning
+ * r readable
+ * w writable
+ * x executable
+ * f normal file (NOT IMPLEMENTED)
+ * b block special (NOT IMPLEMENTED)
+ * c character special (NOT IMPLEMENTED)
+ * d directory (NOT IMPLEMENTED)
+ * p FIFO (pipe) (NOT IMPLEMENTED)
+ * u set user ID bit (NOT IMPLEMENTED)
+ * g set group ID bit (NOT IMPLEMENTED)
+ * k sticky bit (NOT IMPLEMENTED)
+ * s size nonzero (NOT IMPLEMENTED)
+ * @end example
+ *
+ * example:
+ * To find the "ls" command using the "PATH" environment variable:
+ * @example
+ * #include <stdlib.h>
+ * char* pz_ls = pathfind( getenv("PATH"), "ls", "rx" );
+ * <<do whatever with pz_ls>>
+ * free( pz_ls );
+ * @end example
+ * The path is allocated with @code{malloc(3C)}, so you must @code{free(3C)}
+ * the result. Also, do not use unimplemented file modes. :-)
+ *
+ * err: returns NULL if the file is not found.
+=*/
+char*
+pathfind( char const* path,
+ char const* fileName,
+ char const* mode )
+{
+ int p_index = 0;
+ int mode_bits = 0;
+ char* pathName = NULL;
+ char zPath[ AG_PATH_MAX + 1 ];
+
+ if (strchr( mode, 'r' )) mode_bits |= R_OK;
+ if (strchr( mode, 'w' )) mode_bits |= W_OK;
+ if (strchr( mode, 'x' )) mode_bits |= X_OK;
+
+ /*
+ * FOR each non-null entry in the colon-separated path, DO ...
+ */
+ for (;;) {
+ DIR* dirP;
+ char* colon_unit = extract_colon_unit( zPath, path, &p_index );
+
+ /*
+ * IF no more entries, THEN quit
+ */
+ if (colon_unit == NULL)
+ break;
+
+ dirP = opendir( colon_unit );
+
+ /*
+ * IF the directory is inaccessable, THEN next directory
+ */
+ if (dirP == NULL)
+ continue;
+
+ /*
+ * FOR every entry in the given directory, ...
+ */
+ for (;;) {
+ struct dirent *entP = readdir( dirP );
+
+ if (entP == (struct dirent*)NULL)
+ break;
+
+ /*
+ * IF the file name matches the one we are looking for, ...
+ */
+ if (strcmp( entP->d_name, fileName ) == 0) {
+ char* pzFullName = make_absolute( fileName, colon_unit);
+
+ /*
+ * Make sure we can access it in the way we want
+ */
+ if (access( pzFullName, mode_bits ) >= 0) {
+ /*
+ * We can, so normalize the name and return it below
+ */
+ pathName = canonicalize_pathname( pzFullName );
+ }
+
+ free( (void*)pzFullName );
+ break;
+ }
+ }
+
+ closedir( dirP );
+
+ if (pathName != NULL)
+ break;
+ }
+
+ return pathName;
+}
+
+/*
+ * Turn STRING (a pathname) into an absolute pathname, assuming that
+ * DOT_PATH contains the symbolic location of `.'. This always returns
+ * a new string, even if STRING was an absolute pathname to begin with.
+ */
+static char*
+make_absolute( char const *string, char const *dot_path )
+{
+ char *result;
+ int result_len;
+
+ if (!dot_path || *string == '/') {
+ result = strdup( string );
+ } else {
+ if (dot_path && dot_path[0]) {
+ result = malloc( 2 + strlen( dot_path ) + strlen( string ) );
+ strcpy( result, dot_path );
+ result_len = strlen( result );
+ if (result[result_len - 1] != '/') {
+ result[result_len++] = '/';
+ result[result_len] = '\0';
+ }
+ } else {
+ result = malloc( 3 + strlen( string ) );
+ result[0] = '.'; result[1] = '/'; result[2] = '\0';
+ result_len = 2;
+ }
+
+ strcpy( result + result_len, string );
+ }
+
+ return result;
+}
+
+/*
+ * Canonicalize PATH, and return a new path. The new path differs from
+ * PATH in that:
+ *
+ * Multiple `/'s are collapsed to a single `/'.
+ * Leading `./'s are removed.
+ * Trailing `/.'s are removed.
+ * Trailing `/'s are removed.
+ * Non-leading `../'s and trailing `..'s are handled by removing
+ * portions of the path.
+ */
+static char*
+canonicalize_pathname( char *path )
+{
+ int i, start;
+ char stub_char, *result;
+
+ /* The result cannot be larger than the input PATH. */
+ result = strdup( path );
+
+ stub_char = (*path == '/') ? '/' : '.';
+
+ /* Walk along RESULT looking for things to compact. */
+ i = 0;
+ while (result[i]) {
+ while (result[i] != '\0' && result[i] != '/')
+ i++;
+
+ start = i++;
+
+ /* If we didn't find any slashes, then there is nothing left to
+ * do.
+ */
+ if (!result[start])
+ break;
+
+ /* Handle multiple `/'s in a row. */
+ while (result[i] == '/')
+ i++;
+
+#if !defined (apollo)
+ if ((start + 1) != i)
+#else
+ if ((start + 1) != i && (start != 0 || i != 2))
+#endif /* apollo */
+ {
+ strcpy( result + start + 1, result + i );
+ i = start + 1;
+ }
+
+ /* Handle backquoted `/'. */
+ if (start > 0 && result[start - 1] == '\\')
+ continue;
+
+ /* Check for trailing `/', and `.' by itself. */
+ if ((start && !result[i])
+ || (result[i] == '.' && !result[i+1])) {
+ result[--i] = '\0';
+ break;
+ }
+
+ /* Check for `../', `./' or trailing `.' by itself. */
+ if (result[i] == '.') {
+ /* Handle `./'. */
+ if (result[i + 1] == '/') {
+ strcpy( result + i, result + i + 1 );
+ i = (start < 0) ? 0 : start;
+ continue;
+ }
+
+ /* Handle `../' or trailing `..' by itself. */
+ if (result[i + 1] == '.' &&
+ (result[i + 2] == '/' || !result[i + 2])) {
+ while (--start > -1 && result[start] != '/')
+ ;
+ strcpy( result + start + 1, result + i + 2 );
+ i = (start < 0) ? 0 : start;
+ continue;
+ }
+ }
+ }
+
+ if (!*result) {
+ *result = stub_char;
+ result[1] = '\0';
+ }
+
+ return result;
+}
+
+/*
+ * Given a string containing units of information separated by colons,
+ * return the next one pointed to by (P_INDEX), or NULL if there are no
+ * more. Advance (P_INDEX) to the character after the colon.
+ */
+static char*
+extract_colon_unit( char* pzDir, char const *string, int *p_index )
+{
+ char* pzDest = pzDir;
+ int ix = *p_index;
+
+ if (string == NULL)
+ return NULL;
+
+ if ((unsigned)ix >= strlen( string ))
+ return NULL;
+
+ {
+ char const* pzSrc = string + ix;
+
+ while (*pzSrc == ':') pzSrc++;
+
+ for (;;) {
+ char ch = (*(pzDest++) = *(pzSrc++));
+ switch (ch) {
+ case ':':
+ pzDest[-1] = NUL;
+ case NUL:
+ goto copy_done;
+ }
+
+ if ((pzDest - pzDir) >= AG_PATH_MAX)
+ break;
+ } copy_done:;
+
+ ix = pzSrc - string;
+ }
+
+ if (*pzDir == NUL)
+ return NULL;
+
+ *p_index = ix;
+ return pzDir;
+}
+#endif /* __windows__ / __CYGWIN__ */
+#endif /* HAVE_PATHFIND */
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of compat/pathfind.c */
diff --git a/contrib/ntp/sntp/libopts/compat/snprintf.c b/contrib/ntp/sntp/libopts/compat/snprintf.c
new file mode 100644
index 0000000..fc91d63
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/compat/snprintf.c
@@ -0,0 +1,60 @@
+
+#ifndef HAVE_VPRINTF
+#include "choke-me: no vprintf and no snprintf"
+#endif
+
+#if defined(HAVE_STDARG_H)
+# include <stdarg.h>
+# ifndef VA_START
+# define VA_START(a, f) va_start(a, f)
+# define VA_END(a) va_end(a)
+# endif /* VA_START */
+# define SNV_USING_STDARG_H
+
+#elif defined(HAVE_VARARGS_H)
+# include <varargs.h>
+# ifndef VA_START
+# define VA_START(a, f) va_start(a)
+# define VA_END(a) va_end(a)
+# endif /* VA_START */
+# undef SNV_USING_STDARG_H
+
+#else
+# include "must-have-stdarg-or-varargs"
+#endif
+
+static int
+snprintf(char *str, size_t n, char const *fmt, ...)
+{
+ va_list ap;
+ int rval;
+
+#ifdef VSPRINTF_CHARSTAR
+ char *rp;
+ VA_START(ap, fmt);
+ rp = vsprintf(str, fmt, ap);
+ VA_END(ap);
+ rval = strlen(rp);
+
+#else
+ VA_START(ap, fmt);
+ rval = vsprintf(str, fmt, ap);
+ VA_END(ap);
+#endif
+
+ if (rval > n) {
+ fprintf(stderr, "snprintf buffer overrun %d > %d\n", rval, (int)n);
+ abort();
+ }
+ return rval;
+}
+
+static int
+vsnprintf( char *str, size_t n, char const *fmt, va_list ap )
+{
+#ifdef VSPRINTF_CHARSTAR
+ return (strlen(vsprintf(str, fmt, ap)));
+#else
+ return (vsprintf(str, fmt, ap));
+#endif
+}
diff --git a/contrib/ntp/sntp/libopts/compat/strchr.c b/contrib/ntp/sntp/libopts/compat/strchr.c
new file mode 100644
index 0000000..413f999
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/compat/strchr.c
@@ -0,0 +1,60 @@
+/*
+ SYNOPSIS
+ #include <string.h>
+
+ char *strchr(char const *s, int c);
+
+ char *strrchr(char const *s, int c);
+
+ DESCRIPTION
+ The strchr() function returns a pointer to the first occurrence of the
+ character c in the string s.
+
+ The strrchr() function returns a pointer to the last occurrence of the
+ character c in the string s.
+
+ Here "character" means "byte" - these functions do not work with wide
+ or multi-byte characters.
+
+ RETURN VALUE
+ The strchr() and strrchr() functions return a pointer to the matched
+ character or NULL if the character is not found.
+
+ CONFORMING TO
+ SVID 3, POSIX, BSD 4.3, ISO 9899
+*/
+
+char*
+strchr( char const *s, int c)
+{
+ do {
+ if ((unsigned)*s == (unsigned)c)
+ return s;
+
+ } while (*(++s) != NUL);
+
+ return NULL;
+}
+
+char*
+strrchr( char const *s, int c)
+{
+ char const *e = s + strlen(s);
+
+ for (;;) {
+ if (--e < s)
+ break;
+
+ if ((unsigned)*e == (unsigned)c)
+ return e;
+ }
+ return NULL;
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of compat/strsignal.c */
diff --git a/contrib/ntp/sntp/libopts/compat/strdup.c b/contrib/ntp/sntp/libopts/compat/strdup.c
new file mode 100644
index 0000000..e2933a8
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/compat/strdup.c
@@ -0,0 +1,19 @@
+/*
+ * Platforms without strdup ?!?!?!
+ */
+
+static char *
+strdup( char const *s )
+{
+ char *cp;
+
+ if (s == NULL)
+ return NULL;
+
+ cp = (char *) AGALOC((unsigned) (strlen(s)+1), "strdup");
+
+ if (cp != NULL)
+ (void) strcpy(cp, s);
+
+ return cp;
+}
diff --git a/contrib/ntp/sntp/libopts/compat/windows-config.h b/contrib/ntp/sntp/libopts/compat/windows-config.h
new file mode 100644
index 0000000..2612980
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/compat/windows-config.h
@@ -0,0 +1,130 @@
+
+/*
+ * Time-stamp: "2006-10-14 14:55:09 bkorb"
+ * by: bkorb
+ * Last Committed: $Date: 2007/04/28 22:19:23 $
+ */
+#ifndef WINDOWS_CONFIG_HACKERY
+#define WINDOWS_CONFIG_HACKERY 1
+
+/*
+ * The definitions below have been stolen from NTP's config.h for Windows.
+ * However, they may be kept here in order to keep libopts independent from
+ * the NTP project.
+ */
+#ifndef __windows__
+# define __windows__ 4
+#endif
+
+/*
+ * Miscellaneous functions that Microsoft maps
+ * to other names
+ *
+ * #define inline __inline
+ * #define vsnprintf _vsnprintf
+ */
+#define snprintf _snprintf
+/*
+ * #define stricmp _stricmp
+ * #define strcasecmp _stricmp
+ * #define isascii __isascii
+ * #define finite _finite
+ * #define random rand
+ * #define srandom srand
+ */
+
+#define SIZEOF_INT 4
+#define SIZEOF_CHARP 4
+#define SIZEOF_LONG 4
+#define SIZEOF_SHORT 2
+
+typedef unsigned long uintptr_t;
+
+/*
+ * # define HAVE_NET_IF_H
+ * # define QSORT_USES_VOID_P
+ * # define HAVE_SETVBUF
+ * # define HAVE_VSPRINTF
+ * # define HAVE_SNPRINTF
+ * # define HAVE_VSNPRINTF
+ * # define HAVE_PROTOTYPES /* from ntpq.mak * /
+ * # define HAVE_MEMMOVE
+ * # define HAVE_TERMIOS_H
+ * # define HAVE_ERRNO_H
+ * # define HAVE_STDARG_H
+ * # define HAVE_NO_NICE
+ * # define HAVE_MKTIME
+ * # define TIME_WITH_SYS_TIME
+ * # define HAVE_IO_COMPLETION_PORT
+ * # define ISC_PLATFORM_NEEDNTOP
+ * # define ISC_PLATFORM_NEEDPTON
+ * # define NEED_S_CHAR_TYPEDEF
+ * # define USE_PROTOTYPES /* for ntp_types.h * /
+ *
+ * #define ULONG_CONST(a) a ## UL
+ */
+
+#define HAVE_LIMITS_H 1
+#define HAVE_STRDUP 1
+#define HAVE_STRCHR 1
+#define HAVE_FCNTL_H 1
+
+/*
+ * VS.NET's version of wspiapi.h has a bug in it
+ * where it assigns a value to a variable inside
+ * an if statement. It should be comparing them.
+ * We prevent inclusion since we are not using this
+ * code so we don't have to see the warning messages
+ */
+#ifndef _WSPIAPI_H_
+#define _WSPIAPI_H_
+#endif
+
+/* Prevent inclusion of winsock.h in windows.h */
+#ifndef _WINSOCKAPI_
+#define _WINSOCKAPI_
+#endif
+
+#ifndef __RPCASYNC_H__
+#define __RPCASYNC_H__
+#endif
+
+/* Include Windows headers */
+#include <windows.h>
+#include <winsock2.h>
+#include <limits.h>
+
+/*
+ * Compatibility declarations for Windows, assuming SYS_WINNT
+ * has been defined.
+ */
+#define strdup _strdup
+#define stat _stat /* struct stat from <sys/stat.h> */
+#define unlink _unlink
+#define fchmod( _x, _y );
+#define ssize_t SSIZE_T
+
+#include <io.h>
+#define open _open
+#define close _close
+#define read _read
+#define write _write
+#define lseek _lseek
+#define pipe _pipe
+#define dup2 _dup2
+
+#define O_RDWR _O_RDWR
+#define O_RDONLY _O_RDONLY
+#define O_EXCL _O_EXCL
+
+#ifndef S_ISREG
+# define S_IFREG _S_IFREG
+# define S_ISREG(mode) (((mode) & S_IFREG) == S_IFREG)
+#endif
+
+#ifndef S_ISDIR
+# define S_IFDIR _S_IFDIR
+# define S_ISDIR(mode) (((mode) & S_IFDIR) == S_IFDIR)
+#endif
+
+#endif /* WINDOWS_CONFIG_HACKERY */
diff --git a/contrib/ntp/sntp/libopts/configfile.c b/contrib/ntp/sntp/libopts/configfile.c
new file mode 100644
index 0000000..e0b8a74
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/configfile.c
@@ -0,0 +1,1290 @@
+/*
+ * $Id: configfile.c,v 1.21 2007/04/15 19:01:18 bkorb Exp $
+ * Time-stamp: "2007-04-15 11:22:46 bkorb"
+ *
+ * configuration/rc/ini file handling.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+filePreset(
+ tOptions* pOpts,
+ char const* pzFileName,
+ int direction );
+
+static char*
+handleComment( char* pzText );
+
+static char*
+handleConfig(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzText,
+ int direction );
+
+static char*
+handleDirective(
+ tOptions* pOpts,
+ char* pzText );
+
+static char*
+handleProgramSection(
+ tOptions* pOpts,
+ char* pzText );
+
+static char*
+handleStructure(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzText,
+ int direction );
+
+static char*
+parseKeyWordType(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionValue* pType );
+
+static char*
+parseLoadMode(
+ char* pzText,
+ tOptionLoadMode* pMode );
+
+static char*
+parseSetMemType(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionValue* pType );
+
+static char*
+parseValueType(
+ char* pzText,
+ tOptionValue* pType );
+
+static char*
+skipUnknown( char* pzText );
+/* = = = END-STATIC-FORWARD = = = */
+
+
+/*=export_func configFileLoad
+ *
+ * what: parse a configuration file
+ * arg: + char const* + pzFile + the file to load +
+ *
+ * ret_type: const tOptionValue*
+ * ret_desc: An allocated, compound value structure
+ *
+ * doc:
+ * This routine will load a named configuration file and parse the
+ * text as a hierarchically valued option. The option descriptor
+ * created from an option definition file is not used via this interface.
+ * The returned value is "named" with the input file name and is of
+ * type "@code{OPARG_TYPE_HIERARCHY}". It may be used in calls to
+ * @code{optionGetValue()}, @code{optionNextValue()} and
+ * @code{optionUnloadNested()}.
+ *
+ * err:
+ * If the file cannot be loaded or processed, @code{NULL} is returned and
+ * @var{errno} is set. It may be set by a call to either @code{open(2)}
+ * @code{mmap(2)} or other file system calls, or it may be:
+ * @itemize @bullet
+ * @item
+ * @code{ENOENT} - the file was empty.
+ * @item
+ * @code{EINVAL} - the file contents are invalid -- not properly formed.
+ * @item
+ * @code{ENOMEM} - not enough memory to allocate the needed structures.
+ * @end itemize
+=*/
+const tOptionValue*
+configFileLoad( char const* pzFile )
+{
+ tmap_info_t cfgfile;
+ tOptionValue* pRes = NULL;
+ tOptionLoadMode save_mode = option_load_mode;
+
+ char* pzText =
+ text_mmap( pzFile, PROT_READ, MAP_PRIVATE, &cfgfile );
+
+ if (TEXT_MMAP_FAILED_ADDR(pzText))
+ return NULL; /* errno is set */
+
+ option_load_mode = OPTION_LOAD_COOKED;
+ pRes = optionLoadNested(pzText, pzFile, strlen(pzFile));
+
+ if (pRes == NULL) {
+ int err = errno;
+ text_munmap( &cfgfile );
+ errno = err;
+ } else
+ text_munmap( &cfgfile );
+
+ option_load_mode = save_mode;
+ return pRes;
+}
+
+
+/*=export_func optionFindValue
+ *
+ * what: find a hierarcicaly valued option instance
+ * arg: + const tOptDesc* + pOptDesc + an option with a nested arg type +
+ * arg: + char const* + name + name of value to find +
+ * arg: + char const* + value + the matching value +
+ *
+ * ret_type: const tOptionValue*
+ * ret_desc: a compound value structure
+ *
+ * doc:
+ * This routine will find an entry in a nested value option or configurable.
+ * It will search through the list and return a matching entry.
+ *
+ * err:
+ * The returned result is NULL and errno is set:
+ * @itemize @bullet
+ * @item
+ * @code{EINVAL} - the @code{pOptValue} does not point to a valid
+ * hierarchical option value.
+ * @item
+ * @code{ENOENT} - no entry matched the given name.
+ * @end itemize
+=*/
+const tOptionValue*
+optionFindValue( const tOptDesc* pOptDesc,
+ char const* pzName, char const* pzVal )
+{
+ const tOptionValue* pRes = NULL;
+
+ if ( (pOptDesc == NULL)
+ || (OPTST_GET_ARGTYPE(pOptDesc->fOptState) != OPARG_TYPE_HIERARCHY)) {
+ errno = EINVAL;
+ }
+
+ else if (pOptDesc->optCookie == NULL) {
+ errno = ENOENT;
+ }
+
+ else do {
+ tArgList* pAL = pOptDesc->optCookie;
+ int ct = pAL->useCt;
+ void** ppOV = (void**)(pAL->apzArgs);
+
+ if (ct == 0) {
+ errno = ENOENT;
+ break;
+ }
+
+ if (pzName == NULL) {
+ pRes = (tOptionValue*)*ppOV;
+ break;
+ }
+
+ while (--ct >= 0) {
+ const tOptionValue* pOV = *(ppOV++);
+ const tOptionValue* pRV = optionGetValue( pOV, pzName );
+
+ if (pRV == NULL)
+ continue;
+
+ if (pzVal == NULL) {
+ pRes = pOV;
+ break;
+ }
+ }
+ if (pRes == NULL)
+ errno = ENOENT;
+ } while (0);
+
+ return pRes;
+}
+
+
+/*=export_func optionFindNextValue
+ *
+ * what: find a hierarcicaly valued option instance
+ * arg: + const tOptDesc* + pOptDesc + an option with a nested arg type +
+ * arg: + const tOptionValue* + pPrevVal + the last entry +
+ * arg: + char const* + name + name of value to find +
+ * arg: + char const* + value + the matching value +
+ *
+ * ret_type: const tOptionValue*
+ * ret_desc: a compound value structure
+ *
+ * doc:
+ * This routine will find the next entry in a nested value option or
+ * configurable. It will search through the list and return the next entry
+ * that matches the criteria.
+ *
+ * err:
+ * The returned result is NULL and errno is set:
+ * @itemize @bullet
+ * @item
+ * @code{EINVAL} - the @code{pOptValue} does not point to a valid
+ * hierarchical option value.
+ * @item
+ * @code{ENOENT} - no entry matched the given name.
+ * @end itemize
+=*/
+const tOptionValue*
+optionFindNextValue( const tOptDesc* pOptDesc, const tOptionValue* pPrevVal,
+ char const* pzName, char const* pzVal )
+{
+ int foundOldVal = 0;
+ tOptionValue* pRes = NULL;
+
+ if ( (pOptDesc == NULL)
+ || (OPTST_GET_ARGTYPE(pOptDesc->fOptState) != OPARG_TYPE_HIERARCHY)) {
+ errno = EINVAL;
+ }
+
+ else if (pOptDesc->optCookie == NULL) {
+ errno = ENOENT;
+ }
+
+ else do {
+ tArgList* pAL = pOptDesc->optCookie;
+ int ct = pAL->useCt;
+ void** ppOV = (void**)pAL->apzArgs;
+
+ if (ct == 0) {
+ errno = ENOENT;
+ break;
+ }
+
+ while (--ct >= 0) {
+ tOptionValue* pOV = *(ppOV++);
+ if (foundOldVal) {
+ pRes = pOV;
+ break;
+ }
+ if (pOV == pPrevVal)
+ foundOldVal = 1;
+ }
+ if (pRes == NULL)
+ errno = ENOENT;
+ } while (0);
+
+ return pRes;
+}
+
+
+/*=export_func optionGetValue
+ *
+ * what: get a specific value from a hierarcical list
+ * arg: + const tOptionValue* + pOptValue + a hierarchcal value +
+ * arg: + char const* + valueName + name of value to get +
+ *
+ * ret_type: const tOptionValue*
+ * ret_desc: a compound value structure
+ *
+ * doc:
+ * This routine will find an entry in a nested value option or configurable.
+ * If "valueName" is NULL, then the first entry is returned. Otherwise,
+ * the first entry with a name that exactly matches the argument will be
+ * returned.
+ *
+ * err:
+ * The returned result is NULL and errno is set:
+ * @itemize @bullet
+ * @item
+ * @code{EINVAL} - the @code{pOptValue} does not point to a valid
+ * hierarchical option value.
+ * @item
+ * @code{ENOENT} - no entry matched the given name.
+ * @end itemize
+=*/
+const tOptionValue*
+optionGetValue( const tOptionValue* pOld, char const* pzValName )
+{
+ tArgList* pAL;
+ tOptionValue* pRes = NULL;
+
+ if ((pOld == NULL) || (pOld->valType != OPARG_TYPE_HIERARCHY)) {
+ errno = EINVAL;
+ return NULL;
+ }
+ pAL = pOld->v.nestVal;
+
+ if (pAL->useCt > 0) {
+ int ct = pAL->useCt;
+ void** papOV = (void**)(pAL->apzArgs);
+
+ if (pzValName == NULL) {
+ pRes = (tOptionValue*)*papOV;
+ }
+
+ else do {
+ tOptionValue* pOV = *(papOV++);
+ if (strcmp( pOV->pzName, pzValName ) == 0) {
+ pRes = pOV;
+ break;
+ }
+ } while (--ct > 0);
+ }
+ if (pRes == NULL)
+ errno = ENOENT;
+ return pRes;
+}
+
+
+/*=export_func optionNextValue
+ *
+ * what: get the next value from a hierarchical list
+ * arg: + const tOptionValue* + pOptValue + a hierarchcal list value +
+ * arg: + const tOptionValue* + pOldValue + a value from this list +
+ *
+ * ret_type: const tOptionValue*
+ * ret_desc: a compound value structure
+ *
+ * doc:
+ * This routine will return the next entry after the entry passed in. At the
+ * end of the list, NULL will be returned. If the entry is not found on the
+ * list, NULL will be returned and "@var{errno}" will be set to EINVAL.
+ * The "@var{pOldValue}" must have been gotten from a prior call to this
+ * routine or to "@code{opitonGetValue()}".
+ *
+ * err:
+ * The returned result is NULL and errno is set:
+ * @itemize @bullet
+ * @item
+ * @code{EINVAL} - the @code{pOptValue} does not point to a valid
+ * hierarchical option value or @code{pOldValue} does not point to a
+ * member of that option value.
+ * @item
+ * @code{ENOENT} - the supplied @code{pOldValue} pointed to the last entry.
+ * @end itemize
+=*/
+tOptionValue const *
+optionNextValue(tOptionValue const * pOVList,tOptionValue const * pOldOV )
+{
+ tArgList* pAL;
+ tOptionValue* pRes = NULL;
+ int err = EINVAL;
+
+ if ((pOVList == NULL) || (pOVList->valType != OPARG_TYPE_HIERARCHY)) {
+ errno = EINVAL;
+ return NULL;
+ }
+ pAL = pOVList->v.nestVal;
+ {
+ int ct = pAL->useCt;
+ void** papNV = (void**)(pAL->apzArgs);
+
+ while (ct-- > 0) {
+ tOptionValue* pNV = *(papNV++);
+ if (pNV == pOldOV) {
+ if (ct == 0) {
+ err = ENOENT;
+
+ } else {
+ err = 0;
+ pRes = (tOptionValue*)*papNV;
+ }
+ break;
+ }
+ }
+ }
+ if (err != 0)
+ errno = err;
+ return pRes;
+}
+
+
+/* filePreset
+ *
+ * Load a file containing presetting information (a configuration file).
+ */
+static void
+filePreset(
+ tOptions* pOpts,
+ char const* pzFileName,
+ int direction )
+{
+ tmap_info_t cfgfile;
+ tOptState st = OPTSTATE_INITIALIZER(PRESET);
+ char* pzFileText =
+ text_mmap( pzFileName, PROT_READ|PROT_WRITE, MAP_PRIVATE, &cfgfile );
+
+ if (TEXT_MMAP_FAILED_ADDR(pzFileText))
+ return;
+
+ if (direction == DIRECTION_CALLED) {
+ st.flags = OPTST_DEFINED;
+ direction = DIRECTION_PROCESS;
+ }
+
+ /*
+ * IF this is called via "optionProcess", then we are presetting.
+ * This is the default and the PRESETTING bit will be set.
+ * If this is called via "optionFileLoad", then the bit is not set
+ * and we consider stuff set herein to be "set" by the client program.
+ */
+ if ((pOpts->fOptSet & OPTPROC_PRESETTING) == 0)
+ st.flags = OPTST_SET;
+
+ do {
+ while (isspace( (int)*pzFileText )) pzFileText++;
+
+ if (isalpha( (int)*pzFileText )) {
+ pzFileText = handleConfig( pOpts, &st, pzFileText, direction );
+
+ } else switch (*pzFileText) {
+ case '<':
+ if (isalpha( (int)pzFileText[1] ))
+ pzFileText = handleStructure(pOpts, &st, pzFileText, direction);
+
+ else switch (pzFileText[1]) {
+ case '?':
+ pzFileText = handleDirective( pOpts, pzFileText );
+ break;
+
+ case '!':
+ pzFileText = handleComment( pzFileText );
+ break;
+
+ case '/':
+ pzFileText = strchr( pzFileText+2, '>' );
+ if (pzFileText++ != NULL)
+ break;
+
+ default:
+ goto all_done;
+ }
+ break;
+
+ case '[':
+ pzFileText = handleProgramSection( pOpts, pzFileText );
+ break;
+
+ case '#':
+ pzFileText = strchr( pzFileText+1, '\n' );
+ break;
+
+ default:
+ goto all_done; /* invalid format */
+ }
+ } while (pzFileText != NULL);
+
+ all_done:
+ text_munmap( &cfgfile );
+}
+
+
+/* handleComment
+ *
+ * "pzText" points to a "<!" sequence.
+ * Theoretically, we should ensure that it begins with "<!--",
+ * but actually I don't care that much. It ends with "-->".
+ */
+static char*
+handleComment( char* pzText )
+{
+ char* pz = strstr( pzText, "-->" );
+ if (pz != NULL)
+ pz += 3;
+ return pz;
+}
+
+
+/* handleConfig
+ *
+ * "pzText" points to the start of some value name.
+ * The end of the entry is the end of the line that is not preceded by
+ * a backslash escape character. The string value is always processed
+ * in "cooked" mode.
+ */
+static char*
+handleConfig(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzText,
+ int direction )
+{
+ char* pzName = pzText++;
+ char* pzEnd = strchr( pzText, '\n' );
+
+ if (pzEnd == NULL)
+ return pzText + strlen(pzText);
+
+ while (ISNAMECHAR( (int)*pzText )) pzText++;
+ while (isspace( (int)*pzText )) pzText++;
+ if (pzText > pzEnd) {
+ name_only:
+ *pzEnd++ = NUL;
+ loadOptionLine( pOpts, pOS, pzName, direction, OPTION_LOAD_UNCOOKED );
+ return pzEnd;
+ }
+
+ /*
+ * Either the first character after the name is a ':' or '=',
+ * or else we must have skipped over white space. Anything else
+ * is an invalid format and we give up parsing the text.
+ */
+ if ((*pzText == '=') || (*pzText == ':')) {
+ while (isspace( (int)*++pzText )) ;
+ if (pzText > pzEnd)
+ goto name_only;
+ } else if (! isspace((int)pzText[-1]))
+ return NULL;
+
+ /*
+ * IF the value is continued, remove the backslash escape and push "pzEnd"
+ * on to a newline *not* preceded by a backslash.
+ */
+ if (pzEnd[-1] == '\\') {
+ char* pcD = pzEnd-1;
+ char* pcS = pzEnd;
+
+ for (;;) {
+ char ch = *(pcS++);
+ switch (ch) {
+ case NUL:
+ pcS = NULL;
+
+ case '\n':
+ *pcD = NUL;
+ pzEnd = pcS;
+ goto copy_done;
+
+ case '\\':
+ if (*pcS == '\n') {
+ ch = *(pcS++);
+ }
+ /* FALLTHROUGH */
+ default:
+ *(pcD++) = ch;
+ }
+ } copy_done:;
+
+ } else {
+ /*
+ * The newline was not preceded by a backslash. NUL it out
+ */
+ *(pzEnd++) = NUL;
+ }
+
+ /*
+ * "pzName" points to what looks like text for one option/configurable.
+ * It is NUL terminated. Process it.
+ */
+ loadOptionLine( pOpts, pOS, pzName, direction, OPTION_LOAD_UNCOOKED );
+
+ return pzEnd;
+}
+
+
+/* handleDirective
+ *
+ * "pzText" points to a "<?" sequence.
+ * For the moment, we only handle "<?program" directives.
+ */
+static char*
+handleDirective(
+ tOptions* pOpts,
+ char* pzText )
+{
+ char ztitle[32] = "<?";
+ size_t title_len = strlen( zProg );
+ size_t name_len;
+
+ if ( (strncmp( pzText+2, zProg, title_len ) != 0)
+ || (! isspace( (int)pzText[title_len+2] )) ) {
+ pzText = strchr( pzText+2, '>' );
+ if (pzText != NULL)
+ pzText++;
+ return pzText;
+ }
+
+ name_len = strlen( pOpts->pzProgName );
+ strcpy( ztitle+2, zProg );
+ title_len += 2;
+
+ do {
+ pzText += title_len;
+
+ if (isspace((int)*pzText)) {
+ while (isspace((int)*pzText)) pzText++;
+ if ( (strneqvcmp( pzText, pOpts->pzProgName, (int)name_len) == 0)
+ && (pzText[name_len] == '>')) {
+ pzText += name_len + 1;
+ break;
+ }
+ }
+
+ pzText = strstr( pzText, ztitle );
+ } while (pzText != NULL);
+
+ return pzText;
+}
+
+
+/* handleProgramSection
+ *
+ * "pzText" points to a '[' character.
+ * The "traditional" [PROG_NAME] segmentation of the config file.
+ * Do not ever mix with the "<?program prog-name>" variation.
+ */
+static char*
+handleProgramSection(
+ tOptions* pOpts,
+ char* pzText )
+{
+ size_t len = strlen( pOpts->pzPROGNAME );
+ if ( (strncmp( pzText+1, pOpts->pzPROGNAME, len ) == 0)
+ && (pzText[len+1] == ']'))
+ return strchr( pzText + len + 2, '\n' );
+
+ if (len > 16)
+ return NULL;
+
+ {
+ char z[24];
+ sprintf( z, "[%s]", pOpts->pzPROGNAME );
+ pzText = strstr( pzText, z );
+ }
+
+ if (pzText != NULL)
+ pzText = strchr( pzText, '\n' );
+ return pzText;
+}
+
+
+/* handleStructure
+ *
+ * "pzText" points to a '<' character, followed by an alpha.
+ * The end of the entry is either the "/>" following the name, or else a
+ * "</name>" string.
+ */
+static char*
+handleStructure(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzText,
+ int direction )
+{
+ tOptionLoadMode mode = option_load_mode;
+ tOptionValue valu;
+
+ char* pzName = ++pzText;
+ char* pzData;
+ char* pcNulPoint;
+
+ while (ISNAMECHAR( *pzText )) pzText++;
+ pcNulPoint = pzText;
+ valu.valType = OPARG_TYPE_STRING;
+
+ switch (*pzText) {
+ case ' ':
+ case '\t':
+ pzText = parseAttributes( pOpts, pzText, &mode, &valu );
+ if (*pzText == '>')
+ break;
+ if (*pzText != '/')
+ return NULL;
+ /* FALLTHROUGH */
+
+ case '/':
+ if (pzText[1] != '>')
+ return NULL;
+ *pzText = NUL;
+ pzText += 2;
+ loadOptionLine( pOpts, pOS, pzName, direction, mode );
+ return pzText;
+
+ case '>':
+ break;
+
+ default:
+ pzText = strchr( pzText, '>');
+ if (pzText != NULL)
+ pzText++;
+ return pzText;
+ }
+
+ /*
+ * If we are here, we have a value. "pzText" points to a closing angle
+ * bracket. Separate the name from the value for a moment.
+ */
+ *pcNulPoint = NUL;
+ pzData = ++pzText;
+
+ /*
+ * Find the end of the option text and NUL terminate it
+ */
+ {
+ char z[64], *pz = z;
+ size_t len = strlen(pzName) + 4;
+ if (len > sizeof(z))
+ pz = AGALOC(len, "scan name");
+
+ sprintf( pz, "</%s>", pzName );
+ *pzText = ' ';
+ pzText = strstr( pzText, pz );
+ if (pz != z) AGFREE(pz);
+
+ if (pzText == NULL)
+ return pzText;
+
+ *pzText = NUL;
+
+ pzText += len-1;
+ }
+
+ /*
+ * Rejoin the name and value for parsing by "loadOptionLine()".
+ * Erase any attributes parsed by "parseAttributes()".
+ */
+ memset(pcNulPoint, ' ', pzData - pcNulPoint);
+
+ /*
+ * "pzName" points to what looks like text for one option/configurable.
+ * It is NUL terminated. Process it.
+ */
+ loadOptionLine( pOpts, pOS, pzName, direction, mode );
+
+ return pzText;
+}
+
+
+/* internalFileLoad
+ *
+ * Load a configuration file. This may be invoked either from
+ * scanning the "homerc" list, or from a specific file request.
+ * (see "optionFileLoad()", the implementation for --load-opts)
+ */
+LOCAL void
+internalFileLoad( tOptions* pOpts )
+{
+ int idx;
+ int inc = DIRECTION_PRESET;
+ char zFileName[ AG_PATH_MAX+1 ];
+
+ if (pOpts->papzHomeList == NULL)
+ return;
+
+ /*
+ * Find the last RC entry (highest priority entry)
+ */
+ for (idx = 0; pOpts->papzHomeList[ idx+1 ] != NULL; ++idx) ;
+
+ /*
+ * For every path in the home list, ... *TWICE* We start at the last
+ * (highest priority) entry, work our way down to the lowest priority,
+ * handling the immediate options.
+ * Then we go back up, doing the normal options.
+ */
+ for (;;) {
+ struct stat StatBuf;
+ cch_t* pzPath;
+
+ /*
+ * IF we've reached the bottom end, change direction
+ */
+ if (idx < 0) {
+ inc = DIRECTION_PROCESS;
+ idx = 0;
+ }
+
+ pzPath = pOpts->papzHomeList[ idx ];
+
+ /*
+ * IF we've reached the top end, bail out
+ */
+ if (pzPath == NULL)
+ break;
+
+ idx += inc;
+
+ if (! optionMakePath( zFileName, (int)sizeof(zFileName),
+ pzPath, pOpts->pzProgPath ))
+ continue;
+
+ /*
+ * IF the file name we constructed is a directory,
+ * THEN append the Resource Configuration file name
+ * ELSE we must have the complete file name
+ */
+ if (stat( zFileName, &StatBuf ) != 0)
+ continue; /* bogus name - skip the home list entry */
+
+ if (S_ISDIR( StatBuf.st_mode )) {
+ size_t len = strlen( zFileName );
+ char* pz;
+
+ if (len + 1 + strlen( pOpts->pzRcName ) >= sizeof( zFileName ))
+ continue;
+
+ pz = zFileName + len;
+ if (pz[-1] != DIRCH)
+ *(pz++) = DIRCH;
+ strcpy( pz, pOpts->pzRcName );
+ }
+
+ filePreset( pOpts, zFileName, inc );
+
+ /*
+ * IF we are now to skip config files AND we are presetting,
+ * THEN change direction. We must go the other way.
+ */
+ {
+ tOptDesc * pOD = pOpts->pOptDesc + pOpts->specOptIdx.save_opts+1;
+ if (DISABLED_OPT(pOD) && PRESETTING(inc)) {
+ idx -= inc; /* go back and reprocess current file */
+ inc = DIRECTION_PROCESS;
+ }
+ }
+ } /* twice for every path in the home list, ... */
+}
+
+
+/*=export_func optionFileLoad
+ *
+ * what: Load the locatable config files, in order
+ *
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + char const* + pzProg + program name +
+ *
+ * ret_type: int
+ * ret_desc: 0 -> SUCCESS, -1 -> FAILURE
+ *
+ * doc:
+ *
+ * This function looks in all the specified directories for a configuration
+ * file ("rc" file or "ini" file) and processes any found twice. The first
+ * time through, they are processed in reverse order (last file first). At
+ * that time, only "immediate action" configurables are processed. For
+ * example, if the last named file specifies not processing any more
+ * configuration files, then no more configuration files will be processed.
+ * Such an option in the @strong{first} named directory will have no effect.
+ *
+ * Once the immediate action configurables have been handled, then the
+ * directories are handled in normal, forward order. In that way, later
+ * config files can override the settings of earlier config files.
+ *
+ * See the AutoOpts documentation for a thorough discussion of the
+ * config file format.
+ *
+ * Configuration files not found or not decipherable are simply ignored.
+ *
+ * err: Returns the value, "-1" if the program options descriptor
+ * is out of date or indecipherable. Otherwise, the value "0" will
+ * always be returned.
+=*/
+int
+optionFileLoad( tOptions* pOpts, char const* pzProgram )
+{
+ if (! SUCCESSFUL( validateOptionsStruct( pOpts, pzProgram )))
+ return -1;
+
+ pOpts->pzProgName = pzProgram;
+ internalFileLoad( pOpts );
+ return 0;
+}
+
+
+/*=export_func optionLoadOpt
+ * private:
+ *
+ * what: Load an option rc/ini file
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Processes the options found in the file named with
+ * pOptDesc->optArg.argString.
+=*/
+void
+optionLoadOpt( tOptions* pOpts, tOptDesc* pOptDesc )
+{
+ /*
+ * IF the option is not being disabled, THEN load the file. There must
+ * be a file. (If it is being disabled, then the disablement processing
+ * already took place. It must be done to suppress preloading of ini/rc
+ * files.)
+ */
+ if (! DISABLED_OPT( pOptDesc )) {
+ struct stat sb;
+ if (stat( pOptDesc->optArg.argString, &sb ) != 0) {
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) == 0)
+ return;
+
+ fprintf( stderr, zFSErrOptLoad, errno, strerror( errno ),
+ pOptDesc->optArg.argString );
+ exit(EX_NOINPUT);
+ /* NOT REACHED */
+ }
+
+ if (! S_ISREG( sb.st_mode )) {
+ if ((pOpts->fOptSet & OPTPROC_ERRSTOP) == 0)
+ return;
+
+ fprintf( stderr, zNotFile, pOptDesc->optArg.argString );
+ exit(EX_NOINPUT);
+ /* NOT REACHED */
+ }
+
+ filePreset(pOpts, pOptDesc->optArg.argString, DIRECTION_CALLED);
+ }
+}
+
+
+/* parseAttributes
+ *
+ * Parse the various attributes of an XML-styled config file entry
+ */
+LOCAL char*
+parseAttributes(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionLoadMode* pMode,
+ tOptionValue* pType )
+{
+ size_t lenLoadType = strlen( zLoadType );
+ size_t lenKeyWords = strlen( zKeyWords );
+ size_t lenSetMem = strlen( zSetMembers );
+
+ do {
+ switch (*pzText) {
+ case '/': pType->valType = OPARG_TYPE_NONE;
+ case '>': return pzText;
+
+ default:
+ case NUL: return NULL;
+
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\f':
+ case '\r':
+ case '\v':
+ break;
+ }
+
+ while (isspace( (int)*++pzText )) ;
+
+ if (strncmp( pzText, zLoadType, lenLoadType ) == 0) {
+ pzText = parseValueType( pzText+lenLoadType, pType );
+ continue;
+ }
+
+ if (strncmp( pzText, zKeyWords, lenKeyWords ) == 0) {
+ pzText = parseKeyWordType( pOpts, pzText+lenKeyWords, pType );
+ continue;
+ }
+
+ if (strncmp( pzText, zSetMembers, lenSetMem ) == 0) {
+ pzText = parseSetMemType( pOpts, pzText+lenSetMem, pType );
+ continue;
+ }
+
+ pzText = parseLoadMode( pzText, pMode );
+ } while (pzText != NULL);
+
+ return pzText;
+}
+
+
+/* parseKeyWordType
+ *
+ * "pzText" points to the character after "words=".
+ * What should follow is a name of a keyword (enumeration) list.
+ */
+static char*
+parseKeyWordType(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionValue* pType )
+{
+ return skipUnknown( pzText );
+}
+
+
+/* parseLoadMode
+ *
+ * "pzText" points to some name character. We check for "cooked" or
+ * "uncooked" or "keep". This function should handle any attribute
+ * that does not have an associated value.
+ */
+static char*
+parseLoadMode(
+ char* pzText,
+ tOptionLoadMode* pMode )
+{
+ {
+ size_t len = strlen(zLoadCooked);
+ if (strncmp( pzText, zLoadCooked, len ) == 0) {
+ if ( (pzText[len] == '>')
+ || (pzText[len] == '/')
+ || isspace((int)pzText[len])) {
+ *pMode = OPTION_LOAD_COOKED;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLoadUncooked);
+ if (strncmp( pzText, zLoadUncooked, len ) == 0) {
+ if ( (pzText[len] == '>')
+ || (pzText[len] == '/')
+ || isspace((int)pzText[len])) {
+ *pMode = OPTION_LOAD_UNCOOKED;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLoadKeep);
+ if (strncmp( pzText, zLoadKeep, len ) == 0) {
+ if ( (pzText[len] == '>')
+ || (pzText[len] == '/')
+ || isspace((int)pzText[len])) {
+ *pMode = OPTION_LOAD_KEEP;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ unknown:
+ return skipUnknown( pzText );
+}
+
+
+/* parseSetMemType
+ *
+ * "pzText" points to the character after "members="
+ * What should follow is a name of a "set membership".
+ * A collection of bit flags.
+ */
+static char*
+parseSetMemType(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionValue* pType )
+{
+ return skipUnknown( pzText );
+}
+
+
+/* parseValueType
+ *
+ * "pzText" points to the character after "type="
+ */
+static char*
+parseValueType(
+ char* pzText,
+ tOptionValue* pType )
+{
+ {
+ size_t len = strlen(zLtypeString);
+ if (strncmp( pzText, zLtypeString, len ) == 0) {
+ if ((pzText[len] == '>') || isspace((int)pzText[len])) {
+ pType->valType = OPARG_TYPE_STRING;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLtypeInteger);
+ if (strncmp( pzText, zLtypeInteger, len ) == 0) {
+ if ((pzText[len] == '>') || isspace((int)pzText[len])) {
+ pType->valType = OPARG_TYPE_NUMERIC;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLtypeBool);
+ if (strncmp( pzText, zLtypeBool, len ) == 0) {
+ if ((pzText[len] == '>') || isspace(pzText[len])) {
+ pType->valType = OPARG_TYPE_BOOLEAN;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLtypeKeyword);
+ if (strncmp( pzText, zLtypeKeyword, len ) == 0) {
+ if ((pzText[len] == '>') || isspace((int)pzText[len])) {
+ pType->valType = OPARG_TYPE_ENUMERATION;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLtypeSetMembership);
+ if (strncmp( pzText, zLtypeSetMembership, len ) == 0) {
+ if ((pzText[len] == '>') || isspace((int)pzText[len])) {
+ pType->valType = OPARG_TYPE_MEMBERSHIP;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ {
+ size_t len = strlen(zLtypeNest);
+ if (strncmp( pzText, zLtypeNest, len ) == 0) {
+ if ((pzText[len] == '>') || isspace((int)pzText[len])) {
+ pType->valType = OPARG_TYPE_HIERARCHY;
+ return pzText + len;
+ }
+ goto unknown;
+ }
+ }
+
+ unknown:
+ pType->valType = OPARG_TYPE_NONE;
+ return skipUnknown( pzText );
+}
+
+
+/* skipUnknown
+ *
+ * Skip over some unknown attribute
+ */
+static char*
+skipUnknown( char* pzText )
+{
+ for (;; pzText++) {
+ if (isspace( (int)*pzText )) return pzText;
+ switch (*pzText) {
+ case NUL: return NULL;
+ case '/':
+ case '>': return pzText;
+ }
+ }
+}
+
+
+/* validateOptionsStruct
+ *
+ * Make sure the option descriptor is there and that we understand it.
+ * This should be called from any user entry point where one needs to
+ * worry about validity. (Some entry points are free to assume that
+ * the call is not the first to the library and, thus, that this has
+ * already been called.)
+ */
+LOCAL tSuccess
+validateOptionsStruct( tOptions* pOpts, char const* pzProgram )
+{
+ if (pOpts == NULL) {
+ fputs( zAO_Bad, stderr );
+ exit( EX_CONFIG );
+ }
+
+ /*
+ * IF the client has enabled translation and the translation procedure
+ * is available, then go do it.
+ */
+ if ( ((pOpts->fOptSet & OPTPROC_TRANSLATE) != 0)
+ && (pOpts->pTransProc != 0) ) {
+ (*pOpts->pTransProc)();
+ pOpts->fOptSet &= ~OPTPROC_TRANSLATE;
+ }
+
+ /*
+ * IF the struct version is not the current, and also
+ * either too large (?!) or too small,
+ * THEN emit error message and fail-exit
+ */
+ if ( ( pOpts->structVersion != OPTIONS_STRUCT_VERSION )
+ && ( (pOpts->structVersion > OPTIONS_STRUCT_VERSION )
+ || (pOpts->structVersion < OPTIONS_MINIMUM_VERSION )
+ ) ) {
+
+ fprintf( stderr, zAO_Err, pOpts->origArgVect[0],
+ NUM_TO_VER( pOpts->structVersion ));
+ if (pOpts->structVersion > OPTIONS_STRUCT_VERSION )
+ fputs( zAO_Big, stderr );
+ else
+ fputs( zAO_Sml, stderr );
+
+ return FAILURE;
+ }
+
+ /*
+ * If the program name hasn't been set, then set the name and the path
+ * and the set of equivalent characters.
+ */
+ if (pOpts->pzProgName == NULL) {
+ char const* pz = strrchr( pzProgram, DIRCH );
+
+ if (pz == NULL)
+ pOpts->pzProgName = pzProgram;
+ else pOpts->pzProgName = pz+1;
+
+ pOpts->pzProgPath = pzProgram;
+
+ /*
+ * when comparing long names, these are equivalent
+ */
+ strequate( zSepChars );
+ }
+
+ return SUCCESS;
+}
+
+
+/**
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/configfile.c */
diff --git a/contrib/ntp/sntp/libopts/cook.c b/contrib/ntp/sntp/libopts/cook.c
new file mode 100644
index 0000000..bebd123
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/cook.c
@@ -0,0 +1,354 @@
+
+/*
+ * $Id: cook.c,v 4.10 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2006-09-24 15:21:02 bkorb"
+ *
+ * This file contains the routines that deal with processing quoted strings
+ * into an internal format.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+/* = = = END-STATIC-FORWARD = = = */
+
+/*=export_func ao_string_cook_escape_char
+ * private:
+ *
+ * what: escape-process a string fragment
+ * arg: + char const* + pzScan + points to character after the escape +
+ * arg: + char* + pRes + Where to put the result byte +
+ * arg: + unsigned int + nl_ch + replacement char if scanned char is \n +
+ *
+ * ret-type: unsigned int
+ * ret-desc: The number of bytes consumed processing the escaped character.
+ *
+ * doc:
+ *
+ * This function converts "t" into "\t" and all your other favorite
+ * escapes, including numeric ones: hex and ocatal, too.
+ * The returned result tells the caller how far to advance the
+ * scan pointer (passed in). The default is to just pass through the
+ * escaped character and advance the scan by one.
+ *
+ * Some applications need to keep an escaped newline, others need to
+ * suppress it. This is accomplished by supplying a '\n' replacement
+ * character that is different from \n, if need be. For example, use
+ * 0x7F and never emit a 0x7F.
+ *
+ * err: @code{NULL} is returned if the string is mal-formed.
+=*/
+unsigned int
+ao_string_cook_escape_char( char const* pzIn, char* pRes, u_int nl )
+{
+ unsigned int res = 1;
+
+ switch (*pRes = *pzIn++) {
+ case NUL: /* NUL - end of input string */
+ return 0;
+ case '\r':
+ if (*pzIn != '\n')
+ return 1;
+ res++;
+ /* FALLTHROUGH */
+ case '\n': /* NL - emit newline */
+ *pRes = (char)nl;
+ return res;
+
+ case 'a': *pRes = '\a'; break;
+ case 'b': *pRes = '\b'; break;
+ case 'f': *pRes = '\f'; break;
+ case 'n': *pRes = '\n'; break;
+ case 'r': *pRes = '\r'; break;
+ case 't': *pRes = '\t'; break;
+ case 'v': *pRes = '\v'; break;
+
+ case 'x': /* HEX Escape */
+ if (isxdigit( (int)*pzIn )) {
+ unsigned int val;
+ unsigned char ch = *pzIn++;
+
+ if ((ch >= 'A') && (ch <= 'F'))
+ val = 10 + (ch - 'A');
+ else if ((ch >= 'a') && (ch <= 'f'))
+ val = 10 + (ch - 'a');
+ else val = ch - '0';
+
+ ch = *pzIn;
+
+ if (! isxdigit( ch )) {
+ *pRes = val;
+ res = 2;
+ break;
+ }
+ val <<= 4;
+ if ((ch >= 'A') && (ch <= 'F'))
+ val += 10 + (ch - 'A');
+ else if ((ch >= 'a') && (ch <= 'f'))
+ val += 10 + (ch - 'a');
+ else val += ch - '0';
+
+ res = 3;
+ *pRes = val;
+ }
+ break;
+
+ default:
+ /*
+ * IF the character copied was an octal digit,
+ * THEN set the output character to an octal value
+ */
+ if (isdigit( (int)*pRes ) && (*pRes < '8')) {
+ unsigned int val = *pRes - '0';
+ unsigned char ch = *pzIn++;
+
+ /*
+ * IF the second character is *not* an octal digit,
+ * THEN save the value and bail
+ */
+ if ((ch < '0') || (ch > '7')) {
+ *pRes = val;
+ break;
+ }
+
+ val = (val<<3) + (ch - '0');
+ ch = *pzIn;
+ res = 2;
+
+ /*
+ * IF the THIRD character is *not* an octal digit,
+ * THEN save the value and bail
+ */
+ if ((ch < '0') || (ch > '7')) {
+ *pRes = val;
+ break;
+ }
+
+ /*
+ * IF the new value would not be too large,
+ * THEN add on the third and last character value
+ */
+ if ((val<<3) < 0xFF) {
+ val = (val<<3) + (ch - '0');
+ res = 3;
+ }
+
+ *pRes = val;
+ break;
+ }
+ }
+
+ return res;
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * A quoted string has been found.
+ * Find the end of it and compress any escape sequences.
+ */
+/*=export_func ao_string_cook
+ * private:
+ *
+ * what: concatenate and escape-process strings
+ * arg: + char* + pzScan + The *MODIFIABLE* input buffer +
+ * arg: + int* + pLineCt + The (possibly NULL) pointer to a line count +
+ *
+ * ret-type: char*
+ * ret-desc: The address of the text following the processed strings.
+ * The return value is NULL if the strings are ill-formed.
+ *
+ * doc:
+ *
+ * A series of one or more quoted strings are concatenated together.
+ * If they are quoted with double quotes (@code{"}), then backslash
+ * escapes are processed per the C programming language. If they are
+ * single quote strings, then the backslashes are honored only when they
+ * precede another backslash or a single quote character.
+ *
+ * err: @code{NULL} is returned if the string(s) is/are mal-formed.
+=*/
+char*
+ao_string_cook( char* pzScan, int* pLineCt )
+{
+ int l = 0;
+ char q = *pzScan;
+
+ /*
+ * It is a quoted string. Process the escape sequence characters
+ * (in the set "abfnrtv") and make sure we find a closing quote.
+ */
+ char* pzD = pzScan++;
+ char* pzS = pzScan;
+
+ if (pLineCt == NULL)
+ pLineCt = &l;
+
+ for (;;) {
+ /*
+ * IF the next character is the quote character, THEN we may end the
+ * string. We end it unless the next non-blank character *after* the
+ * string happens to also be a quote. If it is, then we will change
+ * our quote character to the new quote character and continue
+ * condensing text.
+ */
+ while (*pzS == q) {
+ *pzD = NUL; /* This is probably the end of the line */
+ pzS++;
+
+ scan_for_quote:
+ while (isspace((int)*pzS))
+ if (*(pzS++) == '\n')
+ (*pLineCt)++;
+
+ /*
+ * IF the next character is a quote character,
+ * THEN we will concatenate the strings.
+ */
+ switch (*pzS) {
+ case '"':
+ case '\'':
+ break;
+
+ case '/':
+ /*
+ * Allow for a comment embedded in the concatenated string.
+ */
+ switch (pzS[1]) {
+ default: return NULL;
+ case '/':
+ /*
+ * Skip to end of line
+ */
+ pzS = strchr( pzS, '\n' );
+ if (pzS == NULL)
+ return NULL;
+ (*pLineCt)++;
+ break;
+
+ case '*':
+ {
+ char* p = strstr( pzS+2, "*/" );
+ /*
+ * Skip to terminating star slash
+ */
+ if (p == NULL)
+ return NULL;
+ while (pzS < p) {
+ if (*(pzS++) == '\n')
+ (*pLineCt)++;
+ }
+
+ pzS = p + 2;
+ }
+ }
+ goto scan_for_quote;
+
+ default:
+ /*
+ * The next non-whitespace character is not a quote.
+ * The series of quoted strings has come to an end.
+ */
+ return pzS;
+ }
+
+ q = *(pzS++); /* assign new quote character and advance scan */
+ }
+
+ /*
+ * We are inside a quoted string. Copy text.
+ */
+ switch (*(pzD++) = *(pzS++)) {
+ case NUL:
+ return NULL;
+
+ case '\n':
+ (*pLineCt)++;
+ break;
+
+ case '\\':
+ /*
+ * IF we are escaping a new line,
+ * THEN drop both the escape and the newline from
+ * the result string.
+ */
+ if (*pzS == '\n') {
+ pzS++;
+ pzD--;
+ (*pLineCt)++;
+ }
+
+ /*
+ * ELSE IF the quote character is '"' or '`',
+ * THEN we do the full escape character processing
+ */
+ else if (q != '\'') {
+ int ct = ao_string_cook_escape_char( pzS, pzD-1, (u_int)'\n' );
+ if (ct == 0)
+ return NULL;
+
+ pzS += ct;
+ } /* if (q != '\'') */
+
+ /*
+ * OTHERWISE, we only process "\\", "\'" and "\#" sequences.
+ * The latter only to easily hide preprocessing directives.
+ */
+ else switch (*pzS) {
+ case '\\':
+ case '\'':
+ case '#':
+ pzD[-1] = *pzS++;
+ }
+ } /* switch (*(pzD++) = *(pzS++)) */
+ } /* for (;;) */
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/cook.c */
diff --git a/contrib/ntp/sntp/libopts/enumeration.c b/contrib/ntp/sntp/libopts/enumeration.c
new file mode 100644
index 0000000..67dd4f4
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/enumeration.c
@@ -0,0 +1,498 @@
+
+/*
+ * $Id: enumeration.c,v 4.17 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 10:22:35 bkorb"
+ *
+ * Automated Options Paged Usage module.
+ *
+ * This routine will run run-on options through a pager so the
+ * user may examine, print or edit them at their leisure.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+tSCC* pz_enum_err_fmt;
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+enumError(
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC* const * paz_names,
+ int name_ct );
+
+static uintptr_t
+findName(
+ tCC* pzName,
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC* const * paz_names,
+ unsigned int name_ct );
+/* = = = END-STATIC-FORWARD = = = */
+
+static void
+enumError(
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC* const * paz_names,
+ int name_ct )
+{
+ size_t max_len = 0;
+ size_t ttl_len = 0;
+
+ if (pOpts != NULL)
+ fprintf( option_usage_fp, pz_enum_err_fmt, pOpts->pzProgName,
+ pOD->optArg.argString, pOD->pz_Name );
+
+ fprintf( option_usage_fp, zValidKeys, pOD->pz_Name );
+
+ if (**paz_names == 0x7F) {
+ paz_names++;
+ name_ct--;
+ }
+
+ /*
+ * Figure out the maximum length of any name, plus the total length
+ * of all the names.
+ */
+ {
+ tCC * const * paz = paz_names;
+ int ct = name_ct;
+
+ do {
+ size_t len = strlen( *(paz++) ) + 1;
+ if (len > max_len)
+ max_len = len;
+ ttl_len += len;
+ } while (--ct > 0);
+ }
+
+ /*
+ * IF any one entry is about 1/2 line or longer, print one per line
+ */
+ if (max_len > 35) {
+ do {
+ fprintf( option_usage_fp, " %s\n", *(paz_names++) );
+ } while (--name_ct > 0);
+ }
+
+ /*
+ * ELSE IF they all fit on one line, then do so.
+ */
+ else if (ttl_len < 76) {
+ fputc( ' ', option_usage_fp );
+ do {
+ fputc( ' ', option_usage_fp );
+ fputs( *(paz_names++), option_usage_fp );
+ } while (--name_ct > 0);
+ fputc( '\n', option_usage_fp );
+ }
+
+ /*
+ * Otherwise, columnize the output
+ */
+ else {
+ int ent_no = 0;
+ char zFmt[16]; /* format for all-but-last entries on a line */
+
+ sprintf( zFmt, "%%-%ds", (int)max_len );
+ max_len = 78 / max_len; /* max_len is now max entries on a line */
+ fputs( " ", option_usage_fp );
+
+ /*
+ * Loop through all but the last entry
+ */
+ while (--name_ct > 0) {
+ if (++ent_no == max_len) {
+ /*
+ * Last entry on a line. Start next line, too.
+ */
+ fprintf( option_usage_fp, "%s\n ", *(paz_names++) );
+ ent_no = 0;
+ }
+
+ else
+ fprintf( option_usage_fp, zFmt, *(paz_names++) );
+ }
+ fprintf( option_usage_fp, "%s\n", *paz_names );
+ }
+
+ /*
+ * IF we do not have a pOpts pointer, then this output is being requested
+ * by the usage procedure. Let's not re-invoke it recursively.
+ */
+ if (pOpts != NULL)
+ (*(pOpts->pUsageProc))( pOpts, EXIT_FAILURE );
+ if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_MEMBERSHIP)
+ fputs( zSetMemberSettings, option_usage_fp );
+}
+
+
+static uintptr_t
+findName(
+ tCC* pzName,
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC* const * paz_names,
+ unsigned int name_ct )
+{
+ uintptr_t res = name_ct;
+ size_t len = strlen( (char*)pzName );
+ uintptr_t idx;
+ /*
+ * Look for an exact match, but remember any partial matches.
+ * Multiple partial matches means we have an ambiguous match.
+ */
+ for (idx = 0; idx < name_ct; idx++) {
+ if (strncmp( (char*)paz_names[idx], (char*)pzName, len) == 0) {
+ if (paz_names[idx][len] == NUL)
+ return idx; /* full match */
+
+ if (res != name_ct) {
+ pz_enum_err_fmt = zAmbigKey;
+ option_usage_fp = stderr;
+ enumError( pOpts, pOD, paz_names, (int)name_ct );
+ }
+ res = idx; /* save partial match */
+ }
+ }
+
+ /*
+ * no partial match -> error
+ */
+ if (res == name_ct) {
+ pz_enum_err_fmt = zNoKey;
+ option_usage_fp = stderr;
+ enumError( pOpts, pOD, paz_names, (int)name_ct );
+ }
+
+ /*
+ * Return the matching index as a char* pointer.
+ * The result gets stashed in a char* pointer, so it will have to fit.
+ */
+ return res;
+}
+
+
+/*=export_func optionKeywordName
+ * what: Convert between enumeration values and strings
+ * private:
+ *
+ * arg: tOptDesc*, pOD, enumeration option description
+ * arg: unsigned int, enum_val, the enumeration value to map
+ *
+ * ret_type: char const*
+ * ret_desc: the enumeration name from const memory
+ *
+ * doc: This converts an enumeration value into the matching string.
+=*/
+char const*
+optionKeywordName(
+ tOptDesc* pOD,
+ unsigned int enum_val )
+{
+ tOptDesc od;
+
+ od.optArg.argEnum = enum_val;
+ (*(pOD->pOptProc))( (void*)(2UL), &od );
+ return od.optArg.argString;
+}
+
+
+/*=export_func optionEnumerationVal
+ * what: Convert from a string to an enumeration value
+ * private:
+ *
+ * arg: tOptions*, pOpts, the program options descriptor
+ * arg: tOptDesc*, pOD, enumeration option description
+ * arg: char const * const *, paz_names, list of enumeration names
+ * arg: unsigned int, name_ct, number of names in list
+ *
+ * ret_type: uintptr_t
+ * ret_desc: the enumeration value
+ *
+ * doc: This converts the optArg.argString string from the option description
+ * into the index corresponding to an entry in the name list.
+ * This will match the generated enumeration value.
+ * Full matches are always accepted. Partial matches are accepted
+ * if there is only one partial match.
+=*/
+uintptr_t
+optionEnumerationVal(
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC * const * paz_names,
+ unsigned int name_ct )
+{
+ uintptr_t res = 0UL;
+
+ /*
+ * IF the program option descriptor pointer is invalid,
+ * then it is some sort of special request.
+ */
+ switch ((uintptr_t)pOpts) {
+ case 0UL:
+ /*
+ * print the list of enumeration names.
+ */
+ enumError( pOpts, pOD, paz_names, (int)name_ct );
+ break;
+
+ case 1UL:
+ {
+ unsigned int ix = pOD->optArg.argEnum;
+ /*
+ * print the name string.
+ */
+ if (ix >= name_ct)
+ printf( "INVALID-%d", ix );
+ else
+ fputs( paz_names[ ix ], stdout );
+
+ break;
+ }
+
+ case 2UL:
+ {
+ tSCC zInval[] = "*INVALID*";
+ unsigned int ix = pOD->optArg.argEnum;
+ /*
+ * Replace the enumeration value with the name string.
+ */
+ if (ix >= name_ct)
+ return (uintptr_t)zInval;
+
+ res = (uintptr_t)paz_names[ ix ];
+ break;
+ }
+
+ default:
+ res = findName( pOD->optArg.argString, pOpts, pOD, paz_names, name_ct );
+
+ if (pOD->fOptState & OPTST_ALLOC_ARG) {
+ AGFREE(pOD->optArg.argString);
+ pOD->fOptState &= ~OPTST_ALLOC_ARG;
+ pOD->optArg.argString = NULL;
+ }
+ }
+
+ return res;
+}
+
+
+/*=export_func optionSetMembers
+ * what: Convert between bit flag values and strings
+ * private:
+ *
+ * arg: tOptions*, pOpts, the program options descriptor
+ * arg: tOptDesc*, pOD, enumeration option description
+ * arg: char const * const *,
+ * paz_names, list of enumeration names
+ * arg: unsigned int, name_ct, number of names in list
+ *
+ * doc: This converts the optArg.argString string from the option description
+ * into the index corresponding to an entry in the name list.
+ * This will match the generated enumeration value.
+ * Full matches are always accepted. Partial matches are accepted
+ * if there is only one partial match.
+=*/
+void
+optionSetMembers(
+ tOptions* pOpts,
+ tOptDesc* pOD,
+ tCC* const * paz_names,
+ unsigned int name_ct )
+{
+ /*
+ * IF the program option descriptor pointer is invalid,
+ * then it is some sort of special request.
+ */
+ switch ((uintptr_t)pOpts) {
+ case 0UL:
+ /*
+ * print the list of enumeration names.
+ */
+ enumError( pOpts, pOD, paz_names, (int)name_ct );
+ return;
+
+ case 1UL:
+ {
+ /*
+ * print the name string.
+ */
+ uintptr_t bits = (uintptr_t)pOD->optCookie;
+ uintptr_t res = 0;
+ size_t len = 0;
+
+ while (bits != 0) {
+ if (bits & 1) {
+ if (len++ > 0) fputs( " | ", stdout );
+ fputs( paz_names[ res ], stdout );
+ }
+ if (++res >= name_ct) break;
+ bits >>= 1;
+ }
+ return;
+ }
+
+ case 2UL:
+ {
+ char* pz;
+ uintptr_t bits = (uintptr_t)pOD->optCookie;
+ uintptr_t res = 0;
+ size_t len = 0;
+
+ /*
+ * Replace the enumeration value with the name string.
+ * First, determine the needed length, then allocate and fill in.
+ */
+ while (bits != 0) {
+ if (bits & 1)
+ len += strlen( paz_names[ res ]) + 8;
+ if (++res >= name_ct) break;
+ bits >>= 1;
+ }
+
+ pOD->optArg.argString = pz = AGALOC( len, "enum name" );
+
+ /*
+ * Start by clearing all the bits. We want to turn off any defaults
+ * because we will be restoring to current state, not adding to
+ * the default set of bits.
+ */
+ strcpy( pz, "none" );
+ pz += 4;
+ bits = (uintptr_t)pOD->optCookie;
+ res = 0;
+ while (bits != 0) {
+ if (bits & 1) {
+ strcpy( pz, " + " );
+ strcpy( pz+3, paz_names[ res ]);
+ pz += strlen( paz_names[ res ]) + 3;
+ }
+ if (++res >= name_ct) break;
+ bits >>= 1;
+ }
+ return;
+ }
+
+ default:
+ break;
+ }
+
+ {
+ tCC* pzArg = pOD->optArg.argString;
+ uintptr_t res;
+ if ((pzArg == NULL) || (*pzArg == NUL)) {
+ pOD->optCookie = (void*)0;
+ return;
+ }
+
+ res = (uintptr_t)pOD->optCookie;
+ for (;;) {
+ tSCC zSpn[] = " ,|+\t\r\f\n";
+ int iv, len;
+
+ pzArg += strspn( pzArg, zSpn );
+ iv = (*pzArg == '!');
+ if (iv)
+ pzArg += strspn( pzArg+1, zSpn ) + 1;
+
+ len = strcspn( pzArg, zSpn );
+ if (len == 0)
+ break;
+
+ if ((len == 3) && (strncmp(pzArg, zAll, (size_t)3) == 0)) {
+ if (iv)
+ res = 0;
+ else res = ~0UL;
+ }
+ else if ((len == 4) && (strncmp(pzArg, zNone, (size_t)4) == 0)) {
+ if (! iv)
+ res = 0;
+ }
+ else do {
+ char* pz;
+ uintptr_t bit = strtoul( pzArg, &pz, 0 );
+
+ if (pz != pzArg + len) {
+ char z[ AO_NAME_SIZE ];
+ tCC* p;
+ if (*pz != NUL) {
+ if (len >= AO_NAME_LIMIT)
+ break;
+ strncpy( z, pzArg, (size_t)len );
+ z[len] = NUL;
+ p = z;
+ } else {
+ p = pzArg;
+ }
+
+ bit = 1UL << findName(p, pOpts, pOD, paz_names, name_ct);
+ }
+ if (iv)
+ res &= ~bit;
+ else res |= bit;
+ } while (0);
+
+ if (pzArg[len] == NUL)
+ break;
+ pzArg += len + 1;
+ }
+ if (name_ct < (8 * sizeof( uintptr_t ))) {
+ res &= (1UL << name_ct) - 1UL;
+ }
+
+ pOD->optCookie = (void*)res;
+ }
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/enumeration.c */
diff --git a/contrib/ntp/sntp/libopts/environment.c b/contrib/ntp/sntp/libopts/environment.c
new file mode 100644
index 0000000..9fb1550
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/environment.c
@@ -0,0 +1,279 @@
+
+/*
+ * $Id: environment.c,v 4.13 2007/04/15 19:01:18 bkorb Exp $
+ * Time-stamp: "2007-04-15 11:50:35 bkorb"
+ *
+ * This file contains all of the routines that must be linked into
+ * an executable to use the generated option processing. The optional
+ * routines are in separately compiled modules so that they will not
+ * necessarily be linked in.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+checkEnvOpt(tOptState * os, char * env_name,
+ tOptions* pOpts, teEnvPresetType type);
+/* = = = END-STATIC-FORWARD = = = */
+
+/*
+ * doPrognameEnv - check for preset values from the ${PROGNAME}
+ * environment variable. This is accomplished by parsing the text into
+ * tokens, temporarily replacing the arg vector and calling
+ * doImmediateOpts and/or doRegularOpts.
+ */
+LOCAL void
+doPrognameEnv( tOptions* pOpts, teEnvPresetType type )
+{
+ char const* pczOptStr = getenv( pOpts->pzPROGNAME );
+ token_list_t* pTL;
+ int sv_argc;
+ tAoUI sv_flag;
+ char** sv_argv;
+
+ /*
+ * IF there is no such environment variable
+ * *or* there is, but we are doing immediate opts and there are
+ * no immediate opts to do (--help inside $PROGNAME is silly,
+ * but --no-load-defs is not, so that is marked)
+ * THEN bail out now. (
+ */
+ if ( (pczOptStr == NULL)
+ || ( (type == ENV_IMM)
+ && ((pOpts->fOptSet & OPTPROC_HAS_IMMED) == 0) ) )
+ return;
+
+ /*
+ * Tokenize the string. If there's nothing of interest, we'll bail
+ * here immediately.
+ */
+ pTL = ao_string_tokenize( pczOptStr );
+ if (pTL == NULL)
+ return;
+
+ /*
+ * Substitute our $PROGNAME argument list for the real one
+ */
+ sv_argc = pOpts->origArgCt;
+ sv_argv = pOpts->origArgVect;
+ sv_flag = pOpts->fOptSet;
+
+ /*
+ * We add a bogus pointer to the start of the list. The program name
+ * has already been pulled from "argv", so it won't get dereferenced.
+ * The option scanning code will skip the "program name" at the start
+ * of this list of tokens, so we accommodate this way ....
+ */
+ pOpts->origArgVect = (char**)(pTL->tkn_list - 1);
+ pOpts->origArgCt = pTL->tkn_ct + 1;
+ pOpts->fOptSet &= ~OPTPROC_ERRSTOP;
+
+ pOpts->curOptIdx = 1;
+ pOpts->pzCurOpt = NULL;
+
+ switch (type) {
+ case ENV_IMM:
+ /*
+ * We know the OPTPROC_HAS_IMMED bit is set.
+ */
+ (void)doImmediateOpts( pOpts );
+ break;
+
+ case ENV_NON_IMM:
+ (void)doRegularOpts( pOpts );
+ break;
+
+ default:
+ /*
+ * Only to immediate opts if the OPTPROC_HAS_IMMED bit is set.
+ */
+ if (pOpts->fOptSet & OPTPROC_HAS_IMMED) {
+ (void)doImmediateOpts( pOpts );
+ pOpts->curOptIdx = 1;
+ pOpts->pzCurOpt = NULL;
+ }
+ (void)doRegularOpts( pOpts );
+ break;
+ }
+
+ /*
+ * Free up the temporary arg vector and restore the original program args.
+ */
+ free( pTL );
+ pOpts->origArgVect = sv_argv;
+ pOpts->origArgCt = sv_argc;
+ pOpts->fOptSet = sv_flag;
+}
+
+static void
+checkEnvOpt(tOptState * os, char * env_name,
+ tOptions* pOpts, teEnvPresetType type)
+{
+ os->pzOptArg = getenv( env_name );
+ if (os->pzOptArg == NULL)
+ return;
+
+ os->flags = OPTST_PRESET | OPTST_ALLOC_ARG | os->pOD->fOptState;
+ os->optType = TOPT_UNDEFINED;
+
+ if ( (os->pOD->pz_DisablePfx != NULL)
+ && (streqvcmp( os->pzOptArg, os->pOD->pz_DisablePfx ) == 0)) {
+ os->flags |= OPTST_DISABLED;
+ os->pzOptArg = NULL;
+ }
+
+ switch (type) {
+ case ENV_IMM:
+ /*
+ * Process only immediate actions
+ */
+ if (DO_IMMEDIATELY(os->flags))
+ break;
+ return;
+
+ case ENV_NON_IMM:
+ /*
+ * Process only NON immediate actions
+ */
+ if (DO_NORMALLY(os->flags) || DO_SECOND_TIME(os->flags))
+ break;
+ return;
+
+ default: /* process everything */
+ break;
+ }
+
+ /*
+ * Make sure the option value string is persistent and consistent.
+ *
+ * The interpretation of the option value depends
+ * on the type of value argument the option takes
+ */
+ if (os->pzOptArg != NULL) {
+ if (OPTST_GET_ARGTYPE(os->pOD->fOptState) == OPARG_TYPE_NONE) {
+ os->pzOptArg = NULL;
+ } else if ( (os->pOD->fOptState & OPTST_ARG_OPTIONAL)
+ && (*os->pzOptArg == NUL)) {
+ os->pzOptArg = NULL;
+ } else if (*os->pzOptArg == NUL) {
+ os->pzOptArg = zNil;
+ } else {
+ AGDUPSTR( os->pzOptArg, os->pzOptArg, "option argument" );
+ os->flags |= OPTST_ALLOC_ARG;
+ }
+ }
+
+ handleOption( pOpts, os );
+}
+
+/*
+ * doEnvPresets - check for preset values from the envrionment
+ * This routine should process in all, immediate or normal modes....
+ */
+LOCAL void
+doEnvPresets( tOptions* pOpts, teEnvPresetType type )
+{
+ int ct;
+ tOptState st;
+ char* pzFlagName;
+ size_t spaceLeft;
+ char zEnvName[ AO_NAME_SIZE ];
+
+ /*
+ * Finally, see if we are to look at the environment
+ * variables for initial values.
+ */
+ if ((pOpts->fOptSet & OPTPROC_ENVIRON) == 0)
+ return;
+
+ doPrognameEnv( pOpts, type );
+
+ ct = pOpts->presetOptCt;
+ st.pOD = pOpts->pOptDesc;
+
+ pzFlagName = zEnvName
+ + snprintf( zEnvName, sizeof( zEnvName ), "%s_", pOpts->pzPROGNAME );
+ spaceLeft = AO_NAME_SIZE - (pzFlagName - zEnvName) - 1;
+
+ for (;ct-- > 0; st.pOD++) {
+ /*
+ * If presetting is disallowed, then skip this entry
+ */
+ if ( ((st.pOD->fOptState & OPTST_NO_INIT) != 0)
+ || (st.pOD->optEquivIndex != NO_EQUIVALENT) )
+ continue;
+
+ /*
+ * IF there is no such environment variable,
+ * THEN skip this entry, too.
+ */
+ if (strlen( st.pOD->pz_NAME ) >= spaceLeft)
+ continue;
+
+ /*
+ * Set up the option state
+ */
+ strcpy( pzFlagName, st.pOD->pz_NAME );
+ checkEnvOpt(&st, zEnvName, pOpts, type);
+ }
+
+ /*
+ * Special handling for ${PROGNAME_LOAD_OPTS}
+ */
+ if (pOpts->specOptIdx.save_opts != 0) {
+ st.pOD = pOpts->pOptDesc + pOpts->specOptIdx.save_opts + 1;
+ strcpy( pzFlagName, st.pOD->pz_NAME );
+ checkEnvOpt(&st, zEnvName, pOpts, type);
+ }
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/environment.c */
diff --git a/contrib/ntp/sntp/libopts/genshell.c b/contrib/ntp/sntp/libopts/genshell.c
new file mode 100644
index 0000000..de098a5
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/genshell.c
@@ -0,0 +1,354 @@
+/* -*- buffer-read-only: t -*- vi: set ro:
+ *
+ * DO NOT EDIT THIS FILE (genshell.c)
+ *
+ * It has been AutoGen-ed Saturday May 5, 2007 at 12:02:35 PM PDT
+ * From the definitions genshell.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This source file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * genshellopt author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * genshellopt copyright 1999-2007 Bruce Korb - all rights reserved
+ *
+ * genshellopt is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * genshellopt 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with genshellopt. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#include <limits.h>
+
+#define OPTION_CODE_COMPILE 1
+#include "genshell.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+tSCC zCopyright[] =
+ "genshellopt copyright (c) 1999-2007 Bruce Korb, all rights reserved";
+tSCC zCopyrightNotice[] =
+ "genshellopt is free software; you can redistribute it and/or\n\
+modify it under the terms of the GNU Lesser General Public\n\
+License as published by the Free Software Foundation; either\n\
+version 2.1 of the License, or (at your option) any later version.\n\n\
+genshellopt is distributed in the hope that it will be useful,\n\
+but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n\
+Lesser General Public License for more details.\n\n\
+You should have received a copy of the GNU Lesser General Public\n\
+License along with genshellopt. If not, write to:\n\
+\tThe Free Software Foundation, Inc.,\n\
+\t51 Franklin Street, Fifth Floor\n\
+\tBoston, MA 02110-1301, USA.";
+extern tUsageProc genshelloptUsage;
+
+#ifndef NULL
+# define NULL 0
+#endif
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+/*
+ * Script option description:
+ */
+tSCC zScriptText[] =
+ "Output Script File";
+tSCC zScript_NAME[] = "SCRIPT";
+tSCC zScript_Name[] = "script";
+#define SCRIPT_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Shell option description:
+ */
+tSCC zShellText[] =
+ "Shell name (follows \"#!\" magic)";
+tSCC zShell_NAME[] = "SHELL";
+tSCC zNotShell_Name[] = "no-shell";
+tSCC zNotShell_Pfx[] = "no";
+#define zShell_Name (zNotShell_Name + 3)
+#define SHELL_FLAGS (OPTST_INITENABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+/*
+ * Help/More_Help/Version option descriptions:
+ */
+tSCC zHelpText[] = "Display usage information and exit";
+tSCC zHelp_Name[] = "help";
+
+tSCC zMore_HelpText[] = "Extended usage information passed thru pager";
+tSCC zMore_Help_Name[] = "more-help";
+
+tSCC zVersionText[] = "Output version information and exit";
+tSCC zVersion_Name[] = "version";
+/*
+ * Declare option callback procedures
+ */
+extern tOptProc
+ optionPagedUsage, optionPrintVersion;
+static tOptProc
+ doUsageOpt;
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Genshellopt Option Descriptions.
+ */
+static tOptDesc optDesc[ OPTION_CT ] = {
+ { /* entry idx, value */ 0, VALUE_OPT_SCRIPT,
+ /* equiv idx, value */ 0, VALUE_OPT_SCRIPT,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SCRIPT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zScriptText, zScript_NAME, zScript_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 1, VALUE_OPT_SHELL,
+ /* equiv idx, value */ 1, VALUE_OPT_SHELL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SHELL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zShellText, zShell_NAME, zShell_Name,
+ /* disablement strs */ zNotShell_Name, zNotShell_Pfx },
+
+#ifdef NO_OPTIONAL_OPT_ARGS
+# define VERSION_OPT_FLAGS OPTST_IMM | OPTST_NO_INIT
+#else
+# define VERSION_OPT_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+ OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
+#endif
+
+ { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ VERSION_OPT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionPrintVersion,
+ /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
+ /* disablement strs */ NULL, NULL },
+
+#undef VERSION_OPT_FLAGS
+
+
+ { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ doUsageOpt,
+ /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionPagedUsage,
+ /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
+ /* disablement strs */ NULL, NULL }
+};
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Genshellopt Option Environment
+ */
+tSCC zPROGNAME[] = "GENSHELLOPT";
+tSCC zUsageTitle[] =
+"genshellopt - Generate Shell Option Processing Script - Ver. 1\n\
+USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n";
+#define zRcName NULL
+#define apzHomeList NULL
+
+tSCC zBugsAddr[] = "autogen-users@lists.sourceforge.net";
+tSCC zExplain[] = "\n\
+Note that `shell' is only useful if the output file does not already\n\
+exist. If it does, then the shell name and optional first argument\n\
+will be extracted from the script file.\n";
+tSCC zDetail[] = "\n\
+If the script file already exists and contains Automated Option Processing\n\
+text, the second line of the file through the ending tag will be replaced\n\
+by the newly generated text. The first `#!' line will be regenerated.\n";
+tSCC zFullVersion[] = GENSHELLOPT_FULL_VERSION;
+/* extracted from optcode.tpl near line 408 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE
+ static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+tOptions genshelloptOptions = {
+ OPTIONS_STRUCT_VERSION,
+ 0, NULL, /* original argc + argv */
+ ( OPTPROC_BASE
+ + OPTPROC_ERRSTOP
+ + OPTPROC_SHORTOPT
+ + OPTPROC_LONGOPT
+ + OPTPROC_NO_REQ_OPT
+ + OPTPROC_NEGATIONS
+ + OPTPROC_NO_ARGS ),
+ 0, NULL, /* current option index, current option */
+ NULL, NULL, zPROGNAME,
+ zRcName, zCopyright, zCopyrightNotice,
+ zFullVersion, apzHomeList, zUsageTitle,
+ zExplain, zDetail, optDesc,
+ zBugsAddr, /* address to send bugs to */
+ NULL, NULL, /* extensions/saved state */
+ genshelloptUsage, /* usage procedure */
+ translate_option_strings, /* translation procedure */
+ /*
+ * Indexes to special options
+ */
+ { INDEX_OPT_MORE_HELP,
+ 0 /* no option state saving */,
+ NO_EQUIVALENT /* index of '-#' option */,
+ NO_EQUIVALENT /* index of default opt */
+ },
+ 5 /* full option count */, 2 /* user option count */
+};
+
+/*
+ * Create the static procedure(s) declared above.
+ */
+static void
+doUsageOpt(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ USAGE( EXIT_SUCCESS );
+}
+/* extracted from optcode.tpl near line 514 */
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext( char const* pz );
+static void coerce_it(void** s);
+
+static char*
+AO_gettext( char const* pz )
+{
+ char* pzRes;
+ if (pz == NULL)
+ return NULL;
+ pzRes = _(pz);
+ if (pzRes == pz)
+ return pzRes;
+ pzRes = strdup( pzRes );
+ if (pzRes == NULL) {
+ fputs( _("No memory for duping translated strings\n"), stderr );
+ exit( EXIT_FAILURE );
+ }
+ return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s); }
+#define COERSION(_f) \
+ coerce_it((void*)&(genshelloptOptions._f))
+
+/*
+ * This invokes the translation code (e.g. gettext(3)).
+ */
+static void
+translate_option_strings( void )
+{
+ /*
+ * Guard against re-translation. It won't work. The strings will have
+ * been changed by the first pass through this code. One shot only.
+ */
+ if (option_usage_text.field_ct == 0)
+ return;
+ /*
+ * Do the translations. The first pointer follows the field count field.
+ * The field count field is the size of a pointer.
+ */
+ {
+ char** ppz = (char**)(void*)&(option_usage_text);
+ int ix = option_usage_text.field_ct;
+
+ do {
+ ppz++;
+ *ppz = AO_gettext(*ppz);
+ } while (--ix > 0);
+ }
+ option_usage_text.field_ct = 0;
+
+ {
+ tOptDesc* pOD = genshelloptOptions.pOptDesc;
+ int ix = genshelloptOptions.optCt;
+
+ for (;;) {
+ pOD->pzText = AO_gettext(pOD->pzText);
+ pOD->pz_NAME = AO_gettext(pOD->pz_NAME);
+ pOD->pz_Name = AO_gettext(pOD->pz_Name);
+ pOD->pz_DisableName = AO_gettext(pOD->pz_DisableName);
+ pOD->pz_DisablePfx = AO_gettext(pOD->pz_DisablePfx);
+ if (--ix <= 0)
+ break;
+ pOD++;
+ }
+ }
+ COERSION(pzCopyright);
+ COERSION(pzCopyNotice);
+ COERSION(pzFullVersion);
+ COERSION(pzUsageTitle);
+ COERSION(pzExplain);
+ COERSION(pzDetail);
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef __cplusplus
+}
+#endif
+/* genshell.c ends here */
diff --git a/contrib/ntp/sntp/libopts/genshell.h b/contrib/ntp/sntp/libopts/genshell.h
new file mode 100644
index 0000000..b57677d
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/genshell.h
@@ -0,0 +1,149 @@
+/* -*- buffer-read-only: t -*- vi: set ro:
+ *
+ * DO NOT EDIT THIS FILE (genshell.h)
+ *
+ * It has been AutoGen-ed Saturday May 5, 2007 at 12:02:35 PM PDT
+ * From the definitions genshell.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This header file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * genshellopt author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * genshellopt copyright 1999-2007 Bruce Korb - all rights reserved
+ *
+ * genshellopt is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * genshellopt 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with genshellopt. If not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor
+ * Boston, MA 02110-1301, USA.
+ */
+/*
+ * This file contains the programmatic interface to the Automated
+ * Options generated for the genshellopt program.
+ * These macros are documented in the AutoGen info file in the
+ * "AutoOpts" chapter. Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_GENSHELL_H_GUARD
+#define AUTOOPTS_GENSHELL_H_GUARD
+#include <autoopts/options.h>
+
+/*
+ * Ensure that the library used for compiling this generated header is at
+ * least as new as the version current when the header template was released
+ * (not counting patch version increments). Also ensure that the oldest
+ * tolerable version is at least as old as what was current when the header
+ * template was released.
+ */
+#define AO_TEMPLATE_VERSION 118784
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+ Choke Me.
+#endif
+
+/*
+ * Enumeration of each option:
+ */
+typedef enum {
+ INDEX_OPT_SCRIPT = 0,
+ INDEX_OPT_SHELL = 1,
+ INDEX_OPT_VERSION = 2,
+ INDEX_OPT_HELP = 3,
+ INDEX_OPT_MORE_HELP = 4
+} teOptIndex;
+
+#define OPTION_CT 5
+#define GENSHELLOPT_VERSION "1"
+#define GENSHELLOPT_FULL_VERSION "genshellopt - Generate Shell Option Processing Script - Ver. 1"
+
+/*
+ * Interface defines for all options. Replace "n" with the UPPER_CASED
+ * option name (as in the teOptIndex enumeration above).
+ * e.g. HAVE_OPT( SCRIPT )
+ */
+#define DESC(n) (genshelloptOptions.pOptDesc[INDEX_OPT_## n])
+#define HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define OPT_ARG(n) (DESC(n).optArg.argString)
+#define STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define COUNT_OPT(n) (DESC(n).optOccCt)
+#define ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define CLEAR_OPT(n) STMTS( \
+ DESC(n).fOptState &= OPTST_PERSISTENT_MASK; \
+ if ( (DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+ DESC(n).fOptState |= OPTST_DISABLED; \
+ DESC(n).optCookie = NULL )
+
+/*
+ * Interface defines for specific options.
+ */
+#define VALUE_OPT_SCRIPT 'o'
+#define VALUE_OPT_SHELL 's'
+
+#define VALUE_OPT_VERSION 'v'
+#define VALUE_OPT_HELP '?'
+#define VALUE_OPT_MORE_HELP '!'
+/*
+ * Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR STMTS( genshelloptOptions.fOptSet &= ~OPTPROC_ERRSTOP )
+#define ERRSTOP_OPTERR STMTS( genshelloptOptions.fOptSet |= OPTPROC_ERRSTOP )
+#define RESTART_OPT(n) STMTS( \
+ genshelloptOptions.curOptIdx = (n); \
+ genshelloptOptions.pzCurOpt = NULL )
+#define START_OPT RESTART_OPT(1)
+#define USAGE(c) (*genshelloptOptions.pUsageProc)( &genshelloptOptions, c )
+/* extracted from opthead.tpl near line 360 */
+
+/* * * * * *
+ *
+ * Declare the genshellopt option descriptor.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern tOptions genshelloptOptions;
+
+#ifndef _
+# if ENABLE_NLS
+# include <stdio.h>
+ static inline char* aoGetsText( char const* pz ) {
+ if (pz == NULL) return NULL;
+ return (char*)gettext( pz );
+ }
+# define _(s) aoGetsText(s)
+# else /* ENABLE_NLS */
+# define _(s) s
+# endif /* ENABLE_NLS */
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_GENSHELL_H_GUARD */
+/* genshell.h ends here */
diff --git a/contrib/ntp/sntp/libopts/libopts.c b/contrib/ntp/sntp/libopts/libopts.c
new file mode 100644
index 0000000..feb7557
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/libopts.c
@@ -0,0 +1,30 @@
+#define AUTOOPTS_INTERNAL
+#include "compat/compat.h"
+#define LOCAL static
+#include "autoopts/options.h"
+#include "autoopts/usage-txt.h"
+#include "genshell.h"
+#include "autoopts.h"
+#include "proto.h"
+#include "autoopts.c"
+#include "boolean.c"
+#include "configfile.c"
+#include "cook.c"
+#include "enumeration.c"
+#include "environment.c"
+#include "genshell.c"
+#include "load.c"
+#include "makeshell.c"
+#include "nested.c"
+#include "numeric.c"
+#include "pgusage.c"
+#include "putshell.c"
+#include "restore.c"
+#include "save.c"
+#include "sort.c"
+#include "stack.c"
+#include "streqvcmp.c"
+#include "text_mmap.c"
+#include "tokenize.c"
+#include "usage.c"
+#include "version.c"
diff --git a/contrib/ntp/sntp/libopts/load.c b/contrib/ntp/sntp/libopts/load.c
new file mode 100644
index 0000000..eeeb125
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/load.c
@@ -0,0 +1,563 @@
+
+/*
+ * $Id: load.c,v 4.20 2007/02/04 22:17:39 bkorb Exp $
+ * Time-stamp: "2007-02-04 11:54:57 bkorb"
+ *
+ * This file contains the routines that deal with processing text strings
+ * for options, either from a NUL-terminated string passed in or from an
+ * rc/ini file.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+tOptionLoadMode option_load_mode = OPTION_LOAD_UNCOOKED;
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static ag_bool
+insertProgramPath(
+ char* pzBuf,
+ int bufSize,
+ tCC* pzName,
+ tCC* pzProgPath );
+
+static ag_bool
+insertEnvVal(
+ char* pzBuf,
+ int bufSize,
+ tCC* pzName,
+ tCC* pzProgPath );
+
+static char*
+assembleArgValue( char* pzTxt, tOptionLoadMode mode );
+/* = = = END-STATIC-FORWARD = = = */
+
+/*=export_func optionMakePath
+ * private:
+ *
+ * what: translate and construct a path
+ * arg: + char* + pzBuf + The result buffer +
+ * arg: + int + bufSize + The size of this buffer +
+ * arg: + char const* + pzName + The input name +
+ * arg: + char const* + pzProgPath + The full path of the current program +
+ *
+ * ret-type: ag_bool
+ * ret-desc: AG_TRUE if the name was handled, otherwise AG_FALSE.
+ * If the name does not start with ``$'', then it is handled
+ * simply by copying the input name to the output buffer and
+ * resolving the name with either @code{canonicalize_file_name(3GLIBC)}
+ * or @code{realpath(3C)}.
+ *
+ * doc:
+ *
+ * This routine will copy the @code{pzName} input name into the @code{pzBuf}
+ * output buffer, carefully not exceeding @code{bufSize} bytes. If the
+ * first character of the input name is a @code{'$'} character, then there
+ * is special handling:
+ * @*
+ * @code{$$} is replaced with the directory name of the @code{pzProgPath},
+ * searching @code{$PATH} if necessary.
+ * @*
+ * @code{$@} is replaced with the AutoGen package data installation directory
+ * (aka @code{pkgdatadir}).
+ * @*
+ * @code{$NAME} is replaced by the contents of the @code{NAME} environment
+ * variable. If not found, the search fails.
+ *
+ * Please note: both @code{$$} and @code{$NAME} must be at the start of the
+ * @code{pzName} string and must either be the entire string or be followed
+ * by the @code{'/'} (backslash on windows) character.
+ *
+ * err: @code{AG_FALSE} is returned if:
+ * @*
+ * @bullet{} The input name exceeds @code{bufSize} bytes.
+ * @*
+ * @bullet{} @code{$$}, @code{$@@} or @code{$NAME} is not the full string
+ * and the next character is not '/'.
+ * @*
+ * @bullet{} libopts was built without PKGDATADIR defined and @code{$@@}
+ * was specified.
+ * @*
+ * @bullet{} @code{NAME} is not a known environment variable
+ * @*
+ * @bullet{} @code{canonicalize_file_name} or @code{realpath} return
+ * errors (cannot resolve the resulting path).
+=*/
+ag_bool
+optionMakePath(
+ char* pzBuf,
+ int bufSize,
+ tCC* pzName,
+ tCC* pzProgPath )
+{
+ size_t name_len = strlen( pzName );
+
+# ifndef PKGDATADIR
+# define PKGDATADIR ""
+# endif
+
+ tSCC pkgdatadir[] = PKGDATADIR;
+
+ ag_bool res = AG_TRUE;
+
+ if (bufSize <= name_len)
+ return AG_FALSE;
+
+ /*
+ * IF not an environment variable, just copy the data
+ */
+ if (*pzName != '$') {
+ tCC* pzS = pzName;
+ char* pzD = pzBuf;
+ int ct = bufSize;
+
+ for (;;) {
+ if ( (*(pzD++) = *(pzS++)) == NUL)
+ break;
+ if (--ct <= 0)
+ return AG_FALSE;
+ }
+ }
+
+ /*
+ * IF the name starts with "$$", then it must be "$$" or
+ * it must start with "$$/". In either event, replace the "$$"
+ * with the path to the executable and append a "/" character.
+ */
+ else switch (pzName[1]) {
+ case NUL:
+ return AG_FALSE;
+
+ case '$':
+ res = insertProgramPath( pzBuf, bufSize, pzName, pzProgPath );
+ break;
+
+ case '@':
+ if (pkgdatadir[0] == NUL)
+ return AG_FALSE;
+
+ if (name_len + sizeof (pkgdatadir) > bufSize)
+ return AG_FALSE;
+
+ strcpy(pzBuf, pkgdatadir);
+ strcpy(pzBuf + sizeof(pkgdatadir) - 1, pzName + 2);
+ break;
+
+ default:
+ res = insertEnvVal( pzBuf, bufSize, pzName, pzProgPath );
+ }
+
+ if (! res)
+ return AG_FALSE;
+
+#if defined(HAVE_CANONICALIZE_FILE_NAME)
+ {
+ char* pz = canonicalize_file_name(pzBuf);
+ if (pz == NULL)
+ return AG_FALSE;
+ if (strlen(pz) < bufSize)
+ strcpy(pzBuf, pz);
+ free(pz);
+ }
+
+#elif defined(HAVE_REALPATH)
+ {
+ char z[ PATH_MAX+1 ];
+
+ if (realpath( pzBuf, z ) == NULL)
+ return AG_FALSE;
+
+ if (strlen(z) < bufSize)
+ strcpy( pzBuf, z );
+ }
+#endif
+
+ return AG_TRUE;
+}
+
+
+static ag_bool
+insertProgramPath(
+ char* pzBuf,
+ int bufSize,
+ tCC* pzName,
+ tCC* pzProgPath )
+{
+ tCC* pzPath;
+ tCC* pz;
+ int skip = 2;
+
+ switch (pzName[2]) {
+ case DIRCH:
+ skip = 3;
+ case NUL:
+ break;
+ default:
+ return AG_FALSE;
+ }
+
+ /*
+ * See if the path is included in the program name.
+ * If it is, we're done. Otherwise, we have to hunt
+ * for the program using "pathfind".
+ */
+ if (strchr( pzProgPath, DIRCH ) != NULL)
+ pzPath = pzProgPath;
+ else {
+ pzPath = pathfind( getenv( "PATH" ), (char*)pzProgPath, "rx" );
+
+ if (pzPath == NULL)
+ return AG_FALSE;
+ }
+
+ pz = strrchr( pzPath, DIRCH );
+
+ /*
+ * IF we cannot find a directory name separator,
+ * THEN we do not have a path name to our executable file.
+ */
+ if (pz == NULL)
+ return AG_FALSE;
+
+ pzName += skip;
+
+ /*
+ * Concatenate the file name to the end of the executable path.
+ * The result may be either a file or a directory.
+ */
+ if ((pz - pzPath)+1 + strlen(pzName) >= bufSize)
+ return AG_FALSE;
+
+ memcpy( pzBuf, pzPath, (size_t)((pz - pzPath)+1) );
+ strcpy( pzBuf + (pz - pzPath) + 1, pzName );
+
+ /*
+ * If the "pzPath" path was gotten from "pathfind()", then it was
+ * allocated and we need to deallocate it.
+ */
+ if (pzPath != pzProgPath)
+ free( (void*)pzPath );
+ return AG_TRUE;
+}
+
+
+static ag_bool
+insertEnvVal(
+ char* pzBuf,
+ int bufSize,
+ tCC* pzName,
+ tCC* pzProgPath )
+{
+ char* pzDir = pzBuf;
+
+ for (;;) {
+ int ch = (int)*++pzName;
+ if (! ISNAMECHAR( ch ))
+ break;
+ *(pzDir++) = (char)ch;
+ }
+
+ if (pzDir == pzBuf)
+ return AG_FALSE;
+
+ *pzDir = NUL;
+
+ pzDir = getenv( pzBuf );
+
+ /*
+ * Environment value not found -- skip the home list entry
+ */
+ if (pzDir == NULL)
+ return AG_FALSE;
+
+ if (strlen( pzDir ) + 1 + strlen( pzName ) >= bufSize)
+ return AG_FALSE;
+
+ sprintf( pzBuf, "%s%s", pzDir, pzName );
+ return AG_TRUE;
+}
+
+
+LOCAL void
+mungeString( char* pzTxt, tOptionLoadMode mode )
+{
+ char* pzE;
+
+ if (mode == OPTION_LOAD_KEEP)
+ return;
+
+ if (isspace( (int)*pzTxt )) {
+ char* pzS = pzTxt;
+ char* pzD = pzTxt;
+ while (isspace( (int)*++pzS )) ;
+ while ((*(pzD++) = *(pzS++)) != NUL) ;
+ pzE = pzD-1;
+ } else
+ pzE = pzTxt + strlen( pzTxt );
+
+ while ((pzE > pzTxt) && isspace( (int)pzE[-1] )) pzE--;
+ *pzE = NUL;
+
+ if (mode == OPTION_LOAD_UNCOOKED)
+ return;
+
+ switch (*pzTxt) {
+ default: return;
+ case '"':
+ case '\'': break;
+ }
+
+ switch (pzE[-1]) {
+ default: return;
+ case '"':
+ case '\'': break;
+ }
+
+ (void)ao_string_cook( pzTxt, NULL );
+}
+
+
+static char*
+assembleArgValue( char* pzTxt, tOptionLoadMode mode )
+{
+ tSCC zBrk[] = " \t:=";
+ char* pzEnd = strpbrk( pzTxt, zBrk );
+ int space_break;
+
+ /*
+ * Not having an argument to a configurable name is okay.
+ */
+ if (pzEnd == NULL)
+ return pzTxt + strlen(pzTxt);
+
+ /*
+ * If we are keeping all whitespace, then the modevalue starts with the
+ * character that follows the end of the configurable name, regardless
+ * of which character caused it.
+ */
+ if (mode == OPTION_LOAD_KEEP) {
+ *(pzEnd++) = NUL;
+ return pzEnd;
+ }
+
+ /*
+ * If the name ended on a white space character, remember that
+ * because we'll have to skip over an immediately following ':' or '='
+ * (and the white space following *that*).
+ */
+ space_break = isspace((int)*pzEnd);
+ *(pzEnd++) = NUL;
+ while (isspace((int)*pzEnd)) pzEnd++;
+ if (space_break && ((*pzEnd == ':') || (*pzEnd == '=')))
+ while (isspace((int)*++pzEnd)) ;
+
+ return pzEnd;
+}
+
+
+/*
+ * Load an option from a block of text. The text must start with the
+ * configurable/option name and be followed by its associated value.
+ * That value may be processed in any of several ways. See "tOptionLoadMode"
+ * in autoopts.h.
+ */
+LOCAL void
+loadOptionLine(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzLine,
+ tDirection direction,
+ tOptionLoadMode load_mode )
+{
+ while (isspace( (int)*pzLine )) pzLine++;
+
+ {
+ char* pzArg = assembleArgValue( pzLine, load_mode );
+
+ if (! SUCCESSFUL( longOptionFind( pOpts, pzLine, pOS )))
+ return;
+ if (pOS->flags & OPTST_NO_INIT)
+ return;
+ pOS->pzOptArg = pzArg;
+ }
+
+ switch (pOS->flags & (OPTST_IMM|OPTST_DISABLE_IMM)) {
+ case 0:
+ /*
+ * The selected option has no immediate action.
+ * THEREFORE, if the direction is PRESETTING
+ * THEN we skip this option.
+ */
+ if (PRESETTING(direction))
+ return;
+ break;
+
+ case OPTST_IMM:
+ if (PRESETTING(direction)) {
+ /*
+ * We are in the presetting direction with an option we handle
+ * immediately for enablement, but normally for disablement.
+ * Therefore, skip if disabled.
+ */
+ if ((pOS->flags & OPTST_DISABLED) == 0)
+ return;
+ } else {
+ /*
+ * We are in the processing direction with an option we handle
+ * immediately for enablement, but normally for disablement.
+ * Therefore, skip if NOT disabled.
+ */
+ if ((pOS->flags & OPTST_DISABLED) != 0)
+ return;
+ }
+ break;
+
+ case OPTST_DISABLE_IMM:
+ if (PRESETTING(direction)) {
+ /*
+ * We are in the presetting direction with an option we handle
+ * immediately for disablement, but normally for disablement.
+ * Therefore, skip if NOT disabled.
+ */
+ if ((pOS->flags & OPTST_DISABLED) != 0)
+ return;
+ } else {
+ /*
+ * We are in the processing direction with an option we handle
+ * immediately for disablement, but normally for disablement.
+ * Therefore, skip if disabled.
+ */
+ if ((pOS->flags & OPTST_DISABLED) == 0)
+ return;
+ }
+ break;
+
+ case OPTST_IMM|OPTST_DISABLE_IMM:
+ /*
+ * The selected option is always for immediate action.
+ * THEREFORE, if the direction is PROCESSING
+ * THEN we skip this option.
+ */
+ if (PROCESSING(direction))
+ return;
+ break;
+ }
+
+ /*
+ * Fix up the args.
+ */
+ if (OPTST_GET_ARGTYPE(pOS->pOD->fOptState) == OPARG_TYPE_NONE) {
+ if (*pOS->pzOptArg != NUL)
+ return;
+ pOS->pzOptArg = NULL;
+
+ } else if (pOS->pOD->fOptState & OPTST_ARG_OPTIONAL) {
+ if (*pOS->pzOptArg == NUL)
+ pOS->pzOptArg = NULL;
+ else {
+ AGDUPSTR( pOS->pzOptArg, pOS->pzOptArg, "option argument" );
+ pOS->flags |= OPTST_ALLOC_ARG;
+ }
+
+ } else {
+ if (*pOS->pzOptArg == NUL)
+ pOS->pzOptArg = zNil;
+ else {
+ AGDUPSTR( pOS->pzOptArg, pOS->pzOptArg, "option argument" );
+ pOS->flags |= OPTST_ALLOC_ARG;
+ }
+ }
+
+ {
+ tOptionLoadMode sv = option_load_mode;
+ option_load_mode = load_mode;
+ handleOption( pOpts, pOS );
+ option_load_mode = sv;
+ }
+}
+
+
+/*=export_func optionLoadLine
+ *
+ * what: process a string for an option name and value
+ *
+ * arg: tOptions*, pOpts, program options descriptor
+ * arg: char const*, pzLine, NUL-terminated text
+ *
+ * doc:
+ *
+ * This is a client program callable routine for setting options from, for
+ * example, the contents of a file that they read in. Only one option may
+ * appear in the text. It will be treated as a normal (non-preset) option.
+ *
+ * When passed a pointer to the option struct and a string, it will find
+ * the option named by the first token on the string and set the option
+ * argument to the remainder of the string. The caller must NUL terminate
+ * the string. Any embedded new lines will be included in the option
+ * argument. If the input looks like one or more quoted strings, then the
+ * input will be "cooked". The "cooking" is identical to the string
+ * formation used in AutoGen definition files (@pxref{basic expression}),
+ * except that you may not use backquotes.
+ *
+ * err: Invalid options are silently ignored. Invalid option arguments
+ * will cause a warning to print, but the function should return.
+=*/
+void
+optionLoadLine(
+ tOptions* pOpts,
+ tCC* pzLine )
+{
+ tOptState st = OPTSTATE_INITIALIZER(SET);
+ char* pz;
+ AGDUPSTR( pz, pzLine, "user option line" );
+ loadOptionLine( pOpts, &st, pz, DIRECTION_PROCESS, OPTION_LOAD_COOKED );
+ AGFREE( pz );
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/load.c */
diff --git a/contrib/ntp/sntp/libopts/m4/libopts.m4 b/contrib/ntp/sntp/libopts/m4/libopts.m4
new file mode 100644
index 0000000..adc3235
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/m4/libopts.m4
@@ -0,0 +1,509 @@
+dnl -*- buffer-read-only: t -*- vi: set ro:
+dnl
+dnl DO NOT EDIT THIS FILE (libopts.m4)
+dnl
+dnl It has been AutoGen-ed Saturday May 5, 2007 at 12:02:37 PM PDT
+dnl From the definitions libopts.def
+dnl and the template file conftest.tpl
+dnl
+dnl do always before generated macros:
+dnl
+AC_DEFUN([INVOKE_LIBOPTS_MACROS_FIRST],[
+[if test X${INVOKE_LIBOPTS_MACROS_FIRST_done} != Xyes ; then]
+ # =================
+ # AC_HEADER_STDC
+ # =================
+ AC_HEADER_STDC
+ # =================
+ # AC_HEADER_DIRENT
+ # =================
+ AC_HEADER_DIRENT
+
+ # =================
+ # AC_CHECK_HEADERS
+ # =================
+ AC_CHECK_HEADERS(dlfcn.h errno.h fcntl.h libgen.h memory.h netinet/in.h \
+ setjmp.h sys/mman.h sys/param.h sys/poll.h sys/procset.h sys/select.h \
+ sys/socket.h sys/stropts.h sys/time.h sys/un.h sys/wait.h unistd.h \
+ utime.h sysexits.h)
+
+ # --------------------------------------------
+ # Verify certain entries from AC_CHECK_HEADERS
+ # --------------------------------------------
+ [for f in sys_types sys_mman sys_param sys_stat sys_wait \
+ string errno stdlib memory setjmp
+ do eval as_ac_var=\${ac_cv_header_${f}_h+set}
+ test "${as_ac_var}" = set] || \
+ AC_MSG_ERROR([You must have ${f}.h on your system])
+ done
+
+ # ================================================
+ # AC_CHECK_HEADERS: stdarg.h is present define HAVE_STDARG_H, otherwise
+ # if varargs.h is present define HAVE_VARARGS_H.
+ # ================================================
+ AC_CHECK_HEADERS(stdarg.h varargs.h, break)
+ [if test `eval echo '${'$as_ac_Header'}'` != yes; then]
+ AC_MSG_ERROR([You must have stdarg.h or varargs.h on your system])
+ fi
+
+ # ================================================
+ # Similarly for the string.h and strings.h headers
+ # ================================================
+ AC_CHECK_HEADERS(string.h strings.h, break)
+ [if test `eval echo '${'$as_ac_Header'}'` != yes; then]
+ AC_MSG_ERROR([You must have string.h or strings.h on your system])
+ fi
+
+ # =====================
+ # ...and limits headers
+ # =====================
+ AC_CHECK_HEADERS(limits.h sys/limits.h values.h, break)
+ [if test `eval echo '${'$as_ac_Header'}'` != yes; then]
+ AC_MSG_ERROR([You must have one of limits.h, sys/limits.h or values.h])
+ fi
+
+ # ========================
+ # ...and int types headers
+ # ========================
+ AC_CHECK_HEADERS(stdint.h inttypes.h, break)
+ AC_CHECK_TYPES([int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t,
+ intptr_t, uint_t])
+
+ # ====================
+ # uintptr type & sizes
+ # ====================
+ AC_CHECK_TYPES([uintptr_t], ,
+ [AC_DEFINE([uintptr_t], unsigned long,
+ [Alternate uintptr_t for systems without it.])])
+ AC_CHECK_SIZEOF(char*, 4)
+ AC_CHECK_SIZEOF(int, 4)
+ AC_CHECK_SIZEOF(long, 4)
+ AC_CHECK_SIZEOF(short, 2)
+
+ # ----------------------------------------------------------------------
+ # AC_CHECK_LIB for SVR4 libgen, and use it if it defines pathfind.
+ # ----------------------------------------------------------------------
+ AC_CHECK_LIB(gen, pathfind)
+ AC_FUNC_VPRINTF
+ AC_CHECK_FUNCS([mmap canonicalize_file_name snprintf strdup strchr strrchr])
+[ INVOKE_LIBOPTS_MACROS_FIRST_done=yes
+fi]])
+
+dnl
+dnl @synopsis INVOKE_LIBOPTS_MACROS
+dnl
+dnl This macro will invoke the AutoConf macros specified in libopts.def
+dnl that have not been disabled with "omit-invocation".
+dnl
+AC_DEFUN([LIBOPTS_WITH_REGEX_HEADER],[
+ AC_ARG_WITH([regex-header],
+ AC_HELP_STRING([--with-regex-header], [a reg expr header is specified]),
+ [libopts_cv_with_regex_header=${with_regex_header}],
+ AC_CACHE_CHECK([whether a reg expr header is specified], libopts_cv_with_regex_header,
+ libopts_cv_with_regex_header=no)
+ ) # end of AC_ARG_WITH
+
+ if test "X${libopts_cv_with_regex_header}" != Xno
+ then
+ AC_DEFINE_UNQUOTED([REGEX_HEADER],[<${libopts_cv_with_regex_header}>])
+ else
+ AC_DEFINE([REGEX_HEADER],[<regex.h>],[name of regex header file])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_WITH_REGEX_HEADER
+
+
+AC_DEFUN([LIBOPTS_WITHLIB_REGEX],[
+ AC_ARG_WITH([libregex],
+ AC_HELP_STRING([--with-libregex], [libregex installation prefix]),
+ [libopts_cv_with_libregex_root=${with_libregex}],
+ AC_CACHE_CHECK([whether with-libregex was specified], libopts_cv_with_libregex_root,
+ libopts_cv_with_libregex_root=no)
+ ) # end of AC_ARG_WITH libregex
+
+ if test "${with_libguile+set}" = set && \
+ test "${withval}" = no
+ then ## disabled by request
+ libopts_cv_with_libregex_root=no
+ libopts_cv_with_libregex_cflags=no
+ libopts_cv_with_libregex_libs=no
+ else
+
+ AC_ARG_WITH([libregex-cflags],
+ AC_HELP_STRING([--with-libregex-cflags], [libregex compile flags]),
+ [libopts_cv_with_libregex_cflags=${with_regex_cflags}],
+ AC_CACHE_CHECK([whether with-libregex-cflags was specified], libopts_cv_with_libregex_cflags,
+ libopts_cv_with_libregex_cflags=no)
+ ) # end of AC_ARG_WITH libregex-cflags
+
+ AC_ARG_WITH([libregex-libs],
+ AC_HELP_STRING([--with-libregex-libs], [libregex link command arguments]),
+ [libopts_cv_with_libregex_libs=${with_regex_libs}],
+ AC_CACHE_CHECK([whether with-libregex-libs was specified], libopts_cv_with_libregex_libs,
+ libopts_cv_with_libregex_libs=no)
+ ) # end of AC_ARG_WITH libregex-libs
+
+ case "X${libopts_cv_with_libregex_cflags}" in
+ Xyes|Xno|X )
+ case "X${libopts_cv_with_libregex_root}" in
+ Xyes|Xno|X ) libopts_cv_with_libregex_cflags=no ;;
+ * ) libopts_cv_with_libregex_cflags=-I${libopts_cv_with_libregex_root}/include ;;
+ esac
+ esac
+ case "X${libopts_cv_with_libregex_libs}" in
+ Xyes|Xno|X )
+ case "X${libopts_cv_with_libregex_root}" in
+ Xyes|Xno|X ) libopts_cv_with_libregex_libs=no ;;
+ * ) libopts_cv_with_libregex_libs="-L${libopts_cv_with_libregex_root}/lib -lregex";;
+ esac
+ esac
+ libopts_save_CPPFLAGS="${CPPFLAGS}"
+ libopts_save_LIBS="${LIBS}"
+ fi ## disabled by request
+
+ case "X${libopts_cv_with_libregex_cflags}" in
+ Xyes|Xno|X )
+ libopts_cv_with_libregex_cflags="" ;;
+ * ) CPPFLAGS="${CPPFLAGS} ${libopts_cv_with_libregex_cflags}" ;;
+ esac
+ case "X${libopts_cv_with_libregex_libs}" in
+ Xyes|Xno|X )
+ libopts_cv_with_libregex_libs="" ;;
+ * )
+ LIBS="${LIBS} ${libopts_cv_with_libregex_libs}" ;;
+ esac
+ LIBREGEX_CFLAGS=""
+ LIBREGEX_LIBS=""
+ AC_MSG_CHECKING([whether libregex functions properly])
+ AC_CACHE_VAL([libopts_cv_with_libregex],[
+ AC_TRY_RUN([@%:@include <stdio.h>
+@%:@include <stdlib.h>
+@%:@include <sys/types.h>
+@%:@include REGEX_HEADER
+static regex_t re;
+void comp_re( char const* pzPat ) {
+ int res = regcomp( &re, pzPat, REG_EXTENDED|REG_ICASE|REG_NEWLINE );
+ if (res == 0) return;
+ exit( res ); }
+int main() {
+ regmatch_t m@<:@2@:>@;
+ comp_re( "^.*\@S|@" );
+ comp_re( "()|no.*" );
+ comp_re( "." );
+ if (regexec( &re, "X", 2, m, 0 ) != 0) return 1;
+ if ((m@<:@0@:>@.rm_so != 0) || (m@<:@0@:>@.rm_eo != 1)) {
+ fputs( "error: regex -->.<-- did not match\n", stderr );
+ return 1;
+ }
+ return 0; }],
+ [libopts_cv_with_libregex=yes], [libopts_cv_with_libregex=no],
+ [libopts_cv_with_libregex=no]) # end of AC_TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_with_libregex
+ AC_MSG_RESULT([${libopts_cv_with_libregex}])
+
+ if test "X${libopts_cv_with_libregex}" != Xno
+ then
+ AC_DEFINE([WITH_LIBREGEX],[1],
+ [Define this if a working libregex can be found])
+ else
+ CPPFLAGS="${libopts_save_CPPFLAGS}"
+ LIBS="${libopts_save_LIBS}"
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_WITHLIB_REGEX
+
+
+AC_DEFUN([LIBOPTS_RUN_PATHFIND],[
+ AC_MSG_CHECKING([whether pathfind(3) works])
+ AC_CACHE_VAL([libopts_cv_run_pathfind],[
+ AC_TRY_RUN([@%:@include <string.h>
+@%:@include <stdlib.h>
+int main (int argc, char** argv) {
+ char* pz = pathfind( getenv( "PATH" ), "sh", "x" );
+ return (pz == 0) ? 1 : 0;
+}],
+ [libopts_cv_run_pathfind=yes],[libopts_cv_run_pathfind=no],[libopts_cv_run_pathfind=no]
+ ) # end of TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_run_pathfind
+ AC_MSG_RESULT([${libopts_cv_run_pathfind}])
+
+ if test "X${libopts_cv_run_pathfind}" != Xno
+ then
+ AC_DEFINE([HAVE_PATHFIND],[1],
+ [Define this if pathfind(3) works])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_RUN_PATHFIND
+
+
+AC_DEFUN([LIBOPTS_TEST_DEV_ZERO],[
+ AC_MSG_CHECKING([whether /dev/zero is readable device])
+ AC_CACHE_VAL([libopts_cv_test_dev_zero],[
+ libopts_cv_test_dev_zero=`exec 2> /dev/null
+dzero=\`ls -lL /dev/zero | egrep ^c......r\`
+test -z "${dzero}" && exit 1
+echo ${dzero}`
+ if test $? -ne 0
+ then libopts_cv_test_dev_zero=no
+ elif test -z "$libopts_cv_test_dev_zero"
+ then libopts_cv_test_dev_zero=no
+ fi
+ ]) # end of CACHE_VAL of libopts_cv_test_dev_zero
+ AC_MSG_RESULT([${libopts_cv_test_dev_zero}])
+
+ if test "X${libopts_cv_test_dev_zero}" != Xno
+ then
+ AC_DEFINE([HAVE_DEV_ZERO],[1],
+ [Define this if /dev/zero is readable device])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_TEST_DEV_ZERO
+
+
+AC_DEFUN([LIBOPTS_RUN_REALPATH],[
+ AC_MSG_CHECKING([whether we have a functional realpath(3C)])
+ AC_CACHE_VAL([libopts_cv_run_realpath],[
+ AC_TRY_RUN([@%:@include <limits.h>
+@%:@include <stdlib.h>
+int main (int argc, char** argv) {
+@%:@ifndef PATH_MAX
+choke me!!
+@%:@else
+ char zPath@<:@PATH_MAX+1@:>@;
+@%:@endif
+ char *pz = realpath(argv@<:@0@:>@, zPath);
+ return (pz == zPath) ? 0 : 1;
+}],
+ [libopts_cv_run_realpath=yes],[libopts_cv_run_realpath=no],[libopts_cv_run_realpath=no]
+ ) # end of TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_run_realpath
+ AC_MSG_RESULT([${libopts_cv_run_realpath}])
+
+ if test "X${libopts_cv_run_realpath}" != Xno
+ then
+ AC_DEFINE([HAVE_REALPATH],[1],
+ [Define this if we have a functional realpath(3C)])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_RUN_REALPATH
+
+
+AC_DEFUN([LIBOPTS_RUN_STRFTIME],[
+ AC_MSG_CHECKING([whether strftime() works])
+ AC_CACHE_VAL([libopts_cv_run_strftime],[
+ AC_TRY_RUN([@%:@include <time.h>
+@%:@include <string.h>
+char t_buf@<:@ 64 @:>@;
+int main() {
+ static char const z@<:@@:>@ = "Thursday Aug 28 240";
+ struct tm tm;
+ tm.tm_sec = 36; /* seconds after the minute @<:@0, 61@:>@ */
+ tm.tm_min = 44; /* minutes after the hour @<:@0, 59@:>@ */
+ tm.tm_hour = 12; /* hour since midnight @<:@0, 23@:>@ */
+ tm.tm_mday = 28; /* day of the month @<:@1, 31@:>@ */
+ tm.tm_mon = 7; /* months since January @<:@0, 11@:>@ */
+ tm.tm_year = 86; /* years since 1900 */
+ tm.tm_wday = 4; /* days since Sunday @<:@0, 6@:>@ */
+ tm.tm_yday = 239; /* days since January 1 @<:@0, 365@:>@ */
+ tm.tm_isdst = 1; /* flag for daylight savings time */
+ strftime( t_buf, sizeof( t_buf ), "%A %b %d %j", &tm );
+ return (strcmp( t_buf, z ) != 0); }],
+ [libopts_cv_run_strftime=yes],[libopts_cv_run_strftime=no],[libopts_cv_run_strftime=no]
+ ) # end of TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_run_strftime
+ AC_MSG_RESULT([${libopts_cv_run_strftime}])
+
+ if test "X${libopts_cv_run_strftime}" != Xno
+ then
+ AC_DEFINE([HAVE_STRFTIME],[1],
+ [Define this if strftime() works])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_RUN_STRFTIME
+
+
+AC_DEFUN([LIBOPTS_RUN_FOPEN_BINARY],[
+ AC_MSG_CHECKING([whether fopen accepts "b" mode])
+ AC_CACHE_VAL([libopts_cv_run_fopen_binary],[
+ AC_TRY_RUN([@%:@include <stdio.h>
+int main (int argc, char** argv) {
+FILE* fp = fopen("conftest.@S|@ac_ext", "rb");
+return (fp == NULL) ? 1 : fclose(fp); }],
+ [libopts_cv_run_fopen_binary=yes],[libopts_cv_run_fopen_binary=no],[libopts_cv_run_fopen_binary=no]
+ ) # end of TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_run_fopen_binary
+ AC_MSG_RESULT([${libopts_cv_run_fopen_binary}])
+
+ if test "X${libopts_cv_run_fopen_binary}" != Xno
+ then
+ AC_DEFINE([FOPEN_BINARY_FLAG],"b",
+ [fopen(3) accepts a 'b' in the mode flag])
+ else
+ AC_DEFINE([FOPEN_BINARY_FLAG],"",
+ [fopen(3) accepts a 'b' in the mode flag])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_RUN_FOPEN_BINARY
+
+
+AC_DEFUN([LIBOPTS_RUN_FOPEN_TEXT],[
+ AC_MSG_CHECKING([whether fopen accepts "t" mode])
+ AC_CACHE_VAL([libopts_cv_run_fopen_text],[
+ AC_TRY_RUN([@%:@include <stdio.h>
+int main (int argc, char** argv) {
+FILE* fp = fopen("conftest.@S|@ac_ext", "rt");
+return (fp == NULL) ? 1 : fclose(fp); }],
+ [libopts_cv_run_fopen_text=yes],[libopts_cv_run_fopen_text=no],[libopts_cv_run_fopen_text=no]
+ ) # end of TRY_RUN
+ ]) # end of AC_CACHE_VAL for libopts_cv_run_fopen_text
+ AC_MSG_RESULT([${libopts_cv_run_fopen_text}])
+
+ if test "X${libopts_cv_run_fopen_text}" != Xno
+ then
+ AC_DEFINE([FOPEN_TEXT_FLAG],"t",
+ [fopen(3) accepts a 't' in the mode flag])
+ else
+ AC_DEFINE([FOPEN_TEXT_FLAG],"",
+ [fopen(3) accepts a 't' in the mode flag])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_RUN_FOPEN_TEXT
+
+
+AC_DEFUN([LIBOPTS_DISABLE_OPTIONAL_ARGS],[
+ AC_ARG_ENABLE([optional-args],
+ AC_HELP_STRING([--disable-optional-args], [not wanting optional option args]),
+ [libopts_cv_enable_optional_args=${enable_optional_args}],
+ AC_CACHE_CHECK([whether not wanting optional option args], libopts_cv_enable_optional_args,
+ libopts_cv_enable_optional_args=yes)
+ ) # end of AC_ARG_ENABLE
+
+ if test "X${libopts_cv_enable_optional_args}" = Xno
+ then
+ AC_DEFINE([NO_OPTIONAL_OPT_ARGS], [1],
+ [Define this if optional arguments are disallowed])
+ fi
+
+]) # end of AC_DEFUN of LIBOPTS_DISABLE_OPTIONAL_ARGS
+
+
+AC_DEFUN([INVOKE_LIBOPTS_MACROS],[
+ INVOKE_LIBOPTS_MACROS_FIRST
+ # Check to see if a reg expr header is specified.
+ LIBOPTS_WITH_REGEX_HEADER
+
+ # Check to see if a working libregex can be found.
+ LIBOPTS_WITHLIB_REGEX
+
+ # Check to see if pathfind(3) works.
+ LIBOPTS_RUN_PATHFIND
+
+ # Check to see if /dev/zero is readable device.
+ LIBOPTS_TEST_DEV_ZERO
+
+ # Check to see if we have a functional realpath(3C).
+ LIBOPTS_RUN_REALPATH
+
+ # Check to see if strftime() works.
+ LIBOPTS_RUN_STRFTIME
+
+ # Check to see if fopen accepts "b" mode.
+ LIBOPTS_RUN_FOPEN_BINARY
+
+ # Check to see if fopen accepts "t" mode.
+ LIBOPTS_RUN_FOPEN_TEXT
+
+ # Check to see if not wanting optional option args.
+ LIBOPTS_DISABLE_OPTIONAL_ARGS
+
+]) # end AC_DEFUN of INVOKE_LIBOPTS_MACROS
+
+dnl @synopsis LIBOPTS_CHECK
+dnl
+dnl Time-stamp: "2006-09-23 19:36:24 bkorb"
+dnl Last Committed: $Date: 2006/09/24 02:59:00 $
+dnl
+dnl If autoopts-config works, add the linking information to LIBS.
+dnl Otherwise, add ``libopts-${ao_rev}'' to SUBDIRS and run all
+dnl the config tests that the library needs. Invoke the
+dnl "INVOKE_LIBOPTS_MACROS" macro iff we are building libopts.
+dnl
+dnl Default to system libopts
+dnl
+AC_DEFUN([LIBOPTS_CHECK],[
+ [NEED_LIBOPTS_DIR='']
+ m4_pushdef([AO_Libopts_Dir],
+ [ifelse($1, , [libopts], [$1])])
+ AC_SUBST(LIBOPTS_DIR, AO_Libopts_Dir)
+ AC_ARG_ENABLE([local-libopts],
+ AC_HELP_STRING([--enable-local-libopts],
+ [Force using the supplied libopts tearoff code]),[
+ if test x$enableval = xyes ; then
+ AC_MSG_NOTICE([Using supplied libopts tearoff])
+ LIBOPTS_LDADD='$(top_builddir)/AO_Libopts_Dir/libopts.la'
+ LIBOPTS_CFLAGS='-I$(top_srcdir)/AO_Libopts_Dir'
+ NEED_LIBOPTS_DIR=true
+ fi])
+
+ AC_ARG_ENABLE([libopts-install],
+ AC_HELP_STRING([--disable-libopts-install],
+ [Do not install libopts with client installation]))
+ AM_CONDITIONAL([INSTALL_LIBOPTS],[test "X${enable_libopts_install}" != Xno])
+
+ [if test -z "${NEED_LIBOPTS_DIR}" ; then]
+ AC_MSG_CHECKING([whether autoopts-config can be found])
+ AC_ARG_WITH([autoopts-config],
+ AC_HELP_STRING([--with-autoopts-config],
+ [specify the config-info script]),
+ [lo_cv_with_autoopts_config=${with_autoopts_config}],
+ AC_CACHE_CHECK([whether autoopts-config is specified],
+ [lo_cv_with_autoopts_config],
+ [if autoopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=autoopts-config
+ elif libopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=libopts-config
+ else lo_cv_with_autoopts_config=no ; fi])
+ ) # end of AC_ARG_WITH
+
+ AC_CACHE_VAL([lo_cv_test_autoopts],[
+ if test -z "${lo_cv_with_autoopts_config}" \
+ -o X"${lo_cv_with_autoopts_config}" = Xno
+ then
+ if autoopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=autoopts-config
+ elif libopts-config --help 2>/dev/null 1>&2
+ then lo_cv_with_autoopts_config=libopts-config
+ else lo_cv_with_autoopts_config=false ; fi
+ fi
+ lo_cv_test_autoopts=`
+ ${lo_cv_with_autoopts_config} --libs` 2> /dev/null
+ if test $? -ne 0 -o -z "${lo_cv_test_autoopts}"
+ then lo_cv_test_autoopts=no ; fi
+ ]) # end of CACHE_VAL
+ AC_MSG_RESULT([${lo_cv_test_autoopts}])
+
+ [if test "X${lo_cv_test_autoopts}" != Xno
+ then
+ LIBOPTS_LDADD="${lo_cv_test_autoopts}"
+ LIBOPTS_CFLAGS="`${lo_cv_with_autoopts_config} --cflags`"
+ else
+ LIBOPTS_LDADD='$(top_builddir)/]AO_Libopts_Dir[/libopts.la'
+ LIBOPTS_CFLAGS='-I$(top_srcdir)/]AO_Libopts_Dir['
+ NEED_LIBOPTS_DIR=true
+ fi
+ fi # end of if test -z "${NEED_LIBOPTS_DIR}"]
+
+ AM_CONDITIONAL([NEED_LIBOPTS], [test -n "${NEED_LIBOPTS_DIR}"])
+ AC_SUBST(LIBOPTS_LDADD)
+ AC_SUBST(LIBOPTS_CFLAGS)
+ AC_SUBST(LIBOPTS_DIR, AO_Libopts_Dir)
+ AC_CONFIG_FILES(AO_Libopts_Dir/Makefile)
+ m4_popdef([AO_Libopts_Dir])
+
+ [if test -n "${NEED_LIBOPTS_DIR}" ; then]
+ INVOKE_LIBOPTS_MACROS
+ else
+ INVOKE_LIBOPTS_MACROS_FIRST
+ [fi
+# end of AC_DEFUN of LIBOPTS_CHECK]
+])
diff --git a/contrib/ntp/sntp/libopts/m4/liboptschk.m4 b/contrib/ntp/sntp/libopts/m4/liboptschk.m4
new file mode 100644
index 0000000..14e7f27
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/m4/liboptschk.m4
@@ -0,0 +1,42 @@
+# liboptschk.m4 serial 1 (autogen - 5.7.3)
+dnl Copyright (C) 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Time-stamp: "2006-09-23 19:42:31 bkorb"
+dnl Last Committed: $Date: 2006/09/24 02:59:00 $
+
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+AC_DEFUN([ag_FIND_LIBOPTS],
+ [if test "X${ac_cv_header_autoopts_options_h}" == Xno
+ then
+ :
+ else
+ f=`autoopts-config cflags` 2>/dev/null
+ test X"${f}" = X && f=`libopts-config cflags` 2>/dev/null
+ if test X"${f}" = X
+ then
+ :
+ else
+ AC_DEFINE([HAVE_LIBOPTS],[1],[define if we can find libopts])
+ CFLAGS="${CFLAGS} ${f}"
+ f=`autoopts-config ldflags` 2>/dev/null
+ test X"${f}" = X && f=`libopts-config ldflags` 2>/dev/null
+ LIBS="${LIBS} ${f}"
+ fi
+ fi])
diff --git a/contrib/ntp/sntp/libopts/makeshell.c b/contrib/ntp/sntp/libopts/makeshell.c
new file mode 100644
index 0000000..8447d45
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/makeshell.c
@@ -0,0 +1,1122 @@
+
+/*
+ * $Id: makeshell.c,v 4.20 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-27 06:05:45 bkorb"
+ *
+ * This module will interpret the options set in the tOptions
+ * structure and create a Bourne shell script capable of parsing them.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+tOptions* pShellParseOptions = NULL;
+
+/* * * * * * * * * * * * * * * * * * * * *
+ *
+ * Setup Format Strings
+ */
+tSCC zStartMarker[] =
+"# # # # # # # # # # -- do not modify this marker --\n#\n"
+"# DO NOT EDIT THIS SECTION";
+
+tSCC zPreamble[] =
+"%s OF %s\n#\n"
+"# From here to the next `-- do not modify this marker --',\n"
+"# the text has been generated %s\n";
+
+tSCC zEndPreamble[] =
+"# From the %s option definitions\n#\n";
+
+tSCC zMultiDef[] = "\n"
+"if test -z \"${%1$s_%2$s}\"\n"
+"then\n"
+" %1$s_%2$s_CT=0\n"
+"else\n"
+" %1$s_%2$s_CT=1\n"
+" %1$s_%2$s_1=\"${%1$s_%2$s}\"\n"
+"fi\n"
+"export %1$s_%2$s_CT";
+
+tSCC zSingleDef[] = "\n"
+"%1$s_%2$s=\"${%1$s_%2$s-'%3$s'}\"\n"
+"%1$s_%2$s_set=false\n"
+"export %1$s_%2$s\n";
+
+tSCC zSingleNoDef[] = "\n"
+"%1$s_%2$s=\"${%1$s_%2$s}\"\n"
+"%1$s_%2$s_set=false\n"
+"export %1$s_%2$s\n";
+
+/* * * * * * * * * * * * * * * * * * * * *
+ *
+ * LOOP START
+ *
+ * The loop may run in either of two modes:
+ * all options are named options (loop only)
+ * regular, marked option processing.
+ */
+tSCC zLoopCase[] = "\n"
+"OPT_PROCESS=true\n"
+"OPT_ARG=\"$1\"\n\n"
+"while ${OPT_PROCESS} && [ $# -gt 0 ]\ndo\n"
+" OPT_ELEMENT=''\n"
+" OPT_ARG_VAL=''\n\n"
+ /*
+ * 'OPT_ARG' may or may not match the current $1
+ */
+" case \"${OPT_ARG}\" in\n"
+" -- )\n"
+" OPT_PROCESS=false\n"
+" shift\n"
+" ;;\n\n";
+
+tSCC zLoopOnly[] = "\n"
+"OPT_ARG=\"$1\"\n\n"
+"while [ $# -gt 0 ]\ndo\n"
+" OPT_ELEMENT=''\n"
+" OPT_ARG_VAL=''\n\n"
+" OPT_ARG=\"${1}\"\n";
+
+/* * * * * * * * * * * * * * * *
+ *
+ * CASE SELECTORS
+ *
+ * If the loop runs as a regular option loop,
+ * then we must have selectors for each acceptable option
+ * type (long option, flag character and non-option)
+ */
+tSCC zLongSelection[] =
+" --* )\n";
+
+tSCC zFlagSelection[] =
+" -* )\n";
+
+tSCC zEndSelection[] =
+" ;;\n\n";
+
+tSCC zNoSelection[] =
+" * )\n"
+" OPT_PROCESS=false\n"
+" ;;\n"
+" esac\n\n";
+
+/* * * * * * * * * * * * * * * *
+ *
+ * LOOP END
+ */
+tSCC zLoopEnd[] =
+" if [ -n \"${OPT_ARG_VAL}\" ]\n"
+" then\n"
+" eval %1$s_${OPT_NAME}${OPT_ELEMENT}=\"'${OPT_ARG_VAL}'\"\n"
+" export %1$s_${OPT_NAME}${OPT_ELEMENT}\n"
+" fi\n"
+"done\n\n"
+"unset OPT_PROCESS || :\n"
+"unset OPT_ELEMENT || :\n"
+"unset OPT_ARG || :\n"
+"unset OPT_ARG_NEEDED || :\n"
+"unset OPT_NAME || :\n"
+"unset OPT_CODE || :\n"
+"unset OPT_ARG_VAL || :\n%2$s";
+
+tSCC zTrailerMarker[] = "\n"
+"# # # # # # # # # #\n#\n"
+"# END OF AUTOMATED OPTION PROCESSING\n"
+"#\n# # # # # # # # # # -- do not modify this marker --\n";
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * OPTION SELECTION
+ */
+tSCC zOptionCase[] =
+" case \"${OPT_CODE}\" in\n";
+
+tSCC zOptionPartName[] =
+" '%s' | \\\n";
+
+tSCC zOptionFullName[] =
+" '%s' )\n";
+
+tSCC zOptionFlag[] =
+" '%c' )\n";
+
+tSCC zOptionEndSelect[] =
+" ;;\n\n";
+
+tSCC zOptionUnknown[] =
+" * )\n"
+" echo Unknown %s: \"${OPT_CODE}\" >&2\n"
+" echo \"$%s_USAGE_TEXT\"\n"
+" exit 1\n"
+" ;;\n"
+" esac\n\n";
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * OPTION PROCESSING
+ *
+ * Formats for emitting the text for handling particular options
+ */
+tSCC zTextExit[] =
+" echo \"$%s_%s_TEXT\"\n"
+" exit 0\n";
+
+tSCC zPagedUsageExit[] =
+" echo \"$%s_LONGUSAGE_TEXT\" | ${PAGER-more}\n"
+" exit 0\n";
+
+tSCC zCmdFmt[] =
+" %s\n";
+
+tSCC zCountTest[] =
+" if [ $%1$s_%2$s_CT -ge %3$d ] ; then\n"
+" echo Error: more than %3$d %2$s options >&2\n"
+" echo \"$%1$s_USAGE_TEXT\"\n"
+" exit 1 ; fi\n";
+
+tSCC zMultiArg[] =
+" %1$s_%2$s_CT=`expr ${%1$s_%2$s_CT} + 1`\n"
+" OPT_ELEMENT=\"_${%1$s_%2$s_CT}\"\n"
+" OPT_NAME='%2$s'\n";
+
+tSCC zSingleArg[] =
+" if [ -n \"${%1$s_%2$s}\" ] && ${%1$s_%2$s_set} ; then\n"
+" echo Error: duplicate %2$s option >&2\n"
+" echo \"$%1$s_USAGE_TEXT\"\n"
+" exit 1 ; fi\n"
+" %1$s_%2$s_set=true\n"
+" OPT_NAME='%2$s'\n";
+
+tSCC zNoMultiArg[] =
+" %1$s_%2$s_CT=0\n"
+" OPT_ELEMENT=''\n"
+" %1$s_%2$s='%3$s'\n"
+" export %1$s_%2$s\n"
+" OPT_NAME='%2$s'\n";
+
+tSCC zNoSingleArg[] =
+" if [ -n \"${%1$s_%2$s}\" ] && ${%1$s_%2$s_set} ; then\n"
+" echo Error: duplicate %2$s option >&2\n"
+" echo \"$%1$s_USAGE_TEXT\"\n"
+" exit 1 ; fi\n"
+" %1$s_%2$s_set=true\n"
+" %1$s_%2$s='%3$s'\n"
+" export %1$s_%2$s\n"
+" OPT_NAME='%2$s'\n";
+
+tSCC zMayArg[] =
+" eval %1$s_%2$s${OPT_ELEMENT}=true\n"
+" export %1$s_%2$s${OPT_ELEMENT}\n"
+" OPT_ARG_NEEDED=OK\n";
+
+tSCC zMustArg[] =
+" OPT_ARG_NEEDED=YES\n";
+
+tSCC zCantArg[] =
+" eval %1$s_%2$s${OPT_ELEMENT}=true\n"
+" export %1$s_%2$s${OPT_ELEMENT}\n"
+" OPT_ARG_NEEDED=NO\n";
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * LONG OPTION PROCESSING
+ *
+ * Formats for emitting the text for handling long option types
+ */
+tSCC zLongOptInit[] =
+" OPT_CODE=`echo \"X${OPT_ARG}\"|sed 's/^X-*//'`\n"
+" shift\n"
+" OPT_ARG=\"$1\"\n\n"
+" case \"${OPT_CODE}\" in *=* )\n"
+" OPT_ARG_VAL=`echo \"${OPT_CODE}\"|sed 's/^[^=]*=//'`\n"
+" OPT_CODE=`echo \"${OPT_CODE}\"|sed 's/=.*$//'` ;; esac\n\n";
+
+tSCC zLongOptArg[] =
+" case \"${OPT_ARG_NEEDED}\" in\n"
+" NO )\n"
+" OPT_ARG_VAL=''\n"
+" ;;\n\n"
+" YES )\n"
+" if [ -z \"${OPT_ARG_VAL}\" ]\n"
+" then\n"
+" if [ $# -eq 0 ]\n"
+" then\n"
+" echo No argument provided for ${OPT_NAME} option >&2\n"
+" echo \"$%s_USAGE_TEXT\"\n"
+" exit 1\n"
+" fi\n\n"
+" OPT_ARG_VAL=\"${OPT_ARG}\"\n"
+" shift\n"
+" OPT_ARG=\"$1\"\n"
+" fi\n"
+" ;;\n\n"
+" OK )\n"
+" if [ -z \"${OPT_ARG_VAL}\" ] && [ $# -gt 0 ]\n"
+" then\n"
+" case \"${OPT_ARG}\" in -* ) ;; * )\n"
+" OPT_ARG_VAL=\"${OPT_ARG}\"\n"
+" shift\n"
+" OPT_ARG=\"$1\" ;; esac\n"
+" fi\n"
+" ;;\n"
+" esac\n";
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * FLAG OPTION PROCESSING
+ *
+ * Formats for emitting the text for handling flag option types
+ */
+tSCC zFlagOptInit[] =
+" OPT_CODE=`echo \"X${OPT_ARG}\" | sed 's/X-\\(.\\).*/\\1/'`\n"
+" OPT_ARG=` echo \"X${OPT_ARG}\" | sed 's/X-.//'`\n\n";
+
+tSCC zFlagOptArg[] =
+" case \"${OPT_ARG_NEEDED}\" in\n"
+" NO )\n"
+" if [ -n \"${OPT_ARG}\" ]\n"
+" then\n"
+" OPT_ARG=-\"${OPT_ARG}\"\n"
+" else\n"
+" shift\n"
+" OPT_ARG=\"$1\"\n"
+" fi\n"
+" ;;\n\n"
+" YES )\n"
+" if [ -n \"${OPT_ARG}\" ]\n"
+" then\n"
+" OPT_ARG_VAL=\"${OPT_ARG}\"\n\n"
+" else\n"
+" if [ $# -eq 0 ]\n"
+" then\n"
+" echo No argument provided for ${OPT_NAME} option >&2\n"
+" echo \"$%s_USAGE_TEXT\"\n"
+" exit 1\n"
+" fi\n"
+" shift\n"
+" OPT_ARG_VAL=\"$1\"\n"
+" fi\n\n"
+" shift\n"
+" OPT_ARG=\"$1\"\n"
+" ;;\n\n"
+" OK )\n"
+" if [ -n \"${OPT_ARG}\" ]\n"
+" then\n"
+" OPT_ARG_VAL=\"${OPT_ARG}\"\n"
+" shift\n"
+" OPT_ARG=\"$1\"\n\n"
+" else\n"
+" shift\n"
+" if [ $# -gt 0 ]\n"
+" then\n"
+" case \"$1\" in -* ) ;; * )\n"
+" OPT_ARG_VAL=\"$1\"\n"
+" shift ;; esac\n"
+" OPT_ARG=\"$1\"\n"
+" fi\n"
+" fi\n"
+" ;;\n"
+" esac\n";
+
+tSCC* pzShell = NULL;
+static char* pzLeader = NULL;
+static char* pzTrailer = NULL;
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+textToVariable( tOptions* pOpts, teTextTo whichVar, tOptDesc* pOD );
+
+static void
+emitUsage( tOptions* pOpts );
+
+static void
+emitSetup( tOptions* pOpts );
+
+static void
+printOptionAction( tOptions* pOpts, tOptDesc* pOptDesc );
+
+static void
+printOptionInaction( tOptions* pOpts, tOptDesc* pOptDesc );
+
+static void
+emitFlag( tOptions* pOpts );
+
+static void
+emitMatchExpr( tCC* pzMatchName, tOptDesc* pCurOpt, tOptions* pOpts );
+
+static void
+emitLong( tOptions* pOpts );
+
+static void
+openOutput( char const* pzFile );
+/* = = = END-STATIC-FORWARD = = = */
+
+/*=export_func optionParseShell
+ * private:
+ *
+ * what: Decipher a boolean value
+ * arg: + tOptions* + pOpts + program options descriptor +
+ *
+ * doc:
+ * Emit a shell script that will parse the command line options.
+=*/
+void
+optionParseShell( tOptions* pOpts )
+{
+ /*
+ * Check for our SHELL option now.
+ * IF the output file contains the "#!" magic marker,
+ * it will override anything we do here.
+ */
+ if (HAVE_OPT( SHELL ))
+ pzShell = OPT_ARG( SHELL );
+
+ else if (! ENABLED_OPT( SHELL ))
+ pzShell = NULL;
+
+ else if ((pzShell = getenv( "SHELL" )),
+ pzShell == NULL)
+
+ pzShell = "/bin/sh";
+
+ /*
+ * Check for a specified output file
+ */
+ if (HAVE_OPT( SCRIPT ))
+ openOutput( OPT_ARG( SCRIPT ));
+
+ emitUsage( pOpts );
+ emitSetup( pOpts );
+
+ /*
+ * There are four modes of option processing.
+ */
+ switch (pOpts->fOptSet & (OPTPROC_LONGOPT|OPTPROC_SHORTOPT)) {
+ case OPTPROC_LONGOPT:
+ fputs( zLoopCase, stdout );
+
+ fputs( zLongSelection, stdout );
+ fputs( zLongOptInit, stdout );
+ emitLong( pOpts );
+ printf( zLongOptArg, pOpts->pzPROGNAME );
+ fputs( zEndSelection, stdout );
+
+ fputs( zNoSelection, stdout );
+ break;
+
+ case 0:
+ fputs( zLoopOnly, stdout );
+ fputs( zLongOptInit, stdout );
+ emitLong( pOpts );
+ printf( zLongOptArg, pOpts->pzPROGNAME );
+ break;
+
+ case OPTPROC_SHORTOPT:
+ fputs( zLoopCase, stdout );
+
+ fputs( zFlagSelection, stdout );
+ fputs( zFlagOptInit, stdout );
+ emitFlag( pOpts );
+ printf( zFlagOptArg, pOpts->pzPROGNAME );
+ fputs( zEndSelection, stdout );
+
+ fputs( zNoSelection, stdout );
+ break;
+
+ case OPTPROC_LONGOPT|OPTPROC_SHORTOPT:
+ fputs( zLoopCase, stdout );
+
+ fputs( zLongSelection, stdout );
+ fputs( zLongOptInit, stdout );
+ emitLong( pOpts );
+ printf( zLongOptArg, pOpts->pzPROGNAME );
+ fputs( zEndSelection, stdout );
+
+ fputs( zFlagSelection, stdout );
+ fputs( zFlagOptInit, stdout );
+ emitFlag( pOpts );
+ printf( zFlagOptArg, pOpts->pzPROGNAME );
+ fputs( zEndSelection, stdout );
+
+ fputs( zNoSelection, stdout );
+ break;
+ }
+
+ printf( zLoopEnd, pOpts->pzPROGNAME, zTrailerMarker );
+ if ((pzTrailer != NULL) && (*pzTrailer != '\0'))
+ fputs( pzTrailer, stdout );
+ else if (ENABLED_OPT( SHELL ))
+ printf( "\nenv | grep '^%s_'\n", pOpts->pzPROGNAME );
+
+ fflush( stdout );
+ fchmod( STDOUT_FILENO, 0755 );
+ fclose( stdout );
+}
+
+
+static void
+textToVariable( tOptions* pOpts, teTextTo whichVar, tOptDesc* pOD )
+{
+# define _TT_(n) tSCC z ## n [] = #n;
+ TEXTTO_TABLE
+# undef _TT_
+# define _TT_(n) z ## n ,
+ static char const* apzTTNames[] = { TEXTTO_TABLE };
+# undef _TT_
+
+#if defined(__windows__) && !defined(__CYGWIN__)
+ printf( "%1$s_%2$s_TEXT='no %2$s text'\n",
+ pOpts->pzPROGNAME, apzTTNames[ whichVar ]);
+#else
+ int nlHoldCt = 0;
+ int pipeFd[2];
+ FILE* fp;
+
+ printf( "%s_%s_TEXT='", pOpts->pzPROGNAME, apzTTNames[ whichVar ]);
+ fflush( stdout );
+
+ if (pipe( pipeFd ) != 0) {
+ fprintf( stderr, zBadPipe, errno, strerror( errno ));
+ exit( EXIT_FAILURE );
+ }
+
+ switch (fork()) {
+ case -1:
+ fprintf( stderr, zForkFail, errno, strerror(errno), pOpts->pzProgName);
+ exit( EXIT_FAILURE );
+ break;
+
+ case 0:
+ dup2( pipeFd[1], STDERR_FILENO );
+ dup2( pipeFd[1], STDOUT_FILENO );
+ close( pipeFd[0] );
+
+ switch (whichVar) {
+ case TT_LONGUSAGE:
+ (*(pOpts->pUsageProc))( pOpts, EXIT_SUCCESS );
+ /* NOTREACHED */
+ exit( EXIT_FAILURE );
+
+ case TT_USAGE:
+ (*(pOpts->pUsageProc))( pOpts, EXIT_FAILURE );
+ /* NOTREACHED */
+ exit( EXIT_FAILURE );
+
+ case TT_VERSION:
+ if (pOD->fOptState & OPTST_ALLOC_ARG) {
+ AGFREE(pOD->optArg.argString);
+ pOD->fOptState &= ~OPTST_ALLOC_ARG;
+ }
+ pOD->optArg.argString = "c";
+ optionPrintVersion( pOpts, pOD );
+ /* NOTREACHED */
+
+ default:
+ exit( EXIT_FAILURE );
+ }
+
+ default:
+ close( pipeFd[1] );
+ fp = fdopen( pipeFd[0], "r" FOPEN_BINARY_FLAG );
+ }
+
+ for (;;) {
+ int ch = fgetc( fp );
+ switch (ch) {
+
+ case '\n':
+ nlHoldCt++;
+ break;
+
+ case '\'':
+ while (nlHoldCt > 0) {
+ fputc( '\n', stdout );
+ nlHoldCt--;
+ }
+ fputs( "'\\''", stdout );
+ break;
+
+ case EOF:
+ goto endCharLoop;
+
+ default:
+ while (nlHoldCt > 0) {
+ fputc( '\n', stdout );
+ nlHoldCt--;
+ }
+ fputc( ch, stdout );
+ break;
+ }
+ } endCharLoop:;
+
+ fputs( "'\n\n", stdout );
+ close( pipeFd[0] );
+#endif
+}
+
+
+static void
+emitUsage( tOptions* pOpts )
+{
+ char zTimeBuf[ AO_NAME_SIZE ];
+
+ /*
+ * First, switch stdout to the output file name.
+ * Then, change the program name to the one defined
+ * by the definitions (rather than the current
+ * executable name). Down case the upper cased name.
+ */
+ if (pzLeader != NULL)
+ fputs( pzLeader, stdout );
+
+ {
+ tSCC zStdout[] = "stdout";
+ tCC* pzOutName;
+
+ {
+ time_t curTime = time( NULL );
+ struct tm* pTime = localtime( &curTime );
+ strftime(zTimeBuf, AO_NAME_SIZE, "%A %B %e, %Y at %r %Z", pTime );
+ }
+
+ if (HAVE_OPT( SCRIPT ))
+ pzOutName = OPT_ARG( SCRIPT );
+ else pzOutName = zStdout;
+
+ if ((pzLeader == NULL) && (pzShell != NULL))
+ printf( "#! %s\n", pzShell );
+
+ printf( zPreamble, zStartMarker, pzOutName, zTimeBuf );
+ }
+
+ /*
+ * Get a copy of the original program name in lower case
+ */
+ {
+ char* pzPN = zTimeBuf;
+ tCC* pz = pOpts->pzPROGNAME;
+ for (;;) {
+ if ((*pzPN++ = tolower( *pz++ )) == '\0')
+ break;
+ }
+ }
+
+ printf( zEndPreamble, pOpts->pzPROGNAME );
+
+ pOpts->pzProgPath = pOpts->pzProgName = zTimeBuf;
+ textToVariable( pOpts, TT_LONGUSAGE, NULL );
+ textToVariable( pOpts, TT_USAGE, NULL );
+
+ {
+ tOptDesc* pOptDesc = pOpts->pOptDesc;
+ int optionCt = pOpts->optCt;
+
+ for (;;) {
+ if (pOptDesc->pOptProc == optionPrintVersion) {
+ textToVariable( pOpts, TT_VERSION, pOptDesc );
+ break;
+ }
+
+ if (--optionCt <= 0)
+ break;
+ pOptDesc++;
+ }
+ }
+}
+
+
+static void
+emitSetup( tOptions* pOpts )
+{
+ tOptDesc* pOptDesc = pOpts->pOptDesc;
+ int optionCt = pOpts->presetOptCt;
+ char const* pzFmt;
+ char const* pzDefault;
+
+ for (;optionCt > 0; pOptDesc++, --optionCt) {
+ char zVal[16];
+
+ /*
+ * Options that are either usage documentation or are compiled out
+ * are not to be processed.
+ */
+ if (SKIP_OPT(pOptDesc) || (pOptDesc->pz_NAME == NULL))
+ continue;
+
+ if (pOptDesc->optMaxCt > 1)
+ pzFmt = zMultiDef;
+ else pzFmt = zSingleDef;
+
+ /*
+ * IF this is an enumeration/bitmask option, then convert the value
+ * to a string before printing the default value.
+ */
+ switch (OPTST_GET_ARGTYPE(pOptDesc->fOptState)) {
+ case OPARG_TYPE_ENUMERATION:
+ (*(pOptDesc->pOptProc))( (tOptions*)2UL, pOptDesc );
+ pzDefault = pOptDesc->optArg.argString;
+ break;
+
+ /*
+ * Numeric and membership bit options are just printed as a number.
+ */
+ case OPARG_TYPE_NUMERIC:
+ snprintf( zVal, sizeof( zVal ), "%d",
+ (int)pOptDesc->optArg.argInt );
+ pzDefault = zVal;
+ break;
+
+ case OPARG_TYPE_MEMBERSHIP:
+ snprintf( zVal, sizeof( zVal ), "%lu",
+ (unsigned long)pOptDesc->optArg.argIntptr );
+ pzDefault = zVal;
+ break;
+
+ case OPARG_TYPE_BOOLEAN:
+ pzDefault = (pOptDesc->optArg.argBool) ? "true" : "false";
+ break;
+
+ default:
+ if (pOptDesc->optArg.argString == NULL) {
+ if (pzFmt == zSingleDef)
+ pzFmt = zSingleNoDef;
+ pzDefault = NULL;
+ }
+ else
+ pzDefault = pOptDesc->optArg.argString;
+ }
+
+ printf( pzFmt, pOpts->pzPROGNAME, pOptDesc->pz_NAME, pzDefault );
+ }
+}
+
+
+static void
+printOptionAction( tOptions* pOpts, tOptDesc* pOptDesc )
+{
+ if (pOptDesc->pOptProc == optionPrintVersion)
+ printf( zTextExit, pOpts->pzPROGNAME, "VERSION" );
+
+ else if (pOptDesc->pOptProc == optionPagedUsage)
+ printf( zPagedUsageExit, pOpts->pzPROGNAME );
+
+ else if (pOptDesc->pOptProc == optionLoadOpt) {
+ printf( zCmdFmt, "echo 'Warning: Cannot load options files' >&2" );
+ printf( zCmdFmt, "OPT_ARG_NEEDED=YES" );
+
+ } else if (pOptDesc->pz_NAME == NULL) {
+
+ if (pOptDesc->pOptProc == NULL) {
+ printf( zCmdFmt, "echo 'Warning: Cannot save options files' "
+ ">&2" );
+ printf( zCmdFmt, "OPT_ARG_NEEDED=OK" );
+ } else
+ printf( zTextExit, pOpts->pzPROGNAME, "LONGUSAGE" );
+
+ } else {
+ if (pOptDesc->optMaxCt == 1)
+ printf( zSingleArg, pOpts->pzPROGNAME, pOptDesc->pz_NAME );
+ else {
+ if ((unsigned)pOptDesc->optMaxCt < NOLIMIT)
+ printf( zCountTest, pOpts->pzPROGNAME,
+ pOptDesc->pz_NAME, pOptDesc->optMaxCt );
+
+ printf( zMultiArg, pOpts->pzPROGNAME, pOptDesc->pz_NAME );
+ }
+
+ /*
+ * Fix up the args.
+ */
+ if (OPTST_GET_ARGTYPE(pOptDesc->fOptState) == OPARG_TYPE_NONE) {
+ printf( zCantArg, pOpts->pzPROGNAME, pOptDesc->pz_NAME );
+
+ } else if (pOptDesc->fOptState & OPTST_ARG_OPTIONAL) {
+ printf( zMayArg, pOpts->pzPROGNAME, pOptDesc->pz_NAME );
+
+ } else {
+ fputs( zMustArg, stdout );
+ }
+ }
+ fputs( zOptionEndSelect, stdout );
+}
+
+
+static void
+printOptionInaction( tOptions* pOpts, tOptDesc* pOptDesc )
+{
+ if (pOptDesc->pOptProc == optionLoadOpt) {
+ printf( zCmdFmt, "echo 'Warning: Cannot suppress the loading of "
+ "options files' >&2" );
+
+ } else if (pOptDesc->optMaxCt == 1)
+ printf( zNoSingleArg, pOpts->pzPROGNAME,
+ pOptDesc->pz_NAME, pOptDesc->pz_DisablePfx );
+ else
+ printf( zNoMultiArg, pOpts->pzPROGNAME,
+ pOptDesc->pz_NAME, pOptDesc->pz_DisablePfx );
+
+ printf( zCmdFmt, "OPT_ARG_NEEDED=NO" );
+ fputs( zOptionEndSelect, stdout );
+}
+
+
+static void
+emitFlag( tOptions* pOpts )
+{
+ tOptDesc* pOptDesc = pOpts->pOptDesc;
+ int optionCt = pOpts->optCt;
+
+ fputs( zOptionCase, stdout );
+
+ for (;optionCt > 0; pOptDesc++, --optionCt) {
+
+ if (SKIP_OPT(pOptDesc))
+ continue;
+
+ if (isprint( pOptDesc->optValue )) {
+ printf( zOptionFlag, pOptDesc->optValue );
+ printOptionAction( pOpts, pOptDesc );
+ }
+ }
+ printf( zOptionUnknown, "flag", pOpts->pzPROGNAME );
+}
+
+
+/*
+ * Emit the match text for a long option
+ */
+static void
+emitMatchExpr( tCC* pzMatchName, tOptDesc* pCurOpt, tOptions* pOpts )
+{
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int oCt = pOpts->optCt;
+ int min = 1;
+ char zName[ 256 ];
+ char* pz = zName;
+
+ for (;;) {
+ int matchCt = 0;
+
+ /*
+ * Omit the current option, Documentation opts and compiled out opts.
+ */
+ if ((pOD == pCurOpt) || SKIP_OPT(pOD)){
+ if (--oCt <= 0)
+ break;
+ pOD++;
+ continue;
+ }
+
+ /*
+ * Check each character of the name case insensitively.
+ * They must not be the same. They cannot be, because it would
+ * not compile correctly if they were.
+ */
+ while ( toupper( pOD->pz_Name[matchCt] )
+ == toupper( pzMatchName[matchCt] ))
+ matchCt++;
+
+ if (matchCt > min)
+ min = matchCt;
+
+ /*
+ * Check the disablement name, too.
+ */
+ if (pOD->pz_DisableName != NULL) {
+ matchCt = 0;
+ while ( toupper( pOD->pz_DisableName[matchCt] )
+ == toupper( pzMatchName[matchCt] ))
+ matchCt++;
+ if (matchCt > min)
+ min = matchCt;
+ }
+ if (--oCt <= 0)
+ break;
+ pOD++;
+ }
+
+ /*
+ * IF the 'min' is all or one short of the name length,
+ * THEN the entire string must be matched.
+ */
+ if ( (pzMatchName[min ] == NUL)
+ || (pzMatchName[min+1] == NUL) )
+ printf( zOptionFullName, pzMatchName );
+
+ else {
+ int matchCt = 0;
+ for (; matchCt <= min; matchCt++)
+ *pz++ = pzMatchName[matchCt];
+
+ for (;;) {
+ *pz = NUL;
+ printf( zOptionPartName, zName );
+ *pz++ = pzMatchName[matchCt++];
+ if (pzMatchName[matchCt] == NUL) {
+ *pz = NUL;
+ printf( zOptionFullName, zName );
+ break;
+ }
+ }
+ }
+}
+
+
+/*
+ * Emit GNU-standard long option handling code
+ */
+static void
+emitLong( tOptions* pOpts )
+{
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int ct = pOpts->optCt;
+
+ fputs( zOptionCase, stdout );
+
+ /*
+ * do each option, ...
+ */
+ do {
+ /*
+ * Documentation & compiled-out options
+ */
+ if (SKIP_OPT(pOD))
+ continue;
+
+ emitMatchExpr( pOD->pz_Name, pOD, pOpts );
+ printOptionAction( pOpts, pOD );
+
+ /*
+ * Now, do the same thing for the disablement version of the option.
+ */
+ if (pOD->pz_DisableName != NULL) {
+ emitMatchExpr( pOD->pz_DisableName, pOD, pOpts );
+ printOptionInaction( pOpts, pOD );
+ }
+ } while (pOD++, --ct > 0);
+
+ printf( zOptionUnknown, "option", pOpts->pzPROGNAME );
+}
+
+
+static void
+openOutput( char const* pzFile )
+{
+ FILE* fp;
+ char* pzData = NULL;
+ struct stat stbf;
+
+ do {
+ char* pzScan;
+ size_t sizeLeft;
+
+ /*
+ * IF we cannot stat the file,
+ * THEN assume we are creating a new file.
+ * Skip the loading of the old data.
+ */
+ if (stat( pzFile, &stbf ) != 0)
+ break;
+
+ /*
+ * The file must be a regular file
+ */
+ if (! S_ISREG( stbf.st_mode )) {
+ fprintf( stderr, zNotFile, pzFile );
+ exit( EXIT_FAILURE );
+ }
+
+ pzData = AGALOC(stbf.st_size + 1, "file data");
+ fp = fopen( pzFile, "r" FOPEN_BINARY_FLAG );
+
+ sizeLeft = (unsigned)stbf.st_size;
+ pzScan = pzData;
+
+ /*
+ * Read in all the data as fast as our OS will let us.
+ */
+ for (;;) {
+ int inct = fread( (void*)pzScan, (size_t)1, sizeLeft, fp);
+ if (inct == 0)
+ break;
+
+ pzScan += inct;
+ sizeLeft -= inct;
+
+ if (sizeLeft == 0)
+ break;
+ }
+
+ /*
+ * NUL-terminate the leader and look for the trailer
+ */
+ *pzScan = '\0';
+ fclose( fp );
+ pzScan = strstr( pzData, zStartMarker );
+ if (pzScan == NULL) {
+ pzTrailer = pzData;
+ break;
+ }
+
+ *(pzScan++) = NUL;
+ pzScan = strstr( pzScan, zTrailerMarker );
+ if (pzScan == NULL) {
+ pzTrailer = pzData;
+ break;
+ }
+
+ /*
+ * Check to see if the data contains
+ * our marker. If it does, then we will skip over it
+ */
+ pzTrailer = pzScan + sizeof( zTrailerMarker ) - 1;
+ pzLeader = pzData;
+ } while (AG_FALSE);
+
+ freopen( pzFile, "w" FOPEN_BINARY_FLAG, stdout );
+}
+
+
+/*=export_func genshelloptUsage
+ * private:
+ * what: The usage function for the genshellopt generated program
+ *
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + int + exitCode + usage text type to produce +
+ *
+ * doc:
+ * This function is used to create the usage strings for the option
+ * processing shell script code. Two child processes are spawned
+ * each emitting the usage text in either the short (error exit)
+ * style or the long style. The generated program will capture this
+ * and create shell script variables containing the two types of text.
+=*/
+void
+genshelloptUsage( tOptions* pOpts, int exitCode )
+{
+#if defined(__windows__) && !defined(__CYGWIN__)
+ optionUsage( pOpts, exitCode );
+#else
+ /*
+ * IF not EXIT_SUCCESS,
+ * THEN emit the short form of usage.
+ */
+ if (exitCode != EXIT_SUCCESS)
+ optionUsage( pOpts, exitCode );
+ fflush( stderr );
+ fflush( stdout );
+
+ option_usage_fp = stdout;
+
+ /*
+ * First, print our usage
+ */
+ switch (fork()) {
+ case -1:
+ optionUsage( pOpts, EXIT_FAILURE );
+ /*NOTREACHED*/
+ _exit( EXIT_FAILURE );
+
+ case 0:
+ pagerState = PAGER_STATE_CHILD;
+ optionUsage( pOpts, EXIT_SUCCESS );
+ /*NOTREACHED*/
+ _exit( EXIT_FAILURE );
+
+ default:
+ {
+ int sts;
+ wait( &sts );
+ }
+ }
+
+ /*
+ * Generate the pzProgName, since optionProcess() normally
+ * gets it from the command line
+ */
+ {
+ char* pz;
+ AGDUPSTR( pz, pShellParseOptions->pzPROGNAME, "program name" );
+ pShellParseOptions->pzProgName = pz;
+ while (*pz != NUL) {
+ *pz = tolower( *pz );
+ pz++;
+ }
+ }
+
+ /*
+ * Separate the makeshell usage from the client usage
+ */
+ fprintf( option_usage_fp, zGenshell, pShellParseOptions->pzProgName );
+ fflush( option_usage_fp );
+
+ /*
+ * Now, print the client usage.
+ */
+ switch (fork()) {
+ case 0:
+ pagerState = PAGER_STATE_CHILD;
+ /*FALLTHROUGH*/
+ case -1:
+ optionUsage( pShellParseOptions, EXIT_FAILURE );
+
+ default:
+ {
+ int sts;
+ wait( &sts );
+ }
+ }
+
+ exit( EXIT_SUCCESS );
+#endif
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/makeshell.c */
diff --git a/contrib/ntp/sntp/libopts/nested.c b/contrib/ntp/sntp/libopts/nested.c
new file mode 100644
index 0000000..b39f8d1
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/nested.c
@@ -0,0 +1,733 @@
+
+/*
+ * $Id: nested.c,v 4.14 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-26 11:04:35 bkorb"
+ *
+ * Automated Options Nested Values module.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+removeBackslashes( char* pzSrc );
+
+static char const*
+scanQuotedString( char const* pzTxt );
+
+static tOptionValue*
+addStringValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen );
+
+static tOptionValue*
+addBoolValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen );
+
+static tOptionValue*
+addNumberValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen );
+
+static tOptionValue*
+addNestedValue( void** pp, char const* pzName, size_t nameLen,
+ char* pzValue, size_t dataLen );
+
+static char const*
+scanNameEntry(char const* pzName, tOptionValue* pRes);
+
+static char const*
+scanXmlEntry( char const* pzName, tOptionValue* pRes );
+
+static void
+unloadNestedArglist( tArgList* pAL );
+
+static void
+sortNestedList( tArgList* pAL );
+/* = = = END-STATIC-FORWARD = = = */
+
+/* removeBackslashes
+ *
+ * This function assumes that all newline characters were preceeded by
+ * backslashes that need removal.
+ */
+static void
+removeBackslashes( char* pzSrc )
+{
+ char* pzD = strchr(pzSrc, '\n');
+
+ if (pzD == NULL)
+ return;
+ *--pzD = '\n';
+
+ for (;;) {
+ char ch = ((*pzD++) = *(pzSrc++));
+ switch (ch) {
+ case '\n': *--pzD = ch; break;
+ case NUL: return;
+ default:
+ ;
+ }
+ }
+}
+
+
+/* scanQuotedString
+ *
+ * Find the end of a quoted string, skipping escaped quote characters.
+ */
+static char const*
+scanQuotedString( char const* pzTxt )
+{
+ char q = *(pzTxt++); /* remember the type of quote */
+
+ for (;;) {
+ char ch = *(pzTxt++);
+ if (ch == NUL)
+ return pzTxt-1;
+
+ if (ch == q)
+ return pzTxt;
+
+ if (ch == '\\') {
+ ch = *(pzTxt++);
+ /*
+ * IF the next character is NUL, drop the backslash, too.
+ */
+ if (ch == NUL)
+ return pzTxt - 2;
+
+ /*
+ * IF the quote character or the escape character were escaped,
+ * then skip both, as long as the string does not end.
+ */
+ if ((ch == q) || (ch == '\\')) {
+ if (*(pzTxt++) == NUL)
+ return pzTxt-1;
+ }
+ }
+ }
+}
+
+
+/* addStringValue
+ *
+ * Associate a name with either a string or no value.
+ */
+static tOptionValue*
+addStringValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen )
+{
+ tOptionValue* pNV;
+ size_t sz = nameLen + dataLen + sizeof(*pNV);
+
+ pNV = AGALOC( sz, "option name/str value pair" );
+ if (pNV == NULL)
+ return NULL;
+
+ if (pzValue == NULL) {
+ pNV->valType = OPARG_TYPE_NONE;
+ pNV->pzName = pNV->v.strVal;
+
+ } else {
+ pNV->valType = OPARG_TYPE_STRING;
+ if (dataLen > 0)
+ memcpy( pNV->v.strVal, pzValue, dataLen );
+ pNV->v.strVal[dataLen] = NUL;
+ pNV->pzName = pNV->v.strVal + dataLen + 1;
+ }
+
+ memcpy( pNV->pzName, pzName, nameLen );
+ pNV->pzName[ nameLen ] = NUL;
+ addArgListEntry( pp, pNV );
+ return pNV;
+}
+
+
+/* addBoolValue
+ *
+ * Associate a name with either a string or no value.
+ */
+static tOptionValue*
+addBoolValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen )
+{
+ tOptionValue* pNV;
+ size_t sz = nameLen + sizeof(*pNV) + 1;
+
+ pNV = AGALOC( sz, "option name/bool value pair" );
+ if (pNV == NULL)
+ return NULL;
+ while (isspace( (int)*pzValue ) && (dataLen > 0)) {
+ dataLen--; pzValue++;
+ }
+ if (dataLen == 0)
+ pNV->v.boolVal = 0;
+ else if (isdigit( (int)*pzValue ))
+ pNV->v.boolVal = atoi( pzValue );
+ else switch (*pzValue) {
+ case 'f':
+ case 'F':
+ case 'n':
+ case 'N':
+ pNV->v.boolVal = 0; break;
+ default:
+ pNV->v.boolVal = 1;
+ }
+
+ pNV->valType = OPARG_TYPE_BOOLEAN;
+ pNV->pzName = (char*)(pNV + 1);
+ memcpy( pNV->pzName, pzName, nameLen );
+ pNV->pzName[ nameLen ] = NUL;
+ addArgListEntry( pp, pNV );
+ return pNV;
+}
+
+
+/* addNumberValue
+ *
+ * Associate a name with either a string or no value.
+ */
+static tOptionValue*
+addNumberValue( void** pp, char const* pzName, size_t nameLen,
+ char const* pzValue, size_t dataLen )
+{
+ tOptionValue* pNV;
+ size_t sz = nameLen + sizeof(*pNV) + 1;
+
+ pNV = AGALOC( sz, "option name/bool value pair" );
+ if (pNV == NULL)
+ return NULL;
+ while (isspace( (int)*pzValue ) && (dataLen > 0)) {
+ dataLen--; pzValue++;
+ }
+ if (dataLen == 0)
+ pNV->v.boolVal = 0;
+ else
+ pNV->v.boolVal = atoi( pzValue );
+
+ pNV->valType = OPARG_TYPE_NUMERIC;
+ pNV->pzName = (char*)(pNV + 1);
+ memcpy( pNV->pzName, pzName, nameLen );
+ pNV->pzName[ nameLen ] = NUL;
+ addArgListEntry( pp, pNV );
+ return pNV;
+}
+
+
+/* addNestedValue
+ *
+ * Associate a name with either a string or no value.
+ */
+static tOptionValue*
+addNestedValue( void** pp, char const* pzName, size_t nameLen,
+ char* pzValue, size_t dataLen )
+{
+ tOptionValue* pNV;
+
+ if (dataLen == 0) {
+ size_t sz = nameLen + sizeof(*pNV) + 1;
+ pNV = AGALOC( sz, "empty nested value pair" );
+ if (pNV == NULL)
+ return NULL;
+ pNV->v.nestVal = NULL;
+ pNV->valType = OPARG_TYPE_HIERARCHY;
+ pNV->pzName = (char*)(pNV + 1);
+ memcpy( pNV->pzName, pzName, nameLen );
+ pNV->pzName[ nameLen ] = NUL;
+
+ } else {
+ pNV = optionLoadNested( pzValue, pzName, nameLen );
+ }
+
+ if (pNV != NULL)
+ addArgListEntry( pp, pNV );
+
+ return pNV;
+}
+
+
+/* scanNameEntry
+ *
+ * We have an entry that starts with a name. Find the end of it, cook it
+ * (if called for) and create the name/value association.
+ */
+static char const*
+scanNameEntry(char const* pzName, tOptionValue* pRes)
+{
+ tOptionValue* pNV;
+ char const * pzScan = pzName+1;
+ char const * pzVal;
+ size_t nameLen = 1;
+ size_t dataLen = 0;
+
+ while (ISNAMECHAR( (int)*pzScan )) { pzScan++; nameLen++; }
+
+ while (isspace( (int)*pzScan )) {
+ char ch = *(pzScan++);
+ if ((ch == '\n') || (ch == ',')) {
+ addStringValue(&(pRes->v.nestVal), pzName, nameLen, NULL,(size_t)0);
+ return pzScan - 1;
+ }
+ }
+
+ switch (*pzScan) {
+ case '=':
+ case ':':
+ while (isspace( (int)*++pzScan )) ;
+ switch (*pzScan) {
+ case ',': goto comma_char;
+ case '"':
+ case '\'': goto quote_char;
+ case NUL: goto nul_byte;
+ default: goto default_char;
+ }
+
+ case ',':
+ comma_char:
+ pzScan++;
+ /* FALLTHROUGH */
+
+ case NUL:
+ nul_byte:
+ addStringValue(&(pRes->v.nestVal), pzName, nameLen, NULL, (size_t)0);
+ break;
+
+ case '"':
+ case '\'':
+ quote_char:
+ pzVal = pzScan;
+ pzScan = scanQuotedString( pzScan );
+ dataLen = pzScan - pzVal;
+ pNV = addStringValue( &(pRes->v.nestVal), pzName, nameLen, pzVal,
+ dataLen );
+ if ((pNV != NULL) && (option_load_mode == OPTION_LOAD_COOKED))
+ ao_string_cook( pNV->v.strVal, NULL );
+ break;
+
+ default:
+ default_char:
+ /*
+ * We have found some strange text value. It ends with a newline
+ * or a comma.
+ */
+ pzVal = pzScan;
+ for (;;) {
+ char ch = *(pzScan++);
+ switch (ch) {
+ case NUL:
+ pzScan--;
+ dataLen = pzScan - pzVal;
+ goto string_done;
+ /* FALLTHROUGH */
+
+ case '\n':
+ if ( (pzScan > pzVal + 2)
+ && (pzScan[-2] == '\\')
+ && (pzScan[ 0] != NUL))
+ continue;
+ /* FALLTHROUGH */
+
+ case ',':
+ dataLen = (pzScan - pzVal) - 1;
+ string_done:
+ pNV = addStringValue( &(pRes->v.nestVal), pzName, nameLen,
+ pzVal, dataLen );
+ if (pNV != NULL)
+ removeBackslashes( pNV->v.strVal );
+ goto leave_scan_name;
+ }
+ }
+ break;
+ } leave_scan_name:;
+
+ return pzScan;
+}
+
+
+/* scanXmlEntry
+ *
+ * We've found a '<' character. We ignore this if it is a comment or a
+ * directive. If it is something else, then whatever it is we are looking
+ * at is bogus. Returning NULL stops processing.
+ */
+static char const*
+scanXmlEntry( char const* pzName, tOptionValue* pRes )
+{
+ size_t nameLen = 1, valLen = 0;
+ char const* pzScan = ++pzName;
+ char const* pzVal;
+ tOptionValue valu;
+ tOptionValue* pNewVal;
+ tOptionLoadMode save_mode = option_load_mode;
+
+ if (! isalpha((int)*pzName)) {
+ switch (*pzName) {
+ default:
+ pzName = NULL;
+ break;
+
+ case '!':
+ pzName = strstr( pzName, "-->" );
+ if (pzName != NULL)
+ pzName += 3;
+ break;
+
+ case '?':
+ pzName = strchr( pzName, '>' );
+ if (pzName != NULL)
+ pzName++;
+ break;
+ }
+ return pzName;
+ }
+
+ while (isalpha( (int)*++pzScan )) nameLen++;
+ if (nameLen > 64)
+ return NULL;
+ valu.valType = OPARG_TYPE_STRING;
+
+ switch (*pzScan) {
+ case ' ':
+ case '\t':
+ pzScan = parseAttributes(
+ NULL, (char*)pzScan, &option_load_mode, &valu );
+ if (*pzScan == '>') {
+ pzScan++;
+ break;
+ }
+
+ if (*pzScan != '/') {
+ option_load_mode = save_mode;
+ return NULL;
+ }
+ /* FALLTHROUGH */
+
+ case '/':
+ if (*++pzScan != '>') {
+ option_load_mode = save_mode;
+ return NULL;
+ }
+ addStringValue(&(pRes->v.nestVal), pzName, nameLen, NULL, (size_t)0);
+ option_load_mode = save_mode;
+ return pzScan+2;
+
+ default:
+ option_load_mode = save_mode;
+ return NULL;
+
+ case '>':
+ pzScan++;
+ break;
+ }
+
+ pzVal = pzScan;
+
+ {
+ char z[68];
+ char* pzD = z;
+ int ct = nameLen;
+ char const* pzS = pzName;
+
+ *(pzD++) = '<';
+ *(pzD++) = '/';
+
+ do {
+ *(pzD++) = *(pzS++);
+ } while (--ct > 0);
+ *(pzD++) = '>';
+ *pzD = NUL;
+
+ pzScan = strstr( pzScan, z );
+ if (pzScan == NULL) {
+ option_load_mode = save_mode;
+ return NULL;
+ }
+ valLen = (pzScan - pzVal);
+ pzScan += nameLen + 3;
+ while (isspace( (int)*pzScan )) pzScan++;
+ }
+
+ switch (valu.valType) {
+ case OPARG_TYPE_NONE:
+ addStringValue( &(pRes->v.nestVal), pzName, nameLen, NULL, (size_t)0);
+ break;
+
+ case OPARG_TYPE_STRING:
+ pNewVal = addStringValue(
+ &(pRes->v.nestVal), pzName, nameLen, pzVal, valLen);
+
+ if (option_load_mode == OPTION_LOAD_KEEP)
+ break;
+ mungeString( pNewVal->v.strVal, option_load_mode );
+ break;
+
+ case OPARG_TYPE_BOOLEAN:
+ addBoolValue( &(pRes->v.nestVal), pzName, nameLen, pzVal, valLen );
+ break;
+
+ case OPARG_TYPE_NUMERIC:
+ addNumberValue( &(pRes->v.nestVal), pzName, nameLen, pzVal, valLen );
+ break;
+
+ case OPARG_TYPE_HIERARCHY:
+ {
+ char* pz = AGALOC( valLen+1, "hierarchical scan" );
+ if (pz == NULL)
+ break;
+ memcpy( pz, pzVal, valLen );
+ pz[valLen] = NUL;
+ addNestedValue( &(pRes->v.nestVal), pzName, nameLen, pz, valLen );
+ AGFREE(pz);
+ break;
+ }
+
+ case OPARG_TYPE_ENUMERATION:
+ case OPARG_TYPE_MEMBERSHIP:
+ default:
+ break;
+ }
+
+ option_load_mode = save_mode;
+ return pzScan;
+}
+
+
+/* unloadNestedArglist
+ *
+ * Deallocate a list of option arguments. This must have been gotten from
+ * a hierarchical option argument, not a stacked list of strings. It is
+ * an internal call, so it is not validated. The caller is responsible for
+ * knowing what they are doing.
+ */
+static void
+unloadNestedArglist( tArgList* pAL )
+{
+ int ct = pAL->useCt;
+ tCC** ppNV = pAL->apzArgs;
+
+ while (ct-- > 0) {
+ tOptionValue* pNV = (tOptionValue*)(void*)*(ppNV++);
+ if (pNV->valType == OPARG_TYPE_HIERARCHY)
+ unloadNestedArglist( pNV->v.nestVal );
+ AGFREE( pNV );
+ }
+
+ AGFREE( (void*)pAL );
+}
+
+
+/*=export_func optionUnloadNested
+ *
+ * what: Deallocate the memory for a nested value
+ * arg: + tOptionValue const * + pOptVal + the hierarchical value +
+ *
+ * doc:
+ * A nested value needs to be deallocated. The pointer passed in should
+ * have been gotten from a call to @code{configFileLoad()} (See
+ * @pxref{libopts-configFileLoad}).
+=*/
+void
+optionUnloadNested( tOptionValue const * pOV )
+{
+ if (pOV == NULL) return;
+ if (pOV->valType != OPARG_TYPE_HIERARCHY) {
+ errno = EINVAL;
+ return;
+ }
+
+ unloadNestedArglist( pOV->v.nestVal );
+
+ AGFREE( (void*)pOV );
+}
+
+
+/* sortNestedList
+ *
+ * This is a _stable_ sort. The entries are sorted alphabetically,
+ * but within entries of the same name the ordering is unchanged.
+ * Typically, we also hope the input is sorted.
+ */
+static void
+sortNestedList( tArgList* pAL )
+{
+ int ix;
+ int lm = pAL->useCt;
+
+ /*
+ * This loop iterates "useCt" - 1 times.
+ */
+ for (ix = 0; ++ix < lm;) {
+ int iy = ix-1;
+ tOptionValue* pNewNV = (tOptionValue*)(void*)(pAL->apzArgs[ix]);
+ tOptionValue* pOldNV = (tOptionValue*)(void*)(pAL->apzArgs[iy]);
+
+ /*
+ * For as long as the new entry precedes the "old" entry,
+ * move the old pointer. Stop before trying to extract the
+ * "-1" entry.
+ */
+ while (strcmp( pOldNV->pzName, pNewNV->pzName ) > 0) {
+ pAL->apzArgs[iy+1] = (void*)pOldNV;
+ pOldNV = (tOptionValue*)(void*)(pAL->apzArgs[--iy]);
+ if (iy < 0)
+ break;
+ }
+
+ /*
+ * Always store the pointer. Sometimes it is redundant,
+ * but the redundancy is cheaper than a test and branch sequence.
+ */
+ pAL->apzArgs[iy+1] = (void*)pNewNV;
+ }
+}
+
+
+/* optionLoadNested
+ * private:
+ *
+ * what: parse a hierarchical option argument
+ * arg: + char const* + pzTxt + the text to scan +
+ * arg: + char const* + pzName + the name for the text +
+ * arg: + size_t + nameLen + the length of "name" +
+ *
+ * ret_type: tOptionValue*
+ * ret_desc: An allocated, compound value structure
+ *
+ * doc:
+ * A block of text represents a series of values. It may be an
+ * entire configuration file, or it may be an argument to an
+ * option that takes a hierarchical value.
+ */
+LOCAL tOptionValue*
+optionLoadNested(char const* pzTxt, char const* pzName, size_t nameLen)
+{
+ tOptionValue* pRes;
+ tArgList* pAL;
+
+ /*
+ * Make sure we have some data and we have space to put what we find.
+ */
+ if (pzTxt == NULL) {
+ errno = EINVAL;
+ return NULL;
+ }
+ while (isspace( (int)*pzTxt )) pzTxt++;
+ if (*pzTxt == NUL) {
+ errno = ENOENT;
+ return NULL;
+ }
+ pRes = AGALOC( sizeof(*pRes) + nameLen + 1, "nested args" );
+ if (pRes == NULL) {
+ errno = ENOMEM;
+ return NULL;
+ }
+ pRes->valType = OPARG_TYPE_HIERARCHY;
+ pRes->pzName = (char*)(pRes + 1);
+ memcpy( pRes->pzName, pzName, nameLen );
+ pRes->pzName[ nameLen ] = NUL;
+
+ pAL = AGALOC( sizeof(*pAL), "nested arg list" );
+ if (pAL == NULL) {
+ AGFREE( pRes );
+ return NULL;
+ }
+ pRes->v.nestVal = pAL;
+ pAL->useCt = 0;
+ pAL->allocCt = MIN_ARG_ALLOC_CT;
+
+ /*
+ * Scan until we hit a NUL.
+ */
+ do {
+ while (isspace( (int)*pzTxt )) pzTxt++;
+ if (isalpha( (int)*pzTxt )) {
+ pzTxt = scanNameEntry( pzTxt, pRes );
+ }
+ else switch (*pzTxt) {
+ case NUL: goto scan_done;
+ case '<': pzTxt = scanXmlEntry( pzTxt, pRes );
+ if (*pzTxt == ',') pzTxt++; break;
+ case '#': pzTxt = strchr( pzTxt, '\n' ); break;
+ default: goto woops;
+ }
+ } while (pzTxt != NULL); scan_done:;
+
+ pAL = pRes->v.nestVal;
+ if (pAL->useCt != 0) {
+ sortNestedList( pAL );
+ return pRes;
+ }
+
+ woops:
+ AGFREE( pRes->v.nestVal );
+ AGFREE( pRes );
+ return NULL;
+}
+
+
+/*=export_func optionNestedVal
+ * private:
+ *
+ * what: parse a hierarchical option argument
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Nested value was found on the command line
+=*/
+void
+optionNestedVal( tOptions* pOpts, tOptDesc* pOD )
+{
+ tOptionValue* pOV = optionLoadNested(
+ pOD->optArg.argString, pOD->pz_Name, strlen(pOD->pz_Name));
+
+ if (pOV != NULL)
+ addArgListEntry( &(pOD->optCookie), (void*)pOV );
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/nested.c */
diff --git a/contrib/ntp/sntp/libopts/numeric.c b/contrib/ntp/sntp/libopts/numeric.c
new file mode 100644
index 0000000..05ee9b5
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/numeric.c
@@ -0,0 +1,93 @@
+
+/*
+ * $Id: numeric.c,v 4.11 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 10:28:20 bkorb"
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/*=export_func optionNumericVal
+ * private:
+ *
+ * what: Decipher a boolean value
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Decipher a numeric value.
+=*/
+void
+optionNumericVal( tOptions* pOpts, tOptDesc* pOD )
+{
+ char* pz;
+ long val;
+
+ /*
+ * Numeric options may have a range associated with it.
+ * If it does, the usage procedure requests that it be
+ * emitted by passing a NULL pOD pointer.
+ */
+ if ((pOD == NULL) || (pOD->optArg.argString == NULL))
+ return;
+
+ val = strtol( pOD->optArg.argString, &pz, 0 );
+ if (*pz != NUL) {
+ fprintf( stderr, zNotNumber, pOpts->pzProgName, pOD->optArg.argString );
+ (*(pOpts->pUsageProc))(pOpts, EXIT_FAILURE);
+ }
+
+ if (pOD->fOptState & OPTST_ALLOC_ARG) {
+ AGFREE(pOD->optArg.argString);
+ pOD->fOptState &= ~OPTST_ALLOC_ARG;
+ }
+
+ pOD->optArg.argInt = val;
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/numeric.c */
diff --git a/contrib/ntp/sntp/libopts/pgusage.c b/contrib/ntp/sntp/libopts/pgusage.c
new file mode 100644
index 0000000..c417c63
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/pgusage.c
@@ -0,0 +1,157 @@
+
+/*
+ * $Id: pgusage.c,v 4.12 2007/04/28 22:19:23 bkorb Exp $
+ * Time-stamp: "2006-07-16 08:13:26 bkorb"
+ *
+ * Automated Options Paged Usage module.
+ *
+ * This routine will run run-on options through a pager so the
+ * user may examine, print or edit them at their leisure.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+tePagerState pagerState = PAGER_STATE_INITIAL;
+
+/*=export_func optionPagedUsage
+ * private:
+ *
+ * what: Decipher a boolean value
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Run the usage output through a pager.
+ * This is very handy if it is very long.
+=*/
+void
+optionPagedUsage( tOptions* pOptions, tOptDesc* pOD )
+{
+#if defined(__windows__) && !defined(__CYGWIN__)
+ (*pOptions->pUsageProc)( pOptions, EXIT_SUCCESS );
+#else
+ static pid_t my_pid;
+ char zPageUsage[ 1024 ];
+
+ /*
+ * IF we are being called after the usage proc is done
+ * (and thus has called "exit(2)")
+ * THEN invoke the pager to page through the usage file we created.
+ */
+ switch (pagerState) {
+ case PAGER_STATE_INITIAL:
+ {
+ my_pid = getpid();
+#ifdef HAVE_SNPRINTF
+ snprintf(zPageUsage, sizeof(zPageUsage), "/tmp/use.%lu", (tAoUL)my_pid);
+#else
+ sprintf( zPageUsage, "/tmp/use.%lu", (tAoUL)my_pid );
+#endif
+ unlink( zPageUsage );
+
+ /*
+ * Set usage output to this temporary file
+ */
+ option_usage_fp = fopen( zPageUsage, "w" FOPEN_BINARY_FLAG );
+ if (option_usage_fp == NULL)
+ _exit( EXIT_FAILURE );
+
+ pagerState = PAGER_STATE_READY;
+
+ /*
+ * Set up so this routine gets called during the exit logic
+ */
+ atexit( (void(*)(void))optionPagedUsage );
+
+ /*
+ * The usage procedure will now put the usage information into
+ * the temporary file we created above.
+ */
+ (*pOptions->pUsageProc)( pOptions, EXIT_SUCCESS );
+
+ /*NOTREACHED*/
+ _exit( EXIT_FAILURE );
+ }
+
+ case PAGER_STATE_READY:
+ {
+ tSCC zPage[] = "%1$s /tmp/use.%2$lu ; rm -f /tmp/use.%2$lu";
+ tCC* pzPager = (tCC*)getenv( "PAGER" );
+
+ /*
+ * Use the "more(1)" program if "PAGER" has not been defined
+ */
+ if (pzPager == NULL)
+ pzPager = "more";
+
+ /*
+ * Page the file and remove it when done.
+ */
+#ifdef HAVE_SNPRINTF
+ snprintf(zPageUsage, sizeof(zPageUsage), zPage, pzPager, (tAoUL)my_pid);
+#else
+ sprintf( zPageUsage, zPage, pzPager, (tAoUL)my_pid );
+#endif
+ fclose( stderr );
+ dup2( STDOUT_FILENO, STDERR_FILENO );
+
+ (void)system( zPageUsage );
+ }
+
+ case PAGER_STATE_CHILD:
+ /*
+ * This is a child process used in creating shell script usage.
+ */
+ break;
+ }
+#endif
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/pgusage.c */
diff --git a/contrib/ntp/sntp/libopts/proto.h b/contrib/ntp/sntp/libopts/proto.h
new file mode 100644
index 0000000..e87ab87
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/proto.h
@@ -0,0 +1,91 @@
+/* -*- buffer-read-only: t -*- vi: set ro:
+ *
+ * Prototypes for autoopts
+ * Generated Sat May 5 12:02:36 PDT 2007
+ */
+#ifndef AUTOOPTS_PROTO_H_GUARD
+#define AUTOOPTS_PROTO_H_GUARD 1
+#ifndef LOCAL
+# define LOCAL extern
+# define REDEF_LOCAL 1
+#else
+# undef REDEF_LOCAL
+#endif
+/*\n * Extracted from autoopts.c\n */
+LOCAL void *
+ao_malloc( size_t sz );
+
+LOCAL void *
+ao_realloc( void *p, size_t sz );
+
+LOCAL void
+ao_free( void *p );
+
+LOCAL char *
+ao_strdup( char const *str );
+
+LOCAL tSuccess
+handleOption( tOptions* pOpts, tOptState* pOptState );
+
+LOCAL tSuccess
+longOptionFind( tOptions* pOpts, char* pzOptName, tOptState* pOptState );
+
+LOCAL tSuccess
+shortOptionFind( tOptions* pOpts, uint_t optValue, tOptState* pOptState );
+
+LOCAL tSuccess
+doImmediateOpts( tOptions* pOpts );
+
+LOCAL tSuccess
+doRegularOpts( tOptions* pOpts );
+
+/*\n * Extracted from configfile.c\n */
+LOCAL void
+internalFileLoad( tOptions* pOpts );
+
+LOCAL char*
+parseAttributes(
+ tOptions* pOpts,
+ char* pzText,
+ tOptionLoadMode* pMode,
+ tOptionValue* pType );
+
+LOCAL tSuccess
+validateOptionsStruct( tOptions* pOpts, char const* pzProgram );
+
+/*\n * Extracted from environment.c\n */
+LOCAL void
+doPrognameEnv( tOptions* pOpts, teEnvPresetType type );
+
+LOCAL void
+doEnvPresets( tOptions* pOpts, teEnvPresetType type );
+
+/*\n * Extracted from load.c\n */
+LOCAL void
+mungeString( char* pzTxt, tOptionLoadMode mode );
+
+LOCAL void
+loadOptionLine(
+ tOptions* pOpts,
+ tOptState* pOS,
+ char* pzLine,
+ tDirection direction,
+ tOptionLoadMode load_mode );
+
+/*\n * Extracted from nested.c\n */
+LOCAL tOptionValue*
+optionLoadNested(char const* pzTxt, char const* pzName, size_t nameLen);
+
+/*\n * Extracted from sort.c\n */
+LOCAL void
+optionSort( tOptions* pOpts );
+
+/*\n * Extracted from stack.c\n */
+LOCAL void
+addArgListEntry( void** ppAL, void* entry );
+
+#ifdef REDEF_LOCAL
+# undef LOCAL
+# define LOCAL
+#endif
+#endif /* AUTOOPTS_PROTO_H_GUARD */
diff --git a/contrib/ntp/sntp/libopts/putshell.c b/contrib/ntp/sntp/libopts/putshell.c
new file mode 100644
index 0000000..93d9ef5
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/putshell.c
@@ -0,0 +1,335 @@
+
+/*
+ * $Id: putshell.c,v 4.18 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 10:29:39 bkorb"
+ *
+ * This module will interpret the options set in the tOptions
+ * structure and print them to standard out in a fashion that
+ * will allow them to be interpreted by the Bourne or Korn shells.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+putQuotedStr( tCC* pzStr );
+/* = = = END-STATIC-FORWARD = = = */
+
+/*
+ * Make sure embedded single quotes come out okay. The initial quote has
+ * been emitted and the closing quote will be upon return.
+ */
+static void
+putQuotedStr( tCC* pzStr )
+{
+ /*
+ * Handle empty strings to make the rest of the logic simpler.
+ */
+ if ((pzStr == NULL) || (*pzStr == NUL)) {
+ fputs( "''", stdout );
+ return;
+ }
+
+ /*
+ * Emit any single quotes/apostrophes at the start of the string and
+ * bail if that is all we need to do.
+ */
+ while (*pzStr == '\'') {
+ fputs( "\\'", stdout );
+ pzStr++;
+ }
+ if (*pzStr == NUL)
+ return;
+
+ /*
+ * Start the single quote string
+ */
+ fputc( '\'', stdout );
+ for (;;) {
+ tCC* pz = strchr( pzStr, '\'' );
+ if (pz == NULL)
+ break;
+
+ /*
+ * Emit the string up to the single quote (apostrophe) we just found.
+ */
+ (void)fwrite( pzStr, (size_t)(pz - pzStr), (size_t)1, stdout );
+ fputc( '\'', stdout );
+ pzStr = pz;
+
+ /*
+ * Emit an escaped apostrophe for every one we find.
+ * If that ends the string, do not re-open the single quotes.
+ */
+ while (*++pzStr == '\'') fputs( "\\'", stdout );
+ if (*pzStr == NUL)
+ return;
+
+ fputc( '\'', stdout );
+ }
+
+ /*
+ * If we broke out of the loop, we must still emit the remaining text
+ * and then close the single quote string.
+ */
+ fputs( pzStr, stdout );
+ fputc( '\'', stdout );
+}
+
+
+/*=export_func optionPutShell
+ * what: write a portable shell script to parse options
+ * private:
+ * arg: tOptions*, pOpts, the program options descriptor
+ * doc: This routine will emit portable shell script text for parsing
+ * the options described in the option definitions.
+=*/
+void
+optionPutShell( tOptions* pOpts )
+{
+ int optIx = 0;
+ tSCC zOptCtFmt[] = "OPTION_CT=%d\nexport OPTION_CT\n";
+ tSCC zOptNumFmt[] = "%1$s_%2$s=%3$d # 0x%3$X\nexport %1$s_%2$s\n";
+ tSCC zOptDisabl[] = "%1$s_%2$s=%3$s\nexport %1$s_%2$s\n";
+ tSCC zOptValFmt[] = "%s_%s=";
+ tSCC zOptEnd[] = "\nexport %s_%s\n";
+ tSCC zFullOptFmt[]= "%1$s_%2$s='%3$s'\nexport %1$s_%2$s\n";
+ tSCC zEquivMode[] = "%1$s_%2$s_MODE='%3$s'\nexport %1$s_%2$s_MODE\n";
+
+ printf( zOptCtFmt, pOpts->curOptIdx-1 );
+
+ do {
+ tOptDesc* pOD = pOpts->pOptDesc + optIx;
+
+ if (SKIP_OPT(pOD))
+ continue;
+
+ /*
+ * Equivalence classes are hard to deal with. Where the
+ * option data wind up kind of squishes around. For the purposes
+ * of emitting shell state, they are not recommended, but we'll
+ * do something. I guess we'll emit the equivalenced-to option
+ * at the point in time when the base option is found.
+ */
+ if (pOD->optEquivIndex != NO_EQUIVALENT)
+ continue; /* equivalence to a different option */
+
+ /*
+ * Equivalenced to a different option. Process the current option
+ * as the equivalenced-to option. Keep the persistent state bits,
+ * but copy over the set-state bits.
+ */
+ if (pOD->optActualIndex != optIx) {
+ tOptDesc* p = pOpts->pOptDesc + pOD->optActualIndex;
+ p->optArg = pOD->optArg;
+ p->fOptState &= OPTST_PERSISTENT_MASK;
+ p->fOptState |= pOD->fOptState & ~OPTST_PERSISTENT_MASK;
+ printf( zEquivMode, pOpts->pzPROGNAME, pOD->pz_NAME, p->pz_NAME );
+ pOD = p;
+ }
+
+ /*
+ * If the argument type is a set membership bitmask, then we always
+ * emit the thing. We do this because it will always have some sort
+ * of bitmask value and we need to emit the bit values.
+ */
+ if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_MEMBERSHIP) {
+ char const * pz;
+ uintptr_t val = 1;
+ printf( zOptNumFmt, pOpts->pzPROGNAME, pOD->pz_NAME,
+ (int)(uintptr_t)(pOD->optCookie) );
+ pOD->optCookie = (void*)(uintptr_t)~0UL;
+ (*(pOD->pOptProc))( (tOptions*)2UL, pOD );
+
+ /*
+ * We are building the typeset list. The list returned starts with
+ * 'none + ' for use by option saving stuff. We must ignore that.
+ */
+ pz = pOD->optArg.argString + 7;
+ while (*pz != NUL) {
+ printf( "typeset -x -i %s_", pOD->pz_NAME );
+ pz += strspn( pz, " +\t\n\f" );
+ for (;;) {
+ int ch = *(pz++);
+ if (islower( ch )) fputc( toupper( ch ), stdout );
+ else if (isalnum( ch )) fputc( ch, stdout );
+ else if (isspace( ch )
+ || (ch == '+')) goto name_done;
+ else if (ch == NUL) { pz--; goto name_done; }
+ else fputc( '_', stdout );
+ } name_done:;
+ printf( "=%1$lu # 0x%1$lX\n", (unsigned long)val );
+ val <<= 1;
+ }
+
+ AGFREE(pOD->optArg.argString);
+ pOD->optArg.argString = NULL;
+ pOD->fOptState &= ~OPTST_ALLOC_ARG;
+ continue;
+ }
+
+ /*
+ * IF the option was either specified or it wakes up enabled,
+ * then we will emit information. Otherwise, skip it.
+ * The idea is that if someone defines an option to initialize
+ * enabled, we should tell our shell script that it is enabled.
+ */
+ if (UNUSED_OPT( pOD ) && DISABLED_OPT( pOD ))
+ continue;
+
+ /*
+ * Handle stacked arguments
+ */
+ if ( (pOD->fOptState & OPTST_STACKED)
+ && (pOD->optCookie != NULL) ) {
+ tSCC zOptCookieCt[] = "%1$s_%2$s_CT=%3$d\nexport %1$s_%2$s_CT\n";
+
+ tArgList* pAL = (tArgList*)pOD->optCookie;
+ tCC** ppz = pAL->apzArgs;
+ int ct = pAL->useCt;
+
+ printf( zOptCookieCt, pOpts->pzPROGNAME, pOD->pz_NAME, ct );
+
+ while (--ct >= 0) {
+ tSCC numarg_z[] = "%s_%s_%d=";
+ tSCC end_z[] = "\nexport %s_%s_%d\n";
+
+ printf( numarg_z, pOpts->pzPROGNAME, pOD->pz_NAME,
+ pAL->useCt - ct );
+ putQuotedStr( *(ppz++) );
+ printf( end_z, pOpts->pzPROGNAME, pOD->pz_NAME,
+ pAL->useCt - ct );
+ }
+ }
+
+ /*
+ * If the argument has been disabled,
+ * Then set its value to the disablement string
+ */
+ else if ((pOD->fOptState & OPTST_DISABLED) != 0)
+ printf( zOptDisabl, pOpts->pzPROGNAME, pOD->pz_NAME,
+ (pOD->pz_DisablePfx != NULL)
+ ? pOD->pz_DisablePfx : "false" );
+
+ /*
+ * If the argument type is numeric, the last arg pointer
+ * is really the VALUE of the string that was pointed to.
+ */
+ else if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_NUMERIC)
+ printf( zOptNumFmt, pOpts->pzPROGNAME, pOD->pz_NAME,
+ (int)pOD->optArg.argInt );
+
+ /*
+ * If the argument type is an enumeration, then it is much
+ * like a text value, except we call the callback function
+ * to emit the value corresponding to the "optArg" number.
+ */
+ else if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_ENUMERATION) {
+ printf( zOptValFmt, pOpts->pzPROGNAME, pOD->pz_NAME );
+ fputc( '\'', stdout );
+ (*(pOD->pOptProc))( (tOptions*)1UL, pOD );
+ fputc( '\'', stdout );
+ printf( zOptEnd, pOpts->pzPROGNAME, pOD->pz_NAME );
+ }
+
+ /*
+ * If the argument type is numeric, the last arg pointer
+ * is really the VALUE of the string that was pointed to.
+ */
+ else if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_BOOLEAN)
+ printf( zFullOptFmt, pOpts->pzPROGNAME, pOD->pz_NAME,
+ (pOD->optArg.argBool == 0) ? "false" : "true" );
+
+ /*
+ * IF the option has an empty value,
+ * THEN we set the argument to the occurrence count.
+ */
+ else if ( (pOD->optArg.argString == NULL)
+ || (pOD->optArg.argString[0] == NUL) )
+
+ printf( zOptNumFmt, pOpts->pzPROGNAME, pOD->pz_NAME,
+ pOD->optOccCt );
+
+ /*
+ * This option has a text value
+ */
+ else {
+ printf( zOptValFmt, pOpts->pzPROGNAME, pOD->pz_NAME );
+ putQuotedStr( pOD->optArg.argString );
+ printf( zOptEnd, pOpts->pzPROGNAME, pOD->pz_NAME );
+ }
+ } while (++optIx < pOpts->presetOptCt );
+
+ if ( ((pOpts->fOptSet & OPTPROC_REORDER) != 0)
+ && (pOpts->curOptIdx < pOpts->origArgCt)) {
+ fputs( "set --", stdout );
+ for (optIx = pOpts->curOptIdx; optIx < pOpts->origArgCt; optIx++) {
+ char* pzArg = pOpts->origArgVect[ optIx ];
+ if (strchr( pzArg, '\'' ) == NULL)
+ printf( " '%s'", pzArg );
+ else {
+ fputs( " '", stdout );
+ for (;;) {
+ char ch = *(pzArg++);
+ switch (ch) {
+ case '\'': fputs( "'\\''", stdout ); break;
+ case NUL: goto arg_done;
+ default: fputc( ch, stdout ); break;
+ }
+ } arg_done:;
+ fputc( '\'', stdout );
+ }
+ }
+ fputs( "\nOPTION_CT=0\n", stdout );
+ }
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/putshell.c */
diff --git a/contrib/ntp/sntp/libopts/restore.c b/contrib/ntp/sntp/libopts/restore.c
new file mode 100644
index 0000000..91eac08
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/restore.c
@@ -0,0 +1,250 @@
+
+/*
+ * restore.c $Id: restore.c,v 4.10 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 14:13:17 bkorb"
+ *
+ * This module's routines will save the current option state to memory
+ * and restore it. If saved prior to the initial optionProcess call,
+ * then the initial state will be restored.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/*
+ * optionFixupSavedOpts Really, it just wipes out option state for
+ * options that are troublesome to copy. viz., stacked strings and
+ * hierarcicaly valued option args. We do duplicate string args that
+ * have been marked as allocated though.
+ */
+static void
+fixupSavedOptionArgs(tOptions* pOpts)
+{
+ tOptions* p = pOpts->pSavedState;
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int ct = pOpts->optCt;
+
+ /*
+ * Make sure that allocated stuff is only referenced in the
+ * archived copy of the data.
+ */
+ for (; ct-- > 0; pOD++) {
+ switch (OPTST_GET_ARGTYPE(pOD->fOptState)) {
+ case OPARG_TYPE_STRING:
+ if (pOD->fOptState & OPTST_STACKED) {
+ tOptDesc* q = p->pOptDesc + (pOD - pOpts->pOptDesc);
+ q->optCookie = NULL;
+ }
+ if (pOD->fOptState & OPTST_ALLOC_ARG) {
+ tOptDesc* q = p->pOptDesc + (pOD - pOpts->pOptDesc);
+ AGDUPSTR(q->optArg.argString, pOD->optArg.argString, "arg");
+ }
+ break;
+
+ case OPARG_TYPE_HIERARCHY:
+ {
+ tOptDesc* q = p->pOptDesc + (pOD - pOpts->pOptDesc);
+ q->optCookie = NULL;
+ }
+ }
+ }
+}
+
+/*=export_func optionSaveState
+ *
+ * what: saves the option state to memory
+ * arg: tOptions*, pOpts, program options descriptor
+ *
+ * doc:
+ *
+ * This routine will allocate enough memory to save the current option
+ * processing state. If this routine has been called before, that memory
+ * will be reused. You may only save one copy of the option state. This
+ * routine may be called before optionProcess(3AO). If you do call it
+ * before the first call to optionProcess, then you may also change the
+ * contents of argc/argv after you call optionRestore(3AO)
+ *
+ * In fact, more strongly put: it is safest to only use this function
+ * before having processed any options. In particular, the saving and
+ * restoring of stacked string arguments and hierarchical values is
+ * disabled. The values are not saved.
+ *
+ * err: If it fails to allocate the memory,
+ * it will print a message to stderr and exit.
+ * Otherwise, it will always succeed.
+=*/
+void
+optionSaveState(tOptions* pOpts)
+{
+ tOptions* p = (tOptions*)pOpts->pSavedState;
+
+ if (p == NULL) {
+ size_t sz = sizeof( *pOpts ) + (pOpts->optCt * sizeof( tOptDesc ));
+ p = AGALOC( sz, "saved option state" );
+ if (p == NULL) {
+ tCC* pzName = pOpts->pzProgName;
+ if (pzName == NULL) {
+ pzName = pOpts->pzPROGNAME;
+ if (pzName == NULL)
+ pzName = zNil;
+ }
+ fprintf( stderr, zCantSave, pzName, sz );
+ exit( EXIT_FAILURE );
+ }
+
+ pOpts->pSavedState = p;
+ }
+
+ memcpy( p, pOpts, sizeof( *p ));
+ memcpy( p + 1, pOpts->pOptDesc, p->optCt * sizeof( tOptDesc ));
+
+ fixupSavedOptionArgs(pOpts);
+}
+
+
+/*=export_func optionRestore
+ *
+ * what: restore option state from memory copy
+ * arg: tOptions*, pOpts, program options descriptor
+ *
+ * doc: Copy back the option state from saved memory.
+ * The allocated memory is left intact, so this routine can be
+ * called repeatedly without having to call optionSaveState again.
+ * If you are restoring a state that was saved before the first call
+ * to optionProcess(3AO), then you may change the contents of the
+ * argc/argv parameters to optionProcess.
+ *
+ * err: If you have not called @code{optionSaveState} before, a diagnostic is
+ * printed to @code{stderr} and exit is called.
+=*/
+void
+optionRestore( tOptions* pOpts )
+{
+ tOptions* p = (tOptions*)pOpts->pSavedState;
+
+ if (p == NULL) {
+ tCC* pzName = pOpts->pzProgName;
+ if (pzName == NULL) {
+ pzName = pOpts->pzPROGNAME;
+ if (pzName == NULL)
+ pzName = zNil;
+ }
+ fprintf( stderr, zNoState, pzName );
+ exit( EXIT_FAILURE );
+ }
+
+ pOpts->pSavedState = NULL;
+ optionFree(pOpts);
+
+ memcpy( pOpts, p, sizeof( *p ));
+ memcpy( pOpts->pOptDesc, p+1, p->optCt * sizeof( tOptDesc ));
+ pOpts->pSavedState = p;
+
+ fixupSavedOptionArgs(pOpts);
+}
+
+/* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = */
+
+/*=export_func optionFree
+ *
+ * what: free allocated option processing memory
+ * arg: tOptions*, pOpts, program options descriptor
+ *
+ * doc: AutoOpts sometimes allocates memory and puts pointers to it in the
+ * option state structures. This routine deallocates all such memory.
+ *
+ * err: As long as memory has not been corrupted,
+ * this routine is always successful.
+=*/
+void
+optionFree( tOptions* pOpts )
+{
+ free_saved_state:
+ {
+ tOptDesc* p = pOpts->pOptDesc;
+ int ct = pOpts->optCt;
+ do {
+ if (p->fOptState & OPTST_ALLOC_ARG) {
+ AGFREE(p->optArg.argString);
+ p->optArg.argString = NULL;
+ p->fOptState &= ~OPTST_ALLOC_ARG;
+ }
+
+ switch (OPTST_GET_ARGTYPE(p->fOptState)) {
+ case OPARG_TYPE_STRING:
+#ifdef WITH_LIBREGEX
+ if ( (p->fOptState & OPTST_STACKED)
+ && (p->optCookie != NULL)) {
+ p->optArg.argString = ".*";
+ optionUnstackArg(pOpts, p);
+ }
+#else
+ /* leak memory */;
+#endif
+ break;
+
+ case OPARG_TYPE_HIERARCHY:
+ if (p->optCookie != NULL)
+ unloadNestedArglist(p->optCookie);
+ break;
+ }
+
+ p->optCookie = NULL;
+ } while (p++, --ct > 0);
+ }
+ if (pOpts->pSavedState != NULL) {
+ tOptions * p = (tOptions*)pOpts->pSavedState;
+ memcpy( pOpts, p, sizeof( *p ));
+ memcpy( pOpts->pOptDesc, p+1, p->optCt * sizeof( tOptDesc ));
+ AGFREE( pOpts->pSavedState );
+ pOpts->pSavedState = NULL;
+ goto free_saved_state;
+ }
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/restore.c */
diff --git a/contrib/ntp/sntp/libopts/save.c b/contrib/ntp/sntp/libopts/save.c
new file mode 100644
index 0000000..c889520
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/save.c
@@ -0,0 +1,521 @@
+
+/*
+ * save.c $Id: save.c,v 4.18 2007/04/15 19:01:18 bkorb Exp $
+ * Time-stamp: "2007-04-15 11:11:10 bkorb"
+ *
+ * This module's routines will take the currently set options and
+ * store them into an ".rc" file for re-interpretation the next
+ * time the invoking program is run.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+tSCC zWarn[] = "%s WARNING: cannot save options - ";
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static tCC*
+findDirName( tOptions* pOpts, int* p_free );
+
+static tCC*
+findFileName( tOptions* pOpts, int* p_free_name );
+
+static void
+printEntry(
+ FILE * fp,
+ tOptDesc * p,
+ tCC* pzLA );
+/* = = = END-STATIC-FORWARD = = = */
+
+static tCC*
+findDirName( tOptions* pOpts, int* p_free )
+{
+ tCC* pzDir;
+
+ if (pOpts->specOptIdx.save_opts == 0)
+ return NULL;
+
+ pzDir = pOpts->pOptDesc[ pOpts->specOptIdx.save_opts ].optArg.argString;
+ if ((pzDir != NULL) && (*pzDir != NUL))
+ return pzDir;
+
+ /*
+ * This function only works if there is a directory where
+ * we can stash the RC (INI) file.
+ */
+ {
+ tCC* const* papz = pOpts->papzHomeList;
+ if (papz == NULL)
+ return NULL;
+
+ while (papz[1] != NULL) papz++;
+ pzDir = *papz;
+ }
+
+ /*
+ * IF it does not require deciphering an env value, then just copy it
+ */
+ if (*pzDir != '$')
+ return pzDir;
+
+ {
+ tCC* pzEndDir = strchr( ++pzDir, DIRCH );
+ char* pzFileName;
+ char* pzEnv;
+
+ if (pzEndDir != NULL) {
+ char z[ AO_NAME_SIZE ];
+ if ((pzEndDir - pzDir) > AO_NAME_LIMIT )
+ return NULL;
+ strncpy( z, pzDir, (size_t)(pzEndDir - pzDir) );
+ z[ (pzEndDir - pzDir) ] = NUL;
+ pzEnv = getenv( z );
+ } else {
+
+ /*
+ * Make sure we can get the env value (after stripping off
+ * any trailing directory or file names)
+ */
+ pzEnv = getenv( pzDir );
+ }
+
+ if (pzEnv == NULL) {
+ fprintf( stderr, zWarn, pOpts->pzProgName );
+ fprintf( stderr, zNotDef, pzDir );
+ return NULL;
+ }
+
+ if (pzEndDir == NULL)
+ return pzEnv;
+
+ {
+ size_t sz = strlen( pzEnv ) + strlen( pzEndDir ) + 2;
+ pzFileName = (char*)AGALOC( sz, "dir name" );
+ }
+
+ if (pzFileName == NULL)
+ return NULL;
+
+ *p_free = 1;
+ /*
+ * Glue together the full name into the allocated memory.
+ * FIXME: We lose track of this memory.
+ */
+ sprintf( pzFileName, "%s/%s", pzEnv, pzEndDir );
+ return pzFileName;
+ }
+}
+
+
+static tCC*
+findFileName( tOptions* pOpts, int* p_free_name )
+{
+ tCC* pzDir;
+ struct stat stBuf;
+ int free_dir_name = 0;
+
+ pzDir = findDirName( pOpts, &free_dir_name );
+ if (pzDir == NULL)
+ return NULL;
+
+ /*
+ * See if we can find the specified directory. We use a once-only loop
+ * structure so we can bail out early.
+ */
+ if (stat( pzDir, &stBuf ) != 0) do {
+
+ /*
+ * IF we could not, check to see if we got a full
+ * path to a file name that has not been created yet.
+ */
+ if (errno == ENOENT) {
+ char z[AG_PATH_MAX];
+
+ /*
+ * Strip off the last component, stat the remaining string and
+ * that string must name a directory
+ */
+ char* pzDirCh = strrchr( pzDir, DIRCH );
+ if (pzDirCh == NULL) {
+ stBuf.st_mode = S_IFREG;
+ continue; /* bail out of error condition */
+ }
+
+ strncpy( z, pzDir, (size_t)(pzDirCh - pzDir));
+ z[ pzDirCh - pzDir ] = NUL;
+
+ if ( (stat( z, &stBuf ) == 0)
+ && S_ISDIR( stBuf.st_mode )) {
+
+ /*
+ * We found the directory. Restore the file name and
+ * mark the full name as a regular file
+ */
+ stBuf.st_mode = S_IFREG;
+ continue; /* bail out of error condition */
+ }
+ }
+
+ /*
+ * We got a bogus name.
+ */
+ fprintf( stderr, zWarn, pOpts->pzProgName );
+ fprintf( stderr, zNoStat, errno, strerror( errno ), pzDir );
+ if (free_dir_name)
+ AGFREE( (void*)pzDir );
+ return NULL;
+ } while (0);
+
+ /*
+ * IF what we found was a directory,
+ * THEN tack on the config file name
+ */
+ if (S_ISDIR( stBuf.st_mode )) {
+ size_t sz = strlen( pzDir ) + strlen( pOpts->pzRcName ) + 2;
+
+ {
+ char* pzPath = (char*)AGALOC( sz, "file name" );
+#ifdef HAVE_SNPRINTF
+ snprintf( pzPath, sz, "%s/%s", pzDir, pOpts->pzRcName );
+#else
+ sprintf( pzPath, "%s/%s", pzDir, pOpts->pzRcName );
+#endif
+ if (free_dir_name)
+ AGFREE( (void*)pzDir );
+ pzDir = pzPath;
+ free_dir_name = 1;
+ }
+
+ /*
+ * IF we cannot stat the object for any reason other than
+ * it does not exist, then we bail out
+ */
+ if (stat( pzDir, &stBuf ) != 0) {
+ if (errno != ENOENT) {
+ fprintf( stderr, zWarn, pOpts->pzProgName );
+ fprintf( stderr, zNoStat, errno, strerror( errno ),
+ pzDir );
+ AGFREE( (void*)pzDir );
+ return NULL;
+ }
+
+ /*
+ * It does not exist yet, but it will be a regular file
+ */
+ stBuf.st_mode = S_IFREG;
+ }
+ }
+
+ /*
+ * Make sure that whatever we ultimately found, that it either is
+ * or will soon be a file.
+ */
+ if (! S_ISREG( stBuf.st_mode )) {
+ fprintf( stderr, zWarn, pOpts->pzProgName );
+ fprintf( stderr, zNotFile, pzDir );
+ if (free_dir_name)
+ AGFREE( (void*)pzDir );
+ return NULL;
+ }
+
+ /*
+ * Get rid of the old file
+ */
+ unlink( pzDir );
+ *p_free_name = free_dir_name;
+ return pzDir;
+}
+
+
+static void
+printEntry(
+ FILE * fp,
+ tOptDesc * p,
+ tCC* pzLA )
+{
+ /*
+ * There is an argument. Pad the name so values line up.
+ * Not disabled *OR* this got equivalenced to another opt,
+ * then use current option name.
+ * Otherwise, there must be a disablement name.
+ */
+ {
+ char const * pz;
+ if (! DISABLED_OPT(p) || (p->optEquivIndex != NO_EQUIVALENT))
+ pz = p->pz_Name;
+ else
+ pz = p->pz_DisableName;
+
+ fprintf(fp, "%-18s", pz);
+ }
+ /*
+ * IF the option is numeric only,
+ * THEN the char pointer is really the number
+ */
+ if (OPTST_GET_ARGTYPE(p->fOptState) == OPARG_TYPE_NUMERIC)
+ fprintf( fp, " %d\n", (int)(t_word)pzLA );
+
+ /*
+ * OTHERWISE, FOR each line of the value text, ...
+ */
+ else if (pzLA == NULL)
+ fputc( '\n', fp );
+
+ else {
+ fputc( ' ', fp ); fputc( ' ', fp );
+ for (;;) {
+ tCC* pzNl = strchr( pzLA, '\n' );
+
+ /*
+ * IF this is the last line
+ * THEN bail and print it
+ */
+ if (pzNl == NULL)
+ break;
+
+ /*
+ * Print the continuation and the text from the current line
+ */
+ (void)fwrite( pzLA, (size_t)(pzNl - pzLA), (size_t)1, fp );
+ pzLA = pzNl+1; /* advance the Last Arg pointer */
+ fputs( "\\\n", fp );
+ }
+
+ /*
+ * Terminate the entry
+ */
+ fputs( pzLA, fp );
+ fputc( '\n', fp );
+ }
+}
+
+
+/*=export_func optionSaveFile
+ *
+ * what: saves the option state to a file
+ *
+ * arg: tOptions*, pOpts, program options descriptor
+ *
+ * doc:
+ *
+ * This routine will save the state of option processing to a file. The name
+ * of that file can be specified with the argument to the @code{--save-opts}
+ * option, or by appending the @code{rcfile} attribute to the last
+ * @code{homerc} attribute. If no @code{rcfile} attribute was specified, it
+ * will default to @code{.@i{programname}rc}. If you wish to specify another
+ * file, you should invoke the @code{SET_OPT_SAVE_OPTS( @i{filename} )} macro.
+ *
+ * err:
+ *
+ * If no @code{homerc} file was specified, this routine will silently return
+ * and do nothing. If the output file cannot be created or updated, a message
+ * will be printed to @code{stderr} and the routine will return.
+=*/
+void
+optionSaveFile( tOptions* pOpts )
+{
+ tOptDesc* pOD;
+ int ct;
+ FILE* fp;
+
+ {
+ int free_name = 0;
+ tCC* pzFName = findFileName( pOpts, &free_name );
+ if (pzFName == NULL)
+ return;
+
+ fp = fopen( pzFName, "w" FOPEN_BINARY_FLAG );
+ if (fp == NULL) {
+ fprintf( stderr, zWarn, pOpts->pzProgName );
+ fprintf( stderr, zNoCreat, errno, strerror( errno ), pzFName );
+ if (free_name)
+ AGFREE((void*) pzFName );
+ return;
+ }
+
+ if (free_name)
+ AGFREE( (void*)pzFName );
+ }
+
+ {
+ char const* pz = pOpts->pzUsageTitle;
+ fputs( "# ", fp );
+ do { fputc( *pz, fp ); } while (*(pz++) != '\n');
+ }
+
+ {
+ time_t timeVal = time( NULL );
+ char* pzTime = ctime( &timeVal );
+
+ fprintf( fp, zPresetFile, pzTime );
+#ifdef HAVE_ALLOCATED_CTIME
+ /*
+ * The return values for ctime(), localtime(), and gmtime()
+ * normally point to static data that is overwritten by each call.
+ * The test to detect allocated ctime, so we leak the memory.
+ */
+ AGFREE( (void*)pzTime );
+#endif
+ }
+
+ /*
+ * FOR each of the defined options, ...
+ */
+ ct = pOpts->presetOptCt;
+ pOD = pOpts->pOptDesc;
+ do {
+ int arg_state;
+ tOptDesc* p;
+
+ /*
+ * IF the option has not been defined
+ * OR it does not take an initialization value
+ * OR it is equivalenced to another option
+ * THEN continue (ignore it)
+ */
+ if (UNUSED_OPT( pOD ))
+ continue;
+
+ if ((pOD->fOptState & (OPTST_NO_INIT|OPTST_DOCUMENT|OPTST_OMITTED))
+ != 0)
+ continue;
+
+ if ( (pOD->optEquivIndex != NO_EQUIVALENT)
+ && (pOD->optEquivIndex != pOD->optIndex))
+ continue;
+
+ /*
+ * Set a temporary pointer to the real option description
+ * (i.e. account for equivalencing)
+ */
+ p = ((pOD->fOptState & OPTST_EQUIVALENCE) != 0)
+ ? (pOpts->pOptDesc + pOD->optActualIndex) : pOD;
+
+ /*
+ * IF no arguments are allowed
+ * THEN just print the name and continue
+ */
+ if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_NONE) {
+ char const * pznm =
+ (DISABLED_OPT( p )) ? p->pz_DisableName : p->pz_Name;
+ /*
+ * If the option was disabled and the disablement name is NULL,
+ * then the disablement was caused by aliasing.
+ * Use the name as the string to emit.
+ */
+ if (pznm == NULL)
+ pznm = p->pz_Name;
+
+ fprintf(fp, "%s\n", pznm);
+ continue;
+ }
+
+ arg_state = OPTST_GET_ARGTYPE(p->fOptState);
+ switch (arg_state) {
+ case 0:
+ case OPARG_TYPE_NUMERIC:
+ printEntry( fp, p, (void*)(p->optArg.argInt));
+ break;
+
+ case OPARG_TYPE_STRING:
+ if (p->fOptState & OPTST_STACKED) {
+ tArgList* pAL = (tArgList*)p->optCookie;
+ int uct = pAL->useCt;
+ tCC** ppz = pAL->apzArgs;
+
+ /*
+ * Disallow multiple copies of disabled options.
+ */
+ if (uct > 1)
+ p->fOptState &= ~OPTST_DISABLED;
+
+ while (uct-- > 0)
+ printEntry( fp, p, *(ppz++) );
+ } else {
+ printEntry( fp, p, p->optArg.argString );
+ }
+ break;
+
+ case OPARG_TYPE_ENUMERATION:
+ case OPARG_TYPE_MEMBERSHIP:
+ {
+ uintptr_t val = p->optArg.argEnum;
+ /*
+ * This is a magic incantation that will convert the
+ * bit flag values back into a string suitable for printing.
+ */
+ (*(p->pOptProc))( (tOptions*)2UL, p );
+ printEntry( fp, p, (void*)(p->optArg.argString));
+
+ if ( (p->optArg.argString != NULL)
+ && (arg_state != OPARG_TYPE_ENUMERATION)) {
+ /*
+ * set membership strings get allocated
+ */
+ AGFREE( (void*)p->optArg.argString );
+ p->fOptState &= ~OPTST_ALLOC_ARG;
+ }
+
+ p->optArg.argEnum = val;
+ break;
+ }
+
+ case OPARG_TYPE_BOOLEAN:
+ printEntry( fp, p, p->optArg.argBool ? "true" : "false" );
+ break;
+
+ default:
+ break; /* cannot handle - skip it */
+ }
+ } while ( (pOD++), (--ct > 0));
+
+ fclose( fp );
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/save.c */
diff --git a/contrib/ntp/sntp/libopts/sort.c b/contrib/ntp/sntp/libopts/sort.c
new file mode 100644
index 0000000..ead7133
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/sort.c
@@ -0,0 +1,359 @@
+
+/*
+ * sort.c $Id: sort.c,v 4.10 2007/04/28 22:19:23 bkorb Exp $
+ * Time-stamp: "2006-10-18 11:29:04 bkorb"
+ *
+ * This module implements argument sorting.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static tSuccess
+mustHandleArg( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx );
+
+static tSuccess
+mayHandleArg( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx );
+
+static tSuccess
+checkShortOpts( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx );
+/* = = = END-STATIC-FORWARD = = = */
+
+/*
+ * "mustHandleArg" and "mayHandleArg" are really similar. The biggest
+ * difference is that "may" will consume the next argument only if it
+ * does not start with a hyphen and "must" will consume it, hyphen or not.
+ */
+static tSuccess
+mustHandleArg( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx )
+{
+ /*
+ * An option argument is required. Long options can either have
+ * a separate command line argument, or an argument attached by
+ * the '=' character. Figure out which.
+ */
+ switch (pOS->optType) {
+ case TOPT_SHORT:
+ /*
+ * See if an arg string follows the flag character. If not,
+ * the next arg must be the option argument.
+ */
+ if (*pzArg != NUL)
+ return SUCCESS;
+ break;
+
+ case TOPT_LONG:
+ /*
+ * See if an arg string has already been assigned (glued on
+ * with an `=' character). If not, the next is the opt arg.
+ */
+ if (pOS->pzOptArg != NULL)
+ return SUCCESS;
+ break;
+
+ default:
+ return FAILURE;
+ }
+ if (pOpts->curOptIdx >= pOpts->origArgCt)
+ return FAILURE;
+
+ ppzOpts[ (*pOptsIdx)++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ return SUCCESS;
+}
+
+static tSuccess
+mayHandleArg( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx )
+{
+ /*
+ * An option argument is optional.
+ */
+ switch (pOS->optType) {
+ case TOPT_SHORT:
+ /*
+ * IF nothing is glued on after the current flag character,
+ * THEN see if there is another argument. If so and if it
+ * does *NOT* start with a hyphen, then it is the option arg.
+ */
+ if (*pzArg != NUL)
+ return SUCCESS;
+ break;
+
+ case TOPT_LONG:
+ /*
+ * Look for an argument if we don't already have one (glued on
+ * with a `=' character)
+ */
+ if (pOS->pzOptArg != NULL)
+ return SUCCESS;
+ break;
+
+ default:
+ return FAILURE;
+ }
+ if (pOpts->curOptIdx >= pOpts->origArgCt)
+ return PROBLEM;
+
+ pzArg = pOpts->origArgVect[ pOpts->curOptIdx ];
+ if (*pzArg != '-')
+ ppzOpts[ (*pOptsIdx)++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ return SUCCESS;
+}
+
+/*
+ * Process a string of short options glued together. If the last one
+ * does or may take an argument, the do the argument processing and leave.
+ */
+static tSuccess
+checkShortOpts( tOptions* pOpts, char* pzArg, tOptState* pOS,
+ char** ppzOpts, int* pOptsIdx )
+{
+ while (*pzArg != NUL) {
+ if (FAILED( shortOptionFind( pOpts, (tAoUC)*pzArg, pOS )))
+ return FAILURE;
+
+ /*
+ * See if we can have an arg.
+ */
+ if (OPTST_GET_ARGTYPE(pOS->pOD->fOptState) == OPARG_TYPE_NONE) {
+ pzArg++;
+
+ } else if (pOS->pOD->fOptState & OPTST_ARG_OPTIONAL) {
+ /*
+ * Take an argument if it is not attached and it does not
+ * start with a hyphen.
+ */
+ if (pzArg[1] != NUL)
+ return SUCCESS;
+
+ pzArg = pOpts->origArgVect[ pOpts->curOptIdx ];
+ if (*pzArg != '-')
+ ppzOpts[ (*pOptsIdx)++ ] =
+ pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ return SUCCESS;
+
+ } else {
+ /*
+ * IF we need another argument, be sure it is there and
+ * take it.
+ */
+ if (pzArg[1] == NUL) {
+ if (pOpts->curOptIdx >= pOpts->origArgCt)
+ return FAILURE;
+ ppzOpts[ (*pOptsIdx)++ ] =
+ pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ }
+ return SUCCESS;
+ }
+ }
+ return SUCCESS;
+}
+
+/*
+ * If the program wants sorted options (separated operands and options),
+ * then this routine will to the trick.
+ */
+LOCAL void
+optionSort( tOptions* pOpts )
+{
+ char** ppzOpts;
+ char** ppzOpds;
+ int optsIdx = 0;
+ int opdsIdx = 0;
+
+ tOptState os = OPTSTATE_INITIALIZER(DEFINED);
+
+ /*
+ * Disable for POSIX conformance, or if there are no operands.
+ */
+ if ( (getenv( "POSIXLY_CORRECT" ) != NULL)
+ || NAMED_OPTS(pOpts))
+ return;
+
+ /*
+ * Make sure we can allocate two full-sized arg vectors.
+ */
+ ppzOpts = malloc( pOpts->origArgCt * sizeof( char* ));
+ if (ppzOpts == NULL)
+ goto exit_no_mem;
+
+ ppzOpds = malloc( pOpts->origArgCt * sizeof( char* ));
+ if (ppzOpds == NULL) {
+ free( ppzOpts );
+ goto exit_no_mem;
+ }
+
+ pOpts->curOptIdx = 1;
+ pOpts->pzCurOpt = NULL;
+
+ /*
+ * Now, process all the options from our current position onward.
+ * (This allows interspersed options and arguments for the few
+ * non-standard programs that require it.)
+ */
+ for (;;) {
+ char* pzArg;
+ tSuccess res;
+
+ /*
+ * If we're out of arguments, we're done. Join the option and
+ * operand lists into the original argument vector.
+ */
+ if (pOpts->curOptIdx >= pOpts->origArgCt) {
+ errno = 0;
+ goto joinLists;
+ }
+
+ pzArg = pOpts->origArgVect[ pOpts->curOptIdx ];
+ if (*pzArg != '-') {
+ ppzOpds[ opdsIdx++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ continue;
+ }
+
+ switch (pzArg[1]) {
+ case NUL:
+ /*
+ * A single hyphen is an operand.
+ */
+ ppzOpds[ opdsIdx++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ continue;
+
+ case '-':
+ /*
+ * Two consecutive hypens. Put them on the options list and then
+ * _always_ force the remainder of the arguments to be operands.
+ */
+ if (pzArg[2] == NUL) {
+ ppzOpts[ optsIdx++ ] =
+ pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+ goto restOperands;
+ }
+ res = longOptionFind( pOpts, pzArg+2, &os );
+ break;
+
+ default:
+ /*
+ * If short options are not allowed, then do long
+ * option processing. Otherwise the character must be a
+ * short (i.e. single character) option.
+ */
+ if ((pOpts->fOptSet & OPTPROC_SHORTOPT) == 0) {
+ res = longOptionFind( pOpts, pzArg+1, &os );
+ } else {
+ res = shortOptionFind( pOpts, (tAoUC)pzArg[1], &os );
+ }
+ break;
+ }
+ if (FAILED( res )) {
+ errno = EINVAL;
+ goto freeTemps;
+ }
+
+ /*
+ * We've found an option. Add the argument to the option list.
+ * Next, we have to see if we need to pull another argument to be
+ * used as the option argument.
+ */
+ ppzOpts[ optsIdx++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+
+ if (OPTST_GET_ARGTYPE(os.pOD->fOptState) == OPARG_TYPE_NONE) {
+ /*
+ * No option argument. If we have a short option here,
+ * then scan for short options until we get to the end
+ * of the argument string.
+ */
+ if ( (os.optType == TOPT_SHORT)
+ && FAILED( checkShortOpts( pOpts, pzArg+2, &os,
+ ppzOpts, &optsIdx )) ) {
+ errno = EINVAL;
+ goto freeTemps;
+ }
+
+ } else if (os.pOD->fOptState & OPTST_ARG_OPTIONAL) {
+ switch (mayHandleArg( pOpts, pzArg+2, &os, ppzOpts, &optsIdx )) {
+ case FAILURE: errno = EIO; goto freeTemps;
+ case PROBLEM: errno = 0; goto joinLists;
+ }
+
+ } else {
+ switch (mustHandleArg( pOpts, pzArg+2, &os, ppzOpts, &optsIdx )) {
+ case PROBLEM:
+ case FAILURE: errno = EIO; goto freeTemps;
+ }
+ }
+ } /* for (;;) */
+
+ restOperands:
+ while (pOpts->curOptIdx < pOpts->origArgCt)
+ ppzOpds[ opdsIdx++ ] = pOpts->origArgVect[ (pOpts->curOptIdx)++ ];
+
+ joinLists:
+ if (optsIdx > 0)
+ memcpy( pOpts->origArgVect + 1, ppzOpts, optsIdx * sizeof( char* ));
+ if (opdsIdx > 0)
+ memcpy( pOpts->origArgVect + 1 + optsIdx,
+ ppzOpds, opdsIdx * sizeof( char* ));
+
+ freeTemps:
+ free( ppzOpts );
+ free( ppzOpds );
+ return;
+
+ exit_no_mem:
+ errno = ENOMEM;
+ return;
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/sort.c */
diff --git a/contrib/ntp/sntp/libopts/stack.c b/contrib/ntp/sntp/libopts/stack.c
new file mode 100644
index 0000000..6d77f72
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/stack.c
@@ -0,0 +1,269 @@
+
+/*
+ * stack.c
+ * $Id: stack.c,v 4.13 2007/02/04 17:44:12 bkorb Exp $
+ * Time-stamp: "2007-01-13 10:43:21 bkorb"
+ *
+ * This is a special option processing routine that will save the
+ * argument to an option in a FIFO queue.
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+#ifdef WITH_LIBREGEX
+# include REGEX_HEADER
+#endif
+
+/*=export_func optionUnstackArg
+ * private:
+ *
+ * what: Remove option args from a stack
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Invoked for options that are equivalenced to stacked options.
+=*/
+void
+optionUnstackArg(
+ tOptions* pOpts,
+ tOptDesc* pOptDesc )
+{
+ int res;
+
+ tArgList* pAL = (tArgList*)pOptDesc->optCookie;
+ /*
+ * IF we don't have any stacked options,
+ * THEN indicate that we don't have any of these options
+ */
+ if (pAL == NULL) {
+ pOptDesc->fOptState &= OPTST_PERSISTENT_MASK;
+ if ( (pOptDesc->fOptState & OPTST_INITENABLED) == 0)
+ pOptDesc->fOptState |= OPTST_DISABLED;
+ return;
+ }
+
+#ifdef WITH_LIBREGEX
+ {
+ regex_t re;
+ int i, ct, dIdx;
+
+ if (regcomp( &re, pOptDesc->optArg.argString, REG_NOSUB ) != 0)
+ return;
+
+ /*
+ * search the list for the entry(s) to remove. Entries that
+ * are removed are *not* copied into the result. The source
+ * index is incremented every time. The destination only when
+ * we are keeping a define.
+ */
+ for (i = 0, dIdx = 0, ct = pAL->useCt; --ct >= 0; i++) {
+ tCC* pzSrc = pAL->apzArgs[ i ];
+ char* pzEq = strchr( pzSrc, '=' );
+
+ if (pzEq != NULL)
+ *pzEq = NUL;
+
+ res = regexec( &re, pzSrc, (size_t)0, NULL, 0 );
+ switch (res) {
+ case 0:
+ /*
+ * Remove this entry by reducing the in-use count
+ * and *not* putting the string pointer back into
+ * the list.
+ */
+ AGFREE(pzSrc);
+ pAL->useCt--;
+ break;
+
+ default:
+ case REG_NOMATCH:
+ if (pzEq != NULL)
+ *pzEq = '=';
+
+ /*
+ * IF we have dropped an entry
+ * THEN we have to move the current one.
+ */
+ if (dIdx != i)
+ pAL->apzArgs[ dIdx ] = pzSrc;
+ dIdx++;
+ }
+ }
+
+ regfree( &re );
+ }
+#else /* not WITH_LIBREGEX */
+ {
+ int i, ct, dIdx;
+
+ /*
+ * search the list for the entry(s) to remove. Entries that
+ * are removed are *not* copied into the result. The source
+ * index is incremented every time. The destination only when
+ * we are keeping a define.
+ */
+ for (i = 0, dIdx = 0, ct = pAL->useCt; --ct >= 0; i++) {
+ tCC* pzSrc = pAL->apzArgs[ i ];
+ char* pzEq = strchr( pzSrc, '=' );
+
+ if (pzEq != NULL)
+ *pzEq = NUL;
+
+ if (strcmp( pzSrc, pOptDesc->optArg.argString ) == 0) {
+ /*
+ * Remove this entry by reducing the in-use count
+ * and *not* putting the string pointer back into
+ * the list.
+ */
+ AGFREE(pzSrc);
+ pAL->useCt--;
+ } else {
+ if (pzEq != NULL)
+ *pzEq = '=';
+
+ /*
+ * IF we have dropped an entry
+ * THEN we have to move the current one.
+ */
+ if (dIdx != i)
+ pAL->apzArgs[ dIdx ] = pzSrc;
+ dIdx++;
+ }
+ }
+ }
+#endif /* WITH_LIBREGEX */
+ /*
+ * IF we have unstacked everything,
+ * THEN indicate that we don't have any of these options
+ */
+ if (pAL->useCt == 0) {
+ pOptDesc->fOptState &= OPTST_PERSISTENT_MASK;
+ if ( (pOptDesc->fOptState & OPTST_INITENABLED) == 0)
+ pOptDesc->fOptState |= OPTST_DISABLED;
+ AGFREE( (void*)pAL );
+ pOptDesc->optCookie = NULL;
+ }
+}
+
+
+/*
+ * Put an entry into an argument list. The first argument points to
+ * a pointer to the argument list structure. It gets passed around
+ * as an opaque address.
+ */
+LOCAL void
+addArgListEntry( void** ppAL, void* entry )
+{
+ tArgList* pAL = *(void**)ppAL;
+
+ /*
+ * IF we have never allocated one of these,
+ * THEN allocate one now
+ */
+ if (pAL == NULL) {
+ pAL = (tArgList*)AGALOC( sizeof( *pAL ), "new option arg stack" );
+ if (pAL == NULL)
+ return;
+ pAL->useCt = 0;
+ pAL->allocCt = MIN_ARG_ALLOC_CT;
+ *ppAL = (void*)pAL;
+ }
+
+ /*
+ * ELSE if we are out of room
+ * THEN make it bigger
+ */
+ else if (pAL->useCt >= pAL->allocCt) {
+ size_t sz = sizeof( *pAL );
+ pAL->allocCt += INCR_ARG_ALLOC_CT;
+
+ /*
+ * The base structure contains space for MIN_ARG_ALLOC_CT
+ * pointers. We subtract it off to find our augment size.
+ */
+ sz += sizeof(char*) * (pAL->allocCt - MIN_ARG_ALLOC_CT);
+ pAL = (tArgList*)AGREALOC( (void*)pAL, sz, "expanded opt arg stack" );
+ if (pAL == NULL)
+ return;
+ *ppAL = (void*)pAL;
+ }
+
+ /*
+ * Insert the new argument into the list
+ */
+ pAL->apzArgs[ (pAL->useCt)++ ] = entry;
+}
+
+
+/*=export_func optionStackArg
+ * private:
+ *
+ * what: put option args on a stack
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * Keep an entry-ordered list of option arguments.
+=*/
+void
+optionStackArg(
+ tOptions* pOpts,
+ tOptDesc* pOD )
+{
+ char * pz;
+
+ if (pOD->optArg.argString == NULL)
+ return;
+
+ AGDUPSTR(pz, pOD->optArg.argString, "stack arg");
+ addArgListEntry( &(pOD->optCookie), (void*)pz );
+}
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/stack.c */
diff --git a/contrib/ntp/sntp/libopts/streqvcmp.c b/contrib/ntp/sntp/libopts/streqvcmp.c
new file mode 100644
index 0000000..8249794
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/streqvcmp.c
@@ -0,0 +1,289 @@
+
+/*
+ * $Id: streqvcmp.c,v 4.10 2007/04/28 22:19:23 bkorb Exp $
+ * Time-stamp: "2006-07-26 18:25:53 bkorb"
+ *
+ * String Equivalence Comparison
+ *
+ * These routines allow any character to be mapped to any other
+ * character before comparison. In processing long option names,
+ * the characters "-", "_" and "^" all need to be equivalent
+ * (because they are treated so by different development environments).
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/*
+ * This array is designed for mapping upper and lower case letter
+ * together for a case independent comparison. The mappings are
+ * based upon ascii character sequences.
+ */
+static unsigned char charmap[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, '\a',
+ '\b', '\t', '\n', '\v', '\f', '\r', 0x0E, 0x0F,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
+
+ ' ', '!', '"', '#', '$', '%', '&', '\'',
+ '(', ')', '*', '+', ',', '-', '.', '/',
+ '0', '1', '2', '3', '4', '5', '6', '7',
+ '8', '9', ':', ';', '<', '=', '>', '?',
+
+ '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
+ 'x', 'y', 'z', '[', '\\', ']', '^', '_',
+ '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
+ 'x', 'y', 'z', '{', '|', '}', '~', 0x7f,
+
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
+ 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
+ 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7,
+ 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
+
+ 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
+ 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
+ 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
+ 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
+ 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
+ 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
+ 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF,
+};
+
+
+/*=export_func strneqvcmp
+ *
+ * what: compare two strings with an equivalence mapping
+ *
+ * arg: + char const* + str1 + first string +
+ * arg: + char const* + str2 + second string +
+ * arg: + int + ct + compare length +
+ *
+ * ret_type: int
+ * ret_desc: the difference between two differing characters
+ *
+ * doc:
+ *
+ * Using a character mapping, two strings are compared for "equivalence".
+ * Each input character is mapped to a comparison character and the
+ * mapped-to characters are compared for the two NUL terminated input strings.
+ * The comparison is limited to @code{ct} bytes.
+ * This function name is mapped to option_strneqvcmp so as to not conflict
+ * with the POSIX name space.
+ *
+ * err: none checked. Caller responsible for seg faults.
+=*/
+int
+strneqvcmp( tCC* s1, tCC* s2, int ct )
+{
+ for (; ct > 0; --ct) {
+ unsigned char u1 = (unsigned char) *s1++;
+ unsigned char u2 = (unsigned char) *s2++;
+ int dif = charmap[ u1 ] - charmap[ u2 ];
+
+ if (dif != 0)
+ return dif;
+
+ if (u1 == NUL)
+ return 0;
+ }
+
+ return 0;
+}
+
+
+/*=export_func streqvcmp
+ *
+ * what: compare two strings with an equivalence mapping
+ *
+ * arg: + char const* + str1 + first string +
+ * arg: + char const* + str2 + second string +
+ *
+ * ret_type: int
+ * ret_desc: the difference between two differing characters
+ *
+ * doc:
+ *
+ * Using a character mapping, two strings are compared for "equivalence".
+ * Each input character is mapped to a comparison character and the
+ * mapped-to characters are compared for the two NUL terminated input strings.
+ * This function name is mapped to option_streqvcmp so as to not conflict
+ * with the POSIX name space.
+ *
+ * err: none checked. Caller responsible for seg faults.
+=*/
+int
+streqvcmp( tCC* s1, tCC* s2 )
+{
+ for (;;) {
+ unsigned char u1 = (unsigned char) *s1++;
+ unsigned char u2 = (unsigned char) *s2++;
+ int dif = charmap[ u1 ] - charmap[ u2 ];
+
+ if (dif != 0)
+ return dif;
+
+ if (u1 == NUL)
+ return 0;
+ }
+}
+
+
+/*=export_func streqvmap
+ *
+ * what: Set the character mappings for the streqv functions
+ *
+ * arg: + char + From + Input character +
+ * arg: + char + To + Mapped-to character +
+ * arg: + int + ct + compare length +
+ *
+ * doc:
+ *
+ * Set the character mapping. If the count (@code{ct}) is set to zero, then
+ * the map is cleared by setting all entries in the map to their index
+ * value. Otherwise, the "@code{From}" character is mapped to the "@code{To}"
+ * character. If @code{ct} is greater than 1, then @code{From} and @code{To}
+ * are incremented and the process repeated until @code{ct} entries have been
+ * set. For example,
+ * @example
+ * streqvmap( 'a', 'A', 26 );
+ * @end example
+ * @noindent
+ * will alter the mapping so that all English lower case letters
+ * will map to upper case.
+ *
+ * This function name is mapped to option_streqvmap so as to not conflict
+ * with the POSIX name space.
+ *
+ * err: none.
+=*/
+void
+streqvmap( char From, char To, int ct )
+{
+ if (ct == 0) {
+ ct = sizeof( charmap ) - 1;
+ do {
+ charmap[ ct ] = ct;
+ } while (--ct >= 0);
+ }
+
+ else {
+ int chTo = (int)To & 0xFF;
+ int chFrom = (int)From & 0xFF;
+
+ do {
+ charmap[ chFrom ] = (unsigned)chTo;
+ chFrom++;
+ chTo++;
+ if ((chFrom >= sizeof( charmap )) || (chTo >= sizeof( charmap )))
+ break;
+ } while (--ct > 0);
+ }
+}
+
+
+/*=export_func strequate
+ *
+ * what: map a list of characters to the same value
+ *
+ * arg: + char const* + ch_list + characters to equivalence +
+ *
+ * doc:
+ *
+ * Each character in the input string get mapped to the first character
+ * in the string.
+ * This function name is mapped to option_strequate so as to not conflict
+ * with the POSIX name space.
+ *
+ * err: none.
+=*/
+void
+strequate( char const* s )
+{
+ if ((s != NULL) && (*s != NUL)) {
+ unsigned char equiv = (unsigned)*s;
+ while (*s != NUL)
+ charmap[ (unsigned)*(s++) ] = equiv;
+ }
+}
+
+
+/*=export_func strtransform
+ *
+ * what: convert a string into its mapped-to value
+ *
+ * arg: + char* + dest + output string +
+ * arg: + char const* + src + input string +
+ *
+ * doc:
+ *
+ * Each character in the input string is mapped and the mapped-to
+ * character is put into the output.
+ * This function name is mapped to option_strtransform so as to not conflict
+ * with the POSIX name space.
+ *
+ * err: none.
+=*/
+void
+strtransform( char* d, char const* s )
+{
+ do {
+ *(d++) = (char)charmap[ (unsigned)*s ];
+ } while (*(s++) != NUL);
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/streqvcmp.c */
diff --git a/contrib/ntp/sntp/libopts/text_mmap.c b/contrib/ntp/sntp/libopts/text_mmap.c
new file mode 100644
index 0000000..ced2977
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/text_mmap.c
@@ -0,0 +1,363 @@
+/*
+ * $Id: text_mmap.c,v 4.15 2006/11/27 01:52:23 bkorb Exp $
+ *
+ * Time-stamp: "2006-09-10 14:50:04 bkorb"
+ */
+
+#ifndef MAP_ANONYMOUS
+# ifdef MAP_ANON
+# define MAP_ANONYMOUS MAP_ANON
+# endif
+#endif
+
+/*
+ * Some weird systems require that a specifically invalid FD number
+ * get passed in as an argument value. Which value is that? Well,
+ * as everybody knows, if open(2) fails, it returns -1, so that must
+ * be the value. :)
+ */
+#define AO_INVALID_FD -1
+
+#define FILE_WRITABLE(_prt,_flg) \
+ ( (_prt & PROT_WRITE) \
+ && ((_flg & (MAP_SHARED|MAP_PRIVATE)) == MAP_SHARED))
+#define MAP_FAILED_PTR ((void*)MAP_FAILED)
+
+/*=export_func text_mmap
+ * private:
+ *
+ * what: map a text file with terminating NUL
+ *
+ * arg: char const*, pzFile, name of the file to map
+ * arg: int, prot, mmap protections (see mmap(2))
+ * arg: int, flags, mmap flags (see mmap(2))
+ * arg: tmap_info_t*, mapinfo, returned info about the mapping
+ *
+ * ret-type: void*
+ * ret-desc: The mmaped data address
+ *
+ * doc:
+ *
+ * This routine will mmap a file into memory ensuring that there is at least
+ * one @file{NUL} character following the file data. It will return the
+ * address where the file contents have been mapped into memory. If there is a
+ * problem, then it will return @code{MAP_FAILED} and set @file{errno}
+ * appropriately.
+ *
+ * The named file does not exist, @code{stat(2)} will set @file{errno} as it
+ * will. If the file is not a regular file, @file{errno} will be
+ * @code{EINVAL}. At that point, @code{open(2)} is attempted with the access
+ * bits set appropriately for the requested @code{mmap(2)} protections and flag
+ * bits. On failure, @file{errno} will be set according to the documentation
+ * for @code{open(2)}. If @code{mmap(2)} fails, @file{errno} will be set as
+ * that routine sets it. If @code{text_mmap} works to this point, a valid
+ * address will be returned, but there may still be ``issues''.
+ *
+ * If the file size is not an even multiple of the system page size, then
+ * @code{text_map} will return at this point and @file{errno} will be zero.
+ * Otherwise, an anonymous map is attempted. If not available, then an attempt
+ * is made to @code{mmap(2)} @file{/dev/zero}. If any of these fail, the
+ * address of the file's data is returned, bug @code{no} @file{NUL} characters
+ * are mapped after the end of the data.
+ *
+ * see: mmap(2), open(2), stat(2)
+ *
+ * err: Any error code issued by mmap(2), open(2), stat(2) is possible.
+ * Additionally, if the specified file is not a regular file, then
+ * errno will be set to @code{EINVAL}.
+ *
+ * example:
+ * #include <mylib.h>
+ * tmap_info_t mi;
+ * int no_nul;
+ * void* data = text_mmap( "file", PROT_WRITE, MAP_PRIVATE, &mi );
+ * if (data == MAP_FAILED) return;
+ * no_nul = (mi.txt_size == mi.txt_full_size);
+ * << use the data >>
+ * text_munmap( &mi );
+=*/
+void*
+text_mmap( char const* pzFile, int prot, int flags, tmap_info_t* pMI )
+{
+ memset( pMI, 0, sizeof(*pMI) );
+#ifdef HAVE_MMAP
+ pMI->txt_zero_fd = -1;
+#endif
+ pMI->txt_fd = -1;
+
+ /*
+ * Make sure we can stat the regular file. Save the file size.
+ */
+ {
+ struct stat sb;
+ if (stat( pzFile, &sb ) != 0) {
+ pMI->txt_errno = errno;
+ return MAP_FAILED_PTR;
+ }
+
+ if (! S_ISREG( sb.st_mode )) {
+ pMI->txt_errno = errno = EINVAL;
+ return MAP_FAILED_PTR;
+ }
+
+ pMI->txt_size = sb.st_size;
+ }
+
+ /*
+ * Map mmap flags and protections into open flags and do the open.
+ */
+ {
+ int o_flag;
+ /*
+ * See if we will be updating the file. If we can alter the memory
+ * and if we share the data and we are *not* copy-on-writing the data,
+ * then our updates will show in the file, so we must open with
+ * write access.
+ */
+ if (FILE_WRITABLE(prot,flags))
+ o_flag = O_RDWR;
+ else
+ o_flag = O_RDONLY;
+
+ /*
+ * If you're not sharing the file and you are writing to it,
+ * then don't let anyone else have access to the file.
+ */
+ if (((flags & MAP_SHARED) == 0) && (prot & PROT_WRITE))
+ o_flag |= O_EXCL;
+
+ pMI->txt_fd = open( pzFile, o_flag );
+ }
+
+ if (pMI->txt_fd == AO_INVALID_FD) {
+ pMI->txt_errno = errno;
+ return MAP_FAILED_PTR;
+ }
+
+#ifdef HAVE_MMAP /* * * * * WITH MMAP * * * * * */
+ /*
+ * do the mmap. If we fail, then preserve errno, close the file and
+ * return the failure.
+ */
+ pMI->txt_data =
+ mmap(NULL, pMI->txt_size+1, prot, flags, pMI->txt_fd, (size_t)0);
+ if (pMI->txt_data == MAP_FAILED_PTR) {
+ pMI->txt_errno = errno;
+ goto fail_return;
+ }
+
+ /*
+ * Most likely, everything will turn out fine now. The only difficult
+ * part at this point is coping with files with sizes that are a multiple
+ * of the page size. Handling that is what this whole thing is about.
+ */
+ pMI->txt_zero_fd = -1;
+ pMI->txt_errno = 0;
+
+ {
+ void* pNuls;
+#ifdef _SC_PAGESIZE
+ size_t pgsz = sysconf(_SC_PAGESIZE);
+#else
+ size_t pgsz = getpagesize();
+#endif
+ /*
+ * Compute the pagesize rounded mapped memory size.
+ * IF this is not the same as the file size, then there are NUL's
+ * at the end of the file mapping and all is okay.
+ */
+ pMI->txt_full_size = (pMI->txt_size + (pgsz - 1)) & ~(pgsz - 1);
+ if (pMI->txt_size != pMI->txt_full_size)
+ return pMI->txt_data;
+
+ /*
+ * Still here? We have to remap the trailing inaccessible page
+ * either anonymously or to /dev/zero.
+ */
+ pMI->txt_full_size += pgsz;
+#if defined(MAP_ANONYMOUS)
+ pNuls = mmap(
+ (void*)(((char*)pMI->txt_data) + pMI->txt_size),
+ pgsz, PROT_READ|PROT_WRITE,
+ MAP_ANONYMOUS|MAP_FIXED|MAP_PRIVATE, AO_INVALID_FD, (size_t)0);
+
+ if (pNuls != MAP_FAILED_PTR)
+ return pMI->txt_data;
+
+ pMI->txt_errno = errno;
+
+#elif defined(HAVE_DEV_ZERO)
+ pMI->txt_zero_fd = open( "/dev/zero", O_RDONLY );
+
+ if (pMI->txt_zero_fd == AO_INVALID_FD) {
+ pMI->txt_errno = errno;
+
+ } else {
+ pNuls = mmap(
+ (void*)(((char*)pMI->txt_data) + pMI->txt_size), pgsz,
+ PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
+ pMI->txt_zero_fd, 0 );
+
+ if (pNuls != MAP_FAILED_PTR)
+ return pMI->txt_data;
+
+ pMI->txt_errno = errno;
+ close( pMI->txt_zero_fd );
+ pMI->txt_zero_fd = -1;
+ }
+#endif
+
+ pMI->txt_full_size = pMI->txt_size;
+ }
+
+ {
+ void* p = AGALOC( pMI->txt_size+1, "file text" );
+ memcpy( p, pMI->txt_data, pMI->txt_size );
+ ((char*)p)[pMI->txt_size] = NUL;
+ munmap(pMI->txt_data, pMI->txt_size );
+ pMI->txt_data = p;
+ }
+ pMI->txt_alloc = 1;
+ return pMI->txt_data;
+
+#else /* * * * * * no HAVE_MMAP * * * * * */
+
+ pMI->txt_data = AGALOC( pMI->txt_size+1, "file text" );
+ if (pMI->txt_data == NULL) {
+ pMI->txt_errno = ENOMEM;
+ goto fail_return;
+ }
+
+ {
+ size_t sz = pMI->txt_size;
+ char* pz = pMI->txt_data;
+
+ while (sz > 0) {
+ ssize_t rdct = read( pMI->txt_fd, pz, sz );
+ if (rdct <= 0) {
+ pMI->txt_errno = errno;
+ fprintf( stderr, zFSErrReadFile,
+ errno, strerror( errno ), pzFile );
+ free( pMI->txt_data );
+ goto fail_return;
+ }
+
+ pz += rdct;
+ sz -= rdct;
+ }
+
+ *pz = NUL;
+ }
+
+ /*
+ * We never need a dummy page mapped in
+ */
+ pMI->txt_zero_fd = -1;
+ pMI->txt_errno = 0;
+
+ return pMI->txt_data;
+
+#endif /* * * * * * no HAVE_MMAP * * * * * */
+
+ fail_return:
+ if (pMI->txt_fd >= 0) {
+ close( pMI->txt_fd );
+ pMI->txt_fd = -1;
+ }
+ errno = pMI->txt_errno;
+ pMI->txt_data = MAP_FAILED_PTR;
+ return pMI->txt_data;
+}
+
+
+/*=export_func text_munmap
+ * private:
+ *
+ * what: unmap the data mapped in by text_mmap
+ *
+ * arg: tmap_info_t*, mapinfo, info about the mapping
+ *
+ * ret-type: int
+ * ret-desc: -1 or 0. @file{errno} will have the error code.
+ *
+ * doc:
+ *
+ * This routine will unmap the data mapped in with @code{text_mmap} and close
+ * the associated file descriptors opened by that function.
+ *
+ * see: munmap(2), close(2)
+ *
+ * err: Any error code issued by munmap(2) or close(2) is possible.
+=*/
+int
+text_munmap( tmap_info_t* pMI )
+{
+#ifdef HAVE_MMAP
+ int res = 0;
+ if (pMI->txt_alloc) {
+ /*
+ * IF the user has write permission and the text is not mapped private,
+ * then write back any changes. Hopefully, nobody else has modified
+ * the file in the mean time.
+ */
+ if ( ((pMI->txt_prot & PROT_WRITE) != 0)
+ && ((pMI->txt_flags & MAP_PRIVATE) == 0)) {
+
+ if (lseek(pMI->txt_fd, (size_t)0, SEEK_SET) != 0)
+ goto error_return;
+
+ res = (write( pMI->txt_fd, pMI->txt_data, pMI->txt_size ) < 0)
+ ? errno : 0;
+ }
+
+ AGFREE( pMI->txt_data );
+ errno = res;
+ } else {
+ res = munmap( pMI->txt_data, pMI->txt_full_size );
+ }
+ if (res != 0)
+ goto error_return;
+
+ res = close( pMI->txt_fd );
+ if (res != 0)
+ goto error_return;
+
+ pMI->txt_fd = -1;
+ errno = 0;
+ if (pMI->txt_zero_fd != -1) {
+ res = close( pMI->txt_zero_fd );
+ pMI->txt_zero_fd = -1;
+ }
+
+ error_return:
+ pMI->txt_errno = errno;
+ return res;
+#else /* HAVE_MMAP */
+
+ errno = 0;
+ /*
+ * IF the memory is writable *AND* it is not private (copy-on-write)
+ * *AND* the memory is "sharable" (seen by other processes)
+ * THEN rewrite the data.
+ */
+ if ( FILE_WRITABLE(pMI->txt_prot, pMI->txt_flags)
+ && (lseek( pMI->txt_fd, 0, SEEK_SET ) >= 0) ) {
+ write( pMI->txt_fd, pMI->txt_data, pMI->txt_size );
+ }
+
+ close( pMI->txt_fd );
+ pMI->txt_fd = -1;
+ pMI->txt_errno = errno;
+ free( pMI->txt_data );
+
+ return pMI->txt_errno;
+#endif /* HAVE_MMAP */
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/text_mmap.c */
diff --git a/contrib/ntp/sntp/libopts/tokenize.c b/contrib/ntp/sntp/libopts/tokenize.c
new file mode 100644
index 0000000..0e576ce
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/tokenize.c
@@ -0,0 +1,321 @@
+/*
+ * This file defines the string_tokenize interface
+ * Time-stamp: "2006-06-24 15:27:49 bkorb"
+ *
+ * string_tokenize copyright 2005 Bruce Korb
+ *
+ * string_tokenize is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * string_tokenize 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with string_tokenize; if not, write to:
+ * The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#include <ctype.h>
+#include <errno.h>
+#include <stdlib.h>
+
+#define cc_t const unsigned char
+#define ch_t unsigned char
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+copy_cooked( ch_t** ppDest, char const ** ppSrc );
+
+static void
+copy_raw( ch_t** ppDest, char const ** ppSrc );
+/* = = = END-STATIC-FORWARD = = = */
+
+static void
+copy_cooked( ch_t** ppDest, char const ** ppSrc )
+{
+ ch_t* pDest = (ch_t*)*ppDest;
+ const ch_t* pSrc = (const ch_t*)(*ppSrc + 1);
+
+ for (;;) {
+ ch_t ch = *(pSrc++);
+ switch (ch) {
+ case NUL: *ppSrc = NULL; return;
+ case '"': goto done;
+ case '\\':
+ pSrc += ao_string_cook_escape_char( (char*)pSrc, (char*)&ch, 0x7F );
+ if (ch == 0x7F)
+ break;
+ /* FALLTHROUGH */
+
+ default:
+ *(pDest++) = ch;
+ }
+ }
+
+ done:
+ *ppDest = (ch_t*)pDest; /* next spot for storing character */
+ *ppSrc = (char const *)pSrc; /* char following closing quote */
+}
+
+
+static void
+copy_raw( ch_t** ppDest, char const ** ppSrc )
+{
+ ch_t* pDest = *ppDest;
+ cc_t* pSrc = (cc_t*) (*ppSrc + 1);
+
+ for (;;) {
+ ch_t ch = *(pSrc++);
+ switch (ch) {
+ case NUL: *ppSrc = NULL; return;
+ case '\'': goto done;
+ case '\\':
+ /*
+ * *Four* escapes are handled: newline removal, escape char
+ * quoting and apostrophe quoting
+ */
+ switch (*pSrc) {
+ case NUL: *ppSrc = NULL; return;
+ case '\r':
+ if (*(++pSrc) == '\n')
+ ++pSrc;
+ continue;
+
+ case '\n':
+ ++pSrc;
+ continue;
+
+ case '\'':
+ ch = '\'';
+ /* FALLTHROUGH */
+
+ case '\\':
+ ++pSrc;
+ break;
+ }
+ /* FALLTHROUGH */
+
+ default:
+ *(pDest++) = ch;
+ }
+ }
+
+ done:
+ *ppDest = pDest; /* next spot for storing character */
+ *ppSrc = (char const *) pSrc; /* char following closing quote */
+}
+
+
+/*=export_func ao_string_tokenize
+ *
+ * what: tokenize an input string
+ *
+ * arg: + char const* + string + string to be tokenized +
+ *
+ * ret_type: token_list_t*
+ * ret_desc: pointer to a structure that lists each token
+ *
+ * doc:
+ *
+ * This function will convert one input string into a list of strings.
+ * The list of strings is derived by separating the input based on
+ * white space separation. However, if the input contains either single
+ * or double quote characters, then the text after that character up to
+ * a matching quote will become the string in the list.
+ *
+ * The returned pointer should be deallocated with @code{free(3C)} when
+ * are done using the data. The data are placed in a single block of
+ * allocated memory. Do not deallocate individual token/strings.
+ *
+ * The structure pointed to will contain at least these two fields:
+ * @table @samp
+ * @item tkn_ct
+ * The number of tokens found in the input string.
+ * @item tok_list
+ * An array of @code{tkn_ct + 1} pointers to substring tokens, with
+ * the last pointer set to NULL.
+ * @end table
+ *
+ * There are two types of quoted strings: single quoted (@code{'}) and
+ * double quoted (@code{"}). Singly quoted strings are fairly raw in that
+ * escape characters (@code{\\}) are simply another character, except when
+ * preceding the following characters:
+ * @example
+ * @code{\\} double backslashes reduce to one
+ * @code{'} incorporates the single quote into the string
+ * @code{\n} suppresses both the backslash and newline character
+ * @end example
+ *
+ * Double quote strings are formed according to the rules of string
+ * constants in ANSI-C programs.
+ *
+ * example:
+ * @example
+ * #include <stdlib.h>
+ * int ix;
+ * token_list_t* ptl = ao_string_tokenize( some_string )
+ * for (ix = 0; ix < ptl->tkn_ct; ix++)
+ * do_something_with_tkn( ptl->tkn_list[ix] );
+ * free( ptl );
+ * @end example
+ * Note that everything is freed with the one call to @code{free(3C)}.
+ *
+ * err:
+ * NULL is returned and @code{errno} will be set to indicate the problem:
+ * @itemize @bullet
+ * @item
+ * @code{EINVAL} - There was an unterminated quoted string.
+ * @item
+ * @code{ENOENT} - The input string was empty.
+ * @item
+ * @code{ENOMEM} - There is not enough memory.
+ * @end itemize
+=*/
+token_list_t*
+ao_string_tokenize( char const* str )
+{
+ int max_token_ct = 1; /* allow for trailing NUL on string */
+ token_list_t* res;
+
+ if (str == NULL) goto bogus_str;
+
+ /*
+ * Trim leading white space. Use "ENOENT" and a NULL return to indicate
+ * an empty string was passed.
+ */
+ while (isspace( (ch_t)*str )) str++;
+ if (*str == NUL) {
+ bogus_str:
+ errno = ENOENT;
+ return NULL;
+ }
+
+ /*
+ * Take an approximate count of tokens. If no quoted strings are used,
+ * it will be accurate. If quoted strings are used, it will be a little
+ * high and we'll squander the space for a few extra pointers.
+ */
+ {
+ cc_t* pz = (cc_t*)str;
+
+ do {
+ max_token_ct++;
+ while (! isspace( *++pz ))
+ if (*pz == NUL) goto found_nul;
+ while (isspace( *pz )) pz++;
+ } while (*pz != NUL);
+
+ found_nul:
+ ;
+ }
+
+ res = malloc( sizeof(*res) + strlen(str) + (max_token_ct * sizeof(ch_t*)) );
+ if (res == NULL) {
+ errno = ENOMEM;
+ return res;
+ }
+
+ /*
+ * Now copy each token into the output buffer.
+ */
+ {
+ ch_t* pzDest = (ch_t*)(res->tkn_list + (max_token_ct + 1));
+ res->tkn_ct = 0;
+
+ do {
+ res->tkn_list[ res->tkn_ct++ ] = pzDest;
+ for (;;) {
+ int ch = (ch_t)*str;
+ if (isspace( ch )) {
+ found_white_space:
+ while (isspace( (ch_t)*++str )) ;
+ break;
+ }
+
+ switch (ch) {
+ case '"':
+ copy_cooked( &pzDest, &str );
+ if (str == NULL) {
+ free(res);
+ errno = EINVAL;
+ return NULL;
+ }
+ if (isspace( (ch_t)*str ))
+ goto found_white_space;
+ break;
+
+ case '\'':
+ copy_raw( &pzDest, &str );
+ if (str == NULL) {
+ free(res);
+ errno = EINVAL;
+ return NULL;
+ }
+ if (isspace( (ch_t)*str ))
+ goto found_white_space;
+ break;
+
+ case NUL:
+ goto copy_done;
+
+ default:
+ str++;
+ *(pzDest++) = ch;
+ }
+ } copy_done:;
+
+ /*
+ * NUL terminate the last token and see if we have any more tokens.
+ */
+ *(pzDest++) = NUL;
+ } while (*str != NUL);
+
+ res->tkn_list[ res->tkn_ct ] = NULL;
+ }
+
+ return res;
+}
+
+#ifdef TEST
+#include <stdio.h>
+#include <string.h>
+
+int
+main( int argc, char** argv )
+{
+ if (argc == 1) {
+ printf("USAGE: %s arg [ ... ]\n", *argv);
+ return 1;
+ }
+ while (--argc > 0) {
+ char* arg = *(++argv);
+ token_list_t* p = ao_string_tokenize( arg );
+ if (p == NULL) {
+ printf( "Parsing string ``%s'' failed:\n\terrno %d (%s)\n",
+ arg, errno, strerror( errno ));
+ } else {
+ int ix = 0;
+ printf( "Parsed string ``%s''\ninto %d tokens:\n", arg, p->tkn_ct );
+ do {
+ printf( " %3d: ``%s''\n", ix+1, p->tkn_list[ix] );
+ } while (++ix < p->tkn_ct);
+ free(p);
+ }
+ }
+ return 0;
+}
+#endif
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/tokenize.c */
diff --git a/contrib/ntp/sntp/libopts/usage.c b/contrib/ntp/sntp/libopts/usage.c
new file mode 100644
index 0000000..960339b
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/usage.c
@@ -0,0 +1,740 @@
+
+/*
+ * usage.c $Id: usage.c,v 4.15 2007/04/28 22:19:23 bkorb Exp $
+ * Time-stamp: "2007-04-15 11:02:46 bkorb"
+ *
+ * This module implements the default usage procedure for
+ * Automated Options. It may be overridden, of course.
+ *
+ * Sort options:
+ --start=END-[S]TATIC-FORWARD --patt='^/\*($|[^:])' \
+ --out=xx.c key='^[a-zA-Z0-9_]+\(' --trail='^/\*:' \
+ --spac=2 --input=usage.c
+ */
+
+/*
+ * Automated Options copyright 1992-2007 Bruce Korb
+ *
+ * Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+#define OPTPROC_L_N_S (OPTPROC_LONGOPT | OPTPROC_SHORTOPT)
+
+static arg_types_t argTypes;
+
+FILE* option_usage_fp = NULL;
+static char zOptFmtLine[ 16 ];
+static ag_bool displayEnum;
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static ag_bool
+checkGNUUsage( tOptions* pOpts );
+
+static void
+printExtendedUsage(
+ tOptions* pOptions,
+ tOptDesc* pOD,
+ arg_types_t* pAT );
+
+static void
+printInitList(
+ tCC* const* papz,
+ ag_bool* pInitIntro,
+ tCC* pzRc,
+ tCC* pzPN );
+
+static void
+printOneUsage(
+ tOptions* pOptions,
+ tOptDesc* pOD,
+ arg_types_t* pAT );
+
+static void
+printOptionUsage(
+ tOptions* pOpts,
+ int ex_code,
+ tCC* pOptTitle );
+
+static void
+printProgramDetails( tOptions* pOptions );
+
+static int
+setGnuOptFmts( tOptions* pOpts, tCC** ppT );
+
+static int
+setStdOptFmts( tOptions* pOpts, tCC** ppT );
+/* = = = END-STATIC-FORWARD = = = */
+
+
+/*
+ * Figure out if we should try to format usage text sort-of like
+ * the way many GNU programs do.
+ */
+static ag_bool
+checkGNUUsage( tOptions* pOpts )
+{
+ char* pz = getenv( "AUTOOPTS_USAGE" );
+ if (pz == NULL)
+ ;
+
+ else if (streqvcmp( pz, "gnu" ) == 0)
+ pOpts->fOptSet |= OPTPROC_GNUUSAGE;
+
+ else if (streqvcmp( pz, "autoopts" ) == 0)
+ pOpts->fOptSet &= ~OPTPROC_GNUUSAGE;
+
+ return (pOpts->fOptSet & OPTPROC_GNUUSAGE) ? AG_TRUE : AG_FALSE;
+}
+
+
+/*=export_func optionOnlyUsage
+ *
+ * what: Print usage text for just the options
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + int + ex_code + exit code for calling exit(3) +
+ *
+ * doc:
+ * This routine will print only the usage for each option.
+ * This function may be used when the emitted usage must incorporate
+ * information not available to AutoOpts.
+=*/
+void
+optionOnlyUsage(
+ tOptions* pOpts,
+ int ex_code )
+{
+ tCC* pOptTitle = NULL;
+
+ /*
+ * Determine which header and which option formatting strings to use
+ */
+ if (checkGNUUsage(pOpts)) {
+ (void)setGnuOptFmts( pOpts, &pOptTitle );
+ }
+ else {
+ (void)setStdOptFmts( pOpts, &pOptTitle );
+ }
+
+ printOptionUsage( pOpts, ex_code, pOptTitle );
+}
+
+
+/*=export_func optionUsage
+ * private:
+ *
+ * what: Print usage text
+ * arg: + tOptions* + pOptions + program options descriptor +
+ * arg: + int + exitCode + exit code for calling exit(3) +
+ *
+ * doc:
+ * This routine will print usage in both GNU-standard and AutoOpts-expanded
+ * formats. The descriptor specifies the default, but AUTOOPTS_USAGE will
+ * over-ride this, providing the value of it is set to either "gnu" or
+ * "autoopts". This routine will @strong{not} return.
+ *
+ * If "exitCode" is "EX_USAGE" (normally 64), then output will to to stdout
+ * and the actual exit code will be "EXIT_SUCCESS".
+=*/
+void
+optionUsage(
+ tOptions* pOptions,
+ int usage_exit_code )
+{
+ int actual_exit_code =
+ (usage_exit_code == EX_USAGE) ? EXIT_SUCCESS : usage_exit_code;
+
+ displayEnum = AG_FALSE;
+
+ /*
+ * Paged usage will preset option_usage_fp to an output file.
+ * If it hasn't already been set, then set it to standard output
+ * on successful exit (help was requested), otherwise error out.
+ */
+ if (option_usage_fp == NULL)
+ option_usage_fp = (actual_exit_code != EXIT_SUCCESS) ? stderr : stdout;
+
+ fprintf( option_usage_fp, pOptions->pzUsageTitle, pOptions->pzProgName );
+
+ {
+ tCC* pOptTitle = NULL;
+
+ /*
+ * Determine which header and which option formatting strings to use
+ */
+ if (checkGNUUsage(pOptions)) {
+ int flen = setGnuOptFmts( pOptions, &pOptTitle );
+ sprintf( zOptFmtLine, zFmtFmt, flen );
+ fputc( '\n', option_usage_fp );
+ }
+ else {
+ int flen = setStdOptFmts( pOptions, &pOptTitle );
+ sprintf( zOptFmtLine, zFmtFmt, flen );
+
+ /*
+ * When we exit with EXIT_SUCCESS and the first option is a doc
+ * option, we do *NOT* want to emit the column headers.
+ * Otherwise, we do.
+ */
+ if ( (usage_exit_code != EXIT_SUCCESS)
+ || ((pOptions->pOptDesc->fOptState & OPTST_DOCUMENT) == 0) )
+
+ fputs( pOptTitle, option_usage_fp );
+ }
+
+ printOptionUsage( pOptions, usage_exit_code, pOptTitle );
+ }
+
+ /*
+ * Describe the mechanics of denoting the options
+ */
+ switch (pOptions->fOptSet & OPTPROC_L_N_S) {
+ case OPTPROC_L_N_S: fputs( zFlagOkay, option_usage_fp ); break;
+ case OPTPROC_SHORTOPT: break;
+ case OPTPROC_LONGOPT: fputs( zNoFlags, option_usage_fp ); break;
+ case 0: fputs( zOptsOnly, option_usage_fp ); break;
+ }
+
+ if ((pOptions->fOptSet & OPTPROC_NUM_OPT) != 0) {
+ fputs( zNumberOpt, option_usage_fp );
+ }
+
+ if ((pOptions->fOptSet & OPTPROC_REORDER) != 0) {
+ fputs( zReorder, option_usage_fp );
+ }
+
+ if (pOptions->pzExplain != NULL)
+ fputs( pOptions->pzExplain, option_usage_fp );
+
+ /*
+ * IF the user is asking for help (thus exiting with SUCCESS),
+ * THEN see what additional information we can provide.
+ */
+ if (usage_exit_code == EXIT_SUCCESS)
+ printProgramDetails( pOptions );
+
+ if (pOptions->pzBugAddr != NULL)
+ fprintf( option_usage_fp, zPlsSendBugs, pOptions->pzBugAddr );
+ fflush( option_usage_fp );
+
+ exit( actual_exit_code );
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * PER OPTION TYPE USAGE INFORMATION
+ */
+static void
+printExtendedUsage(
+ tOptions* pOptions,
+ tOptDesc* pOD,
+ arg_types_t* pAT )
+{
+ /*
+ * IF there are option conflicts or dependencies,
+ * THEN print them here.
+ */
+ if ( (pOD->pOptMust != NULL)
+ || (pOD->pOptCant != NULL) ) {
+
+ fputs( zTabHyp, option_usage_fp );
+
+ /*
+ * DEPENDENCIES:
+ */
+ if (pOD->pOptMust != NULL) {
+ const int* pOptNo = pOD->pOptMust;
+
+ fputs( zReqThese, option_usage_fp );
+ for (;;) {
+ fprintf( option_usage_fp, zTabout, pOptions->pOptDesc[
+ *pOptNo ].pz_Name );
+ if (*++pOptNo == NO_EQUIVALENT)
+ break;
+ }
+
+ if (pOD->pOptCant != NULL)
+ fputs( zTabHypAnd, option_usage_fp );
+ }
+
+ /*
+ * CONFLICTS:
+ */
+ if (pOD->pOptCant != NULL) {
+ const int* pOptNo = pOD->pOptCant;
+
+ fputs( zProhib, option_usage_fp );
+ for (;;) {
+ fprintf( option_usage_fp, zTabout, pOptions->pOptDesc[
+ *pOptNo ].pz_Name );
+ if (*++pOptNo == NO_EQUIVALENT)
+ break;
+ }
+ }
+ }
+
+ /*
+ * IF there is a disablement string
+ * THEN print the disablement info
+ */
+ if (pOD->pz_DisableName != NULL )
+ fprintf( option_usage_fp, zDis, pOD->pz_DisableName );
+
+ /*
+ * IF the numeric option has a special callback,
+ * THEN call it, requesting the range or other special info
+ */
+ if ( (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_NUMERIC)
+ && (pOD->pOptProc != NULL)
+ && (pOD->pOptProc != optionNumericVal) ) {
+ (*(pOD->pOptProc))( pOptions, NULL );
+ }
+
+ /*
+ * IF the option defaults to being enabled,
+ * THEN print that out
+ */
+ if (pOD->fOptState & OPTST_INITENABLED)
+ fputs( zEnab, option_usage_fp );
+
+ /*
+ * IF the option is in an equivalence class
+ * AND not the designated lead
+ * THEN print equivalence and leave it at that.
+ */
+ if ( (pOD->optEquivIndex != NO_EQUIVALENT)
+ && (pOD->optEquivIndex != pOD->optActualIndex ) ) {
+ fprintf( option_usage_fp, zAlt,
+ pOptions->pOptDesc[ pOD->optEquivIndex ].pz_Name );
+ return;
+ }
+
+ /*
+ * IF this particular option can NOT be preset
+ * AND some form of presetting IS allowed,
+ * AND it is not an auto-managed option (e.g. --help, et al.)
+ * THEN advise that this option may not be preset.
+ */
+ if ( ((pOD->fOptState & OPTST_NO_INIT) != 0)
+ && ( (pOptions->papzHomeList != NULL)
+ || (pOptions->pzPROGNAME != NULL)
+ )
+ && (pOD->optIndex < pOptions->presetOptCt)
+ )
+
+ fputs( zNoPreset, option_usage_fp );
+
+ /*
+ * Print the appearance requirements.
+ */
+ if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_MEMBERSHIP)
+ fputs( zMembers, option_usage_fp );
+
+ else switch (pOD->optMinCt) {
+ case 1:
+ case 0:
+ switch (pOD->optMaxCt) {
+ case 0: fputs( zPreset, option_usage_fp ); break;
+ case NOLIMIT: fputs( zNoLim, option_usage_fp ); break;
+ case 1: break;
+ /*
+ * IF the max is more than one but limited, print "UP TO" message
+ */
+ default: fprintf( option_usage_fp, zUpTo, pOD->optMaxCt ); break;
+ }
+ break;
+
+ default:
+ /*
+ * More than one is required. Print the range.
+ */
+ fprintf( option_usage_fp, zMust, pOD->optMinCt, pOD->optMaxCt );
+ }
+
+ if ( NAMED_OPTS( pOptions )
+ && (pOptions->specOptIdx.default_opt == pOD->optIndex))
+ fputs( zDefaultOpt, option_usage_fp );
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Figure out where all the initialization files might live.
+ * This requires translating some environment variables and
+ * testing to see if a name is a directory or a file. It's
+ * squishy, but important to tell users how to find these files.
+ */
+static void
+printInitList(
+ tCC* const* papz,
+ ag_bool* pInitIntro,
+ tCC* pzRc,
+ tCC* pzPN )
+{
+ char zPath[ AG_PATH_MAX+1 ];
+
+ if (papz == NULL)
+ return;
+
+ fputs( zPresetIntro, option_usage_fp );
+ *pInitIntro = AG_FALSE;
+
+ for (;;) {
+ char const* pzPath = *(papz++);
+
+ if (pzPath == NULL)
+ break;
+
+ if (optionMakePath(zPath, (int)sizeof( zPath ), pzPath, pzPN))
+ pzPath = zPath;
+
+ /*
+ * Print the name of the "homerc" file. If the "rcfile" name is
+ * not empty, we may or may not print that, too...
+ */
+ fprintf( option_usage_fp, zPathFmt, pzPath );
+ if (*pzRc != NUL) {
+ struct stat sb;
+
+ /*
+ * IF the "homerc" file is a directory,
+ * then append the "rcfile" name.
+ */
+ if ( (stat( pzPath, &sb ) == 0)
+ && S_ISDIR( sb.st_mode ) ) {
+ fputc( DIRCH, option_usage_fp );
+ fputs( pzRc, option_usage_fp );
+ }
+ }
+
+ fputc( '\n', option_usage_fp );
+ }
+}
+
+
+/*
+ * Print the usage information for a single option.
+ */
+static void
+printOneUsage(
+ tOptions* pOptions,
+ tOptDesc* pOD,
+ arg_types_t* pAT )
+{
+ /*
+ * Flag prefix: IF no flags at all, then omit it. If not printable
+ * (not allowed for this option), then blank, else print it.
+ * Follow it with a comma if we are doing GNU usage and long
+ * opts are to be printed too.
+ */
+ if ((pOptions->fOptSet & OPTPROC_SHORTOPT) == 0)
+ fputs( pAT->pzSpc, option_usage_fp );
+ else if (! isgraph( pOD->optValue)) {
+ if ( (pOptions->fOptSet & (OPTPROC_GNUUSAGE|OPTPROC_LONGOPT))
+ == (OPTPROC_GNUUSAGE|OPTPROC_LONGOPT))
+ fputc( ' ', option_usage_fp );
+ fputs( pAT->pzNoF, option_usage_fp );
+ } else {
+ fprintf( option_usage_fp, " -%c", pOD->optValue );
+ if ( (pOptions->fOptSet & (OPTPROC_GNUUSAGE|OPTPROC_LONGOPT))
+ == (OPTPROC_GNUUSAGE|OPTPROC_LONGOPT))
+ fputs( ", ", option_usage_fp );
+ }
+
+ {
+ char z[ 80 ];
+ tCC* pzArgType;
+ /*
+ * Determine the argument type string first on its usage, then,
+ * when the option argument is required, base the type string on the
+ * argument type.
+ */
+ if (OPTST_GET_ARGTYPE(pOD->fOptState) == OPARG_TYPE_NONE) {
+ pzArgType = pAT->pzNo;
+
+ } else if (pOD->fOptState & OPTST_ARG_OPTIONAL) {
+ pzArgType = pAT->pzOpt;
+
+ } else switch (OPTST_GET_ARGTYPE(pOD->fOptState)) {
+ case OPARG_TYPE_ENUMERATION: pzArgType = pAT->pzKey; break;
+ case OPARG_TYPE_MEMBERSHIP: pzArgType = pAT->pzKeyL; break;
+ case OPARG_TYPE_BOOLEAN: pzArgType = pAT->pzBool; break;
+ case OPARG_TYPE_NUMERIC: pzArgType = pAT->pzNum; break;
+ case OPARG_TYPE_HIERARCHY: pzArgType = pAT->pzNest; break;
+ case OPARG_TYPE_STRING: pzArgType = pAT->pzStr; break;
+ default: goto bogus_desc; break;
+ }
+
+ snprintf( z, sizeof(z), pAT->pzOptFmt, pzArgType, pOD->pz_Name,
+ (pOD->optMinCt != 0) ? pAT->pzReq : pAT->pzOpt );
+
+ fprintf( option_usage_fp, zOptFmtLine, z, pOD->pzText );
+
+ switch (OPTST_GET_ARGTYPE(pOD->fOptState)) {
+ case OPARG_TYPE_ENUMERATION:
+ case OPARG_TYPE_MEMBERSHIP:
+ displayEnum = (pOD->pOptProc != NULL) ? AG_TRUE : displayEnum;
+ }
+ }
+ return;
+
+ bogus_desc:
+ fprintf( stderr, zInvalOptDesc, pOD->pz_Name );
+ exit( EX_SOFTWARE );
+}
+
+
+/*
+ * Print out the usage information for just the options.
+ */
+static void
+printOptionUsage(
+ tOptions* pOpts,
+ int ex_code,
+ tCC* pOptTitle )
+{
+ int ct = pOpts->optCt;
+ int optNo = 0;
+ tOptDesc* pOD = pOpts->pOptDesc;
+ int docCt = 0;
+
+ do {
+ if ((pOD->fOptState & OPTST_OMITTED) != 0)
+ continue;
+
+ if ((pOD->fOptState & OPTST_DOCUMENT) != 0) {
+ if (ex_code == EXIT_SUCCESS) {
+ fprintf(option_usage_fp, argTypes.pzBrk, pOD->pzText,
+ pOptTitle);
+ docCt++;
+ }
+
+ continue;
+ }
+
+ /*
+ * IF this is the first auto-opt maintained option
+ * *AND* we are doing a full help
+ * *AND* there are documentation options
+ * *AND* the last one was not a doc option,
+ * THEN document that the remaining options are not user opts
+ */
+ if ( (pOpts->presetOptCt == optNo)
+ && (ex_code == EXIT_SUCCESS)
+ && (docCt > 0)
+ && ((pOD[-1].fOptState & OPTST_DOCUMENT) == 0) )
+ fprintf( option_usage_fp, argTypes.pzBrk, zAuto, pOptTitle );
+
+ printOneUsage( pOpts, pOD, &argTypes );
+
+ /*
+ * IF we were invoked because of the --help option,
+ * THEN print all the extra info
+ */
+ if (ex_code == EXIT_SUCCESS)
+ printExtendedUsage( pOpts, pOD, &argTypes );
+
+ } while (pOD++, optNo++, (--ct > 0));
+
+ fputc( '\n', option_usage_fp );
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * PROGRAM DETAILS
+ */
+static void
+printProgramDetails( tOptions* pOptions )
+{
+ ag_bool initIntro = AG_TRUE;
+
+ /*
+ * Display all the places we look for config files
+ */
+ printInitList( pOptions->papzHomeList, &initIntro,
+ pOptions->pzRcName, pOptions->pzProgPath );
+
+ /*
+ * Let the user know about environment variable settings
+ */
+ if ((pOptions->fOptSet & OPTPROC_ENVIRON) != 0) {
+ if (initIntro)
+ fputs( zPresetIntro, option_usage_fp );
+
+ fprintf( option_usage_fp, zExamineFmt, pOptions->pzPROGNAME );
+ }
+
+ /*
+ * IF we found an enumeration,
+ * THEN hunt for it again. Call the handler proc with a NULL
+ * option struct pointer. That tells it to display the keywords.
+ */
+ if (displayEnum) {
+ int ct = pOptions->optCt;
+ int optNo = 0;
+ tOptDesc* pOD = pOptions->pOptDesc;
+
+ fputc( '\n', option_usage_fp );
+ fflush( option_usage_fp );
+ do {
+ switch (OPTST_GET_ARGTYPE(pOD->fOptState)) {
+ case OPARG_TYPE_ENUMERATION:
+ case OPARG_TYPE_MEMBERSHIP:
+ (*(pOD->pOptProc))( NULL, pOD );
+ }
+ } while (pOD++, optNo++, (--ct > 0));
+ }
+
+ /*
+ * If there is a detail string, now is the time for that.
+ */
+ if (pOptions->pzDetail != NULL)
+ fputs( pOptions->pzDetail, option_usage_fp );
+}
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * OPTION LINE FORMATTING SETUP
+ *
+ * The "OptFmt" formats receive three arguments:
+ * 1. the type of the option's argument
+ * 2. the long name of the option
+ * 3. "YES" or "no ", depending on whether or not the option must appear
+ * on the command line.
+ * These formats are used immediately after the option flag (if used) has
+ * been printed.
+ *
+ * Set up the formatting for GNU-style output
+ */
+static int
+setGnuOptFmts( tOptions* pOpts, tCC** ppT )
+{
+ int flen = 22;
+ *ppT = zNoRq_ShrtTtl;
+
+ argTypes.pzStr = zGnuStrArg;
+ argTypes.pzReq = zOneSpace;
+ argTypes.pzNum = zGnuNumArg;
+ argTypes.pzKey = zGnuKeyArg;
+ argTypes.pzKeyL = zGnuKeyLArg;
+ argTypes.pzBool = zGnuBoolArg;
+ argTypes.pzNest = zGnuNestArg;
+ argTypes.pzOpt = zGnuOptArg;
+ argTypes.pzNo = zOneSpace;
+ argTypes.pzBrk = zGnuBreak;
+ argTypes.pzNoF = zSixSpaces;
+ argTypes.pzSpc = zThreeSpaces;
+
+ switch (pOpts->fOptSet & OPTPROC_L_N_S) {
+ case OPTPROC_L_N_S: argTypes.pzOptFmt = zGnuOptFmt; break;
+ case OPTPROC_LONGOPT: argTypes.pzOptFmt = zGnuOptFmt; break;
+ case 0: argTypes.pzOptFmt = zGnuOptFmt + 2; break;
+ case OPTPROC_SHORTOPT:
+ argTypes.pzOptFmt = zShrtGnuOptFmt;
+ zGnuStrArg[0] = zGnuNumArg[0] = zGnuKeyArg[0] = zGnuBoolArg[0] = ' ';
+ argTypes.pzOpt = " [arg]";
+ flen = 8;
+ break;
+ }
+
+ return flen;
+}
+
+
+/*
+ * Standard (AutoOpts normal) option line formatting
+ */
+static int
+setStdOptFmts( tOptions* pOpts, tCC** ppT )
+{
+ int flen = 0;
+
+ argTypes.pzStr = zStdStrArg;
+ argTypes.pzReq = zStdReqArg;
+ argTypes.pzNum = zStdNumArg;
+ argTypes.pzKey = zStdKeyArg;
+ argTypes.pzKeyL = zStdKeyLArg;
+ argTypes.pzBool = zStdBoolArg;
+ argTypes.pzNest = zStdNestArg;
+ argTypes.pzOpt = zStdOptArg;
+ argTypes.pzNo = zStdNoArg;
+ argTypes.pzBrk = zStdBreak;
+ argTypes.pzNoF = zFiveSpaces;
+ argTypes.pzSpc = zTwoSpaces;
+
+ switch (pOpts->fOptSet & (OPTPROC_NO_REQ_OPT | OPTPROC_SHORTOPT)) {
+ case (OPTPROC_NO_REQ_OPT | OPTPROC_SHORTOPT):
+ *ppT = zNoRq_ShrtTtl;
+ argTypes.pzOptFmt = zNrmOptFmt;
+ flen = 19;
+ break;
+
+ case OPTPROC_NO_REQ_OPT:
+ *ppT = zNoRq_NoShrtTtl;
+ argTypes.pzOptFmt = zNrmOptFmt;
+ flen = 19;
+ break;
+
+ case OPTPROC_SHORTOPT:
+ *ppT = zReq_ShrtTtl;
+ argTypes.pzOptFmt = zReqOptFmt;
+ flen = 24;
+ break;
+
+ case 0:
+ *ppT = zReq_NoShrtTtl;
+ argTypes.pzOptFmt = zReqOptFmt;
+ flen = 24;
+ }
+
+ return flen;
+}
+
+
+/*:
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/usage.c */
diff --git a/contrib/ntp/sntp/libopts/version.c b/contrib/ntp/sntp/libopts/version.c
new file mode 100644
index 0000000..85949d5
--- /dev/null
+++ b/contrib/ntp/sntp/libopts/version.c
@@ -0,0 +1,178 @@
+
+/* $Id: version.c,v 4.10 2007/04/28 22:19:23 bkorb Exp $
+ * Time-stamp: "2007-04-28 10:08:34 bkorb"
+ *
+ * This module implements the default usage procedure for
+ * Automated Options. It may be overridden, of course.
+ */
+
+static char const zAOV[] =
+ "Automated Options version %s, copyright (c) 1999-2007 Bruce Korb\n";
+
+/* Automated Options is free software.
+ * You may 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.
+ *
+ * Automated Options 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 Automated Options. See the file "COPYING". If not,
+ * write to: The Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ * As a special exception, Bruce Korb gives permission for additional
+ * uses of the text contained in his release of AutoOpts.
+ *
+ * The exception is that, if you link the AutoOpts library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public License.
+ * Your use of that executable is in no way restricted on account of
+ * linking the AutoOpts library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public License.
+ *
+ * This exception applies only to the code released by Bruce Korb under
+ * the name AutoOpts. If you copy code from other sources under the
+ * General Public License into a copy of AutoOpts, as the General Public
+ * License permits, the exception does not apply to the code that you add
+ * in this way. To avoid misleading anyone as to the status of such
+ * modified files, you must delete this exception notice from them.
+ *
+ * If you write modifications of your own for AutoOpts, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice.
+ */
+
+/* = = = START-STATIC-FORWARD = = = */
+/* static forward declarations maintained by :mkfwd */
+static void
+printVersion( tOptions* pOpts, tOptDesc* pOD, FILE* fp );
+/* = = = END-STATIC-FORWARD = = = */
+
+/*=export_func optionVersion
+ *
+ * what: return the compiled AutoOpts version number
+ * ret_type: char const*
+ * ret_desc: the version string in constant memory
+ * doc:
+ * Returns the full version string compiled into the library.
+ * The returned string cannot be modified.
+=*/
+char const*
+optionVersion( void )
+{
+ static char const zVersion[] =
+ STR( AO_CURRENT.AO_REVISION );
+
+ return zVersion;
+}
+
+
+static void
+printVersion( tOptions* pOpts, tOptDesc* pOD, FILE* fp )
+{
+ char swCh;
+
+ /*
+ * IF the optional argument flag is off, or the argument is not provided,
+ * then just print the version.
+ */
+ if ( ((pOD->fOptState & OPTST_ARG_OPTIONAL) == 0)
+ || (pOD->optArg.argString == NULL))
+ swCh = 'v';
+ else swCh = tolower(pOD->optArg.argString[0]);
+
+ if (pOpts->pzFullVersion != NULL) {
+ fputs( pOpts->pzFullVersion, fp );
+ fputc( '\n', fp );
+
+ } else {
+ char const *pz = pOpts->pzUsageTitle;
+ do { fputc(*pz, fp); } while (*(pz++) != '\n');
+ }
+
+ switch (swCh) {
+ case NUL: /* arg provided, but empty */
+ case 'v':
+ break;
+
+ case 'c':
+ if (pOpts->pzCopyright != NULL) {
+ fputs( pOpts->pzCopyright, fp );
+ fputc( '\n', fp );
+ }
+ fprintf( fp, zAOV, optionVersion() );
+ if (pOpts->pzBugAddr != NULL)
+ fprintf( fp, zPlsSendBugs, pOpts->pzBugAddr );
+ break;
+
+ case 'n':
+ if (pOpts->pzCopyright != NULL) {
+ fputs( pOpts->pzCopyright, fp );
+ fputc( '\n', fp );
+ fputc( '\n', fp );
+ }
+
+ if (pOpts->pzCopyNotice != NULL) {
+ fputs( pOpts->pzCopyNotice, fp );
+ fputc( '\n', fp );
+ }
+
+ fprintf( fp, zAOV, optionVersion() );
+ if (pOpts->pzBugAddr != NULL)
+ fprintf( fp, zPlsSendBugs, pOpts->pzBugAddr );
+ break;
+
+ default:
+ fprintf( stderr, zBadVerArg, swCh );
+ exit( EXIT_FAILURE );
+ }
+
+ exit( EXIT_SUCCESS );
+}
+
+/*=export_func optionPrintVersion
+ * private:
+ *
+ * what: Print the program version
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * This routine will print the version to stdout.
+=*/
+void
+optionPrintVersion( tOptions* pOpts, tOptDesc* pOD )
+{
+ printVersion( pOpts, pOD, stdout );
+}
+
+/*=export_func optionVersionStderr
+ * private:
+ *
+ * what: Print the program version to stderr
+ * arg: + tOptions* + pOpts + program options descriptor +
+ * arg: + tOptDesc* + pOptDesc + the descriptor for this arg +
+ *
+ * doc:
+ * This routine will print the version to stderr.
+=*/
+void
+optionVersionStderr( tOptions* pOpts, tOptDesc* pOD )
+{
+ printVersion( pOpts, pOD, stderr );
+}
+
+/*
+ * Local Variables:
+ * mode: C
+ * c-file-style: "stroustrup"
+ * indent-tabs-mode: nil
+ * End:
+ * end of autoopts/version.c */
diff --git a/contrib/ntp/sntp/ltmain.sh b/contrib/ntp/sntp/ltmain.sh
new file mode 100644
index 0000000..06823e0
--- /dev/null
+++ b/contrib/ntp/sntp/ltmain.sh
@@ -0,0 +1,6863 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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.
+
+basename="s,^.*/,,g"
+
+# 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"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.22
+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes.
+if test -n "${ZSH_VERSION+set}" ; then
+ setopt NO_GLOB_SUBST
+fi
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# 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'
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+ SP2NL='tr \040 \012'
+ NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ SP2NL='tr \100 \n'
+ NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+ save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+ save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+duplicate_deps=no
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# 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 "$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" || {
+ $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+ exit $EXIT_FAILURE
+ }
+ fi
+
+ $echo "X$my_tmpdir" | $Xsed
+}
+
+
+# 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.
+func_win32_libid ()
+{
+ 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
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+ $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_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 ()
+{
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ 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 "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+ # 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.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+ # 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
+ $echo "$modename: unable to infer tagged configuration"
+ $echo "$modename: specify a tag with \`--tag'" 1>&2
+ exit $EXIT_FAILURE
+# else
+# $echo "$modename: using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+
+ $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+ $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+ exit $EXIT_FAILURE
+ fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+ my_status=""
+
+ $show "${rm}r $my_gentop"
+ $run ${rm}r "$my_gentop"
+ $show "$mkdir $my_gentop"
+ $run $mkdir "$my_gentop"
+ my_status=$?
+ if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+ exit $my_status
+ fi
+
+ 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
+ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+ my_xdir="$my_gentop/$my_xlib"
+
+ $show "${rm}r $my_xdir"
+ $run ${rm}r "$my_xdir"
+ $show "$mkdir $my_xdir"
+ $run $mkdir "$my_xdir"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+ exit $exit_status
+ fi
+ case $host in
+ *-darwin*)
+ $show "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ if test -z "$run"; then
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ $show "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ 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 have a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+ lipo -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ ${rm}r unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd "$darwin_orig_dir"
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ fi # $run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+ func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+disable_libs=no
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+ arg="$1"
+ shift
+
+ case $arg in
+ -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ execute_dlfiles)
+ execute_dlfiles="$execute_dlfiles $arg"
+ ;;
+ tag)
+ tagname="$arg"
+ preserve_args="${preserve_args}=$arg"
+
+ # Check whether tagname contains only valid characters
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ $echo "$progname: invalid tag name: $tagname" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $tagname in
+ CC)
+ # Don't test for the "default" C tag, as we know, it's there, but
+ # not specially marked.
+ ;;
+ *)
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+ taglist="$taglist $tagname"
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+ else
+ $echo "$progname: ignoring unknown tag $tagname" 1>&2
+ fi
+ ;;
+ esac
+ ;;
+ *)
+ eval "$prev=\$arg"
+ ;;
+ esac
+
+ prev=
+ prevopt=
+ continue
+ fi
+
+ # Have we seen a non-optional argument yet?
+ case $arg in
+ --help)
+ show_help=yes
+ ;;
+
+ --version)
+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ $echo
+ $echo "Copyright (C) 2005 Free Software Foundation, Inc."
+ $echo "This is free software; see the source for copying conditions. There is NO"
+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ exit $?
+ ;;
+
+ --config)
+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+ done
+ exit $?
+ ;;
+
+ --debug)
+ $echo "$progname: enabling shell trace mode"
+ set -x
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --dry-run | -n)
+ run=:
+ ;;
+
+ --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 $?
+ ;;
+
+ --finish) mode="finish" ;;
+
+ --mode) prevopt="--mode" prev=mode ;;
+ --mode=*) mode="$optarg" ;;
+
+ --preserve-dup-deps) duplicate_deps="yes" ;;
+
+ --quiet | --silent)
+ show=:
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --tag)
+ prevopt="--tag"
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+
+ -dlopen)
+ prevopt="-dlopen"
+ prev=execute_dlfiles
+ ;;
+
+ -*)
+ $echo "$modename: unrecognized option \`$arg'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+
+ *)
+ nonopt="$arg"
+ break
+ ;;
+ esac
+done
+
+if test -n "$prevopt"; then
+ $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+fi
+
+case $disable_libs in
+no)
+ ;;
+shared)
+ build_libtool_libs=no
+ build_old_libs=yes
+ ;;
+static)
+ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+ ;;
+esac
+
+# 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=
+
+if test -z "$show_help"; then
+
+ # Infer the operation mode.
+ if test -z "$mode"; then
+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+ $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+ case $nonopt in
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ mode=link
+ for arg
+ do
+ case $arg in
+ -c)
+ mode=compile
+ break
+ ;;
+ esac
+ done
+ ;;
+ *db | *dbx | *strace | *truss)
+ mode=execute
+ ;;
+ *install*|cp|mv)
+ mode=install
+ ;;
+ *rm)
+ mode=uninstall
+ ;;
+ *)
+ # If we have no mode, but dlfiles were specified, then do execute mode.
+ test -n "$execute_dlfiles" && mode=execute
+
+ # Just use the default operation mode.
+ if test -z "$mode"; then
+ if test -n "$nonopt"; then
+ $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+ else
+ $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+ fi
+ fi
+ ;;
+ esac
+ fi
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$modename --help --mode=$mode' for more information."
+
+ # These modes are in order of execution frequency so that they run quickly.
+ case $mode in
+ # libtool compile mode
+ compile)
+ modename="$modename: compile"
+ # 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=
+
+ 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)
+ if test -n "$libobj" ; then
+ $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ arg_mode=target
+ continue
+ ;;
+
+ -static | -prefer-pic | -prefer-non-pic)
+ later="$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,*)
+ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ lastarg="$lastarg $arg"
+ done
+ IFS="$save_ifs"
+ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+ # Add the arguments to base_compile.
+ base_compile="$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.
+ lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+ case $lastarg in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, and some SunOS ksh mistreat backslash-escaping
+ # in scan sets (worked around with variable expansion),
+ # and furthermore cannot handle '|' '&' '(' ')' in scan sets
+ # at all, so we specify them separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ lastarg="\"$lastarg\""
+ ;;
+ esac
+
+ base_compile="$base_compile $lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ $echo "$modename: you must specify an argument for -Xcompile"
+ exit $EXIT_FAILURE
+ ;;
+ target)
+ $echo "$modename: you must specify a target with \`-o'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *)
+ # Get the name of the library object.
+ [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ xform='[cCFSifmso]'
+ case $libobj in
+ *.ada) xform=ada ;;
+ *.adb) xform=adb ;;
+ *.ads) xform=ads ;;
+ *.asm) xform=asm ;;
+ *.c++) xform=c++ ;;
+ *.cc) xform=cc ;;
+ *.ii) xform=ii ;;
+ *.class) xform=class ;;
+ *.cpp) xform=cpp ;;
+ *.cxx) xform=cxx ;;
+ *.f90) xform=f90 ;;
+ *.for) xform=for ;;
+ *.java) xform=java ;;
+ esac
+
+ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+ case $libobj in
+ *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+ *)
+ $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -static)
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+ case $qlibobj in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qlibobj="\"$qlibobj\"" ;;
+ esac
+ test "X$libobj" != "X$qlibobj" \
+ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+ xdir=
+ else
+ xdir=$xdir/
+ fi
+ lobj=${xdir}$objdir/$objname
+
+ if test -z "$base_compile"; then
+ $echo "$modename: you must specify a compilation command" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # 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
+
+ $run $rm $removelist
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2*)
+ 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 "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ removelist="$removelist $output_obj $lockfile"
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+ 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 $run ln "$progpath" "$lockfile" 2>/dev/null; do
+ $show "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."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+ $echo "$srcfile" > "$lockfile"
+ fi
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+ qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+ case $qsrcfile in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qsrcfile="\"$qsrcfile\"" ;;
+ esac
+
+ $run $rm "$libobj" "${libobj}T"
+
+ # Create a libtool object file (analogous to a ".la" file),
+ # but don't create it if we're doing a dry run.
+ test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+ # 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
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ $run $rm "$lobj" "$output_obj"
+
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ test -n "$output_obj" && $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ 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."
+
+ $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
+ $show "$mv $output_obj $lobj"
+ if $run $mv $output_obj $lobj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the PIC object to the libtool object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ else
+ # No PIC object so indicate it doesn't exist in the libtool
+ # object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+ 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"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ $run $rm "$obj" "$output_obj"
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ 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."
+
+ $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
+ $show "$mv $output_obj $obj"
+ if $run $mv $output_obj $obj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+ else
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+ fi
+
+ $run $mv "${libobj}T" "${libobj}"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ $run $rm "$lockfile"
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool link mode
+ link | relink)
+ modename="$modename: link"
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # 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=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ notinst_path= # paths that contain not-installed libtool libraries
+ 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
+
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -all-static | -static)
+ if test "X$arg" = "X-all-static"; then
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+ fi
+ if test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ else
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+ fi
+ 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
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+ ;;
+ *) qarg=$arg ;;
+ esac
+ libtool_args="$libtool_args $qarg"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ compile_command="$compile_command @OUTPUT@"
+ finalize_command="$finalize_command @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ compile_command="$compile_command @SYMFILE@"
+ finalize_command="$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
+ dlfiles="$dlfiles $arg"
+ else
+ dlprefiles="$dlprefiles $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ if test ! -f "$arg"; then
+ $echo "$modename: symbol file \`$arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat $save_arg`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ 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
+ dlfiles="$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.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$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
+ non_pic_objects="$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"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ done
+ else
+ $echo "$modename: link input file \`$save_arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ compile_command="$compile_command $wl$qarg"
+ finalize_command="$finalize_command $wl$qarg"
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ darwin_framework|darwin_framework_skip)
+ test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ prev=
+ 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
+ compile_command="$compile_command $link_static_flag"
+ finalize_command="$finalize_command $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+ continue
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ 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
+ $echo "$modename: more than one -exported-symbols argument is not allowed"
+ exit $EXIT_FAILURE
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework|-arch|-isysroot)
+ case " $CC " in
+ *" ${arg} ${1} "* | *" ${arg} ${1} "*)
+ prev=darwin_framework_skip ;;
+ *) compiler_flags="$compiler_flags $arg"
+ prev=darwin_framework ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ 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*)
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ notinst_path="$notinst_path $dir"
+ fi
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$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*)
+ # 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
+ deplibs="$deplibs -framework System"
+ 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
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ -model)
+ compile_command="$compile_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ finalize_command="$finalize_command $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+ # -r[0-9][0-9]* specifies the processor on the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+ # +DA*, +DD* enable 64-bit mode on the HP compiler
+ # -q* pass through compiler args for the IBM compiler
+ # -m* pass through architecture-specific compiler args for GCC
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+ # -pg pass through profiling flag for GCC
+ # @file GCC response files
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+ -t[45]*|-txscale*|@*)
+
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # in order for the loader to find any dlls it needs.
+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+ 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*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ continue
+ ;;
+
+ -static)
+ # 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
+ ;;
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Wl,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $wl$flag"
+ linker_flags="$linker_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ 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
+ dlfiles="$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.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$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
+ non_pic_objects="$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"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ 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.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+ done # argument parsing loop
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'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\"
+
+ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$output_objdir" = "X$output"; then
+ output_objdir="$objdir"
+ else
+ output_objdir="$output_objdir/$objdir"
+ fi
+ # Create the object directory.
+ if test ! -d "$output_objdir"; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ # Determine the type of output
+ case $output in
+ "")
+ $echo "$modename: you must specify an output file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ case $host in
+ *cygwin* | *mingw* | *pw32*)
+ # don't eliminate duplications in $postdeps and $predeps
+ duplicate_compiler_generated_deps=yes
+ ;;
+ *)
+ duplicate_compiler_generated_deps=$duplicate_deps
+ ;;
+ 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 test "X$duplicate_deps" = "Xyes" ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ libs="$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 test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$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
+ case $linkmode in
+ lib)
+ passes="conv link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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
+ 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 "$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)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags $deplib"
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; 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 (${SED} -e '2q' $lib |
+ grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ library_names=
+ old_library=
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ 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
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+ 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
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ 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
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ *)
+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ 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 used here."
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the"
+ $echo "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ 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.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ # 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
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$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
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ $echo "$modename: \`$lib' is not a convenience library" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ 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.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$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
+ $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ $echo "$modename: warning: library \`$lib' was moved." 1>&2
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$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
+ notinst_path="$notinst_path $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi
+ fi # $installed = yes
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ 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
+ newlib_search_path="$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*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+ 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 test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$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 -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
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+ *) temp_rpath="$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 "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$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
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on
+ # some systems (darwin)
+ if 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 "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ realname="$2"
+ shift; 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*)
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+ newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ $show "extracting exported symbol list from \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$extract_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ $show "generating import library for \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$old_archive_from_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ 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 "$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 module then we can not link against
+ # it, someone is ignoring the new warnings I added
+ if /usr/bin/file -L $add 2> /dev/null |
+ $EGREP ": [^:]* bundle" >/dev/null ; 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
+ 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; 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
+ [\\/]*)
+ add_dir="$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
+ $echo "$modename: configuration error: unsupported hardcode properties"
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$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:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes; 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:"*) ;;
+ *) finalize_shlibpath="$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
+ [\\/]*)
+ add_dir="$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*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ newlib_search_path="$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"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$deplib" && dir="."
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if grep "^installed=no" $deplib > /dev/null; then
+ path="$absdir/$objdir"
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$absdir" != "$libdir"; then
+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ fi
+ path="$absdir"
+ fi
+ depdepl=
+ case $host in
+ *-*-darwin*)
+ # we do not want to link against static libs,
+ # but need to link against shared
+ 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 "$path/$depdepl" ; then
+ depdepl="$path/$depdepl"
+ fi
+ # do not add paths which are already there
+ case " $newlib_search_path " in
+ *" $path "*) ;;
+ *) newlib_search_path="$newlib_search_path $path";;
+ esac
+ fi
+ path=""
+ ;;
+ *)
+ path="-L$path"
+ ;;
+ esac
+ ;;
+ -l*)
+ case $host in
+ *-*-darwin*)
+ # Again, we only want to link against shared libraries
+ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+ for tmp in $newlib_search_path ; do
+ if test -f "$tmp/lib$tmp_libs.dylib" ; then
+ eval depdepl="$tmp/lib$tmp_libs.dylib"
+ break
+ fi
+ done
+ path=""
+ ;;
+ *) continue ;;
+ esac
+ ;;
+ *) continue ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ case " $deplibs " in
+ *" $depdepl "*) ;;
+ *) deplibs="$depdepl $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ 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 "*) ;;
+ *) lib_search_path="$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 "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$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
+ tmp_libs="$tmp_libs $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+ fi
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ if test "$module" = no; then
+ $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+ exit $EXIT_FAILURE
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the non-libtool"
+ $echo "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
+ fi
+
+ if test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+ fi
+
+ set dummy $rpath
+ if test "$#" -gt 2; then
+ $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+ fi
+ install_libdir="$2"
+
+ 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
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+ fi
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ IFS="$save_ifs"
+
+ if test -n "$8"; then
+ $echo "$modename: too many parameters to \`-version-info'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # 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="$2"
+ number_minor="$3"
+ number_revision="$4"
+ #
+ # 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)
+ current=`expr $number_major + $number_minor`
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ current=`expr $number_major + $number_minor - 1`
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+ esac
+ ;;
+ no)
+ current="$2"
+ revision="$3"
+ age="$4"
+ ;;
+ 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]) ;;
+ *)
+ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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]) ;;
+ *)
+ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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]) ;;
+ *)
+ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ 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
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current";
+ ;;
+
+ irix | nonstopux)
+ major=`expr $current - $age + 1`
+
+ 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
+ iface=`expr $revision - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ major=.`expr $current - $age`
+ 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
+ iface=`expr $current - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+
+ *)
+ $echo "$modename: unknown library version type \`$version_type'" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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
+ $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+ fi
+
+ if test "$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)
+ ;;
+ $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
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ if test -n "$removelist"; then
+ $show "${rm}r $removelist"
+ $run ${rm}r $removelist
+ fi
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+ for path in $notinst_path; do
+ lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+ deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+ dependency_libs=`$echo "$dependency_libs " | ${SED} -e "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
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$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 "*) ;;
+ *) dlfiles="$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 "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs -framework System"
+ ;;
+ *-*-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
+ deplibs="$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.
+ $rm conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $rm conftest
+ $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" -ne "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $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 I believe you do not have"
+ $echo "*** because a test_compile did reveal that the linker did not use it for"
+ $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+ fi
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ else
+ # Error occurred in the first compile. Let's try to salvage
+ # the situation: Compile a separate program for each library.
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+ $LTCC $LTCFLAGS -o conftest conftest.c $i
+ # Did it work?
+ if test "$?" -eq 0 ; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$newdeplibs $i"
+ i=""
+ ;;
+ esac
+ fi
+ if test -n "$i" ; then
+ libname=`eval \\$echo \"$libname_spec\"`
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
+ set dummy $deplib_matches
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$newdeplibs $i"
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning: dynamic linker does not accept needed library $i."
+ $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 a test_compile did reveal that the linker did not use this one"
+ $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+ fi
+ fi
+ else
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning! Library $i is needed by this library but I was not able to"
+ $echo "*** make it link in! You will probably need to install it or some"
+ $echo "*** library that it depends on before this library will be fully"
+ $echo "*** functional. Installing it before continuing would be even better."
+ fi
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$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
+ # 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 "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$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
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$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
+ newdeplibs="$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
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+ -e '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 "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+ done
+ fi
+ if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
+ | grep . >/dev/null; then
+ $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
+ fi
+ ;;
+ 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 is the System framework
+ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ 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
+
+
+ # 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 "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$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 "$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
+ 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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$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
+ rpath="$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 "$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
+ realname="$2"
+ shift; 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
+ linknames="$linknames $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ if len=`expr "X$cmd" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ $show "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"; then
+ $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+ $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+ $run eval '$mv "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ libobjs="$libobjs $func_extract_archives_result"
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $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:" &&
+ len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise.
+ $echo "creating reloadable object files..."
+
+ # 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
+ output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ delfiles=
+ last_robj=
+ k=1
+ output=$output_objdir/$output_la-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$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.
+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ k=`expr $k + 1`
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=$obj
+ len=1
+ 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~
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+ if ${skipped_export-false}; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+ fi
+
+ # Set up a command to remove the reloadable object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+ done
+
+ $echo "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"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ 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\"
+ 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
+
+ # Append the command to remove the reloadable object files
+ # to the just-reset $cmds.
+ eval cmds=\"\$cmds~\$rm $delfiles\"
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(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 "$mode" = relink; then
+ $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
+ $show "${rm}r $gentop"
+ $run ${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
+ $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+ $run 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 "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+ fi
+
+ case $output in
+ *.lo)
+ if test -n "$objs$old_deplibs"; then
+ $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ libobj="$output"
+ obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $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
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${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"
+ # $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"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+ esac
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+ fi
+
+ if test "$preload" = yes; then
+ if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+ test "$dlopen_self_static" = unknown; then
+ $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+ fi
+ fi
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ case $host in
+ *darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ if test "$tagname" = CXX ; then
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ fi
+ ;;
+ 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 "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$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 "*) ;;
+ *) finalize_rpath="$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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$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 "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ fi
+
+ dlsyms=
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ dlsyms="${outputname}S.c"
+ else
+ $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+ fi
+ fi
+
+ if test -n "$dlsyms"; then
+ case $dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${outputname}.nm"
+
+ $show "$rm $nlist ${nlist}S ${nlist}T"
+ $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+ # Parse the name list into a source file.
+ $show "creating $output_objdir/$dlsyms"
+
+ test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ $show "generating symbol list for \`$output'"
+
+ test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ for arg in $progfiles; do
+ $show "extracting global C symbols from \`$arg'"
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $run $rm $export_symbols
+ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ else
+ $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ $run eval 'mv "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ fi
+ fi
+
+ for arg in $dlprefiles; do
+ $show "extracting global C symbols from \`$arg'"
+ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+ $run eval '$echo ": $name " >> "$nlist"'
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -z "$run"; then
+ # 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 >/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/$dlsyms"'
+ else
+ $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+ fi
+
+ $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+ case $host in
+ *cygwin* | *mingw* )
+ $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+ runtime relocations are performed -- see ld's documentation
+ on pseudo-relocs */
+struct {
+"
+ ;;
+ * )
+ $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+ ;;
+ esac
+
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ const char *name;
+ lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ fi
+
+ pic_flag_for_symtable=
+ 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*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+ esac;;
+ *-*-hpux*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag";;
+ esac
+ esac
+
+ # Now compile the dynamic symbol file.
+ $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+ $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+ # Clean up the generated files.
+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+ # Transform the symbol file into the correct name.
+ case $host in
+ *cygwin* | *mingw* )
+ if test -f "$output_objdir/${outputname}.def" ; then
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ else
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ fi
+ ;;
+ * )
+ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ ;;
+ esac
+ ;;
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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 "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ fi
+
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ # Replace the output file specification.
+ compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$link_command"
+ $run eval "$link_command"
+ exit_status=$?
+
+ # Delete the generated files.
+ if test -n "$dlsyms"; then
+ $show "$rm $output_objdir/${outputname}S.${objext}"
+ $run $rm "$output_objdir/${outputname}S.${objext}"
+ fi
+
+ exit $exit_status
+ fi
+
+ if test -n "$shlibpath_var"; then
+ # We should set the shlibpath_var
+ rpath=
+ for dir in $temp_rpath; do
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*)
+ # Absolute path.
+ rpath="$rpath$dir:"
+ ;;
+ *)
+ # Relative path: add a thisdir entry.
+ rpath="$rpath\$thisdir/$dir:"
+ ;;
+ esac
+ done
+ temp_rpath="$rpath"
+ 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
+ rpath="$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
+ rpath="$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 "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $run $rm $output
+ # Link the executable and exit
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+ 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"
+
+ $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+ $echo "$modename: \`$output' will be relinked during installation" 1>&2
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e '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 "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+
+ # Now create the wrapper script.
+ $show "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}\" || 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
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Quote $echo for shipping.
+ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+ case $progpath in
+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+ esac
+ qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+ else
+ qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if our run command is non-null.
+ if test -z "$run"; then
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ output_name=`basename $output`
+ output_path=`dirname $output`
+ 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
+
+ cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+ The $output program cannot be directly executed until all the libtool
+ libraries that it depends on are installed.
+
+ This wrapper executable should never be moved out of the build directory.
+ If it is, it will not operate correctly.
+
+ Currently, it simply execs the wrapper *script* "/bin/sh $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#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
+# 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 */
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+/* -DDEBUG is fairly common in CFLAGS. */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#endif
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+const char * base_name (const char *name);
+char * find_executable(const char *wrapper);
+int check_executable(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ DEBUG("(main) argv[0] : %s\n",argv[0]);
+ DEBUG("(main) program_name : %s\n",program_name);
+ newargz = XMALLOC(char *, argc+2);
+EOF
+
+ cat >> $cwrappersource <<EOF
+ newargz[0] = (char *) xstrdup("$SHELL");
+EOF
+
+ cat >> $cwrappersource <<"EOF"
+ newargz[1] = find_executable(argv[0]);
+ if (newargz[1] == NULL)
+ lt_fatal("Couldn't find %s", argv[0]);
+ DEBUG("(main) found exe at : %s\n",newargz[1]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+
+ for (i=0; i<argc+1; i++)
+ {
+ DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+ ;
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",(char const **)newargz);
+EOF
+ ;;
+ *)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+EOF
+ ;;
+ esac
+
+ cat >> $cwrappersource <<"EOF"
+ return 127;
+}
+
+void *
+xmalloc (size_t num)
+{
+ void * p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("Memory exhausted");
+
+ return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+const char *
+base_name (const char *name)
+{
+ const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+ /* Skip over the disk name in MSDOS pathnames. */
+ if (isalpha ((unsigned char)name[0]) && name[1] == ':')
+ name += 2;
+#endif
+
+ for (base = name; *name; name++)
+ if (IS_DIR_SEPARATOR (*name))
+ base = name + 1;
+ return base;
+}
+
+int
+check_executable(const char * path)
+{
+ struct stat st;
+
+ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0) &&
+ (
+ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+ ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+ ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+ ((st.st_mode & S_IXUSR) == S_IXUSR))
+ )
+ return 1;
+ else
+ return 0;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise */
+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;
+
+ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+ 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 ("getcwd failed");
+ 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 ("getcwd failed");
+ 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 *
+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;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+ const char * message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+EOF
+ # we should really use a build-platform specific compiler
+ # here, but OTOH, the wrappers (shell script and this C one)
+ # are only useful if you want to execute the "real" binary.
+ # Since the "real" binary is built for $host, then this
+ # wrapper might as well be built for $host, too.
+ $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+ ;;
+ esac
+ $rm $output
+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+ $echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# 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.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# 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 variable:
+ 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
+ echo=\"$qecho\"
+ file=\"\$0\"
+ # Make sure echo works.
+ if test \"X\$1\" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+ # Yippee, \$echo works!
+ :
+ else
+ # Restart under the correct shell, and then maybe \$echo will work.
+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+ fi
+ fi\
+"
+ $echo >> $output "\
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$echo \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $echo >> $output "\
+ 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 >> $output "\
+
+ # 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 $EXIT_FAILURE
+ fi
+ fi
+
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $rm \"\$progdir/\$program\";
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $rm \"\$progdir/\$file\"
+ fi"
+ else
+ $echo >> $output "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $echo >> $output "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $echo >> $output "\
+ # 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 \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $echo >> $output "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ $echo >> $output "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $echo >> $output "\
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $echo >> $output "\
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $echo >> $output "\
+ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+ exit $EXIT_FAILURE
+ 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 $EXIT_FAILURE
+ fi
+fi\
+"
+ chmod +x $output
+ fi
+ 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"
+ 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"
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $addlibs
+ oldobjs="$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
+ # 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
+ $echo "X$obj" | $Xsed -e 's%^.*/%%'
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "copying selected object files to avoid basename conflicts..."
+
+ if test -z "$gentop"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+ exit $exit_status
+ fi
+ fi
+
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ counter=`expr $counter + 1`
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ $run ln "$obj" "$gentop/$newobj" ||
+ $run cp "$obj" "$gentop/$newobj"
+ oldobjs="$oldobjs $gentop/$newobj"
+ ;;
+ *) oldobjs="$oldobjs $obj" ;;
+ esac
+ done
+ fi
+
+ eval cmds=\"$old_archive_cmds\"
+
+ if len=`expr "X$cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ $echo "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_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
+ for obj in $save_oldobjs
+ do
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$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=
+ 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
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ eval cmd=\"$cmd\"
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$generated"; then
+ $show "${rm}r$generated"
+ $run ${rm}r$generated
+ fi
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ $show "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}\" || 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
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; 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 "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+
+ # Only create the output if not a dry run.
+ if test -z "$run"; then
+ 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)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+ for lib in $dlfiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlfiles="$newdlfiles $libdir/$name"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $rm $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# 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'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_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
+ fi
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+ $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool install mode
+ install)
+ modename="$modename: install"
+
+ # 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.
+ $echo "X$nonopt" | grep shtool > /dev/null; then
+ # Aesthetically quote it.
+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$arg "
+ arg="$1"
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog$arg"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ case " $install_prog " in
+ *[\\\ /]cp\ *) ;;
+ *) prev=$arg ;;
+ esac
+ ;;
+ -g | -m | -o) prev=$arg ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog $arg"
+ done
+
+ if test -z "$install_prog"; then
+ $echo "$modename: you must specify an install program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prev' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ $echo "$modename: no file or destination specified" 1>&2
+ else
+ $echo "$modename: you must specify a destination" 1>&2
+ fi
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Strip any trailing slash from the destination.
+ dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$destdir" = "X$dest" && destdir=.
+ destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files
+ if test "$#" -gt 2; then
+ $echo "$modename: \`$dest' is not a directory" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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.
+ staticlibs="$staticlibs $file"
+ ;;
+
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ library_names=
+ old_library=
+ relink_command=
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+ test "X$dir" = "X$file/" && dir=
+ dir="$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 "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.
+ if test "$inst_prefix_dir" = "$destdir"; then
+ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ 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
+
+ $echo "$modename: warning: relinking \`$file'" 1>&2
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names
+ if test -n "$2"; then
+ realname="$2"
+ shift
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ $show "$install_prog $dir/$srcname $destdir/$realname"
+ $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+ if test -n "$stripme" && test -n "$striplib"; then
+ $show "$striplib $destdir/$realname"
+ $run 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
+ if test "$linkname" != "$realname"; then
+ $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ fi
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ cmds=$postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Install the pseudo-library for information purposes.
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ instname="$dir/$name"i
+ $show "$install_prog $instname $destdir/$name"
+ $run eval "$install_prog $instname $destdir/$name" || exit $?
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$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
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ if test -n "$destfile"; then
+ $show "$install_prog $file $destfile"
+ $run eval "$install_prog $file $destfile" || exit $?
+ fi
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+ $show "$install_prog $staticobj $staticdest"
+ $run 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
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ 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
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin*|*mingw*)
+ wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+ notinst_deplibs=
+ relink_command=
+
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo 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.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ # Check the variables that should have been set.
+ if test -z "$notinst_deplibs"; then
+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ # If there is no directory component, then add one.
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ fi
+ libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo 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.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ if test "$finalize" = yes && test -z "$run"; then
+ tmpdir=`func_mktempdir`
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ ${rm}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ $echo "$modename: warning: cannot relink \`$file'" 1>&2
+ fi
+ else
+ # Install the binary that we compiled earlier.
+ file=`$echo "X$file$stripped_ext" | $Xsed -e "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)
+ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+ ;;
+ esac
+ ;;
+ esac
+ $show "$install_prog$stripme $file $destfile"
+ $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+ test -n "$outputname" && ${rm}r "$tmpdir"
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ $show "$install_prog $file $oldlib"
+ $run eval "$install_prog \$file \$oldlib" || exit $?
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ $show "$old_striplib $oldlib"
+ $run eval "$old_striplib $oldlib" || exit $?
+ fi
+
+ # Do each command in the postinstall commands.
+ cmds=$old_postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$future_libdirs"; then
+ $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+ fi
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ test -n "$run" && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool finish mode
+ finish)
+ modename="$modename: finish"
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ cmds=$finish_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || admincmds="$admincmds
+ $cmd"
+ done
+ IFS="$save_ifs"
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $run eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ test "$show" = : && exit $EXIT_SUCCESS
+
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ $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"
+ $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool execute mode
+ execute)
+ modename="$modename: execute"
+
+ # The first argument is the command name.
+ cmd="$nonopt"
+ if test -z "$cmd"; then
+ $echo "$modename: you must specify a COMMAND" 1>&2
+ $echo "$help"
+ exit $EXIT_FAILURE
+ fi
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ if test ! -f "$file"; then
+ $echo "$modename: \`$file' is not a file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ dir=
+ case $file in
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+ ;;
+
+ *)
+ $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+ 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
+ -*) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+ args="$args \"$file\""
+ done
+
+ if test -z "$run"; then
+ if test -n "$shlibpath_var"; then
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
+ fi
+
+ # Restore saved environment variables
+ if test "${save_LC_ALL+set}" = set; then
+ LC_ALL="$save_LC_ALL"; export LC_ALL
+ fi
+ if test "${save_LANG+set}" = set; then
+ LANG="$save_LANG"; export LANG
+ fi
+
+ # 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
+ ;;
+
+ # libtool clean and uninstall mode
+ clean | uninstall)
+ modename="$modename: $mode"
+ 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) rm="$rm $arg"; rmforce=yes ;;
+ -*) rm="$rm $arg" ;;
+ *) files="$files $arg" ;;
+ esac
+ done
+
+ if test -z "$rm"; then
+ $echo "$modename: you must specify an RM program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ rmdirs=
+
+ origobjdir="$objdir"
+ for file in $files; do
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$dir" = "X$file"; then
+ dir=.
+ objdir="$origobjdir"
+ else
+ objdir="$dir/$origobjdir"
+ fi
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ test "$mode" = uninstall && objdir="$dir"
+
+ # Remember objdir for removal later, being careful to avoid duplicates
+ if test "$mode" = clean; then
+ case " $rmdirs " in
+ *" $objdir "*) ;;
+ *) rmdirs="$rmdirs $objdir" ;;
+ 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 (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ . $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+ case "$mode" in
+ clean)
+ case " $library_names " in
+ # " " in the beginning catches empty $dlname
+ *" $dlname "*) ;;
+ *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ esac
+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ cmds=$postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ cmds=$old_postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+ # Read the .lo file
+ . $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" \
+ && test "$pic_object" != none; then
+ rmfiles="$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
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ noexename=`$echo $name|${SED} 's,.exe$,,'`
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ relink_command=
+ . $dir/$noexename
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ $show "$rm $rmfiles"
+ $run $rm $rmfiles || exit_status=1
+ done
+ objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ $show "rmdir $dir"
+ $run rmdir $dir >/dev/null 2>&1
+ fi
+ done
+
+ exit $exit_status
+ ;;
+
+ "")
+ $echo "$modename: you must specify a MODE" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test -z "$exec_cmd"; then
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+ eval exec $exec_cmd
+ exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [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
+ --finish same as \`--mode=finish'
+ --help display this help message and exit
+ --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
+ --quiet same as \`--silent'
+ --silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
+ --version print version information
+
+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. Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+ exit $EXIT_SUCCESS
+ ;;
+
+clean)
+ $echo \
+"Usage: $modename [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: $modename [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
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -static always build a \`.o' file suitable for static linking
+
+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: $modename [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: $modename [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: $modename [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 rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+link)
+ $echo \
+"Usage: $modename [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
+ -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
+ -static do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+ specify library version info [each variable defaults to 0]
+
+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: $modename [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."
+ ;;
+
+*)
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# 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
+disable_libs=shared
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+disable_libs=static
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/contrib/ntp/sntp/main.c b/contrib/ntp/sntp/main.c
index 13e527c..0cc4f03 100644
--- a/contrib/ntp/sntp/main.c
+++ b/contrib/ntp/sntp/main.c
@@ -11,8 +11,8 @@ which 90-99% of all NTP systems are run ....
The specification of this program is:
- msntp [ --help | -h | -? ] [ -v | -V | -W ]
- [ -B [ period ] | -S | -q [ -f savefile ] |
+ sntp [ --help | -h | -? ] [ -v | -V | -W ]
+ [ -q [ -f savefile ] |
[ { -r | -a } [ -P prompt ] [ -l lockfile ] ]
[ -c count ] [ -e minerr ][ -E maxerr ]
[ -d delay | -x [ separation ] [ -f savefile ] ]
@@ -27,14 +27,6 @@ the timing when writing to the terminal (because of line buffered output from
C); it is useful only when debugging the source. Note that the times produced
by -V and -W are the corrections needed, and not the error in the local clock.
- -B indicates that it should behave as a server, broadcasting time packets
-at intervals of 'period' minutes. Acceptable values of 'period' are from 1 to
-1440 (a day) and the default is 60. Naturally, this will work only if the
-user has enough privilege.
-
- -S indicates that it should behave as a server, responding to time requests
-from clients. Naturally, this will work only if the user has enough privilege.
-
-q indicates that it will query a savefile that is being maintained by
it being run in daemon mode.
@@ -86,13 +78,13 @@ values are from 1 to 3600, and the default is 15 if 'address' is specified and
Acceptable values are from 1 to 1440 (a day), and the default is 300.
'lockfile' may be used in an update mode to ensure that there is only
-one copy of msntp running at once. The default is installation-dependent,
-but will usually be /etc/msntp.pid.
+one copy of sntp running at once. The default is installation-dependent,
+but will usually be /etc/sntp.pid.
'savefile' may be used in daemon mode to store a record of previous
-packets, which may speed up recalculating the drift after msntp has to be
+packets, which may speed up recalculating the drift after sntp has to be
restarted (e.g. because of network or server outages). The default is
-installation-dependent, but will usually be /etc/msntp.state. Note that
+installation-dependent, but will usually be /etc/sntp.state. Note that
there is no locking of this file, and using it twice may cause chaos.
'address' is the DNS name or IP number of a host to poll; if no name is
@@ -119,11 +111,10 @@ port this to a toaster, you may have problems!
In its terminating modes, its return code is EXIT_SUCCESS if the operation was
completed successfully and EXIT_FAILURE otherwise.
-In server or daemon mode, it runs for ever and stops with a return code
-EXIT_FAILURE only after a severe error. Commonly, two server processes will be
-run, one with each of the -B and -S options. In daemon mode, it will fail if
-the server is inaccessible for a long time or seriously sick, and will need
-manual restarting.
+In daemon mode, it runs for ever and stops with a return code EXIT_FAILURE
+only after a severe error. In daemon mode, it will fail if the server is
+inaccessible for a long time or seriously sick, and will need manual
+restarting.
WARNING: this program has reached its 'hack count' and needs restructuring,
@@ -189,6 +180,7 @@ const char *argv0 = NULL; /* For diagnostics only - not NULL */
int verbose = 0, /* Default = 0, -v = 1, -V = 2, -W = 3 */
operation = 0; /* Defined in header.h - see action */
const char *lockname = NULL; /* The name of the lock file */
+int unprivport = 0; /* Use an unpriv port for query? */
#define COUNT_MAX 25 /* Do NOT increase this! */
#define WEEBLE_FACTOR 1.2 /* See run_server() and run_daemon() */
@@ -208,7 +200,6 @@ const char *lockname = NULL; /* The name of the lock file */
static const char version[] = VERSION; /* For reverse engineering :-) */
static int action = 0, /* Defined above - see operation */
- period = 0, /* -B value in seconds (broadcast) */
count = 0, /* -c value in seconds */
delay = 0, /* -d or -x value in seconds */
attempts = 0, /* Packets transmitted up to 2*count */
@@ -227,7 +218,8 @@ static FILE *savefile = NULL; /* Holds the data to restart from */
to SNTP. */
typedef struct NTP_DATA {
- unsigned char status, version, mode, stratum, polling, precision;
+ unsigned char status, version, mode, stratum, polling;
+ signed char precision;
double dispersion, reference, originate, receive, transmit, current;
} ntp_data;
@@ -241,7 +233,24 @@ typedef struct {
double dispersion, weight, when, offset, error;
} data_record;
-
+void syntax(int);
+void display_data(ntp_data *);
+void display_packet(unsigned char *, int);
+void pack_ntp(unsigned char *, int, ntp_data *);
+void unpack_ntp(ntp_data *, unsigned char *, int);
+void make_packet(ntp_data *, int);
+int read_packet(int, ntp_data *, double *, double *);
+void format_time(char *, int, double, double, double, double, int);
+double reset_clock(double, double, int);
+void run_server(void);
+double estimate_stats(int *, int *, data_record *, double, double *, double *,
+ double *, double *, double *, double *, int *, int);
+double correct_drift(double *, double *, double);
+void handle_saving(int, int *, int *, int *, data_record *, double *,
+ double *, double *);
+void query_savefile(void);
+void run_daemon(char **, int, int);
+void run_client(char **, int);
void fatal (int syserr, const char *message, const char *insert) {
@@ -274,12 +283,12 @@ void syntax (int halt) {
helpfully. This is called before any files or sockets are opened. */
fprintf(stderr,"Syntax: %s [ --help | -h | -? ] [ -v | -V | -W ] \n",argv0);
- fprintf(stderr," [ -B period | -S | -q [ -f savefile ] |\n");
+ fprintf(stderr," [ -q [ -f savefile ] |\n");
fprintf(stderr," [ { -r | -a } [ -P prompt ] [ -l lockfile ] ]\n");
fprintf(stderr," [ -c count ] [ -e minerr ] [ -E maxerr ]\n");
fprintf(stderr," [ -d delay | -x [ separation ] ");
fprintf(stderr,"[ -f savefile ] ]\n");
- fprintf(stderr," [ -4 | -6 ] [ address(es) ] ]\n");
+ fprintf(stderr," [ -4 | -6 ] [-u] [ address(es) ] ]\n");
if (halt) exit(EXIT_FAILURE);
}
@@ -444,22 +453,20 @@ that it must not change its arguments if it fails. */
/* Start by checking that the packet looks reasonable. Be a little paranoid,
but allow for version 1 semantics and sick clients. */
- if (operation == op_server) {
- if (data->mode == NTP_BROADCAST) return 2;
- failed = (data->mode != NTP_CLIENT && data->mode != NTP_ACTIVE);
- } else if (operation == op_listen)
+ if (operation == op_listen)
failed = (data->mode != NTP_BROADCAST);
else {
failed = (data->mode != NTP_SERVER && data->mode != NTP_PASSIVE);
response = 1;
}
- if (failed || data->status != 0 || data->version < 1 ||
+ if (failed || data->status == 3 || data->version < 1 ||
data->version > NTP_VERSION_MAX ||
data->stratum > NTP_STRATUM_MAX) {
if (verbose)
fprintf(stderr,
- "%s: totally spurious NTP packet rejected on socket %d\n",
- argv0,which);
+ "%s: Unusable NTP packet rejected on socket %d (f=%d, status %d, version %d, stratum %d)\n",
+ argv0, which,
+ failed, data->status, data->version, data->stratum);
return 1;
}
@@ -469,9 +476,13 @@ packets is an abomination, anyway, so reject it. */
delay1 = data->transmit-data->receive;
delay2 = data->current-data->originate;
- failed = ((data->stratum != 0 && data->stratum != NTP_STRATUM_MAX &&
- data->reference == 0.0) ||
- (operation != op_server && data->transmit == 0.0));
+ failed = (
+ ( data->stratum != 0
+ /* && data->stratum != NTP_STRATUM_MAX */
+ && data->reference == 0.0
+ )
+ || data->transmit == 0.0
+ );
if (response &&
(data->originate == 0.0 || data->receive == 0.0 ||
(data->reference != 0.0 && data->receive < data->reference) ||
@@ -485,6 +496,12 @@ packets is an abomination, anyway, so reject it. */
argv0,which);
return 1;
}
+ if (data->stratum == NTP_STRATUM_MAX) {
+ fprintf(stderr,
+ "%s: unsynch NTP response on socket %d\n",
+ argv0,which);
+ return 1;
+ }
/* If it is a response, check that it corresponds to one of our requests and
has got here in a reasonable length of time. */
@@ -511,7 +528,7 @@ too badly. Heaven help us with broadcasts - make a wild kludge here, and see
elsewhere for other kludges. */
if (dispersion < data->dispersion) dispersion = data->dispersion;
- if (operation == op_listen || operation == op_server) {
+ if (operation == op_listen) {
*off = data->transmit-data->current;
*err = NTP_INSANITY;
} else {
@@ -528,7 +545,7 @@ elsewhere for other kludges. */
void format_time (char *text, int length, double offset, double error,
- double drift, double drifterr) {
+ double drift, double drifterr, int precision) {
/* Format the current time into a string, with the extra information as
requested. Note that the rest of the program uses the correction needed, which
@@ -551,12 +568,14 @@ systems do not set the return value from (s)printf. */
errno = 0;
if ((gmt = localtime(&now)) == NULL)
fatal(1,"unable to work out local time",NULL);
- len = 24;
+ len = 21;
if (length <= len) fatal(0,"internal error calling format_time",NULL);
errno = 0;
- sprintf(text,"%.4d %s %.2d %.2d:%.2d:%.2d.%.3d",
+ precision /= -3;
+ len += precision;
+ sprintf(text,"%.4d %s %.2d %.2d:%.2d:%.2d.%.*d",
gmt->tm_year+1900,months[gmt->tm_mon],gmt->tm_mday,
- gmt->tm_hour,gmt->tm_min,gmt->tm_sec,milli);
+ gmt->tm_hour,gmt->tm_min,gmt->tm_sec,precision,milli);
if (strlen(text) != len)
fatal(1,"unable to format current local time",NULL);
@@ -566,8 +585,9 @@ systems do not set the return value from (s)printf. */
if (length < len+30)
fatal(0,"internal error calling format_time",NULL);
errno = 0;
- sprintf(&text[len]," %c %.3f +/- %.3f secs",(offset > 0.0 ? '-' : '+'),
- (offset > 0.0 ? offset : -offset),dispersion+error);
+ sprintf(&text[len]," %c %.*f +/- %.*f secs",(offset > 0.0 ? '-' : '+'),
+ precision,(offset > 0.0 ? offset : -offset),
+ precision,dispersion+error);
if (strlen(&text[len]) < 22)
fatal(1,"unable to format clock correction",NULL);
}
@@ -644,7 +664,7 @@ correction not having completed, but it will rarely help much. */
adjust_time(offset,(action == action_reset ? 1 : 0),
(daemon ? 2.0*minerr : 0.0));
if (daemon ? verbose > 1 : verbose) {
- format_time(text,50,0.0,-1.0,0.0,-1.0);
+ format_time(text,50,0.0,-1.0,0.0,-1.0,-10);
fprintf(stderr,
"%s: time changed by %.3f secs to %s +/- %.3f+%.3f\n",
argv0,offset,text,dispersion,error);
@@ -653,73 +673,6 @@ correction not having completed, but it will rarely help much. */
}
-
-void run_server (void) {
-
-/* Set up a socket, and either broadcast at intervals or wait for requests.
-It is quite tricky to get this to fail, and it will usually indicate that the
-local system is sick. */
-
- unsigned char transmit[NTP_PACKET_MIN];
- ntp_data data;
- double started = current_time(JAN_1970), successes = 0.0, failures = 0.0,
- broadcasts = 0.0, weeble = 1.0, x, y;
- int i, j;
-
- open_socket(0,NULL,delay);
- while (1) {
-
-/* In server mode, provide some tracing of normal running (but not too much,
-except when debugging!) */
-
- if (operation == op_server) {
- x = current_time(JAN_1970)-started;
- if (verbose && x/3600.0+successes+failures >= weeble) {
- weeble *= WEEBLE_FACTOR;
- x -= 3600.0*(i = (int)(x/3600.0));
- x -= 60.0*(j = (int)(x/60.0));
- if (i > 0)
- fprintf(stderr,"%s: after %d hours %d mins ",argv0,i,j);
- else if (j > 0)
- fprintf(stderr,"%s: after %d mins %.0f secs ",argv0,j,x);
- else
- fprintf(stderr,"%s: after %.1f secs ",argv0,x);
- fprintf(stderr,"%.0f acc. %.0f rej. %.0f b'cast\n",
- successes,failures,broadcasts);
- }
-
-/* Respond to incoming requests or plaster broadcasts over the net. Note that
-we could skip almost all of the decoding, but it provides a healthy amount of
-error detection. We could print some information on incoming packets, but the
-code is not structured to do this very helpfully. */
-
- i = read_packet(0,&data,&x,&y);
- if (i == 2) {
- ++broadcasts;
- continue;
- } else if (i != 0) {
- ++failures;
- continue;
- } else {
- ++successes;
- make_packet(&data,NTP_SERVER);
- }
- } else {
- do_nothing(period);
- make_packet(&data,NTP_BROADCAST);
- }
- if (verbose > 2) {
- fprintf(stderr,"Outgoing packet:\n");
- display_data(&data);
- }
- pack_ntp(transmit,NTP_PACKET_MIN,&data);
- if (verbose > 2) display_packet(transmit,NTP_PACKET_MIN);
- write_socket(0,transmit,NTP_PACKET_MIN);
- }
-}
-
-
-
double estimate_stats (int *a_total, int *a_index, data_record *record,
double correction, double *a_disp, double *a_when, double *a_offset,
double *a_error, double *a_drift, double *a_drifterr, int *a_wait,
@@ -1144,14 +1097,14 @@ void query_savefile (void) {
previous = when = current_time(JAN_1970);
if (verbose > 2) {
- format_time(text,50,0.0,-1.0,0.0,-1.0);
+ format_time(text,50,0.0,-1.0,0.0,-1.0,-10);
fprintf(stderr,"Started=%.6f %s\n",when,text);
}
handle_saving(save_read_only,&total,&index,&cycle,record,&previous,&when,
&correction);
estimate_stats(&total,&index,record,correction,&dispersion,
&when,&offset,&error,&drift,&drifterr,&waiting,0);
- format_time(text,100,offset,error,drift,drifterr);
+ format_time(text,100,offset,error,drift,drifterr,-10);
printf("%s\n",text);
if (fclose(savefile)) fatal(1,"unable to close daemon save file",NULL);
if (verbose > 2) fprintf(stderr,"Stopped normally\n");
@@ -1188,7 +1141,7 @@ the rest are mainly for diagnostics. */
started = previous = when = current_time(JAN_1970);
if (verbose > 2) {
- format_time(text,50,0.0,-1.0,0.0,-1.0);
+ format_time(text,50,0.0,-1.0,0.0,-1.0,-10);
fprintf(stderr,"Started=%.6f %s\n",when,text);
}
if (initial) {
@@ -1235,7 +1188,7 @@ check that we aren't in a failing loop. */
if (operation == op_listen)
fprintf(stderr," rep. %.0f skip %.0f",replicates,skips);
fprintf(stderr," max.off. %.3f corr. %.3f\n",maxoff,correction);
- format_time(text,100,offset,error,drift,drifterr);
+ format_time(text,100,offset,error,drift,drifterr,-10);
fprintf(stderr,"%s: %s\n",argv0,text);
maxoff = 0.0;
}
@@ -1384,7 +1337,7 @@ is the statistics are bad. */
correction = 0.0;
if (operation == op_client || accepts >= count) {
if (action == action_display) {
- format_time(text,100,offset,error,drift,drifterr);
+ format_time(text,100,offset,error,drift,drifterr,-10);
printf("%s\n",text);
} else {
x = reset_clock(offset,error,1);
@@ -1425,13 +1378,14 @@ triggered if the signal handling works. */
double history[COUNT_MAX], guesses[COUNT_MAX], offset, error, deadline,
a, b, x, y;
+ int precs[COUNT_MAX], precision = 0;
int accepts = 0, rejects = 0, flushes = 0, replicates = 0, cycle = 0, k;
unsigned char transmit[NTP_PACKET_MIN];
ntp_data data;
char text[100];
if (verbose > 2) {
- format_time(text,50,0.0,-1.0,0.0,-1.0);
+ format_time(text,50,0.0,-1.0,0.0,-1.0,-10);
fprintf(stderr,"Started=%.6f %s\n",current_time(JAN_1970),text);
}
for (k = 0; k < nhosts; ++k) open_socket(k,hostnames[k],delay);
@@ -1469,6 +1423,7 @@ the same time. */
goto continue1;
}
history[accepts] = a;
+ precs[accepts] = data.precision;
guesses[accepts++] = x;
}
if (verbose > 2)
@@ -1486,10 +1441,14 @@ the same time. */
x = guesses[k];
guesses[k] = guesses[k+1];
guesses[k+1] = x;
+ precision = precs[k];
+ precs[k] = precs[k+1];
+ precs[k+1] = precision;
}
continue1: ;
}
offset = guesses[0];
+ precision = precs[0];
error = minerr+guesses[count <= 5 ? count-1 : 5]-offset;
if (verbose > 2)
fprintf(stderr,"accepts=%d rejects=%d flushes=%d replicates=%d\n",
@@ -1500,11 +1459,13 @@ mainly out of paranoia. */
} else {
offset = 0.0;
+ precision = 0;
error = NTP_INSANITY;
while (accepts < count && attempts < 2*count) {
if (current_time(JAN_1970) > deadline)
fatal(0,"not enough valid responses received in time",NULL);
make_packet(&data,NTP_CLIENT);
+ precs[attempts] = data.precision;
outgoing[attempts++] = data.transmit;
if (verbose > 2) {
fprintf(stderr,"Outgoing packet on socket %d:\n",cycle);
@@ -1537,6 +1498,7 @@ the results warrant. */
if (y < error) {
offset = x;
error = y;
+ precision = data.precision;
}
if (verbose > 2)
fprintf(stderr,"best=%.6f+/-%.6f\n",offset,error);
@@ -1562,7 +1524,7 @@ the results warrant. */
fprintf(stderr,"Correction: %.6f +/- %.6f disp=%.6f\n",
offset,error,dispersion);
if (action == action_display) {
- format_time(text,75,offset,error,0.0,-1.0);
+ format_time(text,75,offset,error,0.0,-1.0,precision);
printf("%s\n",text);
} else
(void)reset_clock(offset,error,0);
@@ -1583,16 +1545,18 @@ one of the specialised routines to do the work. */
char c;
if (argv[0] == NULL || argv[0][0] == '\0')
- argv0 = "msntp";
+ argv0 = "sntp";
else if ((argv0 = strrchr(argv[0],'/')) != NULL)
++argv0;
else
argv0 = argv[0];
+
setvbuf(stdout,NULL,_IOLBF,BUFSIZ);
setvbuf(stderr,NULL,_IOLBF,BUFSIZ);
- if (INT_MAX < 2147483647) fatal(0,"msntp requires >= 32-bit ints",NULL);
+
+ if (INT_MAX < 2147483647) fatal(0,"sntp requires >= 32-bit ints",NULL);
if (DBL_EPSILON > 1.0e-13)
- fatal(0,"msntp requires doubles with eps <= 1.0e-13",NULL);
+ fatal(0,"sntp requires doubles with eps <= 1.0e-13",NULL);
for (k = 0; k < MAX_SOCKETS; ++k) hostnames[k] = NULL;
/* Decode the arguments. */
@@ -1603,18 +1567,8 @@ one of the specialised routines to do the work. */
preferred_family(PREF_FAM_INET);
else if (strcmp(argv[1],"-6") == 0)
preferred_family(PREF_FAM_INET6);
- else if (strcmp(argv[1],"-B") == 0 && action == 0) {
- action = action_broadcast;
- if (argc > 2) {
- if (sscanf(argv[2],"%d%c",&period,&c) != 1) syntax(1);
- if (period < 1 || period > 1440)
- fatal(0,"%s option value out of range","-B");
- period *= 60;
- k = 2;
- } else
- period = 60*60;
- } else if (strcmp(argv[1],"-S") == 0 && action == 0)
- action = action_server;
+ else if (strcmp(argv[1],"-u") == 0)
+ ++unprivport;
else if (strcmp(argv[1],"-q") == 0 && action == 0)
action = action_query;
else if (strcmp(argv[1],"-r") == 0 && action == 0)
@@ -1682,13 +1636,7 @@ one of the specialised routines to do the work. */
/* Check the arguments for consistency and set the defaults. */
- if (action == action_broadcast || action == action_server) {
- operation = (action == action_server ? op_server : op_broadcast);
- if (argc != 1 || minerr != 0.0 || maxerr != 0.0 || count != 0 ||
- delay != 0 || daemon != 0 || prompt != 0.0 ||
- lockname != NULL || savename != NULL)
- syntax(1);
- } else if (action == action_query) {
+ if (action == action_query) {
if (argc != 1 || minerr != 0.0 || maxerr != 0.0 || count != 0 ||
delay != 0 || daemon != 0 || prompt != 0.0 || lockname != NULL)
syntax(1);
@@ -1756,8 +1704,8 @@ operation. The calls do not return. */
if (help) syntax(args == 1);
if (verbose) {
- fprintf(stderr,"%s options: a=%d p=%d v=%d e=%.3f E=%.3f P=%.3f\n",
- argv0,action,period,verbose,minerr,maxerr,prompt);
+ fprintf(stderr,"%s options: a=%d v=%d e=%.3f E=%.3f P=%.3f\n",
+ argv0,action,verbose,minerr,maxerr,prompt);
fprintf(stderr," d=%d c=%d %c=%d op=%d l=%s f=%s",
delay,count,'x',daemon,operation,
(lockname == NULL ? "" : lockname),
@@ -1767,9 +1715,7 @@ operation. The calls do not return. */
fprintf(stderr,"\n");
}
if (nhosts == 0) nhosts = 1; /* Kludge for broadcasts */
- if (operation == op_server || operation == op_broadcast)
- run_server();
- else if (action == action_query) {
+ if (action == action_query) {
if (savename == NULL || savename[0] == '\0')
fatal(0,"no daemon save file specified",NULL);
else if ((savefile = fopen(savename,"rb")) == NULL)
diff --git a/contrib/ntp/sntp/missing b/contrib/ntp/sntp/missing
index 6a37006..894e786 100755
--- a/contrib/ntp/sntp/missing
+++ b/contrib/ntp/sntp/missing
@@ -1,6 +1,10 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
-# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
+
+scriptversion=2005-06-08.21
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
# This program is free software; you can redistribute it and/or modify
@@ -15,8 +19,8 @@
# 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., 59 Temple Place - Suite 330, Boston, MA
-# 02111-1307, USA.
+# 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
@@ -38,18 +42,24 @@ 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
;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case "$1" in
-h|--h|--he|--hel|--help)
echo "\
@@ -74,11 +84,15 @@ Supported PROGRAM values:
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]"
+ yacc create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+ exit $?
;;
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
- echo "missing 0.4 - GNU automake"
+ echo "missing $scriptversion (GNU Automake)"
+ exit $?
;;
-*)
@@ -87,14 +101,44 @@ Supported PROGRAM values:
exit 1
;;
- aclocal*)
+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 missing on your system. You should only need it if
+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."
@@ -102,13 +146,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
autoconf)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -116,13 +155,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
autoheader)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -140,13 +174,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
automake*)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -156,16 +185,11 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
autom4te)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
- system. You might have modified some files without having the
+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 \`$1Help2man' as part of \`Autoconf' from any GNU
+ You can get \`$1' as part of \`Autoconf' from any GNU
archive site."
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
@@ -185,7 +209,7 @@ WARNING: \`$1' is needed, and you do not seem to have it handy on your
bison|yacc)
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -215,7 +239,7 @@ WARNING: \`$1' is missing on your system. You should only need it if
lex|flex)
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -237,13 +261,8 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
help2man)
- if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
- # We have it, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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."
@@ -262,32 +281,30 @@ WARNING: \`$1' is missing on your system. You should only need it if
;;
makeinfo)
- if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
- # We have makeinfo, but it failed.
- exit 1
- fi
-
echo 1>&2 "\
-WARNING: \`$1' is missing on your system. You should only need it if
+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
- file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+ # ... 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
- if test -n "$run"; then
- echo 1>&2 "ERROR: \`tar' requires --run"
- exit 1
- fi
# We have already tried tar in the generic part.
# Look for gnutar/gtar before invocation to avoid ugly error
@@ -323,10 +340,10 @@ WARNING: I can't seem to be able to run \`tar' with the given arguments.
*)
echo 1>&2 "\
-WARNING: \`$1' is needed, and you do not seem to have it handy on your
- system. You might have modified some files without having the
+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 prerequirements for installing
+ 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
@@ -334,3 +351,10 @@ WARNING: \`$1' is needed, and you do not seem to have it handy on your
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/contrib/ntp/sntp/mkinstalldirs b/contrib/ntp/sntp/mkinstalldirs
deleted file mode 100755
index d2d5f21..0000000
--- a/contrib/ntp/sntp/mkinstalldirs
+++ /dev/null
@@ -1,111 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
-
-errstatus=0
-dirmode=""
-
-usage="\
-Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
-
-# process command line arguments
-while test $# -gt 0 ; do
- case $1 in
- -h | --help | --h*) # -h for help
- echo "$usage" 1>&2
- exit 0
- ;;
- -m) # -m PERM arg
- shift
- test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
- dirmode=$1
- shift
- ;;
- --) # stop option processing
- shift
- break
- ;;
- -*) # unknown option
- echo "$usage" 1>&2
- exit 1
- ;;
- *) # first non-opt arg
- break
- ;;
- esac
-done
-
-for file
-do
- if test -d "$file"; then
- shift
- else
- break
- fi
-done
-
-case $# in
- 0) exit 0 ;;
-esac
-
-case $dirmode in
- '')
- if mkdir -p -- . 2>/dev/null; then
- echo "mkdir -p -- $*"
- exec mkdir -p -- "$@"
- fi
- ;;
- *)
- if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
- echo "mkdir -m $dirmode -p -- $*"
- exec mkdir -m "$dirmode" -p -- "$@"
- fi
- ;;
-esac
-
-for file
-do
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
- shift
-
- pathcomp=
- for d
- do
- pathcomp="$pathcomp$d"
- case $pathcomp in
- -*) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp"
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- else
- if test ! -z "$dirmode"; then
- echo "chmod $dirmode $pathcomp"
- lasterr=""
- chmod "$dirmode" "$pathcomp" || lasterr=$?
-
- if test ! -z "$lasterr"; then
- errstatus=$lasterr
- fi
- fi
- fi
- fi
-
- pathcomp="$pathcomp/"
- done
-done
-
-exit $errstatus
-
-# Local Variables:
-# mode: shell-script
-# sh-indentation: 2
-# End:
-# mkinstalldirs ends here
diff --git a/contrib/ntp/sntp/sntp-opts.c b/contrib/ntp/sntp/sntp-opts.c
new file mode 100644
index 0000000..939c977
--- /dev/null
+++ b/contrib/ntp/sntp/sntp-opts.c
@@ -0,0 +1,691 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (sntp-opts.c)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:27:24 AM EDT
+ * From the definitions sntp-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This source file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * sntp author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * sntp copyright 1970-2006 ntp.org - all rights reserved
+ *
+ * General Public Licence for the software known as MSNTP
+ * ------------------------------------------------------
+ *
+ * (c) Copyright, N.M. Maclaren, 1996, 1997, 2000
+ * (c) Copyright, University of Cambridge, 1996, 1997, 2000
+ *
+ *
+ *
+ * Free use of MSNTP in source and binary forms is permitted, provided that this
+ * entire licence is duplicated in all copies, and that any documentation,
+ * announcements, and other materials related to use acknowledge that the software
+ * was developed by N.M. Maclaren (hereafter refered to as the Author) at the
+ * University of Cambridge. Neither the name of the Author nor the University of
+ * Cambridge may be used to endorse or promote products derived from this material
+ * without specific prior written permission.
+ *
+ * The Author and the University of Cambridge retain the copyright and all other
+ * legal rights to the software and make it available non-exclusively. All users
+ * must ensure that the software in all its derivations carries a copyright notice
+ * in the form:
+ * (c) Copyright N.M. Maclaren,
+ * (c) Copyright University of Cambridge.
+ *
+ *
+ *
+ * NO WARRANTY
+ *
+ * Because the MSNTP software is licensed free of charge, the Author and the
+ * University of Cambridge provide absolutely no warranty, either expressed or
+ * implied, including, but not limited to, the implied warranties of
+ * merchantability and fitness for a particular purpose. The entire risk as to
+ * the quality and performance of the MSNTP software is with you. Should MSNTP
+ * prove defective, you assume the cost of all necessary servicing or repair.
+ *
+ * In no event, unless required by law, will the Author or the University of
+ * Cambridge, or any other party who may modify and redistribute this software as
+ * permitted in accordance with the provisions below, be liable for damages for
+ * any losses whatsoever, including but not limited to lost profits, lost monies,
+ * lost or corrupted data, or other special, incidental or consequential losses
+ * that may arise out of the use or inability to use the MSNTP software.
+ *
+ *
+ *
+ * COPYING POLICY
+ *
+ * Permission is hereby granted for copying and distribution of copies of the
+ * MSNTP source and binary files, and of any part thereof, subject to the
+ * following licence conditions:
+ *
+ * 1. You may distribute MSNTP or components of MSNTP, with or without additions
+ * developed by you or by others. No charge, other than an "at-cost" distribution
+ * fee, may be charged for copies, derivations, or distributions of this material
+ * without the express written consent of the copyright holders.
+ *
+ * 2. You may also distribute MSNTP along with any other product for sale,
+ * provided that the cost of the bundled package is the same regardless of whether
+ * MSNTP is included or not, and provided that those interested only in MSNTP must
+ * be notified that it is a product freely available from the University of
+ * Cambridge.
+ *
+ * 3. If you distribute MSNTP software or parts of MSNTP, with or without
+ * additions developed by you or others, then you must either make available the
+ * source to all portions of the MSNTP system (exclusive of any additions made by
+ * you or by others) upon request, or instead you may notify anyone requesting
+ * source that it is freely available from the University of Cambridge.
+ *
+ * 4. You may not omit any of the copyright notices on either the source files,
+ * the executable files, or the documentation.
+ *
+ * 5. You may not omit transmission of this License agreement with whatever
+ * portions of MSNTP that are distributed.
+ *
+ * 6. Any users of this software must be notified that it is without warranty or
+ * guarantee of any nature, express or implied, nor is there any fitness for use
+ * represented.
+ *
+ *
+ * October 1996
+ * April 1997
+ * October 2000
+ */
+
+
+#include <limits.h>
+
+#define OPTION_CODE_COMPILE 1
+#include "sntp-opts.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+tSCC zCopyright[] =
+ "sntp copyright (c) 1970-2006 ntp.org, all rights reserved";
+tSCC zCopyrightNotice[] =
+
+/* extracted from sntp-opts.def near line 12 */
+" General Public Licence for the software known as MSNTP\n\
+ ------------------------------------------------------\n\n\
+\t (c) Copyright, N.M. Maclaren, 1996, 1997, 2000\n\
+\t (c) Copyright, University of Cambridge, 1996, 1997, 2000\n\n\n\n\
+Free use of MSNTP in source and binary forms is permitted, provided that this\n\
+entire licence is duplicated in all copies, and that any documentation,\n\
+announcements, and other materials related to use acknowledge that the software\n\
+was developed by N.M. Maclaren (hereafter refered to as the Author) at the\n\
+University of Cambridge. Neither the name of the Author nor the University of\n\
+Cambridge may be used to endorse or promote products derived from this material\n\
+without specific prior written permission.\n\n\
+The Author and the University of Cambridge retain the copyright and all other\n\
+legal rights to the software and make it available non-exclusively. All users\n\
+must ensure that the software in all its derivations carries a copyright notice\n\
+in the form:\n\
+\t (c) Copyright N.M. Maclaren,\n\
+\t (c) Copyright University of Cambridge.\n\n\n\n\
+ NO WARRANTY\n\n\
+Because the MSNTP software is licensed free of charge, the Author and the\n\
+University of Cambridge provide absolutely no warranty, either expressed or\n\
+implied, including, but not limited to, the implied warranties of\n\
+merchantability and fitness for a particular purpose. The entire risk as to\n\
+the quality and performance of the MSNTP software is with you. Should MSNTP\n\
+prove defective, you assume the cost of all necessary servicing or repair.\n\n\
+In no event, unless required by law, will the Author or the University of\n\
+Cambridge, or any other party who may modify and redistribute this software as\n\
+permitted in accordance with the provisions below, be liable for damages for\n\
+any losses whatsoever, including but not limited to lost profits, lost monies,\n\
+lost or corrupted data, or other special, incidental or consequential losses\n\
+that may arise out of the use or inability to use the MSNTP software.\n\n\n\n\
+ COPYING POLICY\n\n\
+Permission is hereby granted for copying and distribution of copies of the\n\
+MSNTP source and binary files, and of any part thereof, subject to the\n\
+following licence conditions:\n\n\
+1. You may distribute MSNTP or components of MSNTP, with or without additions\n\
+developed by you or by others. No charge, other than an \"at-cost\" distribution\n\
+fee, may be charged for copies, derivations, or distributions of this material\n\
+without the express written consent of the copyright holders.\n\n\
+2. You may also distribute MSNTP along with any other product for sale,\n\
+provided that the cost of the bundled package is the same regardless of whether\n\
+MSNTP is included or not, and provided that those interested only in MSNTP must\n\
+be notified that it is a product freely available from the University of\n\
+Cambridge.\n\n\
+3. If you distribute MSNTP software or parts of MSNTP, with or without\n\
+additions developed by you or others, then you must either make available the\n\
+source to all portions of the MSNTP system (exclusive of any additions made by\n\
+you or by others) upon request, or instead you may notify anyone requesting\n\
+source that it is freely available from the University of Cambridge.\n\n\
+4. You may not omit any of the copyright notices on either the source files,\n\
+the executable files, or the documentation.\n\n\
+5. You may not omit transmission of this License agreement with whatever\n\
+portions of MSNTP that are distributed.\n\n\
+6. Any users of this software must be notified that it is without warranty or\n\
+guarantee of any nature, express or implied, nor is there any fitness for use\n\
+represented.\n\n\n\
+October 1996\n\
+April 1997\n\
+October 2000";
+extern tUsageProc optionUsage;
+
+#ifndef NULL
+# define NULL 0
+#endif
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+/*
+ * Ipv4 option description:
+ */
+tSCC zIpv4Text[] =
+ "Force IPv4 DNS name resolution";
+tSCC zIpv4_NAME[] = "IPV4";
+tSCC zIpv4_Name[] = "ipv4";
+#define IPV4_FLAGS (OPTST_DISABLED)
+
+/*
+ * Ipv6 option description:
+ */
+tSCC zIpv6Text[] =
+ "Force IPv6 DNS name resolution";
+tSCC zIpv6_NAME[] = "IPV6";
+tSCC zIpv6_Name[] = "ipv6";
+#define IPV6_FLAGS (OPTST_DISABLED)
+
+/*
+ * Unprivport option description:
+ */
+tSCC zUnprivportText[] =
+ "Use an unprivileged port";
+tSCC zUnprivport_NAME[] = "UNPRIVPORT";
+tSCC zUnprivport_Name[] = "unprivport";
+#define UNPRIVPORT_FLAGS (OPTST_DISABLED)
+
+/*
+ * Normalverbose option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zNormalverboseText[] =
+ "Slightly verbose";
+tSCC zNormalverbose_NAME[] = "NORMALVERBOSE";
+tSCC zNormalverbose_Name[] = "normalverbose";
+static const int
+ aNormalverboseCantList[] = {
+ INDEX_OPT_EXTRAVERBOSE,
+ INDEX_OPT_MEGAVERBOSE, NO_EQUIVALENT };
+#define NORMALVERBOSE_FLAGS (OPTST_DISABLED)
+
+/*
+ * Extraverbose option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zExtraverboseText[] =
+ "Extra verbose";
+tSCC zExtraverbose_NAME[] = "EXTRAVERBOSE";
+tSCC zExtraverbose_Name[] = "extraverbose";
+static const int
+ aExtraverboseCantList[] = {
+ INDEX_OPT_NORMALVERBOSE,
+ INDEX_OPT_MEGAVERBOSE, NO_EQUIVALENT };
+#define EXTRAVERBOSE_FLAGS (OPTST_DISABLED)
+
+/*
+ * Megaverbose option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zMegaverboseText[] =
+ "Mega verbose";
+tSCC zMegaverbose_NAME[] = "MEGAVERBOSE";
+tSCC zMegaverbose_Name[] = "megaverbose";
+static const int
+ aMegaverboseCantList[] = {
+ INDEX_OPT_NORMALVERBOSE,
+ INDEX_OPT_EXTRAVERBOSE, NO_EQUIVALENT };
+#define MEGAVERBOSE_FLAGS (OPTST_DISABLED)
+
+/*
+ * Settimeofday option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zSettimeofdayText[] =
+ "Set (step) the time with settimeofday()";
+tSCC zSettimeofday_NAME[] = "SETTIMEOFDAY";
+tSCC zSettimeofday_Name[] = "settimeofday";
+static const int
+ aSettimeofdayCantList[] = {
+ INDEX_OPT_ADJTIME, NO_EQUIVALENT };
+#define SETTIMEOFDAY_FLAGS (OPTST_DISABLED)
+
+/*
+ * Adjtime option description with
+ * "Must also have options" and "Incompatible options":
+ */
+tSCC zAdjtimeText[] =
+ "Set (slew) the time with adjtime()";
+tSCC zAdjtime_NAME[] = "ADJTIME";
+tSCC zAdjtime_Name[] = "adjtime";
+static const int
+ aAdjtimeCantList[] = {
+ INDEX_OPT_SETTIMEOFDAY, NO_EQUIVALENT };
+#define ADJTIME_FLAGS (OPTST_DISABLED)
+
+/*
+ * Help/More_Help/Version option descriptions:
+ */
+tSCC zHelpText[] = "Display usage information and exit";
+tSCC zHelp_Name[] = "help";
+
+tSCC zMore_HelpText[] = "Extended usage information passed thru pager";
+tSCC zMore_Help_Name[] = "more-help";
+
+tSCC zVersionText[] = "Output version information and exit";
+tSCC zVersion_Name[] = "version";
+
+/*
+ * Save/Load_Opts option description:
+ */
+tSCC zSave_OptsText[] = "Save the option state to a config file";
+tSCC zSave_Opts_Name[] = "save-opts";
+
+tSCC zLoad_OptsText[] = "Load options from a config file";
+tSCC zLoad_Opts_NAME[] = "LOAD_OPTS";
+
+tSCC zNotLoad_Opts_Name[] = "no-load-opts";
+tSCC zNotLoad_Opts_Pfx[] = "no";
+#define zLoad_Opts_Name (zNotLoad_Opts_Name + 3)
+/*
+ * Declare option callback procedures
+ */
+#if defined(TEST_SNTP_OPTS)
+/*
+ * Under test, omit argument processing, or call optionStackArg,
+ * if multiple copies are allowed.
+ */
+extern tOptProc
+ optionPagedUsage, optionVersionStderr;
+static tOptProc
+ doUsageOpt;
+
+#else /* NOT defined TEST_SNTP_OPTS */
+/*
+ * When not under test, there are different procs to use
+ */
+extern tOptProc
+ optionPagedUsage, optionPrintVersion;
+static tOptProc
+ doUsageOpt;
+#endif /* defined(TEST_SNTP_OPTS) */
+#ifdef TEST_SNTP_OPTS
+# define DOVERPROC optionVersionStderr
+#else
+# define DOVERPROC optionPrintVersion
+#endif /* TEST_SNTP_OPTS */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Sntp Option Descriptions.
+ */
+static tOptDesc optDesc[ OPTION_CT ] = {
+ { /* entry idx, value */ 0, VALUE_OPT_IPV4,
+ /* equiv idx, value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ IPV4_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIpv4Text, zIpv4_NAME, zIpv4_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 1, VALUE_OPT_IPV6,
+ /* equiv idx, value */ NOLIMIT, NOLIMIT,
+ /* equivalenced to */ INDEX_OPT_IPV4,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ IPV6_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIpv6Text, zIpv6_NAME, zIpv6_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 2, VALUE_OPT_UNPRIVPORT,
+ /* equiv idx, value */ 2, VALUE_OPT_UNPRIVPORT,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ UNPRIVPORT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zUnprivportText, zUnprivport_NAME, zUnprivport_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 3, VALUE_OPT_NORMALVERBOSE,
+ /* equiv idx, value */ 3, VALUE_OPT_NORMALVERBOSE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ NORMALVERBOSE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aNormalverboseCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zNormalverboseText, zNormalverbose_NAME, zNormalverbose_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 4, VALUE_OPT_EXTRAVERBOSE,
+ /* equiv idx, value */ 4, VALUE_OPT_EXTRAVERBOSE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ EXTRAVERBOSE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aExtraverboseCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zExtraverboseText, zExtraverbose_NAME, zExtraverbose_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 5, VALUE_OPT_MEGAVERBOSE,
+ /* equiv idx, value */ 5, VALUE_OPT_MEGAVERBOSE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ MEGAVERBOSE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aMegaverboseCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zMegaverboseText, zMegaverbose_NAME, zMegaverbose_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 6, VALUE_OPT_SETTIMEOFDAY,
+ /* equiv idx, value */ 6, VALUE_OPT_SETTIMEOFDAY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SETTIMEOFDAY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aSettimeofdayCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSettimeofdayText, zSettimeofday_NAME, zSettimeofday_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 7, VALUE_OPT_ADJTIME,
+ /* equiv idx, value */ 7, VALUE_OPT_ADJTIME,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ ADJTIME_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, aAdjtimeCantList,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zAdjtimeText, zAdjtime_NAME, zAdjtime_Name,
+ /* disablement strs */ NULL, NULL },
+
+#ifdef NO_OPTIONAL_OPT_ARGS
+# define VERSION_OPT_FLAGS OPTST_IMM | OPTST_NO_INIT
+#else
+# define VERSION_OPT_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+ OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
+#endif
+
+ { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ VERSION_OPT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ DOVERPROC,
+ /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
+ /* disablement strs */ NULL, NULL },
+
+#undef VERSION_OPT_FLAGS
+
+
+ { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ doUsageOpt,
+ /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionPagedUsage,
+ /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
+ | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSave_OptsText, NULL, zSave_Opts_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) \
+ | OPTST_DISABLE_IMM, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionLoadOpt,
+ /* desc, NAME, name */ zLoad_OptsText, zLoad_Opts_NAME, zLoad_Opts_Name,
+ /* disablement strs */ zNotLoad_Opts_Name, zNotLoad_Opts_Pfx }
+};
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Sntp Option Environment
+ */
+tSCC zPROGNAME[] = "SNTP";
+tSCC zUsageTitle[] =
+"sntp - standard SNTP program - Ver. 4.2.4p5\n\
+USAGE: %s [ -<flag> | --<name> ]...\n";
+tSCC zRcName[] = ".ntprc";
+tSCC* apzHomeList[] = {
+ "$HOME",
+ ".",
+ NULL };
+
+tSCC zBugsAddr[] = "http://bugs.ntp.isc.org, bugs@ntp.org";
+#define zExplain NULL
+tSCC zDetail[] = "\n\
+.I sntp\n\
+can be used as a SNTP client to query a NTP or SNTP server and either display\n\
+the time or set the local system's time (given suitable privilege). It can be\n\
+run as an interactive command or in a\n\
+.I cron\n\
+job.\n\
+NTP is the Network Time Protocol (RFC 1305) and SNTP is the\n\
+Simple Network Time Protocol (RFC 2030, which supersedes RFC 1769).\n";
+tSCC zFullVersion[] = SNTP_FULL_VERSION;
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 408 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE
+ static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+tOptions sntpOptions = {
+ OPTIONS_STRUCT_VERSION,
+ 0, NULL, /* original argc + argv */
+ ( OPTPROC_BASE
+ + OPTPROC_ERRSTOP
+ + OPTPROC_SHORTOPT
+ + OPTPROC_LONGOPT
+ + OPTPROC_NO_REQ_OPT
+ + OPTPROC_ENVIRON
+ + OPTPROC_NO_ARGS
+ + OPTPROC_HAS_IMMED ),
+ 0, NULL, /* current option index, current option */
+ NULL, NULL, zPROGNAME,
+ zRcName, zCopyright, zCopyrightNotice,
+ zFullVersion, apzHomeList, zUsageTitle,
+ zExplain, zDetail, optDesc,
+ zBugsAddr, /* address to send bugs to */
+ NULL, NULL, /* extensions/saved state */
+ optionUsage, /* usage procedure */
+ translate_option_strings, /* translation procedure */
+ /*
+ * Indexes to special options
+ */
+ { INDEX_OPT_MORE_HELP,
+ INDEX_OPT_SAVE_OPTS,
+ NO_EQUIVALENT /* index of '-#' option */,
+ NO_EQUIVALENT /* index of default opt */
+ },
+ 13 /* full option count */, 8 /* user option count */
+};
+
+/*
+ * Create the static procedure(s) declared above.
+ */
+static void
+doUsageOpt(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ USAGE( EXIT_SUCCESS );
+}
+/* extracted from /usr/local/gnu/share/autogen/optmain.tpl near line 92 */
+
+#if defined(TEST_SNTP_OPTS) /* TEST MAIN PROCEDURE: */
+
+int
+main( int argc, char** argv )
+{
+ int res = EXIT_SUCCESS;
+ (void)optionProcess( &sntpOptions, argc, argv );
+ {
+ void optionPutShell( tOptions* );
+ optionPutShell( &sntpOptions );
+ }
+ return res;
+}
+#endif /* defined TEST_SNTP_OPTS */
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 514 */
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext( char const* pz );
+static void coerce_it(void** s);
+
+static char*
+AO_gettext( char const* pz )
+{
+ char* pzRes;
+ if (pz == NULL)
+ return NULL;
+ pzRes = _(pz);
+ if (pzRes == pz)
+ return pzRes;
+ pzRes = strdup( pzRes );
+ if (pzRes == NULL) {
+ fputs( _("No memory for duping translated strings\n"), stderr );
+ exit( EXIT_FAILURE );
+ }
+ return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s); }
+#define COERSION(_f) \
+ coerce_it((void*)&(sntpOptions._f))
+
+/*
+ * This invokes the translation code (e.g. gettext(3)).
+ */
+static void
+translate_option_strings( void )
+{
+ /*
+ * Guard against re-translation. It won't work. The strings will have
+ * been changed by the first pass through this code. One shot only.
+ */
+ if (option_usage_text.field_ct == 0)
+ return;
+ /*
+ * Do the translations. The first pointer follows the field count field.
+ * The field count field is the size of a pointer.
+ */
+ {
+ char** ppz = (char**)(void*)&(option_usage_text);
+ int ix = option_usage_text.field_ct;
+
+ do {
+ ppz++;
+ *ppz = AO_gettext(*ppz);
+ } while (--ix > 0);
+ }
+ option_usage_text.field_ct = 0;
+
+ {
+ tOptDesc* pOD = sntpOptions.pOptDesc;
+ int ix = sntpOptions.optCt;
+
+ for (;;) {
+ pOD->pzText = AO_gettext(pOD->pzText);
+ pOD->pz_NAME = AO_gettext(pOD->pz_NAME);
+ pOD->pz_Name = AO_gettext(pOD->pz_Name);
+ pOD->pz_DisableName = AO_gettext(pOD->pz_DisableName);
+ pOD->pz_DisablePfx = AO_gettext(pOD->pz_DisablePfx);
+ if (--ix <= 0)
+ break;
+ pOD++;
+ }
+ }
+ COERSION(pzCopyright);
+ COERSION(pzCopyNotice);
+ COERSION(pzFullVersion);
+ COERSION(pzUsageTitle);
+ COERSION(pzExplain);
+ COERSION(pzDetail);
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef __cplusplus
+}
+#endif
+/* sntp-opts.c ends here */
diff --git a/contrib/ntp/sntp/sntp-opts.def b/contrib/ntp/sntp/sntp-opts.def
new file mode 100644
index 0000000..d0ee84f
--- /dev/null
+++ b/contrib/ntp/sntp/sntp-opts.def
@@ -0,0 +1,327 @@
+/* -*- Mode: Text -*- */
+
+autogen definitions options;
+
+#include autogen-version.def
+
+copyright = {
+ date = "1970-2006";
+ owner = "ntp.org";
+ eaddr = "http://bugs.ntp.isc.org, bugs@ntp.org";
+ type = note;
+ text = `cat COPYRIGHT`;
+};
+
+
+prog-name = "sntp";
+prog-title = "standard SNTP program";
+homerc = $HOME, ".";
+long-opts;
+
+config-header = "config.h";
+
+#ifndef __windows__
+rcfile = ".ntprc";
+#else
+rcfile = "ntp.ini";
+#endif
+
+environrc;
+
+#include version.def
+
+test-main;
+
+flag = {
+ name = ipv4;
+ value = 4;
+ equivalence = ipv4;
+ descrip = "Force IPv4 DNS name resolution";
+ doc = <<- _EndOfDoc_
+ Force DNS resolution of following host names on the command line
+ to the IPv4 namespace.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = ipv6;
+ value = 6;
+ equivalence = ipv4;
+ descrip = "Force IPv6 DNS name resolution";
+ doc = <<- _EndOfDoc_
+ Force DNS resolution of following host names on the command line
+ to the IPv6 namespace.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = unprivport;
+ value = u;
+ descrip = "Use an unprivileged port";
+ doc = <<- _EndOfDoc_
+ Use an unprivilegded UDP port for our queries.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = normalverbose;
+ value = v;
+ flags-cant = extraverbose, megaverbose;
+ descrip = "Slightly verbose";
+ doc = <<- _EndOfDoc_
+ Diagnostic messages for non-fatal errors and a limited amount of
+ tracing should be written to standard error. Fatal ones always
+ produce a diagnostic. This option should be set when there is a
+ suspected problem with the server, network or the source.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = extraverbose;
+ value = V;
+ flags-cant = normalverbose, megaverbose;
+ descrip = "Extra verbose";
+ doc = <<- _EndOfDoc_
+ Produce more and less comprehensible output, mainly for investigating
+ problems with apparently inconsistent timestamps. This option should
+ be set when the program fails with a message indicating that is the
+ trouble.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = megaverbose;
+ value = W;
+ flags-cant = normalverbose, extraverbose;
+ descrip = "Mega verbose";
+ doc = <<- _EndOfDoc_
+ Very verbose debugging output that will interfere with the timing
+ when writing to the terminal (because of line buffered output from C).
+ Note that the times produced by this are the corrections needed, and
+ not the error in the local clock. This option should be set only when
+ debugging the source.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = settimeofday;
+ value = r;
+ flags-cant = adjtime;
+ descrip = "Set (step) the time with settimeofday()";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+
+flag = {
+ name = adjtime;
+ value = a;
+ flags-cant = settimeofday;
+ descrip = "Set (slew) the time with adjtime()";
+ doc = <<- _EndOfDoc_
+ _EndOfDoc_;
+};
+
+detail = <<- _END_DETAIL
+.I sntp
+can be used as a SNTP client to query a NTP or SNTP server and either display
+the time or set the local system's time (given suitable privilege). It can be
+run as an interactive command or in a
+.I cron
+job.
+NTP is the Network Time Protocol (RFC 1305) and SNTP is the
+Simple Network Time Protocol (RFC 2030, which supersedes RFC 1769).
+ _END_DETAIL;
+
+prog-man-descrip = <<- _END_PROG_MAN_DESCRIP
+.I sntp
+can be used as a SNTP client to query a NTP or SNTP server and either display
+the time or set the local system's time (given suitable privilege). It can be
+run as an interactive command or in a
+.I cron
+job.
+NTP is the Network Time Protocol (RFC 1305) and SNTP is the
+Simple Network Time Protocol (RFC 2030, which supersedes RFC 1769).
+.SS Options
+.PP
+.I sntp
+recognizes the following options:
+.TP
+.B \-v
+indicates that diagnostic messages for non-fatal errors and a limited amount of
+tracing should be written to standard error. Fatal ones always produce a
+diagnostic. This option should be set when there is a suspected problem with
+the server, network or the source.
+.TP
+.B \-V
+requests more and less comprehensible output, mainly for investigating problems
+with apparently inconsistent timestamps. This option should be set when the
+program fails with a message indicating that is the trouble.
+.TP
+.B \-W
+requests very verbose debugging output, and will interfere with the timing
+when writing to the terminal (because of line buffered output from C). Note
+that the times produced by this are the corrections needed, and not the error
+in the local clock. This option should be set only when debugging the source.
+.TP
+.B \-q
+indicates that it should query a daemon save file being maintained by it.
+This needs no privilege and will change neither the save file nor the clock.
+.PP
+The default is that it should behave as a client, and the following options
+are then relevant:
+.TP
+.B \-r
+indicates that the system clock should be reset by
+.IR settimeofday .
+Naturally, this will work only if the user has enough privilege.
+.TP
+.B \-a
+indicates that the system clock should be reset by
+.IR adjtime .
+Naturally, this will work only if the user has enough privilege.
+.PP
+The default is to write the estimated correct local date and time (i.e. not
+UTC) to the standard output in a format like
+.BR "'1996 Oct 15 20:17:25.123 + 4.567 +/- 0.089 secs'" ,
+where the
+.B "'+ 4.567 +/- 0.089 secs'"
+indicates the estimated error in the time on the local system.
+.TP
+.BI \-l " lockfile"
+sets the name of the lock file to ensure that there is only
+one copy of
+.I sntp
+running at once. The default is installation-dependent, but will usually be
+.IR /etc/sntp.pid .
+.TP
+.BI \-e " minerr"
+sets the maximum ignorable variation between the clocks to
+.IR minerr .
+Acceptable values are from 0.001 to 1, and the default is 0.1 if a NTP host is
+is specified and 0.5 otherwise.
+.TP
+.BI \-E " maxerr"
+sets the maximum value of various delays that are deemed acceptable to
+.IR maxerr .
+Acceptable values are from 1 to 60, and the default is 5. It should sometimes
+be increased if there are problems with the network, NTP server or system
+clock, but take care.
+.TP
+.BI \-P " prompt"
+sets the maximum clock change that will be made automatically to
+.IR maxerr .
+Acceptable values are from 1 to 3600 or
+.IR no ,
+and the default is 30. If the program is being run interactively in ordinary
+client mode, and the system clock is to be changed, larger corrections will
+prompt the user for confirmation. Specifying
+.I no
+will disable this and the correction will be made regardless.
+.TP
+.BI \-c " count"
+sets the maximum number of NTP packets required to
+.IR count .
+Acceptable values are from 1 to 25 if a NTP host is specified and from 5 to 25
+otherwise, and the default is 5. If the maximum isn't enough, the system needs
+a better consistency algorithm than this program uses.
+.TP
+.BI \-d " delay"
+sets a rough limit on the total running time to
+.I delay
+seconds. Acceptable values are from 1 to 3600, and the default is 15 if a NTP
+host is specified and 300 otherwise.
+.TP
+.B -4
+force IPv4 DNS resolution.
+.TP
+.B -6
+force IPv6 DNS resolution.
+.PP
+.B address(es)
+are the DNS names or IP numbers of hosts to use for the challenge and response
+protocol; if no names are given, the program waits for broadcasts. Polling a
+server is vastly more reliable than listening to broadcasts. Note that a
+single component numeric address is not allowed, to avoid ambiguities. If
+more than one name is give, they will be used in a round-robin fashion.
+.PP
+Constraints:
+.IP
+.B minerr
+must be less than
+.B maxerr
+which must be less than
+.B delay
+(or, if a NTP host is not specified
+.BR delay / count "),"
+and
+.B count
+must be less than half of
+.BR delay .
+.IP
+In update mode,
+.B maxerr
+must be less than
+.BR prompt.
+.PP
+Note that none of the above values are closely linked to the limits described
+in the NTP protocol (RFC 1305).
+.SH USAGE
+The simplest use of this program is as an unprivileged command to check the
+current time and error in the local clock. For example:
+.IP
+.B sntp ntpserver.somewhere
+.PP
+With suitable privilege, it can be run as a command or in a
+.I cron
+job to reset the local clock from a reliable server, like the
+.I ntpdate
+and
+.I rdate
+commands. For example:
+.IP
+.B sntp -a ntpserver.somewhere
+.PP
+More information on how to use this utility is given in the
+.I README
+file in the distribution. In particular, this
+.I man
+page does not describe how to set it up as a server, which needs special care
+to avoid propagating misinformation.
+.SH RETURN VALUE
+When used as a client in non-daemon mode, the program returns a zero exit
+status for success, and a non-zero one otherwise. When used as a daemon
+(either client or server), it does not return except after a serious error.
+.SH BUGS
+The program implements the SNTP protocol, and does not provide all NTP
+facilities. In particular, it contains no checks against any form of spoofing.
+If this is a serious concern, some network security mechanism (like a firewall
+or even just
+.IR tcpwrappers )
+should be installed.
+.PP
+There are some errors, ambiguities and inconsistencies in the RFCs, and this
+code may not interwork with all other NTP implementations. Any unreasonable
+restrictions should be reported as bugs to whoever is responsible. It may
+be difficult to find out who that is.
+.PP
+The program will stop as soon as it feels that things have got out of control.
+In client daemon mode, it will usually fail during an extended period of
+network or server inaccessibility or excessively slow performance, or when the
+local clock is reset by another process. It will then need restarting
+manually. Experienced system administrators can write a shell script, a
+.I cron
+job or put it in
+.IR inittab ,
+to do this automatically.
+.PP
+The error cannot be estimated reliably with broadcast packets or for the drift
+in daemon mode (even with client-server packets), and the guess made by the
+program may be wrong (possibly even very wrong). If this is a problem, then
+setting the
+.B \-c
+option to a larger value may help. Or it may not.
+.SH AUTHOR
+.I sntp
+was developed by N.M. Maclaren of the University of Cambridge Computing
+Service.
+ _END_PROG_MAN_DESCRIP;
diff --git a/contrib/ntp/sntp/sntp-opts.h b/contrib/ntp/sntp/sntp-opts.h
new file mode 100644
index 0000000..3c70124
--- /dev/null
+++ b/contrib/ntp/sntp/sntp-opts.h
@@ -0,0 +1,283 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (sntp-opts.h)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:27:23 AM EDT
+ * From the definitions sntp-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This header file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * sntp author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * sntp copyright 1970-2006 ntp.org - all rights reserved
+ *
+ * General Public Licence for the software known as MSNTP
+ * ------------------------------------------------------
+ *
+ * (c) Copyright, N.M. Maclaren, 1996, 1997, 2000
+ * (c) Copyright, University of Cambridge, 1996, 1997, 2000
+ *
+ *
+ *
+ * Free use of MSNTP in source and binary forms is permitted, provided that this
+ * entire licence is duplicated in all copies, and that any documentation,
+ * announcements, and other materials related to use acknowledge that the software
+ * was developed by N.M. Maclaren (hereafter refered to as the Author) at the
+ * University of Cambridge. Neither the name of the Author nor the University of
+ * Cambridge may be used to endorse or promote products derived from this material
+ * without specific prior written permission.
+ *
+ * The Author and the University of Cambridge retain the copyright and all other
+ * legal rights to the software and make it available non-exclusively. All users
+ * must ensure that the software in all its derivations carries a copyright notice
+ * in the form:
+ * (c) Copyright N.M. Maclaren,
+ * (c) Copyright University of Cambridge.
+ *
+ *
+ *
+ * NO WARRANTY
+ *
+ * Because the MSNTP software is licensed free of charge, the Author and the
+ * University of Cambridge provide absolutely no warranty, either expressed or
+ * implied, including, but not limited to, the implied warranties of
+ * merchantability and fitness for a particular purpose. The entire risk as to
+ * the quality and performance of the MSNTP software is with you. Should MSNTP
+ * prove defective, you assume the cost of all necessary servicing or repair.
+ *
+ * In no event, unless required by law, will the Author or the University of
+ * Cambridge, or any other party who may modify and redistribute this software as
+ * permitted in accordance with the provisions below, be liable for damages for
+ * any losses whatsoever, including but not limited to lost profits, lost monies,
+ * lost or corrupted data, or other special, incidental or consequential losses
+ * that may arise out of the use or inability to use the MSNTP software.
+ *
+ *
+ *
+ * COPYING POLICY
+ *
+ * Permission is hereby granted for copying and distribution of copies of the
+ * MSNTP source and binary files, and of any part thereof, subject to the
+ * following licence conditions:
+ *
+ * 1. You may distribute MSNTP or components of MSNTP, with or without additions
+ * developed by you or by others. No charge, other than an "at-cost" distribution
+ * fee, may be charged for copies, derivations, or distributions of this material
+ * without the express written consent of the copyright holders.
+ *
+ * 2. You may also distribute MSNTP along with any other product for sale,
+ * provided that the cost of the bundled package is the same regardless of whether
+ * MSNTP is included or not, and provided that those interested only in MSNTP must
+ * be notified that it is a product freely available from the University of
+ * Cambridge.
+ *
+ * 3. If you distribute MSNTP software or parts of MSNTP, with or without
+ * additions developed by you or others, then you must either make available the
+ * source to all portions of the MSNTP system (exclusive of any additions made by
+ * you or by others) upon request, or instead you may notify anyone requesting
+ * source that it is freely available from the University of Cambridge.
+ *
+ * 4. You may not omit any of the copyright notices on either the source files,
+ * the executable files, or the documentation.
+ *
+ * 5. You may not omit transmission of this License agreement with whatever
+ * portions of MSNTP that are distributed.
+ *
+ * 6. Any users of this software must be notified that it is without warranty or
+ * guarantee of any nature, express or implied, nor is there any fitness for use
+ * represented.
+ *
+ *
+ * October 1996
+ * April 1997
+ * October 2000
+ */
+/*
+ * This file contains the programmatic interface to the Automated
+ * Options generated for the sntp program.
+ * These macros are documented in the AutoGen info file in the
+ * "AutoOpts" chapter. Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_SNTP_OPTS_H_GUARD
+#define AUTOOPTS_SNTP_OPTS_H_GUARD
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ * Ensure that the library used for compiling this generated header is at
+ * least as new as the version current when the header template was released
+ * (not counting patch version increments). Also ensure that the oldest
+ * tolerable version is at least as old as what was current when the header
+ * template was released.
+ */
+#define AO_TEMPLATE_VERSION 118784
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+ Choke Me.
+#endif
+
+/*
+ * Enumeration of each option:
+ */
+typedef enum {
+ INDEX_OPT_IPV4 = 0,
+ INDEX_OPT_IPV6 = 1,
+ INDEX_OPT_UNPRIVPORT = 2,
+ INDEX_OPT_NORMALVERBOSE = 3,
+ INDEX_OPT_EXTRAVERBOSE = 4,
+ INDEX_OPT_MEGAVERBOSE = 5,
+ INDEX_OPT_SETTIMEOFDAY = 6,
+ INDEX_OPT_ADJTIME = 7,
+ INDEX_OPT_VERSION = 8,
+ INDEX_OPT_HELP = 9,
+ INDEX_OPT_MORE_HELP = 10,
+ INDEX_OPT_SAVE_OPTS = 11,
+ INDEX_OPT_LOAD_OPTS = 12
+} teOptIndex;
+
+#define OPTION_CT 13
+#define SNTP_VERSION "4.2.4p5"
+#define SNTP_FULL_VERSION "sntp - standard SNTP program - Ver. 4.2.4p5"
+
+/*
+ * Interface defines for all options. Replace "n" with the UPPER_CASED
+ * option name (as in the teOptIndex enumeration above).
+ * e.g. HAVE_OPT( IPV4 )
+ */
+#define DESC(n) (sntpOptions.pOptDesc[INDEX_OPT_## n])
+#define HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define OPT_ARG(n) (DESC(n).optArg.argString)
+#define STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define COUNT_OPT(n) (DESC(n).optOccCt)
+#define ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define CLEAR_OPT(n) STMTS( \
+ DESC(n).fOptState &= OPTST_PERSISTENT_MASK; \
+ if ( (DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+ DESC(n).fOptState |= OPTST_DISABLED; \
+ DESC(n).optCookie = NULL )
+
+/*
+ * Make sure there are no #define name conflicts with the option names
+ */
+#ifndef NO_OPTION_NAME_WARNINGS
+# ifdef IPV4
+# warning undefining IPV4 due to option name conflict
+# undef IPV4
+# endif
+# ifdef IPV6
+# warning undefining IPV6 due to option name conflict
+# undef IPV6
+# endif
+# ifdef UNPRIVPORT
+# warning undefining UNPRIVPORT due to option name conflict
+# undef UNPRIVPORT
+# endif
+# ifdef NORMALVERBOSE
+# warning undefining NORMALVERBOSE due to option name conflict
+# undef NORMALVERBOSE
+# endif
+# ifdef EXTRAVERBOSE
+# warning undefining EXTRAVERBOSE due to option name conflict
+# undef EXTRAVERBOSE
+# endif
+# ifdef MEGAVERBOSE
+# warning undefining MEGAVERBOSE due to option name conflict
+# undef MEGAVERBOSE
+# endif
+# ifdef SETTIMEOFDAY
+# warning undefining SETTIMEOFDAY due to option name conflict
+# undef SETTIMEOFDAY
+# endif
+# ifdef ADJTIME
+# warning undefining ADJTIME due to option name conflict
+# undef ADJTIME
+# endif
+#else /* NO_OPTION_NAME_WARNINGS */
+# undef IPV4
+# undef IPV6
+# undef UNPRIVPORT
+# undef NORMALVERBOSE
+# undef EXTRAVERBOSE
+# undef MEGAVERBOSE
+# undef SETTIMEOFDAY
+# undef ADJTIME
+#endif /* NO_OPTION_NAME_WARNINGS */
+
+/*
+ * Interface defines for specific options.
+ */
+#define VALUE_OPT_IPV4 '4'
+#define WHICH_OPT_IPV4 (DESC(IPV4).optActualValue)
+#define WHICH_IDX_IPV4 (DESC(IPV4).optActualIndex)
+#define VALUE_OPT_IPV6 '6'
+#define VALUE_OPT_UNPRIVPORT 'u'
+#define VALUE_OPT_NORMALVERBOSE 'v'
+#define VALUE_OPT_EXTRAVERBOSE 'V'
+#define VALUE_OPT_MEGAVERBOSE 'W'
+#define VALUE_OPT_SETTIMEOFDAY 'r'
+#define VALUE_OPT_ADJTIME 'a'
+
+#define VALUE_OPT_VERSION 'v'
+#define VALUE_OPT_HELP '?'
+#define VALUE_OPT_MORE_HELP '!'
+#define VALUE_OPT_SAVE_OPTS '>'
+#define VALUE_OPT_LOAD_OPTS '<'
+#define SET_OPT_SAVE_OPTS(a) STMTS( \
+ DESC(SAVE_OPTS).fOptState &= OPTST_PERSISTENT_MASK; \
+ DESC(SAVE_OPTS).fOptState |= OPTST_SET; \
+ DESC(SAVE_OPTS).optArg.argString = (char const*)(a) )
+/*
+ * Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR STMTS( sntpOptions.fOptSet &= ~OPTPROC_ERRSTOP )
+#define ERRSTOP_OPTERR STMTS( sntpOptions.fOptSet |= OPTPROC_ERRSTOP )
+#define RESTART_OPT(n) STMTS( \
+ sntpOptions.curOptIdx = (n); \
+ sntpOptions.pzCurOpt = NULL )
+#define START_OPT RESTART_OPT(1)
+#define USAGE(c) (*sntpOptions.pUsageProc)( &sntpOptions, c )
+/* extracted from /usr/local/gnu/share/autogen/opthead.tpl near line 360 */
+
+/* * * * * *
+ *
+ * Declare the sntp option descriptor.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern tOptions sntpOptions;
+
+#ifndef _
+# if ENABLE_NLS
+# include <stdio.h>
+ static inline char* aoGetsText( char const* pz ) {
+ if (pz == NULL) return NULL;
+ return (char*)gettext( pz );
+ }
+# define _(s) aoGetsText(s)
+# else /* ENABLE_NLS */
+# define _(s) s
+# endif /* ENABLE_NLS */
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_SNTP_OPTS_H_GUARD */
+/* sntp-opts.h ends here */
diff --git a/contrib/ntp/sntp/sntp-opts.menu b/contrib/ntp/sntp/sntp-opts.menu
new file mode 100644
index 0000000..e3c8d81
--- /dev/null
+++ b/contrib/ntp/sntp/sntp-opts.menu
@@ -0,0 +1 @@
+* sntp Invocation:: Invoking sntp
diff --git a/contrib/ntp/sntp/sntp-opts.texi b/contrib/ntp/sntp/sntp-opts.texi
new file mode 100644
index 0000000..8cc0d2c
--- /dev/null
+++ b/contrib/ntp/sntp/sntp-opts.texi
@@ -0,0 +1,173 @@
+@node sntp Invocation
+@section Invoking sntp
+@pindex sntp
+@cindex standard SNTP program
+@ignore
+#
+# EDIT THIS FILE WITH CAUTION (sntp-opts.texi)
+#
+# It has been AutoGen-ed Sunday August 17, 2008 at 05:27:25 AM EDT
+# From the definitions sntp-opts.def
+# and the template file aginfo.tpl
+@end ignore
+This program has no explanation.
+
+.I sntp
+can be used as a SNTP client to query a NTP or SNTP server and either display
+the time or set the local system's time (given suitable privilege). It can be
+run as an interactive command or in a
+.I cron
+job.
+NTP is the Network Time Protocol (RFC 1305) and SNTP is the
+Simple Network Time Protocol (RFC 2030, which supersedes RFC 1769).
+
+This section was generated by @strong{AutoGen},
+the aginfo template and the option descriptions for the @command{sntp} program. It documents the sntp usage text and option meanings.
+
+This software is released under a specialized copyright license.
+
+@menu
+* sntp usage:: sntp usage help (-?)
+* sntp adjtime:: adjtime option (-a)
+* sntp extraverbose:: extraverbose option (-V)
+* sntp ipv4:: ipv4 option (-4)
+* sntp ipv6:: ipv6 option (-6)
+* sntp megaverbose:: megaverbose option (-W)
+* sntp normalverbose:: normalverbose option (-v)
+* sntp settimeofday:: settimeofday option (-r)
+* sntp unprivport:: unprivport option (-u)
+@end menu
+
+@node sntp usage
+@subsection sntp usage help (-?)
+@cindex sntp usage
+
+This is the automatically generated usage text for sntp:
+
+@exampleindent 0
+@example
+sntp is unavailable - no --help
+@end example
+@exampleindent 4
+
+@node sntp ipv4
+@subsection ipv4 option (-4)
+@cindex sntp-ipv4
+
+This is the ``force ipv4 dns name resolution'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+is a member of the ipv4 class of options.
+@end itemize
+
+Force DNS resolution of following host names on the command line
+to the IPv4 namespace.
+
+@node sntp ipv6
+@subsection ipv6 option (-6)
+@cindex sntp-ipv6
+
+This is the ``force ipv6 dns name resolution'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+is a member of the ipv4 class of options.
+@end itemize
+
+Force DNS resolution of following host names on the command line
+to the IPv6 namespace.
+
+@node sntp unprivport
+@subsection unprivport option (-u)
+@cindex sntp-unprivport
+
+This is the ``use an unprivileged port'' option.
+Use an unprivilegded UDP port for our queries.
+
+@node sntp normalverbose
+@subsection normalverbose option (-v)
+@cindex sntp-normalverbose
+
+This is the ``slightly verbose'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+extraverbose, megaverbose.
+@end itemize
+
+Diagnostic messages for non-fatal errors and a limited amount of
+tracing should be written to standard error. Fatal ones always
+produce a diagnostic. This option should be set when there is a
+suspected problem with the server, network or the source.
+
+@node sntp extraverbose
+@subsection extraverbose option (-V)
+@cindex sntp-extraverbose
+
+This is the ``extra verbose'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+normalverbose, megaverbose.
+@end itemize
+
+Produce more and less comprehensible output, mainly for investigating
+problems with apparently inconsistent timestamps. This option should
+be set when the program fails with a message indicating that is the
+trouble.
+
+@node sntp megaverbose
+@subsection megaverbose option (-W)
+@cindex sntp-megaverbose
+
+This is the ``mega verbose'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+normalverbose, extraverbose.
+@end itemize
+
+Very verbose debugging output that will interfere with the timing
+when writing to the terminal (because of line buffered output from C).
+Note that the times produced by this are the corrections needed, and
+not the error in the local clock. This option should be set only when
+debugging the source.
+
+@node sntp settimeofday
+@subsection settimeofday option (-r)
+@cindex sntp-settimeofday
+
+This is the ``set (step) the time with settimeofday()'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+adjtime.
+@end itemize
+
+
+
+@node sntp adjtime
+@subsection adjtime option (-a)
+@cindex sntp-adjtime
+
+This is the ``set (slew) the time with adjtime()'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must not appear in combination with any of the following options:
+settimeofday.
+@end itemize
+
+
diff --git a/contrib/ntp/sntp/sntp.1 b/contrib/ntp/sntp/sntp.1
new file mode 100644
index 0000000..b6ccda2
--- /dev/null
+++ b/contrib/ntp/sntp/sntp.1
@@ -0,0 +1,400 @@
+.TH SNTP 1 2008-08-17 "( 4.2.4p5)" "Programmer's Manual"
+.\" EDIT THIS FILE WITH CAUTION (sntp.1)
+.\"
+.\" It has been AutoGen-ed Sunday August 17, 2008 at 05:27:25 AM EDT
+.\" From the definitions sntp-opts.def
+.\" and the template file agman1.tpl
+.\"
+.SH NAME
+sntp \- standard SNTP program
+.SH SYNOPSIS
+.B sntp
+.\" Mixture of short (flag) options and long options
+.RB [ \-\fIflag\fP " [\fIvalue\fP]]... [" \--\fIopt-name\fP " [[=| ]\fIvalue\fP]]..."
+.PP
+All arguments must be options.
+.SH "DESCRIPTION"
+This manual page documents, briefly, the \fBsntp\fP command.
+.I sntp
+can be used as a SNTP client to query a NTP or SNTP server and either display
+the time or set the local system's time (given suitable privilege). It can be
+run as an interactive command or in a
+.I cron
+job.
+NTP is the Network Time Protocol (RFC 1305) and SNTP is the
+Simple Network Time Protocol (RFC 2030, which supersedes RFC 1769).
+.SS Options
+.PP
+.I sntp
+recognizes the following options:
+.TP
+.B \-v
+indicates that diagnostic messages for non-fatal errors and a limited amount of
+tracing should be written to standard error. Fatal ones always produce a
+diagnostic. This option should be set when there is a suspected problem with
+the server, network or the source.
+.TP
+.B \-V
+requests more and less comprehensible output, mainly for investigating problems
+with apparently inconsistent timestamps. This option should be set when the
+program fails with a message indicating that is the trouble.
+.TP
+.B \-W
+requests very verbose debugging output, and will interfere with the timing
+when writing to the terminal (because of line buffered output from C). Note
+that the times produced by this are the corrections needed, and not the error
+in the local clock. This option should be set only when debugging the source.
+.TP
+.B \-q
+indicates that it should query a daemon save file being maintained by it.
+This needs no privilege and will change neither the save file nor the clock.
+.PP
+The default is that it should behave as a client, and the following options
+are then relevant:
+.TP
+.B \-r
+indicates that the system clock should be reset by
+.IR settimeofday .
+Naturally, this will work only if the user has enough privilege.
+.TP
+.B \-a
+indicates that the system clock should be reset by
+.IR adjtime .
+Naturally, this will work only if the user has enough privilege.
+.PP
+The default is to write the estimated correct local date and time (i.e. not
+UTC) to the standard output in a format like
+.BR "'1996 Oct 15 20:17:25.123 + 4.567 +/- 0.089 secs'" ,
+where the
+.B "'+ 4.567 +/- 0.089 secs'"
+indicates the estimated error in the time on the local system.
+.TP
+.BI \-l " lockfile"
+sets the name of the lock file to ensure that there is only
+one copy of
+.I sntp
+running at once. The default is installation-dependent, but will usually be
+.IR /etc/sntp.pid .
+.TP
+.BI \-e " minerr"
+sets the maximum ignorable variation between the clocks to
+.IR minerr .
+Acceptable values are from 0.001 to 1, and the default is 0.1 if a NTP host is
+is specified and 0.5 otherwise.
+.TP
+.BI \-E " maxerr"
+sets the maximum value of various delays that are deemed acceptable to
+.IR maxerr .
+Acceptable values are from 1 to 60, and the default is 5. It should sometimes
+be increased if there are problems with the network, NTP server or system
+clock, but take care.
+.TP
+.BI \-P " prompt"
+sets the maximum clock change that will be made automatically to
+.IR maxerr .
+Acceptable values are from 1 to 3600 or
+.IR no ,
+and the default is 30. If the program is being run interactively in ordinary
+client mode, and the system clock is to be changed, larger corrections will
+prompt the user for confirmation. Specifying
+.I no
+will disable this and the correction will be made regardless.
+.TP
+.BI \-c " count"
+sets the maximum number of NTP packets required to
+.IR count .
+Acceptable values are from 1 to 25 if a NTP host is specified and from 5 to 25
+otherwise, and the default is 5. If the maximum isn't enough, the system needs
+a better consistency algorithm than this program uses.
+.TP
+.BI \-d " delay"
+sets a rough limit on the total running time to
+.I delay
+seconds. Acceptable values are from 1 to 3600, and the default is 15 if a NTP
+host is specified and 300 otherwise.
+.TP
+.B \-4
+force IPv4 DNS resolution.
+.TP
+.B \-6
+force IPv6 DNS resolution.
+.PP
+.B address(es)
+are the DNS names or IP numbers of hosts to use for the challenge and response
+protocol; if no names are given, the program waits for broadcasts. Polling a
+server is vastly more reliable than listening to broadcasts. Note that a
+single component numeric address is not allowed, to avoid ambiguities. If
+more than one name is give, they will be used in a round-robin fashion.
+.PP
+Constraints:
+.IP
+.B minerr
+must be less than
+.B maxerr
+which must be less than
+.B delay
+(or, if a NTP host is not specified
+.BR delay / count "),"
+and
+.B count
+must be less than half of
+.BR delay .
+.IP
+In update mode,
+.B maxerr
+must be less than
+.BR prompt.
+.PP
+Note that none of the above values are closely linked to the limits described
+in the NTP protocol (RFC 1305).
+.SH USAGE
+The simplest use of this program is as an unprivileged command to check the
+current time and error in the local clock. For example:
+.IP
+.B sntp ntpserver.somewhere
+.PP
+With suitable privilege, it can be run as a command or in a
+.I cron
+job to reset the local clock from a reliable server, like the
+.I ntpdate
+and
+.I rdate
+commands. For example:
+.IP
+.B sntp \-a ntpserver.somewhere
+.PP
+More information on how to use this utility is given in the
+.I README
+file in the distribution. In particular, this
+.I man
+page does not describe how to set it up as a server, which needs special care
+to avoid propagating misinformation.
+.SH RETURN VALUE
+When used as a client in non-daemon mode, the program returns a zero exit
+status for success, and a non-zero one otherwise. When used as a daemon
+(either client or server), it does not return except after a serious error.
+.SH BUGS
+The program implements the SNTP protocol, and does not provide all NTP
+facilities. In particular, it contains no checks against any form of spoofing.
+If this is a serious concern, some network security mechanism (like a firewall
+or even just
+.IR tcpwrappers )
+should be installed.
+.PP
+There are some errors, ambiguities and inconsistencies in the RFCs, and this
+code may not interwork with all other NTP implementations. Any unreasonable
+restrictions should be reported as bugs to whoever is responsible. It may
+be difficult to find out who that is.
+.PP
+The program will stop as soon as it feels that things have got out of control.
+In client daemon mode, it will usually fail during an extended period of
+network or server inaccessibility or excessively slow performance, or when the
+local clock is reset by another process. It will then need restarting
+manually. Experienced system administrators can write a shell script, a
+.I cron
+job or put it in
+.IR inittab ,
+to do this automatically.
+.PP
+The error cannot be estimated reliably with broadcast packets or for the drift
+in daemon mode (even with client-server packets), and the guess made by the
+program may be wrong (possibly even very wrong). If this is a problem, then
+setting the
+.B \-c
+option to a larger value may help. Or it may not.
+.SH AUTHOR
+.I sntp
+was developed by N.M. Maclaren of the University of Cambridge Computing
+Service.
+.SH OPTIONS
+.TP
+.BR \-4 ", " \--ipv4
+Force IPv4 DNS name resolution.
+This option is a member of the ipv4 class of options.
+.sp
+Force DNS resolution of following host names on the command line
+to the IPv4 namespace.
+.TP
+.BR \-6 ", " \--ipv6
+Force IPv6 DNS name resolution.
+This option is a member of the ipv4 class of options.
+.sp
+Force DNS resolution of following host names on the command line
+to the IPv6 namespace.
+.TP
+.BR \-u ", " \--unprivport
+Use an unprivileged port.
+.sp
+Use an unprivilegded UDP port for our queries.
+.TP
+.BR \-v ", " \--normalverbose
+Slightly verbose.
+This option must not appear in combination with any of the following options:
+extraverbose, megaverbose.
+.sp
+Diagnostic messages for non-fatal errors and a limited amount of
+tracing should be written to standard error. Fatal ones always
+produce a diagnostic. This option should be set when there is a
+suspected problem with the server, network or the source.
+.TP
+.BR \-V ", " \--extraverbose
+Extra verbose.
+This option must not appear in combination with any of the following options:
+normalverbose, megaverbose.
+.sp
+Produce more and less comprehensible output, mainly for investigating
+problems with apparently inconsistent timestamps. This option should
+be set when the program fails with a message indicating that is the
+trouble.
+.TP
+.BR \-W ", " \--megaverbose
+Mega verbose.
+This option must not appear in combination with any of the following options:
+normalverbose, extraverbose.
+.sp
+Very verbose debugging output that will interfere with the timing
+when writing to the terminal (because of line buffered output from C).
+Note that the times produced by this are the corrections needed, and
+not the error in the local clock. This option should be set only when
+debugging the source.
+.TP
+.BR \-r ", " \--settimeofday
+Set (step) the time with settimeofday().
+This option must not appear in combination with any of the following options:
+adjtime.
+.sp
+
+.TP
+.BR \-a ", " \--adjtime
+Set (slew) the time with adjtime().
+This option must not appear in combination with any of the following options:
+settimeofday.
+.sp
+
+.TP
+.BR \-? , " \--help"
+Display usage information and exit.
+.TP
+.BR \-! , " \--more-help"
+Extended usage information passed thru pager.
+.TP
+.BR \-> " [\fIrcfile\fP]," " \--save-opts" "[=\fIrcfile\fP]"
+Save the option state to \fIrcfile\fP. The default is the \fIlast\fP
+configuration file listed in the \fBOPTION PRESETS\fP section, below.
+.TP
+.BR \-< " \fIrcfile\fP," " \--load-opts" "=\fIrcfile\fP," " \--no-load-opts"
+Load options from \fIrcfile\fP.
+The \fIno-load-opts\fP form will disable the loading
+of earlier RC/INI files. \fI--no-load-opts\fP is handled early,
+out of order.
+.TP
+.BR \-v " [{\fIv|c|n\fP}]," " \--version" "[=\fI{v|c|n}\fP]"
+Output version of program and exit. The default mode is `v', a simple
+version. The `c' mode will print copyright information and `n' will
+print the full copyright notice.
+.SH OPTION PRESETS
+Any option that is not marked as \fInot presettable\fP may be preset
+by loading values from configuration ("RC" or ".INI") file(s) and values from
+environment variables named:
+.nf
+ \fBSNTP_<option-name>\fP or \fBSNTP\fP
+.fi
+.aj
+The environmental presets take precedence (are processed later than)
+the configuration files.
+The \fIhomerc\fP files are "\fI$HOME\fP", and "\fI.\fP".
+If any of these are directories, then the file \fI.ntprc\fP
+is searched for within those directories.
+.SH AUTHOR
+ntp.org
+.br
+Please send bug reports to: http://bugs.ntp.isc.org, bugs@ntp.org
+
+.PP
+.nf
+.na
+ General Public Licence for the software known as MSNTP
+ \------------------------------------------------------
+
+ (c) Copyright, N.M. Maclaren, 1996, 1997, 2000
+ (c) Copyright, University of Cambridge, 1996, 1997, 2000
+
+
+
+Free use of MSNTP in source and binary forms is permitted, provided that this
+entire licence is duplicated in all copies, and that any documentation,
+announcements, and other materials related to use acknowledge that the software
+was developed by N.M. Maclaren (hereafter refered to as the Author) at the
+University of Cambridge. Neither the name of the Author nor the University of
+Cambridge may be used to endorse or promote products derived from this material
+without specific prior written permission.
+
+The Author and the University of Cambridge retain the copyright and all other
+legal rights to the software and make it available non-exclusively. All users
+must ensure that the software in all its derivations carries a copyright notice
+in the form:
+ (c) Copyright N.M. Maclaren,
+ (c) Copyright University of Cambridge.
+
+
+
+ NO WARRANTY
+
+Because the MSNTP software is licensed free of charge, the Author and the
+University of Cambridge provide absolutely no warranty, either expressed or
+implied, including, but not limited to, the implied warranties of
+merchantability and fitness for a particular purpose. The entire risk as to
+the quality and performance of the MSNTP software is with you. Should MSNTP
+prove defective, you assume the cost of all necessary servicing or repair.
+
+In no event, unless required by law, will the Author or the University of
+Cambridge, or any other party who may modify and redistribute this software as
+permitted in accordance with the provisions below, be liable for damages for
+any losses whatsoever, including but not limited to lost profits, lost monies,
+lost or corrupted data, or other special, incidental or consequential losses
+that may arise out of the use or inability to use the MSNTP software.
+
+
+
+ COPYING POLICY
+
+Permission is hereby granted for copying and distribution of copies of the
+MSNTP source and binary files, and of any part thereof, subject to the
+following licence conditions:
+
+1. You may distribute MSNTP or components of MSNTP, with or without additions
+developed by you or by others. No charge, other than an "at-cost" distribution
+fee, may be charged for copies, derivations, or distributions of this material
+without the express written consent of the copyright holders.
+
+2. You may also distribute MSNTP along with any other product for sale,
+provided that the cost of the bundled package is the same regardless of whether
+MSNTP is included or not, and provided that those interested only in MSNTP must
+be notified that it is a product freely available from the University of
+Cambridge.
+
+3. If you distribute MSNTP software or parts of MSNTP, with or without
+additions developed by you or others, then you must either make available the
+source to all portions of the MSNTP system (exclusive of any additions made by
+you or by others) upon request, or instead you may notify anyone requesting
+source that it is freely available from the University of Cambridge.
+
+4. You may not omit any of the copyright notices on either the source files,
+the executable files, or the documentation.
+
+5. You may not omit transmission of this License agreement with whatever
+portions of MSNTP that are distributed.
+
+6. Any users of this software must be notified that it is without warranty or
+guarantee of any nature, express or implied, nor is there any fitness for use
+represented.
+
+
+October 1996
+April 1997
+October 2000
+.fi
+.ad
+.PP
+This manual page was \fIAutoGen\fP-erated from the \fBsntp\fP
+option definitions.
diff --git a/contrib/ntp/sntp/socket.c b/contrib/ntp/sntp/socket.c
index 75fd461..02fabb8 100644
--- a/contrib/ntp/sntp/socket.c
+++ b/contrib/ntp/sntp/socket.c
@@ -8,6 +8,8 @@ the only system that the author uses that has it is Linux. */
+#include "config.h"
+
#include "header.h"
#include "internet.h"
#include <fcntl.h>
@@ -30,6 +32,12 @@ static struct sockaddr_storage here[MAX_SOCKETS], there[MAX_SOCKETS];
static struct sockaddr_in here[MAX_SOCKETS], there[MAX_SOCKETS];
#endif
+void display_in_hex(const void *, int);
+#ifdef HAVE_IPV6
+void display_sock_in_hex(struct sockaddr_storage *);
+#else
+void display_sock_in_hex (struct sockaddr_in *);
+#endif
/* There needs to be some disgusting grobble for handling timeouts, that is
identical to the grobble in internet.c. */
@@ -63,7 +71,7 @@ void display_in_hex (const void *data, int length) {
#ifdef HAVE_IPV6
void display_sock_in_hex (struct sockaddr_storage *sock) {
- int family, len;
+ int family;
struct sockaddr_in *sin;
struct sockaddr_in6 *sin6;
@@ -102,6 +110,8 @@ void display_sock_in_hex (struct sockaddr_in *sock) {
}
#endif
+extern int unprivport;
+
#ifdef HAVE_IPV6
void open_socket (int which, char *hostname, int timespan) {
@@ -110,7 +120,7 @@ void open_socket (int which, char *hostname, int timespan) {
socket. */
int port, k, sl;
- struct sockaddr_storage address, anywhere, everywhere;
+ struct sockaddr_storage address, anywhere;
/* Initialise and find out the server and port number. Note that the port
number is in network format. */
@@ -123,14 +133,12 @@ number is in network format. */
fatal(0,"socket index out of range or already open",NULL);
if (verbose > 2)
fprintf(stderr,"Looking for the socket addresses\n");
- find_address(&address,&anywhere,&everywhere,&port,hostname,timespan);
+ find_address(&address,&anywhere,&port,hostname,timespan);
if (verbose > 2) {
fprintf(stderr,"Internet address: address=");
display_sock_in_hex(&address);
fprintf(stderr," anywhere=");
display_sock_in_hex(&anywhere);
- fprintf(stderr," everywhere=");
- display_sock_in_hex(&everywhere);
fputc('\n',stderr);
}
@@ -139,10 +147,10 @@ be reset before use in server mode. */
memset(&here[which], 0, sizeof(struct sockaddr_storage));
here[which] = anywhere;
- if (!(operation == op_listen || operation == op_server))
+ if (operation != op_listen || unprivport)
((struct sockaddr_in6 *)&here[which])->sin6_port = 0;
memset(&there[which], 0, sizeof(struct sockaddr_storage));
- there[which] = (operation == op_broadcast ? everywhere : address);
+ there[which] = address;
if (verbose > 2) {
fprintf(stderr,"Initial sockets: here=");
display_sock_in_hex(&here[which]);
@@ -170,12 +178,6 @@ be reset before use in server mode. */
if ((descriptors[which] = socket(here[which].ss_family,SOCK_DGRAM,0)) < 0
|| bind(descriptors[which],(struct sockaddr *)&here[which], sl) < 0)
fatal(1,"unable to allocate socket for NTP",NULL);
- if (operation == op_broadcast) {
- errno = 0;
- k = setsockopt(descriptors[which],SOL_SOCKET,SO_BROADCAST,
- (void *)&k,sizeof(k));
- if (k != 0) fatal(1,"unable to set permission to broadcast",NULL);
- }
}
#else
@@ -186,7 +188,7 @@ void open_socket (int which, char *hostname, int timespan) {
socket. */
int port, k;
- struct in_addr address, anywhere, everywhere;
+ struct in_addr address, anywhere;
/* Initialise and find out the server and port number. Note that the port
number is in network format. */
@@ -196,29 +198,26 @@ number is in network format. */
if (which < 0 || which >= MAX_SOCKETS || descriptors[which] >= 0)
fatal(0,"socket index out of range or already open",NULL);
if (verbose > 2) fprintf(stderr,"Looking for the socket addresses\n");
- find_address(&address,&anywhere,&everywhere,&port,hostname,timespan);
+ find_address(&address,&anywhere,&port,hostname,timespan);
if (verbose > 2) {
fprintf(stderr,"Internet address: address=");
display_in_hex(&address,sizeof(struct in_addr));
fprintf(stderr," anywhere=");
display_in_hex(&anywhere,sizeof(struct in_addr));
- fprintf(stderr," everywhere=");
- display_in_hex(&everywhere,sizeof(struct in_addr));
fputc('\n',stderr);
}
-/* Set up our own and the target addresses. Note that the target address will
-be reset before use in server mode. */
+/* Set up our own and the target addresses. */
memset(&here[which],0,sizeof(struct sockaddr_in));
here[which].sin_family = AF_INET;
here[which].sin_port =
- (operation == op_listen || operation == op_server ? port : 0);
+ (operation == op_listen || !unprivport ? port : 0);
here[which].sin_addr = anywhere;
memset(&there[which],0,sizeof(struct sockaddr_in));
there[which].sin_family = AF_INET;
there[which].sin_port = port;
- there[which].sin_addr = (operation == op_broadcast ? everywhere : address);
+ there[which].sin_addr = address;
if (verbose > 2) {
fprintf(stderr,"Initial sockets: here=");
display_in_hex(&here[which].sin_addr,sizeof(struct in_addr));
@@ -238,12 +237,6 @@ be reset before use in server mode. */
bind(descriptors[which],(struct sockaddr *)&here[which],
sizeof(here[which])) < 0)
fatal(1,"unable to allocate socket for NTP",NULL);
- if (operation == op_broadcast) {
- errno = 0;
- k = setsockopt(descriptors[which],SOL_SOCKET,SO_BROADCAST,
- (void *)&k,sizeof(k));
- if (k != 0) fatal(1,"unable to set permission to broadcast",NULL);
- }
}
#endif
@@ -312,10 +305,7 @@ length and timeout are not fatal. */
/* Get the packet and clear the timeout, if any. */
- if (operation == op_server)
- memcpy(ptr = &there[which],&here[which],sizeof(scratch));
- else
- memcpy(ptr = &scratch,&there[which],sizeof(scratch));
+ memcpy(ptr = &scratch,&there[which],sizeof(scratch));
n = sizeof(scratch);
errno = 0;
k = recvfrom(descriptors[which],packet,(size_t)length,0,
diff --git a/contrib/ntp/sntp/timing.c b/contrib/ntp/sntp/timing.c
index 30a9159..f69cd2b 100644
--- a/contrib/ntp/sntp/timing.c
+++ b/contrib/ntp/sntp/timing.c
@@ -91,12 +91,14 @@ negative, unsigned values. */
(long)adjust.tv_sec,(long)adjust.tv_usec);
if (immediate) {
errno = 0;
- /* if (settimeofday(&new,NULL))
- fatal(1,"unable to reset current system time",NULL);*/
+ if (settimeofday(&new,NULL))
+ fatal(1,"unable to reset current system time",NULL);
} else {
+ previous.tv_sec = 0;
+ previous.tv_usec = 0;
errno = 0;
- /* if (adjtime(&adjust,&previous))
- fatal(1,"unable to adjust current system time",NULL);*/
+ if (adjtime(&adjust,&previous))
+ fatal(1,"unable to adjust current system time",NULL);
if (previous.tv_sec != 0 || previous.tv_usec != 0) {
sprintf(text,"(%ld,%.6ld)",
(long)previous.tv_sec,(long)previous.tv_usec);
diff --git a/contrib/ntp/sntp/version.def b/contrib/ntp/sntp/version.def
new file mode 100644
index 0000000..b17d656
--- /dev/null
+++ b/contrib/ntp/sntp/version.def
@@ -0,0 +1 @@
+version = '4.2.4p5';
diff --git a/contrib/ntp/util/Makefile.am b/contrib/ntp/util/Makefile.am
index 8f1ba9e..f73121f 100644
--- a/contrib/ntp/util/Makefile.am
+++ b/contrib/ntp/util/Makefile.am
@@ -1,16 +1,43 @@
#AUTOMAKE_OPTIONS = ../ansi2knr no-dependencies
AUTOMAKE_OPTIONS= ansi2knr
-bin_PROGRAMS= @MAKE_NTPTIME@ @MAKE_TICKADJ@ @MAKE_TIMETRIM@ @MAKE_NTP_KEYGEN@
+
+bin_PROGRAMS= @MAKE_NTPTIME@ @MAKE_TICKADJ@ @MAKE_TIMETRIM@ \
+ ntp-keygen
EXTRA_PROGRAMS= audio-pcm byteorder hist jitter kern longsize \
- ntp-keygen ntptime pps-api precision sht testrs6000 tickadj timetrim
+ ntptime pps-api precision sht testrs6000 tg tickadj timetrim
-INCLUDES= -I$(top_srcdir)/include
+AM_CPPFLAGS= -I$(top_srcdir)/include $(LIBOPTS_CFLAGS)
# LDADD might need RESLIB and ADJLIB
LDADD= ../libntp/libntp.a
-ntp_keygen_LDADD= @LCRYPTO@
-#EXTRA_DIST= README TAGS
-EXTRA_DIST=
+ntp_keygen_SOURCES = ntp-keygen.c ntp-keygen-opts.c ntp-keygen-opts.h
+ntp_keygen_LDADD= @LCRYPTO@ $(LIBOPTS_LDADD) ../libntp/libntp.a
+
ETAGS_ARGS= Makefile.am
+#EXTRA_DIST= README TAGS
+EXTRA_DIST= ntp-keygen-opts.def ntp-keygen.1 ntp-keygen-opts.texi ntp-keygen-opts.menu
+BUILT_SOURCES= ntp-keygen-opts.c ntp-keygen-opts.h ntp-keygen.1 \
+ ntp-keygen-opts.texi ntp-keygen-opts.menu
+man_MANS= ntp-keygen.1
+run_ag= cd $(srcdir) && autogen -L ../include --writable
+std_def_list= $(top_srcdir)/include/debug-opt.def \
+ $(top_srcdir)/include/autogen-version.def \
+ $(top_srcdir)/include/copyright.def \
+ $(top_srcdir)/include/homerc.def \
+ $(top_srcdir)/include/version.def
+
+$(srcdir)/ntp-keygen-opts.h: $(srcdir)/ntp-keygen-opts.c
+$(srcdir)/ntp-keygen-opts.c: $(srcdir)/ntp-keygen-opts.def $(std_def_list)
+ $(run_ag) ntp-keygen-opts.def
+
+$(srcdir)/ntp-keygen.1: $(srcdir)/ntp-keygen-opts.def $(std_def_list)
+ $(run_ag) -Tagman1.tpl -bntp-keygen ntp-keygen-opts.def
+
+$(srcdir)/ntp-keygen-opts.texi $(srcdir)/ntp-keygen-opts.menu: $(srcdir)/ntp-keygen-opts.def $(std_def_list)
+ $(run_ag) -Taginfo.tpl -DLEVEL=section ntp-keygen-opts.def
+
+
+jitter_SOURCES= jitter.c jitter.h
+jitter_LDADD=
../libntp/libntp.a:
cd ../libntp && $(MAKE)
diff --git a/contrib/ntp/util/Makefile.in b/contrib/ntp/util/Makefile.in
index 50b3042..4c511d7 100644
--- a/contrib/ntp/util/Makefile.in
+++ b/contrib/ntp/util/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.7.7 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# Free Software Foundation, Inc.
+# 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.
@@ -21,7 +21,6 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
-
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -37,16 +36,125 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-target_triplet = @target@
+ANSI2KNR = @ANSI2KNR@
+bin_PROGRAMS = @MAKE_NTPTIME@ @MAKE_TICKADJ@ @MAKE_TIMETRIM@ \
+ ntp-keygen$(EXEEXT)
+EXTRA_PROGRAMS = audio-pcm$(EXEEXT) byteorder$(EXEEXT) hist$(EXEEXT) \
+ jitter$(EXEEXT) kern$(EXEEXT) longsize$(EXEEXT) \
+ ntptime$(EXEEXT) pps-api$(EXEEXT) precision$(EXEEXT) \
+ sht$(EXEEXT) testrs6000$(EXEEXT) tg$(EXEEXT) tickadj$(EXEEXT) \
+ timetrim$(EXEEXT)
+subdir = util
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ ansi2knr.1 ansi2knr.c
+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/hs_ulong_const.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 =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+audio_pcm_SOURCES = audio-pcm.c
+audio_pcm_OBJECTS = audio-pcm$U.$(OBJEXT)
+audio_pcm_LDADD = $(LDADD)
+audio_pcm_DEPENDENCIES = ../libntp/libntp.a
+byteorder_SOURCES = byteorder.c
+byteorder_OBJECTS = byteorder$U.$(OBJEXT)
+byteorder_LDADD = $(LDADD)
+byteorder_DEPENDENCIES = ../libntp/libntp.a
+hist_SOURCES = hist.c
+hist_OBJECTS = hist$U.$(OBJEXT)
+hist_LDADD = $(LDADD)
+hist_DEPENDENCIES = ../libntp/libntp.a
+am_jitter_OBJECTS = jitter$U.$(OBJEXT)
+jitter_OBJECTS = $(am_jitter_OBJECTS)
+jitter_DEPENDENCIES =
+kern_SOURCES = kern.c
+kern_OBJECTS = kern$U.$(OBJEXT)
+kern_LDADD = $(LDADD)
+kern_DEPENDENCIES = ../libntp/libntp.a
+longsize_SOURCES = longsize.c
+longsize_OBJECTS = longsize$U.$(OBJEXT)
+longsize_LDADD = $(LDADD)
+longsize_DEPENDENCIES = ../libntp/libntp.a
+am_ntp_keygen_OBJECTS = ntp-keygen$U.$(OBJEXT) \
+ ntp-keygen-opts$U.$(OBJEXT)
+ntp_keygen_OBJECTS = $(am_ntp_keygen_OBJECTS)
+am__DEPENDENCIES_1 =
+ntp_keygen_DEPENDENCIES = $(am__DEPENDENCIES_1) ../libntp/libntp.a
+ntptime_SOURCES = ntptime.c
+ntptime_OBJECTS = ntptime$U.$(OBJEXT)
+ntptime_LDADD = $(LDADD)
+ntptime_DEPENDENCIES = ../libntp/libntp.a
+pps_api_SOURCES = pps-api.c
+pps_api_OBJECTS = pps-api$U.$(OBJEXT)
+pps_api_LDADD = $(LDADD)
+pps_api_DEPENDENCIES = ../libntp/libntp.a
+precision_SOURCES = precision.c
+precision_OBJECTS = precision$U.$(OBJEXT)
+precision_LDADD = $(LDADD)
+precision_DEPENDENCIES = ../libntp/libntp.a
+sht_SOURCES = sht.c
+sht_OBJECTS = sht$U.$(OBJEXT)
+sht_LDADD = $(LDADD)
+sht_DEPENDENCIES = ../libntp/libntp.a
+testrs6000_SOURCES = testrs6000.c
+testrs6000_OBJECTS = testrs6000$U.$(OBJEXT)
+testrs6000_LDADD = $(LDADD)
+testrs6000_DEPENDENCIES = ../libntp/libntp.a
+tg_SOURCES = tg.c
+tg_OBJECTS = tg$U.$(OBJEXT)
+tg_LDADD = $(LDADD)
+tg_DEPENDENCIES = ../libntp/libntp.a
+tickadj_SOURCES = tickadj.c
+tickadj_OBJECTS = tickadj$U.$(OBJEXT)
+tickadj_LDADD = $(LDADD)
+tickadj_DEPENDENCIES = ../libntp/libntp.a
+timetrim_SOURCES = timetrim.c
+timetrim_OBJECTS = timetrim$U.$(OBJEXT)
+timetrim_LDADD = $(LDADD)
+timetrim_DEPENDENCIES = ../libntp/libntp.a
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = audio-pcm.c byteorder.c hist.c $(jitter_SOURCES) kern.c \
+ longsize.c $(ntp_keygen_SOURCES) ntptime.c pps-api.c \
+ precision.c sht.c testrs6000.c tg.c tickadj.c timetrim.c
+DIST_SOURCES = audio-pcm.c byteorder.c hist.c $(jitter_SOURCES) kern.c \
+ longsize.c $(ntp_keygen_SOURCES) ntptime.c pps-api.c \
+ precision.c sht.c testrs6000.c tg.c tickadj.c timetrim.c
+man1dir = $(mandir)/man1
+NROFF = nroff
+MANS = $(man_MANS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
+AR = @AR@
ARLIB_DIR = @ARLIB_DIR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
+BINSUBDIR = @BINSUBDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -54,10 +162,15 @@ CHUTEST = @CHUTEST@
CLKTEST = @CLKTEST@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DCFD = @DCFD@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
+ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
@@ -65,30 +178,39 @@ EF_LIBS = @EF_LIBS@
EF_PROGS = @EF_PROGS@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
INSTALL_DATA = @INSTALL_DATA@
+INSTALL_LIBOPTS_FALSE = @INSTALL_LIBOPTS_FALSE@
+INSTALL_LIBOPTS_TRUE = @INSTALL_LIBOPTS_TRUE@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LCRYPTO = @LCRYPTO@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBOPTS_CFLAGS = @LIBOPTS_CFLAGS@
+LIBOPTS_DIR = @LIBOPTS_DIR@
+LIBOPTS_LDADD = @LIBOPTS_LDADD@
LIBPARSE = @LIBPARSE@
LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MAKE_ADJTIMED = @MAKE_ADJTIMED@
+MAKE_CHECK_LAYOUT = @MAKE_CHECK_LAYOUT@
MAKE_CHECK_Y2K = @MAKE_CHECK_Y2K@
MAKE_LIBNTPSIM = @MAKE_LIBNTPSIM@
MAKE_LIBPARSE = @MAKE_LIBPARSE@
MAKE_LIBPARSE_KERNEL = @MAKE_LIBPARSE_KERNEL@
MAKE_NTPDSIM = @MAKE_NTPDSIM@
MAKE_NTPTIME = @MAKE_NTPTIME@
-MAKE_NTP_KEYGEN = @MAKE_NTP_KEYGEN@
MAKE_PARSEKMODULE = @MAKE_PARSEKMODULE@
-MAKE_SNTP = @MAKE_SNTP@
MAKE_TICKADJ = @MAKE_TICKADJ@
MAKE_TIMETRIM = @MAKE_TIMETRIM@
+NEED_LIBOPTS_FALSE = @NEED_LIBOPTS_FALSE@
+NEED_LIBOPTS_TRUE = @NEED_LIBOPTS_TRUE@
OBJEXT = @OBJEXT@
OPENSSL = @OPENSSL@
OPENSSL_INC = @OPENSSL_INC@
@@ -111,14 +233,21 @@ STRIP = @STRIP@
TESTDCF = @TESTDCF@
U = @U@
VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
@@ -139,6 +268,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
+mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
prefix = @prefix@
program_transform_name = @program_transform_name@
@@ -146,153 +276,76 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
-target = @target@
target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
#AUTOMAKE_OPTIONS = ../ansi2knr no-dependencies
AUTOMAKE_OPTIONS = ansi2knr
-bin_PROGRAMS = @MAKE_NTPTIME@ @MAKE_TICKADJ@ @MAKE_TIMETRIM@ @MAKE_NTP_KEYGEN@
-EXTRA_PROGRAMS = audio-pcm byteorder hist jitter kern longsize \
- ntp-keygen ntptime pps-api precision sht testrs6000 tickadj timetrim
-
-
-INCLUDES = -I$(top_srcdir)/include
+AM_CPPFLAGS = -I$(top_srcdir)/include $(LIBOPTS_CFLAGS)
# LDADD might need RESLIB and ADJLIB
LDADD = ../libntp/libntp.a
-ntp_keygen_LDADD = @LCRYPTO@
-#EXTRA_DIST= README TAGS
-EXTRA_DIST =
+ntp_keygen_SOURCES = ntp-keygen.c ntp-keygen-opts.c ntp-keygen-opts.h
+ntp_keygen_LDADD = @LCRYPTO@ $(LIBOPTS_LDADD) ../libntp/libntp.a
ETAGS_ARGS = Makefile.am
-subdir = util
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-EXTRA_PROGRAMS = audio-pcm$(EXEEXT) byteorder$(EXEEXT) hist$(EXEEXT) \
- jitter$(EXEEXT) kern$(EXEEXT) longsize$(EXEEXT) \
- ntp-keygen$(EXEEXT) ntptime$(EXEEXT) pps-api$(EXEEXT) \
- precision$(EXEEXT) sht$(EXEEXT) testrs6000$(EXEEXT) \
- tickadj$(EXEEXT) timetrim$(EXEEXT)
-bin_PROGRAMS = @MAKE_NTPTIME@ @MAKE_TICKADJ@ @MAKE_TIMETRIM@ \
- @MAKE_NTP_KEYGEN@
-PROGRAMS = $(bin_PROGRAMS)
-
-audio_pcm_SOURCES = audio-pcm.c
-audio_pcm_OBJECTS = audio-pcm$U.$(OBJEXT)
-audio_pcm_LDADD = $(LDADD)
-audio_pcm_DEPENDENCIES = ../libntp/libntp.a
-audio_pcm_LDFLAGS =
-byteorder_SOURCES = byteorder.c
-byteorder_OBJECTS = byteorder$U.$(OBJEXT)
-byteorder_LDADD = $(LDADD)
-byteorder_DEPENDENCIES = ../libntp/libntp.a
-byteorder_LDFLAGS =
-hist_SOURCES = hist.c
-hist_OBJECTS = hist$U.$(OBJEXT)
-hist_LDADD = $(LDADD)
-hist_DEPENDENCIES = ../libntp/libntp.a
-hist_LDFLAGS =
-jitter_SOURCES = jitter.c
-jitter_OBJECTS = jitter$U.$(OBJEXT)
-jitter_LDADD = $(LDADD)
-jitter_DEPENDENCIES = ../libntp/libntp.a
-jitter_LDFLAGS =
-kern_SOURCES = kern.c
-kern_OBJECTS = kern$U.$(OBJEXT)
-kern_LDADD = $(LDADD)
-kern_DEPENDENCIES = ../libntp/libntp.a
-kern_LDFLAGS =
-longsize_SOURCES = longsize.c
-longsize_OBJECTS = longsize$U.$(OBJEXT)
-longsize_LDADD = $(LDADD)
-longsize_DEPENDENCIES = ../libntp/libntp.a
-longsize_LDFLAGS =
-ntp_keygen_SOURCES = ntp-keygen.c
-ntp_keygen_OBJECTS = ntp-keygen$U.$(OBJEXT)
-ntp_keygen_DEPENDENCIES =
-ntp_keygen_LDFLAGS =
-ntptime_SOURCES = ntptime.c
-ntptime_OBJECTS = ntptime$U.$(OBJEXT)
-ntptime_LDADD = $(LDADD)
-ntptime_DEPENDENCIES = ../libntp/libntp.a
-ntptime_LDFLAGS =
-pps_api_SOURCES = pps-api.c
-pps_api_OBJECTS = pps-api$U.$(OBJEXT)
-pps_api_LDADD = $(LDADD)
-pps_api_DEPENDENCIES = ../libntp/libntp.a
-pps_api_LDFLAGS =
-precision_SOURCES = precision.c
-precision_OBJECTS = precision$U.$(OBJEXT)
-precision_LDADD = $(LDADD)
-precision_DEPENDENCIES = ../libntp/libntp.a
-precision_LDFLAGS =
-sht_SOURCES = sht.c
-sht_OBJECTS = sht$U.$(OBJEXT)
-sht_LDADD = $(LDADD)
-sht_DEPENDENCIES = ../libntp/libntp.a
-sht_LDFLAGS =
-testrs6000_SOURCES = testrs6000.c
-testrs6000_OBJECTS = testrs6000$U.$(OBJEXT)
-testrs6000_LDADD = $(LDADD)
-testrs6000_DEPENDENCIES = ../libntp/libntp.a
-testrs6000_LDFLAGS =
-tickadj_SOURCES = tickadj.c
-tickadj_OBJECTS = tickadj$U.$(OBJEXT)
-tickadj_LDADD = $(LDADD)
-tickadj_DEPENDENCIES = ../libntp/libntp.a
-tickadj_LDFLAGS =
-timetrim_SOURCES = timetrim.c
-timetrim_OBJECTS = timetrim$U.$(OBJEXT)
-timetrim_LDADD = $(LDADD)
-timetrim_DEPENDENCIES = ../libntp/libntp.a
-timetrim_LDFLAGS =
-
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/audio-pcm$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/byteorder$U.Po ./$(DEPDIR)/hist$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/jitter$U.Po ./$(DEPDIR)/kern$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/longsize$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntp-keygen$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/ntptime$U.Po ./$(DEPDIR)/pps-api$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/precision$U.Po ./$(DEPDIR)/sht$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/testrs6000$U.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/tickadj$U.Po ./$(DEPDIR)/timetrim$U.Po
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = audio-pcm.c byteorder.c hist.c jitter.c kern.c longsize.c \
- ntp-keygen.c ntptime.c pps-api.c precision.c sht.c testrs6000.c \
- tickadj.c timetrim.c
-DIST_COMMON = README $(srcdir)/Makefile.in Makefile.am ansi2knr.1 \
- ansi2knr.c
-SOURCES = audio-pcm.c byteorder.c hist.c jitter.c kern.c longsize.c ntp-keygen.c ntptime.c pps-api.c precision.c sht.c testrs6000.c tickadj.c timetrim.c
-
-all: all-am
+#EXTRA_DIST= README TAGS
+EXTRA_DIST = ntp-keygen-opts.def ntp-keygen.1 ntp-keygen-opts.texi ntp-keygen-opts.menu
+BUILT_SOURCES = ntp-keygen-opts.c ntp-keygen-opts.h ntp-keygen.1 \
+ ntp-keygen-opts.texi ntp-keygen-opts.menu
+
+man_MANS = ntp-keygen.1
+run_ag = cd $(srcdir) && autogen -L ../include --writable
+std_def_list = $(top_srcdir)/include/debug-opt.def \
+ $(top_srcdir)/include/autogen-version.def \
+ $(top_srcdir)/include/copyright.def \
+ $(top_srcdir)/include/homerc.def \
+ $(top_srcdir)/include/version.def
+
+jitter_SOURCES = jitter.c jitter.h
+jitter_LDADD =
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
-.SUFFIXES: .c .o .obj
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+.SUFFIXES: .c .lo .o .obj
+$(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 util/Makefile'; \
cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu util/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+ $(AUTOMAKE) --foreign util/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
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(bindir)
+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
+ || test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \
- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
@@ -300,12 +353,16 @@ uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
- rm -f $(DESTDIR)$(bindir)/$$f; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
- -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
audio-pcm$(EXEEXT): $(audio_pcm_OBJECTS) $(audio_pcm_DEPENDENCIES)
@rm -f audio-pcm$(EXEEXT)
$(LINK) $(audio_pcm_LDFLAGS) $(audio_pcm_OBJECTS) $(audio_pcm_LDADD) $(LIBS)
@@ -342,6 +399,9 @@ sht$(EXEEXT): $(sht_OBJECTS) $(sht_DEPENDENCIES)
testrs6000$(EXEEXT): $(testrs6000_OBJECTS) $(testrs6000_DEPENDENCIES)
@rm -f testrs6000$(EXEEXT)
$(LINK) $(testrs6000_LDFLAGS) $(testrs6000_OBJECTS) $(testrs6000_LDADD) $(LIBS)
+tg$(EXEEXT): $(tg_OBJECTS) $(tg_DEPENDENCIES)
+ @rm -f tg$(EXEEXT)
+ $(LINK) $(tg_LDFLAGS) $(tg_OBJECTS) $(tg_LDADD) $(LIBS)
tickadj$(EXEEXT): $(tickadj_OBJECTS) $(tickadj_DEPENDENCIES)
@rm -f tickadj$(EXEEXT)
$(LINK) $(tickadj_LDFLAGS) $(tickadj_OBJECTS) $(tickadj_LDADD) $(LIBS)
@@ -350,12 +410,10 @@ timetrim$(EXEEXT): $(timetrim_OBJECTS) $(timetrim_DEPENDENCIES)
$(LINK) $(timetrim_LDFLAGS) $(timetrim_OBJECTS) $(timetrim_LDADD) $(LIBS)
mostlyclean-compile:
- -rm -f *.$(OBJEXT) core *.core
+ -rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
-
-ANSI2KNR = @ANSI2KNR@
ansi2knr: ansi2knr.$(OBJEXT)
$(LINK) ansi2knr.$(OBJEXT) $(LIBS)
ansi2knr.$(OBJEXT): $(CONFIG_HEADER)
@@ -373,35 +431,36 @@ mostlyclean-kr:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kern$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/longsize$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp-keygen$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp-keygen-opts$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntptime$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pps-api$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/precision$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sht$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testrs6000$U.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tg$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tickadj$U.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timetrim$U.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@ fi
+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
audio-pcm_.c: audio-pcm.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/audio-pcm.c; then echo $(srcdir)/audio-pcm.c; else echo audio-pcm.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
byteorder_.c: byteorder.c $(ANSI2KNR)
@@ -416,6 +475,8 @@ longsize_.c: longsize.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/longsize.c; then echo $(srcdir)/longsize.c; else echo longsize.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntp-keygen_.c: ntp-keygen.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntp-keygen.c; then echo $(srcdir)/ntp-keygen.c; else echo ntp-keygen.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+ntp-keygen-opts_.c: ntp-keygen-opts.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntp-keygen-opts.c; then echo $(srcdir)/ntp-keygen-opts.c; else echo ntp-keygen-opts.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
ntptime_.c: ntptime.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/ntptime.c; then echo $(srcdir)/ntptime.c; else echo ntptime.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
pps-api_.c: pps-api.c $(ANSI2KNR)
@@ -426,24 +487,76 @@ sht_.c: sht.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/sht.c; then echo $(srcdir)/sht.c; else echo sht.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
testrs6000_.c: testrs6000.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/testrs6000.c; then echo $(srcdir)/testrs6000.c; else echo testrs6000.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
+tg_.c: tg.c $(ANSI2KNR)
+ $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/tg.c; then echo $(srcdir)/tg.c; else echo tg.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
tickadj_.c: tickadj.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/tickadj.c; then echo $(srcdir)/tickadj.c; else echo tickadj.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
timetrim_.c: timetrim.c $(ANSI2KNR)
$(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) `if test -f $(srcdir)/timetrim.c; then echo $(srcdir)/timetrim.c; else echo timetrim.c; fi` | sed 's/^# \([0-9]\)/#line \1/' | $(ANSI2KNR) > $@ || rm -f $@
-audio-pcm_.$(OBJEXT) byteorder_.$(OBJEXT) hist_.$(OBJEXT) \
-jitter_.$(OBJEXT) kern_.$(OBJEXT) longsize_.$(OBJEXT) \
-ntp-keygen_.$(OBJEXT) ntptime_.$(OBJEXT) pps-api_.$(OBJEXT) \
-precision_.$(OBJEXT) sht_.$(OBJEXT) testrs6000_.$(OBJEXT) \
-tickadj_.$(OBJEXT) timetrim_.$(OBJEXT) : $(ANSI2KNR)
+audio-pcm_.$(OBJEXT) audio-pcm_.lo byteorder_.$(OBJEXT) byteorder_.lo \
+hist_.$(OBJEXT) hist_.lo jitter_.$(OBJEXT) jitter_.lo kern_.$(OBJEXT) \
+kern_.lo longsize_.$(OBJEXT) longsize_.lo ntp-keygen_.$(OBJEXT) \
+ntp-keygen_.lo ntp-keygen-opts_.$(OBJEXT) ntp-keygen-opts_.lo \
+ntptime_.$(OBJEXT) ntptime_.lo pps-api_.$(OBJEXT) pps-api_.lo \
+precision_.$(OBJEXT) precision_.lo sht_.$(OBJEXT) sht_.lo \
+testrs6000_.$(OBJEXT) testrs6000_.lo tg_.$(OBJEXT) tg_.lo \
+tickadj_.$(OBJEXT) tickadj_.lo timetrim_.$(OBJEXT) timetrim_.lo : \
+$(ANSI2KNR)
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
uninstall-info-am:
-
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
+install-man1: $(man1_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+ else file=$$i; fi; \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
+uninstall-man1:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.1*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 1*) ;; \
+ *) ext='1' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
+ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+ done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -453,6 +566,7 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
+tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -464,10 +578,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- test -z "$(ETAGS_ARGS)$$tags$$unique" \
- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique
-
+ 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)
@@ -490,10 +605,6 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
@@ -507,7 +618,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkinstalldirs) "$(distdir)$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -523,12 +634,15 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
-check: check-am
-all-am: Makefile $(ANSI2KNR) $(PROGRAMS)
-
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(ANSI2KNR) $(PROGRAMS) $(MANS)
installdirs:
- $(mkinstalldirs) $(DESTDIR)$(bindir)
-install: install-am
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
+ test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
@@ -539,7 +653,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- INSTALL_STRIP_FLAG=-s \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -547,49 +661,52 @@ mostlyclean-generic:
clean-generic:
distclean-generic:
- -rm -f $(CONFIG_CLEAN_FILES)
+ -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."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
clean: clean-am
-clean-am: clean-binPROGRAMS clean-generic clean-krextra mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-krextra clean-libtool \
+ mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+ distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
+html: html-am
+
info: info-am
info-am:
-install-data-am:
+install-data-am: install-man
install-exec-am: install-binPROGRAMS
install-info: install-info-am
-install-man:
+install-man: install-man1
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
-
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr
+mostlyclean-am: mostlyclean-compile mostlyclean-generic mostlyclean-kr \
+ mostlyclean-libtool
pdf: pdf-am
@@ -599,19 +716,34 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-man
+
+uninstall-man: uninstall-man1
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
- clean-generic clean-krextra ctags distclean distclean-compile \
- distclean-generic distclean-tags distdir dvi dvi-am info \
- info-am install install-am install-binPROGRAMS install-data \
+ clean-generic clean-krextra clean-libtool ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-binPROGRAMS 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 \
+ install-info-am install-man install-man1 install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-kr pdf pdf-am ps ps-am tags \
- uninstall uninstall-am uninstall-binPROGRAMS uninstall-info-am
+ mostlyclean-generic mostlyclean-kr mostlyclean-libtool pdf \
+ pdf-am ps ps-am tags uninstall uninstall-am \
+ uninstall-binPROGRAMS uninstall-info-am uninstall-man \
+ uninstall-man1
+
+
+$(srcdir)/ntp-keygen-opts.h: $(srcdir)/ntp-keygen-opts.c
+$(srcdir)/ntp-keygen-opts.c: $(srcdir)/ntp-keygen-opts.def $(std_def_list)
+ $(run_ag) ntp-keygen-opts.def
+
+$(srcdir)/ntp-keygen.1: $(srcdir)/ntp-keygen-opts.def $(std_def_list)
+ $(run_ag) -Tagman1.tpl -bntp-keygen ntp-keygen-opts.def
+$(srcdir)/ntp-keygen-opts.texi $(srcdir)/ntp-keygen-opts.menu: $(srcdir)/ntp-keygen-opts.def $(std_def_list)
+ $(run_ag) -Taginfo.tpl -DLEVEL=section ntp-keygen-opts.def
../libntp/libntp.a:
cd ../libntp && $(MAKE)
diff --git a/contrib/ntp/util/ansi2knr.c b/contrib/ntp/util/ansi2knr.c
index 1b32b06..a042674 100644
--- a/contrib/ntp/util/ansi2knr.c
+++ b/contrib/ntp/util/ansi2knr.c
@@ -64,7 +64,7 @@ program under the GPL.
lpd 2000-04-12 backs out Eggert's changes because of bugs:
- concatlits didn't declare the type of its bufend argument;
- - concatlits didn't't recognize when it was inside a comment;
+ - concatlits didn't recognize when it was inside a comment;
- scanstring could scan backward past the beginning of the string; when
- the check for \ + newline in scanstring was unnecessary.
diff --git a/contrib/ntp/util/hist.c b/contrib/ntp/util/hist.c
index c9763ce..9453b6c 100644
--- a/contrib/ntp/util/hist.c
+++ b/contrib/ntp/util/hist.c
@@ -7,24 +7,20 @@
* runs backwards.
*/
-#if 0
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include "ntp_types.h"
-#endif
#include <stdio.h>
#include <stdlib.h>
-#include <time.h>
#define NBUF 100001 /* size of basic histogram */
#define NSRT 20000 /* size of overflow histogram */
#define NCNT (600 * 1000000) /* sample interval (us) */
-extern int col(hrtime_t *, hrtime_t *);
-extern hrtime_t gethrtime(void);
+int col P((long *, long *));
int
main(
@@ -32,8 +28,10 @@ main(
char *argv[]
)
{
+ struct timeval ts, tr, tp;
+ struct timezone tzp;
int i, j, n;
- hrtime_t t, u, v, w, gtod[NBUF], ovfl[NSRT];
+ long t, u, v, w, gtod[NBUF], ovfl[NSRT];
/*
* Force pages into memory
@@ -47,10 +45,12 @@ main(
* Construct histogram
*/
n = 0;
- t = gethrtime();
+ gettimeofday(&ts, &tzp);
+ t = ts.tv_sec * 1000000 + ts.tv_usec;
v = t;
while (1) {
- u = gethirestime();
+ gettimeofday(&tr, &tzp);
+ u = tr.tv_sec * 1000000 + tr.tv_usec;
if (u - v > NCNT)
break;
w = u - t;
@@ -66,6 +66,7 @@ main(
} else {
gtod[w]++;
}
+ ts = tr;
t = u;
}
@@ -78,7 +79,13 @@ main(
}
if (n == 0)
return;
- qsort((char *)ovfl, (size_t)n, sizeof(hrtime_t), col);
+ qsort(
+#ifdef QSORT_USES_VOID_P
+ (void *)
+#else
+ (char *)
+#endif
+ ovfl, (size_t)n, sizeof(long), col);
w = 0;
j = 0;
for (i = 0; i < n; i++) {
@@ -98,8 +105,8 @@ main(
int
col(
- hrtime_t *x,
- hrtime_t *y
+ long *x,
+ long *y
)
{
return (*x - *y);
diff --git a/contrib/ntp/util/jitter.c b/contrib/ntp/util/jitter.c
index 462fe12..dda2655 100644
--- a/contrib/ntp/util/jitter.c
+++ b/contrib/ntp/util/jitter.c
@@ -1,16 +1,31 @@
/*
* This program can be used to calibrate the clock reading jitter of a
* particular CPU and operating system. It first tickles every element
- * of an array, in order to force pages into memory, then repeatedly calls
- * gettimeofday() and, finally, writes out the time values for later
- * analysis. From this you can determine the jitter and if the clock ever
- * runs backwards.
+ * of an array, in order to force pages into memory, then repeatedly
+ * reads the system clock and, finally, writes out the time values for
+ * later analysis. From this you can determine the jitter and if the
+ * clock ever runs backwards.
*/
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
#include <stdio.h>
#include <sys/time.h>
+#include <stdlib.h>
+#include "jitter.h"
+
+#define NBUF 80002
+#define FRAC 4294967296. /* a bbbbillion */
+#define JAN_1970 2208988800UL /* Unix base epoch */
+#define CLOCK_GETTIME /* Solaris hires clock */
-#define NBUF 20002
+int debug;
+char progname[10];
+double sys_residual;
+double average;
+void sys_gettime(l_fp *);
int
main(
@@ -18,11 +33,9 @@ main(
char *argv[]
)
{
- struct timeval ts, tr;
- struct timezone tzp;
- long temp, j, i, gtod[NBUF];
-
- gettimeofday(&ts, &tzp);
+ l_fp tr;
+ int i, j;
+ double dtemp, gtod[NBUF];
/*
* Force pages into memory
@@ -34,19 +47,18 @@ main(
* Construct gtod array
*/
for (i = 0; i < NBUF; i ++) {
- gettimeofday(&tr, &tzp);
- gtod[i] = (tr.tv_sec - ts.tv_sec) * 1000000 + tr.tv_usec;
+ get_systime(&tr);
+ LFPTOD(&tr, gtod[i]);
}
/*
- * Write out gtod array for later processing with S
+ * Write out gtod array for later processing with Matlab
*/
+ average = 0;
for (i = 0; i < NBUF - 2; i++) {
- /*
- printf("%lu\n", gtod[i]);
- */
gtod[i] = gtod[i + 1] - gtod[i];
- printf("%lu\n", gtod[i]);
+ printf("%13.9f\n", gtod[i]);
+ average += gtod[i];
}
/*
@@ -55,17 +67,71 @@ main(
for (i = 0; i < NBUF - 2; i++) {
for (j = 0; j <= i; j++) {
if (gtod[j] > gtod[i]) {
- temp = gtod[j];
+ dtemp = gtod[j];
gtod[j] = gtod[i];
- gtod[i] = temp;
+ gtod[i] = dtemp;
}
}
}
+ average = average / (NBUF - 2);
+ fprintf(stderr, "Average %13.9f\n", average);
fprintf(stderr, "First rank\n");
for (i = 0; i < 10; i++)
- fprintf(stderr, "%10ld%10ld\n", i, gtod[i]);
+ fprintf(stderr, "%2d %13.9f\n", i, gtod[i]);
fprintf(stderr, "Last rank\n");
for (i = NBUF - 12; i < NBUF - 2; i++)
- fprintf(stderr, "%10ld%10ld\n", i, gtod[i]);
+ fprintf(stderr, "%2d %13.9f\n", i, gtod[i]);
exit(0);
}
+
+
+/*
+ * get_systime - return system time in NTP timestamp format.
+ */
+void
+get_systime(
+ l_fp *now /* system time */
+ )
+{
+ double dtemp;
+
+#if defined(HAVE_CLOCK_GETTIME) || defined(HAVE_GETCLOCK)
+ struct timespec ts; /* seconds and nanoseconds */
+
+ /*
+ * Convert Unix clock from seconds and nanoseconds to seconds.
+ */
+# ifdef HAVE_CLOCK_GETTIME
+ clock_gettime(CLOCK_REALTIME, &ts);
+# else
+ getclock(TIMEOFDAY, &ts);
+# endif
+ now->l_i = ts.tv_sec + JAN_1970;
+ dtemp = ts.tv_nsec / 1e9;
+
+#else /* HAVE_CLOCK_GETTIME || HAVE_GETCLOCK */
+ struct timeval tv; /* seconds and microseconds */
+
+ /*
+ * Convert Unix clock from seconds and microseconds to seconds.
+ */
+ gettimeofday(&tv, NULL);
+ now->l_i = tv.tv_sec + JAN_1970;
+ dtemp = tv.tv_usec / 1e6;
+
+#endif /* HAVE_CLOCK_GETTIME || HAVE_GETCLOCK */
+
+ /*
+ * Renormalize to seconds past 1900 and fraction.
+ */
+ dtemp += sys_residual;
+ if (dtemp >= 1) {
+ dtemp -= 1;
+ now->l_i++;
+ } else if (dtemp < -1) {
+ dtemp += 1;
+ now->l_i--;
+ }
+ dtemp *= FRAC;
+ now->l_uf = (u_int32)dtemp;
+}
diff --git a/contrib/ntp/util/jitter.h b/contrib/ntp/util/jitter.h
new file mode 100644
index 0000000..d0fba44
--- /dev/null
+++ b/contrib/ntp/util/jitter.h
@@ -0,0 +1,412 @@
+/*
+ * ntp_types.h - defines how int32 and u_int32 are treated.
+ * For 64 bit systems like the DEC Alpha, they have to be defined
+ * as int and u_int.
+ * For 32 bit systems, define them as long and u_long
+ */
+#define SIZEOF_INT 4
+
+/*
+ * Set up for prototyping
+ */
+#ifndef P
+#if defined(__STDC__) || defined(HAVE_PROTOTYPES)
+#define P(x) x
+#else /* not __STDC__ and not HAVE_PROTOTYPES */
+#define P(x) ()
+#endif /* not __STDC__ and HAVE_PROTOTYPES */
+#endif /* P */
+
+/*
+ * VMS DECC (v4.1), {u_char,u_short,u_long} are only in SOCKET.H,
+ * and u_int isn't defined anywhere
+ */
+#if defined(VMS)
+#include <socket.h>
+typedef unsigned int u_int;
+/*
+ * Note: VMS DECC has long == int (even on __alpha),
+ * so the distinction below doesn't matter
+ */
+#endif /* VMS */
+
+#if (SIZEOF_INT == 4)
+# ifndef int32
+# define int32 int
+# endif
+# ifndef u_int32
+# define u_int32 unsigned int
+# endif
+#else /* not sizeof(int) == 4 */
+# if (SIZEOF_LONG == 4)
+# else /* not sizeof(long) == 4 */
+# ifndef int32
+# define int32 long
+# endif
+# ifndef u_int32
+# define u_int32 unsigned long
+# endif
+# endif /* not sizeof(long) == 4 */
+# include "Bletch: what's 32 bits on this machine?"
+#endif /* not sizeof(int) == 4 */
+
+typedef unsigned short associd_t; /* association ID */
+typedef u_int32 keyid_t; /* cryptographic key ID */
+typedef u_int32 tstamp_t; /* NTP seconds timestamp */
+
+/*
+ * NTP uses two fixed point formats. The first (l_fp) is the "long"
+ * format and is 64 bits long with the decimal between bits 31 and 32.
+ * This is used for time stamps in the NTP packet header (in network
+ * byte order) and for internal computations of offsets (in local host
+ * byte order). We use the same structure for both signed and unsigned
+ * values, which is a big hack but saves rewriting all the operators
+ * twice. Just to confuse this, we also sometimes just carry the
+ * fractional part in calculations, in both signed and unsigned forms.
+ * Anyway, an l_fp looks like:
+ *
+ * 0 1 2 3
+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | Integral Part |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | Fractional Part |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *
+ */
+typedef struct {
+ union {
+ u_int32 Xl_ui;
+ int32 Xl_i;
+ } Ul_i;
+ union {
+ u_int32 Xl_uf;
+ int32 Xl_f;
+ } Ul_f;
+} l_fp;
+
+#define l_ui Ul_i.Xl_ui /* unsigned integral part */
+#define l_i Ul_i.Xl_i /* signed integral part */
+#define l_uf Ul_f.Xl_uf /* unsigned fractional part */
+#define l_f Ul_f.Xl_f /* signed fractional part */
+
+/*
+ * Fractional precision (of an l_fp) is actually the number of
+ * bits in a long.
+ */
+#define FRACTION_PREC (32)
+
+
+/*
+ * The second fixed point format is 32 bits, with the decimal between
+ * bits 15 and 16. There is a signed version (s_fp) and an unsigned
+ * version (u_fp). This is used to represent synchronizing distance
+ * and synchronizing dispersion in the NTP packet header (again, in
+ * network byte order) and internally to hold both distance and
+ * dispersion values (in local byte order). In network byte order
+ * it looks like:
+ *
+ * 0 1 2 3
+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | Integer Part | Fraction Part |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ *
+ */
+typedef int32 s_fp;
+typedef u_int32 u_fp;
+
+/*
+ * A unit second in fp format. Actually 2**(half_the_bits_in_a_long)
+ */
+#define FP_SECOND (0x10000)
+
+/*
+ * Byte order conversions
+ */
+#define HTONS_FP(x) (htonl(x))
+#define HTONL_FP(h, n) do { (n)->l_ui = htonl((h)->l_ui); \
+ (n)->l_uf = htonl((h)->l_uf); } while (0)
+#define NTOHS_FP(x) (ntohl(x))
+#define NTOHL_FP(n, h) do { (h)->l_ui = ntohl((n)->l_ui); \
+ (h)->l_uf = ntohl((n)->l_uf); } while (0)
+#define NTOHL_MFP(ni, nf, hi, hf) \
+ do { (hi) = ntohl(ni); (hf) = ntohl(nf); } while (0)
+#define HTONL_MFP(hi, hf, ni, nf) \
+ do { (ni) = ntohl(hi); (nf) = ntohl(hf); } while (0)
+
+/* funny ones. Converts ts fractions to net order ts */
+#define HTONL_UF(uf, nts) \
+ do { (nts)->l_ui = 0; (nts)->l_uf = htonl(uf); } while (0)
+#define HTONL_F(f, nts) do { (nts)->l_uf = htonl(f); \
+ if ((f) & 0x80000000) \
+ (nts)->l_i = -1; \
+ else \
+ (nts)->l_i = 0; \
+ } while (0)
+
+/*
+ * Conversions between the two fixed point types
+ */
+#define MFPTOFP(x_i, x_f) (((x_i) >= 0x00010000) ? 0x7fffffff : \
+ (((x_i) <= -0x00010000) ? 0x80000000 : \
+ (((x_i)<<16) | (((x_f)>>16)&0xffff))))
+#define LFPTOFP(v) MFPTOFP((v)->l_i, (v)->l_f)
+
+#define UFPTOLFP(x, v) ((v)->l_ui = (u_fp)(x)>>16, (v)->l_uf = (x)<<16)
+#define FPTOLFP(x, v) (UFPTOLFP((x), (v)), (x) < 0 ? (v)->l_ui -= 0x10000 : 0)
+
+#define MAXLFP(v) ((v)->l_ui = 0x7fffffff, (v)->l_uf = 0xffffffff)
+#define MINLFP(v) ((v)->l_ui = 0x80000000, (v)->l_uf = 0)
+
+/*
+ * Primitive operations on long fixed point values. If these are
+ * reminiscent of assembler op codes it's only because some may
+ * be replaced by inline assembler for particular machines someday.
+ * These are the (kind of inefficient) run-anywhere versions.
+ */
+#define M_NEG(v_i, v_f) /* v = -v */ \
+ do { \
+ if ((v_f) == 0) \
+ (v_i) = -((s_fp)(v_i)); \
+ else { \
+ (v_f) = -((s_fp)(v_f)); \
+ (v_i) = ~(v_i); \
+ } \
+ } while(0)
+
+#define M_NEGM(r_i, r_f, a_i, a_f) /* r = -a */ \
+ do { \
+ if ((a_f) == 0) { \
+ (r_f) = 0; \
+ (r_i) = -(a_i); \
+ } else { \
+ (r_f) = -(a_f); \
+ (r_i) = ~(a_i); \
+ } \
+ } while(0)
+
+#define M_ADD(r_i, r_f, a_i, a_f) /* r += a */ \
+ do { \
+ register u_int32 lo_tmp; \
+ register u_int32 hi_tmp; \
+ \
+ lo_tmp = ((r_f) & 0xffff) + ((a_f) & 0xffff); \
+ hi_tmp = (((r_f) >> 16) & 0xffff) + (((a_f) >> 16) & 0xffff); \
+ if (lo_tmp & 0x10000) \
+ hi_tmp++; \
+ (r_f) = ((hi_tmp & 0xffff) << 16) | (lo_tmp & 0xffff); \
+ \
+ (r_i) += (a_i); \
+ if (hi_tmp & 0x10000) \
+ (r_i)++; \
+ } while (0)
+
+#define M_ADD3(r_ovr, r_i, r_f, a_ovr, a_i, a_f) /* r += a, three word */ \
+ do { \
+ register u_int32 lo_tmp; \
+ register u_int32 hi_tmp; \
+ \
+ lo_tmp = ((r_f) & 0xffff) + ((a_f) & 0xffff); \
+ hi_tmp = (((r_f) >> 16) & 0xffff) + (((a_f) >> 16) & 0xffff); \
+ if (lo_tmp & 0x10000) \
+ hi_tmp++; \
+ (r_f) = ((hi_tmp & 0xffff) << 16) | (lo_tmp & 0xffff); \
+ \
+ lo_tmp = ((r_i) & 0xffff) + ((a_i) & 0xffff); \
+ if (hi_tmp & 0x10000) \
+ lo_tmp++; \
+ hi_tmp = (((r_i) >> 16) & 0xffff) + (((a_i) >> 16) & 0xffff); \
+ if (lo_tmp & 0x10000) \
+ hi_tmp++; \
+ (r_i) = ((hi_tmp & 0xffff) << 16) | (lo_tmp & 0xffff); \
+ \
+ (r_ovr) += (a_ovr); \
+ if (hi_tmp & 0x10000) \
+ (r_ovr)++; \
+ } while (0)
+
+#define M_SUB(r_i, r_f, a_i, a_f) /* r -= a */ \
+ do { \
+ register u_int32 lo_tmp; \
+ register u_int32 hi_tmp; \
+ \
+ if ((a_f) == 0) { \
+ (r_i) -= (a_i); \
+ } else { \
+ lo_tmp = ((r_f) & 0xffff) + ((-((s_fp)(a_f))) & 0xffff); \
+ hi_tmp = (((r_f) >> 16) & 0xffff) \
+ + (((-((s_fp)(a_f))) >> 16) & 0xffff); \
+ if (lo_tmp & 0x10000) \
+ hi_tmp++; \
+ (r_f) = ((hi_tmp & 0xffff) << 16) | (lo_tmp & 0xffff); \
+ \
+ (r_i) += ~(a_i); \
+ if (hi_tmp & 0x10000) \
+ (r_i)++; \
+ } \
+ } while (0)
+
+#define M_RSHIFTU(v_i, v_f) /* v >>= 1, v is unsigned */ \
+ do { \
+ (v_f) = (u_int32)(v_f) >> 1; \
+ if ((v_i) & 01) \
+ (v_f) |= 0x80000000; \
+ (v_i) = (u_int32)(v_i) >> 1; \
+ } while (0)
+
+#define M_RSHIFT(v_i, v_f) /* v >>= 1, v is signed */ \
+ do { \
+ (v_f) = (u_int32)(v_f) >> 1; \
+ if ((v_i) & 01) \
+ (v_f) |= 0x80000000; \
+ if ((v_i) & 0x80000000) \
+ (v_i) = ((v_i) >> 1) | 0x80000000; \
+ else \
+ (v_i) = (v_i) >> 1; \
+ } while (0)
+
+#define M_LSHIFT(v_i, v_f) /* v <<= 1 */ \
+ do { \
+ (v_i) <<= 1; \
+ if ((v_f) & 0x80000000) \
+ (v_i) |= 0x1; \
+ (v_f) <<= 1; \
+ } while (0)
+
+#define M_LSHIFT3(v_ovr, v_i, v_f) /* v <<= 1, with overflow */ \
+ do { \
+ (v_ovr) <<= 1; \
+ if ((v_i) & 0x80000000) \
+ (v_ovr) |= 0x1; \
+ (v_i) <<= 1; \
+ if ((v_f) & 0x80000000) \
+ (v_i) |= 0x1; \
+ (v_f) <<= 1; \
+ } while (0)
+
+#define M_ADDUF(r_i, r_f, uf) /* r += uf, uf is u_int32 fraction */ \
+ M_ADD((r_i), (r_f), 0, (uf)) /* let optimizer worry about it */
+
+#define M_SUBUF(r_i, r_f, uf) /* r -= uf, uf is u_int32 fraction */ \
+ M_SUB((r_i), (r_f), 0, (uf)) /* let optimizer worry about it */
+
+#define M_ADDF(r_i, r_f, f) /* r += f, f is a int32 fraction */ \
+ do { \
+ if ((f) > 0) \
+ M_ADD((r_i), (r_f), 0, (f)); \
+ else if ((f) < 0) \
+ M_ADD((r_i), (r_f), (-1), (f));\
+ } while(0)
+
+#define M_ISNEG(v_i, v_f) /* v < 0 */ \
+ (((v_i) & 0x80000000) != 0)
+
+#define M_ISHIS(a_i, a_f, b_i, b_f) /* a >= b unsigned */ \
+ (((u_int32)(a_i)) > ((u_int32)(b_i)) || \
+ ((a_i) == (b_i) && ((u_int32)(a_f)) >= ((u_int32)(b_f))))
+
+#define M_ISGEQ(a_i, a_f, b_i, b_f) /* a >= b signed */ \
+ (((int32)(a_i)) > ((int32)(b_i)) || \
+ ((a_i) == (b_i) && ((u_int32)(a_f)) >= ((u_int32)(b_f))))
+
+#define M_ISEQU(a_i, a_f, b_i, b_f) /* a == b unsigned */ \
+ ((a_i) == (b_i) && (a_f) == (b_f))
+
+/*
+ * Operations on the long fp format
+ */
+#define L_ADD(r, a) M_ADD((r)->l_ui, (r)->l_uf, (a)->l_ui, (a)->l_uf)
+#define L_SUB(r, a) M_SUB((r)->l_ui, (r)->l_uf, (a)->l_ui, (a)->l_uf)
+#define L_NEG(v) M_NEG((v)->l_ui, (v)->l_uf)
+#define L_ADDUF(r, uf) M_ADDUF((r)->l_ui, (r)->l_uf, (uf))
+#define L_SUBUF(r, uf) M_SUBUF((r)->l_ui, (r)->l_uf, (uf))
+#define L_ADDF(r, f) M_ADDF((r)->l_ui, (r)->l_uf, (f))
+#define L_RSHIFT(v) M_RSHIFT((v)->l_i, (v)->l_uf)
+#define L_RSHIFTU(v) M_RSHIFT((v)->l_ui, (v)->l_uf)
+#define L_LSHIFT(v) M_LSHIFT((v)->l_ui, (v)->l_uf)
+#define L_CLR(v) ((v)->l_ui = (v)->l_uf = 0)
+
+#define L_ISNEG(v) (((v)->l_ui & 0x80000000) != 0)
+#define L_ISZERO(v) ((v)->l_ui == 0 && (v)->l_uf == 0)
+#define L_ISHIS(a, b) ((a)->l_ui > (b)->l_ui || \
+ ((a)->l_ui == (b)->l_ui && (a)->l_uf >= (b)->l_uf))
+#define L_ISGEQ(a, b) ((a)->l_i > (b)->l_i || \
+ ((a)->l_i == (b)->l_i && (a)->l_uf >= (b)->l_uf))
+#define L_ISEQU(a, b) M_ISEQU((a)->l_ui, (a)->l_uf, (b)->l_ui, (b)->l_uf)
+
+/*
+ * s_fp/double and u_fp/double conversions
+ */
+#define FRIC 65536. /* 2^16 as a double */
+#define DTOFP(r) ((s_fp)((r) * FRIC))
+#define DTOUFP(r) ((u_fp)((r) * FRIC))
+#define FPTOD(r) ((double)(r) / FRIC)
+
+/*
+ * l_fp/double conversions
+ */
+#define FRAC 4294967296. /* 2^32 as a double */
+#define M_DTOLFP(d, r_i, r_uf) /* double to l_fp */ \
+ do { \
+ register double d_tmp; \
+ \
+ d_tmp = (d); \
+ if (d_tmp < 0) { \
+ d_tmp = -d_tmp; \
+ (r_i) = (int32)(d_tmp); \
+ (r_uf) = (u_int32)(((d_tmp) - (double)(r_i)) * FRAC); \
+ M_NEG((r_i), (r_uf)); \
+ } else { \
+ (r_i) = (int32)(d_tmp); \
+ (r_uf) = (u_int32)(((d_tmp) - (double)(r_i)) * FRAC); \
+ } \
+ } while (0)
+#define M_LFPTOD(r_i, r_uf, d) /* l_fp to double */ \
+ do { \
+ register l_fp l_tmp; \
+ \
+ l_tmp.l_i = (r_i); \
+ l_tmp.l_f = (r_uf); \
+ if (l_tmp.l_i < 0) { \
+ M_NEG(l_tmp.l_i, l_tmp.l_uf); \
+ (d) = -((double)l_tmp.l_i + ((double)l_tmp.l_uf) / FRAC); \
+ } else { \
+ (d) = (double)l_tmp.l_i + ((double)l_tmp.l_uf) / FRAC; \
+ } \
+ } while (0)
+#define DTOLFP(d, v) M_DTOLFP((d), (v)->l_ui, (v)->l_uf)
+#define LFPTOD(v, d) M_LFPTOD((v)->l_ui, (v)->l_uf, (d))
+
+/*
+ * Prototypes
+ */
+#if 0
+extern char * dofptoa P((u_fp, int, short, int));
+extern char * dolfptoa P((u_long, u_long, int, short, int));
+#endif
+
+extern int atolfp P((const char *, l_fp *));
+extern int buftvtots P((const char *, l_fp *));
+extern char * fptoa P((s_fp, short));
+extern char * fptoms P((s_fp, short));
+extern int hextolfp P((const char *, l_fp *));
+extern void gpstolfp P((int, int, unsigned long, l_fp *));
+extern int mstolfp P((const char *, l_fp *));
+extern char * prettydate P((l_fp *));
+extern char * gmprettydate P((l_fp *));
+extern char * uglydate P((l_fp *));
+extern void mfp_mul P((int32 *, u_int32 *, int32, u_int32, int32, u_int32));
+
+extern void get_systime P((l_fp *));
+extern int step_systime P((double));
+extern int adj_systime P((double));
+
+#define lfptoa(_fpv, _ndec) mfptoa((_fpv)->l_ui, (_fpv)->l_uf, (_ndec))
+#define lfptoms(_fpv, _ndec) mfptoms((_fpv)->l_ui, (_fpv)->l_uf, (_ndec))
+
+#define ufptoa(_fpv, _ndec) dofptoa((_fpv), 0, (_ndec), 0)
+#define ufptoms(_fpv, _ndec) dofptoa((_fpv), 0, (_ndec), 1)
+#define ulfptoa(_fpv, _ndec) dolfptoa((_fpv)->l_ui, (_fpv)->l_uf, 0, (_ndec), 0)
+#define ulfptoms(_fpv, _ndec) dolfptoa((_fpv)->l_ui, (_fpv)->l_uf, 0, (_ndec), 1)
+#define umfptoa(_fpi, _fpf, _ndec) dolfptoa((_fpi), (_fpf), 0, (_ndec), 0)
diff --git a/contrib/ntp/util/ntp-keygen-opts.c b/contrib/ntp/util/ntp-keygen-opts.c
new file mode 100644
index 0000000..edc9c5b
--- /dev/null
+++ b/contrib/ntp/util/ntp-keygen-opts.c
@@ -0,0 +1,1044 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (ntp-keygen-opts.c)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:27:33 AM EDT
+ * From the definitions ntp-keygen-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This source file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * ntp-keygen author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * ntp-keygen copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+
+
+#include <limits.h>
+#include <stdio.h>
+#define OPTION_CODE_COMPILE 1
+#include "ntp-keygen-opts.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+tSCC zCopyright[] =
+ "ntp-keygen copyright (c) 1970-2008 David L. Mills and/or others, all rights reserved";
+tSCC zCopyrightNotice[] =
+
+/* extracted from ../include/copyright.def near line 8 */
+"see html/copyright.html";
+extern tUsageProc optionUsage;
+
+/*
+ * global included definitions
+ */
+#include <stdlib.h>
+#ifdef __windows
+ extern int atoi(const char*);
+#else
+# include <stdlib.h>
+#endif
+
+#ifndef NULL
+# define NULL 0
+#endif
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+#endif
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE 1
+#endif
+/*
+ * Certificate option description:
+ */
+#ifdef OPENSSL
+tSCC zCertificateText[] =
+ "certificate scheme";
+tSCC zCertificate_NAME[] = "CERTIFICATE";
+tSCC zCertificate_Name[] = "certificate";
+#define CERTIFICATE_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+#else /* disable Certificate */
+#define VALUE_OPT_CERTIFICATE NO_EQUIVALENT
+#define CERTIFICATE_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zCertificateText NULL
+#define zCertificate_NAME NULL
+#define zCertificate_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Debug_Level option description:
+ */
+#ifdef DEBUG
+tSCC zDebug_LevelText[] =
+ "Increase output debug message level";
+tSCC zDebug_Level_NAME[] = "DEBUG_LEVEL";
+tSCC zDebug_Level_Name[] = "debug-level";
+#define DEBUG_LEVEL_FLAGS (OPTST_DISABLED)
+
+#else /* disable Debug_Level */
+#define VALUE_OPT_DEBUG_LEVEL NO_EQUIVALENT
+#define DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zDebug_LevelText NULL
+#define zDebug_Level_NAME NULL
+#define zDebug_Level_Name NULL
+#endif /* DEBUG */
+
+/*
+ * Set_Debug_Level option description:
+ */
+#ifdef DEBUG
+tSCC zSet_Debug_LevelText[] =
+ "Set the output debug message level";
+tSCC zSet_Debug_Level_NAME[] = "SET_DEBUG_LEVEL";
+tSCC zSet_Debug_Level_Name[] = "set-debug-level";
+#define SET_DEBUG_LEVEL_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+#else /* disable Set_Debug_Level */
+#define VALUE_OPT_SET_DEBUG_LEVEL NO_EQUIVALENT
+#define SET_DEBUG_LEVEL_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zSet_Debug_LevelText NULL
+#define zSet_Debug_Level_NAME NULL
+#define zSet_Debug_Level_Name NULL
+#endif /* DEBUG */
+
+/*
+ * Id_Key option description:
+ */
+#ifdef OPENSSL
+tSCC zId_KeyText[] =
+ "Write identity keys";
+tSCC zId_Key_NAME[] = "ID_KEY";
+tSCC zId_Key_Name[] = "id-key";
+#define ID_KEY_FLAGS (OPTST_DISABLED)
+
+#else /* disable Id_Key */
+#define VALUE_OPT_ID_KEY NO_EQUIVALENT
+#define ID_KEY_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zId_KeyText NULL
+#define zId_Key_NAME NULL
+#define zId_Key_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Gq_Params option description:
+ */
+#ifdef OPENSSL
+tSCC zGq_ParamsText[] =
+ "Generate GQ parameters and keys";
+tSCC zGq_Params_NAME[] = "GQ_PARAMS";
+tSCC zGq_Params_Name[] = "gq-params";
+#define GQ_PARAMS_FLAGS (OPTST_DISABLED)
+
+#else /* disable Gq_Params */
+#define VALUE_OPT_GQ_PARAMS NO_EQUIVALENT
+#define GQ_PARAMS_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zGq_ParamsText NULL
+#define zGq_Params_NAME NULL
+#define zGq_Params_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Gq_Keys option description:
+ */
+#ifdef OPENSSL
+tSCC zGq_KeysText[] =
+ "update GQ keys";
+tSCC zGq_Keys_NAME[] = "GQ_KEYS";
+tSCC zGq_Keys_Name[] = "gq-keys";
+#define GQ_KEYS_FLAGS (OPTST_DISABLED)
+
+#else /* disable Gq_Keys */
+#define VALUE_OPT_GQ_KEYS NO_EQUIVALENT
+#define GQ_KEYS_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zGq_KeysText NULL
+#define zGq_Keys_NAME NULL
+#define zGq_Keys_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Host_Key option description:
+ */
+#ifdef OPENSSL
+tSCC zHost_KeyText[] =
+ "generate RSA host key";
+tSCC zHost_Key_NAME[] = "HOST_KEY";
+tSCC zHost_Key_Name[] = "host-key";
+#define HOST_KEY_FLAGS (OPTST_DISABLED)
+
+#else /* disable Host_Key */
+#define VALUE_OPT_HOST_KEY NO_EQUIVALENT
+#define HOST_KEY_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zHost_KeyText NULL
+#define zHost_Key_NAME NULL
+#define zHost_Key_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Iffkey option description:
+ */
+#ifdef OPENSSL
+tSCC zIffkeyText[] =
+ "generate IFF parameters";
+tSCC zIffkey_NAME[] = "IFFKEY";
+tSCC zIffkey_Name[] = "iffkey";
+#define IFFKEY_FLAGS (OPTST_DISABLED)
+
+#else /* disable Iffkey */
+#define VALUE_OPT_IFFKEY NO_EQUIVALENT
+#define IFFKEY_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zIffkeyText NULL
+#define zIffkey_NAME NULL
+#define zIffkey_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Issuer_Name option description:
+ */
+#ifdef OPENSSL
+tSCC zIssuer_NameText[] =
+ "set issuer name";
+tSCC zIssuer_Name_NAME[] = "ISSUER_NAME";
+tSCC zIssuer_Name_Name[] = "issuer-name";
+#define ISSUER_NAME_FLAGS (OPTST_DISABLED)
+
+#else /* disable Issuer_Name */
+#define VALUE_OPT_ISSUER_NAME NO_EQUIVALENT
+#define ISSUER_NAME_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zIssuer_NameText NULL
+#define zIssuer_Name_NAME NULL
+#define zIssuer_Name_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Md5key option description:
+ */
+tSCC zMd5keyText[] =
+ "generate MD5 keys";
+tSCC zMd5key_NAME[] = "MD5KEY";
+tSCC zMd5key_Name[] = "md5key";
+#define MD5KEY_FLAGS (OPTST_DISABLED)
+
+/*
+ * Modulus option description:
+ */
+#ifdef OPENSSL
+tSCC zModulusText[] =
+ "modulus";
+tSCC zModulus_NAME[] = "MODULUS";
+tSCC zModulus_Name[] = "modulus";
+#define MODULUS_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+#else /* disable Modulus */
+#define VALUE_OPT_MODULUS NO_EQUIVALENT
+#define MODULUS_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zModulusText NULL
+#define zModulus_NAME NULL
+#define zModulus_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Pvt_Cert option description:
+ */
+#ifdef OPENSSL
+tSCC zPvt_CertText[] =
+ "generate PC private certificate";
+tSCC zPvt_Cert_NAME[] = "PVT_CERT";
+tSCC zPvt_Cert_Name[] = "pvt-cert";
+#define PVT_CERT_FLAGS (OPTST_DISABLED)
+
+#else /* disable Pvt_Cert */
+#define VALUE_OPT_PVT_CERT NO_EQUIVALENT
+#define PVT_CERT_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zPvt_CertText NULL
+#define zPvt_Cert_NAME NULL
+#define zPvt_Cert_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Pvt_Passwd option description:
+ */
+#ifdef OPENSSL
+tSCC zPvt_PasswdText[] =
+ "output private password";
+tSCC zPvt_Passwd_NAME[] = "PVT_PASSWD";
+tSCC zPvt_Passwd_Name[] = "pvt-passwd";
+#define PVT_PASSWD_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+#else /* disable Pvt_Passwd */
+#define VALUE_OPT_PVT_PASSWD NO_EQUIVALENT
+#define PVT_PASSWD_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zPvt_PasswdText NULL
+#define zPvt_Passwd_NAME NULL
+#define zPvt_Passwd_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Get_Pvt_Passwd option description:
+ */
+#ifdef OPENSSL
+tSCC zGet_Pvt_PasswdText[] =
+ "input private password";
+tSCC zGet_Pvt_Passwd_NAME[] = "GET_PVT_PASSWD";
+tSCC zGet_Pvt_Passwd_Name[] = "get-pvt-passwd";
+#define GET_PVT_PASSWD_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+#else /* disable Get_Pvt_Passwd */
+#define VALUE_OPT_GET_PVT_PASSWD NO_EQUIVALENT
+#define GET_PVT_PASSWD_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zGet_Pvt_PasswdText NULL
+#define zGet_Pvt_Passwd_NAME NULL
+#define zGet_Pvt_Passwd_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Sign_Key option description:
+ */
+#ifdef OPENSSL
+tSCC zSign_KeyText[] =
+ "generate sign key (RSA or DSA)";
+tSCC zSign_Key_NAME[] = "SIGN_KEY";
+tSCC zSign_Key_Name[] = "sign-key";
+#define SIGN_KEY_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+#else /* disable Sign_Key */
+#define VALUE_OPT_SIGN_KEY NO_EQUIVALENT
+#define SIGN_KEY_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zSign_KeyText NULL
+#define zSign_Key_NAME NULL
+#define zSign_Key_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Subject_Name option description:
+ */
+#ifdef OPENSSL
+tSCC zSubject_NameText[] =
+ "set subject name";
+tSCC zSubject_Name_NAME[] = "SUBJECT_NAME";
+tSCC zSubject_Name_Name[] = "subject-name";
+#define SUBJECT_NAME_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING))
+
+#else /* disable Subject_Name */
+#define VALUE_OPT_SUBJECT_NAME NO_EQUIVALENT
+#define SUBJECT_NAME_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zSubject_NameText NULL
+#define zSubject_Name_NAME NULL
+#define zSubject_Name_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Trusted_Cert option description:
+ */
+#ifdef OPENSSL
+tSCC zTrusted_CertText[] =
+ "trusted certificate (TC scheme)";
+tSCC zTrusted_Cert_NAME[] = "TRUSTED_CERT";
+tSCC zTrusted_Cert_Name[] = "trusted-cert";
+#define TRUSTED_CERT_FLAGS (OPTST_DISABLED)
+
+#else /* disable Trusted_Cert */
+#define VALUE_OPT_TRUSTED_CERT NO_EQUIVALENT
+#define TRUSTED_CERT_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zTrusted_CertText NULL
+#define zTrusted_Cert_NAME NULL
+#define zTrusted_Cert_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Mv_Params option description:
+ */
+#ifdef OPENSSL
+tSCC zMv_ParamsText[] =
+ "generate <num> MV parameters";
+tSCC zMv_Params_NAME[] = "MV_PARAMS";
+tSCC zMv_Params_Name[] = "mv-params";
+#define MV_PARAMS_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+#else /* disable Mv_Params */
+#define VALUE_OPT_MV_PARAMS NO_EQUIVALENT
+#define MV_PARAMS_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zMv_ParamsText NULL
+#define zMv_Params_NAME NULL
+#define zMv_Params_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Mv_Keys option description:
+ */
+#ifdef OPENSSL
+tSCC zMv_KeysText[] =
+ "update <num> MV keys";
+tSCC zMv_Keys_NAME[] = "MV_KEYS";
+tSCC zMv_Keys_Name[] = "mv-keys";
+#define MV_KEYS_FLAGS (OPTST_DISABLED \
+ | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC))
+
+#else /* disable Mv_Keys */
+#define VALUE_OPT_MV_KEYS NO_EQUIVALENT
+#define MV_KEYS_FLAGS (OPTST_OMITTED | OPTST_NO_INIT)
+#define zMv_KeysText NULL
+#define zMv_Keys_NAME NULL
+#define zMv_Keys_Name NULL
+#endif /* OPENSSL */
+
+/*
+ * Help/More_Help/Version option descriptions:
+ */
+tSCC zHelpText[] = "Display usage information and exit";
+tSCC zHelp_Name[] = "help";
+
+tSCC zMore_HelpText[] = "Extended usage information passed thru pager";
+tSCC zMore_Help_Name[] = "more-help";
+
+tSCC zVersionText[] = "Output version information and exit";
+tSCC zVersion_Name[] = "version";
+
+/*
+ * Save/Load_Opts option description:
+ */
+tSCC zSave_OptsText[] = "Save the option state to a config file";
+tSCC zSave_Opts_Name[] = "save-opts";
+
+tSCC zLoad_OptsText[] = "Load options from a config file";
+tSCC zLoad_Opts_NAME[] = "LOAD_OPTS";
+
+tSCC zNotLoad_Opts_Name[] = "no-load-opts";
+tSCC zNotLoad_Opts_Pfx[] = "no";
+#define zLoad_Opts_Name (zNotLoad_Opts_Name + 3)
+/*
+ * Declare option callback procedures
+ */
+#ifdef DEBUG
+ static tOptProc doOptSet_Debug_Level;
+#else /* not DEBUG */
+# define doOptSet_Debug_Level NULL
+#endif /* def/not DEBUG */
+#ifdef OPENSSL
+ static tOptProc doOptModulus;
+#else /* not OPENSSL */
+# define doOptModulus NULL
+#endif /* def/not OPENSSL */
+#ifdef OPENSSL
+ extern tOptProc optionNumericVal;
+#else /* not OPENSSL */
+# define optionNumericVal NULL
+#endif /* def/not OPENSSL */
+#ifdef OPENSSL
+ extern tOptProc optionNumericVal;
+#else /* not OPENSSL */
+# define optionNumericVal NULL
+#endif /* def/not OPENSSL */
+#if defined(TEST_NTP_KEYGEN_OPTS)
+/*
+ * Under test, omit argument processing, or call optionStackArg,
+ * if multiple copies are allowed.
+ */
+extern tOptProc
+ optionNumericVal, optionPagedUsage, optionVersionStderr;
+static tOptProc
+ doOptModulus, doUsageOpt;
+
+/*
+ * #define map the "normal" callout procs to the test ones...
+ */
+#define SET_DEBUG_LEVEL_OPT_PROC optionStackArg
+
+
+#else /* NOT defined TEST_NTP_KEYGEN_OPTS */
+/*
+ * When not under test, there are different procs to use
+ */
+extern tOptProc
+ optionPagedUsage, optionPrintVersion;
+static tOptProc
+ doUsageOpt;
+
+/*
+ * #define map the "normal" callout procs
+ */
+#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
+
+#define SET_DEBUG_LEVEL_OPT_PROC doOptSet_Debug_Level
+#endif /* defined(TEST_NTP_KEYGEN_OPTS) */
+#ifdef TEST_NTP_KEYGEN_OPTS
+# define DOVERPROC optionVersionStderr
+#else
+# define DOVERPROC optionPrintVersion
+#endif /* TEST_NTP_KEYGEN_OPTS */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Ntp_Keygen Option Descriptions.
+ */
+static tOptDesc optDesc[ OPTION_CT ] = {
+ { /* entry idx, value */ 0, VALUE_OPT_CERTIFICATE,
+ /* equiv idx, value */ 0, VALUE_OPT_CERTIFICATE,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ CERTIFICATE_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zCertificateText, zCertificate_NAME, zCertificate_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 1, VALUE_OPT_DEBUG_LEVEL,
+ /* equiv idx, value */ 1, VALUE_OPT_DEBUG_LEVEL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ DEBUG_LEVEL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zDebug_LevelText, zDebug_Level_NAME, zDebug_Level_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 2, VALUE_OPT_SET_DEBUG_LEVEL,
+ /* equiv idx, value */ 2, VALUE_OPT_SET_DEBUG_LEVEL,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ SET_DEBUG_LEVEL_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ SET_DEBUG_LEVEL_OPT_PROC,
+ /* desc, NAME, name */ zSet_Debug_LevelText, zSet_Debug_Level_NAME, zSet_Debug_Level_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 3, VALUE_OPT_ID_KEY,
+ /* equiv idx, value */ 3, VALUE_OPT_ID_KEY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ ID_KEY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zId_KeyText, zId_Key_NAME, zId_Key_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 4, VALUE_OPT_GQ_PARAMS,
+ /* equiv idx, value */ 4, VALUE_OPT_GQ_PARAMS,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ GQ_PARAMS_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zGq_ParamsText, zGq_Params_NAME, zGq_Params_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 5, VALUE_OPT_GQ_KEYS,
+ /* equiv idx, value */ 5, VALUE_OPT_GQ_KEYS,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ GQ_KEYS_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zGq_KeysText, zGq_Keys_NAME, zGq_Keys_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 6, VALUE_OPT_HOST_KEY,
+ /* equiv idx, value */ 6, VALUE_OPT_HOST_KEY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ HOST_KEY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zHost_KeyText, zHost_Key_NAME, zHost_Key_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 7, VALUE_OPT_IFFKEY,
+ /* equiv idx, value */ 7, VALUE_OPT_IFFKEY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ IFFKEY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIffkeyText, zIffkey_NAME, zIffkey_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 8, VALUE_OPT_ISSUER_NAME,
+ /* equiv idx, value */ 8, VALUE_OPT_ISSUER_NAME,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ ISSUER_NAME_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zIssuer_NameText, zIssuer_Name_NAME, zIssuer_Name_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 9, VALUE_OPT_MD5KEY,
+ /* equiv idx, value */ 9, VALUE_OPT_MD5KEY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ MD5KEY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zMd5keyText, zMd5key_NAME, zMd5key_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 10, VALUE_OPT_MODULUS,
+ /* equiv idx, value */ 10, VALUE_OPT_MODULUS,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ MODULUS_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ doOptModulus,
+ /* desc, NAME, name */ zModulusText, zModulus_NAME, zModulus_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 11, VALUE_OPT_PVT_CERT,
+ /* equiv idx, value */ 11, VALUE_OPT_PVT_CERT,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PVT_CERT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPvt_CertText, zPvt_Cert_NAME, zPvt_Cert_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 12, VALUE_OPT_PVT_PASSWD,
+ /* equiv idx, value */ 12, VALUE_OPT_PVT_PASSWD,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ PVT_PASSWD_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zPvt_PasswdText, zPvt_Passwd_NAME, zPvt_Passwd_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 13, VALUE_OPT_GET_PVT_PASSWD,
+ /* equiv idx, value */ 13, VALUE_OPT_GET_PVT_PASSWD,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ GET_PVT_PASSWD_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zGet_Pvt_PasswdText, zGet_Pvt_Passwd_NAME, zGet_Pvt_Passwd_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 14, VALUE_OPT_SIGN_KEY,
+ /* equiv idx, value */ 14, VALUE_OPT_SIGN_KEY,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SIGN_KEY_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSign_KeyText, zSign_Key_NAME, zSign_Key_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 15, VALUE_OPT_SUBJECT_NAME,
+ /* equiv idx, value */ 15, VALUE_OPT_SUBJECT_NAME,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ SUBJECT_NAME_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSubject_NameText, zSubject_Name_NAME, zSubject_Name_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 16, VALUE_OPT_TRUSTED_CERT,
+ /* equiv idx, value */ 16, VALUE_OPT_TRUSTED_CERT,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ TRUSTED_CERT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zTrusted_CertText, zTrusted_Cert_NAME, zTrusted_Cert_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 17, VALUE_OPT_MV_PARAMS,
+ /* equiv idx, value */ 17, VALUE_OPT_MV_PARAMS,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ MV_PARAMS_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionNumericVal,
+ /* desc, NAME, name */ zMv_ParamsText, zMv_Params_NAME, zMv_Params_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ 18, VALUE_OPT_MV_KEYS,
+ /* equiv idx, value */ 18, VALUE_OPT_MV_KEYS,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ MV_KEYS_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionNumericVal,
+ /* desc, NAME, name */ zMv_KeysText, zMv_Keys_NAME, zMv_Keys_Name,
+ /* disablement strs */ NULL, NULL },
+
+#ifdef NO_OPTIONAL_OPT_ARGS
+# define VERSION_OPT_FLAGS OPTST_IMM | OPTST_NO_INIT
+#else
+# define VERSION_OPT_FLAGS OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \
+ OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT
+#endif
+
+ { /* entry idx, value */ INDEX_OPT_VERSION, VALUE_OPT_VERSION,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ VERSION_OPT_FLAGS, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ DOVERPROC,
+ /* desc, NAME, name */ zVersionText, NULL, zVersion_Name,
+ /* disablement strs */ NULL, NULL },
+
+#undef VERSION_OPT_FLAGS
+
+
+ { /* entry idx, value */ INDEX_OPT_HELP, VALUE_OPT_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ doUsageOpt,
+ /* desc, NAME, name */ zHelpText, NULL, zHelp_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_MORE_HELP, VALUE_OPT_MORE_HELP,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_IMM | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionPagedUsage,
+ /* desc, NAME, name */ zMore_HelpText, NULL, zMore_Help_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_SAVE_OPTS, VALUE_OPT_SAVE_OPTS,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, 1, 0,
+ /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)
+ | OPTST_ARG_OPTIONAL | OPTST_NO_INIT, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ NULL,
+ /* desc, NAME, name */ zSave_OptsText, NULL, zSave_Opts_Name,
+ /* disablement strs */ NULL, NULL },
+
+ { /* entry idx, value */ INDEX_OPT_LOAD_OPTS, VALUE_OPT_LOAD_OPTS,
+ /* equiv idx value */ NO_EQUIVALENT, 0,
+ /* equivalenced to */ NO_EQUIVALENT,
+ /* min, max, act ct */ 0, NOLIMIT, 0,
+ /* opt state flags */ OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) \
+ | OPTST_DISABLE_IMM, 0,
+ /* last opt argumnt */ { NULL },
+ /* arg list/cookie */ NULL,
+ /* must/cannot opts */ NULL, NULL,
+ /* option proc */ optionLoadOpt,
+ /* desc, NAME, name */ zLoad_OptsText, zLoad_Opts_NAME, zLoad_Opts_Name,
+ /* disablement strs */ zNotLoad_Opts_Name, zNotLoad_Opts_Pfx }
+};
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Define the Ntp_Keygen Option Environment
+ */
+tSCC zPROGNAME[] = "NTP_KEYGEN";
+tSCC zUsageTitle[] =
+"ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.4p5\n\
+USAGE: %s [ -<flag> [<val>] | --<name>[{=| }<val>] ]...\n";
+tSCC zRcName[] = ".ntprc";
+tSCC* apzHomeList[] = {
+ "$HOME",
+ ".",
+ NULL };
+
+tSCC zBugsAddr[] = "http://bugs.ntp.isc.org, bugs@ntp.org";
+#define zExplain NULL
+tSCC zDetail[] = "\n\
+If there is no new host key, look for an existing one.\n\
+If one is not found, create it.\n";
+tSCC zFullVersion[] = NTP_KEYGEN_FULL_VERSION;
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 408 */
+
+#if defined(ENABLE_NLS)
+# define OPTPROC_BASE OPTPROC_TRANSLATE
+ static tOptionXlateProc translate_option_strings;
+#else
+# define OPTPROC_BASE OPTPROC_NONE
+# define translate_option_strings NULL
+#endif /* ENABLE_NLS */
+
+tOptions ntp_keygenOptions = {
+ OPTIONS_STRUCT_VERSION,
+ 0, NULL, /* original argc + argv */
+ ( OPTPROC_BASE
+ + OPTPROC_ERRSTOP
+ + OPTPROC_SHORTOPT
+ + OPTPROC_LONGOPT
+ + OPTPROC_NO_REQ_OPT
+ + OPTPROC_ENVIRON
+ + OPTPROC_NO_ARGS
+ + OPTPROC_HAS_IMMED ),
+ 0, NULL, /* current option index, current option */
+ NULL, NULL, zPROGNAME,
+ zRcName, zCopyright, zCopyrightNotice,
+ zFullVersion, apzHomeList, zUsageTitle,
+ zExplain, zDetail, optDesc,
+ zBugsAddr, /* address to send bugs to */
+ NULL, NULL, /* extensions/saved state */
+ optionUsage, /* usage procedure */
+ translate_option_strings, /* translation procedure */
+ /*
+ * Indexes to special options
+ */
+ { INDEX_OPT_MORE_HELP,
+ INDEX_OPT_SAVE_OPTS,
+ NO_EQUIVALENT /* index of '-#' option */,
+ NO_EQUIVALENT /* index of default opt */
+ },
+ 24 /* full option count */, 19 /* user option count */
+};
+
+/*
+ * Create the static procedure(s) declared above.
+ */
+static void
+doUsageOpt(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ USAGE( EXIT_SUCCESS );
+}
+
+#if ! defined(TEST_NTP_KEYGEN_OPTS)
+
+/* * * * * * *
+ *
+ * For the set-debug-level option, when DEBUG is #define-d.
+ */
+#ifdef DEBUG
+static void
+doOptSet_Debug_Level(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ /* extracted from ../include/debug-opt.def, line 29 */
+DESC(DEBUG_LEVEL).optOccCt = atoi( pOptDesc->pzLastArg );
+}
+#endif /* defined DEBUG */
+
+#endif /* defined(TEST_NTP_KEYGEN_OPTS) */
+
+/* * * * * * *
+ *
+ * For the modulus option, when OPENSSL is #define-d.
+ */
+#ifdef OPENSSL
+static void
+doOptModulus(
+ tOptions* pOptions,
+ tOptDesc* pOptDesc )
+{
+ static const struct {const int rmin, rmax;} rng[ 1 ] = {
+ { 256, 2048 } };
+ int val;
+ int ix;
+ char const* pzIndent = "\t\t\t\t ";
+ extern FILE* option_usage_fp;
+
+ if (pOptDesc == NULL) /* usage is requesting range list
+ option_usage_fp has already been set */
+ goto emit_ranges;
+
+ val = atoi( pOptDesc->optArg.argString );
+ for (ix = 0; ix < 1; ix++) {
+ if (val < rng[ix].rmin)
+ continue; /* ranges need not be ordered. */
+ if (val == rng[ix].rmin)
+ goto valid_return;
+ if (rng[ix].rmax == INT_MIN)
+ continue;
+ if (val <= rng[ix].rmax)
+ goto valid_return;
+ }
+
+ option_usage_fp = stderr;
+ fprintf(stderr, _("%s error: %s option value ``%s''is out of range.\n"),
+ pOptions->pzProgName, pOptDesc->pz_Name, pOptDesc->optArg.argString);
+ pzIndent = "\t";
+
+ emit_ranges:
+ fprintf( option_usage_fp, _("%sit must lie in the range: %d to %d\n"),
+ pzIndent, rng[0].rmin, rng[0].rmax );
+ if (pOptDesc == NULL)
+ return;
+
+ USAGE( EXIT_FAILURE );
+ /* NOTREACHED */
+ return;
+
+ valid_return:
+ pOptDesc->optArg.argInt = val;
+}
+#endif /* defined OPENSSL */
+
+/* extracted from /usr/local/gnu/share/autogen/optmain.tpl near line 92 */
+
+#if defined(TEST_NTP_KEYGEN_OPTS) /* TEST MAIN PROCEDURE: */
+
+int
+main( int argc, char** argv )
+{
+ int res = EXIT_SUCCESS;
+ (void)optionProcess( &ntp_keygenOptions, argc, argv );
+ {
+ void optionPutShell( tOptions* );
+ optionPutShell( &ntp_keygenOptions );
+ }
+ return res;
+}
+#endif /* defined TEST_NTP_KEYGEN_OPTS */
+/* extracted from /usr/local/gnu/share/autogen/optcode.tpl near line 514 */
+
+#if ENABLE_NLS
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <autoopts/usage-txt.h>
+
+static char* AO_gettext( char const* pz );
+static void coerce_it(void** s);
+
+static char*
+AO_gettext( char const* pz )
+{
+ char* pzRes;
+ if (pz == NULL)
+ return NULL;
+ pzRes = _(pz);
+ if (pzRes == pz)
+ return pzRes;
+ pzRes = strdup( pzRes );
+ if (pzRes == NULL) {
+ fputs( _("No memory for duping translated strings\n"), stderr );
+ exit( EXIT_FAILURE );
+ }
+ return pzRes;
+}
+
+static void coerce_it(void** s) { *s = AO_gettext(*s); }
+#define COERSION(_f) \
+ coerce_it((void*)&(ntp_keygenOptions._f))
+
+/*
+ * This invokes the translation code (e.g. gettext(3)).
+ */
+static void
+translate_option_strings( void )
+{
+ /*
+ * Guard against re-translation. It won't work. The strings will have
+ * been changed by the first pass through this code. One shot only.
+ */
+ if (option_usage_text.field_ct == 0)
+ return;
+ /*
+ * Do the translations. The first pointer follows the field count field.
+ * The field count field is the size of a pointer.
+ */
+ {
+ char** ppz = (char**)(void*)&(option_usage_text);
+ int ix = option_usage_text.field_ct;
+
+ do {
+ ppz++;
+ *ppz = AO_gettext(*ppz);
+ } while (--ix > 0);
+ }
+ option_usage_text.field_ct = 0;
+
+ {
+ tOptDesc* pOD = ntp_keygenOptions.pOptDesc;
+ int ix = ntp_keygenOptions.optCt;
+
+ for (;;) {
+ pOD->pzText = AO_gettext(pOD->pzText);
+ pOD->pz_NAME = AO_gettext(pOD->pz_NAME);
+ pOD->pz_Name = AO_gettext(pOD->pz_Name);
+ pOD->pz_DisableName = AO_gettext(pOD->pz_DisableName);
+ pOD->pz_DisablePfx = AO_gettext(pOD->pz_DisablePfx);
+ if (--ix <= 0)
+ break;
+ pOD++;
+ }
+ }
+ COERSION(pzCopyright);
+ COERSION(pzCopyNotice);
+ COERSION(pzFullVersion);
+ COERSION(pzUsageTitle);
+ COERSION(pzExplain);
+ COERSION(pzDetail);
+}
+
+#endif /* ENABLE_NLS */
+
+#ifdef __cplusplus
+}
+#endif
+/* ntp-keygen-opts.c ends here */
diff --git a/contrib/ntp/util/ntp-keygen-opts.def b/contrib/ntp/util/ntp-keygen-opts.def
new file mode 100644
index 0000000..1e5d988
--- /dev/null
+++ b/contrib/ntp/util/ntp-keygen-opts.def
@@ -0,0 +1,209 @@
+/* -*- Mode: Text -*- */
+
+autogen definitions options;
+
+#include copyright.def
+#include homerc.def
+#include autogen-version.def
+
+prog-name = "ntp-keygen";
+prog-title = "Create a NTP host key";
+package = ntp;
+
+test-main;
+
+include = '#include <stdlib.h>';
+#include version.def
+
+flag = {
+ name = certificate;
+ value = c;
+ arg-type = string;
+ arg-name = scheme;
+ ifdef = OPENSSL;
+ descrip = "certificate scheme";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+#include debug-opt.def
+
+flag = {
+ name = id-key;
+ value = e;
+ ifdef = OPENSSL;
+ descrip = "Write identity keys";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = gq-params;
+ value = G;
+ ifdef = OPENSSL;
+ descrip = "Generate GQ parameters and keys";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = gq-keys;
+ value = g;
+ ifdef = OPENSSL;
+ descrip = "update GQ keys";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = host-key;
+ value = H;
+ ifdef = OPENSSL;
+ descrip = "generate RSA host key";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = iffkey;
+ value = I;
+ ifdef = OPENSSL;
+ descrip = "generate IFF parameters";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = issuer-name;
+ value = i;
+ ifdef = OPENSSL;
+ descrip = "set issuer name";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = md5key;
+ value = M;
+ descrip = "generate MD5 keys";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = modulus;
+ value = m;
+ arg-type = number;
+ arg-name = modulus;
+ arg-range = '256->2048';
+ ifdef = OPENSSL;
+ descrip = "modulus";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = pvt-cert;
+ value = P;
+ ifdef = OPENSSL;
+ descrip = "generate PC private certificate";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = pvt-passwd;
+ value = p;
+ ifdef = OPENSSL;
+ arg-type = string;
+ arg-name = passwd;
+ descrip = "output private password";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = get-pvt-passwd;
+ value = q;
+ ifdef = OPENSSL;
+ arg-type = string;
+ arg-name = passwd;
+ descrip = "input private password";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = sign-key;
+ value = S;
+ arg-type = string;
+ arg-name = sign;
+ ifdef = OPENSSL;
+ descrip = "generate sign key (RSA or DSA)";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = subject-name;
+ value = s;
+ arg-type = string;
+ arg-name = host;
+ ifdef = OPENSSL;
+ descrip = "set subject name";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = trusted-cert;
+ value = T;
+ ifdef = OPENSSL;
+ descrip = "trusted certificate (TC scheme)";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = mv-params;
+ value = V;
+ arg-type = number;
+ arg-name = num;
+ ifdef = OPENSSL;
+ descrip = "generate <num> MV parameters";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+flag = {
+ name = mv-keys;
+ value = v;
+ arg-type = number;
+ arg-name = num;
+ ifdef = OPENSSL;
+ descrip = "update <num> MV keys";
+ doc = <<- _EndOfDoc_
+ Just some descriptive text.
+ _EndOfDoc_;
+};
+
+detail = <<- _EODetail_
+ If there is no new host key, look for an existing one.
+ If one is not found, create it.
+ _EODetail_;
diff --git a/contrib/ntp/util/ntp-keygen-opts.h b/contrib/ntp/util/ntp-keygen-opts.h
new file mode 100644
index 0000000..a22a5e7
--- /dev/null
+++ b/contrib/ntp/util/ntp-keygen-opts.h
@@ -0,0 +1,318 @@
+/*
+ * EDIT THIS FILE WITH CAUTION (ntp-keygen-opts.h)
+ *
+ * It has been AutoGen-ed Sunday August 17, 2008 at 05:27:32 AM EDT
+ * From the definitions ntp-keygen-opts.def
+ * and the template file options
+ *
+ * Generated from AutoOpts 29:0:4 templates.
+ */
+
+/*
+ * This file was produced by an AutoOpts template. AutoOpts is a
+ * copyrighted work. This header file is not encumbered by AutoOpts
+ * licensing, but is provided under the licensing terms chosen by the
+ * ntp-keygen author or copyright holder. AutoOpts is licensed under
+ * the terms of the LGPL. The redistributable library (``libopts'') is
+ * licensed under the terms of either the LGPL or, at the users discretion,
+ * the BSD license. See the AutoOpts and/or libopts sources for details.
+ *
+ * This source file is copyrighted and licensed under the following terms:
+ *
+ * ntp-keygen copyright 1970-2008 David L. Mills and/or others - all rights reserved
+ *
+ * see html/copyright.html
+ */
+/*
+ * This file contains the programmatic interface to the Automated
+ * Options generated for the ntp-keygen program.
+ * These macros are documented in the AutoGen info file in the
+ * "AutoOpts" chapter. Please refer to that doc for usage help.
+ */
+#ifndef AUTOOPTS_NTP_KEYGEN_OPTS_H_GUARD
+#define AUTOOPTS_NTP_KEYGEN_OPTS_H_GUARD
+#include "config.h"
+#include <autoopts/options.h>
+
+/*
+ * Ensure that the library used for compiling this generated header is at
+ * least as new as the version current when the header template was released
+ * (not counting patch version increments). Also ensure that the oldest
+ * tolerable version is at least as old as what was current when the header
+ * template was released.
+ */
+#define AO_TEMPLATE_VERSION 118784
+#if (AO_TEMPLATE_VERSION < OPTIONS_MINIMUM_VERSION) \
+ || (AO_TEMPLATE_VERSION > OPTIONS_STRUCT_VERSION)
+# error option template version mismatches autoopts/options.h header
+ Choke Me.
+#endif
+
+/*
+ * Enumeration of each option:
+ */
+typedef enum {
+ INDEX_OPT_CERTIFICATE = 0,
+ INDEX_OPT_DEBUG_LEVEL = 1,
+ INDEX_OPT_SET_DEBUG_LEVEL = 2,
+ INDEX_OPT_ID_KEY = 3,
+ INDEX_OPT_GQ_PARAMS = 4,
+ INDEX_OPT_GQ_KEYS = 5,
+ INDEX_OPT_HOST_KEY = 6,
+ INDEX_OPT_IFFKEY = 7,
+ INDEX_OPT_ISSUER_NAME = 8,
+ INDEX_OPT_MD5KEY = 9,
+ INDEX_OPT_MODULUS = 10,
+ INDEX_OPT_PVT_CERT = 11,
+ INDEX_OPT_PVT_PASSWD = 12,
+ INDEX_OPT_GET_PVT_PASSWD = 13,
+ INDEX_OPT_SIGN_KEY = 14,
+ INDEX_OPT_SUBJECT_NAME = 15,
+ INDEX_OPT_TRUSTED_CERT = 16,
+ INDEX_OPT_MV_PARAMS = 17,
+ INDEX_OPT_MV_KEYS = 18,
+ INDEX_OPT_VERSION = 19,
+ INDEX_OPT_HELP = 20,
+ INDEX_OPT_MORE_HELP = 21,
+ INDEX_OPT_SAVE_OPTS = 22,
+ INDEX_OPT_LOAD_OPTS = 23
+} teOptIndex;
+
+#define OPTION_CT 24
+#define NTP_KEYGEN_VERSION "4.2.4p5"
+#define NTP_KEYGEN_FULL_VERSION "ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.4p5"
+
+/*
+ * Interface defines for all options. Replace "n" with the UPPER_CASED
+ * option name (as in the teOptIndex enumeration above).
+ * e.g. HAVE_OPT( CERTIFICATE )
+ */
+#define DESC(n) (ntp_keygenOptions.pOptDesc[INDEX_OPT_## n])
+#define HAVE_OPT(n) (! UNUSED_OPT(& DESC(n)))
+#define OPT_ARG(n) (DESC(n).optArg.argString)
+#define STATE_OPT(n) (DESC(n).fOptState & OPTST_SET_MASK)
+#define COUNT_OPT(n) (DESC(n).optOccCt)
+#define ISSEL_OPT(n) (SELECTED_OPT(&DESC(n)))
+#define ISUNUSED_OPT(n) (UNUSED_OPT(& DESC(n)))
+#define ENABLED_OPT(n) (! DISABLED_OPT(& DESC(n)))
+#define STACKCT_OPT(n) (((tArgList*)(DESC(n).optCookie))->useCt)
+#define STACKLST_OPT(n) (((tArgList*)(DESC(n).optCookie))->apzArgs)
+#define CLEAR_OPT(n) STMTS( \
+ DESC(n).fOptState &= OPTST_PERSISTENT_MASK; \
+ if ( (DESC(n).fOptState & OPTST_INITENABLED) == 0) \
+ DESC(n).fOptState |= OPTST_DISABLED; \
+ DESC(n).optCookie = NULL )
+
+/*
+ * Make sure there are no #define name conflicts with the option names
+ */
+#ifndef NO_OPTION_NAME_WARNINGS
+# ifdef CERTIFICATE
+# warning undefining CERTIFICATE due to option name conflict
+# undef CERTIFICATE
+# endif
+# ifdef DEBUG_LEVEL
+# warning undefining DEBUG_LEVEL due to option name conflict
+# undef DEBUG_LEVEL
+# endif
+# ifdef SET_DEBUG_LEVEL
+# warning undefining SET_DEBUG_LEVEL due to option name conflict
+# undef SET_DEBUG_LEVEL
+# endif
+# ifdef ID_KEY
+# warning undefining ID_KEY due to option name conflict
+# undef ID_KEY
+# endif
+# ifdef GQ_PARAMS
+# warning undefining GQ_PARAMS due to option name conflict
+# undef GQ_PARAMS
+# endif
+# ifdef GQ_KEYS
+# warning undefining GQ_KEYS due to option name conflict
+# undef GQ_KEYS
+# endif
+# ifdef HOST_KEY
+# warning undefining HOST_KEY due to option name conflict
+# undef HOST_KEY
+# endif
+# ifdef IFFKEY
+# warning undefining IFFKEY due to option name conflict
+# undef IFFKEY
+# endif
+# ifdef ISSUER_NAME
+# warning undefining ISSUER_NAME due to option name conflict
+# undef ISSUER_NAME
+# endif
+# ifdef MD5KEY
+# warning undefining MD5KEY due to option name conflict
+# undef MD5KEY
+# endif
+# ifdef MODULUS
+# warning undefining MODULUS due to option name conflict
+# undef MODULUS
+# endif
+# ifdef PVT_CERT
+# warning undefining PVT_CERT due to option name conflict
+# undef PVT_CERT
+# endif
+# ifdef PVT_PASSWD
+# warning undefining PVT_PASSWD due to option name conflict
+# undef PVT_PASSWD
+# endif
+# ifdef GET_PVT_PASSWD
+# warning undefining GET_PVT_PASSWD due to option name conflict
+# undef GET_PVT_PASSWD
+# endif
+# ifdef SIGN_KEY
+# warning undefining SIGN_KEY due to option name conflict
+# undef SIGN_KEY
+# endif
+# ifdef SUBJECT_NAME
+# warning undefining SUBJECT_NAME due to option name conflict
+# undef SUBJECT_NAME
+# endif
+# ifdef TRUSTED_CERT
+# warning undefining TRUSTED_CERT due to option name conflict
+# undef TRUSTED_CERT
+# endif
+# ifdef MV_PARAMS
+# warning undefining MV_PARAMS due to option name conflict
+# undef MV_PARAMS
+# endif
+# ifdef MV_KEYS
+# warning undefining MV_KEYS due to option name conflict
+# undef MV_KEYS
+# endif
+#else /* NO_OPTION_NAME_WARNINGS */
+# undef CERTIFICATE
+# undef DEBUG_LEVEL
+# undef SET_DEBUG_LEVEL
+# undef ID_KEY
+# undef GQ_PARAMS
+# undef GQ_KEYS
+# undef HOST_KEY
+# undef IFFKEY
+# undef ISSUER_NAME
+# undef MD5KEY
+# undef MODULUS
+# undef PVT_CERT
+# undef PVT_PASSWD
+# undef GET_PVT_PASSWD
+# undef SIGN_KEY
+# undef SUBJECT_NAME
+# undef TRUSTED_CERT
+# undef MV_PARAMS
+# undef MV_KEYS
+#endif /* NO_OPTION_NAME_WARNINGS */
+
+/*
+ * Interface defines for specific options.
+ */
+#ifdef OPENSSL
+#define VALUE_OPT_CERTIFICATE 'c'
+#endif /* OPENSSL */
+#ifdef DEBUG
+#define VALUE_OPT_DEBUG_LEVEL 'd'
+#endif /* DEBUG */
+#ifdef DEBUG
+#define VALUE_OPT_SET_DEBUG_LEVEL 'D'
+#endif /* DEBUG */
+#ifdef OPENSSL
+#define VALUE_OPT_ID_KEY 'e'
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_GQ_PARAMS 'G'
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_GQ_KEYS 'g'
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_HOST_KEY 'H'
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_IFFKEY 'I'
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_ISSUER_NAME 'i'
+#endif /* OPENSSL */
+#define VALUE_OPT_MD5KEY 'M'
+#ifdef OPENSSL
+#define VALUE_OPT_MODULUS 'm'
+#define OPT_VALUE_MODULUS (DESC(MODULUS).optArg.argInt)
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_PVT_CERT 'P'
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_PVT_PASSWD 'p'
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_GET_PVT_PASSWD 'q'
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_SIGN_KEY 'S'
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_SUBJECT_NAME 's'
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_TRUSTED_CERT 'T'
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_MV_PARAMS 'V'
+#define OPT_VALUE_MV_PARAMS (DESC(MV_PARAMS).optArg.argInt)
+#endif /* OPENSSL */
+#ifdef OPENSSL
+#define VALUE_OPT_MV_KEYS 'v'
+#define OPT_VALUE_MV_KEYS (DESC(MV_KEYS).optArg.argInt)
+#endif /* OPENSSL */
+
+#define VALUE_OPT_VERSION 'v'
+#define VALUE_OPT_HELP '?'
+#define VALUE_OPT_MORE_HELP '!'
+#define VALUE_OPT_SAVE_OPTS '>'
+#define VALUE_OPT_LOAD_OPTS '<'
+#define SET_OPT_SAVE_OPTS(a) STMTS( \
+ DESC(SAVE_OPTS).fOptState &= OPTST_PERSISTENT_MASK; \
+ DESC(SAVE_OPTS).fOptState |= OPTST_SET; \
+ DESC(SAVE_OPTS).optArg.argString = (char const*)(a) )
+/*
+ * Interface defines not associated with particular options
+ */
+#define ERRSKIP_OPTERR STMTS( ntp_keygenOptions.fOptSet &= ~OPTPROC_ERRSTOP )
+#define ERRSTOP_OPTERR STMTS( ntp_keygenOptions.fOptSet |= OPTPROC_ERRSTOP )
+#define RESTART_OPT(n) STMTS( \
+ ntp_keygenOptions.curOptIdx = (n); \
+ ntp_keygenOptions.pzCurOpt = NULL )
+#define START_OPT RESTART_OPT(1)
+#define USAGE(c) (*ntp_keygenOptions.pUsageProc)( &ntp_keygenOptions, c )
+/* extracted from /usr/local/gnu/share/autogen/opthead.tpl near line 360 */
+
+/* * * * * *
+ *
+ * Declare the ntp-keygen option descriptor.
+ */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern tOptions ntp_keygenOptions;
+
+#ifndef _
+# if ENABLE_NLS
+# include <stdio.h>
+ static inline char* aoGetsText( char const* pz ) {
+ if (pz == NULL) return NULL;
+ return (char*)gettext( pz );
+ }
+# define _(s) aoGetsText(s)
+# else /* ENABLE_NLS */
+# define _(s) s
+# endif /* ENABLE_NLS */
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AUTOOPTS_NTP_KEYGEN_OPTS_H_GUARD */
+/* ntp-keygen-opts.h ends here */
diff --git a/contrib/ntp/util/ntp-keygen-opts.menu b/contrib/ntp/util/ntp-keygen-opts.menu
new file mode 100644
index 0000000..bc5cfe9
--- /dev/null
+++ b/contrib/ntp/util/ntp-keygen-opts.menu
@@ -0,0 +1 @@
+* ntp-keygen Invocation:: Invoking ntp-keygen
diff --git a/contrib/ntp/util/ntp-keygen-opts.texi b/contrib/ntp/util/ntp-keygen-opts.texi
new file mode 100644
index 0000000..19b77f8
--- /dev/null
+++ b/contrib/ntp/util/ntp-keygen-opts.texi
@@ -0,0 +1,364 @@
+@node ntp-keygen Invocation
+@section Invoking ntp-keygen
+@pindex ntp-keygen
+@cindex Create a NTP host key
+@ignore
+#
+# EDIT THIS FILE WITH CAUTION (ntp-keygen-opts.texi)
+#
+# It has been AutoGen-ed Sunday August 17, 2008 at 05:27:34 AM EDT
+# From the definitions ntp-keygen-opts.def
+# and the template file aginfo.tpl
+@end ignore
+This program has no explanation.
+
+If there is no new host key, look for an existing one.
+If one is not found, create it.
+
+This section was generated by @strong{AutoGen},
+the aginfo template and the option descriptions for the @command{ntp-keygen} program. It documents the ntp-keygen usage text and option meanings.
+
+This software is released under a specialized copyright license.
+
+@menu
+* ntp-keygen usage:: ntp-keygen usage help (-?)
+* ntp-keygen certificate:: certificate option (-c)
+* ntp-keygen debug-level:: debug-level option (-d)
+* ntp-keygen get-pvt-passwd:: get-pvt-passwd option (-q)
+* ntp-keygen gq-keys:: gq-keys option (-g)
+* ntp-keygen gq-params:: gq-params option (-G)
+* ntp-keygen host-key:: host-key option (-H)
+* ntp-keygen id-key:: id-key option (-e)
+* ntp-keygen iffkey:: iffkey option (-I)
+* ntp-keygen issuer-name:: issuer-name option (-i)
+* ntp-keygen md5key:: md5key option (-M)
+* ntp-keygen modulus:: modulus option (-m)
+* ntp-keygen mv-keys:: mv-keys option (-v)
+* ntp-keygen mv-params:: mv-params option (-V)
+* ntp-keygen pvt-cert:: pvt-cert option (-P)
+* ntp-keygen pvt-passwd:: pvt-passwd option (-p)
+* ntp-keygen set-debug-level:: set-debug-level option (-D)
+* ntp-keygen sign-key:: sign-key option (-S)
+* ntp-keygen subject-name:: subject-name option (-s)
+* ntp-keygen trusted-cert:: trusted-cert option (-T)
+@end menu
+
+@node ntp-keygen usage
+@subsection ntp-keygen usage help (-?)
+@cindex ntp-keygen usage
+
+This is the automatically generated usage text for ntp-keygen:
+
+@exampleindent 0
+@example
+Using OpenSSL version 90704f
+ntp-keygen (ntp) - Create a NTP host key - Ver. 4.2.5p113
+USAGE: ntp-keygen [ -<flag> [<val>] | --<name>[@{=| @}<val>] ]...
+ Flg Arg Option-Name Description
+ -c Str certificate certificate scheme
+ -d no debug-level Increase output debug message level
+ - may appear multiple times
+ -D Str set-debug-level Set the output debug message level
+ - may appear multiple times
+ -e no id-key Write IFF or GQ identity keys
+ -G no gq-params Generate GQ parameters and keys
+ -H no host-key generate RSA host key
+ -I no iffkey generate IFF parameters
+ -i Str issuer-name set issuer name
+ -M no md5key generate MD5 keys
+ -m Num modulus modulus
+ it must lie in the range: 256 to 2048
+ -P no pvt-cert generate PC private certificate
+ -p Str pvt-passwd output private password
+ -q Str get-pvt-passwd input private password
+ -S Str sign-key generate sign key (RSA or DSA)
+ -s Str subject-name set subject name
+ -T no trusted-cert trusted certificate (TC scheme)
+ -V Num mv-params generate <num> MV parameters
+ -v Num mv-keys update <num> MV keys
+ opt version Output version information and exit
+ -? no help Display usage information and exit
+ -! no more-help Extended usage information passed thru pager
+ -> opt save-opts Save the option state to a config file
+ -< Str load-opts Load options from a config file
+ - disabled as --no-load-opts
+ - may appear multiple times
+
+Options are specified by doubled hyphens and their name
+or by a single hyphen and the flag character.
+
+The following option preset mechanisms are supported:
+ - reading file /users/stenn/.ntprc
+ - reading file /deacon/backroom/snaps/ntp-stable/util/.ntprc
+ - examining environment variables named NTP_KEYGEN_*
+
+If there is no new host key, look for an existing one.
+If one is not found, create it.
+
+please send bug reports to: http://bugs.ntp.org, bugs@@ntp.org
+@end example
+@exampleindent 4
+
+@node ntp-keygen certificate
+@subsection certificate option (-c)
+@cindex ntp-keygen-certificate
+
+This is the ``certificate scheme'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen debug-level
+@subsection debug-level option (-d)
+@cindex ntp-keygen-debug-level
+
+This is the ``increase output debug message level'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@item
+must be compiled in by defining @code{DEBUG} during the compilation.
+@end itemize
+
+Increase the debugging message output level.
+
+@node ntp-keygen set-debug-level
+@subsection set-debug-level option (-D)
+@cindex ntp-keygen-set-debug-level
+
+This is the ``set the output debug message level'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+may appear an unlimited number of times.
+@item
+must be compiled in by defining @code{DEBUG} during the compilation.
+@end itemize
+
+Set the output debugging level. Can be supplied multiple times,
+but each overrides the previous value(s).
+
+@node ntp-keygen id-key
+@subsection id-key option (-e)
+@cindex ntp-keygen-id-key
+
+This is the ``write identity keys'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen gq-params
+@subsection gq-params option (-G)
+@cindex ntp-keygen-gq-params
+
+This is the ``generate gq parameters and keys'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen gq-keys
+@subsection gq-keys option (-g)
+@cindex ntp-keygen-gq-keys
+
+This is the ``update gq keys'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen host-key
+@subsection host-key option (-H)
+@cindex ntp-keygen-host-key
+
+This is the ``generate rsa host key'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen iffkey
+@subsection iffkey option (-I)
+@cindex ntp-keygen-iffkey
+
+This is the ``generate iff parameters'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen issuer-name
+@subsection issuer-name option (-i)
+@cindex ntp-keygen-issuer-name
+
+This is the ``set issuer name'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen md5key
+@subsection md5key option (-M)
+@cindex ntp-keygen-md5key
+
+This is the ``generate md5 keys'' option.
+Just some descriptive text.
+
+@node ntp-keygen modulus
+@subsection modulus option (-m)
+@cindex ntp-keygen-modulus
+
+This is the ``modulus'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen pvt-cert
+@subsection pvt-cert option (-P)
+@cindex ntp-keygen-pvt-cert
+
+This is the ``generate pc private certificate'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen pvt-passwd
+@subsection pvt-passwd option (-p)
+@cindex ntp-keygen-pvt-passwd
+
+This is the ``output private password'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen get-pvt-passwd
+@subsection get-pvt-passwd option (-q)
+@cindex ntp-keygen-get-pvt-passwd
+
+This is the ``input private password'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen sign-key
+@subsection sign-key option (-S)
+@cindex ntp-keygen-sign-key
+
+This is the ``generate sign key (rsa or dsa)'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen subject-name
+@subsection subject-name option (-s)
+@cindex ntp-keygen-subject-name
+
+This is the ``set subject name'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen trusted-cert
+@subsection trusted-cert option (-T)
+@cindex ntp-keygen-trusted-cert
+
+This is the ``trusted certificate (tc scheme)'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen mv-params
+@subsection mv-params option (-V)
+@cindex ntp-keygen-mv-params
+
+This is the ``generate <num> mv parameters'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
+
+@node ntp-keygen mv-keys
+@subsection mv-keys option (-v)
+@cindex ntp-keygen-mv-keys
+
+This is the ``update <num> mv keys'' option.
+
+This option has some usage constraints. It:
+@itemize @bullet
+@item
+must be compiled in by defining @code{OPENSSL} during the compilation.
+@end itemize
+
+Just some descriptive text.
diff --git a/contrib/ntp/util/ntp-keygen.1 b/contrib/ntp/util/ntp-keygen.1
new file mode 100644
index 0000000..3bf7d0c
--- /dev/null
+++ b/contrib/ntp/util/ntp-keygen.1
@@ -0,0 +1,176 @@
+.TH NTP-KEYGEN 1 2008-08-17 "(ntp 4.2.4p5)" "Programmer's Manual"
+.\" EDIT THIS FILE WITH CAUTION (ntp-keygen.1)
+.\"
+.\" It has been AutoGen-ed Sunday August 17, 2008 at 05:27:34 AM EDT
+.\" From the definitions ntp-keygen-opts.def
+.\" and the template file agman1.tpl
+.\"
+.SH NAME
+ntp-keygen \- Create a NTP host key
+.SH SYNOPSIS
+.B ntp-keygen
+.\" Mixture of short (flag) options and long options
+.RB [ \-\fIflag\fP " [\fIvalue\fP]]... [" \--\fIopt-name\fP " [[=| ]\fIvalue\fP]]..."
+.PP
+All arguments must be options.
+.SH "DESCRIPTION"
+This manual page documents, briefly, the \fBntp-keygen\fP command.
+If there is no new host key, look for an existing one.
+If one is not found, create it.
+.SH OPTIONS
+.TP
+.BR \-c " \fIscheme\fP, " \--certificate "=" \fIscheme\fP
+certificate scheme.
+.sp
+Just some descriptive text.
+.TP
+.BR \-d ", " \--debug-level
+Increase output debug message level.
+This option may appear an unlimited number of times.
+.sp
+Increase the debugging message output level.
+.TP
+.BR \-D " \fIstring\fP, " \--set-debug-level "=" \fIstring\fP
+Set the output debug message level.
+This option may appear an unlimited number of times.
+.sp
+Set the output debugging level. Can be supplied multiple times,
+but each overrides the previous value(s).
+.TP
+.BR \-e ", " \--id-key
+Write identity keys.
+.sp
+Just some descriptive text.
+.TP
+.BR \-G ", " \--gq-params
+Generate GQ parameters and keys.
+.sp
+Just some descriptive text.
+.TP
+.BR \-g ", " \--gq-keys
+update GQ keys.
+.sp
+Just some descriptive text.
+.TP
+.BR \-H ", " \--host-key
+generate RSA host key.
+.sp
+Just some descriptive text.
+.TP
+.BR \-I ", " \--iffkey
+generate IFF parameters.
+.sp
+Just some descriptive text.
+.TP
+.BR \-i ", " \--issuer-name
+set issuer name.
+.sp
+Just some descriptive text.
+.TP
+.BR \-M ", " \--md5key
+generate MD5 keys.
+.sp
+Just some descriptive text.
+.TP
+.BR \-m " \fImodulus\fP, " \--modulus "=" \fImodulus\fP
+modulus.
+This option takes an integer number as its argument.
+The value of \fImodulus\fP is constrained to being:
+.in +4
+.nf
+.na
+in the range 256 through 2048
+.fi
+.in -4
+.sp
+Just some descriptive text.
+.TP
+.BR \-P ", " \--pvt-cert
+generate PC private certificate.
+.sp
+Just some descriptive text.
+.TP
+.BR \-p " \fIpasswd\fP, " \--pvt-passwd "=" \fIpasswd\fP
+output private password.
+.sp
+Just some descriptive text.
+.TP
+.BR \-q " \fIpasswd\fP, " \--get-pvt-passwd "=" \fIpasswd\fP
+input private password.
+.sp
+Just some descriptive text.
+.TP
+.BR \-S " \fIsign\fP, " \--sign-key "=" \fIsign\fP
+generate sign key (RSA or DSA).
+.sp
+Just some descriptive text.
+.TP
+.BR \-s " \fIhost\fP, " \--subject-name "=" \fIhost\fP
+set subject name.
+.sp
+Just some descriptive text.
+.TP
+.BR \-T ", " \--trusted-cert
+trusted certificate (TC scheme).
+.sp
+Just some descriptive text.
+.TP
+.BR \-V " \fInum\fP, " \--mv-params "=" \fInum\fP
+generate <num> MV parameters.
+This option takes an integer number as its argument.
+.sp
+Just some descriptive text.
+.TP
+.BR \-v " \fInum\fP, " \--mv-keys "=" \fInum\fP
+update <num> MV keys.
+This option takes an integer number as its argument.
+.sp
+Just some descriptive text.
+.TP
+.BR \-? , " \--help"
+Display usage information and exit.
+.TP
+.BR \-! , " \--more-help"
+Extended usage information passed thru pager.
+.TP
+.BR \-> " [\fIrcfile\fP]," " \--save-opts" "[=\fIrcfile\fP]"
+Save the option state to \fIrcfile\fP. The default is the \fIlast\fP
+configuration file listed in the \fBOPTION PRESETS\fP section, below.
+.TP
+.BR \-< " \fIrcfile\fP," " \--load-opts" "=\fIrcfile\fP," " \--no-load-opts"
+Load options from \fIrcfile\fP.
+The \fIno-load-opts\fP form will disable the loading
+of earlier RC/INI files. \fI--no-load-opts\fP is handled early,
+out of order.
+.TP
+.BR \-v " [{\fIv|c|n\fP}]," " \--version" "[=\fI{v|c|n}\fP]"
+Output version of program and exit. The default mode is `v', a simple
+version. The `c' mode will print copyright information and `n' will
+print the full copyright notice.
+.SH OPTION PRESETS
+Any option that is not marked as \fInot presettable\fP may be preset
+by loading values from configuration ("RC" or ".INI") file(s) and values from
+environment variables named:
+.nf
+ \fBNTP_KEYGEN_<option-name>\fP or \fBNTP_KEYGEN\fP
+.fi
+.aj
+The environmental presets take precedence (are processed later than)
+the configuration files.
+The \fIhomerc\fP files are "\fI$HOME\fP", and "\fI.\fP".
+If any of these are directories, then the file \fI.ntprc\fP
+is searched for within those directories.
+.SH AUTHOR
+David L. Mills and/or others
+.br
+Please send bug reports to: http://bugs.ntp.isc.org, bugs@ntp.org
+
+.PP
+.nf
+.na
+see html/copyright.html
+.fi
+.ad
+.PP
+This manual page was \fIAutoGen\fP-erated from the \fBntp-keygen\fP
+option definitions.
diff --git a/contrib/ntp/util/ntp-keygen.c b/contrib/ntp/util/ntp-keygen.c
index 2d91652..6c14518 100644
--- a/contrib/ntp/util/ntp-keygen.c
+++ b/contrib/ntp/util/ntp-keygen.c
@@ -96,8 +96,11 @@
# include <sys/types.h>
#endif
#include "ntp_types.h"
+#include "ntp_random.h"
#include "l_stdlib.h"
+#include "ntp-keygen-opts.h"
+
#ifdef SYS_WINNT
extern int ntp_getopt P((int, char **, const char *));
#define getopt ntp_getopt
@@ -216,6 +219,7 @@ main(
)
{
struct timeval tv; /* initialization vector */
+ int md5key = 0; /* generate MD5 keys */
#ifdef OPENSSL
X509 *cert = NULL; /* X509 certificate */
EVP_PKEY *pkey_host = NULL; /* host key */
@@ -223,9 +227,6 @@ main(
EVP_PKEY *pkey_iff = NULL; /* IFF parameters */
EVP_PKEY *pkey_gq = NULL; /* GQ parameters */
EVP_PKEY *pkey_mv = NULL; /* MV parameters */
-#endif
- int md5key = 0; /* generate MD5 keys */
-#ifdef OPENSSL
int hostkey = 0; /* generate RSA keys */
int iffkey = 0; /* generate IFF parameters */
int gqpar = 0; /* generate GQ parameters */
@@ -241,10 +242,10 @@ main(
char *grpkey = NULL; /* identity extension */
int nid; /* X509 digest/signature scheme */
FILE *fstr = NULL; /* file handle */
- int iffsw = 0; /* IFF key switch */
+ u_int temp;
+#define iffsw HAVE_OPT(ID_KEY)
#endif /* OPENSSL */
char hostbuf[MAXHOSTNAME + 1];
- u_int temp;
#ifdef SYS_WINNT
/* Initialize before OpenSSL checks */
@@ -254,7 +255,11 @@ main(
#endif
#ifdef OPENSSL
- if (SSLeay() != OPENSSL_VERSION_NUMBER) {
+ /*
+ * OpenSSL version numbers: MNNFFPPS: major minor fix patch status
+ * We match major, minor, fix and status (not patch)
+ */
+ if ((SSLeay() ^ OPENSSL_VERSION_NUMBER) & ~0xff0L) {
fprintf(stderr,
"OpenSSL version mismatch. Built against %lx, you have %lx\n",
OPENSSL_VERSION_NUMBER, SSLeay());
@@ -282,190 +287,73 @@ main(
#endif
epoch = tv.tv_sec;
rval = 0;
- while ((temp = getopt(argc, argv,
-#ifdef OPENSSL
- "c:deGgHIi:Mm:nPp:q:S:s:TV:v:"
-#else
- "dM"
-#endif
- )) != -1) {
- switch(temp) {
-#ifdef OPENSSL
- /*
- * -c select public certificate type
- */
- case 'c':
- scheme = optarg;
- continue;
-#endif
-
- /*
- * -d debug
- */
- case 'd':
- debug++;
- continue;
-
-#ifdef OPENSSL
- /*
- * -e write identity keys
- */
- case 'e':
- iffsw++;
- continue;
-#endif
+ {
+ int optct = optionProcess(&ntp_keygenOptions, argc, argv);
+ argc -= optct;
+ argv += optct;
+ }
#ifdef OPENSSL
- /*
- * -G generate GQ parameters and keys
- */
- case 'G':
- gqpar++;
- continue;
+ if (HAVE_OPT( CERTIFICATE ))
+ scheme = OPT_ARG( CERTIFICATE );
#endif
-#ifdef OPENSSL
- /*
- * -g update GQ keys
- */
- case 'g':
- gqkey++;
- continue;
-#endif
+ debug = DESC(DEBUG_LEVEL).optOccCt;
#ifdef OPENSSL
- /*
- * -H generate host key (RSA)
- */
- case 'H':
- hostkey++;
- continue;
-#endif
+ if (HAVE_OPT( GQ_PARAMS ))
+ gqpar++;
-#ifdef OPENSSL
- /*
- * -I generate IFF parameters
- */
- case 'I':
- iffkey++;
- continue;
-#endif
+ if (HAVE_OPT( GQ_KEYS ))
+ gqkey++;
-#ifdef OPENSSL
- /*
- * -i set issuer name
- */
- case 'i':
- trustname = optarg;
- continue;
-#endif
+ if (HAVE_OPT( HOST_KEY ))
+ hostkey++;
- /*
- * -M generate MD5 keys
- */
- case 'M':
- md5key++;
- continue;
+ if (HAVE_OPT( IFFKEY ))
+ iffkey++;
-#ifdef OPENSSL
- /*
- * -m select modulus (256-2048)
- */
- case 'm':
- if (sscanf(optarg, "%d", &modulus) != 1)
- fprintf(stderr,
- "invalid option -m %s\n", optarg);
- continue;
+ if (HAVE_OPT( ISSUER_NAME ))
+ trustname = OPT_ARG( ISSUER_NAME );
#endif
-#ifdef OPENSSL
- /*
- * -P generate PC private certificate
- */
- case 'P':
- exten = EXT_KEY_PRIVATE;
- continue;
-#endif
+ if (HAVE_OPT( MD5KEY ))
+ md5key++;
#ifdef OPENSSL
- /*
- * -p output private key password
- */
- case 'p':
- passwd2 = optarg;
- continue;
-#endif
+ if (HAVE_OPT( MODULUS ))
+ modulus = OPT_VALUE_MODULUS;
-#ifdef OPENSSL
- /*
- * -q input private key password
- */
- case 'q':
- passwd1 = optarg;
- continue;
-#endif
+ if (HAVE_OPT( PVT_CERT ))
+ exten = EXT_KEY_PRIVATE;
-#ifdef OPENSSL
- /*
- * -S generate sign key (RSA or DSA)
- */
- case 'S':
- sign = optarg;
- continue;
-#endif
+ if (HAVE_OPT( PVT_PASSWD ))
+ passwd2 = OPT_ARG( PVT_PASSWD );
-#ifdef OPENSSL
- /*
- * -s set subject name
- */
- case 's':
- hostname = optarg;
- continue;
-#endif
+ if (HAVE_OPT( GET_PVT_PASSWD ))
+ passwd1 = OPT_ARG( GET_PVT_PASSWD );
-#ifdef OPENSSL
- /*
- * -T trusted certificate (TC scheme)
- */
- case 'T':
- exten = EXT_KEY_TRUST;
- continue;
-#endif
+ if (HAVE_OPT( SIGN_KEY ))
+ sign = OPT_ARG( SIGN_KEY );
-#ifdef OPENSSL
- /*
- * -V <keys> generate MV parameters
- */
- case 'V':
- mvpar++;
- if (sscanf(optarg, "%d", &nkeys) != 1)
- fprintf(stderr,
- "invalid option -V %s\n", optarg);
- continue;
-#endif
+ if (HAVE_OPT( SUBJECT_NAME ))
+ hostname = OPT_ARG( SUBJECT_NAME );
-#ifdef OPENSSL
- /*
- * -v <key> update MV keys
- */
- case 'v':
- mvkey++;
- if (sscanf(optarg, "%d", &nkeys) != 1)
- fprintf(stderr,
- "invalid option -v %s\n", optarg);
- continue;
-#endif
+ if (HAVE_OPT( TRUSTED_CERT ))
+ exten = EXT_KEY_TRUST;
- /*
- * None of the above.
- */
- default:
- fprintf(stderr, "Option ignored\n");
- continue;
- }
+ if (HAVE_OPT( MV_PARAMS )) {
+ mvpar++;
+ nkeys = OPT_VALUE_MV_PARAMS;
}
+ if (HAVE_OPT( MV_KEYS )) {
+ mvkey++;
+ nkeys = OPT_VALUE_MV_KEYS;
+ }
+#endif
+
if (passwd1 != NULL && passwd2 == NULL)
passwd2 = passwd1;
#ifdef OPENSSL
@@ -512,7 +400,7 @@ main(
* If there is no new host key, look for an existing one. If not
* found, create it.
*/
- while (pkey_host == NULL && rval == 0 && !iffsw) {
+ while (pkey_host == NULL && rval == 0 && !HAVE_OPT(ID_KEY)) {
sprintf(filename, "ntpkey_host_%s", hostname);
if ((fstr = fopen(filename, "r")) != NULL) {
pkey_host = PEM_read_PrivateKey(fstr, NULL,
@@ -542,7 +430,7 @@ main(
* found, use the host key instead.
*/
pkey = pkey_sign;
- while (pkey_sign == NULL && rval == 0 && !iffsw) {
+ while (pkey_sign == NULL && rval == 0 && !HAVE_OPT(ID_KEY)) {
sprintf(filename, "ntpkey_sign_%s", hostname);
if ((fstr = fopen(filename, "r")) != NULL) {
pkey_sign = PEM_read_PrivateKey(fstr, NULL,
@@ -592,7 +480,7 @@ main(
/*
* If there is no new GQ file, look for an existing one.
*/
- if (pkey_gq == NULL && rval == 0 && !iffsw) {
+ if (pkey_gq == NULL && rval == 0 && !HAVE_OPT(ID_KEY)) {
sprintf(filename, "ntpkey_gq_%s", hostname);
if ((fstr = fopen(filename, "r")) != NULL) {
pkey_gq = PEM_read_PrivateKey(fstr, NULL, NULL,
@@ -624,7 +512,7 @@ main(
/*
* Generate a X509v3 certificate.
*/
- while (scheme == NULL && rval == 0 && !iffsw) {
+ while (scheme == NULL && rval == 0 && !HAVE_OPT(ID_KEY)) {
sprintf(filename, "ntpkey_cert_%s", hostname);
if ((fstr = fopen(filename, "r")) != NULL) {
cert = PEM_read_X509(fstr, NULL, NULL, NULL);
@@ -647,7 +535,7 @@ main(
}
scheme = "RSA-MD5";
}
- if (pkey != NULL && rval == 0 && !iffsw) {
+ if (pkey != NULL && rval == 0 && !HAVE_OPT(ID_KEY)) {
ectx = EVP_get_digestbyname(scheme);
if (ectx == NULL) {
fprintf(stderr,
@@ -663,13 +551,17 @@ main(
* Write the IFF client parameters and keys as a DSA private key
* encoded in PEM. Note the private key is obscured.
*/
- if (pkey_iff != NULL && rval == 0 && iffsw) {
+ if (pkey_iff != NULL && rval == 0 && HAVE_OPT(ID_KEY)) {
DSA *dsa;
char *sptr;
+ char *tld;
sptr = strrchr(filename, '.');
+ tld = malloc(strlen(sptr)); /* we have an extra byte ... */
+ strcpy(tld, 1+sptr); /* ... see? */
sprintf(filename, "ntpkey_IFFkey_%s.%s", trustname,
- ++sptr);
+ tld);
+ free(tld);
fprintf(stderr, "Writing new IFF key %s\n", filename);
fprintf(stdout, "# %s\n# %s", filename, ctime(&epoch));
dsa = pkey_iff->pkey.dsa;
@@ -746,11 +638,11 @@ gen_md5(
fprintf(stderr, "Generating MD5 keys...\n");
str = fheader("MD5key", hostname);
- srandom(epoch);
+ ntp_srandom(epoch);
for (i = 1; i <= MD5KEYS; i++) {
for (j = 0; j < 16; j++) {
while (1) {
- temp = random() & 0xff;
+ temp = ntp_random() & 0xff;
if (temp == '#')
continue;
if (temp > 0x20 && temp < 0x7f)
@@ -1742,8 +1634,8 @@ x509 (
ASN1_INTEGER_set(serial, epoch + JAN_1970);
X509_set_serialNumber(cert, serial);
ASN1_INTEGER_free(serial);
- X509_gmtime_adj(X509_get_notBefore(cert), 0L);
- X509_gmtime_adj(X509_get_notAfter(cert), YEAR);
+ X509_time_adj(X509_get_notBefore(cert), 0L, &epoch);
+ X509_time_adj(X509_get_notAfter(cert), YEAR, &epoch);
subj = X509_get_subject_name(cert);
X509_NAME_add_entry_by_txt(subj, "commonName", MBSTRING_ASC,
(unsigned char *) hostname, strlen(hostname), -1, 0);
diff --git a/contrib/ntp/util/ntptime.c b/contrib/ntp/util/ntptime.c
index 51111be..8f9d0c33 100644
--- a/contrib/ntp/util/ntptime.c
+++ b/contrib/ntp/util/ntptime.c
@@ -401,8 +401,8 @@ sprintb(
else
(void)sprintf(buf, "0x%x", v);
cp = buf + strlen(buf);
- bits++;
if (bits) {
+ bits++;
*cp++ = ' ';
*cp++ = '(';
while ((i = *bits++) != 0) {
@@ -433,7 +433,7 @@ timex_state(
{
static char buf[32];
- if (s >= 0 && s <= sizeof(timex_states) / sizeof(timex_states[0]))
+ if (s >= 0 && s < sizeof(timex_states) / sizeof(timex_states[0]))
return (timex_states[s]);
sprintf(buf, "TIME-#%d", s);
return (buf);
diff --git a/contrib/ntp/util/tg.c b/contrib/ntp/util/tg.c
new file mode 100644
index 0000000..aa3950d
--- /dev/null
+++ b/contrib/ntp/util/tg.c
@@ -0,0 +1,652 @@
+/*
+ * tg.c generate WWV or IRIG signals for test
+ */
+/*
+ * This program can generate audio signals that simulate the WWV/H
+ * broadcast timecode. Alternatively, it can generate the IRIG-B
+ * timecode commonly used to synchronize laboratory equipment. It is
+ * intended to test the WWV/H driver (refclock_wwv.c) and the IRIG
+ * driver (refclock_irig.c) in the NTP driver collection.
+ *
+ * Besides testing the drivers themselves, this program can be used to
+ * synchronize remote machines over audio transmission lines or program
+ * feeds. The program reads the time on the local machine and sets the
+ * initial epoch of the signal generator within one millisecond.
+ * Alernatively, the initial epoch can be set to an arbitrary time. This
+ * is useful when searching for bugs and testing for correct response to
+ * a leap second in UTC. Note however, the ultimate accuracy is limited
+ * by the intrinsic frequency error of the codec sample clock, which can
+ # reach well over 100 PPM.
+ *
+ * The default is to route generated signals to the line output
+ * jack; the s option on the command line routes these signals to the
+ * internal speaker as well. The v option controls the speaker volume
+ * over the range 0-255. The signal generator by default uses WWV
+ * format; the h option switches to WWVH format and the i option
+ * switches to IRIG-B format.
+ *
+ * Once started the program runs continuously. The default initial epoch
+ * for the signal generator is read from the computer system clock when
+ * the program starts. The y option specifies an alternate epoch using a
+ * string yydddhhmmss, where yy is the year of century, ddd the day of
+ * year, hh the hour of day and mm the minute of hour. For instance,
+ * 1946Z on 1 January 2006 is 060011946. The l option lights the leap
+ * warning bit in the WWV/H timecode, so is handy to check for correct
+ * behavior at the next leap second epoch. The remaining options are
+ * specified below under the Parse Options heading. Most of these are
+ * for testing.
+ *
+ * During operation the program displays the WWV/H timecode (9 digits)
+ * or IRIG timecode (20 digits) as each new string is constructed. The
+ * display is followed by the BCD binary bits as transmitted. Note that
+ * the transmissionorder is low-order first as the frame is processed
+ * left to right. For WWV/H The leap warning L preceeds the first bit.
+ * For IRIG the on-time marker M preceeds the first (units) bit, so its
+ * code is delayed one bit and the next digit (tens) needs only three
+ * bits.
+ *
+ * The program has been tested with the Sun Blade 1500 running Solaris
+ * 10, but not yet with other machines. It uses no special features and
+ * should be readily portable to other hardware and operating systems.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <sys/audio.h>
+#include <math.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+
+#define SECOND 8000 /* one second of 125-us samples */
+#define BUFLNG 400 /* buffer size */
+#define DEVICE "/dev/audio" /* default audio device */
+#define WWV 0 /* WWV encoder */
+#define IRIG 1 /* IRIG-B encoder */
+#define OFF 0 /* zero amplitude */
+#define LOW 1 /* low amplitude */
+#define HIGH 2 /* high amplitude */
+#define DATA0 200 /* WWV/H 0 pulse */
+#define DATA1 500 /* WWV/H 1 pulse */
+#define PI 800 /* WWV/H PI pulse */
+#define M2 2 /* IRIG 0 pulse */
+#define M5 5 /* IRIG 1 pulse */
+#define M8 8 /* IRIG PI pulse */
+
+/*
+ * Companded sine table amplitude 3000 units
+ */
+int c3000[] = {1, 48, 63, 70, 78, 82, 85, 89, 92, 94, /* 0-9 */
+ 96, 98, 99, 100, 101, 101, 102, 103, 103, 103, /* 10-19 */
+ 103, 103, 103, 103, 102, 101, 101, 100, 99, 98, /* 20-29 */
+ 96, 94, 92, 89, 85, 82, 78, 70, 63, 48, /* 30-39 */
+ 129, 176, 191, 198, 206, 210, 213, 217, 220, 222, /* 40-49 */
+ 224, 226, 227, 228, 229, 229, 230, 231, 231, 231, /* 50-59 */
+ 231, 231, 231, 231, 230, 229, 229, 228, 227, 226, /* 60-69 */
+ 224, 222, 220, 217, 213, 210, 206, 198, 191, 176}; /* 70-79 */
+/*
+ * Companded sine table amplitude 6000 units
+ */
+int c6000[] = {1, 63, 78, 86, 93, 98, 101, 104, 107, 110, /* 0-9 */
+ 112, 113, 115, 116, 117, 117, 118, 118, 119, 119, /* 10-19 */
+ 119, 119, 119, 118, 118, 117, 117, 116, 115, 113, /* 20-29 */
+ 112, 110, 107, 104, 101, 98, 93, 86, 78, 63, /* 30-39 */
+ 129, 191, 206, 214, 221, 226, 229, 232, 235, 238, /* 40-49 */
+ 240, 241, 243, 244, 245, 245, 246, 246, 247, 247, /* 50-59 */
+ 247, 247, 247, 246, 246, 245, 245, 244, 243, 241, /* 60-69 */
+ 240, 238, 235, 232, 229, 226, 221, 214, 206, 191}; /* 70-79 */
+
+/*
+ * Decoder operations at the end of each second are driven by a state
+ * machine. The transition matrix consists of a dispatch table indexed
+ * by second number. Each entry in the table contains a case switch
+ * number and argument.
+ */
+struct progx {
+ int sw; /* case switch number */
+ int arg; /* argument */
+};
+
+/*
+ * Case switch numbers
+ */
+#define DATA 0 /* send data (0, 1, PI) */
+#define COEF 1 /* send BCD bit */
+#define DEC 2 /* decrement to next digit */
+#define MIN 3 /* minute pulse */
+#define LEAP 4 /* leap warning */
+#define DUT1 5 /* DUT1 bits */
+#define DST1 6 /* DST1 bit */
+#define DST2 7 /* DST2 bit */
+
+/*
+ * WWV/H format (100-Hz, 9 digits, 1 m frame)
+ */
+struct progx progx[] = {
+ {MIN, 800}, /* 0 minute sync pulse */
+ {DATA, DATA0}, /* 1 */
+ {DST2, 0}, /* 2 DST2 */
+ {LEAP, 0}, /* 3 leap warning */
+ {COEF, 1}, /* 4 1 year units */
+ {COEF, 2}, /* 5 2 */
+ {COEF, 4}, /* 6 4 */
+ {COEF, 8}, /* 7 8 */
+ {DEC, DATA0}, /* 8 */
+ {DATA, PI}, /* 9 p1 */
+ {COEF, 1}, /* 10 1 minute units */
+ {COEF, 2}, /* 11 2 */
+ {COEF, 4}, /* 12 4 */
+ {COEF, 8}, /* 13 8 */
+ {DEC, DATA0}, /* 14 */
+ {COEF, 1}, /* 15 10 minute tens */
+ {COEF, 2}, /* 16 20 */
+ {COEF, 4}, /* 17 40 */
+ {COEF, 8}, /* 18 80 (not used) */
+ {DEC, PI}, /* 19 p2 */
+ {COEF, 1}, /* 20 1 hour units */
+ {COEF, 2}, /* 21 2 */
+ {COEF, 4}, /* 22 4 */
+ {COEF, 8}, /* 23 8 */
+ {DEC, DATA0}, /* 24 */
+ {COEF, 1}, /* 25 10 hour tens */
+ {COEF, 2}, /* 26 20 */
+ {COEF, 4}, /* 27 40 (not used) */
+ {COEF, 8}, /* 28 80 (not used) */
+ {DEC, PI}, /* 29 p3 */
+ {COEF, 1}, /* 30 1 day units */
+ {COEF, 2}, /* 31 2 */
+ {COEF, 4}, /* 32 4 */
+ {COEF, 8}, /* 33 8 */
+ {DEC, DATA0}, /* 34 not used */
+ {COEF, 1}, /* 35 10 day tens */
+ {COEF, 2}, /* 36 20 */
+ {COEF, 4}, /* 37 40 */
+ {COEF, 8}, /* 38 80 */
+ {DEC, PI}, /* 39 p4 */
+ {COEF, 1}, /* 40 100 day hundreds */
+ {COEF, 2}, /* 41 200 */
+ {COEF, 4}, /* 42 400 (not used) */
+ {COEF, 8}, /* 43 800 (not used) */
+ {DEC, DATA0}, /* 44 */
+ {DATA, DATA0}, /* 45 */
+ {DATA, DATA0}, /* 46 */
+ {DATA, DATA0}, /* 47 */
+ {DATA, DATA0}, /* 48 */
+ {DATA, PI}, /* 49 p5 */
+ {DUT1, 8}, /* 50 DUT1 sign */
+ {COEF, 1}, /* 51 10 year tens */
+ {COEF, 2}, /* 52 20 */
+ {COEF, 4}, /* 53 40 */
+ {COEF, 8}, /* 54 80 */
+ {DST1, 0}, /* 55 DST1 */
+ {DUT1, 1}, /* 56 0.1 DUT1 fraction */
+ {DUT1, 2}, /* 57 0.2 */
+ {DUT1, 4}, /* 58 0.4 */
+ {DATA, PI}, /* 59 p6 */
+ {DATA, DATA0}, /* 60 leap */
+};
+
+/*
+ * IRIG format except first frame (1000 Hz, 20 digits, 1 s frame)
+ */
+struct progx progy[] = {
+ {COEF, 1}, /* 0 1 units */
+ {COEF, 2}, /* 1 2 */
+ {COEF, 4}, /* 2 4 */
+ {COEF, 8}, /* 3 8 */
+ {DEC, M2}, /* 4 im */
+ {COEF, 1}, /* 5 10 tens */
+ {COEF, 2}, /* 6 20 */
+ {COEF, 4}, /* 7 40 */
+ {COEF, 8}, /* 8 80 */
+ {DEC, M8}, /* 9 pi */
+};
+
+/*
+ * IRIG format first frame (1000 Hz, 20 digits, 1 s frame)
+ */
+struct progx progz[] = {
+ {MIN, M8}, /* 0 pi (second) */
+ {COEF, 1}, /* 1 1 units */
+ {COEF, 2}, /* 2 2 */
+ {COEF, 4}, /* 3 4 */
+ {COEF, 8}, /* 4 8 */
+ {DEC, M2}, /* 5 im */
+ {COEF, 1}, /* 6 10 tens */
+ {COEF, 2}, /* 7 20 */
+ {COEF, 4}, /* 8 40 */
+ {DEC, M8}, /* 9 pi */
+};
+
+/*
+ * Forward declarations
+ */
+void sec(int); /* send second */
+void digit(int); /* encode digit */
+void peep(int, int, int); /* send cycles */
+void delay(int); /* delay samples */
+
+/*
+ * Global variables
+ */
+char buffer[BUFLNG]; /* output buffer */
+int bufcnt = 0; /* buffer counter */
+int second = 0; /* seconds counter */
+int fd; /* audio codec file descriptor */
+int tone = 1000; /* WWV sync frequency */
+int level = AUDIO_MAX_GAIN / 8; /* output level */
+int port = AUDIO_LINE_OUT; /* output port */
+int encode = WWV; /* encoder select */
+int leap = 0; /* leap indicator */
+int dst = 0; /* winter/summer time */
+int dut1 = 0; /* DUT1 correction (sign, magnitude) */
+int utc = 0; /* option epoch */
+
+/*
+ * Main program
+ */
+int
+main(
+ int argc, /* command line options */
+ char **argv /* poiniter to list of tokens */
+ )
+{
+ struct timeval tv; /* system clock at startup */
+ audio_info_t info; /* Sun audio structure */
+ struct tm *tm = NULL; /* structure returned by gmtime */
+ char device[50]; /* audio device */
+ char code[100]; /* timecode */
+ int rval, temp, arg, sw, ptr;
+ int minute, hour, day, year;
+ int i;
+
+ /*
+ * Parse options
+ */
+ strcpy(device, DEVICE);
+ year = 0;
+ while ((temp = getopt(argc, argv, "a:dhilsu:v:y:")) != -1) {
+ switch (temp) {
+
+ case 'a': /* specify audio device (/dev/audio) */
+ strcpy(device, optarg);
+ break;
+
+ case 'd': /* set DST for summer (WWV/H only) */
+ dst++;
+ break;
+
+ case 'h': /* select WWVH sync frequency */
+ tone = 1200;
+ break;
+
+ case 'i': /* select irig format */
+ encode = IRIG;
+ break;
+
+ case 'l': /* set leap warning bit (WWV/H only) */
+ leap++;
+ break;
+
+ case 's': /* enable speaker */
+ port |= AUDIO_SPEAKER;
+ break;
+
+ case 'u': /* set DUT1 offset (-7 to +7) */
+ sscanf(optarg, "%d", &dut1);
+ if (dut1 < 0)
+ dut1 = abs(dut1);
+ else
+ dut1 |= 0x8;
+ break;
+
+ case 'v': /* set output level (0-255) */
+ sscanf(optarg, "%d", &level);
+ break;
+
+ case 'y': /* set initial date and time */
+ sscanf(optarg, "%2d%3d%2d%2d", &year, &day,
+ &hour, &minute);
+ utc++;
+ break;
+
+ defult:
+ printf("invalid option %c\n", temp);
+ break;
+ }
+ }
+
+ /*
+ * Open audio device and set options
+ */
+ fd = open("/dev/audio", O_WRONLY);
+ if (fd <= 0) {
+ printf("audio open %s\n", strerror(errno));
+ exit(1);
+ }
+ rval = ioctl(fd, AUDIO_GETINFO, &info);
+ if (rval < 0) {
+ printf("audio control %s\n", strerror(errno));
+ exit(0);
+ }
+ info.play.port = port;
+ info.play.gain = level;
+ info.play.sample_rate = SECOND;
+ info.play.channels = 1;
+ info.play.precision = 8;
+ info.play.encoding = AUDIO_ENCODING_ULAW;
+ printf("port %d gain %d rate %d chan %d prec %d encode %d\n",
+ info.play.port, info.play.gain, info.play.sample_rate,
+ info.play.channels, info.play.precision,
+ info.play.encoding);
+ ioctl(fd, AUDIO_SETINFO, &info);
+
+ /*
+ * Unless specified otherwise, read the system clock and
+ * initialize the time.
+ */
+ if (!utc) {
+ gettimeofday(&tv, NULL);
+ tm = gmtime(&tv.tv_sec);
+ minute = tm->tm_min;
+ hour = tm->tm_hour;
+ day = tm->tm_yday + 1;
+ year = tm->tm_year % 100;
+ second = tm->tm_sec;
+
+ /*
+ * Delay the first second so the generator is accurately
+ * aligned with the system clock within one sample (125
+ * microseconds ).
+ */
+ delay(SECOND - tv.tv_usec * 8 / 1000);
+ }
+ memset(code, 0, sizeof(code));
+ switch (encode) {
+
+ /*
+ * For WWV/H and default time, carefully set the signal
+ * generator seconds number to agree with the current time.
+ */
+ case WWV:
+ printf("year %d day %d time %02d:%02d:%02d tone %d\n",
+ year, day, hour, minute, second, tone);
+ sprintf(code, "%01d%03d%02d%02d%01d", year / 10, day,
+ hour, minute, year % 10);
+ printf("%s\n", code);
+ ptr = 8;
+ for (i = 0; i <= second; i++) {
+ if (progx[i].sw == DEC)
+ ptr--;
+ }
+ break;
+
+ /*
+ * For IRIG the signal generator runs every second, so requires
+ * no additional alignment.
+ */
+ case IRIG:
+ printf("sbs %x year %d day %d time %02d:%02d:%02d\n",
+ 0, year, day, hour, minute, second);
+ break;
+ }
+
+ /*
+ * Run the signal generator to generate new timecode strings
+ * once per minute for WWV/H and once per second for IRIG.
+ */
+ while(1) {
+
+ /*
+ * Crank the state machine to propagate carries to the
+ * year of century. Note that we delayed up to one
+ * second for alignment after reading the time, so this
+ * is the next second.
+ */
+ second = (second + 1) % 60;
+ if (second == 0) {
+ minute++;
+ if (minute >= 60) {
+ minute = 0;
+ hour++;
+ }
+ if (hour >= 24) {
+ hour = 0;
+ day++;
+ }
+
+ /*
+ * At year rollover check for leap second.
+ */
+ if (day >= (year & 0x3 ? 366 : 367)) {
+ if (leap) {
+ sec(DATA0);
+ printf("\nleap!");
+ leap = 0;
+ }
+ day = 1;
+ year++;
+ }
+ if (encode == WWV) {
+ sprintf(code, "%01d%03d%02d%02d%01d",
+ year / 10, day, hour, minute, year %
+ 10);
+ printf("\n%s\n", code);
+ ptr = 8;
+ }
+ }
+ if (encode == IRIG) {
+ sprintf(code, "%04x%04d%06d%02d%02d%02d", 0,
+ year, day, hour, minute, second);
+ printf("%s\n", code);
+ ptr = 19;
+ }
+
+ /*
+ * Generate data for the second
+ */
+ switch(encode) {
+
+ /*
+ * The IRIG second consists of 20 BCD digits of width-
+ * modulateod pulses at 2, 5 and 8 ms and modulated 50
+ * percent on the 1000-Hz carrier.
+ */
+ case IRIG:
+ for (i = 0; i < 100; i++) {
+ if (i < 10) {
+ sw = progz[i].sw;
+ arg = progz[i].arg;
+ } else {
+ sw = progy[i % 10].sw;
+ arg = progy[i % 10].arg;
+ }
+ switch(sw) {
+
+ case COEF: /* send BCD bit */
+ if (code[ptr] & arg) {
+ peep(M5, 1000, HIGH);
+ peep(M5, 1000, LOW);
+ printf("1");
+ } else {
+ peep(M2, 1000, HIGH);
+ peep(M8, 1000, LOW);
+ printf("0");
+ }
+ break;
+
+ case DEC: /* send IM/PI bit */
+ ptr--;
+ printf(" ");
+ peep(arg, 1000, HIGH);
+ peep(10 - arg, 1000, LOW);
+ break;
+
+ case MIN: /* send data bit */
+ peep(arg, 1000, HIGH);
+ peep(10 - arg, 1000, LOW);
+ printf("M ");
+ break;
+ }
+ if (ptr < 0)
+ break;
+ }
+ printf("\n");
+ break;
+
+ /*
+ * The WWV/H second consists of 9 BCD digits of width-
+ * modulateod pulses 200, 500 and 800 ms at 100-Hz.
+ */
+ case WWV:
+ sw = progx[second].sw;
+ arg = progx[second].arg;
+ switch(sw) {
+
+ case DATA: /* send data bit */
+ sec(arg);
+ break;
+
+ case COEF: /* send BCD bit */
+ if (code[ptr] & arg) {
+ sec(DATA1);
+ printf("1");
+ } else {
+ sec(DATA0);
+ printf("0");
+ }
+ break;
+
+ case LEAP: /* send leap bit */
+ if (leap) {
+ sec(DATA1);
+ printf("L ");
+ } else {
+ sec(DATA0);
+ printf(" ");
+ }
+ break;
+
+ case DEC: /* send data bit */
+ ptr--;
+ sec(arg);
+ printf(" ");
+ break;
+
+ case MIN: /* send minute sync */
+ peep(arg, tone, HIGH);
+ peep(1000 - arg, tone, OFF);
+ break;
+
+ case DUT1: /* send DUT1 bits */
+ if (dut1 & arg)
+ sec(DATA1);
+ else
+ sec(DATA0);
+ break;
+
+ case DST1: /* send DST1 bit */
+ ptr--;
+ if (dst)
+ sec(DATA1);
+ else
+ sec(DATA0);
+ printf(" ");
+ break;
+
+ case DST2: /* send DST2 bit */
+ if (dst)
+ sec(DATA1);
+ else
+ sec(DATA0);
+ break;
+ }
+ }
+ }
+}
+
+
+/*
+ * Generate WWV/H 0 or 1 data pulse.
+ */
+void sec(
+ int code /* DATA0, DATA1, PI */
+ )
+{
+ /*
+ * The WWV data pulse begins with 5 ms of 1000 Hz follwed by a
+ * guard time of 25 ms. The data pulse is 170, 570 or 770 ms at
+ * 100 Hz corresponding to 0, 1 or position indicator (PI),
+ * respectively. Note the 100-Hz data pulses are transmitted 6
+ * dB below the 1000-Hz sync pulses. Originally the data pulses
+ * were transmited 10 dB below the sync pulses, but the station
+ * engineers increased that to 6 dB because the Heath GC-1000
+ * WWV/H radio clock worked much better.
+ */
+ peep(5, tone, HIGH); /* send seconds tick */
+ peep(25, tone, OFF);
+ peep(code - 30, 100, LOW); /* send data */
+ peep(1000 - code, 100, OFF);
+}
+
+
+/*
+ * Generate cycles of 100 Hz or any multiple of 100 Hz.
+ */
+void peep(
+ int pulse, /* pulse length (ms) */
+ int freq, /* frequency (Hz) */
+ int amp /* amplitude */
+ )
+{
+ int increm; /* phase increment */
+ int i, j;
+
+ if (amp == OFF || freq == 0)
+ increm = 10;
+ else
+ increm = freq / 100;
+ j = 0;
+ for (i = 0 ; i < pulse * 8; i++) {
+ switch (amp) {
+
+ case HIGH:
+ buffer[bufcnt++] = ~c6000[j];
+ break;
+
+ case LOW:
+ buffer[bufcnt++] = ~c3000[j];
+ break;
+
+ default:
+ buffer[bufcnt++] = ~0;
+ }
+ if (bufcnt >= BUFLNG) {
+ write(fd, buffer, BUFLNG);
+ bufcnt = 0;
+ }
+ j = (j + increm) % 80;
+ }
+}
+
+
+/*
+ * Delay for initial phasing
+ */
+void delay (
+ int delay /* delay in samples */
+ )
+{
+ int samples; /* samples remaining */
+
+ samples = delay;
+ memset(buffer, 0, BUFLNG);
+ while (samples >= BUFLNG) {
+ write(fd, buffer, BUFLNG);
+ samples -= BUFLNG;
+ }
+ write(fd, buffer, samples);
+}
diff --git a/contrib/ntp/version b/contrib/ntp/version
index a4b697f..188972a 100644
--- a/contrib/ntp/version
+++ b/contrib/ntp/version
@@ -1 +1 @@
-1.1161
+1.1541
diff --git a/contrib/ntp/version.m4 b/contrib/ntp/version.m4
new file mode 100644
index 0000000..124fa7f
--- /dev/null
+++ b/contrib/ntp/version.m4
@@ -0,0 +1 @@
+m4_define([VERSION_NUMBER],[4.2.4p5])
OpenPOWER on IntegriCloud